Ich habe es mir nicht im Detail angesehen, ein paar Dinge sind mir
aufgefallen:
Deine Funktion benennt C0, in der Funktion verwendest Du D1 ... wirklich
richtig angeschlossen?
Läuft er wirklich mit 16 MHz? Im Zweifel erst Mal den clock Kram
weglassen und mit dem internen Standard probieren.
Und dann vergiss mal die olle attiny/atmega Schreibweise, und verwende
die xmega Notation für GPIO: Das sollte so aussehen (die |= und &= ~
sind nicht mehr "in"):
1 | /* Enable USARTD1, RX, PD6 */
|
2 | PORTD.DIRCLR = PIN6_bm;
|
3 |
|
4 | /* Enable USARTD1, TX, PD7 */
|
5 | PORTD.DIRSET = PIN7_bm;
|
6 |
|
7 | PORTD.OUTTGL = PIN3_bm; // LED Toggle
|
|= mag bei DIR ja noch gehen, aber bei OUTTGL?
Stört Dein LED toggle durch das |= die USART-Einstelllungen? Lege es mal
auf einen anderen Port. In meinem Beispiel gibt es KEIN |=, nur ein =.
Nicht, dass das |= die USART Settings löscht.
Bitte die Konstanten in usart_init aufdröseln, das entziffer ich nicht.
Bitte mal USART_CMODE_ASYNCHRONOUS_gc, USART_RXEN_bm und Konsorten
verwenden. Deinen Kommentaren traue ich nicht :-)