Forum: Mikrocontroller und Digitale Elektronik timer restart


von mufus (Gast)


Lesenswert?

Ich möchte einen Timer programmieren, den ich an bestimmten stellen in 
der main starten kann und falls innerhalb der Zeit (100ms) der Timer 
nicht deaktiviert wurde, soll beim anfang von "int main()" fortgesetzt 
werden. Ist das überhaupt möglich??? Kann mir jemand weiterhelfen.

Das ganze soll zum abbrechen einer while schleife gebraucht werden.

Ich habe schon mir einige gedanken darüber gemacht und hier mal den code 
eingefügt.
1
#include <avr/interrupt.h>
2
3
ISR (TIMER0_OVF_vect)
4
{
5
  //Interrupt Aktion alle 100ms
6
  goto RESTART;
7
}
8
9
int main(void)
10
{
11
  RESTART:;
12
  
13
  ...
14
15
  TCCR0A = (1<<WGM01); // CTC Modus
16
  TCCR0B |= (1<<CS00); // Prescaler 1
17
  OCR0A = 160-1;       // ((16000000/64)/100000) = 160
18
 
19
  // Compare Interrupt erlauben
20
  TIMSK0 |= (1<<OCIE0A);
21
 
22
  // Global Interrupts aktivieren
23
  sei();
24
  
25
  ...

von holger (Gast)


Lesenswert?

>ISR (TIMER0_OVF_vect)
>{
>  //Interrupt Aktion alle 100ms
>  goto RESTART;
>}

Da wird wegen Stacküberlauf sporadisch auch schon
mal so ein Restart fällig;)

von Florian L. (muut) Benutzerseite


Lesenswert?

schau dir mal den watchdog-timer an, ich glaub das suchst du. :-)

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.