Autor Tema: Mis experiencias con el BUS CAN  (Leído 595291 veces)

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

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7838
Mis experiencias con el BUS CAN - Esquematico Placa
« Respuesta #150 en: 10 de Diciembre de 2007, 13:14:54 »
Aquí les pongo el esquematico, luego pondré un link al .pdf, así pueden bajarlo a sus máquinas...

« Última modificación: 10 de Diciembre de 2008, 19:12:56 por MGLSOFT »
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7838
Re: Mis experiencias con el BUS CAN - Esquematico Placa
« Respuesta #151 en: 10 de Diciembre de 2007, 13:22:40 »
Aquí les pongo el  link al .pdf, así pueden bajarlo a sus máquinas...

Placa en pdf
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3484
    • Mensajes de la Virgen María
Re: Mis experiencias con el BUS CAN
« Respuesta #152 en: 10 de Diciembre de 2007, 13:36:19 »
Muchas, muchas, muchas gracias  :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

-Mi propio Foro de Meteorología
www.meteorologiafacil.com.ar/foros/index.php

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7838
Re: Mis experiencias con el BUS CAN
« Respuesta #153 en: 10 de Diciembre de 2007, 13:54:32 »
Citar
El PLC es un TWIDO de TELEMECANIQUE (grupo Schneider).
El uso del PLC es por que ya dispongo del mismo, y también por el grado de fiabilidad en horas de funcionamiento.
Otra de las ventajas es que la medida ya que su reducido espacio permite introducirlo en la caja de los térmicos de la vivienda sobre carril DIN.
Pregunta:
Ese PLC tiene CAN o CANOpen ?? :shock:
Mira que hay una diferencia importante de protocolo a favor de CANOpen....

Citar
Antes te he realiza la consulta sobre como has programado el MCP2515... Yo compre para las primeras pruebas este kit de desarrollo (te adjunto el link del PDF http://ww1.microchip.com/downloads/en/DeviceDoc/51416a.pdf ), y no he tenido narices a realizar la programación. Supongo que tu lo estas programando mediante conector ICSP. Pero claro lo que no entiendo es como lo has configurado.

Si tienes un doc de como programar el tema o me comentas donde puedo bajar documentación para la programación del mismo.
Yo me he leído al documentación de microchip y no he conseguido nada. También me hace falta saber el programador que usas (yo uso el USB LITE) pero en el WIN800 no da soporte para el MCP2515.

Si ya tienes esa placa desarrollo, y has leido la hoja de datos del MCP2515, habras visto que es un controlador CAN, es decir tiene todos los elementos para establecer la comunicación en el bus CAN (usando un transceiver como el MCP2551).
No tiene inteligencia propia, necesita del uso de un Micro para tenerla, y la configuración de sus registros se hace por medio de un BUS SPI, que veras como se implementa en el esquematico de la placa mía, donde uso un MCP2515 para comunicar un PIC16F876 en el Nodo B y también uso otro (el mismo que lo cambio de zócalo) para comunicarme desde una PC...

El MCP2515 NO se programa desde un programador, debes haber interpretado esto en mis comentarios sobre los Nodos C y D de mi placa, pero esos dispositivos son MCP25050, expansores I/O a traves de CAN, que hasta donde investigué solo Microchip fabrica algo parecido...

Cualquier duda me comentas...
 :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5102
    • uControl
Re: Mis experiencias con el BUS CAN
« Respuesta #154 en: 10 de Diciembre de 2007, 15:41:07 »
Aquí les pongo el  link al .pdf, así pueden bajarlo a sus máquinas...

Placa en pdf


 :D :D QUE HIJO DE POTTER!!!!!!!!!!  :D :D
Marcos, es impresionante ese circuito!  8)

Felicitaciones por hacer andar algo asi....
(que lejos estoy!!!!!!!!!!!!!!!  :shock:)

Ariel.

Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7838
Re: Mis experiencias con el BUS CAN
« Respuesta #155 en: 10 de Diciembre de 2007, 15:43:17 »
Aquí les pongo el  link al .pdf, así pueden bajarlo a sus máquinas...

Placa en pdf


 :D :D QUE HIJO DE POTTER!!!!!!!!!!  :D :D
Marcos, es impresionante ese circuito!  8)

Felicitaciones por hacer andar algo asi....
(que lejos estoy!!!!!!!!!!!!!!!  :shock:)

Ariel.



Cual?? :shock: :shock:

Harry o Billy ?? :mrgreen: :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado pierno10

  • PIC10
  • *
  • Mensajes: 25
Re: Mis experiencias con el BUS CAN
« Respuesta #156 en: 10 de Diciembre de 2007, 20:21:14 »
Buenas MGLSOFT!!!

1º- Lo primero es pedirte perdon porque ayer con las cosas del as prisas me equivoque con el tema delos PIC.
Si es cierto ayer me te dije lo  del mcp2515, pero no se como cometí este error. Perdón  :( . Los que tengo que de programar son los MCP25050 y los MCP25020. Esos si que hay que programarlos, y la gente de micro chip me dice que lo puedo hacer de la placa de desarrollo es la de los MCP250xx.
Con esta y el programa que me han dado los de micro chip (que se llama MCP250xx programer version 1.1) no soy capaz de programarlos.
Estos chip ahora mismo no les estoy dando uso por que no se como hacer ir, pero bueno espero que todo llegara.

2º- Lo segundo es que el PLC tiene CANopen. Te he dejado una foto para descargar. Si te interesa te puedo pasar mas informacion sobre el tema del PLC.


Cambiando de tercio....
Bueno lo que estoy haciendo con los otros son 18F2580 es intentar mandar un mensaje de uno al otro y por lo menos que se vean, que de momento no lo he conseguido. Por eso te pedí el esquema de tu placa de desarrollo para poder fabricarla y por lo menos tener claro que si no comunica es error de HW y no se SW.

Os pego aquí el código de programa muy básico a ver si alguien lo puede verificar y asegurarme que funciona correctamente y así por lo menos me podre centrar en donde tengo ahora mismo el error.
La comunicacion que pretendo mantener es que emita de momento el NODO1 y el NODO2 interprete lo que manda el NODO1



// *************** ESTO SERIA NODO1 que solo manda mensajes. El 18F2580_BASIC_CAN.hex
Código: [Seleccionar]

unsigned short init, init_send, len, aa2;
unsigned char count,  data[8];
long id;
unsigned short zr, cont, oldstate;



void main() {

// ******************** CONFIGURACION OSCILADOR INTERNO  *******************//
// Con esta configuracion no sera necesario instalar oscilador externo, de  //
// este modo ganaremos un par RA6 y RA7 I/O  pag 27 manual 18F2580          //

 OSCTUNE = 0x8F;  // OSCILADOR ineterno a maxima frecuencia 8Mhz Pag 27
 OSCCON = 0xFF;   // Pag 30
 
// ******************* CONFIGUATACION DE LOS PUERTOS        ****************//
// con el TRIS_ lo que decimos si el bit = 1 que es entrada y =0 que es salida
 TRISA = 0x00;
 ADCON0 = 0;     // con esto digo q NO uso los conversores A/D pag 247 manual
 ADCON1 = 0x0F;  // y q I/O son digitales para A,B,C pag 248 manual del 18F2580
 // OJO con la asignacion a los registros ADCON0 y ADCON1, si no la haces no
 // funcionan como entradas digitales y lospulsadores RA0...RA3 no funcionan.


 TRISB = 0X04; //Pin CAN TX lo congfiguro como digital OUT
 LATC.F2 = 0;

 //TRISB.F3 = 1; //Pin CAN RX lo congfiguro como digital INPUT
 LATB.F3 =0;





 TRISC = 0xFF;
 // La configuracion de los puertos de SALIDA se realiza mediante la sentancia
 // TRIS, pero ahora el acceso a estos puertos se realiza mediante la sentencia
 // LATX. Siendo X el nombre del puerto en cuestion. OJO ESTO ES SOLO PARA LOS
 // PUERTOS DE SALIDA OUTPUT.  (Pag 130 del manual 18F2580)
  LATA = 0;

// *******************  CONFIGURACION CAN BUS PARA 500.000 Kbs ***************//
  init = 0;
  init_send = 0;
  aa2 = 0;

  init_send =  CAN_TX_PRIORITY_0 &           // Form value to be used
          CAN_TX_XTD_FRAME &            //  with CANSendMessage
          CAN_TX_NO_RTR_FRAME;

  init =   CAN_CONFIG_SAMPLE_THRICE &    // Form value to be used
          CAN_CONFIG_PHSEG2_PRG_ON &    //  with CANInitialize
          CAN_CONFIG_STD_MSG &
          CAN_CONFIG_DBL_BUFFER_ON &
          CAN_CONFIG_VALID_XTD_MSG &
          CAN_CONFIG_LINE_FILTER_OFF;


  data[0] = 9;

  // CANInitialize(SJW, BRP, PHSEG1, PHSEG2, PROPSEG, CAN_CONFIG_FLAGS);
  CANInitialize(0,1,1,2,1,init);              // initialize CAN

  // CANSetOperationMode(mode, wait_flag);
  CANSetOperationMode(CAN_MODE_CONFIG,0xFF); // Pasamos a modo configuracion

  id = -1;   // 0xFFFFFFFFFFFFFFFF

  // Configuramos las mascaras con todo a 1, ya que id=(-1 q es lo mismo 0xfffffffffffff)
  // CAN_CONFIG_XTD_MSG se refiere a CAN extendido
  CANSetMask(CAN_MASK_B1,id,CAN_CONFIG_XTD_MSG);   // set all mask1 bits to ones
  CANSetMask(CAN_MASK_B2,id,CAN_CONFIG_XTD_MSG);   // set all mask2 bits to ones

  CANSetFilter(CAN_FILTER_B2_F3,3,CAN_CONFIG_XTD_MSG); // set id of filter B1_F1 to 3
  CANSetOperationMode(CAN_MODE_NORMAL,0xFF);       // set NORMAL mode

  LATA = 0x0;

  for(id=0; id<8;id++)
  {
   data[id]=0;
  }

  //CANWrite(id,data,1,aa1);
  count=0;
  id = 12111;
  while (1) {
    LATA.F1 = ~LATA.F1;                    //     output second byte at portA

    if(count==5)
    {
     data[0]= LATA.F0;
     CANWrite(id, data, 8, init_send);
     count=0;
     LATA.F0 = ~LATA.F0;
    }

    Delay_ms(1000);
    count++;
  }
}//~!



//************************** EL NODO 2 solo los recibe.    18F2580_ESPEJO_CAN.hex ************************////


Código: [Seleccionar]
unsigned short aa, aa1, len, aa2;
unsigned char data[8];
long id;
unsigned short zr;


void main() {

// ******************** CONFIGURACION OSCILADOR INTERNO  *******************//
// Con esta configuracion no sera necesario instalar oscilador externo, de  //
// este modo ganaremos un par RA6 y RA7 I/O  pag 27 manual 18F2580          //

 OSCTUNE = 0x8F;  // OSCILADOR ineterno a maxima frecuencia 8Mhz Pag 27
 OSCCON = 0xFF;   // Pag 30
 
// ******************* CONFIGUATACION DE LOS PUERTOS        ****************//
// con el TRIS_ lo que decimos si el bit = 1 que es entrada y =0 que es salida
 TRISA = 0x00;
 ADCON0 = 0;     // con esto digo q NO uso los conversores A/D pag 247 manual
 ADCON1 = 0x0F;  // y q I/O son digitales para A,B,C pag 248 manual del 18F2580
 // OJO con la asignacion a los registros ADCON0 y ADCON1, si no la haces no
 // funcionan como entradas digitales y lospulsadores RA0...RA3 no funcionan.


 TRISB = 0X04; //Pin CAN TX lo congfiguro como digital OUT
 LATC.F2 = 0;

 //TRISB.F3 = 1; //Pin CAN RX lo congfiguro como digital INPUT
 LATB.F3 =0;



  aa = 0;
  aa1 = 0;
  aa2 = 0;

  aa1 =  CAN_TX_PRIORITY_0 &           // Form value to be used
          CAN_TX_XTD_FRAME &            //  with CANSendMessage
          CAN_TX_NO_RTR_FRAME;

  aa =   CAN_CONFIG_SAMPLE_THRICE &    // Form value to be used
          CAN_CONFIG_PHSEG2_PRG_ON &    //  with CANInitialize
          CAN_CONFIG_STD_MSG &
          CAN_CONFIG_DBL_BUFFER_ON &
          CAN_CONFIG_VALID_XTD_MSG &
          CAN_CONFIG_LINE_FILTER_OFF;

  data[0] = 0;
  //CANInitialize(1,1,3,3,1,aa);              // initialize CAN
  CANInitialize(0,1,1,2,1,aa);              // initialize CAN
  CANSetOperationMode(CAN_MODE_CONFIG,0xFF); // set CONFIGURATION mode
  id = -1;

  CANSetMask(CAN_MASK_B1,id,CAN_CONFIG_XTD_MSG);   // set all mask1 bits to ones
  CANSetMask(CAN_MASK_B2,id,CAN_CONFIG_XTD_MSG);   // set all mask2 bits to ones

  CANSetFilter(CAN_FILTER_B2_F3,12111,CAN_CONFIG_XTD_MSG); // set id of filter B1_F1 to 3

  CANSetOperationMode(CAN_MODE_NORMAL,0xFF);       // set NORMAL mode

  //id = 3;
  LATA.F5 = 1;

  while (1) {
    zr = CANRead(&id , data , &len, &aa2);
    if ((id == 12111) && zr)
    {
      LATA.F0 = data[0];
      Delay_ms(1000);
                             // output data at portC
    }
    else
    {
     LATA.F5 = ~LATA.F5;
     Delay_ms(500);
    }

  }
}//~!


Este código es muy básico pero aun así no me funciona. Os he adjuntado directamente los ficheros .HEX por si alguien los puede probar. Aquí que ver que he configurado la velocidad del bus a 500.000 Kbs.
También fijaros en que no estoy usando cristal oscilador externo, estoy utilizando el oscilador interno del PIC que llega hasta 8Mhz.

Bueno de momento no os molesto mas con el tema....

Os agradezco el tiempo prestado y que paséis un buen día.


                       Un saludo

                                                         PERE.

PD: MGLSOFT muy bueno el esquema GRACIAS  :-/ . Remitirme si puedes el diseño de las pistas de la placa para insolar (el fotolito de las pitas) si es que lo tienes claro. GRACIAS DE NEW.

« Última modificación: 10 de Diciembre de 2007, 20:26:25 por pierno10 »

Desconectado jfh900

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3594
Re: Mis experiencias con el BUS CAN
« Respuesta #157 en: 10 de Diciembre de 2007, 20:38:41 »
MGLSOFT excelente trabajo. Una pregunta: ¿podrías poner una relación de los integrados utilizados y la utilidad de cada uno de ellos, con un pequeño dibujo de su conexión al bus o circuito?. Se que es mucho pedir pero seguro que nos aclararía a todos los integrados que son necesario.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7838
Mis experiencias con el BUS CAN
« Respuesta #158 en: 10 de Diciembre de 2007, 22:31:35 »
Citar
Si es cierto ayer me te dije lo  del mcp2515, pero no se como cometí este error. Perdón   . Los que tengo que de programar son los MCP25050 y los MCP25020. Esos si que hay que programarlos, y la gente de micro chip me dice que lo puedo hacer de la placa de desarrollo es la de los MCP250xx.
Con esta y el programa que me han dado los de micro chip (que se llama MCP250xx programer version 1.1) no soy capaz de programarlos.

OK, vamos por partes, como dijo Jack... :mrgreen: :mrgreen:

Sobre los MCP250xx ya estuve escribiendo en este hilo, de todos modos te comento lo que se:
La placa desarrollo de Microchip adolece de varios problemas de hardware y software (ver detalles en el propio foro de Microchip, donde muchos hacen consultas que nadie contesta ) , tema fatal para programar un dispositivo que es OTP...
Yo mismo utilize el software de Microchip para desarrollar mi aplicación, pero al hacer el archivo .hex, primero que si no le pones a mano la extensión no lo guarda como hex, ademas calcula mal el checksum, por lo cual ese software NO SIRVE!!! :lol:

Mi solución es escribirlo con las mismas plantillas que Microchip dió en la versión 5.50 del MPLab, y que ahora no volvi a ver en las versiones mas nuevas...
Luego lo grabo a traves del ICD40 de CCS directamente a traves del conector ICSP que deje a tal fin en el Nodo D.
Saco dos jumpers y pongo el dispositivo a grabar y Voila!!
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7838
Re: Mis experiencias con el BUS CAN
« Respuesta #159 en: 10 de Diciembre de 2007, 22:46:59 »
Citar
Lo segundo es que el PLC tiene CANopen. Te he dejado una foto para descargar. Si te interesa te puedo pasar mas informacion sobre el tema del PLC.

Je, je... :D :D
Si que tiene CANOpen!! :lol: :lol:
Menudo PLC tienes para jugar!!
Es un M340!!  te encargo si te sobra otro de esos para mi casa!! :D :D :-/ :-/

Igual estuve averiguando y el nuevo PLC Twido (creo que el modelo es Xtreme, y es antiexplosivo) tiene CAN en norma industrial...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7838
Mis experiencias con el BUS CAN
« Respuesta #160 en: 10 de Diciembre de 2007, 23:22:46 »
Yendo al tema que te tiene preocupado:
Creo que tienes dos problemas...

  • 1.-
Citar
// ******************** CONFIGURACION OSCILADOR INTERNO  *******************//
// Con esta configuracion no sera necesario instalar oscilador externo, de  //
// este modo ganaremos un par RA6 y RA7 I/O  pag 27 manual 18F2580          //

 OSCTUNE = 0x8F;  // OSCILADOR ineterno a maxima frecuencia 8Mhz Pag 27
 OSCCON = 0xFF;   // Pag 30

Estas tratando de llevar el PIC a trabajar con el BUS CAN a 500 KBPS y con el oscilador interno!!
Si mal no recuerdo ese oscilador no llega ni siquiera a la precisión de un oscilador integrado!!
Encima a 8 MHz la variación del oscilador se nota mucho mas, por lo tanto, para evitar esto te propongo que coloques un cristal externo de 8 MHz y sus capacitores de 20 pF , tal como veras en los circuitos que utiliza MikroC para sus nodos CAN.
Cuando se usan osciladores de baja velocidad y una rata de velocidad del BUS alta, el protocolo CAN basa su efectividad en la capacidad de resincronizar a sus nodos a traves del bit de sincronismo, para ello se incrementa al maximo la ventana de tiempo en que se permite encontrar dicho bit, ese segmento se llama SJW.

Para la tasa que quieres lograr nunca podra ser mayor a 2.

  • 2.-
Citar
  //CANInitialize(1,1,3,3,1,aa);              // initialize CAN
  CANInitialize(0,1,1,2,1,aa);              // initialize CAN

Aquí has cometido el pecado de retocar los valores prefijados de fábrica (léase MikroC) para configurar la velocidad del Nodo CAN, seguramente lo has hecho en tu desesperación por que funcionara, pero aunque soluciones el tema del cristal, deberas tener cuidado de ponerle a ambos nodos otra vez la configuración que tienes comentada arriba y no otra, ya que esa es la que necesitas para que el bus te funcione... :mrgreen: :mrgreen:
« Última modificación: 10 de Diciembre de 2007, 23:25:30 por MGLSOFT »
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7838
Re: Mis experiencias con el BUS CAN
« Respuesta #161 en: 10 de Diciembre de 2007, 23:31:17 »
MGLSOFT excelente trabajo. Una pregunta: ¿podrías poner una relación de los integrados utilizados y la utilidad de cada uno de ellos, con un pequeño dibujo de su conexión al bus o circuito?. Se que es mucho pedir pero seguro que nos aclararía a todos los integrados que son necesario.

Un saludo

Mira, creo que a lo largo del hilo (tal vez en forma desordenada) fui describiendo la funcionalidad de cada uno de los componentes "extraños", en cuanto a sus pines y conexión, tuve que matarme para hacer las librerias en Protel, para que cada pin tenga la descripción de sus funciones (en cada componente, incluso los micros), ademas estan las interconexiones al circuito en forma de conectores tipo buses, en realidad no se que mas ponerles para que sea bien explicito... :? :?
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado pierno10

  • PIC10
  • *
  • Mensajes: 25
Re: Mis experiencias con el BUS CAN
« Respuesta #162 en: 11 de Diciembre de 2007, 04:04:02 »
Buenos días MGLSOFT!!!

Atendiendo a tus correcciones ya he cambiado el tema de los cristales de y los he puesto de 16Mhz.

Si que es cierto que retoque el código de MikroC en un interno desesperado por ver si era eso lo necesario para realizar la comunicación. Pero claro también es verdad que puse el resultado de la configuración que me proporciono el programa BIT Time Calculator. De todos modos he realizado un recalculo de los parámetros y os he adjuntado 3 reports en PDF, de varias configuraciones. 3 de ellas con 16 time quanta y una de ellas con 8 time quanta. Notar que en todas ellas le he dado preferencia o mas quantas a la PROPAGATION... ¿no se si esto es del todo correcto????

Ahora bien con estos ajustes que te da el Bit Time Calculatorl, se mas o menos donde se corresponden con la función de MikroC todos a falta de uno el "Propagation Delay" yo se lo asigno este valor al "PROSEG" ya que la llamada a la función es tal que así :

Código: [Seleccionar]
// CANInitialize(SJW, BRP, PHSEG1, PHSEG2, [b]PROPSEG[/b], CAN_CONFIG_FLAGS);

  CANInitialize(2,0,8,6,1,init);              // initialize CAN

init =   CAN_CONFIG_SAMPLE_THRICE &    // Form value to be used
          CAN_CONFIG_PHSEG2_PRG_ON &    //  with CANInitialize
          CAN_CONFIG_STD_MSG &
          CAN_CONFIG_DBL_BUFFER_ON &
          CAN_CONFIG_VALID_XTD_MSG &
          CAN_CONFIG_LINE_FILTER_OFF;

MGLSOFT como tienes el report (PDF adjunto) de la conflagración de BIT TIME CALCULATOR, y la llamada a la función "CANInitialize(2,0,8,6,1,init); ". Aconsejame si ahora lo estoy realizando bien o también estoy en algún tipo de error...

MUCHAS GRACIAS  :-/  MGLSOFT por tu ayuda......................
Un saludo

                   PERE.




« Última modificación: 11 de Diciembre de 2007, 04:33:43 por pierno10 »

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7838
Re: Mis experiencias con el BUS CAN
« Respuesta #163 en: 11 de Diciembre de 2007, 08:05:21 »
Buenos días MGLSOFT!!!

Atendiendo a tus correcciones ya he cambiado el tema de los cristales de y los he puesto de 16Mhz.

Si que es cierto que retoque el código de MikroC en un interno desesperado por ver si era eso lo necesario para realizar la comunicación. Pero claro también es verdad que puse el resultado de la configuración que me proporciono el programa BIT Time Calculator. De todos modos he realizado un recalculo de los parámetros y os he adjuntado 3 reports en PDF, de varias configuraciones. 3 de ellas con 16 time quanta y una de ellas con 8 time quanta. Notar que en todas ellas le he dado preferencia o mas quantas a la PROPAGATION... ¿no se si esto es del todo correcto????

Ahora bien con estos ajustes que te da el Bit Time Calculatorl, se mas o menos donde se corresponden con la función de MikroC todos a falta de uno el "Propagation Delay" yo se lo asigno este valor al "PROSEG" ya que la llamada a la función es tal que así :

Código: [Seleccionar]
// CANInitialize(SJW, BRP, PHSEG1, PHSEG2, [b]PROPSEG[/b], CAN_CONFIG_FLAGS);

  CANInitialize(2,0,8,6,1,init);              // initialize CAN

init =   CAN_CONFIG_SAMPLE_THRICE &    // Form value to be used
          CAN_CONFIG_PHSEG2_PRG_ON &    //  with CANInitialize
          CAN_CONFIG_STD_MSG &
          CAN_CONFIG_DBL_BUFFER_ON &
          CAN_CONFIG_VALID_XTD_MSG &
          CAN_CONFIG_LINE_FILTER_OFF;



A mi el Can Bit Timing Calculator me da otros valores.... :shock: :shock:
  CANInitialize(1,0,8,6,1,init);              // initialize CAN

Si ambos PICs tienen el mismo cristal y configuración (el bit de config H4 del PIC en cero), debería funcionarte, ten en cuenta de insertar al menos una resistencia de fin de línea de 120 OHMs.... :mrgreen: :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado pierno10

  • PIC10
  • *
  • Mensajes: 25
Re: Mis experiencias con el BUS CAN
« Respuesta #164 en: 11 de Diciembre de 2007, 08:47:13 »
Hola MGLSOFT!!!

En primer lugar agradecerte el que me contestes con tanta rapidez...  :-/ GRACIAS  :-/
Si que es cierto que el programa BIT Time Calculator me da otros valores, exactamente los mismo que a ti.
Mi consulta es  ¿He de poner esos valores tal como aparecen ???? o seria mas interesante el modificar los valores para que le demos prioridad a PROPAGATION... ¿¿que significa el % que aparece en el report??

Bueno de todos modos también el programa me da dos posible soluciones uno con quanta 8 y otro son quanta 16.
Con la respuesta que me das, entiendo que he de usar la configuración de quanta 16.

CANInitialize(1,0,8,6,1,init);              // initialize CAN

El bit de config H4 del PIC en cero... No entiendo lo del H4!!!

Bueno muchas gracias de nuevo por tu tiempo dedicado.

Un saludo

                      PERE.


 

anything