Hallo!
Ich habe folgendes Problem mit dem Attiny2313 / 4313.
Ich habe den tiny über einen MAX232N an die Serielle Schnittstelle
gepackt. An einem Port (PD6) hängt ne LED, die sich per Taster
ein-/ausschalten lässt.
Die Ausgabe an den PC per uart_puts() funktioniert ohne Probleme.
1 | void uart_puts (char *s)
|
2 | {
|
3 | while (*s)
|
4 | { /* so lange *s != '\0' also ungleich dem "String-Endezeichen(Terminator)" */
|
5 | uart_putc(*s);
|
6 | s++;
|
7 | }
|
8 | }
|
Aber sobald ich am PC auch nur ein Zeichen eingebe, leuchtet plötzlich
die zuvor ausgeschaltete LED auf und es geht gar nichts mehr. Den
Empfang habe ich nach einem Tutorial per Interrupt gelöst:
1 | ISR(USART_RXC_vect)
|
2 | {
|
3 | uart_puts("test");
|
4 | }
|
Initialisiert wird USART wie folgt:
1 | void uart_init()
|
2 | {
|
3 | UBRRH = UBRR_VAL >> 8;
|
4 | UBRRL = UBRR_VAL & 0xFF;
|
5 | UCSRB |= (1<<RXEN)|(1<<TXEN)|(1<<RXCIE); // UART RX, TX und RX Interrupt einschalten
|
6 | /* Set frame format: 8data, 2stop bit */
|
7 | UCSRC = ( 1 << USBS ) | ( 3 << UCSZ0 );
|
8 | }
|
Wieso leuchtet plötzlich die LED auf / hängt sich der tiny auf? Und
warum mag er meine Eingaben nicht verarbeiten? :( Ich hoffe ihr könnt
mir helfen!
Danke schonmal!