e-Ra
21.03.2008, 15:40
Moin Jungs,
ich versuche grade mal eine einfache USART Verbindung zwischen meinem AT-Mega88 und Läppy hinzukriegen. Der Läppy hat nen echte RS232, also kein USB-> RS232 Wandler oder so drann.
Hier meine Routine zum senden:
int USART_TX(char *TX_B, unsigned int TX_B_L) {
while (!(UCSR0A & (1<<UDRE0))) { } // Warten bis Senden möglich
for(int i=0; TX_B_L > i; i++)
UDR0 = TX_B[i];
return 0;
}
Es soll solange gesendet werden bis TX_B_L erreicht ist.
Ausgeführt wird das ganze in der Main so:
char test[5] = "Hallo";
USART_TX (test, sizeof(test));
Ankommen tut genau garnichts, nada.
Initialisiert wird mit 19.200 8-N-1.
Es funktioniert wunderbar wenn ich in der main einfach ein Zeichen rüberschiebe:
while (!(UCSR0A & (1<<UDRE0))) { } // Warten bis Senden möglich
UDR0 = 'X';
Das ganze mal zum testen in nen Timer gepackt der mehrmals pro Sekunde ausgeführt wird und die X-chen rattern übern Bildschirm.
Also an der Init. kanns wohl kaum liegen!? Was läuft hier falsch?
Schönen Carfreitag, e-Ra
ich versuche grade mal eine einfache USART Verbindung zwischen meinem AT-Mega88 und Läppy hinzukriegen. Der Läppy hat nen echte RS232, also kein USB-> RS232 Wandler oder so drann.
Hier meine Routine zum senden:
int USART_TX(char *TX_B, unsigned int TX_B_L) {
while (!(UCSR0A & (1<<UDRE0))) { } // Warten bis Senden möglich
for(int i=0; TX_B_L > i; i++)
UDR0 = TX_B[i];
return 0;
}
Es soll solange gesendet werden bis TX_B_L erreicht ist.
Ausgeführt wird das ganze in der Main so:
char test[5] = "Hallo";
USART_TX (test, sizeof(test));
Ankommen tut genau garnichts, nada.
Initialisiert wird mit 19.200 8-N-1.
Es funktioniert wunderbar wenn ich in der main einfach ein Zeichen rüberschiebe:
while (!(UCSR0A & (1<<UDRE0))) { } // Warten bis Senden möglich
UDR0 = 'X';
Das ganze mal zum testen in nen Timer gepackt der mehrmals pro Sekunde ausgeführt wird und die X-chen rattern übern Bildschirm.
Also an der Init. kanns wohl kaum liegen!? Was läuft hier falsch?
Schönen Carfreitag, e-Ra