Hi,
hier mal der Code, mit dem ich teste:
Code:
#define F_CPU 7372800;
#include <avr/io.h>
// int USART_TX(char *, unsigned int); // Prototyp
static char test[5] = { 0x48, 0x41, 0x48, 0x41, 0x48, };
int USART_TX(char *TX_B, int TX_B_L) {
for(int i=0; TX_B_L > i; i++) {
while (!(UCSR0A & (1<<UDRE0))) { } // Warten bis Senden möglich
UDR0 = TX_B[i];
}
return 0;
}
int main( void ) {
UCSR0B |= (1<<TXEN0) | (1<<UCSZ02); // Tx Enable, 8 Datenbits
UCSR0C |= (1<<UCSZ01) | (1<<UCSZ00) | (1<<USBS0); // 8 Datenbits, 1 Stoppbit
UBRR0H = 23 >> 8; // HighByte, Baudrate = 19.200 bps
UBRR0L = 23 & 0xFF; // LowByte, Baudrate = 19.200 bps
USART_TX (test, sizeof(test));
return(0);
}
Wenn ich anstatt dem Funktionsaufruf in der Main einfach nur ein "UDR0 = 'X';" schreibe dann kommt auch ein X rüber.
Vielleicht entdeckst du ja nen Fehler. Danke schonmal.
e-Ra
Lesezeichen