Hey! Ich hab im Bascom AVR folgende Zeilen programmiert: $regfile = "m8535.dat" $crystal = 4000000 $baud = 1200 Do Print "Hello World!" Loop Allerdings hat es nicht richtig funktioniert. Daher habe ich die Taktfrequenz auf 1 Mhz geändert. Ergebnis: Alles lief Fehlerfrei! Ich benötige die Funktion aber bei 4Mhz. Kann mir jemand sagen warum es bei 4Mhz nicht funktioniert? Im Anhang habe ich ein Bildschirmmitschnitt von dem was das Terminalprogramm ausgespuckt hat. Danke schonmal!
Hast du schonmal versucht 4000000 durch 1200 zu teilen? das haut nicht hin, oder? Also besorg dir einen quarz dessen frequenz man durch 1200 teilen kann oder benutze eine baudrate die halt besser passt (allerdings lässt sich die serielle schnittstelle nicht dazu bewegen solch eine baudrate zu benutzen)
Das ist ganz einfach Stolperfalle Nr. 1 (kommt jede Woche): Ab Werk ist der interne 1MHz RC aktiv, Du mußt die Fuses umprogrammieren dann klappt es auch mit dem Nachbarn (4MHz). Peter
Also kann das eigentlich sehr gut Teilen. Mit der Formel zum berechnen von UBR komme ich auf eine Baudrate von 1202. Das dürfte funktionieren. Aber ich hab gerade mal andere Baudraten probiert. Die gehen ebenfalls nicht bei 4Mhz
Hey Peter: Hab ich gemacht im PonyProg Hab eigentlich auch an die umgedrehte Logik gedacht. Und im Code hab ich das $crystal = 4000000 auch geändert.
entferne doch einfach mal den quarz und schau ob er dann immernoch funktioniert - wenn er noch irgendwas sendet dann ist der interne RC noch an :)
Ich will ihn doch mit dem internen Quarz benutzen. Ich hab den Quarz jetzt mal ausgeschalten und nen externen drangehangen. Siehe da, es klappte! Also habe ich ihn mal was senden lassen, und das UBR in jedem Zyklus erhöht. Es zeigte sich das er bei einer Baudrate von 2400 (im Terminal eingestellt) und dem Registerwert 109 (statt 103) keine Fehler mehr gemacht hat. Daher würde ich davon ausgehen, das der RC-Oszillator sehr starke Temperaturschwankungen zeigt. Aber war ja auch gutes Wetter heute:-)
Also der RC-Oszillator läuft eigentlich immer auf 1 mhz, den kann man nicht verstellen. Ja ich glaub aufgrund der synchronisation geht das mit 2400 baud noch. aber bei höheren geschwindigkeiten bekommst du bestimmt probleme.
Also mit den Fusebits kann man den Oszillator verstellen (siehe Auszug aus dem Datenblatt)
@Marius: Datenblätter lesen. @Marcel: Der interne Oszillator ist nicht sehr genau. Deshalb gibts eine Möglichkeit zum "Feintuning" mit dem OSCCAL-Register. Temperaturstabiler ist aber ein externes Quartz.
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.