Autor Tema: BusCAN. Inicio comunicación mediante PIC18F25K80  (Leído 2288 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Charly V

  • PIC10
  • *
  • Mensajes: 3
BusCAN. Inicio comunicación mediante PIC18F25K80
« en: 12 de Marzo de 2016, 19:08:56 »
Hola a todos,

Es la primera vez que escribo en el foro, aunque llevo meses echando un vistazo por aquí.

Bueno al tema, quiero realizar una conexión mediante el protocolo CAN para conectar varios nodos. Había pensado en desarrollar una tarjeta propia con el micro PIC18F25K80 y el transceiver MCP2561 de Microchip, además de desarrollar el programa mediante el MPLAB-X IDE.
Empiezo de cero, pero veo que utilizáis el compilador CCS. Tiene alguna ventaja utilizar este compilador?
Existen librerías/código de programa para ir comenzando con el proyecto?

Muchas gracias por adelantado, saludos.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:BusCAN. Inicio comunicación mediante PIC18F25K80
« Respuesta #1 en: 12 de Marzo de 2016, 19:47:14 »
Empiezo de cero, pero veo que utilizáis el compilador CCS. Tiene alguna ventaja utilizar este compilador?
Existen librerías/código de programa para ir comenzando con el proyecto?

No todos usan CCS, lo que veo es que la mayoria de las personas que se inician en el mundo de los microcontroladores lo hacen por ahi. Y se olvidan completamente del datasheet y luego vienen con esos problemas. Por que terminan "probando" codigo y no entendiendo el micro. Al menos es mi apreciacion desde que estoy en el foro.

Posee algunas ventajas y algunas desventajas.

Ventajas: Tiene algunas funciones que lo hacen "simple" para el usuario, Los mas claros ejemplos son UART / I2C / SPI, ejemplo:

#use RS232(xmit=PIN_A0,rcv=PIN_A1,bits=8,Parity=O,ERRORS,stream=Hola)
#use RS232(xmit=PIN_A0,rcv=PIN_A1,bits=8,Parity=O,ERRORS,stream=segundo)

Eso automaticamente el mismo compilador introduce codigo, si los pines corresponden a una UART por HW entonces usa eso, sino te crea una UART por software, te verifica la paridad por si solo. Otra tambien es output_toggle, los printf para lso RS232/I2C, como si fueran canales distintos, eso esta muy bueno y simple.
Al menos yo que vengo de ASM, tengo un solo punto de interrupcion, es decir en XC8 vos definis solo una funcion de interrupcion y de ahi preguntas por las flag. Estoy mas acostumbrado a eso, en CSS podes definir una funcion para cada interrupcion, obviamente que por detras el compilador agrega lo mismo que harias en XC8, pero eso no lo ves, por ejemplo para la funcion de interrupcion del timer 1, deberias hacer:

#INT_TIMER1
void Int_TMR1(void){
    //....
}

Yo estoy acostumbrado a leer el flag y listo. Como te decia vengo del ASM. La traduccion del ASM y del datasheet mas directa la veo con XC8.

Desventajas:

Aprender todo lo que posee CCS y lo que hace por detras, es muy engorroso para alguien que recien empieza explicarle que el compilador si esta en STANDARD_IO ( por default ) si vos usas un input(PIN_A0), te cambia el TRIS por si solo, es decir el compilador agrega codigo para eso. Asi que tenes que usar FAST_IO y modificar los TRIS con set_tris_x(), Tambien lo engorroso que es para leer un registro del PIC, tenes que definirilo con #BYTE , para poder acceder al mismo. Tenes Muchas funciones para acceder a registros el cual necesitas el manual al lado, para ver si alguna es mejor. Ejemplo para setear el timer tenes set_timer0(xx); en XC8 haces TMR0 = xx; y listo.

-----------

En fin... XC8 vs CCS es casi lo mismo, vas a hacer exactamente lo mismo en un lado u otro. La diferencia esta en que XC8 las cosas estan en codigo, es decir que si qieres usar las PLIB tenes un OpenUSART1(xxx), y podes ir al archivo y ver el codigo que posee eso, mientras que en CCS con el #use RS232() no podes a pesar que generen un codigo parecido, tenes que buscar el manual y ver las opciones que tenes. Ese codigo de la UART es generado por el mismo compilador, vos te evitas el pensar que hay por detras.

Librerias sobre algunos integrados/teclados/etc/lcd hay, pero como es C, las librerias de CCS se podrian utilizar tranquilamente en XC8 si se reemplazan las funciones que posee. Incluso si agarras una libreria de Arduino en C++, seguro que podes transformarla a XC8.

Lo unico que se de CAN es este hilo de MGLSOFT

http://www.todopic.com.ar/foros/index.php?topic=19182.0

Desconectado Charly V

  • PIC10
  • *
  • Mensajes: 3
Re:BusCAN. Inicio comunicación mediante PIC18F25K80
« Respuesta #2 en: 13 de Marzo de 2016, 19:29:23 »
Muchas gracias por tu respuesta Killerjc.
Has sido muy claro.

Desconectado Charly V

  • PIC10
  • *
  • Mensajes: 3
Re:BusCAN. Inicio comunicación mediante PIC18F25K80
« Respuesta #3 en: 19 de Marzo de 2016, 18:36:13 »
Hola,

Siguiendo con el proyecto que describía...
Necesito enviar con 4 tarjetas diferentes diferentes lecturas analógicas y digitales conectadas en un mismo bus CAN.
Cada una de ellas tendría una prioridad, pero no es necesario que exista un master que vaya pidiendo información a cada una de ellas... No sé si voy bien encaminado, porque estoy empezando con este protocolo que es nuevo para mí y al revisar la documentación de microchip, me generan dudas.
Si alguien que conozca este protocolo me puede echar una mano.

Gracias de antemano, saludos.