Forum: Mikrocontroller und Digitale Elektronik serielle kommunikation mega128


von nooooooooooob (Gast)


Lesenswert?

Hi ... ich bin absoluter noob was Microkontroller angeht! jetzt sollen
wir in der uni ein simples programm in assembler schreiben das 1 ascii
zeichen ausgibt über rs232 an den PC... als Mic haben wir nen
avrmega128... ich mein mit dem datentransfer über RS232 bzw. mit dem
protokoll komm ich schon klar... aber ich bekomm den mega128 nicht dazu
was zu senden... das mit den internen register zuweisungen ??? kann mir
jemand helfen?

von Philipp Sªsse (Gast)


Lesenswert?

Die TXEN-Flags wirst Du wohl gefunden haben?

Typische Mega128-Falle: TX0 und RX0 sind gleichzeitig mit ISP-Leitungen
belegt; macht sich aber eher beim RX bemerkbar, wenn der der ISP
"stärker" ist als der Pegelwandler der 232.

Hast Du mal mit dem Oszi vor und hinter dem Pegelwandler geschaut, ob
da wirklich nichts ist (vielleicht ist es ja nur falsch
angeschlossen)?

Hast Du mit anderen Mitteln (Ausgänge toggeln) überprüft, ob Dein
Programm wirklich läuft?

Wenn Du Hilfe brauchst, solltest Du mehr Details schreiben, was Du
schon gemacht hast, sonst weiß man ja gar nicht, wo man ansetzen muß.

PS: Dein 'O' prellt (-;

von nooooooooooob (Gast)


Lesenswert?

ok... ich hab als beispiel programm das aus dem toturial genommen und
versucht es für einen mega128 zu konvertieren aber irgendwie hab ich
das nicht hinbekommen....

http://www.mikrocontroller.net/tutorial/uart

wie gesagt ich hab erst seit anfang des semesters was mit µ-controllern
zu tun. und das skript unseres profs iss auch nicht sehr hilfreich
gruß Martin

von Sebastian (Gast)


Lesenswert?

der asembler läuft aber durch?
externer quarz oder interne oszi?
welcher takt?
für der wert vom ubr-register gibt es ein tool "avrcalc"
gibt es avrfreaks.net oder einfach mal googlen

von nooooooooooob (Gast)


Lesenswert?

ne eben nicht aber ich komme mit der zuweisung der internen register
zurrecht. Vielleicht kann mir das ja jemand erklären :-)danke. Ich mal
weiter schauen! externer oszi 3,68 Mhz....

danke und gruss Martin

von nooooooooooob (Gast)


Lesenswert?

ich bekomm noch nen anfall! kann mir jemand mal das erste prog. hier für
nen mega128 umschreiben? bzw. was muss ich ändern??

http://www.mikrocontroller.net/toturial/uart

von nooooooooooob (Gast)


Lesenswert?

sorry... hier der richtige link:

http://www.mikrocontroller.net/tutorial/uart

von Philipp Sªsse (Gast)


Lesenswert?

Du bist Anfänger. Das ist okay, das gehört dazu. In vielen Bereichen bin
ich auch Anfänger, zum Beispiel im Hellsehen.

Wir wissen, daß Du anhand des Tutorials vom Mega128 über RS-232 ein
Zeichen an den PC schicken willst, aber nichts ankommt. Dafür kommen
von den Register-Settings über das Programm, die Hardware des Mega128
und des Bustreibers bis zum Kabel und dem Terminalprogramm des PC alles
in allem etwa eine Million Ursachen in Frage.

Darum habe ich Fragen gestellt, um das Problem einzugrenzen. Z.B.
sollte man wissen, daß das Programm überhaupt läuft auf dem µC. Dazu
fangen auch die erfahrensten Profis bei neuer Hardware mit ganz
trivialen Schritten an wie dem Ansteuern von LEDs. Wenn die blinkt,
weiß ich schon einmal: ich habe den Controller programmiert und er
läuft (erstes Bier für mich).

Wenn das klappt, kannst Du mit jedem LED-Blinken ein Zeichen auf den
UART schreiben und mit dem Oszilloskop nachsehen, ob da etwas passiert
auf dem entsprechenden Pin (ein wenig Auf und Ab zwischen 0 V und VCC).
Wenn auch das der Fall ist, hinter dem RS-232-Treiberbaustein
nachschauen, ob da auch etwas passiert (diesmal zwischen + ein paar
Volt und - ein paar Volt). Da wäre dann das nächste Bier fällig.

Wenn es nachher daran liegt, daß die Adern des seriellen Kabels
vertauscht sind, wäre es doch blöd, wenn Du die halbe Nacht über Deinem
Code gebrütet hast.

Deswegen wäre es auch keine Hilfe, wenn Dir jemand hier den Code für
den Mega128 diktiert. Wenn Du so ein Zeug studierst, kannst Du an
diesem Fall wesentlich mehr lernen als ein wenig AVR-Assembler: Du
lernst systematische Fehlereingrenzung.

Und wenn Du damit nicht weiterkommst, kann Dir hier jemand
weiterhelfen, wenn Du ihm die passenden Informationen Deiner
Eingrenzung mitlieferst (z.B. "Programm läuft, aber am TX0-Pin
passiert nichts. Hier ist mein Code: ...").

von nooooooooooob (Gast)


Lesenswert?

Ok ... ist einleuchtend! also dann versuch ich es ein wenig genauer zu
beschreiben! MeinProblem ist eigentlich nur das Programm. Die
perepherie ist in ordnung. Davon gehe ich einfach aus da wir das
STK-Experimentierboard benutzen.die verbindung und alles andere ist
also nebensache. Programmiert hab ich den Proz auch schon also sowas
wie ein lauflicht und ein codeschloss...jetzt ist allerdings die
aufgabenstellung das wir wie schn erwähnt ein ascii zeichen an den PC
schicken sollen. Schlau wie ich war hab ich mir das Datenblatt zum m128
durchgeschaut und siehe da ... direkt ein kleines codefragment zur
implementierung der USART gefunden. Soweit so gut dachte ich und hab
das teil einfach mal im AVR studio copiert und nur diese
implementierung, natürlich mit standart programmkopf builden lassen.
aber dieses builden bringtt mir dann 7 fehlermeldungen aus gründen
irgendwelcher nichterkennung von befehlen z.b. ubrrh und ubrrl kennt er
nicht!? was mach ich falsch...

von Philipp Sªsse (Gast)


Lesenswert?

Aha, so einfach kann es werden, wenn die richtigen Infos kommen! Ich
wußte ja noch nicht einmal, daß Fehlermeldungen kommen.

Also: der Mega128 hat 2 UARTs, weshalb man ihm sagen muß, um welche es
geht (das hätten sie in der Anleitung geschickter machen können, indem
Sie UBRRnL mit einem kursiven n geschrieben hätten).

Wenn Du UART0 benutzt, heißen die Register also UBRR0L und UBRR0H. Und
entsprechend bei allen anderen Registern, die Du benutzt: jeweils die
Null einfügen.

von nooooooooooob (Gast)


Lesenswert?

natoll und ich such mir nen wolf :-) vieln dank ihr seid echt spitze...
dicken gruß Martin

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.