hallo, ich versuche gerade mit dem atmega88 daten per uart zu senden! aber irgendwie will das nicht! der prozessor läuft mit 8mhz und ich habe schon versucht wie es beschrieben ist den rc-Oscilator zu kalibrieren aber trotzdem funktioniert das nicht! kann mir da jemand mal ein tipp geben wie man das richtig kalibriert! gruß
Hi, Franz, gehe ich Recht in der Annahme, Du hast kein JTAG/ICE mit 1-wire? Ungetester Code + unsichere Quarzfrequenz - das ist eine Unbekannte zuviel. 1. Verschaff Dir ordentliches Meßzeug. 2. Reduziere die Zahl der Unbekannten, und debugge das Unbekannte. Beispiel: Setze einen Quarz ein, oder speise ein Quarzsignal ein. Ich behelfe mir, indem ich Programme erst für den Atmega16 entwickle und mit JTAG/ICE (hab' nur MkI) debugge. Wenn sie dann laufen, dann schreibe ich sie um auf ATMega8. Ciao Wolfgang Horn
Hast du die Fuses richtig eingestellt? Hatte das Problem, dass zwar auf 8MHz eingestellt war, jedoch zusätzlich noch ein Prescaler mit dem Faktor 8 aktiv war - dies wiederum resultierte statt einer Baudrate von 9600Baud in 1200 Baud *im Nachinein eh klar*
> der prozessor läuft mit 8mhz
Das ist arg langsam. Da bekommt er ja nur einen Taktzyklus alle zwei
Minuten.
Hi, es löst zwar nicht das Problem... aber ich bin gerade dabei einen Sensor aufzubauen, der sein Ergebnis per UART verschickt. Das wesentliche: Ich bin in mehreren Tests nicht mit einem RC-Oszillator hingekommen, trotz (recht) langsamen 1200 Baud. Erst mit einem 2 MHz Quarz scheint es stabil zu funktionieren. Gruss Holger
Ich habe den internen Takt verwendet - absolut keine Probleme bei 9600 Baud
Man muss beim internen Takt nur auf die Kalibrierbedingung achten: bei den meisten Chips Vcc = 5 V, Tamb = 25 °C, falls mehrere Frequenzen möglich sind, ist der Oszillator für 1 MHz automatisch kalibriert. In diesem Rahmen ist er durchaus für UART-Betrieb geeignet, ansonsten muss man nachkalibrieren (entweder über EEPROM-Werte oder zur Laufzeit dynamisch, falls man ein anderes Normal hat, z. B. einen 32-kHz-Quarz). Zu beachten ist natürlich noch, dass 1 MHz nur für 9600 Bd geeignet ist, wenn man das U2X-Bit setzt und damit das Oversampling von 16fach auf 8fach reduziert. Ob man ,nur' mit 1200 Bd oder schneller arbeitet, ist übrigens (bis auf U2X bei 9600 Bd) egal, da der relative Fehler des internen Oszillators gleich bleibt, damit auch die möglichen Abtastfehler eines externen Empfängers. Wenn die Frequenz nicht stimmt, dann gehen eben 1200 Bd genauso schlecht wie 9600 Bd.
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.