-
-
Neuer Benutzer
Öfters hier
Keine serielle Komunikation
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>>
;
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<<UCPO L);
}
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?
-
Erfahrener Benutzer
Fleißiges Mitglied
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');
-
Neuer Benutzer
Öfters hier
Fehler gefunden
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.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen