Esta explicado en el datasheet lo que debes enviar en la comunicacion I2C.
Los registros para configurar, y te da ejemplos de como es la comunicacion. Tu Arduino seria el Master I2C en este caso.
https://datasheets.maximintegrated.com/en/ds/DS2482-100.pdfPagina 17 en adelante: Ejemplos de comunicacion con el DS2482-100 y tabla donde que significan cada dato enviado/recibido
Notaras que hay un lugar especifico donde se envia un "comando" ( Luego del start - address+r/w - ack), Los comandos estan explicados uno por uno desde la pagina 9
Y finalmente el IC posee 3 registros, "Configuration, Status, and Read Data." El cual vas a tener que configurar unicamente el registro de Configuracion a tus deseos. Y de alli en adelante usar el IC, con los comandos de enviar (bytes o bits) y leyendo si es el caso.
Primero necesitamos saber que se necesita para escribir/leer el dispostivo destino, por ejemplo
https://datasheets.maximintegrated.com/en/ds/DS18B20.pdf (pag 18 - operacion 2)
Solo la parte de escritura para que sea mas corto:
- Reset + Pulso de prescensia
- Envia 0xCC para no enviar el valor de la ROM
- Envia 0x4E para escribir,
- Escribe 3 bytes
Entonces en tu DS2482-100 deberias (usando polling):
- Podrias preguntar si 1-wire esta ocupado, sino lo esta seguis
- Enviar un comando de 1-wire Reset
- Preguntas por el registro STATUS si recibio el pulso de presecencia ( PPD/SD bits )
- Enviar 1 byte ( 0xCC )
- Enviar 1 byte ( 0x4E )
- Repetir para los 3 bytes de informacion.
Cada uno de esos puntos tiene toda la comunicacion del I2C por detras.
Por ejemplo para enviar escribir un byte en el 1-wire, necesitas (siguiendo los ejemplos ):
- Enviar el Start
- Enviar la direccion (7 bits ) + el bit de W
- Esperar el ACK
- Enviar el comando de escritura 1-wire de 1 byte (0xA5 ), esto le indica al DS2482 que el dato que sigue vaya al 1-wire
- Enviar el comando del 1-wire, siguiendo el ejemplo este seria nuesrto primero byte a enviar (0xCC) para que evite el pedir la ROM.
- Esperar el ACK
Si es el ultimo dato termina aca ( y se envia un STOP ), si hay mas por enviar, debemos fijarnos que el dato se envio por completo y que el bus 1-wire esta libre, entonces:
- Repetimos el START,
- Enviamos la direccion + Read
- Esperamos ACK
- Recibimos el byte (teniendo el puntero de direccion sobre el registro de STATUS, esto lo haces al ultimo de la configuracion)
- Le enviamos un ACK al recibirlo ( Repetimos estos 2 pasos, hasta que el bit 1WD este en 0)
- Al estar en 0 1WD procedemos a enviar un NACK
- Y STOP
Luego enviamos el otro byte que le sigue. Solo tener en cuenta que lo ultimo es esperar a que se libere el bus 1-wire