Muchísimas gracias a los dos, por responder y dar un poco de luz sobre el tema. Ya puedo controlar un potenciómetro digital. Ahora me falta conectarlos en cascada.
Escrito originalmente por maunix
Muchos dispositivos SPI pueden tener algun bit de mas, pero latchean los datos cada 8 bits entonces si le tienes que mandar 17 bits, los primeros bits los dejas en 0 y transmites del bytes más significativo, quedando luego los 17 bits que requieres porque los primeros se descartan.
Pdf del dispositivo:
http://pdfserv.maxim-ic.com/en/ds/DS1267.pdfWeb del dispositivo:
http://www.maxim-ic.com/quick_view2.cfm/qv_pk/2676/ln/enSegún la web el dispositivo trabaja en modo 3 Wires Serial. No veo clara la diferencia del 3 Wire Serial con el SPI. Ambos trabajan con SSPBUF y utilizan línea de datos, reset/chip select y reloj.
En cualquier caso y como muy bien ha dicho maunix, los primeros 7 bits del primer byte se descartan. Lo ví en una Application Note, menos mal.
De este modo, el método trabajo sería así:
1. Reset a nivel alto.
2. Mando primer byte, del que sólo importa el LSB. 1 bit (bit de stack)
3. Mando segundo y tercer byte. Pot0 y Pot1 16bits (Ya tengo los 17 bits).
4. Reset a nivel bajo, corto comunicación y, en ese momento, se actualizan los valores del potenciómetro.
Como les he explicado, necesito conectar seis potenciómetros en cascada, a través de Cout y DQ, encadenándolos. Mi problema es el siguiente: Teniendo en cuenta que los primeros 7 bits del primer byte se descartan y que, sólo cuando el reset vuelve a nivel bajo el potenciómetro es actualizado:
¿Cómo mandaría 6 veces los 17 bits? Al no haber cerrado la comunicación con el reset, condición para que los datos lleguen a los elementos de la cadena, el dispositivo solo descartará los primeros 7 bits del primero de los bytes. El primer problema viene con el byte que contiene al bit de stack del segundo dispositivo de la cadena. Al no haber cerrado la comunicación, no descartará los 7 bits, con lo cual se monta un lío enorme.
¿A alguien se le ocurre algo?
Más dificil todavía.
Muchas gracias.