Versuche gerade zwei verschiedene Timeouts in ein uc zu bekommen. Die Frage: Ist das möglich ? Der eine soll konstant sein ( Wiederhohlungsrate Display ) Der andere dynamisch ( Zündung abhängig von der Drehzahl ) mfg Fritz
Vergessen uc soll ein at90s2313 oder atiny2313 sein Wenn es mit anderen ucs möglich ist bitte namen nennen ;)
Der 16-Bit-Timer1 der meisten AVRs kann üblicherweise zwei unabhängige OCR-Interrupts generieren. Habe ich kürzlich erst erklärt, finde es aber aufgrund deaktivierter Suchfunktion nicht wieder. ...
Wie sähe das denn in einem Codebeispiel aus ?? Portd.Zaehler = 1 Waitms 5 (statischer Timeout ) Portd.Zaehler = 0 Waitms x ( dynamischer Timeout ) Würde ja nacheinander ausgeführt werden
Waitms nimmt man nicht, das ist Unfug. In Int-Vektorliste Sprünge zu den ISRs eintragen. In Reset-Routine - Timer starten (Vorteilerwert in tccr1b schreiben) - in timsk die gewünschten Interrupts freischalten - Interrupts global freischalten (SEI) In ISR für Output-Compare1 - SREG sichern - OCR1H:OCR1L auslesen - gewünschte Verzögerung zu OCR1H:OCR1L addieren - Ergebnis nach OCR1H:OCR1L zurückschteiben - die Arbeit erledigen, die dieser Interrupt tun soll... - SREG wiederherstellen In ISR für Output-Compare2 - SREG sichern - OCR2H:OCR2L auslesen - gewünschte Verzögerung zu OCR2H:OCR2L addieren - Ergebnis nach OCR2H:OCR2L zurückschteiben - die Arbeit erledigen, die dieser Interrupt tun soll... - SREG wiederherstellen Eventuell sind noch Register zu sichern und wiederherzustellen, falls man keine Exklusivregister für ISR reserviert hat. ...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.