BLIT2008-Board-DCF77
Aus BraLUG-Wiki
Version vom 12. Dezember 2008, 11:31 Uhr von Bergeruw (Diskussion | Beiträge)
Inhaltsverzeichnis |
Hardware
Schaltplan
Beschreibung
Hier die erste Variante "vom Reissbrett" für ein DCF77-Zusatzboard. Kernstück ist ein ATtiny45 (oder ATtiny85), der autonom das DCF77-Signal eines handelsüblichen DCF77-Modules (z.B. von ELV) decodieren und bereitstellen soll. Natürlich besteht wieder der Anspruch, dass diese Baugruppe an den TWI-Bus des Basis-Boards angeschlossen werden soll, was allerdings dahingehend schwierig ist, dass es kein Hardware-TWI in dem ATtiny gibt. Aber man soll ja, laut Atmel USI dafür benutzen. Na mal sehen, ob das was wird....
Software
- tiny_cs_blink: eigentlich ein sinnloses Programm, aber ganz nützlich, um die Hardware des Tiny-Boards zu testen (dazu muss es via TWI-Bus am BLIT-Board angeschlossen sein). Das Programm besteht aus 2 Teilen:
- Der Tiny-Board-Teil ist in den ATtiny45-Mikrocontroller zu laden. Innerhalb eines Timer-Overflow-Interruptes werden fortlaufend das LED-Pin und das INT-Pin invertiert. Damit blinkt zum einen die LED im Takt des Interruptes und auf der INT-Leitung des TWI-Busses wird ein Impuls erzeugt.
- Im Programm für das BLIT-Board wird lediglich der INT1-Interrupt definiert. Innerhalb der zugehörigen ISR geht die LED auf dem BLIT-Board bei jedem eingehenden Impuls auf der INT-Leitung des TWI-Bus an bzw. aus. Dazu muss natürlich der Jumper auf dem Tiny-Board geschlossen sein. Die Blinkfrequenz der Basis-Board-LED ist halb so hoch wie auf dem Tiny-Board, ist ja auch logisch, wenn mann sich die Programme ansieht... :-).
- tiny_twi: uff, nach ein paar frustrierenden Stunden habe ich es jetzt wohl halbwegs verstanden, wie das mit TWI über USI funktioniert. Wir erinnern uns (bzw. schauen ins Datenblatt...), ein ATtiny25/45/85 hat kein Hardware-TWI sondern nur USI, wo man aber TWI aufsetzen kann (lt. Application Node und Programmbeispiel von Atmel). Vorliegendes Programm setzt dies entsprechend um:
- Tiny-Board: in diesem Teil der Firmware befindet sich die USI-TWI-Slave-Umsetzung. Vordergründig läuft hier ein Timer-Overflow-Interrupt, der zyklisch eine Variable hochzählt und gleichzeitig ein Signal auf der Interruptleitung des TWI-Busses ausgibt.
- BLIT-Board: dieser Teil der Firmware wird aktiv, wenn am Interrupteingang des TWI-Bus ein Signal anliegt. In diesem Fall liest das Board, als TWI-Master, die internen Werte des Tiny-Boards aus und zeigt diese auf dem angeschlossenen LCD an.
- Tiny_dcf77: hier ist das, was ich eigentlich wollte, ein DCF77-Decoder als TWI-Slave. Das Paket besteht aus 2 Teilen:
- Die Tiny-Firmware realisiert den eigentlichen DCF77-Decoder sowie TWI-Slave. Datum/Uhrzeit sind relativ komfortabel via einem TWI-Master, in unserem Fall das BLIT-Basisboard, abfragbar.
- Die Basisboard-Firmware stellt den TWI-Master in diesem System dar, der Datum/Uhrzeit vom Slave abfragt und auf dem angeschlossenen LCD ausgibt.