BLIT2008-Board-DCF77

Aus BraLUG-Wiki

(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(Hardware)
(Beschreibung: ....)
 
(4 dazwischenliegende Versionen von einem Benutzer werden nicht angezeigt)
Zeile 6: Zeile 6:
 
[[Bild:Blit2008-board-dcf77.png|320px|BLIT-Board; Schaltung DCF77-Board]]
 
[[Bild:Blit2008-board-dcf77.png|320px|BLIT-Board; Schaltung DCF77-Board]]
 
[[Bild:Twi_tiny_board.jpg|320px|BLIT-Board; Prototyp des TWI-Tiny-Board (die LED blinkt schon mal...:-)...))]]
 
[[Bild:Twi_tiny_board.jpg|320px|BLIT-Board; Prototyp des TWI-Tiny-Board (die LED blinkt schon mal...:-)...))]]
 +
[[Bild:Twi_tiny_board_1.jpg|180px|BLIT-Board; Versuchaufbau mit Basis-, Tiny-, LCD-Board und DCF77-Empfänger]]
 +
[[Bild:Twi_tiny_board_2.jpg|180px|BLIT-Board; Detailansicht mit Timestamp...]]
  
 
==Beschreibung==
 
==Beschreibung==
Hier die erste Variante "vom Reissbrett" für ein [http://de.wikipedia.org/wiki/DCF77 DCF77]-Zusatzboard. Kernstück ist ein [http://atmel.com/dyn/resources/prod_documents/doc2586.pdf ATtiny45] (oder ATtiny85), der autonom das DCF77-Signal eines handelsüblichen DCF77-Modules (z.B. von [http://www.elv.de/output/controller.aspx?cid=74&detail=10&detail2=3663 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 [http://atmel.com/dyn/resources/prod_documents/doc1235.pdf USI] dafür benutzen. Na mal sehen, ob das was wird....
+
Oben ist der Schaltplan für ein [http://de.wikipedia.org/wiki/DCF77 DCF77]-Zusatzboard. Kernstück ist ein [http://atmel.com/dyn/resources/prod_documents/doc2586.pdf ATtiny45] (es sollten aber alle aus der gleichen Baureihe, ATiny25/45/85, funktionieren), der autonom das DCF77-Signal eines handelsüblichen DCF77-Modules (z.B. von [http://www.elv.de/output/controller.aspx?cid=74&detail=10&detail2=3663 ELV]) decodiert und bereitstellt. Natürlich besteht wieder der Anspruch, dass diese Baugruppe an den TWI-Bus des Basis-Boards angeschlossen werden soll, was allerdings dahingehend nicht so einfach ist, dass es kein Hardware-TWI in dem ATtiny gibt. Aber man soll ja, laut Atmel [http://atmel.com/dyn/resources/prod_documents/doc1235.pdf USI] dafür benutzen. Unten aufgeführte Software setzt dies entsprechend um.
 +
 
 +
Die Schaltung weist keine Besonderheiten auf. Der ATtiny wird ohne Quarz betrieben, also der interne RC-Oszillator gibt den Takt vor. Die externen Bauelemente reduzieren sich damit auf das absolute Minimum, die angeschlossene LED ist eigentlich schon Luxus. Die Firmware ist mitteln geeigneter [[BLIT2008-Board#Toolchain_.28Werkzeugkasten.29|Programmierhardware]] auf den Controller zu laden. Die Fuse-Bits brauchen nicht umprogrammiert werden und verbleiben auf den Default-Werten ((lfuse=0x62; hfuse=0xDF)).
  
 
=Software=
 
=Software=
Zeile 14: Zeile 18:
 
** 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.
 +
* [http://bralug.de/wiki-common/images/8/80/Tiny_dcf77.tar.gz 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.
  
 
+
=Links=
Weiteres kommen noch...!
+
* [http://www.roboternetz.de/wissen/index.php/USI_(Avr) USI-Register]

Aktuelle Version vom 12. Dezember 2008, 14:02 Uhr


Inhaltsverzeichnis

[Bearbeiten] Hardware

[Bearbeiten] Schaltplan

BLIT-Board; Schaltung DCF77-Board BLIT-Board; Prototyp des TWI-Tiny-Board (die LED blinkt schon mal...:-)...)) BLIT-Board; Versuchaufbau mit Basis-, Tiny-, LCD-Board und DCF77-Empfänger BLIT-Board; Detailansicht mit Timestamp...

[Bearbeiten] Beschreibung

Oben ist der Schaltplan für ein DCF77-Zusatzboard. Kernstück ist ein ATtiny45 (es sollten aber alle aus der gleichen Baureihe, ATiny25/45/85, funktionieren), der autonom das DCF77-Signal eines handelsüblichen DCF77-Modules (z.B. von ELV) decodiert und bereitstellt. Natürlich besteht wieder der Anspruch, dass diese Baugruppe an den TWI-Bus des Basis-Boards angeschlossen werden soll, was allerdings dahingehend nicht so einfach ist, dass es kein Hardware-TWI in dem ATtiny gibt. Aber man soll ja, laut Atmel USI dafür benutzen. Unten aufgeführte Software setzt dies entsprechend um.

Die Schaltung weist keine Besonderheiten auf. Der ATtiny wird ohne Quarz betrieben, also der interne RC-Oszillator gibt den Takt vor. Die externen Bauelemente reduzieren sich damit auf das absolute Minimum, die angeschlossene LED ist eigentlich schon Luxus. Die Firmware ist mitteln geeigneter Programmierhardware auf den Controller zu laden. Die Fuse-Bits brauchen nicht umprogrammiert werden und verbleiben auf den Default-Werten ((lfuse=0x62; hfuse=0xDF)).

[Bearbeiten] 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.

[Bearbeiten] Links

'Persönliche Werkzeuge