DCF 77 in C bei ca. 300 Byte ATTINY ?

Gast #1096549
Lesenswert?

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
Gast #1096560
Lesenswert?

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
Gast #1096754
Lesenswert?

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
#1096934
Lesenswert?

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
Gast #1097174
Lesenswert?

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
Persönliche Seite #1097182
Lesenswert?

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).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren