TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: micro_pepe en 16 de Marzo de 2016, 11:55:12

Título: CAN BUS para XC8
Publicado por: micro_pepe en 16 de Marzo de 2016, 11:55:12
Necesito programar un PIC18F26K80 con un bus CAN en XC8, he buscado por el foro, pero algunos hilos son antiguos y faltan imagenes y archivos ¿sabeis de alguna apnote de Microchip o librería en cuestión?

Saludos!!!
Título: Re:CAN BUS para XC8
Publicado por: MerLiNz en 16 de Marzo de 2016, 16:37:48
Ese post recuerdo que se centra mas bien en el IC para CAN que en un pic con CAN integrado. Lo mas facil seria configurar los registros de forma manual y a volar... Yo ya ni recuerdo como se hacia, pero tengo alguno de ese tipo.
Título: Re:CAN BUS para XC8
Publicado por: MGLSOFT en 16 de Marzo de 2016, 17:04:26
En la pagina de Microchip aparecen las appnotes relacionadas a ese PIC, aqui tienes una idea, y hay mas de uno en CAN.

(http://www.todopic.com.ar/foros/imgtiny/14j2hab.jpg)

En breve voy a revisar los link que se perdieron en el hilo de CAN.
Título: Re:CAN BUS para XC8
Publicado por: micro_pepe en 17 de Marzo de 2016, 15:52:46
Algunas de esas notas de aplicación vienen con ejemplos, de ahí puedo ir tirando, son para C18, pero no creo que tenga muchos problemas en pasarlo a XC8.

Gracias  ;-)

PD: Una cosa más, como conversor de señales del bus usaré un MCP2551, tengo una duda, la línea RX del conversor va con la RX del PIC, y la TX con TX, ¿o cruzadas?
Título: Re:CAN BUS para XC8
Publicado por: MerLiNz en 17 de Marzo de 2016, 16:19:38
RX -> RX; TX -> TX
Título: Re:CAN BUS para XC8
Publicado por: micro_pepe en 18 de Marzo de 2016, 18:20:40
Buff, los ejemplos son para otros micros distintos al PIC18F26K80, cambian los registros y es una locura cambiarlos todos, necesito tener algo funcionando en poco tiempo, por eso me vendría bien algo para ese micro en XC8, o C18.

Saludos!!!
Título: Re:CAN BUS para XC8
Publicado por: micro_pepe en 19 de Marzo de 2016, 16:30:52
Bueno, encontré unos ejemplos en la página de Microchip para mi micro, vienen con el .hex y lo he montado en Proteus, pero no funciona, supongo que los ejemplos sean correctos ¿Alguien probó CAN BUS en Proteus? Uso versión 8.3 SP2.

Hasta el Lunes no podré probar con un bebuger, y pensaba avanzar un poco con Proteus el fin de semana.

Saludos!!!
Título: Re:CAN BUS para XC8
Publicado por: MerLiNz en 20 de Marzo de 2016, 10:03:10
en proteus no hay simulacion de can bus o almenos cuando yo lo probe no habia y creo que era la version que dices.
Título: Re:CAN BUS para XC8
Publicado por: ASTROCAR en 03 de Abril de 2016, 07:32:52
buen dia, proteus no tiene para simular can bus y menos can integrado en el pic.

disculpa mi pregunta pero en que consiste tu proyecto con can bus

Saludos
Título: Re:CAN BUS para XC8
Publicado por: micro_pepe en 03 de Abril de 2016, 19:31:06
buen dia, proteus no tiene para simular can bus y menos can integrado en el pic.

OK, gracias  ;-)

disculpa mi pregunta pero en que consiste tu proyecto con can bus

Tengo que diseñar un nodo que se conecte a una red CAN, y actue como control del resto de nodos, no puedo dar muchos datos, pues es un proyecto comercial.

Saludos!!!
Título: Re:CAN BUS para XC8
Publicado por: micro_pepe en 06 de Abril de 2016, 08:48:56
Bueno, estoy haciendo una prueba inicial, tengo mi PIC conectado a un nodo que envía trafico de broadcast, y pretendo escucharlo, la configuración puesta para un PIC18F26K80 es la siguiente:

Código: [Seleccionar]
TRISCbits.TRISC7 = 1;
    TRISCbits.TRISC6 = 0;
    LATCbits.LATC6 = 0;
    LATCbits.LATC7 = 0;
    // Enter CAN module into config mode
    CANCON = 0b10001110;    //Solicito modo configuracion, ventana para RX0
    while(!(CANSTATbits.OPMODE == 0x04));
    // Enter CAN module into Mode 0
    ECANCON = 0x00;

// Initialize CAN Timing     
    //  500 Kbps @ 64MHz
        BRGCON1 = 0x83; //0000 0111     //SJW=3TQ     BRP  3
        BRGCON2 = 0xB8; //1011 1000     //SEG2PHTS 1    sampled once  PS1=8TQ  PropagationT 1TQ 
        BRGCON3 = 0x05; //0000 0101     //PS2  6TQ

//  config RX para broadcast.       
    RXF0SIDH = 0x00;
    RXF0SIDL = 0b1000000;
    RXF1SIDH = 0x00;
    RXF1SIDL = 0b1000000;

RXM0SIDL = 0b10000000;//Mascara, solo importa el bit de broadcast.
    RXM0SIDH = 0b00000000;
    RXM1SIDL = 0b10000000;//Mascara, solo importa el bit de broadcast.
    RXM1SIDH = 0b00000000;

// Enter CAN module into normal mode
    CANCON = 0b00001110;
    while(CANSTATbits.OPMODE==0x00);

Como fuses tengo puesto estos:

Código: [Seleccionar]
#pragma config XINST = OFF
#pragma config WDTEN = SWDTDIS
#pragma config CANMX = PORTC//Seleccion de pines del bus can.
#pragma config FOSC = INTIO1

La configuracion del oscilador:

Código: [Seleccionar]
// Set the internal oscillator to 64MHz
    OSCCONbits.IRCF = 7;
    OSCTUNEbits.PLLEN = 1;

No recibo nada, supongo que el error está en la configuración, no sé si me olvido de algun registro por configurar.

Saludos!!!
Título: Re:CAN BUS para XC8
Publicado por: MerLiNz en 06 de Abril de 2016, 19:31:02
el nodo que pretendes escuchar tiene la misma configuracion de velocidad?
Título: Re:CAN BUS para XC8
Publicado por: micro_pepe en 07 de Abril de 2016, 06:48:44
el nodo que pretendes escuchar tiene la misma configuracion de velocidad?

El nodo funciona a 125KB/s, para esa velocidad la configuración que pongo es esta:

Código: [Seleccionar]
//  125 Kbps @ 64MHz
        BRGCON1 = 0x8F; //0000 0111     //SJW=3TQ     BRP  15
        BRGCON2 = 0xB8; //1011 1000     //SEG2PHTS 1    sampled once  PS1=8TQ  PropagationT 1TQ 
        BRGCON3 = 0x05; //0000 0101     //PS2  6TQ

pero no estoy seguro de que funcione a esa velocidad ¿hay alguna forma de medirla en el pic?

Saludos!!!
Título: Re:CAN BUS para XC8
Publicado por: MerLiNz en 07 de Abril de 2016, 07:08:55
Ambos deben ir a la misma velocidad, si el nodo va a 125kbps y el pic a 500kbps (segun lo que has puesto en el codigo) entonces no detectara los mensajes correctamente.

Detectar la velocidad es algo complicado, lo mas sencillo es ir probando velocidades hasta que funcione. Lo tipico, 100kbps, 125, 150, 200...
Título: Re:CAN BUS para XC8
Publicado por: micro_pepe en 07 de Abril de 2016, 10:52:39
Bueno, tengo el código del nodo con el que quiero comunicarme, está configurado para 125Kb/s, mi configuración para esa velocidad es esta:

Código: [Seleccionar]
//  125 Kbps @ 64MHz
        BRGCON1 = 0x0F; //0000 0111     //SJW=1TQ     BRP  15
        BRGCON2 = 0xB8; //1011 1000     //SEG2PHTS 1    sampled once  PS1=8TQ  PropagationT 1TQ
        BRGCON3 = 0x05; //0000 0101     //PS2  6TQ

entonces suponiendo bien configurada la velocidad, el error tiene que estar en otro sitio.

Saludos!!!
Título: Re:CAN BUS para XC8
Publicado por: MerLiNz en 07 de Abril de 2016, 16:22:45
Mira con el osciloscopio, incluso si  tienes un analizador logico te sera muy util
Título: Re:CAN BUS para XC8
Publicado por: rotting79 en 08 de Abril de 2016, 00:15:31
hey there

it has been a while since last time around here, but anyways...

coincidentally I'm start working on the PIC18F26K80 as well, and yesterday I started the library, so from my last CANBus project, it is far from where am I right now, and as soon I got something "good" I will post it, till then just some pictures of the board for this project so far

Hola

que ha pasado un tiempo desde la última vez por aquí, pero de todos modos ...

casualmente estoy empezar a trabajar en la PIC18F26K80 así, y ayer comenzó la biblioteca, por lo que desde mi último proyecto CAN Bus, es muy lejos de donde estoy en este momento, y en cuanto llegué algo "bueno" post-it, hasta entonces sólo algunas imágenes de la tabla para este proyecto hasta el momento


(https://lh3.googleusercontent.com/-ekJjnUxLeLU/VwciqhWYpkI/AAAAAAAAHFQ/VdDNxFKsN2YWMPUNkdAPjX0j0US24l_Jw/w1580-h889-no/16%2B-%2B1)

(https://lh5.googleusercontent.com/-M4ATvEaKLE0/VwciqqIYhaI/AAAAAAAAHFU/pcIXZT0_-NYOGIYS-TVYIkU8lKwLhKLkA/w1580-h889-no/16%2B-%2B2)
Título: Re:CAN BUS para XC8
Publicado por: micro_pepe en 08 de Abril de 2016, 13:02:26
Bueno, ya lo solucioné, era una máscara mal puesta, ya recibo broadcast, ahora estoy filtrando mensajes de otro tipo.

Saludos!!!