mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik richtiger Quarz für Clock...


Autor: Marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi zusammen,

ich hoffe es kann mir einer von euch helfen.
ich finde keinen richtigen quarz für mein board.
was ich vor habe ist eine clock zu intergrieren habe aber an meinem 
controller keinen eingang für einen 32.768khz quarz somit bin ich auf 
den hauptquarz angewiesen...ich bekomme immer total schiefe werte...das 
passt mir überhaupt nicht...gibt es überhaupt einen passenden?? wenn ja 
sollte der zwischen 4 und 8 mhz liegen. danke für eure hilfe.

gruß,
marcel

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ist doch nur ne Softwarefrage, dürfte mit jedem beliebigen Quarz gehen. 
Die MC-Quarze sind allerdings nicht besonders genau, zumindest nicht 
die, die man für wenige Cent bei Reichelt und Co kauft.

Autor: Marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wo bitte schön ist ein 4Mhz genau??

beim 8bit timer und einem teiler 1024 komme ich auf 65,536 ms.wie soll 
ich denn da auf eine sekunde kommen ohne das mir die uhr am tag ein paar 
sekunden wegläuft?

Autor: thkaiser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man kann den Timer mit einem Wert vordefinieren. In jedem Interrupt wird 
dieser Wert wieder in den Timer hineingeschrieben - damit kann man sogar 
Ungenauigkeiten des Quarz ausgleichen, die Uhr also kalibrieren. Noch 
einfache ist es, wenn Du den 16-Bit Timer (Timer1) des Atmel benutzt und 
mit dem Compare-Interrupt arbeitest. Es gibt eine Option, die den Timer1 
in diesem Fall gleich löscht. So kann man aus einem beliebigen Quarz 
beliebige Frequenzen erhalten. Im Datenblatt ist alles beschrieben.
Ansonsten Quarze benutzen, deren Freqenz eine 2er-Potenz ist. Es gibt 
nicht viele, aber es gibt sie.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Markel,

Du kannst jeden Quarz nehmen und trotzdem eine hochgenaue Uhr damit 
bauen.

Kein Mensch kann nämlich erkennen, ob Dein Sekundentakt wirklich genau 
ist. Du must also nur verhindern, daß sich diese kleinen Fehler 
addieren.
Und das geht sehr einfach:

http://www.specs.de/users/danni/appl/soft/clock/timebase.htm

Die C-Routine hat den Vorteil, daß sie alle Korrekturrechnungen 
selbsttätig ausführt.
Du must also nur die genaue Quarzfrequenz eintragen.

Theoretisch erreichst Du damit nur wenige Sekunden / Jahr. Praktisch 
wirds durch Temperaturschwankungen etwas mehr sein.


Peter

Autor: Marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dank erstmal peter.
also ich hab mir den code mal angeschaut und werde daraus irgendwie 
nicht richtig schlau.
z.b:

void t0_int( void ) interrupt 1
{
  static uchar prescaler = 0;
  union bw i;
  if( --prescaler == 0 ){

du legst ein uchar prescaler in der int routine an mit wert 0. danach 
kommt deine if schleife, in der du erst 1 von prescaler abziehst und 
dann auf 0 vergleichst.
meiner meinung nach kann das innere der if bedingung niemals ausgeführt 
werden weil prescaler vorher immer auf null gesetzt wird und dann noch 1 
abgezogen wird.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Marcel,

static Variablen innerhalb einer Funktion behalten ihren Wert vom 
Verlassen bis zum nächsten Aufruf bei und werden nur einmal vor dem 
main() initialisiert.

Sind quasi wie globale Variablen, bloß eben nur innerhalb der einen 
Funktion sichtbar.


Als Editor nehme ich Borland C++ 3.0, da ist eine schöne deutsche Hilfe 
mit dabei, die sowas auch erklärt.



Peter

Autor: nobody0 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist aber ein bischen übertrieben, denn durch Exemplarstreuung und 
Temperaturschwankungen hat man auch mit nicht billigen Bauteilen eine 
Ungenauigkeit von ca. 1 s pro Tag, selbst wenn man den Quarz genau 
ausmißt. Dazu kommt noch die Alterung.
Mit Temperaturstabilisierung, aktiv gealtertem Quarz und Eichen mit 
mind. 12-stelligem Frequenzzähler kann man es genauer bekommen, aber ein 
DCF-77-Empfänger ist meist billiger.

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.