Hi,
danke, du hast Recht. Ich hatte allerdings nur im main den Part mit den Blitzen rausgenommen und durch Blinken ersetzt.
Hier mal der ganze Code komplett:
Code:
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <avr/wdt.h>
/*void blitz()
{
PORTA = (1<<PA1);
_delay_ms(1000);
PORTA = (0<<PA1);
}
void beacon()
{
PORTA = (1<<PA0);
_delay_ms(1000);
PORTA = (0<<PA0);
}
*/
ISR(INT0_vect)
{
static int reading;
static int rc_value;
if(reading == 0)
{
TCNT0 = 0;
MCUCR = (0<<ISC00) | (1<<ISC01);
reading = 1;
}
else
{
rc_value = TCNT0;
TCNT0 = 0;
MCUCR = (1<<ISC00) | (1<<ISC01);
reading = 0;
}
if(rc_value > 150)
{
PORTA = (1<<PA2);
}
else
{
PORTA = (0<<PA2);
}
}
int main(void)
{
DDRA = 0xFF;
PORTA = 0xFF;
DDRB = 0x00;
TCCR0B = (1<<CS01);
MCUCR = (1<<ISC00) | (1<<ISC01);
GIMSK = (1<<INT0);
//sei();
/* while(1)
{
blitz();
_delay_ms(150);
blitz();
_delay_ms(350);
beacon();
_delay_ms(500);
} */
while(1)
{
PORTA = (1<<PA1) | (1<<PA0);
_delay_ms(1000);
PORTA = (0<<PA1) | (0<<PA0);
_delay_ms(1000);
}
}
So wie er da steht, blinkt die LED, unabhängig vom verbundenen Signal-Pin. sei() ist auskommentiert. Sobald ich die Interrupts wieder erlaube, hat der Signalpin auch auf das Blinken Einfluss.
Ich brauche die Signalleitung bloß an der Isolation anfassen und es fängt wieder an zu blitzen, mal mehr mal weniger hell bzw kurz und lang. Ziemlich doof...
Lesezeichen