Wie muss ich OSCCAL einstellen, dass mein ATMega 8 mit ungefähr 12 Mhz läuft, wenn die Fuses auf 8 Mhz interner Oszillator eingestellt sind? Ich wollt das folgendermaßen machen: ldi temp0,235 out OSCCAL,temp0 Danke für eure Hilfe, Felix
Das kann man so nicht genau sagen. OSCCAL ist dazu da, die Frequenz genau einzustellen, nicht um die Frequenz weit von der Grundfrequenz (8MHz) zu entfernen. Nichtsdestotrotz: Meine Atmegas hier schaffen bei OSCCAL = 255 ungefähr 14 Mhz, der eine mehr, der andere weniger. Was 12MHz sind? Ausprobieren!
Hallo Felix, warum nimmst Du nicht gleich 255? Ich würde dann allerdings bei der ersten Inbetriebnahme Deines Projekts laut pfeifend den Raum verlassen. Wie der Name des OSCCAL (Oscilator Calibration) schon dumpf erahnen lässt, muß man die tatsächlich erzielte Frequenz messtechnisch ermitteln (oder die Vorgabe aus den signature bytes übernehmen). Von einer Übertaktung kann ich Dir nur dringend abraten, da Flash und EEPROM sonst ungeahnte Möglichkeiten der Interpretation Deines Programmes eröffnen. Gruß, Klaus
> Wie muss ich OSCCAL einstellen, dass mein ATMega 8 mit ungefähr 12 > Mhz läuft, wenn die Fuses auf 8 Mhz interner Oszillator > eingestellt sind? Das hängt von der Betriebsspannung, der Temperatur und dem individuellen Chip ab. Das Register ist ja dazu da, um den Oszillator zu kalibrieren, weil er so große Toleranzen hat. Deshalb gibt's natürlich keinen festen Wert, mit dem man 12 Mhz errreicht. @Klaus2m5: Von was für einer ÜBertaktung sprichst du? 12 Mhz ist noch deutlich unterhalb der spezifizierten Maximalfrequenz des Atmega8. Selbst bei einem OSCCAL-Wert von 255 ist es laut Datenblatt nicht möglich, den Prozessor zu übertakten.
Ich brauch 12 Mhz für den USB-Joystick von IGOR. Deswegen will ich ihn auf 12 Mhz einstellen, weil ich momentan kein quarz habe. Wie kann man sowas messen?
Wenn du keinen Messpark hast, musst du improvisieren. zb. Mach dir ein Blinklicht, mit einer bekannten Sollfrequenz bei 12 Mhz, zb. 1 Sekunde. (Timerwert bzw. Prescaler darfst du bestimmen - Datenblatt). Dann nimmst du eine Uhr und zählst die Anzahl der Blinker in 1 Minute. Das sollten 60 sein. Zählst du 58, dann schwingt der RC-Oszillator zu langsam, erhöhe OSCCAL. Zählst du 62 dann schwingt er zu schnell, verringere OSCCAL. usw. usw.
@Rolf Aus dem Datenblatt (ATMEGA 8 complete) Seite 31 (OSCCAL): The calibrated Oscillator is used to time EEPROM and Flash access. If EEPROM or Flash is written, do not calibrate to more than 10% above the nominal frequency. Otherwise, the EEPROM or Flash write may fail. Inzwischen haben wir ja gehört, das es für eine USB Emulation sein soll. Wenn schon der interne Oszillator nicht gut genug für 9600 Baud RS232 ist, wie gut wird er dann mit 1,5Mb USB klar kommen??? @Felix nimm bitte einen Quarz, ohne den wird das nix!!
Also,ich habs mit dem UART getestet. Bei 57600 Baud funktioniert er korrekt bei 235-244. Aber ab und zu sind unerklärlicherweise Fehler drin. Mit dem USB geht es noch nicht. Wie kann man das genauer messen?
Finger weg von der Idee !!! Für eine USB-Lösung via Firmware (wie es das IGOR-Teil ist) muss man unbedingt einen Quarz verwenden. Das USB-Timing ist noch wesentlich kritischer als das der UART. Da würden bei einer kalibrierten Geschichte per OSCCAL schon bei einem Grad eine Abweichung eintreten, die man so nicht haben will. Notlösung : nehme einen Quarz mit 13,5 ; 15 ; 16,5 oder 18 MHz und fülle an den Timing-kritischen Sachen ausreichend nop-Instruktionen auf. Das sollte dann auch verwenden. Auf alle Fälle braucht USB eine exakte Frequenz (durch einen Quarz). Ein Quarz mit weniger Frequenz geht nicht. 12 MHz ist das Minimum.
Vielen Danke euch allen! Mit Quarz geht es nun einwandfrei. Das mit dem internen Oszillator war echt ne Schnapsidee. Der schwankt laufend in der Frequenz. Für UART reichts aber. Falls es noch jemand braucht: Wenn man OSCCAL auf 240 einstellt, läuftm mein Mega8 mit ca. 12 Mhz.
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.