Einen beträchtlicher Teil deines Codes versteckst du woanders...
Ein RESET wird zB dann ausgelöst, wenn eine nicht-implementierte IRQ getriggert wird.
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
Einen beträchtlicher Teil deines Codes versteckst du woanders...
Ein RESET wird zB dann ausgelöst, wenn eine nicht-implementierte IRQ getriggert wird.
Disclaimer: none. Sue me.
vom code fehlt einiges ja, aber ich dachte, das wäre das wichtigste..
muss ich alle aktivierten interrupts auch als IRQ-Routine haben?
Wenn ja, kann es daran liegen, dass ich keine TXC routine habe. Werde ich heut nachmittag mal testen.
Gruß, CowZ
Wenn eine IRQ getriggert wird, für die keine ISR implementiert ist, dann wird von avr-gcc Code erzeugt, der dann zum RESET-Punkt springt. Das Programm läuft dann also von vorne los, allerdings ohne die Hardware neu zu initialisieren wie bei einem richtigen RESET.
Disclaimer: none. Sue me.
Hi,
ok, danke für die Erklärung, hoffe das Problem löst sich so.
Wenn nicht, melde ich mich nochmal. Vielen Dank schonmal
edit: grad getestet, läuft wunderbarvielen dank
Gruß, CowZ
Lesezeichen