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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren