timer und servo wollen nicht...

Gast #368023
Lesenswert?

hi,
ich schaffs einfach nicht mit meinem atmega8 ein pwm signal zu
erzeugen. mein quarz hat 3686400 H.
ich wollte das so machen:
timer1 loest alle 20ms einen interrupt aus und setzt pin0 von PORTB
auf
high, stellt timer2 und der sollte nach 1.5ms pin0 wieder auf low
setzen.

meine rechnung:
(3686400 * 0.02) / 8 = 9216       fuer timer1
(3686400 * 0.0015) / 64 = 84      fuer timer2

waere echt dankbar fuer jede hilfe. ich probier jetz schon ziemlich
lange daran herum und weis einfach nicht warum das nicht will...
Angehängte Dateien:
#368028
Lesenswert?

Erzähl mal.
Woran scheitert es denn? 'Es funktioniert nicht' ist ja wohl
eine etwas dürftige Fehlerbeschreibung.

Kriegst du am Ausgang Pulse? (Halte mal eine LED mit Vorwiderstand
dran: sollte leuchten bzw. glimmen).

Ich hab jetzt die Timer-Zahlen nicht nachgerechnet, aber wenn
die stimmen: Bist du sicher, dass der Quarz auch aktiv ist?
Gast #368029
Lesenswert?

hi,

hab den fehler jetz gefunden.
das problem war, dass auch wenn ich den interrupt von timer2
ausschalte timer2 natürlich weiterläuft und auch in den 20ms
überläuft. weil der interrupt aus ist wird auch das überlaufflag
nicht wieder entfernd. also wird der interrupt sofort ausgelöst,
wenn ich in der ISR von timer1 den interrupt von timer2 wieder
aktiviere.
musste also noch TIFR &= 0xc0 einfuegen und jetz gehts.

trotzdem danke, dass ihr so schnell geschrieben habt!!!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren