Re: OneWire DS18S20 Programmierung Kategorie: Sonstige Hardware (von WernerF - 30.01.2010 17:43) | ||
Als Antwort auf Re: OneWire DS18S20 Programmierung von Joerg - 27.01.2010 9:25 | ||
| ||
> Hallo, > > > 1) Wird durch den Aufruf OneWire_Read() jeweils automatisch das nächste Byte aus dem > > 64-Bit-Rom des Sensors gelesen? > > Ja > > > 4) Bei der Ausgabe der Hex-Bytes des ROM bzw. Scratchpads mit dem â??Msg_WriteHexâ?? > > -Befehl werden doppelt soviele Bytes in Hex dargestellt. Je echtes Byte ein > > â??00â??-Byte davor . Der Befehl hat lt. Beschreibung eine 16-Bit-Auflösung. > > Nun die Frage: Kann man die Ausgabe des â??Dummy-Bytesâ?? irgendwie umgehen ?? > > Vielleicht durch einen anderen Befehl oder Ã?bergabe eines 2-Byte-Wortes ? > > AuÃ?erdem scheint man immer ein weiteres â??Endeâ??-Byte beim Lesen mitzubekommen > > (siehe auch die erste Frage ), denn ich lese immer eins mehr als die Anzahl der > > beschriebenen Bytes > > Ich mache die Ausgabe wie folgt: > > char text[40]; > > > Str_Printf(text,"Rom Code = %02x %02x %02x %02x %02x %02x",rom_code[6], > rom_code[5],rom_code[4],rom_code[3],rom_code[2],rom_code[1]); > > Msg_WriteText(text); > > > > GrüÃ?e Jörg > > Danke Jörg für Deine schnelle Hilfe, ich habe es ausprobiert und es hat dann auch funktioniert (unter C) , unter Basic habe ich es zuerst probiert, da für mein Testprogramm ein BASIC-Programm als Vorlage diente. Dort hatte ich aber Probleme beim Str_printf Befehl mit mehr als 1 Zeile Parameter. Das ging bei mir nicht, aber unter CompactC lief alles einwandfrei. Die anderen Fragen, die ich noch hatte , bin ich dabei selbst zu beantworten: a) schreiben ins scratchpad (Alarm-Temperaturen): OneWire_Reset(PortA7); // PortA.7 OneWire_Write(Skip_ROM); // ROM überspringen OneWire_Write(Write_Scratchpad); OneWire_Write(T_high); OneWire_Write(T_low); beim auslesen bekomme ich dann wieder diese T_high- und T_low-Werte wobei diese Werte zB so definiert sein können: int T_high int T_low T_high = 39 ( 39 °C) mit hexbyte -Darstellung 0x27, beim Auslesen T_low = 3 ( 3°C) mit hexbyte -Darstellung 0x03, beim Auslesen b) kopieren dieser Alarm-Temperaturen vom Scratchpad ins EEPROM des Sensors: OneWire_Reset(IK_PortA7); // PortA.7 OneWire_Write(BK_Skip_ROM); // ROM überspringen OneWire_Write(BK_Copy_Scratchpad); // Scratchpad Thigh und Tlow kopieren nach EEPROM wenn der Sensor an Spannung angelegt wird, werden diese beiden Alarm-Temperaturen aus dem Sensor_EEPROM ins scratchpad immer automatisch kopiert (siehe dazu auch das Datenblatt des Sensors DS18S20) . Wenn man nichts mit den Alarmwerten macht, kann man die beiden Bytes ja auch für etwas anderes verwenden und im EEPROM bleiben sie dann für "immer" erhalten. c) die anderen OneWire-Befehle bin ich nun noch am ausprobieren und werde weiterberichten !!!! | ||
Antwort schreiben Antworten: |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum