BLIT2008-Board-DCF77
Aus BraLUG-Wiki
(Unterschied zwischen Versionen)
(→Software: link...) |
(→Software: tiny_twi via usi...) |
||
Zeile 14: | Zeile 14: | ||
** 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. | ** 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... :-). | ** 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... :-). | ||
− | + | * [http://bralug.de/wiki-common/images/0/04/Tiny_twi.tar.gz 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. [http://atmel.com/dyn/resources/prod_documents/doc2560.pdf Application Node] und [http://atmel.com/dyn/resources/prod_documents/AVR312.zip 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. | ||
Weiteres kommen noch...! | Weiteres kommen noch...! |
Version vom 5. Dezember 2008, 22:45 Uhr
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.
Weiteres kommen noch...!