Firmware für ATtiny25, macht aus einem Funkempfänger-Modul
(hier: aus einem defekten Funkwecker) einen Funkempfänger
inklusive 1-Knopf-Jostick via USB.
Das Low-Speed-USB-Interface ist mittels V-USB (www.obdev.at)
in Software realisiert.
Das Empfangssignal wird an den (einzigen) Feuerknopf des (emulierten)
„Spielhebels“ angelegt.
Als DCF-Telegramm-Dekoder kommen nur solche Programme in Frage,
die den Spielhebel-Feuerknopf auch abfragen können, meine
„Funkuhr.exe“ kann das erst ab November 2012.
Der Funkempfänger läuft ständig, lässt sich nicht direkt
ein- und ausschalten wie bei der seriellen Variante.
Hingegen wird er bei Standby des Rechners abgeschaltet.
Neu ab April 2013: Es wird außerdem ein einachsiger Spielhebel
mit 16 Bit Auflösung emuliert, der den Zeitpunkt des Ereignisses
festhält. Das erspart dem Anwendungsprogramm das genaue Einhalten
von Abfrageintervallen, etwa unter erhöhter CPU-Last.
Neu ab Januar 2015: Zusätzlich wird die Zeit, in Millisekunden,
zwischen dem Ereignis und dem Abholen des Reports mitgeteilt.
Damit kann die begrenzte Abfragefrequenz kompensiert werden.
Anforderungen
═════════════
FunkUsb erfordert keinen Treiber! Genauer, der Treiber ist bei
allen USB-fähigen Betriebssystemen bereits vorhanden.
Schaltplan
══════════
Dieser ist identisch mit der seriellen Vorgänger-Variante von FunkUsb.
Der Mikrocontroller kann durch einen kleineren ATtiny25 ersetzt werden.
Die .HEX-Datei läuft auch in den größeren ATtiny45 und ATtiny85.
TPS71533DCKR
5╔═════╗4
3P3 ───┬────────────────────┬─╢O G I╟───┬── 5P (1)
+│ 4,7µF │ ╚╤═╤═╤╝ │
═╧═ ┌─────────────────┼────┘2 │
═╤═ │ 1╔═════╗╔═════╗8│ ╔═════╗ ▼ LED gelb
├──┘x─╢ ╚╝ ╟─┴─╢1,5kΩ╟─┐ ┬
___ │ 2║ ║7 ╠═════╣ │ │
SIG ─>─┼─────╢ ╟───╢ 47Ω ╟─┴─┼── D- (2)
___ │ 3║ ║6 ╠═════╣ │
ENA ─<─┼─────╢ ╟───╢ 47Ω ╟───┼── D+ (3)
│ 4║ ║5 ╠═════╣ │
├─────╢ ATtiny25 ╟───╢470Ω ╟───┘
│ ╚════════════╝ ╚═════╝
GND ───┴─────────────────────────────────── 00 (4)
┌──────────┐
│ Funk- │ ┌───────┐
│Empfänger-│ │ USB │
│ Modul │ └───────┘
└──────────┘
SIG liefert das Empfangssignal, LOW bei DCF77-Trägerabsenkung.
ENA steuert den Funkempfänger, LOW = aktiv.
ENA wird nur für den USB-konformen Schlafmodus benötigt.
Die ungewohnte Stromversorgung mit dem energiesparenden
Längsregler TPS71533 (kostenloses Muster von Texas Instruments)
ist notwendig, um für den Funkempfänger eine saubere 3,3 V
bereitzustellen.
Der Querstrom des Reglers beträgt lt. Datenblatt nur 3,2 µA
und ist deshalb kein Hindernis für den USB-konformen Schlafmodus.
Als Durchsteck-Typ ist LP2950ACZ-3.3 empfehlenswert,
mit einem akzeptablen Querstrom von 200 µA.
Im Muster war die 5-V-Speisespannung nicht stabil genug,
um mit den üblichen zwei in Reihe geschalteten Siliziumdioden
eine hinreichend saubere 3,3-V-Betriebsspannung bereitzustellen,
damit der Funkempfänger ordentlich arbeitet.
Diskrete Längsregler mit Z-Dioden sind schwierig auszulegen,
weil für die geforderten geringen Querströme (max. 200 µA)
die handelsüblichen Z-Dioden nicht steil genug sind.
Querregler allein (TL431) beißen sich mit dem USB-Schlafmodus.
Programmierung
══════════════
Das Einschreiben der Firmware erfolgte im Muster mit einem
extra Steckboard, welches als STK200-kompatibles Programmiergerät
hergerichtet wurde.
Das Programmieren im eingelöteten Zustand (in-system)
ist hier nicht vorgesehen. Deshalb die IC-Fassung.
Installation
════════════
Anstecken, Joystick erkennen und installieren lassen.
Dann kann man in der Systemsteuerung → Gamecontroller
(Bezeichnung variiert zwischen den Windows-Versionen)
die Funktion beobachten — mit Bordmitteln eben!
Hinweis: Mit dem Anstecken und Installieren wird noch keine
Zeit empfangen oder die PC-Uhr gestellt!
Das macht beispielsweise das nächste Programm.
Verwendung
══════════
Zum komfortablen Empfang und dem Stellen der Computer-Uhr
habe ich das Programm „Funkuhr.exe“ geschrieben,
siehe „http://www.tu-chemnitz.de/~heha/hs_freeware/freew.html“.
Es benötigt zum Stellen der Uhr entsprechende Rechte;
zumeist wird man es „Als Administrator“ starten.
Es kann auch jedes andere Funkuhr-Empfangsprogramm
verwendet werden, sofern sich ein Windows-Joystick-Feuerknopf
als Eingabeport auswählen lässt.
DOS-Software funktioniert nicht.
Die LED leuchtet normalerweise halbhell.
Bei Funksignal (Trägerabsenkung) leuchtet sie hell.
Im USB-Schlafmodus ist die LED aus.
Quelltext
═════════
Dieses Projekt benutzt V-USB, allerdings mit eigenen
Patches (siehe Changelog.txt).
Aus Platzgründen sind nicht zur Recompilierung benötigte Dateien
nicht in diesem Archiv (Lizenz-Textdateien, Quelltexte für andere
Frequenzen als 16,5 MHz).
Henrik Haftmann, 121118
avr-gcc-Version
═══════════════
Ich kann die verwendete Version von avr-gcc nicht nachvollziehen.
Daher ist die Funkuhr.flash aus der alten Funkuhr.hex konvertiert.
Jedes (neuere) avr-gcc produziert leicht größere .flash-Dateien.
Sie muss ≤ 2048 Byte groß sein, um in den ATtiny25 zu passen!
Henrik Haftmann, 240611
Detected encoding: UTF-8 | 0
|