ATmega32 resetet bei Interrupt

Gast #1932408
Lesenswert?
• ▲
▼
Hallo,

ich verwende den ATmega32 und würde gerne über einen Timer einen 
Interrupt auslösen. Da es dabei Probleme gibt, habe ich das Programm 
zunächst reduziert - die Interrupt-Funktion ist zunächst leer.

Der folgende Code sollte den Timer und den Interrupt entsprechend 
einstellen und anschließend Port B zunächst auf 0x0F und anschließend 
auf 0xF0 stellen und dann verharren. An Port B sind zu Testzwecken LEDs 
angeschlossen.
1
#include "main.h"
2
#include <avr/io.h>
3
#include <avr/interrupt.h>
4

5
int main()
6
{
7
  TCCR0 = (1 << WGM01); //CTC Modus
8
  TCCR0 |= (1 << CS02) | (0 << CS01) | (1 << CS00); //Prescaler
9
  OCR0 = 255; //Output Compare Register 0
10
  TIMSK |= (1 << OCIE0); //Compare Interrupt erlauben
11

12
  DDRB = 0xFF;
13

14
  sei(); // Global Interrupts aktivieren
15
  PORTB = 0x0F;
16
  _delay_ms( 10 );
17
  PORTB = 0xF0;
18

19
  while(1);
20
}
21

22
ISR(TIMER0_COMPA_vect)
23
{
24
}

Starte ich den ATmega32, so flackern die LED 0-3 und 4-7 abwechselnt. 
Daraus schließe ich, dass der Mikrocontroller ständig neugestartet wird, 
ansonsten würde die LEDs nicht flackern, sondern einige leuchten und 
einige aus sein. Kommentiere ich "TIMSK |= (1 << OCIE0);" oder "sei();" 
aus, so funktioniert dies korrekt. Deshalb denke ich, dass der Interrupt 
schuld sein muss. Kann mir jemand sagen, was ich falsch mache? (Im AVR 
Studio Simulator scheint er auch immer wieder zu resetten.)

Gruß
Ben
P.S.: STK 500 + AVRISP mkII (3.6864MHz Quarz)
#1932413
Lesenswert?
• ▲
▼
Du solltest die Warnungen deines Compilers etwas ernster nehmen

../SekTakt.c:22: warning: 'TIMER0_COMPA_vect' appears to be a misspelled 
signal handler


Da der Timer 0 keinen A oder B Kanal hat, ist das A in TIMER0_COMPA_vect 
unlogisch. Der Interrupt heisst folgerichtig TIMER0_COMP_vect

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.