Hallo,
nur eine kurze Frage:
Ist diese Initialisierung des USART vollständig, wenn ich damit senden
und empfangen will? Der Auszug ist aus S. Salewskis Referenzcode für den
AT90USB1287. Er hat aber nur die Ausgabe eingebaut (läuft auch), ich
will zu Debugzwecken aber auch Daten empfangen. Er springt dabei leider
nicht die ISR an (laut Definition in der Headerdatei USART1_RX_vect).
Ich bin mir nicht ganz sicher, ob ich einen Initialisierungsschritt
vergessen habe?
Meine Änderung für den RX-Interrupt waren (1<<RXEN) | (1<<RXCIE1) in
UCSR1B.
Senden klappt wie gesagt Problemlos...wenn es Probleme mit dem Kabel
oder der Einstellungen wären, dürfte das ja nicht gehen
1 | UBRR1 = UART_UBRR;
|
2 | UCSR1C = (1<<UCSZ10) | (1<<UCSZ11);
|
3 | UCSR1B = (1<<TXEN) | (1<<RXEN) | (1<<RXCIE1);
|
1 | ISR (USART1_RX_vect)
|
2 | {
|
3 | char debStr[2];
|
4 |
|
5 | uint8_t data = UDR1;
|
6 |
|
7 | debStr[0] = data;
|
8 | debStr[1] = 0;
|
9 | Debug(debStr);
|
10 |
|
11 | if ((data == 0x0D) ||
|
12 | (data == 0x0A))
|
13 | {
|
14 | submitHostCommand(rxBuffer);
|
15 | } else if (rxIndex < 32)
|
16 | {
|
17 | rxBuffer[rxIndex] = data;
|
18 | rxIndex++;
|
19 | }
|
20 | }
|
Falls sich jemand durchwühlen möchte anbei noch der gesamte
quellcode...ich möchte es aber niemandem empfehlen. Wenn, dann ist
usart_drv.c wohl am interessantesten.
Vielen Dank für eure Zeit,
Fabian