Frage zum Interrupt

OP #2713164
Lesenswert?
• ▲
▼
Ich habe schon einmal gelernt, wie man den Interrupt anwendet, habe es 
aber leider aufgrund einer längeren Pause in diesem Thema vergessen. 
Könnte mir bitte jemand einen Beispielcode zum Interrupt geben?
Es wird ein interner Interrupt verwendet, der immer nach einer Sekunde 
eine Variable hochzählen soll. Benötige nur die Schreibform, Funktion 
kenne ich schon. Bitte in C.

Danke im Vorraus.
Gast #2713191
Lesenswert?
• ▲
▼
In Code sieht das recht simpel aus (Bsp. mit Atmega16)
1
  TCCR1B = 0x02;        //Timer System Frequency Prescaler 8
2
  TIMSK |= (1<<TOIE1); //Interrupt alle 100ms (Timer 1)
3
  sei();               // Globale Interrupts erlauben

Das hier kommt ins Main, allerdings vor der while(1) Schleife.
1
 #ifndef TIMER1_OVF_vect  
2
  #endif
3
  ISR (TIMER1_OVF_vect) //Interrupt Routine, wird alle 100ms ausgeführt.
4
  {
5

6
  i++
7

8
  }

Und das hier kommt nach der Main.
Das ganze löst alle 100ms einen Interrupt aus. Als Timer wird der 16-bit 
Timer benutzt (weiss nicht ob der Atmega8 den auch hat), und der Quarz 
ist 4.19304 Mhz

Gruss
Gordon

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.