Hi,
ich habe ein seltsames Problem:
Ich habe einen mega32 mit angeschlossenem max232. Sende ich ein Zeichen, oder eine Zeichenkette, started das Programm des µC neu. (glaube ich zumindest).
Ablauf:
void main(void):
- Setzte LED als an
- Warte (while(1); )
uart_rxc interrupt:
- wenn empfangenes Zeichen = a => Setze LED als aus
- wenn empfangenes Zeichen = b => Sende '-' zurück.
Ergebnis:
Starten (LED ist an), 'a' senden (LED ist aus), 'b' senden (LED geht wieder an)
Mein Code (relevante teile, led() schaltet nur die LED an/aus):
Interessanter weise schickt er den gesamten string bei uart_puts. Die LED geht trotzdem an. Ich weiß nicht mehr weiter und hoffe, ihr könnt mir helfen.Code:int main(void) { led_init(); uart_init(); sei(); led(led2, 1); while(1) { } } ISR(USART_RXC_vect) { uint8_t c; c = uart_receive(); if (c == 'a') led(led2, 0); if (c == 's') uart_putc('-'); } void uart_putc(uint8_t data) { while (!(UCSRA & (1<<UDRE))); UDR = data; } void uart_puts(uint8_t *data) { while (*data) { while (!(UCSRA & (1<<UDRE))); UDR = *data; data++; } }
Gruß, CowZ







Zitieren

Lesezeichen