DCF 77 in C bei ca. 300 Byte ATTINY ?

Gast #1096549
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
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
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
Gast
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
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.