Op 5 september 2006 21:50:15 schreef pros:
[...]
Hier kost dat processortijd, hoor. 
Het hangt er natuurlijk van af, welke DCF77-module je hebt; mijn exemplaar levert enkel een PWM-signaal, waarvan je dan weer de lengte moet meten en de bits moet samenstellen tot tijd en datum. Te veel werk voor een tijdsbron, die soms onbruikbaar is...
Processortijd???
Een DCF77-frame bestaat uit 59 bits data verspreid over één minuut.
M.b.v. mijn DCF77 beat statusLEDje kan ik het DCF frame in real time noteren, ik heb alleen iets meer tijd nodig om de data uit mijn hoofd te decoderen, een microcontroller heeft daar dus totaal géén moeite mee...
De meeste DCF77-modules leveren idd "raw data" (100msec puls=0, 200msec puls=1) zoals de DCF-module van Conrad (641138).
In mijn LED klok code genereer ik een interrupt om de 2msec.
Bij elke interrupt verzorg ik de multiplexing en update van de 6 digits.
Om de twee interrupts (4msec) spring ik naar de DCF77 bit-en datadecodeerroutine mèt pariteitscontrole (tijd + datum), en de 24-uurs autonome klok/kalenderroutine.
De bitdecodeerroutine checkt of een binnenkomend signaal 100 of 200msec lang is (0 of 1), met een tolerantie van 30% op de 100/200msec waarde, en geeft deze dan door aan de datadecodeerroutine die afhankelijk van het bitnummer (0 tot 59) in het DCF-frame dit bit in de juiste variabele binnenschuift en de pariteitscontroles uitvoert.
Bij ontvangst van correcte DCF77-frames wordt de autonome 24-uursklok elke minuut op exact seconde 00 gesynchronizeerd met DCF77.
Mijn main routine bestaat enkel uit A/D conversie van de LDR-weerstandswaarde voor de automatische helderheidsregeling + proportionele PWM-sturing van de displays, en inscannen van twee drukknopjes (+ een scroll routine bij omschakelen van tijd naar datum of omgekeerd).
95% van de complete code wordt dus uitgevoerd in de interruptroutine. Ik heb nog reserve, bij 2msec interrupt mag de interruptroutine +/- 2Kbyte aan code bedragen vooraleer een nieuwe interrupt gegenereerd wordt (ik ben actueel aan +/-1.3Kbyte).
De complete code bedraagt +/- 1.6Kbyte.
CD 
PS: Onnodig te vermelden dat dit alles in PIC-assembler gecodeerd is...