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?
Da ist definitiv was an Deiner Timerroutine faul. Ein 4MHz Quarz darf nicht mehr als +/-200Hz abweichen. Peter
Oder Du benutzt garnicht den externen Quarz, sondern den internen RC-Oszillator. Der hat solche Schwankungen locker. Sind alle Fuses richtig gesetzt? Stefan
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.
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
@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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.