Moin,

Zitat von
booty
Ich habe alles geändert, so wie es beschrieben ist, doch es funktioniert immer noch nicht. Hat einer noch ne Idee?
überprüf mal ob Du auch wirklich 0x31 sendest und nicht 0x01
Code:
ISR(USART_RXC_vect)
{
buffer = UDR;
}
void led_init(void)
{
if(buffer==0x31)
PORTA=0x01;
else
PORTA=0x00;
}
bevor in led_init() buffer ausgelesen werden kann, kann ein andere Interrupt buffer wieder geändert haben (ja ich weis - wird bei diesem kleinen Programm nicht passieren)
also - entweder
Code:
ISR(USART_RXC_vect)
{
led_init(UDR)
}
void led_init(char value)
{
PORTA = value
}
oder die kurze Variante ... da es nur ein Testprogramm ist
Code:
ISR(USART_RXC_vect)
{
PORTA = (UDR == 0x31) ? 0x01 : 0x00;
// PORTA = UDR;
}
um als Alternative zu sehen ob überhaupt was am UART/Interrupt ankommt
Code:
ISR(USART_RXC_vect)
{
static char dummy = 0;
PORTA = dummy++;
if (dummy == 255) dummy = 0;
}
Detailänderung
Code:
int main(void)
{
DDRA = 0xff;
uart_init();
sei();
while(1) {
// CPU schlafen legen ... spart Akkus
}
return 0;
}
hand, mogel
Lesezeichen