Wie OSCCAL einstellen?

#331054
Lesenswert?

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!
Gast #331055
Lesenswert?

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
Gast #331056
Lesenswert?

> 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.
#331058
Lesenswert?

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.
Gast #331059
Lesenswert?

@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!!
#331061
Lesenswert?

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.
Gast #331062
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren