Ich hatte vor ein Bremslicht für ein Fernsteuerwagen zu bauen, d.h wenn der Servo in eine Richtung bewegt wird, soll eine rote LED leuchten.
Ich bin jetzt auch schon soweit, das der Interrupt einigermaßen Funktioniert.
Habe dazu 2 LEDs zum testen angeschlossen, die bei jedem Interrupt abwechselnd leuchten.
Das funktioniert aber nur, wenn ich mit dem Kabel, was an INT0 angeschlossen ist, gegen das + Kabel tippe. Sobald ich den Empfänger, an das Kabel anschließe tut sich nix mehr. Wobei der Sever beim selbem Anschluss ohne probleme läuft.
Code:
#include <stdio.h>
#include <avr/io.h>
#include <avr/delay.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
unsigned char a= 0;
SIGNAL (SIG_INTERRUPT0)
{
if(a==0)//if(TCNT0<=50)
{
PORTD |=(1<<1);
PORTD &=~(1<<0);
TCNT0 = 0;
a=1;
}
else //if(TCNT0>=75)
{
PORTD |= (1<<0);
PORTD &= ~(1<<1);
TCNT0 = 0;
a=0;
}
}
int main(void)
{
DDRC =0x00;
DDRD = 0xff;
PORTC = 0x00;
PORTD =0x00;
GICR |= (1<<INT0);
MCUCR |= (1<<ISC00);
TCCR0 |= (1<<CS01) ;
sei();
while(1);
PORTD = 0xff;
return 0;
}
Edit: Hab grade feststellen müssen, das durch den Empfänger garkein Interrupt ausgelöst wird. wodran kann das liegen?
Ich hab sowohl versucht den das Signalkabel direkt an INT0 am µC anzuschließen, als auch das Kabel mit nem 56k Widerstand gegen Masse zu legen und dann zwischen widerstand und kabel zum empfänger das signal abzugreifen, klappt beides nicht.
Lesezeichen