Hallo zusammen! Möchte mein atmega16 auf dem STK500 mit einem externen Quarz betreiben (8 MHz) - leider bin ich zu dumm dafür... Also XTAL1 ist gejumpert und OSCSEL ist auf die ersten beiden gesetzt. Im AVR-Studio ist das externe Fuse-Bit gesetzt. leider will die Ausführun noch nicht so richtig - die Daten kommen in kryptischen Lettern an (normalerweise kenn ich das nur bei falsch eingestellten Baudraten). Nehme ich sie Frequenz des Boards funktioniert alles - also es liegt nicht am Programm. Wer weiß, was ich falsch mache?
> Im AVR-Studio ist das externe Fuse-Bit gesetzt
Was bitteschön ist denn das "externe Fusebit"? Und welche Daten kommen
kryptisch an? Versuchst Du, etwas über UART zu übertragen? Wenn
überhaupt was ankommt, dann gehe ich auch mal von einer falschen
Baudrate aus. Hast Du denn die Baudraten angepasst bzw. die CPU-Frequenz
korrekt eingegeben?
Hallo, Du hast Dein Programm auch entsprechend angepasst, wenn die 8MHz nicht der "Frequenz des Boards" entsprechen? Baudrate? Gruß aus Berlin Michael
Ok, ich hab mich wohl nicht präzise ausgedrückt. externe Fuse-Bit Damit wollte ich nur sagen, dass ich das Fuse-Bit für einen externen Quarz gesetzt habe. Der uC rechnet ein bischen und zeigt mir zur Kontrolle die Daten an. Lese sie aus dem Hyperterminal. Du hast recht, ich nutze ich den UART. Wieso muss ich das Programm anpassen? Vorher habe ich die 3,68 MHz genutzt und eine Baudrate von 19200 gewählt. Diese Baudrate wollte ich auch beibehalten. Wenn ich ehrlich bin, kann ich euch nicht ganz folgen...
Wenn der Compiler nichts davon weiß, dass Du plötzlich einen anderen Takt verwendest, dann kann das nicht funktionieren! Du musst dem Compiler das über das Makefile (bzw. in AVRStudio über die Configuration Options) mitteilen. Und ich vermute mal, dass Du das nicht getan hast. Und das Fuse-Bit für einen externen Quarz gibt es nicht. Da müssen eine ganze Reihe von Fusebits eingestellt werden. Wenn Du natürlich aus AVRStudio programmierst, dann ist das ein Häkchen in dem entsprechenden Fenster, was aber nicht bedeutet, dass es nur ein Fuse-Bit ist!
Damit wir nicht aneinander vorbeireden: Ich bin oben davon ausgegangen, dass die Baudrate in Deinem Programm mit einer Formel berechnet oder direkt in die entsprechenden Register geschrieben wird. Wenn das der Fall ist und Du (für den ersten Fall, also mit Formel im Programm) dem Compiler nicht mitgeteilt hast, dass Deine Taktfrequenz jetzt nicht mehr 3,68 MHz sondern 8 MHz ist, dann ist die Baudrate jetzt um den Faktor 8/3,68 = 2,17 zu hoch. Wenn Du die Baudratengenerator-Register händisch geschrieben hast, musst Du natürlich da auch die Werte entsprechend ändern.
Wie blöde... - Ich habe vergessen das Baudratenregister anzupassen. Jetzt funktioniert es. Nochmals Dank für die schnelle Hilfe!
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.