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?
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 (-;
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
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
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
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
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: ...").
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...
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.