Forum: Mikrocontroller und Digitale Elektronik Problem: USART mit ATMega 644


von Kevin K. (nemon) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo,

ich wage derzeit meine ersten Schritte mit einem Mikrocontroller. 
Zunächst geht es drum, Zeichen über den USART an den PC zu schicken. 
Angedacht sind 115200 Baud bei 18,432MHz CPUTakt. Also hab ich mir 
entsprechend Codebeispiele angeschaut, den µC auf das STK500 geschnallt, 
einen RS232->USB-Wandler von Prolific angeklemmt und das folgende 
Progrämmchen geschrieben, welches stumpf hochzählt und mir entsprechend 
rutnergeteilt mir den aktuellen Wert auch brav über die LEDs des STK500 
ausgibt. Nun war meine Idee, die von 0..255 hochzählende Variable an den 
PC zu schicken und mit HTerm auslesen zu lassen. Bei HTerm kommt jedoch 
nichts an. Habe leider kein Oszi zur Hand, mit dem ich auf der 
RS232-Seite schauen kann, ob überhaupt Daten rüberkommen. Ja, ich habe 
viel gelesen, wie das funktionieren sollte, aber irgendwass scheine ich 
übersehen zu haben. Wär ganz nett, wenn mir da jemand den entscheidenden 
Hinweis geben könnte.
Ich habe CKDIV8 abgestellt und der µC läuft auch mit dem externen Takt, 
jedenfalls ist das Lauflicht langsamer, wenn das Quarz langsamer ist.

von Karl H. (kbuchegg)


Lesenswert?

Kevin K. schrieb:

Schuss ins Blaue:
Kreu mal dein Kabel aus (Pin 2 mit Pin 3 an einem Ende des Kabels 
vertauschen).

> Habe leider kein Oszi zur Hand, mit dem ich auf der
> RS232-Seite schauen kann, ob überhaupt Daten rüberkommen.

Brauchst du auch nicht.
Baudrate runter und mit einer LED (samt Vorwiderstand) an die Leitung 
gehen. Das Blinken sieht man.

von Hc Z. (mizch)


Lesenswert?

Du zählst zaehlerb zweimal hoch.  Dort, wo Du es auf 0 abfrägst, kann es 
nie 0 sein, sondern immer eine ungerade Zahl: 1, 3, 5, ..., 255, 1, 3. 
... .  Deshalb wird nie eine Sendung getriggert.

Mit vernünftigen Einrückungen im Quelltext wäre das leichter zu 
entdecken gewesen.  Leider sind bei Dir Befehle, die auf derselben Ebene 
stehen, prorammtechnisch nicht unbedingt im selben Block.  Für das 
Inkrementieren von zaehlerb stimmts zwar, aber da ist die Verwirrung 
schon angestiftet.  Mach es Dir und anderen Lesern nicht unnötig schwer.

von Kevin K. (nemon) Benutzerseite


Lesenswert?

also mal die LEDs vom STK an den Port mit dem USART gehängt LED1 blinkt 
sehr schnell und recht schwach. Es scheint also, als dass der Pin sendet 
und dabei die meiste Zeit auf High-Pegel ist.

Habe mir jetzt ein Nullmodemkabel gelötet (nachdem ich unter 18 
gefundenen seriellen Kabeln KEINS gefunden habe (!)), also Pin2 mit 3 
verbunden und andersrum, sowie Pin 5 (GND) 1:1 verbunden, damit kommen 
aber auch keine Daten an. Mein DMM zeigt im Gleichspannungsmodus mir an 
Pin 15 (TxD) 4,9V an, was Vcc entspricht.

~edit~

ich geh mich begraben.... habe vergessen, auf dem STK den TxD-Pin mit 
dem Pin am Block D zu verbinden. Dementsprechend kam zwar aus dem Pin 
(wo ich auch gemessen habe) was raus, aber nicht am Pegelwandler an.

@Kalle: Danke für die schnelle Antwort, auch, wenn die nicht geholfen 
hat. Der USB/Seriellwandler kann direkt ans STK500 angeschlossen werden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.