Hallo, habe heute meinen neuen ATmega8 ausprobiert. Benutze das STK500 und programmiere mit CodeVisionAVR. Habe den Code aber auch schon für WinAVR abgewandelt und es kam zum selben fehlerhaften Ergebnis. Kurzer Überblick (Code im Anhang): ATmega8 Oszi vom STK500: 3,6864 MHz USART Transmitter an Asynchrone Übertragung 115200 Baudrate 8 Bit, 1 Stop, no Parity Terminal von CodeVisionAVR und RS232 Com-Terminal getestet Fehlerbeschreibung: beim Senden von "UDR=48" oder eine printf Anweisung kommt immer nur "8888" beim Terminalprogramm an. Habe schon ein wenig rumgespielt bei den Einstellungen...ohne Erfolg! Wo liegt hier der Fehler??? Vielen Dank! MfG S. Grifs
Bitte mal das Datenblatt zur Baudratenberechnung befragen. Wenn ich mich nicht irre ist bei 3,6864MHz nur 57600 Baud möglich. Dieter
Hallo, 115200 ist auch möglich. Habe jetzt mal alle gängigen Baudraten von 4800 bis 115200 getestet. folgendes Ergebnis: 4800 88888 9600 x8x88 14400 xxxxx 19200 88888 38400 888xx 56000 xxxxx 57600 xxxxx 115200 88888 (oben beim Beitrag habe ich eine 8 vergessen) Nun, kannmir vielleicht jemand sagen, woran dieses Problem liegt? Bin langsam am verzweifeln. Mit meinem AT90S4433 hat es immer prima geklappt. Danke
hmm, wie kann man den aktivieren bzw. deaktivieren? Hat der AT90s4433 auch einen internen Oszi? denn da klappt es ja immer.
Habe meine anderen mega Mikrocontroller jetzt auch probiert...Habe bei allen das selbe Problem. Irgendwie wollen die nicht das richtige ausgeben. Weiß jemand was dazu?
"Mit meinem AT90S4433 hat es immer prima geklappt" Oh Wunder. Der kann garnicht anders, als auf den externen Oszillator hören, einen internen hat er nicht. Der Mega8 hingegen läuft erst mit den 3,6MHz, wenn er mit der entsprechenden Fuse darauf hingewiesen wird. Bis dahin läuft er mit 1MHz. Habe leider keine Ahnung wie das beim CV läuft.
Ist nicht weiter wichtig mit Codevision. Wie geht es denn mit WinAVR bzw. dem Atmel Studio 4. Benutze ich genauso, bekomme es auch dort nicht hin. Wie muss ich dort die Fuses setzen?
auf externen takt natürlich! musst halt schaun wies genau heißt - ich weiß es nicht auswendig! mfg andi
Ich hätte jetzt gedacht, dass die Fuses im AVR Studio kaum zu übersehen und praktisch narrensicher sind weil's sehr deutlich dransteht was jede bedeutet. Tja, man lernt nie aus.
@A.K.: Wer lesen kann, ist klar im Vorteil... Wer sich den Mega8 als erstes Projekt aussucht, weil er so klein und "unschludig" wirkt, heimst sich ganz schnell Probleme ein, wenn er nicht lesen kann... "Reicht ja!" ist da irgendwie nicht die richtige Aussage. Ich finde es besser, mit einem Controller anzufangen, der vielleicht wesentlich mehr kann, als ich erst mal brauche, der aber im Umgang einfacher ist. Wo könnte man so eine Warnung anbringen? Gruß Rahul
Falls du mich jetzt meinst.... habe bisher immer mit dem at90s4433 gearbeitet, aber für die nächsten Projekte reicht er einfach nicht aus. Muss mich in Hardware I2C einarbeiten und später soll sogar ein CAN Netzwerk aufgebaut werden. Leider scheiter ich an allen ATmega, die ich bisher probiert habe. Ich denke mal, dass ich mit den fuses langsam besser klar komme. Ich kann ja nicht allen MC aus dem Weg gehen, die einen internen Takt haben....
Gibt ja auch keine mehr. War auch nicht ganz so böse gemeint, wie es klingt. Wie Peter Dannegger immer zu sagen pflegt: Das Datenblatt ist dein Freund!
Wenn du ein Oszilloskop hast, dann kannst du auf dem Avr in einer Endlosschleife einen Buchstaben senden und mit dem Oszi untersuchen, ob korrekte Signale übertragen werden.
für avrs gilt im allgemeinen: rtfm! da steht dann auch drin, dass die atmegas bei auslieferung auf den internen 1Mhz RC-Generator programmiert sind... 2 ideen: 1. schreib mal ein programm in assembler, dass eine led blinken lässt, dass bremst du dann mit nop (deshalb assembler) auf rechnerische 10hz oder langsamer aus (gehe dabei von 1Mhz bus-takt aus) brenne das programm dann und schaue, wie schnell die led wirklich blinkt, wenn sie dann die errechnete frequenz (oder weniger) macht, dann sind da 1Mhz eingestellt. 2. wenn du ein steckbrett hast, dann bau da mal die schaltung (atmega mit led) auf dem steckbrett ohne quarz auf. anschalten und schauen, ab die led blinkt (für diesen test kannst du auch c nehmen - die zeiten sind egal.) wenn die led blinkt, dann ist der interne oszilator aktiviert, wenn nicht, ist auf einen quarz programmiert
Danke für alle Tipps. Habe es tatsächlich geschafft alles zum Laufen zu bekommen.
Und deine Lösung wüssten wir auch alle gerne.. Könnte man nämlich noch was raus lernen
War letztendlich ganz einfach. Habe den Controller im AVR Programmer im AVR Studio 4 ausgewählt und dann die fuses von "Int. RC Osc." auf "Ext. Clock" umgestellt und zwar jene mit CKSEL=0000 SUT=00. Fragt mich nicht, warum genau das mit SUT=00. "Ex. Clock" war aber notwendig, da das STK500 ja über eine "Ex. Clock", sprich einen Quarzoszillator verfügt. Es ist aber auch möglich einen "Ext. Crystal Osc." zu wählen. Dann muss ein Quarz auf das STK500 gesteckt werden und der Jumper "OSCSEL" umgesteckt (Pins 2+3). Hier darauf achten, bei den Fuses auch die richtige MHz-Zahl einzustellen. Beide Varianten haben bei mir funktioniert.
ich wundere mich das die oft zitierten Fuses nicht in der AVR-Checklist zu finden waren. Habe die deshalb mal in die Checklist eingetragen. Wenn was falsch war verzeiht mir, war mein erster Beitrag in den Wiki Seiten.
Naja, dann später nur nicht vergessen, die Fuses auf externen Oszillator umzustellen (falls Du einen Quarz verwendest), bevor Du den Prozessor auf ein anderes Board lötest, sonst mag er nicht mal mehr ISP (weil kein Takt...) und Du mußt ihn dann wieder auslöten und umfusen...ärgerlich...
oder du hast einen isp mit programmierbarem taktgenerator und leitest den takt an die entsprechende leitung. wir machen das hier bei einem entwicklungs-board (mit 32kHz Qurz) auch so (der programmer liefert 4.7xx MHz) - die höhere Frequenz wird dann einfach auf den Takt-Eingang gelegt. Funzt eigentlich ganz gut.
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.