¿Se puede configurar Arduino MISO como salida?

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"?

Respuestas (3)

El Arduinoshiftout() es una implementación de spi de software/bitbanged. Puede usar eso en lugar de la biblioteca spi.

Impresionante. Eso fue mucho más fácil de lo que esperaba. ¡Gracias!
Entonces, en realidad, la señal no ha estado funcionando con mi chip. Parece que 5V es el valor predeterminado para MOSI, mientras que 0V es el valor predeterminado para shiftOut. Mi osciloscopio muestra que los datos se están transfiriendo, pero el bote no responde. Parece que, si pudiera invertir el mensaje shiftOut que se envía al bote, todo estaría bien. ¿Pensamientos?
No debería invertirse, pero se usa data = ~datapara 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).

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.

Gracias, Karl. Solo soldaré un potenciómetro manual y espero que la próxima revisión funcione con los rastros en los pines correctos. Luego, cuando tenga tiempo, lo resolveré.

Absolutamente ver shiftout y manual spi bit bang