¿Comunicación serial sobre 1 pin?

Bueno chicos, estoy en un pequeño lío aquí. Tengo el siguiente circuito:

Esquemático

Como puede ver, el pin 3 es mi única salida. De hecho, ya imprimí esta placa, por lo que no hay mucho margen para modificarla. Estoy tomando una lectura de un sensor de presión analógico, haciendo una conversión A/D y luego quiero enviar ese valor a un Arduino. ¿Hay ALGUNA forma en que pueda enviar esto solo por el pin 3? ¿Si es así, cómo? Si no es así, ¿alguien puede darme un ejemplo rápido de código SPI o Bit Bang? Estoy usando un PIC12F675.

Editar: Aquí hay un enlace a la imagen de tamaño completo.

¿Por qué el sensor de presión no se puede conectar directamente al arduino? Haría la vida más fácil.
Bueno, Arduino hará otras cosas en paralelo, por lo que fue más fácil dividirlo en 2 aplicaciones separadas.
¿Necesita comunicación bidireccional? si solo necesita enviar datos de una manera, la configuración de UART funcionaría
Sí. Solo necesito enviar datos desde la placa del sensor al arduino. ¿Puedes vincularme a una referencia para eso?
@WillemEllis: todavía me pregunto por qué no pudiste conectar el sensor al Arduino como sugirió Dean. Leer el sensor directamente podría requerir menos esfuerzo que leer datos sobre el sensor desde cualquier tipo de esquema de comunicación. Podría ser totalmente controlado por interrupción y activado automáticamente, o solo activado cuando necesite una lectura. De cualquier manera, usar UART (TX de PIC a RX en Arduino) es lo mejor que se puede imaginar para una comunicación simple de 1 cable, como señala AngelAtLarge en su respuesta. No sé nada sobre PIC y no uso Arduino, así que no puedo ayudar con el código.
Si está contento de enviar "a ciegas", entonces la serie asíncrona es "fácil". Busque lo que hace y espera un UART. Se puede enviar mediante software siempre que pueda generar temporización de bits de alguna manera. O puede aplicar un valor como % alto en una forma de onda PWM y leerlo, ya sea como una entrada digital alta/baja en el otro extremo o filtrarlo a CC y leer el valor de CC. UART brinda tanta precisión como sea necesario. La versión analógica es fácil con 4 bits, por ejemplo, y con 8 bits necesita algo de trabajo para obtener precisión.

Respuestas (1)

No soy una persona PIC, pero normalmente para el estándar de serie necesita tres líneas:

  • Enviar (TX)
  • Recibir (RX)
  • Tierra (GND)

Como no necesita RX, puede usar la conexión a tierra del circuito y usar el pin 3 para TX, si su Arduino y su PIC están de acuerdo con la velocidad en baudios y otros parámetros relacionados con las comunicaciones en serie (bits de parada, bits de paridad, etc.). En teoría, esto podría ser una comunicación en serie estándar si puede hacer que su PIC lo haga.

SPI no será posible, ya que SPI requiere una línea de reloj independiente.

Otra cosa a considerar sería el protocolo Dallas 1-wire , sin embargo, en la práctica será más difícil de implementar que el serial real o pirateado.

¡Gracias por esto! He estado leyendo sobre la posibilidad de usar serial. Se actualizará sobre cómo va
Desearía poder hacer un -1 por no ser una persona PIC, pero eso no sería justo, así que voté a favor;)
Así que esta es realmente la respuesta. Lo hice usando golpes de bits UART. Puedes encontrar mi código aquí . Es bastante autoexplicativo. Como solo necesitaba Tx, solo necesitaba una línea.