Hi, hab grad ein kleines Verständnisproblem. Hab auf dem AT90S8515 versucht, mit dem Timer1 zu Testzwecken ein 1-Sekunden-Takt zu generieren. Dazu hab ich erst einmal den Prescaler auf 1024 gesetzt, zusätzlich die Option, dass bei Compare Match der Zähler auf 0 rückgesetzt wird, das Compare Match Register A mit dem zu erreichenden Wert geladen, den IRQ für Output-Compare-A freigegeben und danach den globalen IRQ freigegeben. Nur tut das Teil überhaupt nix. Wenn ich den Timer-Overflow IRQ aktiviere, dann bekomme ich einen IRQ (weiß nur nicht, wann) und dann ist tote Hose. Hat jemand schonmal mit Timer 1 gearbeitet und ´hat vielleicht ne Idee, wie das zu lösen wäre? Gruß, ERDI - Soft. P.S.: Würde gerne das Programm mitposten, liegt aber leider daheim auf der Festplatte. (Macht das ganze wohl leider etwas komplizierter.)
Hi! Viel fällt mir da momentan nicht ein, aber - deine Int.Tabelle stimmt? - Stack ok.? - schon simuliert? Was bedeutet "und dann ist tote Hose."? MFG Uwe
Nur ergaenzend zu Uwe: "overflow" sollte der richtig Ansatz sein, funktioniert zumindest bei mir wie erwartet. Mglw. ein ret statt reti am ende des Int-Handlers? Zaehlregister wieder auf Anfangswert gesetzt? Timer 1 ist soweit ich mich erinnere ein 16-bit Timer, erstmal mit einem 8-bit Timer probieren. Wie Uwe schon schreib: simulieren (Prescaler klein, Zaehler kurz vor $FF, sonst muss man zu lange warten im Studio4 Simulator, Breakpoint in den Int-Handler)
Danke für eure Hilfe, funktioniert mittlerweile. Hab den Programmteil mal als eigenständiges Programm kompiliert, da liefs dann. Nachdem ich den Teil rausgenommen habe, der die Relais schaltet, hats auch im anderen Programm funktioniert. Bin aber fast verzweifelt, als ich das ganze simuliert habe. Arbeite in dem Programm mit Flags. Nur sind die Flags nicht ständig neu gesetzt worden, sondern hatten immer nen statischen Wert. Dadurch wurden einige Routinen halt nicht ausgeführt. Aber hauptsache, es geht jetzt. @Uwe: Mit tote Hose meinte ich, dass die Relais nicht geschaltet haben. Hatte testweise die Relais ein-aus geschaltet, um zu testen, ob das Programm überhaupt funktioniert, oder meine Anzeigeroutine nicht geht. Gruß, ERDI - Soft.
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.