errechen von OSCCAL wert?

OP #790816
Lesenswert?

Hallo Zusammen ich hab hier schon gestöbert aber so richtig hat mir das 
nicht geholfen :(

Ich benutze einen Atiny15 und würde gerne die Taktfrequenz anheben, da 
er zur zeit nicht mit den angegeben 1,6Mhz läuft sondern nur mit 
1,12Mhz.

Aus dem Datenblatt habe ich ja entnommen das das mit dem OSCCAL-register 
möglich ist. wenn ich das datenblat richtig gelesen habe erhöht sich der 
derzeitige takt (in dem fall die 1,12Mhz) um je ein 1% wenn ich das 
OSCCAL-register um 1 erhöhe...IST DAS RICHTIG ???

Ich habe mir einen wert von 42 errechnet der in dem falle nötig wäre um 
den Prozessor auf die 1,6MHz zu bekommen aber nüscht is hab gerade ma 
1,3Mhz oder so

DESHALB MEINE FRAGEN !!!
- Wie berechnet man den wert der ins OSCCAL mus ???
-Gibt es eine bestimmte stelle im Program wo das gemacht werden muss ???
-Stimmt es das man den wert nich zu hoch wählen sollte, das das den 
Prozessor beschädigen könnte ???

Vielen dank schon ma im Vorraus
MFG Rene
Gast #790842
Lesenswert?

Hi,

>um je ein 1% wenn ich das OSCCAL-register um 1 erhöhe
ist mir nicht klar wo Du das her hast. Das Datenblatt sagt nur: "the 
system clock rate can be tuned with less than 1% steps of the nominal 
clock."
Also weniger als 1 Prozent.

Wenn Du genau liest, ist eigentlich nirgendwo ein definitiver Wert 
angegeben.

>das das den Prozessor beschädigen könnte
Da weiss ich auch nicht wo Du das her hast. Im Datenblatt steht 
sinngemäß nur das es zu Fehlfunktionen "Malfunction" aber nicht zu 
Beschädigungen "Damage" kommen kann.

Wenn also 42 zu wenig ist, dann probier es einfach mal mit einem höheren 
Wert.
Aus der Frequenz bei 42 kannst Du Dir ja die tatsächliche Auflösung 
ausrechnen. Ist die 42 eigentlich dezimal oder hex? Denk, dran das macht 
einen Unterschied.

Gruss
Oops
OP #790910
Lesenswert?

Die 42 ist Dez also 2C in Hex :D
Also wie es aussieht, mus ich rumprobieren da es nicht möglich ist den 
wert zu errechnen den die angabe von unter 1%....läst ja viel speilraum

Bleibt mir woll nur Probiren Probiren Probieren und Ozzi ranhängen und 
so lange dran rumstellen bis did passt :D

Vielen Dank für eure schnelle Hilfe !!!
#791270
Lesenswert?

Oops wrote:

> Nein. Du musst nicht endlos rumprobieren.
> Stichwort: Binäre Suche (Google).
>
> Bei 8 Bit hast Du spätestens nach 8 mal probieren die Lösung.

Nicht ganz. Bei etlichen AVRs ist der Oszillator so spezifziert, dass 
ein höherer Wert nicht unbedingt eine höhere Frequenz liefert. Nur jeder 
um 2 höhere Wert muss laut Spec eine höhere Frequenz liefern. Um den 
Zielbereich herum muss mal also etwas ausprobieren.
Gast #791483
Lesenswert?

@Benedikt:

Nur damit ich das letzte Wort habe ;-):

>Nur jeder um 2 höhere Wert muss laut Spec eine höhere Frequenz liefern.
Nicht beim Tiny15. Oder wo steht das?

Ansonsten wären es eben 7 Schritte binärer Suche plus einmal 
ausprobieren :-)

Ich hoffe Du nimmst das so witzig wie es gemeint ist, Bendedikt.

Gruss
Oops
#791597
Lesenswert?

Rene Schir wrote:
> wie bei acht bit nur 8 mal probieren ???

Ja, indem man anfängt und z.B. den Wert 128 reinschreibt. Dann prüft man 
ob die Frequenz zu hoch oder zu niedrig ist.
Wenn zu hoch, dann löscht man die 128 wieder. Im nächsten Schritt 
schreibt man 64 zusätzlich rein (also 64 oder 192 je nach vorherigem 
Ergebnis). Man prüft wieder usw.
So macht das auch der ADC.

> Ich dachte ich kann das register von 0 bis 255 beliebig beschreiben ???

Ja, kann man auch machen, dauert nur länger.

Allerdings ist die schnelle Version eigentlich nicht zulässig. Irgendwo 
steht, dass man die Werte nicht sprunghaft ändern sollte, auch wenn ich 
damit bisher noch nie Probleme hatte.
Gast #791623
Lesenswert?

@Benedikt

>...wenn ich damit bisher noch nie Probleme hatte.
Ich eben auch nicht. Das mit dem rumprobieren um ein paar Schritte links 
und recht erinnere ich allerdings auch.

Naja, haben wir halt beide ein bischen recht. ;-)

Gruss
Oops
Gast #791642
Lesenswert?

@Rene

Pass übrigens mit der Temperatur auf. Die hat einen recht starken 
Einfluss auf die Oszillatorfrequenz.
Die von Hauke angeregte Synchronisation mit einem externen Takt, sei es 
auch die UART-Komminkation musste ich schon öfter anwenden.
Die Frequenz ist, glaube ich 25°C spezifiziert. Da Du wahrscheinlich 
etwa 21°C bei Dir zu Hause hast, ist die "Abweichung" die Du beobachtest 
normal.

Gruss
Oops
Gast #791660
Lesenswert?

@Rene:

>Ich hab auch mal was gemacht :
Wie, du hast was gemacht? Bist D R.Tschaggelar?

>Nur so nebenbei. Man muss jeden Einzelnen AVR kalibieren, kann den Wert
>nicht auf das naechste Exemplar uebertragen.
Ist bekannt. Stellen wir hier die Fragen oder Du? ;-)

Gruss
Oops
#791668
Lesenswert?

Wenn der ATtiny jungfräulich ist, kann man das Kalibrationsbyte aus dem 
letzten Flash-Wort auslesen und nach OSCCAL schreiben, dann sollten die 
1,6MHz ungefähr stimmen.
Das wurde extra für die Serienproduktion so vorgesehen.

Wenn man ihn aber schon gelöscht hat, muß man es per Programmer 
auslesen.

Die neueren AVRs schreiben es aber automatisch beim Reset rein, da muß 
man garnichts machen.


Peter
#792675
Lesenswert?

#2347188
Lesenswert?

Hallo Peter!

Du schreibst:
>>Wenn der ATtiny jungfräulich ist, kann man das Kalibrationsbyte aus dem
letzten Flash-Wort auslesen und nach OSCCAL schreiben, dann sollten die
1,6MHz ungefähr stimmen.
Das wurde extra für die Serienproduktion so vorgesehen.<<


Ich verwende einen AT90PWM316 und betreibe mehrere RGB-Leds, die ich per 
Funk (2,4GHz Funkmodul) alle 6 Sekunden synchronisiere.

Mein Problem ist nun, das die internen Oscillatoren nicht genau 
schwingen (also zwischen 7,9 und 8,1 MHz).
Dadurch laufen auch die LEDs nicht synchron.

Kann ich den Controller mit dem Kalibrationsbyte kalibrieren?
Und wie geht das?

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