Hallo Leute Ich habe einen ATmega16 und möchte einfach nur strings auf dem Hyperterminal per RS232 ausgeben. Beim ATmega8 hat es auf anhieb geklappt. Die Initialisierung ist ja nicht die gleiche, aber ich bekomme die beim Mega16 nicht hin... ich bekomme nur "Textgülle". Was mache ich falsch? Schaut mal bitte in den Quellcode. Danke euch. Marco
Ich hab gesehen, das da noch zwei kleine Schnitzer drin sind. ich lege ab baud =0 fest ... muss 23 sein und initialisiere UBRL zwei mal.... die eine Zeile müsste auskommentiert sein outp (....,UBRRL); . ABer das ist nicht das Problem... es funzt trotzdem nur Zeichenwirrwarr an den Hyperterminal.... schei.... :-). Was machen ich denn noch falsch ????
Hast du die Interrupts von Mega16 richtig initialisiert? Mega16 hat nähmlich eine andere Tabelle, die Einträge sind nicht 2 bytes groß, und im sourcecode hab ich nirgendwo gesehen, wie du dein MCU definiert hast
Eigentlich ist der MCU doch durch das makefile definiert.. aber ich lasse mich gern eines Besseren belehren... welche Interrupts sind denn zu definieren und wie? Marco
Hi Marco, Du hast daran gedacht, daß ein neuer Mega16 mit internen 1MHz läuft? hth Gunter
fuse bits auch richtig auf externen takt umgestellt ? Anlieferungszustand ist ja 1 MHz interner RC-Oszillator
Mit dem internen Oszillator ist ja auch eine Möglichkeit, gebe ich zu
HUPS ... dann brauche ich Hilfe, wie ich die Fuses setze. Ich benutze das Programm AT-Prog. Da habe ich vier Bytes zur Verfügung um die Fuses zu setzen. Leider fehlt mir der Zusammenhang, was ich da blind auf Anweisung gemacht habe um das JTAG Interface zu disablen und dem Datasheet des ATmega16. Voreinstellung ist Fusbit High 99 und des mußte auf A9 .Ich mußte folgendes eingeben: zuerst die Bytefolge 58 08 00 00 (Senden), dann stand da 58 08 08 99 . Nun mußte ich eingeben AC A8 00 D9 (Senden) und es erschien AC A8 A8 00. ???? Was habe ich da gemacht.. kan das einer nachvollziehen und wie setzte ich nun dies "jungfräuliche" 1MHz-Geschichte um? Marco
vor allem jetzt NICHT EXPERIMENTIEREN !!!! Sonst kannst Du den Mega16 ggf. wegwerfen. Gunter
Das weiß ich :-)... deswegen habe ich erst fragen wollen, befor nur noch der Hammer bleibt, um mal im Mega16 nachzuschauen, wie ich die "Schalterchen setze" :-)
Hi,
>Das weiß ich :-)...
dann ist ja gut ;-)
Leider kenne ich Dein Programm nicht.
Vielleicht kann hier jemand anderes was dazu sagen.
Gunter
Hi, Übersetzte das Teil doch mal mit 1MHz "Quarztakt". Dann müßte zumindest weniger Müll kommen. Nur so als Nachweis, daß es daran liegt. Gunter
Also ich habe jetzt den Wert für UBRRL auf 6 gesetzt (1MHz, 9600bps) aber habe trotzdem einen 3,6864MHz Quarz dran... das ist hoffentlich kein Problem... habe keinen 1MHz Quarz zur Hand. Und es kommt immer noch nicht das richtige am Hyper an :-(. Marco
Hi, Nö! #define F_CPU 1000000 // Quarztakt sollte die einzige Änderung sein, die notwendig ist. Dein angeschlossener Quarz ist egal. Der hängt einfach an zwei I/O-Pins (ohne zu schwingen). hth Gunter
Nö... daran lag nicht... ach menno, das ist, als ob man nem kleinen Jungen sein Spielzeugauto wegnimmt :-(.... watt denn nu? Man sagt ja immer, ein Computer ist so blöd wie der, der ihn bedient... bin ich sooo blöde kopfschüttel
Hi, dann müssen die C-Spezialisten hier mal ran und sagen ob die Änderung des "define" reichen müßte. Oder Du schreibst das Teil in Pascal um, dann kann ich Dir evtl. weiterhelfen ;-) Gunter
JOHHHHH, da kahm alles zusammen.. Ich hatte zwar den Takt verändert, aber define 9600 stehen lassen, mit 2400 ist die fehlerquote super und siehe da... der Text ist da... ich danke dir erstmal ganz dolle... aber nun muß ich noch die Fuses ändern... mal schauen wer mir da helfen kann. den programmierer von AT-Prog habe ich schon angetextet und warte. SUUUUPER :-)))
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.