Hallo Leute, ich programmiere hier an einer Uhr und würd gern noch DCF77 dazu nehmen. Der DCF-Pin müsste gepollt werden (10 ms Timer ist vorhanden) - ich ahbe allerdings nur noch ca. 300 Byte frei (ATTINY2313). An den Code gibt es nur wenige Ansprüche, mir würde es reichen, wenn die Uhr alle Stunde mal mit dem DCF abgeglichen wird. Ist das machbar bzw. hat das schon jemand hinbekommen? Gruez hidalgo
Vielen Dank, aber ich habe das nicht umsonst im GCC Forum gepostet und in den Titel "C" mit reingeschrieben ;-) (ich habe hier auch schon diversen Code im Forum und in der Sammlung angeschaut) Mir geht es um -compiliert ca. 300 Byte Flash (oder sehr klein) -ohne INT0 Benutzung (ist schon vergeben) Gruez
Ob es in 300 Bytes geht, weiss ich nicht. Hängt viel davon ab, was du bereits im Code hast. Arbeitet mit 10ms Timer und per Pollen in der ISR DCF77-Auswertung für Funkuhren http://www.gjlay.de/pub/c-code/dcf77.html
Danke schön! nimmt ca. das doppelte, aber schon nicht schlecht! hidalgo
probier mal meinen code, ich habs auch über polling gemacht hab aber die pausen gepollt (war zuverlässiger)
den Code von Peter hatte ich schon mal so diagonal angeschaut, da wird aber irgendwie an einem Timer "rumgemacht" - da habe ich keine Reserven mehr! Der von "Gast" sieht irgendwie passiger aus(?). Aber ich muss mir das noch genau anschauen - allen Postern erst mal schönen Dank! Gruez
hidalgo wrote: > den Code von Peter hatte ich schon mal so diagonal angeschaut, da wird > aber irgendwie an einem Timer "rumgemacht" - da habe ich keine Reserven > mehr! Der Timer wird ja nicht exclusiv benötigt, sondern man hängt sich in einen bereits benutzten Timerinterrupt mit rein, der ein passendes Intervall ermöglicht. Ganz ohne irgendne Zeitbasis kannst Du DCF-77 nicht dekodieren. Peter
Hallo Peter, mal abgesehen davon, das ich deinen Code noch nicht 100%ig verstanden habe... Du veränderst doch TCNT0 in deinem Programm - oder dient das nur dazu, den 10ms Interrupt aus einem "ungeraden" Quarz zu erzeugen? Meine Idee ist folgende - ich habe einen 10ms Interrupt aus dem Pinchange- (Uhr läuft netzsynchron). Dort könnte ich den DCF Pin abfragen und im Hauptprogamm dann dann die Uhr ab und zu stellen. Als Takt habe ich ansonsten den internen Oszillator. Schönes WE
Hi hidalgo, der obige Assembler-Baustein sieht doch gut aus, er passt von der Registerverwendung jedenfalls in das C-ABI, so daß die Registerverwendung nicht gcc in die Quere kommt. Das Modul von C aus verwenden geht so: 1) Zeug umschreiben von Atmel-asm zu GNU-asm. Ist flott gemacht. 2) Die Daten werden als C-Struct angelegt, dazu nen C-Header schreiben. 3) Als Assembler-Modul dem Projekt hinzufügen, die Hauptfunktion im Header deklarieren und vom C aus aufrufen (wohl die dcf77_start).
Ja, das geht gewiss..... aber ich bin halt nicht so der asm Crack - behalte ich mir als Notvariante vor. Schönes WE
hidalgo wrote: > dient das nur dazu, > den 10ms Interrupt aus einem "ungeraden" Quarz zu erzeugen? Ja. Peter
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.