Atmega1284p 128KHz ungenau

#6980700
Lesenswert?

Hallo zusammen,
weiß jemand, wie genau der 128KHz Oszillator im atmega1284p ist?
Im Datenblatt habe ich dazu nichts gefunden.
Ich plane, damit eine Digitaluhr zu bauen, allerdings verliere ich 
mehrere Sekunden pro Minute.
Vielen Dank für eure Ratschläge.
Ich hänge den Code an, falls irgendwo ein Fehler drin ist, der dafür 
verantwortlich sein könnte
Angehängte Dateien:
#6980704
Lesenswert?

David P. schrieb:
> weiß jemand, wie genau der 128KHz Oszillator im atmega1284p ist?

Nicht sonderlich, so um die +/-10%, eher schlechter.

> Im Datenblatt habe ich dazu nichts gefunden.
> Ich plane, damit eine Digitaluhr zu bauen,

Schlechte Idee.

> allerdings verliere ich
> mehrere Sekunden pro Minute.
> Vielen Dank für eure Ratschläge.

Nimm einen 32kHz Uhrenquarz und betreibe den am Timer 2 asynchron.

AVR - Die genaue Sekunde / RTC
Gast #6980799
Lesenswert?

David P. schrieb:

> weiß jemand, wie genau der 128KHz Oszillator im atmega1284p ist?

Ziemlich ungenau.

> Ich plane, damit eine Digitaluhr zu bauen, allerdings verliere ich
> mehrere Sekunden pro Minute.

In Relation zu der Anforderung, die ich an eine "Uhr" stellen würde, 
katastrophal ungenau.

> Im Datenblatt habe ich dazu nichts gefunden.

Da musst du wohl deine Fähigkeiten bezüglich des Lesens eines 
Datenblatts noch deutlich erweitern...
Gast #6981015
Lesenswert?

Es stimmt ja so ungefähr; ebenso wie die Angabe 8 MHz für den anderen 
(genaueren) RC-Oszillator - es kommt eben auf die Anforderungen des 
Anwenders an.

Vielleicht noch zwei Zitate aus dem Datenblatt:
"... providing a clock of 128kHz. The frequency is nominal at 3V and 25 
°C"
"Note that the 128kHz oscillator is a very low power clock source, and 
is not designed for high accuracy" - aber was ist schon unter Letzterem 
zu verstehen!?
Gast #6981173
Lesenswert?

Georg M. schrieb:
> Ja, das ist eine interessante Frage, warum die Watchdog Oscillator
> Frequency durch ihren höchstmöglichen Wert repräsentiert wird.

Finde ich völlig uninteressant. Ausserdem ist es nicht der Höchstwert, 
sondern, wie schon weiter oben angedeutet, ein Durchschnittswert.
(Firma: Funkenflug Industries) #6981366
Lesenswert?

Die internen RC-Oszillatoren kann man für alle zeitkritischen Dinge 
vergessen. Die sind ungenau und driften mit diversen Einflüssen wie der 
Temperatur. Ich hab damit mal RS-232 probiert, kannste knicken. Sehr 
langsam geht (will man aber nicht) und bei hohen Bitraten gibts mehr 
Fehler als fehlerfreie Bytes.
Gast #6981452
Lesenswert?

Georg M. schrieb:
> Ja, das ist eine interessante Frage, warum die Watchdog Oscillator
> Frequency durch ihren höchstmöglichen Wert repräsentiert wird.

Das ist der wesentliche Wert, der für einen Watchdog interessant ist, 
weil die höchstmögliche Frequenz festlegt, nach welcher Zeit minimal ein 
Watchdog Reset ausgelöst werden würde.

Dyson schrieb:
> Finde ich völlig uninteressant. Ausserdem ist es nicht der Höchstwert,
> sondern, wie schon weiter oben angedeutet, ein Durchschnittswert.

Dann kannst du diese Aussage bestimmt auch durch einen Verweis aufs 
Datenblatt belegen. Ansonsten würde ich die mal ganz deutlich als 
Falsch bezeichnen.

Hast du schon mal im Datenblatt ins Kapitel 27.11 Internal Oscillator 
Speed geguckt?
Die typischen Werte liegen alle deutlich  unter den 128kHz.
RTFM
Gast #6982904
Lesenswert?

Wolfgang schrieb:
> Dann kannst du diese Aussage bestimmt auch durch einen Verweis aufs
> Datenblatt belegen. Ansonsten würde ich die mal ganz deutlich als
> Falsch bezeichnen.

Kann ich nicht und will ich auch nicht. Warum sollte ich auch? Weil du 
hier den großkotzigen Schlaumeier machst? Die Aussage bezog sich 
eindeutig auf die Aussage 2 Beiträge zuvor. Ausserdem schreibt man 
falsch klein und auch fettgedruckt ist es grossgeschrieben falsch. Oder 
was willst du damit zum Ausdruck bringen? Dass es besonders falsch ist?

Wolfgang schrieb:
> RTFM

Wer oder was bist du eigentlich?
Gast #6982954
Lesenswert?

Ben B. schrieb:
> Die internen RC-Oszillatoren kann man für alle zeitkritischen Dinge
> vergessen. Die sind ungenau und driften mit diversen Einflüssen wie der
> Temperatur. Ich hab damit mal RS-232 probiert, kannste knicken.



> Atmega1284p
Ohne jetzt wirklich das Datenblatt geprüft zu haben....

Üblicherweise, ist der WDT zu ungenau für eine Uhr.
Der interne RC Oszillator (für den µC Takt) ebenso. Macht sogar u.U. mit 
der UART Probleme.

Also macht es Sinn, den ATMega mit einem Uhrenquarz zu versehen, wenn 
man denn halbwegs genau mit der Zeit sein möchte.

Hat man das getan, kann man den µC durchaus mit 8MHz intern laufen 
lassen, und diese Frequenz, anhand der Uhr, kalibrieren (OSCCAL?). Dann 
klappts auch mit der Baudrate viel besser.
Gast #6982968
Lesenswert?

Wolfgang schrieb:
> Psst, nicht weitersagen: S. 353
> https://ww1.microchip.com/downloads/en/DeviceDoc/doc8059.pdf

Das sind aber nur typische Werte, die in der Realität schon nochmal 
ordentlich abweichen können. Atmel/Microchip verweigert hier (auf auf 
interne Nachfrage) sehr hartnäckig irgendwelche Toleranzangaben.



Bei der neuen (na ja, mittlerweile nicht mehr ganz so neuen) AVR-1 Serie 
wird ein "full-opteration range" von +-30% genannt. Aber auch das ist 
nicht zu 100% nachgemessen, sondern nur charakterisiert. Bei einem 
Betriebspunkt Vcc=3.0V und +25% werden (überprüfte) +-3 % genannt.
z.B. 
https://ww1.microchip.com/downloads/en/DeviceDoc/ATtiny417-814-816-817-DataSheet-DS40002288A.pdf 
Seite 511

Gruß

Robert
Gast #6982979
Lesenswert?

EAF schrieb:

> Also macht es Sinn, den ATMega mit einem Uhrenquarz zu versehen, wenn
> man denn halbwegs genau mit der Zeit sein möchte.
>
> Hat man das getan, kann man den µC durchaus mit 8MHz intern laufen
> lassen, und diese Frequenz, anhand der Uhr, kalibrieren (OSCCAL?). Dann
> klappts auch mit der Baudrate viel besser.

Moderne AVR8 können diese Autokalibrierung teilweise sogar selbstständig 
in Hardware leisten. Man muss das nur noch aktivieren. Z.B. die 
AVR128Dxyyy.
Gast #6984366
Lesenswert?

Also mit Verlaub: Ihre Beschreibung ist mehr als dürftig, sie ist nahezu 
unbrauchbar.

Trotzdem ein Versuch:
> Auch das hab ich grad versucht

So?
Dann mal die letzte Zeile der ISR ('while(ASSR...') kopieren und zu 
Beginn zwischen 'OCR2A=...' und 'TIMSK2>=...' einfügen.
#6984405
Lesenswert?

Dietrich L. schrieb:
> David P. schrieb:
>> Leider leuchtet keine LED. Das wäre der Code.
>
> Dann lies mal diese Stelle in "deinem" Programm:
>
1
>   while(1)
2
>   {
3
>     /*Hier kann die aktuelle Zeit
4
>       ausgeben werden*/
5
>   }
6
>

Da hab ich wohl den falschen Code geschickt. Bei mir stand da schon das:
1
PORTD=sekunde;

und vor der While schleife hab ich auch schon port d als output 
festgelegt
Gast #6984458
Lesenswert?

Was mir noch einfällt: bei mir hier läuft der ATmega1284P mit den 
Standardfuses, also auf 1 MHz - falls bei Ihnen noch der 128 
kHz-Oszillator eingeschaltet sein sollte:
  "Asynchronous Operation of Timer/Counter2 ...  The CPU main clock 
frequency must be more than four times the Oscillator frequency"

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