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
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.
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
Hallo Hauke, nein, nicht im Tiny15 Datenblatt. Aber sehr wahrscheinlich nicht-linear. Gruss Oops
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.
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 !!!
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.
@ 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
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.
@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
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.
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
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.
@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
Ok wenn ihr beide ein bischen recht habt dann danke ich euch beiden ein bischen LOL
@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
Oops: grosser Einfluß Kommunikation Frequenz ist, glaube ich BEI 25°C spezifiziert Gruss Oops
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.
@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
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
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? ...
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
@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
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 :(
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=calibrationsbyte&forums%5B%5D=1&forums%5B%5D=9&forums%5B%5D=10&forums%5B%5D=2&forums%5B%5D=4&forums%5B%5D=3&forums%5B%5D=6&forums%5B%5D=17&forums%5B%5D=11&forums%5B%5D=8&forums%5B%5D=14&forums%5B%5D=12&forums%5B%5D=7&forums%5B%5D=5&forums%5B%5D=18&forums%5B%5D=15&forums%5B%5D=13&forums%5B%5D=16&max_age=-&sort_by_date=0 ...
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?
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.
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.