Arduino Pro Micro (ATmega32U4) - freier Timer für 2x PWM?

Gast #6325521
Ich suche Informationen zu freien Timern mit zwei PWM-Ausgängen am Pro 
Micro (Klon).
analogWrite() macht nicht mal 1 kHz und ich brauche Ultraschall (nicht 
hörbar) für eine Motorsteuerung.

analogWrite() in wiring_analog.c
init() in wiring.c

Irgendwie widersprüchlich:

OC4A an PC7 -> "D13" not used
OC4B an PB6 -> "D10" (PWM mode nicht initialisiert)
OC4D an PD7 -> "D6"

Kennt sich hier jemand damit besser aus?
Gast #6325575
Peter D. schrieb:
> Lt. Datenblatt hat der ATmega32U4 14 PWM-Ausgänge.
> Welche davon heraus geführt sind, sollte aus dem Schaltplan hervorgehen.

Ja, das ist schon klar, allerdings nutzt das "Arduino" framework selbst 
Timer und konfiguriert sie teilweise für PWM. Das ist nicht besonders 
gut dokumentiert; es bleibt nur das Durchsuchen der Quelltexte.
Gast #6325589
Karius schrieb:
> Ja, das ist schon klar, allerdings nutzt das "Arduino" framework selbst
> Timer und konfiguriert sie teilweise für PWM. Das ist nicht besonders
> gut dokumentiert; es bleibt nur das Durchsuchen der Quelltexte.

Ohne zu wissen, welche timerbasierenden Teile des Arduino Frameworks du 
nutzt, ist es schwierig, dir zielgerichtet zu helfen. Den Timer hinter 
millis() sollte man meist in Ruhe lassen.
Gast #6325839
Karius schrieb:

> Ja, das ist schon klar, allerdings nutzt das "Arduino" framework selbst
> Timer und konfiguriert sie teilweise für PWM. Das ist nicht besonders
> gut dokumentiert; es bleibt nur das Durchsuchen der Quelltexte.

Nö. Man kann auch ganz einfach komplett auf das ganze Arduino-Gedöhns 
verzichten...
Beitrag #6325906 wurde von einem Moderator gelöscht.
#6325960
c-hater schrieb:
> Karius schrieb:
>
>> Ja, das ist schon klar, allerdings nutzt das "Arduino" framework selbst
>> Timer und konfiguriert sie teilweise für PWM. Das ist nicht besonders
>> gut dokumentiert; es bleibt nur das Durchsuchen der Quelltexte.
>
> Nö. Man kann auch ganz einfach komplett auf das ganze Arduino-Gedöhns
> verzichten...

Kann man, muss man aber nicht! Ich nutze Gedöns freiwillig
Gast #6326631
Wolfgang schrieb:
> Ohne zu wissen, welche timerbasierenden Teile des Arduino Frameworks du
> nutzt, ist es schwierig, dir zielgerichtet zu helfen. Den Timer hinter
> millis() sollte man meist in Ruhe lassen.

Ich formuliere mal um: "Ich kann dir nicht helfen, einen Timer kannst du 
nicht benutzen."
Das hilft tatsächlich nicht weiter.
Hilfreich wäre gewesen: "Timer X,Y,Z" sind nicht frei, aber du kannst U, 
V, W benutzen, guck mal in Zeile i von source.c. Taktfrequenz musst du 
noch einstellen, z.B. sososososo."

c-hater schrieb:
> Nö.

Ach so. Doch!?

Veit D. schrieb:
> Ansonsten  kannst du
> erstmal jeden Timer außer T0 (delay, millis) frei verwenden. Musst ihn
> nur komplett selbst initialisieren und nicht nur halb.

Danke!
Man muss sich durch wiring_analog.c und wiring.c durcharbeiten und die 
halbe Initialisierung ggf. ergänzen.
Für Timer 1 reicht eine Änderung des Prescalers, der standardmäßig auf 
64 gesetzt wird. Die Timer werden unterschiedlich initialisiert, teils 
mit phase-correct PWM, teils ohne.
Schade, dass das offenbar nicht übersichtlich dokumentiert ist.

Viel wichtiger als diese bescheuerten Rangeleien im Forum: immer schön 
Zähne putzen.
Gast #6326684
Karius schrieb:
> Hilfreich wäre gewesen: "Timer X,Y,Z" sind nicht frei, aber du kannst U,
> V, W benutzen, guck mal in Zeile i von source.c. Taktfrequenz musst du
> noch einstellen, z.B. sososososo."

Welche Timer frei sind, hängt von den benutzten Arduino Funktionen ab.
Timer0 wird für den 1ms-Takt verwendet, Timer1 z.B. für Servo-Steuerung.

Hier ein paar Dinge zu Timern mit und auf Arduino mit ATmega168/328, die 
sinngemäß auch für den ATmega32U4 gelten.
https://www.arduino.cc/en/Tutorial/SecretsOfArduinoPWM

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.