RTV forum PL | NewsGroups PL

BLUEPILL: Problem z PWM na PA7 i PA8 przy użyciu analogWrite() w Arduino

BluePill ciekawostka

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - BLUEPILL: Problem z PWM na PA7 i PA8 przy użyciu analogWrite() w Arduino

JS
Guest

Sat Jan 06, 2024 6:38 pm   



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

heby
Guest

Sat Jan 06, 2024 7:28 pm   



On 06/01/2024 17:38, JS wrote:
Quote:
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.

Grzegorz Niemirowski
Guest

Sun Jan 07, 2024 12:29 am   



JS <bsj@poczta.onet.pl> napisał(a):
Quote:
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/

elektroda NewsGroups Forum Index - Elektronika Polska - BLUEPILL: Problem z PWM na PA7 i PA8 przy użyciu analogWrite() w Arduino

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map