atmega32: Timer-Problem

Gast #2355028
Lesenswert?

hallo,

erstmal möchte ich darauf hinweisen, dass ich anfänger bin!
ich habe das problem, dass meine 
timer-overflow-interrupt-service-routine nicht ausgeführt wird.

zusätzl. info:
LED an PORT D5 funktioniert (habe ich mit anderem code getestet)
ATMEGA32 läuft mit quarz auf 16 MHz (habe fuses richtig gesetzt --> auch 
schon getestet)

problem: LED an PORT D5 bleibt komplett dunkel. habe es auch schon mit 
einem anderen vorteiler probiert (1 << CS02) | (1 << CS00)
habe auch schon versucht im isr einfach nur die LED einzuschalten mit 
PORTD = (1 << PD5); funktioniert auch nicht --> wenn ich diesen befehl 
in die while(1) {} - Schleife schreibe, leuchtet die LED.
1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3

4
void init_timer() 
5
{
6
  TCCR0 = (1 << CS01);
7
  TIMSK |= (1 << TOIE0);
8
  
9
  sei();
10
}
11

12
ISR (TIMER0_OVF_vect)
13
{
14
  PORTD ^= (1 << PD5);  
15
}
16

17
int main(void)
18
{
19
  DDRD = 0xff;
20
  init_timer();
21
  
22
  while(1)
23
    {
24
    // do something        
25
    }
26
}

Bitte helft mir --> bin verzweifelt
Gast #2355093
Lesenswert?

>HEX-File in den Debugger des AVR Studio laden und im Einzelschritt
>abarbeiten. Nicht die Geduld verlieren. Irgendwann zeigt der Bug seine
>hässliche Fratze :-)

Da ist kein Bug. Es funktioniert.

Er hat entweder das Programm nicht für einen ATMega32
übersetzt oder das falsche HEX File programmiert.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren