-
-
Erfahrener Benutzer
Roboter Genie
Für das LCD brauchst du keinen Timer.
Die Servos gehen über Timer0 oder Timer1.
Für PWM brauchst du auch einen Timer. Da kommt es auf die Auflösung an. Timer1 ist 16bit, du kannst also 65536 verschiedene Ein/Aus Verhältnisse einstellen. Beim Timer2 (8bit) sind es nur 256, was aber in der Regel auch reicht. Dies kann vollkommen in Hardware laufen, also ohne ISR. Dann kannst du den Timer allerdings nicht mehr für etwas anderes benutzen.
Ansonsten kannst du in der ISR des Timers Variablen hochzählen, Flags setzen oder Ausgänge schalten. Da könntest du dann auch das Tachosignal einlesen, wenn die Abtastrate mit der Frequenz des Signals passt. Minimum wäre 3 mal schneller abtasten als das schnellste Signal, damit du sicher jede Pegeländerung mitbekommst. Also bei 3000 U/min (50U/sec) abtasten mit min. 150Hz.
Möglichst wenige Befehle in der ISR ist übrigens die Grundregel.
Das Aufrufen einer ISR ist allerdings eine zeitaufwändige Sache. Daher ist es meist nicht so gut, eine ISR sehr schnell aufzurufen. Als absolutes Maximum würde ich etwa $crystal/100 sehen.
Timer0: Servos
Timer2: PWM
Timer1: Alles andere
Gruß
Rolf
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen