Uhrenquarz 32767 Hz

Neuuser

Mitglied
11. Aug. 2008
465
0
16
Sprachen
Hallo Leute,
noch eine frage, ich habe mehrere Projekte die mit einem Uhrenquarz ausgestattet sind und die Uhr zum Ticken bringen,aber nun habe ich festgestellt das die zeit ungefähr bei 1-1/2 Monaten um 15 Minuten zu schnell läuft, wie kommt da,,s habe ich nicht den richtigen Quarz, oder ist da ein Fehler im Programm zum Timer ?
Ein Programm habe ich mal mit dran gehangen, vielleicht kennt einer das Problem und sieht sofort woran es liegen kann.

Gruß Neuuser M.
 

Anhänge

  • m168def.bas
    20,6 KB · Aufrufe: 74
Hallo Neuuser!

Gleich vorweg.....
Ich habe mir dein Programm noch nicht angesehen!


Das aber deine Uhr nicht ständig genau geht, wenn du nur einen Uhrenquarz verwendest, ist ganz normal!

Ich denke auch, dass du dich im Betreff nur vertippt hast und einen 32,768 kHz Quarz gemeint hast. ;)

Sollte es nicht so sein, dann ersetze den Quarz gegen den richtigen Wert.
Wüsste aber gar nicht, dass es einen 32,767 kHz Quarz gibt. :hmmmm:

Was ich allerdings festgestellt habe......
Wenn dein AVR mit der internen 1MHz Clock arbeitet, dann sind die zeitlichen Differenzen größer.
Nimmst du hingegen z.B. einen erxternen 4 MHz Quarz, dann läuft sie länger richtig.


Wenn ich nachher etwas mehr Zeit habe, dann schaue ich mir dein Programm mal an. Vielleicht versteckt sich darin ja doch noch eine Schleife (oder Sub) die eine kleine Verzögerung verursacht.


Grüße,
Cassio
 
Hallo,

wenn Du den Uhrenquarz (32768Hz) an die TOSC-Eingänge anschließt, kannst Du eine recht genaue Software-RTC aufziehen. Die läuft dann unabhängig von dem Quarz für den ATmega. Sogar so genau, das manch eine Armbanduhr nicht mit kommt. Du kannst sie sogar ganz genau machen, indem Du mit den beiden Kondensatoren am Uhrenquarz den Quarz etwas ziehst.

Diese beiden Zeilen Code reichen aus :

Code:
Config Clock = Soft , Gosub = Sectic
Config Date = Dmy , Separator = .
.
.
.
Sectic:
     NOP!

Thomas
 
Ich hatte das Problem auch mal, allerdings war das mit einem ATMEGA8. Bei dem hat damals geholfen, jeweils einen zusätzlichen 22pF gegen GND an die OSC-Pins dran zu machen - war ein Fehler in bestimmten Revisionen, weil da funktionierte es mit der CKOPt nicht vernünftig... Habe aber davon jetzt nichts im Datenblatt des 168 gelesen...
 
Hallo Leute,
ja es ist natürlich der 32768 bestimmt vertippt, es funktioniert aber das Gosub = Sectic nicht, er verlangt eine Definierung für Sectic, hast du vielleicht ein komplettprogramm wo ich mir das ansehen kann.
Ich dachte die Kondensatoren sind überhauptnicht notwendig bei einem Uhrenquarz ?


Gruß Neuuser M.
 
Hallo Neuuser!

Nun ja, so schwer ist das mit der Sectic doch gar nicht! ;)

Wenn du z.B. in der Sectic einen Port toggelen lassen möchtest, dann würde das so aussehen:

Code:
' Uhreinstellungen
Config Date = Dmy , Separator = .
Config Clock = Soft , Gosub = Sectic

...

Do
' Irgendein Programmablauf
Loop

Sectic:
Toggle PORTB.1
Return

Das ist schon alles!
Nun würde jede Sekunde (beim automatischen Aufruf der Sectic-Subroutine) der logische Zustand von Port B.1 wechseln. :)


Zu beachten wäre vielleicht noch, dass du in der Sectic keine großen Aufgaben erledigst und diese relativ schnell abgearbeitet werden kann.
Es ist meist angenehmer eine Art "Puls" zu erzeugen und mit dieser Variable dann weiter zu arbeiten.

Zum Beispiel so:

Code:
' Uhreinstellungen
Config Date = Dmy , Separator = .
Config Clock = Soft , Gosub = Sectic

Dim Puls As Bit
...

Do

If Puls = 1 Then
PORTB.1 = 0
Else
PORTB.1 = 1
End if

' Weiterer Programmablauf

Loop

Sectic:
Toggle Puls
Return


So weit alles verstanden? :hmmmm:

Gruß,
Cassio
 
Hi Cassio,
So weit alles verstanden?
nee nicht wirklich, jetzt stelle ich mich wieder mal bissel glatt an :eek:
ich brauche doch kein Port den ich für die Uhr Togglen lassen muss, du schreibst in dein zweites Programm Toggle Puls, muss ich Puls nun in die Uhr mit einarbeiten ??

Gruß Neuuser M.
 
Hallo Neuuser!

Du solltest meine Zeilen schon genau lesen! ;)

In beiden Fällen habe ich z.B. bzw. zum Beispiel geschrieben!!!

Das bedeutet, dass du dies machen kannst.... musst es aber nicht so machen!
Es sind lediglich Beispiele!

Was du in deiner Sectic-Routine machst bleibt dir überlassen!

Ich wollte dir damit nur zeigen, wie du die Sectic-Routine nutzen könntest und das sie von der Verarbeitung her sehr kurz sein soll!


Damit es für dein Programm passt, musst du jetzt nur die "Parallelen" entdecken und dein Hrin etwas anstrengen. ;)


Ich bin mir sicher, du kommst da ganz schnell von alleine drauf.

Gruß,
Cassio
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)