Forum: Mikrocontroller und Digitale Elektronik Arduino Pro Micro (ATmega32U4) - freier Timer für 2x PWM?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Karius (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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?

von Peter D. (peda)


Bewertung
0 lesenswert
nicht lesenswert
Lt. Datenblatt hat der ATmega32U4 14 PWM-Ausgänge.
Welche davon heraus geführt sind, sollte aus dem Schaltplan hervorgehen.

von Karius (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Timer 1 scheint frei zu sein:
OC1A PB5 "D9"
OC1B PB6 "D10"
TCCR1B = (1<<CS10);

von Karius (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Karius (Gast)


Bewertung
0 lesenswert
nicht lesenswert

von Wolfgang (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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.

von c-hater (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
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.
von Marc H. (marchorby)


Bewertung
0 lesenswert
nicht lesenswert
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

von c-hater (Gast)


Bewertung
-2 lesenswert
nicht lesenswert
Marc H. schrieb:

> Kann man, muss man aber nicht! Ich nutze Gedöns freiwillig

Jedem das Seine.

von Veit D. (devil-elec)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich weiß nicht ob sich der Klone "Pro Micro" an das Original "Micro" 
Layout hält, wenn ja hilft das Pinout weiter. Ansonsten  kannst du 
erstmal jeden Timer außer T0 (delay, millis) frei verwenden. Musst ihn 
nur komplett selbst initialisieren und nicht nur halb.

von Karius (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Wolfgang (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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

von Karius (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Danke dir!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.