mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART bringt nur NULL-Zeichen


Autor: Ithamar Garbe (antimon)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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:
UBRRH = (unsigned char) (UBRR_BAUD>>8);
UBRRL = (unsigned char) UBRR_BAUD;

/* Aktivieren von receiver und transmitter */
UCSRB = (1<<RXEN)|(1<<TXEN);

/* Einstellen des Datenformats: 8 Datenbits, 1 Stoppbit */
UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);

Ein "a" wollte ich so senden:
while ( !( UCSRA & (1<<UDRE)));
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!

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nach dem Einlöten läuft der Atmel immer mit internem Oszillator.

Fusebits geändert für 8Mhz ?

Autor: Ithamar Garbe (antimon)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stimmt, sorry, das hatte ich vergessen zu erwähnen - die habe ich
geändert.

Ein Test-Blinker lief auch wesentlich schneller, aber 100%ig sicher bin
ich mir nicht, ob ich alles richtig "gefused" hab...

Die Standardeinstellungen von den Fusebits hab ich nur insofern
geändert, als dass ich CSEL0 getoggelt hab - den Rest habe ich nicht
geändert, ist das richtig so?

Im PonyProg sind folgende Checkboxen aktiv (also programmiert, bit=0):
JTAGEN, BOOTSZ1, BOOTSZ0, SUT0, CKSEL3-0
Nicht aktiv (bit=1, unprogrammiert) sind dagegen OCDEN, CKOPT, BOOTRST,
BODLEVEL, BODEN und SUT1

SUT1-0 sind ja meines Wissens nach lediglich für den Start zuständig,
die anderen Fusebits ausser den CKSEL's haben mit dem Takt nichts zu
tun, richtig?
Oder habe ich eventuell noch irgendwo was übersehen?

Autor: Bjoern Buettner (tishima)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin!

Teste erstmal deine MAX232 Geschichte. Prozessor aus dem Sockel nehmen
und zwischen RX und TX ne Brücke am Sockel machen, dann mit HTerm ein
Paar zeichen senden. Wenn die Zeichen zurückkommen, ist schonmal deine
MAX232 Geschichte in Ordnung.

Gleiche Baudrate bei HTerm eingestellt ???

Ansonsten benutzt Du den Internen Takt oder hast du nen Quarz drann,
sind die Fusebits wirklich korrekt gesetzt ????

Das Programm mal mit Verify in den Controller schreiben, schauen ob es
wirklich ohne Fehler geschrieben wurde.

Die Fehlersuche bei der Inbetriebname wurde aber auch schin X-mal
beschrieben.

mfg,
Bjoern

Autor: Ithamar Garbe (antimon)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh mann - war klar dass das wieder eine kleine aber verheerende Sache
war... die Versorgungspins vom Max232 waren nicht angeschlossen.
Dadurch, dass die Platine einen gewissen Umfang hat, habe ich auf die
"Selbverständlichkeiten" nicht mehr geachtet - mit fatalen Folgen...

Ich dachte erst an einen Kurzschluss bzw. Unterbrechung der
selbstgeätzten Platine, aber sowas...

Aber vielen Dank für Eure Tips dadurch bin ich erst draufgekommen,
sonst hätt ich mich vermutlich totgesucht...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.