PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Keine serielle Komunikation



domibutterfly
30.08.2005, 15:19
hi habe ein Kleines Problem. ](*,) !!
Komme einfach nicht weiter.
Die serialle komunikation mit meinem Board funktioniert in soweit, das ich prgrammieren kann und das er beim starten im Hyperterminal die Fragezeichen macht. Aber dann ist sense.
Hier mal der Code.


void USART_Init(unsigned int baudrate)
{
// Set baud rate
UBRRH = (unsigned char)(baudrate>>8);
UBRRL = (unsigned char)baudrate;

// Enable 2x speed
UCSRA = (1<<U2X);

// Enable receiver
UCSRB = (1<<RXEN)|(0<<TXEN)|(0<<RXCIE)|(0<<UDRIE);

// Async. mode, 8N1
UCSRC = (0<<UMSEL)|(0<<UPM0)|(0<<USBS)|(3<<UCSZ0)|(0<<UCPOL);
}
void Usart_Tx(char data)
{
while (!(UCSRA & (1<<UDRE)));
UDR = data;
}


initalizierung
CLKPR = (1<<CLKPCE); // set Clock Prescaler Change Enable
// set prescaler = 8, Inter RC 8Mhz / 8 = 1Mhz
CLKPR = (1<<CLKPS1)| (1<<CLKPS0);
USART_Init(12); // Baud rate = 9600bps

Programm

lcd wird benutzt und einige Ports aber auch durch ausschalten wird es nicht besser.
die funktion rufe ich mit
Usart_Tx(5); auf aber passieren tut nichts
jemand eine Idee?

kater
30.08.2005, 22:11
Die Funktion Usart_Tx will ein Zeichen. Du gibs ihr nur eine 5 und das entspricht ja keinen druckbaren Zeichen. Versuchs mal so:
Usart_Tx('a');

domibutterfly
31.08.2005, 15:18
Der Fehler war das ich eine Flag falsch gesetzt habe. Das mit dem Zeichen stimmt auch, aber das ich nicht so tragisch, da er dann das entsprechende Zeichen der ASCII Tabelle übertragen hat.
Das Flag TXEN war auf null gesetz, wie es in der Beschreibung zum erlernen von c auf Atmel heißt. Richtig ist aber das es eine 1 sein muss das das Hyperterminal angesprochen werden kann.