Autor Tema: Conflito entre mensajes CAN y interrupciones  (Leído 2928 veces)

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

Desconectado Saaac

  • PIC10
  • *
  • Mensajes: 17
Conflito entre mensajes CAN y interrupciones
« en: 07 de Diciembre de 2011, 07:20:50 »
Hola,

La duda que es comento es del micro MC68HC908GZ60CFJ y el software es el codewarrior Coldfire (al menos eso creo en su dia RICHI777 me comento que imagen que adjuntas, que es del Proccess Expert no del CodeWarrior.).

El conflicto es el siguiente he realizado un software de varios micros interconexionados entre ellos mediante comunicacion CAN y cuando se genera un mensaje(msg_1) en concreto todos deben contestar al instante con una respuesta(msg_2) especifica y diferente en cada una de la placas.
Pues el problema es que cada ciertas preguntas(msg_1) a veces la respuestas(msg_2) de las placas coinciden en el identificador , es decir alguna placas envian su mensaje(msg_2) del Identificador con las de otras (repetidas).
Esto lo he conseguido solucionar deshabilitando las interrupciones donde envio los mensajes de CAN pero no entiendo el porque tengo que deshabilitar las interrupciones y en que afectan al identificador de los mensajes CAN.

leyenda
---------
(msg_1) ->Mensaje peticion respuestas
(msg_2) ->Mensaje respuestas, falla a veces repitiendose el identificador de mensajes que deberian ser distintos

Muchas gracias.

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Conflito entre mensajes CAN y interrupciones
« Respuesta #1 en: 07 de Diciembre de 2011, 08:53:14 »
que codigo contiene la interrupcion?? La interrupcion es de recepcion? O envio?

La lectura de la recepcion del msg2 la haces mediante la interrupcion?? O polling??

Desconectado Saaac

  • PIC10
  • *
  • Mensajes: 17
Re: Conflito entre mensajes CAN y interrupciones
« Respuesta #2 en: 07 de Diciembre de 2011, 12:08:06 »
Hola, Gracias MerLiNz.

P: que codigo contiene la interrupcion??
R: La interrupcion de recepcion del primer msg (msg1), unicamente activa un bit para realizar el envio del 2 mensaje (msg2), que es el que falla.

P: La interrupcion es de recepcion? O envio?
R: Hay interrupcion en la recepcion del CAN

P: La lectura de la recepcion del msg2 la haces mediante la interrupcion??
R: Si.

PD: Deberias saber que el uC que disponemos es de 8 bits y que para realizar el calculo del Identificador del CAN se realiza un calculo de 29 bits. Este calculo se realizan en unas librerias internas que nos aporta la BEAN del FREESCALE.(No se si ese calculo a lo mejor es erroneo y es ese el posible problema.).

Gracias.

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Conflito entre mensajes CAN y interrupciones
« Respuesta #3 en: 07 de Diciembre de 2011, 22:57:29 »
no se muy bien como va el can en esta mcu, pero da la sensacion de que cuando estas leyendo un mensaje(2) recibes otro y los datos se cambian o algo asi, habria que ver como va tu codigo, pero no se si lo llegare a entender porque nunca he usado freescale. Si tienes la posibilidad de usar un debugger puedes poner un breakpoint cuando recibes un mensaje y asi ves donde esta el problema viendo lo que recibes (registros) y lo que realmente procesas.

Desconectado Saaac

  • PIC10
  • *
  • Mensajes: 17
Re: Conflito entre mensajes CAN y interrupciones
« Respuesta #4 en: 08 de Diciembre de 2011, 04:41:27 »
Gracias, otra vez.

He intentado lo de debugar pero el micro no puede debugar el CAN. De todas formas ya te digo que desactivando las interrupciones a la hora de enviar el (msg_2) se soluciona. Solo queria intentar entender el porque.

Gracias.