Teddynator
13.01.2009, 22:02
Hallo... habe ein kleines Problem mit einer globalen Variablen
Das Programm ist nur ein Versuch um die Interrupt Funktion zu testen.
LED 1 soll leuchten wenn der Interrupt eintritt, zugleich soll die Variable a auf 1 gesetzt werden. Nun wird im Hauptprogramm die Variable a abgefragt, wenn sie 1 ist, soll LED 2 leuchten. Mein Problem: LED 2 leuchtet nicht. Woran könnte das liegen?
Ich verwende MyAVR und einen Atmega 8.
Wäre schön wenn mir jemand helfen könnte.
Vielen Dank schonmal
#include <avr/io.h>
#include <avr/interrupt.h>
#include <inttypes.h>
char a = 0;
void init(void) //Initialisierung
{
DDRD = 0b11100000; //Pin 765 = Output 0-4 = Input
DDRC = 0b00111000; //status LED ausgänge (Port C: 3,4,5)
GICR|=(1<<INT0); //enables ext Interrupt (Pin 4, INT0)
MCUCR = 0b00000011; //Steigende Flanke an INT0 Löst aus
sei (); //Global Interrupt enable
}
ISR(INT0_vect)
{
a = 1; //setzte a auf 1
PORTC |= (1 << PC5); //schalte 1. LED ein
}
void main(void)
{
init();
while (1);
{
if (a == 1) //wenn a = 1
{
PORTC |= (1 << PC4); //schalte 2. LED ein
}
}
}
Das Programm ist nur ein Versuch um die Interrupt Funktion zu testen.
LED 1 soll leuchten wenn der Interrupt eintritt, zugleich soll die Variable a auf 1 gesetzt werden. Nun wird im Hauptprogramm die Variable a abgefragt, wenn sie 1 ist, soll LED 2 leuchten. Mein Problem: LED 2 leuchtet nicht. Woran könnte das liegen?
Ich verwende MyAVR und einen Atmega 8.
Wäre schön wenn mir jemand helfen könnte.
Vielen Dank schonmal
#include <avr/io.h>
#include <avr/interrupt.h>
#include <inttypes.h>
char a = 0;
void init(void) //Initialisierung
{
DDRD = 0b11100000; //Pin 765 = Output 0-4 = Input
DDRC = 0b00111000; //status LED ausgänge (Port C: 3,4,5)
GICR|=(1<<INT0); //enables ext Interrupt (Pin 4, INT0)
MCUCR = 0b00000011; //Steigende Flanke an INT0 Löst aus
sei (); //Global Interrupt enable
}
ISR(INT0_vect)
{
a = 1; //setzte a auf 1
PORTC |= (1 << PC5); //schalte 1. LED ein
}
void main(void)
{
init();
while (1);
{
if (a == 1) //wenn a = 1
{
PORTC |= (1 << PC4); //schalte 2. LED ein
}
}
}