Hallo, mit relatv wenig Hardware lässt sich ein DCF-1Wire-Slave realisieren. Selbst auf das Display, Tasten und LEDs kann verzichtet werden Mehrere Kommandos versteht der SLAVE u.a: 0x33=READ-ROM 0x55=MATCH-ROM 0xF0=SEARCH-ROM 0xCC=SKIP-ROM 0xF0=read DCF-ZEIT Die ROM-ID ist im Programm festgelegt mit: .equ ROM_ID_BYTE1 = 0xEF ; FAMILY EF = Erfurt ;-) .equ ROM_ID_BYTE2 = 0x00 .equ ROM_ID_BYTE3 = 0x70 .equ ROM_ID_BYTE4 = 0xF7 .equ ROM_ID_BYTE5 = 0xDC .equ ROM_ID_BYTE6 = 0x00 .equ ROM_ID_BYTE7 = 0x00 .equ ROM_ID_BYTE8 = 0x00 ; Prüfsumme Die exakte Prüfsumme kann, muss aber nicht eingetragen werden. Sie wird automatisch bei Programmstart geprüft und ggf. korigiert. Die Hardware ist an das DCF-MODUL von Reichelt angepasst (invertierter Ausgang ohne Widerstand) In folgender Reihenfolge werden die 1-Wire Daten zur Ausgegeben: -Sekunden -Minuten -Stunden -Tag -WochenTag -Monat -Jahr -SONNENAUFGANG -SONNENUNTERGANG Es ist kein perfekter Programmcode, vieles lässt sich noch optimieren. Bernhard
Hallo Bernhard, sieht super aus. Mal sehen, ob ich dazu komme, das nachzubauen. Noch ein paar Ideen: Ich habe eine 1-Wire-Slave-Version (z.B. für SHT11) in BASCOM erstellt (-> Beitrag "Re: 1-WIRE SLAVE DEVICE BEISPIELE AVR ASSEMBLER ATmega8") - Könnten wir uns auf eine einheitliches ID-System einigen? Byte_1 -> 0xEF -> o.k. (habe ich auch! :-) ) Byte_2 - Byte_4 -> Name des verwendeten Bausteins (z.B. "DCF", "SHT", ...) Byte_5 - Byte_7 -> eigentliche Nummer des Slaves Byte_8 -> CRC - Das gleiche gilt für das Ausgabeformat: 0x44 (Convert) -> Berechnung der Werte (falls nötig) 0xBE (Read Scratchpad) -> Ausgabe der Werte (feste Anzahl) Dann könnte man z.B. für DigiTemp o.ä. eine einheitliche Ausleseroutine für alle neuen 1-Wire-Slaves schreiben. Was meinst Du dazu? (Ich versuche auch mio/Tobias dazu zu bewegen -> http://www.tm3d.de/index.php/1-wire-barometer) RoBue
Hallo RoBue > Könnten wir uns auf eine einheitliches ID-System einigen? Ja, diese Frage habe ich schon erwartet ;-) Im Programmcode "_ini.asm" lassen sich die einzelnen Function-Commands definieren und bei Bedarf anpassen. Ich hatte die gleiche Grundidee wie Du :-) Mit 0xBE (Read Scratchpad) hätte ich keine Probleme, nur mit der festen Anzahl zu lesender Bytes hätte ich meine Sorgen. Bsp: Eine Wetterstation soll Datum, Zeit, Luftdruck, Feuchte, Sonnenaktivität usw. ausgeben... eine Menge Bytes Das Function-Command 0xF6 (write Data) benutze ich, um spezielle Daten z.B. Datum, Zeit und mehrere Temperaturen, an alles Slaves, die 0xF6 akzeptieren, zu senden. In meinem Bussystem befinden sich z.B. mehrere LED-Displays, die die Aussentemperatur anzeigen. Aber diese Displays besitzen keine eigene ROM-ID, brauchen sie auch nicht, denn sie werden mit "SKIP-ROM" angesprochen. Bernhard
Hallo Bernhard, Vielen Dank für diesen und die anderen Beispielcodes. Ich versuche gerade die Minimalversion ohne Taster und LCD zum Laufen zu bringen. Das DCF Signal liegt sauber an PC0 (positive 100 bzw. 200ms Pulse). Beim Reset sind kurz alle drei LEDs an; dann blinkt's noch kurz. Danach sind und bleiben die LEDs aus. Reicht es, das DCF-Signal anzulegen und zu warten, dass nach erfolgreicher Dekodierung entweder die rote oder grüne LED angeht? Ist vielleicht ein 1-Wire Kommando notwendig? Wäre schön wenn sich jemand meldet der das schon erfolgreich probiert hat. Gruß Einhart btw: Ich weiss, dass ich mich diurch den Code arbeiten sollte - schaffe das aber z.Zt. nicht.
Hat sich erledigt - habe doch ´mal den Code angesehen ;-) Gruß Einhart
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.