Así que diseñé una PCB que consiste en un atmega328 que controla un potenciómetro digital (MCP4131) usando SPI. Conecté estúpidamente la entrada/salida del potenciómetro al pin MISO (entrada maestra, salida esclava) en el arduino en lugar del pin MOSI (salida maestra, entrada esclava). Los pines SS y SCK están conectados correctamente. No hace falta decir que no he podido hacer que la olla se comporte como debería, porque no puedo hacer que el arduino hable con ella.
Intenté ingresar a la biblioteca Arduino SPI y, en la función begin (), cambiando la línea
pinMode(MOSI,OUTPUT);
a
pinMode(MISO,OUTPUT);
Pero, esto no hace el truco. En mi alcance, puedo ver los bits que se envían cuando el potenciómetro está conectado correctamente (en mi tablero). Si pudiera romper el rastro en mi PCB y soldar un puente al pin correcto en el arduino, sería una buena solución. Pero prefiero poder hacerlo en software.
No tengo mucha experiencia con SPI. Actualmente estoy investigando pero no he encontrado nada útil en la web. ¿Alguna idea de hacer que el pin MISO cambie a "MOSI"?
El Arduinoshiftout()
es una implementación de spi de software/bitbanged. Puede usar eso en lugar de la biblioteca spi.
Si desea utilizar el módulo SPI integrado en el microcontrolador, debe utilizar los pines que elijan. Están cableados.
Sin embargo, también puede usar los mismos pines como E/S de propósito general, lo que significa que puede golpearlo en lugar de usar la biblioteca SPI, pero eso es mucho más trabajo en el software. Es posible que pueda encontrar una biblioteca existente en algún lugar que lo ayude, pero personalmente giraría o modificaría el PCB y lo llamaría una lección aprendida.
Absolutamente ver shiftout y manual spi bit bang
ryantuck
ryantuck
Transeúnte
data = ~data
para hacer una inversión bit a bit de su variable de datos de 8 bits. El decimal 177 en binario 0b10110001 se convertiría en 0b01001110 (78).