Gast
#457706
Hallo,
bin am ende meiner Kräfte. :-(
folgender Programmcode will nicht laufen:
#include <avr/io.h>
#include <stdlib.h>
#include <avr/interrupt.h>
#define F_CPU 14745600
unsigned int cnt = 0;
int main (void){
DDRD= 0x78; // LED-Ports PD3-PD6 als Ausgang
PORTD |= 0x78;
TCCR1A=0x00; // Timer 1 auf Normalbetrieb
TCCR1B=5; // Clksoure = Quarz / 1024
TCNT1H=0 ;// Timer auf 0 setzen
TCNT1L=0 ;
TIMSK=(1<<TOIE1); //Timer1 Overflow Interrupt Enable
//TIFR=(1<<TOV1);
sei();
while(1){ // Main Loop
}
return 1;
}
ISR(TIMER1_OVF_vect){ // Zeile 34
cnt++;
if(cnt>10)cnt=0;
if(cnt==5)PORTD &= ~0x08; // setze Pin 4 am PortD
if(cnt==9)PORTD |= 0x08;
}
Der Interrupt wird ausgelöst aber leider ein RESET durchgeführt.
Die Zeit zwischen den Resets stimmt
allerdings.(1024*65536*10)/14745600HZ = ~5sec)
Beim Kompilieren bekomme ich außerdem folgende Warnungen:
mcu.c:34: warning: return type defaults to `int'
mcu.c:34: warning: function declaration isn't a prototype
mcu.c: In function `ISR':
mcu.c:34: warning: type of "TIMER1_OVF_vect" defaults to "int"
mcu.c:39: warning: control reaches end of non-void function
ist das normal? Ich kann leider mit diesen Warnungen (in diesem
Zusammenhang) nichts anfangen.
Muß ich außerhalb des SourceCodes irgendetwas beachten? (FUSE-Bits,
LOCK-Bits oder irgendetwas anderes)
ich habe mich hier im Forum umgesehen und der Sourcecode scheint richtig
zu sein.
Ich benutze den ATMEGA8535.
MfG
Swen