www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik errechen von OSCCAL wert?


Autor: Rene Schir (gigastulle)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hauke Radtki (lafkaschar) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erstens:
Falsches Forum, hat in der Codesammlung nix zu suchen.

Zweitens:
Im Datenblatt ist eine Kurve angegeben wie sich der Takt mit dem OSCCAL 
Wert verändert. diese Kurve ist glaub ich exponentieller Natur.

Autor: Oops (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Oops (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Hauke,

nein, nicht im Tiny15 Datenblatt.
Aber sehr wahrscheinlich nicht-linear.

Gruss
Oops

Autor: Hauke Radtki (lafkaschar) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm ok ich bin jetzt von den Controllern ausgegangen die ich sonst immer 
nutze und hatte das im Kopf das da nen OSCCAL vs. FREQUENCY Diagramm 
drin war, hab jetzt nicht noch nmal explizit in das tiny15 Datenblatt 
geguckt.

Autor: Rene Schir (gigastulle)
Datum:

Bewertung
0 lesenswert
nicht 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 !!!

Autor: Hauke Radtki (lafkaschar) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei Atmel auf der Homepage gibts außerdem irgendwo ne Application Note, 
wie man den internen Takt per OSCCAL auf einen externen Takt 
synchronisieren kann.

Autor: Oops (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Rene:

>Probieren Probieren Probieren

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.

Gruss
Oops

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Oops (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oops wrote:

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

Das steht in irgendeiner AppNote. Da wird das erwähnt, dass man nicht 
nur +/-1 machen soll, sondern auch den Umkreis ein kleinwenig absuchen 
soll.

Autor: Rene Schir (gigastulle)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie bei acht bit nur 8 mal probieren ???
Ich dachte ich kann das register von 0 bis 255 beliebig beschreiben ???
oder darf ich immer nur eine 1 schreiben und mus die dann im register 
hin und her schieben ??? man jetzt bin ich aber verwirt

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rene Schir (gigastulle)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja gut klingt lögisch :D Danke werd did ma Probieren :D

Autor: Oops (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Oops (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Werd's mir doch nicht mit dem RFM Spezi verderben.

Gruss
Oops

Autor: Rene Schir (gigastulle)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok wenn ihr beide ein bischen recht habt dann danke ich euch beiden ein 
bischen LOL

Autor: Oops (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Oops (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oops:

grosser Einfluß

Kommunikation

Frequenz ist, glaube ich BEI 25°C spezifiziert

Gruss
Oops

Autor: rene (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab auch mal was gemacht :
http://www.ibrtses.com/embedded/avrosccal.html

Nur so nebenbei. Man muss jeden Einzelnen AVR kalibieren, kann den Wert 
nicht auf das naechste Exemplar uebertragen.

Autor: Oops (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum nehmt Ihr nicht einfach den Calibrationswert, den der Hersteller 
für jedes Exemplar ermittelt und im H-Byte der Adresse 0 des 
Signature-Bereiches dauerhaft abgelegt hat?

...

Autor: Oops (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Geht leider nicht. CAL-Byte im Flash ist für 25°C bei 5V.

Gruss
Oops

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oops wrote:
> Geht leider nicht. CAL-Byte im Flash ist für 25°C bei 5V.

Oha, ein Glaskugelbesitzer.

Rene hat ja nicht gesagt, daß er ihn nicht bei 5V betreiben will.


Kannst Du noch andere Sachen hellsehen, ich hätte da Interesse.


Peter

Autor: Oops (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peter

Er hat auch nicht gesagt, das er ihn bei 25°C betreiben will.
Habe noch ne zweite Glaskugel.

Oh, muss eben noch Lotto abgeben.

Gruss
Oops

Autor: Rene Schir (gigastulle)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hannes Lux wrote:
> Warum nehmt Ihr nicht einfach den Calibrationswert, den der Hersteller
> für jedes Exemplar ermittelt und im H-Byte der Adresse 0 des
> Signature-Bereiches dauerhaft abgelegt hat?
>
> ...

Und wie geht das ??? verstehe irgend wie nur Bahnhof :(

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rene Schir wrote:
> Hannes Lux wrote:
>> Warum nehmt Ihr nicht einfach den Calibrationswert, den der Hersteller
>> für jedes Exemplar ermittelt und im H-Byte der Adresse 0 des
>> Signature-Bereiches dauerhaft abgelegt hat?
>>
>> ...
>
> Und wie geht das ??? verstehe irgend wie nur Bahnhof :(

Beitrag "Re: DCC Decoder"
Beitrag "Re: Oscillator Calibration Byte"
Beitrag "Re: Attiny 15+Assembler-Problem"
http://www.mikrocontroller.net/search?query=calibr...

...

Autor: H. G. (ledi)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
H. G. schrieb:

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

Einfach das OSCCAL Register beschreiben. So wie es im Datenblatt steht.
Den Wert musst du durch Versuch und Irrtum bestimmen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.