-
1. Data: 2024-01-06 17:38:54
Temat: BluePill ciekawostka
Od: JS <b...@p...onet.pl>
Jest sobie GOŁY!! BluePill, podłączone tylko zasilanie i STlink.
Wpisuję do niego:
#include <Arduino.h>
void setup() {
analogWrite(PA11,150);
analogWrite(PA7,50);
analogWrite(PA8,100);
analogWrite(PA6,20);
}
void loop() {
// put your main code here, to run repeatedly:
}
efekt jest taki, że albo na PA7, albo na PA8 nie ma przebiegu, zależnie
od kolejność wywołania analogWrite. Na PA6 i PA11 PWM jest zawsze.
platformio.ini:
[env:bluepill_f103c8]
platform = ststm32
board = bluepill_f103c8
framework = arduino
debug_tool = stlink
upload_protocol = stlink
monitor_speed = 115200
Spotkaliście się z czymś takim?
Pozdrawiam
JS
-
2. Data: 2024-01-06 18:28:35
Temat: Re: BluePill ciekawostka
Od: heby <h...@p...onet.pl>
On 06/01/2024 17:38, JS wrote:
> void setup() {
>
> analogWrite(PA11,150);
> analogWrite(PA7,50);
> analogWrite(PA8,100);
> analogWrite(PA6,20);
>
> }
> void loop() {
> // put your main code here, to run repeatedly:
> }
A jak przeniesiesz kod do loop() to co się stanie?
W arduino mocno mgliste jest kiedy i w jaki sposób wołane jest setup().
Szczególnie interesujące są problemy z kolejnością globalnych
konstruktorów itd. Wątpie, aby to był problem tutaj, ale po prostu
sprawdź, co będzie, jak to wsadzisz w loop.
-
3. Data: 2024-01-06 23:29:12
Temat: Re: BluePill ciekawostka
Od: "Grzegorz Niemirowski" <g...@g...net>
JS <b...@p...onet.pl> napisał(a):
> Jest sobie GOŁY!! BluePill, podłączone tylko zasilanie i STlink.
> Wpisuję do niego:
> #include <Arduino.h>
> void setup() {
> analogWrite(PA11,150);
> analogWrite(PA7,50);
> analogWrite(PA8,100);
> analogWrite(PA6,20);
> }
> void loop() {
> // put your main code here, to run repeatedly:
> }
> efekt jest taki, że albo na PA7, albo na PA8 nie ma przebiegu, zależnie od
> kolejność wywołania analogWrite. Na PA6 i PA11 PWM jest zawsze.
W Arduino zarówno PA7 jak i PA8 mają przypisany 1 kanał z timera 1. Stąd oba
piny konkurują o to samo i jest konflikt. Arduino robi sobie różne rzeczy
pod spodem i potem mamy takie niezrozumiałe, dziwne zachowania. Trzeba się
wgłębiać w źródła stm32duino żeby dojść co jest nie tak. Niby Arduino jest
proste, ale kosztem m.in. takich pułapek.
--
Grzegorz Niemirowski
https://www.grzegorz.net/