1-Wire: iButton: sendet keine Daten

Gast #5957868
Lesenswert?
• ▲
▼
Hallo,

ich habe einen iButton (DS1990 F5) und 1-Wire Master DS2482-100 bzw. 
DS2482-800. Master jeweils versorgt mit 3,3V.

Ich habe das Problem, daß der iButton auf den 1-Wire-Reset reagiert, 
aber auf den nachfolgenden Befehl Read ROM (0x33 oder 0x0F) nichts 
ausgibt. Es hängen keine weitere Slaves am 1-Wire-Bus. Selbes Problem 
mit DS2482-100 und DS2482-800.

Schließe ich anstelle meinem Master DS2482 einen 1-Wire Busmaster / USB 
Hostadapter DS9490R an, so wird der iButton erkannt.

Ist mit total unklar, warum es nicht geht. Anbei das aufgezeichnete 
1-Wire-Timing und ein datenblatt vom iButton.

Gruß
Roman
Angehängte Dateien:
Gast #5958436
Lesenswert?
• ▲
▼
Ich habe gerade nach Beispielen gesucht und bin auf folgendes gestoßen:

https://embdev.net/attachment/391825/STM32_CunbeMX_DS18B20.pdf
1
// You can read the 8 byte ID with these lines of code:
2
void get_ID(void)
3
{
4
uint8_t id_data[] = {0,0,0,0,0,0,0,0};//8 Byte
5
reset();
6
write_byte(0x33);//Read ROM [33h] command
7
for (uint8_t i = 0; i < 8; i++)
8
   id_data[i] = read_byte();//id_data[0] = 40 = 0x28
9
for (uint8_t i = 0; i < 8; i++){
10
  USB_Info_tutu("id", i, " = ", id_data[i]);
11
HAL_Delay(200)
12
}


Also 1-Wire Reset und danach 0x33 senden. Genau wie ich es gemacht habe. 
Der Slave scheint von alleine zu senden.
Gast #5958509
Lesenswert?
• ▲
▼
Auch hier ist es wie von mir gemacht:

https://hackaday.com/2008/12/10/parts-1-wire-temperature-sensor-ds1822/

1-WIRE>{ 0x33 r:8 <–command
xxx 1WIRE BUS RESET OK
xxx 1WIRE WRITE: 0x33 <–READ ROM
xxx 1WIRE BULK READ, 0x08 BYTES:
0x22 0x47 0x45 0x22 0x00 0x00 0x00 0x29 <–ID#
1-WIRE>

Was kann das Problem sein, daß der 1-Wire Slave nicht auf 0x33 reagiert? 
Muß zwischen Reset und dem 0x33-Befehl eine bestimmte Zeit eingehalten 
werden?
#5958511
Lesenswert?
• ▲
▼
Roman schrieb:
> Ich habe gerade nach Beispielen gesucht und bin auf folgendes gestoßen:
verwendet aber nicht den DS2482 ?
>
> Also 1-Wire Reset und danach 0x33 senden. Genau wie ich es gemacht habe.
> Der Slave scheint von alleine zu senden.
Nein der Slave sendet nicht von selbst, der Master muss Readslots (kurze 
L-Impulse mit 15μs Länge) erzeugen.
Lt. DB hat der DS2482 das CMD 0x96 um ein Byte zu lesen.

Sascha
Gast #5958536
Lesenswert?
• ▲
▼
Sascha W. schrieb:
> Lt. DB hat der DS2482 das CMD 0x96 um ein Byte zu lesen.

Das war das Problem! Vielen Dank für Eure Hilfe!
Ich habe gedacht, das Read benötigt man nur um Nutzdaten z.B. bei einem 
Temperatursensor oder EEPROM auszulesen. Daß man es auch schon für die 
ID benötigt, war mir nicht klar.

Gruß Roman

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.