Hallo ihr Programmer!
Ich habe einen groben Fehler in meiner Code.
Ich habe ein Lauflicht codiert, bei dem der Interrupt irgendwie kaputt ist!
Der Interrupt unterbricht immer mein laufendes Programm, was ist da los, das soll er nicht machen???
Ich bitte um Hilfe!
Hier die Code:
#include <avr/interrupt.h>
//LEDs
#define LED1 PC4
#define LED2 PC3
#define LED3 PD0
#define LED4 PD1
#define LED5 PD2
#define LED6 PD3
#define LED7 PD4
#define LED8 PD5
#define LED9 PD6
#define LED10 PD7
volatile unsigned int sec;
ISR(TIMER1_OVF_vect)
{
sec++;
if (sec==9) {sec = 0;}
// ATMEGA8 @ 1MHz; Prescaler 64 => 15625 Takte/sec
// Vorzähler auf 65536 - 15625 = 49911 einstellen
// ==> Hochzählen alle 1 sec
TCNT1 = 49911;
}
int main(void)
{
TIMSK |= (1<<TOIE1); //Interrupt bei OVF
TCCR1B |= (1<<CS10 | 1<<CS11); //Prescaler 64
TCNT1 = 0xFFFF; //starte sofort mit Interrupt
sei();
DDRD = 0xFF;
//Initialwerte
PORTD = 0x00;
sec = 0;
while(1)
{
if (sec==1) {PORTD ^= (1<<LED3);}
if (sec==2) {PORTD ^= (1<<LED4);}
if (sec==3) {PORTD ^= (1<<LED5);}
if (sec==4) {PORTD ^= (1<<LED6);}
if (sec==5) {PORTD ^= (1<<LED7);}
if (sec==6) {PORTD ^= (1<<LED8);}
if (sec==7) {PORTD ^= (1<<LED9);}
if (sec==8) {PORTD ^= (1<<LED10);}
}
return(0);
}```
Liebe Code,
Klaus Compiler
(Anm. Tomate_Salat: Verschoben von Java SE nach C/C++)