Hallo zusammen,
ich habe laut Tutorial die Asynchrone serielle Schnittstelle mit einem
AtMega16 und dem MAX232N aufgebaut, aber trotz aller Bemühungen spuckt
er mir nur das NULL Zeichen am angeschlossenen PC mit Hterm aus,
anstatt die Zeichen, die ich schicken möchte.
Getaktet ist der Mega mit 8 Mhz, die Baudrate sollte 9600 sein, das
gibt einen Registerwert von 51 für den Teiler - so konnte ich es
zumindest auch aus anderen Beiträgen rauslesen.
Initialisiert (in C) habe ich wie folgt:
1 | UBRRH = (unsigned char) (UBRR_BAUD>>8);
|
2 | UBRRL = (unsigned char) UBRR_BAUD;
|
3 |
|
4 | /* Aktivieren von receiver und transmitter */
|
5 | UCSRB = (1<<RXEN)|(1<<TXEN);
|
6 |
|
7 | /* Einstellen des Datenformats: 8 Datenbits, 1 Stoppbit */
|
8 | UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
|
Ein "a" wollte ich so senden:
1 | while ( !( UCSRA & (1<<UDRE)));
|
2 | UDR = 'a';
|
Sollte doch soweit stimmen oder?
Falls ja, könnte es an der Hardware liegen? Ich habe zwar 47uF Elkos
genommen, andere haben da nur 4,7uF verwendet, aber laut Beschreibungen
sollte das kein Problem darstellen - oder doch?
Muss ich bei der Pinbelegung evtl. aufpassen? Ich hab die aus dem
Tutorial verwendet - brauch ich dann ein Nullmodemkabel zum PC oder ein
"normales"?
Kann ich irgendwie messtechnisch überprüfen ob die Ladungspumpen und
folglich die Pegel stimmen? An einem Elko hatte ich -3V gegenüber
Masse, beim anderen 10V - das könnte stimmen oder?
Vielen Dank schon mal für alle Tips!