Forum: Compiler & IDEs 4MHz Quarz ungenau auf 2-3 Sec pro Minute


von Frank (Gast)


Lesenswert?

Als Einarbeitungsprojekt wurde eine Uhr gewählt. Das Display besteht aus
4x 7 Segment Anzeigen mit gemeinsamem 74LS47. Dieser wird im
Multiplexbetrieb per PortB angesprochen. Um neben der Steuerung vom Mux
eine saubere Zeitbasis zu erhalten habe ich den Timer 0 im TIM0_OVF
IRQ-Modus eingesetzt. Dieser zählt beim 256er Teiler 61 mal bis zum
Überlauf und dann noch 9 Schritte weiter.

Als Zeitbasis wird ein 4MHz Quarz (Standardmodell von Reichelt) gewählt
und auf dem STK500 bestückt. Die Uhr geht pro Minute auf 2-3 Sekunden
nach.

Kann die Toleranz am unabgeglichenen Quarz (ohne Trimmer direkt auf dem
STK500) so groß sein oder ist eher ein Fehler im Code verantwortlich?

von Peter D. (peda)


Lesenswert?

Da ist definitiv was an Deiner Timerroutine faul.

Ein 4MHz Quarz darf nicht mehr als +/-200Hz abweichen.


Peter

von Stefan (Gast)


Lesenswert?

Oder Du benutzt garnicht den externen Quarz, sondern den internen
RC-Oszillator. Der hat solche Schwankungen locker. Sind alle Fuses
richtig gesetzt?

Stefan

von Frank (Gast)


Lesenswert?

Benutze den AT90S8515. Im Datenblatt habe ich keinen Hinweis auf den RC
Oscillator gefunden. Dies scheinen nur die moderneren Typen zu
besitzen. Der Jumper auf dem STK ist okay.

Folglich muß was an meinem Code fehlerhaft sein. Versuche, den Fehler
zu finden.

von BernhardT (Gast)


Lesenswert?

Wiso stimmt doch: 0,25 usec *255*(255+9)*61 = ca. 1,02663 sec. also 2-3
% zu langsamm ;-)
Ne mal im ernst, schau es dir doch einfach mal auf dem Simulator  (z.B.
AVR-Studio an) - da kannst du auch die Zeit mit stoppen lassen.
Gruß Bernhard

von UBoot-Stocki (Gast)


Lesenswert?

@BernhardT

Hmmm...

irgendwie kann ich dieser Formel nicht folgen ?!

Bitte erkläre mir was Du mit +9 und *61 meinst !

Gruß

UBoot-Stocki

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
Noch kein Account? Hier anmelden.