Hi Hubert.G,
wenn ich die gesamte if-Schleife aber in die Endlosschleife einfügen, habe ich Problem mit der Variable A. Muss ich die wieder in der Endlosaschleife deklarieren? Ich weiß jetzt nicht genau wie du es meinst... Könntest du mir es erklären?
Wo muss ich das genau einbienden, hier der Code:
Code:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdint.h>
ISR(TIMER0_OVF_vect)
{
static int a = 0;
a++; // ca. 1 sec zahlt die Variable a
}
void InitTimer(void)
{
TCCR0 = TCCR0 | (1<<CS00); // Prescaler CK/8
TCNT0 = 0;
TIMSK = TIMSK | (1<<TOIE0);
}
int main(void)
{
InitTimer();
sei();
DDRB &= (~ (1<<PB0)); /* Pin PB0 als Eingang */
PORTB |= (1<<PB0); /* Pull Up von PIN B0 aktivieren */
DDRB = (1<<DDB1); // PB1 Ausgänge
while(1)
{
if (!( PINB & (1<<PINB0))) /* mache was wenn PinB0 low ist */
{
// Hier muss Variable a abgefragt werden
PORTB|=(1<<PB1); // high
}
else
{
PORTB&= ~(1<<PB1); // low
}
}
}
Lesezeichen