Forum: Mikrocontroller und Digitale Elektronik Zwei verschiedene Timeouts


von Fritz (Gast)


Lesenswert?

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

von Fritz (Gast)


Lesenswert?

Vergessen

uc soll ein at90s2313 oder atiny2313 sein
Wenn es mit anderen ucs möglich ist bitte namen nennen ;)

von Hannes L. (hannes)


Lesenswert?

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.

...

von Fritz (Gast)


Lesenswert?

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

von Hannes L. (hannes)


Lesenswert?

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
Noch kein Account? Hier anmelden.