Hallo,
ich habe deinen Code mal auf meinen At90CAN128 gespielt. Es funktioniert und ich kann auch so keinen Fehler finden, der das Verhalten erklärt.
Geändert habe ich die LED-Ausgabe (nur PA7), es ist ein 16Mhz Quarz, daher bekommt UBRR1L einen anderen Wert.
Die Zeile
Code:
UCSR1C = (0<<UMSEL1) | (0<<UPM1) | (1<<USBS1) | (3<<UCSZ1);
habe ich durch
Code:
UCSR1C = (0<<UMSEL1) | (0<<UPM1) | (3<<UCSZ10); //9600,0,1
ersetzt, da nur Müll in hterm angekommen ist. Aber dein Oszi hätte aber auch das anzeigen müssen.
Weiter möchte ich dir als Tipp noch folgendes geben.
Die USART1_Init() gehört nicht in die while-Schleife. Die Schnittstelle muss nur einmal initialisiert werden.
Üblicherweise stehen in Headerdateien nur Definitionen, Prototypen, etc. C-Code gehört in C-Dateien und C-Dateien werden in das Projekt eingebunden (nicht über #include). Das hat aber nichts mit deinem Problem zu tun.
Bitte prüf mal die Einstellung an deinem Oszi. Zeigt das Oszi etwas an, wenn du mit dem PC sendest?
Gruß
Jens
Lesezeichen