Comunicándose con la Pic 16F913

5

Hice esta pregunta en el desbordamiento de pila, pero encontré esto en algunos de los comentarios sobre algunas de las preguntas del microchip, enlace

Aquí está mi problema, parece que todas las líneas de comunicación para el PIC 16F913 residen en el mismo conjunto de pines, esto es conveniente ya que no tengo que sacrificar pines GPIO solo para hacer comunicaciones, sin embargo, el problema I Lo que tengo ahora es que si estoy usando el SPI en el chip, ¿cómo puedo enviar información al RS232?

La razón por la que surgió este problema es que acabo de comprar un chip de bus CAN que se comunica a través de SPI, y realmente me gustaría ver los datos en RS232, por lo que puedo ver los mensajes. (Realmente no sé mucho sobre la CAN todavía, así que quién sabe si esto tiene sentido todavía).

Aquí están las opciones que veo, y tal vez alguien más tenga mejores ideas que simplemente me faltan.

De alguna manera, configure un esquema de tiempo que cambiará entre SPI y RS232 cada vez que obtenga datos, - Esto no parece difícil y debería funcionar, pero suponiendo que no quiero perder un mensaje, ¿qué pasa si un mensaje se escribe mientras estoy escribiendo en RS232, es posible que lo pierda?

2 .. Siempre puedo usar SPI, pero luego compilo mi propio bus de comunicación sobre 8 de las líneas GPIO, a otro PIC 16F913, usando solo las líneas GPIO y luego, ya que las líneas RS232 están libres en el segundo PIC que puedo simplemente lea los datos y escúpalos.

- Este es factible, pero ahora estamos perdiendo 2 chips, Y todas las líneas GPIO,

Tiene que haber una mejor manera. ¿O hay?

Cualquier ayuda es muy apreciada.

También me gustaría aclarar que, obviamente, una solución está usando un chip completamente diferente (que en realidad podría ser lo que termine haciendo, si puedo programar el 18F), sin embargo, estoy interesado en el peor de los casos. , en el que tengo recursos limitados y solo tengo algunos 913, ¿es la forma descrita anteriormente la única forma de hacerlo con este chip, o existe una forma mejor?

    
pregunta onaclov2000

2 respuestas

6

Podría usar esos pines para SPI e implementar un software UART en otro par de pines. Lo he hecho antes ahora cuando necesitaba dos UART en un chip que solo tenía un UART de hardware.

Es necesario "hacer bit" del software UART. Intenté publicar un código que he usado pero no se formatea correctamente. Aquí es un ejemplo.

    
respondido por el Leon Heller
4

Para responder a la primera pregunta que tengo. Si tiene un dispositivo en SPI y después de leerlo, está escribiendo en UART.

No puedes "perder" un mensaje mientras escribes en UART porque si eres maestro en SPI el otro dispositivo debe esperarte. Si se trata de un dispositivo que muestrea de forma rápida y constante, solo tiene que asegurarse de que lo haga con más frecuencia para que reemplace sus valores. Si se trata de un dispositivo que almacena datos para usted en un búfer, debería poder alternar fácilmente.

Estoy bastante acostumbrado a hacer esta acción, en el trabajo Tenemos un dispositivo con dos canales de comunicación. Un canal tiene 5 dispositivos diferentes que puede controlar, 4 en SPI, uno en UART. El otro canal tiene dos. Uno en SPI, uno en UART. El código es un poco más complejo, ya que los controladores de firmware de cada dispositivo deben solicitar el acceso a los recursos y recibirlos antes de hacer cualquier cosa, pero el sistema sigue funcionando a la perfección.

Le sugeriría que tome una foto rápida con solo cambiar. Deberías poder implementarlo lo suficientemente rápido.

La otra opción es hacer un software UART. Esto puede ser bastante factible. Se llama bit banging normalmente y es una práctica muy común si es solo para depuración y no es necesaria para una final producto.

Yo sugeriría un poco de golpes para ser perezoso. La gente a menudo pasa por alto los golpes de bits.

    
respondido por el Kortuk

Lea otras preguntas en las etiquetas