Hallo zusammen
Ich bin z.Zt. wieder daran, mich in das Thema Mikrocontroller einzuarbeiten und experimentiere z.Zt. mit dem UART.
Ich möchte gerne ein empfangenes Zeichen oder einen String auf dem angeschlossenen LCD anzuzeigen. Das LCD an und für sich funktioniert tiptop, das ist also nicht das Problem
Hier mal mein Code:
Ich habe den von hier: http://www.avrfreaks.net/index.php?n...ntview&t=48188
Code:
#include <avr/io.h>
#define USART_BAUDRATE 9600
#define F_CPU 1000000
#define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1)
int main (void)
{
char ReceivedByte;
UCSRB = (1 << RXEN) | (1 << TXEN); // Turn on the transmission and reception circuitry
UCSRC = (1 << URSEL) | (1 << UCSZ0) | (0 << UCSZ1); // Use 8-bit character sizes
UBRRH = (BAUD_PRESCALE >> 8); // Load upper 8-bits of the baud rate value into the high byte of the UBRR register
UBRRL = BAUD_PRESCALE; // Load lower 8-bits of the baud rate value into the low byte of the UBRR register
for (;;) // Loop forever
{
while ((UCSRA & (1 << RXC)) == 0) {}; // Do nothing until data have been received and is ready to be read from UDR
ReceivedByte = UDR; // Fetch the received byte value into the variable "ByteReceived"
while ((UCSRA & (1 << UDRE)) == 0) {}; // Do nothing until UDR is ready for more data to be written to it
UDR = ReceivedByte; // Echo back the received byte back to the computer
}
}
Ich hatte uerst eigentlich einen anderen Code der mehr tat. Da dieser aber nicht sauber funktionierte habe ich mich dann entschieden auf etwas zurück zu greifen was eigentlich funktionieren sollte
Als Mikrocontroller habe ich einen ATmega8. Auf dem Computer setze ich HTerm ein, Baud 9600, 1 Stop-bit.
Wenn ich vom Mikrocontroller aus direkt ein paar bits an den Mc sende kommen die richtig an. Wenn ich die sende-Leitung vom PC mit der Empfangs-leitung direkt verbinde kommt alles richtig wieder am PC an was von da gesendet wurde.
Als Pegelwandler setze ich den MAX233CPP ein, dieser kommt ohne externe Kondensatoren aus und scheint soweit korrekt zu funktionieren.
Wenn ich nun vom PC aus an den MC einen Text oder einzelne Bits sende, kommen die nicht so zurück wie sie gesendet werden. Hier ein paar Beispiele:
aus 10101010 wird 01101010
aus 00000000 wird 01101010
11001100 bleibt 11001100
Kann mir jemand sagen, wo der Hund vergraben liegt? Ich finde den Fehler leider schon seit ein paar Tagen nicht.
Den MC habe ich übrigens immer wieder mal "neu gestartet", genau so wie den PC.
Liebe Grüsse
Thor_
Lesezeichen