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

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

Desconectado arqui_lester

  • PIC10
  • *
  • Mensajes: 25
Re: Mis experiencias con el BUS CAN
« Respuesta #465 en: 05 de Junio de 2008, 21:22:12 »
HOLA MARCO ya baje el software para utilizar el mcp2510 con le canking ya funciona asi con el circuito que te enseñe

a simple vista funciona bien voy a chequear bien luego te aviso, estoy terminando de montar el otro nodo can en circuito impreso despues lo conecto al canking haber que tal muchas gracias hombre estamos en contacto
cuidate

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7907
Re: Mis experiencias con el BUS CAN
« Respuesta #466 en: 06 de Junio de 2008, 08:02:48 »
Aleluya!!
Me alegro mucho.
Yo estoy haciendo funcionar (anoche tuve una aproximacion a que funcionara bien) el hardware del Sniffer conectado al CanKing via puerto serial.
Uso un PIC18F4580 en vez del PIC18F458 para el que viene hecho el software.
Tuve que aprender un poco de C18, ya que esta hecho en ese entorno la aplicacion, a pesar que nunca lo habia agarrado, tengo que decir a favor de el que no me desagrada el entorno que tiene.
Igual extraño mi CCS querido. :mrgreen: :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado realpe

  • PIC10
  • *
  • Mensajes: 2
Re: Mis experiencias con el BUS CAN
« Respuesta #467 en: 08 de Junio de 2008, 22:32:54 »
Hola a todos
queria comentar que tengo una aplicacion con una red can pero con el micro pic18f258 mas el mcp2551,  para eso utilizo las librerias del c18. saludos.

Desconectado arqui_lester

  • PIC10
  • *
  • Mensajes: 25
Re: Mis experiencias con el BUS CAN
« Respuesta #468 en: 09 de Junio de 2008, 00:07:36 »
si  pudieras publicar el codigo para verlo, ayudaria mucho.


Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7907
Re: Mis experiencias con el BUS CAN
« Respuesta #469 en: 09 de Junio de 2008, 08:21:27 »
Si, seria bueno, ya publicamos codigo de CCS y de MikroC, no vendria mal encontrar aqui cosas hechas con todos los compiladores, incluso Basic y otros mas... :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado realpe

  • PIC10
  • *
  • Mensajes: 2
Re: Mis experiencias con el BUS CAN
« Respuesta #470 en: 14 de Junio de 2008, 00:05:58 »
Listo, en el transcurso de la proxima semana lo estare, montando.

Desconectado arqui_lester

  • PIC10
  • *
  • Mensajes: 25
Re: Mis experiencias con el BUS CAN
« Respuesta #471 en: 24 de Junio de 2008, 01:40:42 »
hola marcos que tal,
he regresado sabes no se si te acuerdas de mi, ya termine el nodo can para la pc e instale el canking de microchip y me funciona bien tengo problemas con el nodo can con  el micro no funciona trato de mandar varias tramas al micro y no las recibe y trato de mandar tramas desde el micro y no las manda, ya revise los registros de configuracion estan correctos segun la pagina bit timing del can,

sabes me he fijado que cuando mido el voltaje desde tierra hasta rxcan del micro mide 5 voltios y en txcan tambien, no si esto es correcto porque el puerto b esta configurado para que el pin rb2 sea salida y rb3 entrada, no si siendo entrada tiene que tener 5 voltios
tambien he notado que cuando mido el voltaje entre tierra y tx el sniffer empiesa a recibir mensajes raros con valores que nose de donde salen
bueno espero que me puedas ayudar

tambien estoy queriendo armar un ICD PARA revisar el codigo en chip si tienes alguno me avisas

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7907
Re: Mis experiencias con el BUS CAN
« Respuesta #472 en: 24 de Junio de 2008, 08:06:07 »
Hola ArquiLester.
Podras subir aqui el esquematico y el codigo fuente que no te funciona??
Las tensiones del bus CAN son diferenciales, por lo tanto no se si estaras midiendolas bien o no respecto a que tierra... :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado arqui_lester

  • PIC10
  • *
  • Mensajes: 25
Re: Mis experiencias con el BUS CAN
« Respuesta #473 en: 25 de Junio de 2008, 21:35:02 »
el codigo que estoy probando es el anexo

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7907
Re: Mis experiencias con el BUS CAN
« Respuesta #474 en: 26 de Junio de 2008, 09:44:11 »
Voy por la segunda vez que escribo este mensaje...

Hacia mucho que no leia un programa completo en Assembler... :lol: :lol:
Lo que veo es lo siguiente:

  • El codigo de la configuracion esta bien siempre y cuando tu PIC18F258 tenga un cristal de 20 Mhz.
  • En el programa de aplicacion tienes una etiqueta llamada LAZO, el programa deberia volver alli en algun momento, pero todas las rutinas vuelven (o intentan hacerlo) a una etiqueta llamada Loop, que curiosamente esta comentada debajo de LAZO.
  • Ese error seguramente hace que pierdas el control del programa y simplemente el PIC se pega un viaje vaya a saber adonde, cosa que comprobaras si activas el WDT
  • El codigo tambien pone mascaras a los filtros de recepcion, sacalos porque tambien alli estarias en un problema, puede que no interprete un mensaje directo a su ID.

Corrige esos problemas y la seguimos...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado earmc

  • PIC10
  • *
  • Mensajes: 1
Re: Mis experiencias con el BUS CAN
« Respuesta #475 en: 27 de Junio de 2008, 22:23:28 »
Hola, soy nuevo en el tema del bus can y me gustaria saber si es posible realizar la transmision de informacion entre dos pics sin necesidad del transaiver. O si existe alguna forma de realizarlo con electronica convencional. En verdad les agradezco la informacion ke puedan suministrarme. A y a proposito si tienen un ejemplo en ASM les agradezco muchisimo ya ke e estado trabando como 2 semanas en el mplab y no e podido avanzar mucho . Adios y gracias de antemano

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7907
Re: Mis experiencias con el BUS CAN
« Respuesta #476 en: 28 de Junio de 2008, 08:02:48 »
Hola, soy nuevo en el tema del bus can y me gustaria saber si es posible realizar la transmision de informacion entre dos pics sin necesidad del transaiver. O si existe alguna forma de realizarlo con electronica convencional. En verdad les agradezco la informacion ke puedan suministrarme. A y a proposito si tienen un ejemplo en ASM les agradezco muchisimo ya ke e estado trabando como 2 semanas en el mplab y no e podido avanzar mucho . Adios y gracias de antemano
Respuesta a la pregunta del transceiver, la respuesta es no.
Precisamente el transceiver es quien implementa la parte fisica del protocolo.
Hay un ejemplo en ASM en los POST anteriores, y en la pagina de Microchip tambien encontraras varios ejemplos en:
http://www.microchip.com/can

Bienvenido al foro!!
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado quirogaareal

  • PIC16
  • ***
  • Mensajes: 180
Re: Mis experiencias con el BUS CAN
« Respuesta #477 en: 30 de Junio de 2008, 00:12:04 »
Hola :

Mira por el problema de transmision con can fijate y estudia bien la implementacion del bit "RTR" puede que este ahi el problema.
Yo estuve viendo algo de can hasta marzo . pero debido a un cambio de trabajo tuve que dejar el proyecto.
Repito fijate si es eso por lo que no te funciona

Saludos

Desde Rio Gallegos
Recuerda : Si una mujer te ama de verdad no te pedira ni Matrimonio, Ni concubinato , Ni hijos, No te mentira , ni buscara que cambies de opinion con respecto a las tres primeras opciones.

Saludos

desde Cordoba Argentina

Desconectado arqui_lester

  • PIC10
  • *
  • Mensajes: 25
Re: Mis experiencias con el BUS CAN
« Respuesta #478 en: 01 de Julio de 2008, 00:19:36 »
el programa esta divido en dos partes una parte para transmitir y otra para resivir  mensajes, LAZO  esta en el area de resivir
la cosa esta que antes de entrar a la configuracion de los registros de recepcion salto hasta el area donde se resiven  mensajes y ahi se queda
bueno eso es lo que  he probado, yo estoy seguro que el sniffer con el mcp2510 funciona ya lo probe y hasta en loopback funciona,entonces se que puedo mandar tramas desde la pc por lo que estoy tratando de recibir con el pic

Código: ASM
  1. #include        "p18f258.inc"
  2. #include        "CAN18xx8.inc"
  3.  
  4.  
  5.  
  6. ; oscillator selection
  7.         CONFIG  OSC = HS
  8.  
  9. #define TX_TEST
  10. #define RX_TEST
  11.  
  12.        
  13.         UDATA
  14. CANDt1  RES     02
  15. Tmp     equ     0xff
  16. #ifdef  RX_TEST
  17. RxMsgID         RES     04
  18. RxData          RES     08
  19. RxDtLngth       RES     01
  20. RxFlag          RES     01
  21. RxFilterMatch   RES     01
  22. #endif
  23.  
  24.  
  25. ;***********************************************
  26. ;               DEFINICION DE BLOQUE
  27. ;***********************************************
  28.  
  29.         cblock  0x000
  30.         salto
  31.         endc
  32.  
  33.  
  34.        
  35.  
  36.  
  37. Sta     CODE    0x00
  38.         bra     Main
  39.  
  40. ;************INTERRUPCIONES DE ALTA PRIORIDAD************
  41. IHP     CODE    0x08
  42.         GOTO    INTER0
  43. ;#ifndef CANIntLowPrior
  44.  ;       call    CANISR          ;Call CAN Interrupt Service routine
  45. ;#endif
  46.  
  47. ;       btfss           INTCON,INT0IF   ;revisa int0
  48. ;       goto            EXITIH          ;SI NO ES INT0 SALIR
  49. ;       goto            INTER0          ;ATENCION INT0
  50. ;EXITIH
  51. ;       BCF     PIR3,0
  52.  ;       retfie  FAST
  53.  
  54. ;************INTERRUPCIONES DE BAJA PRIORIDAD*************
  55. IHL     CODE    0x018
  56.  
  57. #ifdef  CANIntLowPrior
  58.         movwf   W_IL            ;Save W
  59.         movff   STATUS,STAT_IL  ;Save STATUS
  60.         movff   BSR,BSR_IL      ;Save BSR
  61.         call    CANISR          ;Call CAN Interrupt Service routine
  62.         movff   BSR_IL,BSR      ;Restore BSR
  63.         movff   STAT_IL,STATUS  ;Restore Status
  64.         movf    W_IL,W          ;Restore W reg
  65.         ;return
  66. #endif
  67.  
  68.         btfss   INTCON3,0       ;REVISA INT1
  69.         goto    EXITIL          ;SI NO ES INT1 SALIR
  70.         goto    INTER1          ;ATENCION INT1
  71.  
  72. EXITIL:
  73.         BCF     INTCON3,0
  74.         retfie  FAST
  75.  
  76.  
  77.  
  78.  
  79. Test1   CODE
  80.  
  81. Main:
  82.  
  83. ;Define TRIS bits to define CANRx pin as i/p and CANTx pin as o/p
  84.  
  85.        ;Configuracion de los Puertos del PIC
  86.  
  87. ;**********************PUERTO A*******************************
  88.         CLRF    PORTA                                   ;CONFIGURA PORT A COMO SALIDA DIGITAL                          
  89.                                                         ; Puerto A SALIDA  RA0
  90.         movlw   0x07                           
  91.         iorwf   ADCON1,f
  92.         CLRF    TRISA                                   ;
  93.         BSF     PORTA,0                         ; apaga salidas
  94.        
  95. ;**********************PUERTO B*******************************
  96.         CLRF    PORTB
  97.         MOVLW   B'00001011'                             ; Puerto B con entradas RB0, RB1
  98.         MOVWF   TRISB                                   ; configura R2 y R3 para TX y RX del CAN
  99.                                                         ; el resto salidas
  100.                                                        
  101. ;**********************PUERTO C*******************************
  102.         CLRF    PORTC                           ; Puerto C completo como SALIDAS
  103.         MOVLW   0x00
  104.         MOVWF   TRISC
  105. ;************** Configurando Interrupciones     **************
  106.  
  107.         bsf     RCON, IPEN              ; habilita prioridad de interrupcion
  108.         ;bsf    INTCON, GIEH            ; habilita prioridad alta
  109.         movlw   B'11010000'             ;
  110.         movwf   INTCON
  111.         movlw   B'00000000'             ; habilita interrupcion en flanco de bajada
  112.         movwf   INTCON2                 ; habilita interrupcion en flanco de bajada
  113.         movlw   B'00001000'             ; habilita prioridad BAJA para int1
  114.         movwf   INTCON3                 ; tambien habilita interrupcion 1
  115.        
  116.        
  117.         ;SETF   PIE3                                    ; HABILITA TODAS LAS INTERRUPCIONES DEL CAN
  118.         ;setf   IPR3                            ; Interrupciones CAN todas en High Priority
  119.         ;CLRF   PIR3
  120.  
  121. ;***************** CONFIGURACION DEL PROTOCOLO CAN****************
  122. ;configuracion inicial 125kbps@20MHz all valid messages
  123.  
  124.          CANInitialize   1, 0A, 3, 3, 1,CAN_CONFIG_ALL_VALID_MSG
  125.        
  126.         ;goto   RcvMsg
  127. ;Set Loop-back mode for testing in Stand alone mode
  128. ;       CANSetOperationMode     CAN_OP_MODE_LOOP        ;Loop back mode
  129.  
  130. #ifdef  RX_TEST
  131.  
  132. ;Set configuration mode
  133.         CANSetOperationMode     CAN_OP_MODE_CONFIG      ;
  134.  
  135. ;Following settings will ensure only following messages in Buf 0
  136. ; 0x25 and 0x125 (Filter Hit 0)
  137. ; 0x36 and 0x136 (Filter Hit 1)
  138.  
  139. ;Set Mask B0 to 0xfffffeff
  140.         CANSetReg CAN_MASK_B0, 0xfffffeff, CAN_CONFIG_XTD_MSG
  141. ;Set Filer 0 with 0x25
  142.         CANSetReg CAN_FILTER_B0_F1, 0x025, CAN_CONFIG_XTD_MSG
  143. ;Set Filer 1 with 0x36
  144.         CANSetReg CAN_FILTER_B0_F2, 0x036, CAN_CONFIG_XTD_MSG
  145.  
  146.  
  147.  
  148. ;Following settings will ensure only following messages in Buf 1
  149. ; 0x08,0x88, 0x1000008, 0x1000088 (Filter Hit 2)
  150. ; 0x06,0x86, 0x1000006, 0x1000086 (Filter Hit 3)
  151. ; 0x02,0x82, 0x1000002, 0x1000082 (Filter Hit 4)
  152. ; 0x01,0x81, 0x1000001, 0x1000081 (Filter Hit 5)
  153.  
  154. ;Set Mask B1 to 0xfeffff7f
  155.         CANSetReg CAN_MASK_B1,0xfeffff7f, CAN_CONFIG_XTD_MSG
  156. ;Set Filer 2 with 0x08
  157.         CANSetReg CAN_FILTER_B1_F1,0x08, CAN_CONFIG_XTD_MSG
  158. ;Set Filer 3 with 0x05
  159.         CANSetReg CAN_FILTER_B1_F2,0x06, CAN_CONFIG_XTD_MSG
  160. ;Set Filer 4 with 0x02
  161.         CANSetReg CAN_FILTER_B1_F3,0x02, CAN_CONFIG_XTD_MSG
  162. ;Set Filer 5 with 0x01
  163.         CANSetReg CAN_FILTER_B1_F4,0x01, CAN_CONFIG_XTD_MSG
  164.  
  165. ; Restore to Normal mode.
  166.         CANSetOperationMode     CAN_OP_MODE_NORMAL      ;
  167.  
  168. #endif
  169.  
  170.         GOTO    RcvMsg 
  171.        
  172. ;LAZO:
  173. #ifdef  TX_TEST
  174. ;-------------------------------
  175. ;Message 1, Data 01,02, ID 20
  176. Msg1Agn:
  177.         movlw   low(CANDt1)
  178.         movwf   FSR0L
  179.         movlw   high(CANDt1)
  180.         movwf   FSR0H
  181.         movlw   0x01
  182.         movwf   POSTINC0
  183.         movlw   0x02
  184.         movwf   POSTINC0
  185.         CANSendMessage  0x20,CANDt1,2,CAN_TX_XTD_FRAME
  186.         addlw   0x00            ;Check for return value of 0 in W
  187.         bz      Msg1Agn         ;Buffer Full, Try again
  188. ;-------------------------------
  189.  
  190.  
  191. ;-------------------------------
  192. ;Message 2, Data 03,04, ID 30
  193. Msg2Agn:
  194.         movlw   low(CANDt1)
  195.         movwf   FSR0L
  196.         movlw   high(CANDt1)
  197.         movwf   FSR0H
  198.         movlw   0x03
  199.         movwf   POSTINC0
  200.         movlw   0x04
  201.         movwf   POSTINC0
  202.         movlw   0xaa
  203.         movwf   POSTINC0
  204.         movlw   0xbb
  205.         movwf   POSTINC0
  206.         CANSendMessage  0x31,CANDt1,4,CAN_TX_XTD_FRAME
  207.         addlw   0x00            ;Check for return value of 0 in W
  208.         bz      Msg2Agn         ;Buffer Full, Try again
  209. ;-------------------------------
  210.  
  211.  
  212. ;-------------------------------
  213. ;Message 3, Data 05,06, ID 15
  214. Msg3Agn:
  215.         movlw   low(CANDt1)
  216.         movwf   FSR0L
  217.         movlw   high(CANDt1)
  218.         movwf   FSR0H
  219.         movlw   0x05
  220.         movwf   POSTINC0
  221.         movlw   0x06
  222.         movwf   POSTINC0
  223.         CANSendMessage  0x1,CANDt1,2,CAN_TX_XTD_FRAME
  224.         addlw   0x00            ;Check for return value of 0 in W
  225.         bz      Msg3Agn         ;Buffer Full, Try again
  226. ;-------------------------------
  227.  
  228.  
  229. ;-------------------------------
  230. ;Message 4, Data 07,08, ID 05
  231. Msg4Agn:
  232.         movlw   low(CANDt1)
  233.         movwf   FSR0L
  234.         movlw   high(CANDt1)
  235.         movwf   FSR0H
  236.         movlw   0x07
  237.         movwf   POSTINC0
  238.         movlw   0x08
  239.         movwf   POSTINC0
  240.         CANSendMessage  0x02,CANDt1,2,CAN_TX_XTD_FRAME
  241.         addlw   0x00            ;Check for return value of 0 in W
  242.         bz      Msg4Agn         ;Buffer Full, Try again
  243. ;-------------------------------
  244.  
  245.  
  246. ;-------------------------------
  247. ;Message 5, Data 09,0A, ID 10
  248. Msg5Agn:
  249.         movlw   low(CANDt1)
  250.         movwf   FSR0L
  251.         movlw   high(CANDt1)
  252.         movwf   FSR0H
  253.         movlw   0x09
  254.         movwf   POSTINC0
  255.         movlw   0x0A
  256.         movwf   POSTINC0
  257.         CANSendMessage  0x3,CANDt1,2,CAN_TX_XTD_FRAME
  258.         addlw   0x00            ;Check for return value of 0 in W
  259.         bz      Msg5Agn         ;Buffer Full, Try again
  260. ;------------------------------
  261.  
  262.  
  263.  
  264. ;-------------------------------
  265. ;Message 6, Data 0B,0C, ID 15
  266. Msg6Agn:
  267.         movlw   low(CANDt1)
  268.         movwf   FSR0L
  269.         movlw   high(CANDt1)
  270.         movwf   FSR0H
  271.         movlw   0x0B
  272.         movwf   POSTINC0
  273.         movlw   0x0C
  274.         movwf   POSTINC0
  275.         CANSendMessage  0x4,CANDt1,2,CAN_TX_XTD_FRAME
  276.         addlw   0x00            ;Check for return value of 0 in W
  277.         bz      Msg6Agn         ;Buffer Full, Try again
  278. ;-------------------------------
  279.  
  280.  
  281. ;-------------------------------
  282. ;Message 7, Data 0D,0E, ID 20
  283. Msg7Agn:
  284.         movlw   low(CANDt1)
  285.         movwf   FSR0L
  286.         movlw   high(CANDt1)
  287.         movwf   FSR0H
  288.         movlw   0x0D
  289.         movwf   POSTINC0
  290.         movlw   0x0E
  291.         movwf   POSTINC0
  292.         CANSendMessage  0x20,CANDt1,2,CAN_TX_XTD_FRAME
  293.         addlw   0x00            ;Check for return value of 0 in W
  294.         bz      Msg7Agn         ;Buffer Full, Try again
  295. ;-------------------------------
  296.  
  297. ;-------------------------------
  298. ;Message 8, Data 0F,10, ID 05
  299. Msg8Agn:
  300.         movlw   low(CANDt1)
  301.         movwf   FSR0L
  302.         movlw   high(CANDt1)
  303.         movwf   FSR0H
  304.         movlw   0x0F
  305.         movwf   POSTINC0
  306.         movlw   0x10
  307.         movwf   POSTINC0
  308.         CANSendMessage  0x05,CANDt1,2,CAN_TX_XTD_FRAME
  309.         addlw   0x00            ;Check for return value of 0 in W
  310.         bz      Msg8Agn         ;Buffer Full, Try again
  311. ;-------------------------------
  312. #endif
  313.         ;GOTO LAZO
  314. ;       CANAbortAll             ;Use to abort transmission of all messages.
  315. ;       CANGetTxErrorCount      ;Get Tx Error count
  316. ;       CANGetRxErrorCount      ;Get Rx Error count    
  317.  
  318. RcvMsg:
  319. Loop:                                  
  320.         ;call CANIsRxReady      ;verifica si hay un mensaje
  321.         ;bnc    Loop
  322.         ;nop
  323.  
  324. ;#ifdef  RX_TEST
  325.         CANReadMessage  RxMsgID, RxData, RxDtLngth, RxFlag
  326.         ;movlw  0x01
  327.         xorlw   0x01
  328.        
  329.         bnz     Loop
  330.         incf    PORTC
  331.         bcf     TRISA,RA0       ;enciende el pin0 puerto A para mostrar que
  332.                                 ;se recibio un mensaje
  333.         BRA     Loop
  334. ; revisa que tipo de mensaje recibio
  335.         banksel RxFlag
  336.         btfsc   RxFlag,CAN_RX_OVERFLOW_BIT_NO
  337.         bra     RxOvrFlow       ;Branch to Logic for Rx
  338.                                 ;overflow occurred.
  339.         btfsc   RxFlag,CAN_RX_INVALID_MSG_BIT_NO
  340.         bra     RxInvldMsg      ;Branch to Logic for Invalid
  341.                                 ;Message received
  342.         btfsc   RxFlag,CAN_RX_XTD_FRAME_BIT_NO
  343.         bra     RxExtMsg        ;Logic for Extended frame
  344.                                 ;received
  345.         bra     RxStdMsg        ;Else logic for standard
  346.                                 ;frame received
  347.         btfsc   RxFlag,CAN_RX_RTR_FRAME_BIT_NO
  348.         bra     RxRTRFrame      ;Branch to Logic for RTR
  349.                                 ;frame received
  350.         nop                     ;Regular frame received
  351.         movlw   CAN_RX_FILTER_BITS
  352.         andwf   RxFlag,W
  353.         movwf   RxFilterMatch   ;Save matched Filter ;number
  354.                                 ;aqui trato a mensajes con un filtro determinado
  355.         CLRF    PORTC
  356.         BSF     PORTC,5
  357.         goto    Loop
  358.  
  359.  
  360.  
  361. RxOvrFlow:                      ;trato de sobre flujo
  362.         clrf    PORTC
  363.         bsf     PORTC,0
  364.         goto    Loop
  365. RxInvldMsg:                     ;trato a mensajes invalidos
  366.         CLRF    PORTC
  367.         BSF     PORTC,1
  368.         goto    Loop
  369.  
  370. RxExtMsg:                       ;trato a mensajes ID EXTENDIDO
  371.         CLRF    PORTC
  372.         BSF     PORTC,2
  373.         movlw   low(RxData)     ;Direcciona el inicio de los datos a chequear
  374.         movwf   FSR0L
  375.         movlw   high(RxData)
  376.         movwf   FSR0H
  377.  
  378.         banksel RxDtLngth
  379.         movf    RxDtLngth,w     ;longitud de datos que se recibieron
  380. lazo2:
  381.         movff   POSTINC0,PORTC
  382.                
  383. infinito:
  384.         btfsc   Tmp,1           ;variable de control
  385.         goto infinito  
  386.        
  387.         BCF     PORTA,0
  388.         decfsz  WREG
  389.         bra     lazo2
  390.         bra     Loop
  391.  
  392. RxStdMsg:                       ;trato a mensajes ID STANDAR
  393.         CLRF    PORTC
  394.         BSF     PORTC,3
  395.         movlw   0xff
  396.         goto    Loop
  397. RxRTRFrame:                     ;trato a mensajes RTR
  398.         CLRF    PORTC
  399.         BSF     PORTC,4
  400.         GOTO    Loop
  401.  
  402.  
  403.        
  404. ;*******************************************************
  405. ;
  406. ;       This procedure copy the coming information
  407. ;       recived in NewMessData
  408. ;
  409. ;*******************************************************
  410.        
  411. ;COPYvalFun
  412.        
  413. ;       movlw   low(NewMessageData)
  414. ;       movwf   FSR0L
  415. ;       movlw   high(NewMessageData)
  416. ;       movwf   FSR0H
  417. ;       banksel TempCommand
  418. ;       movff   POSTINC0,TempCommand
  419. ;       banksel TempAdd
  420. ;       movff   POSTINC0,TempAdd
  421. ;       banksel TempComp
  422. ;       movff   POSTINC0,TempComp
  423. ;       banksel TempData
  424. ;       movff   POSTINC0,TempData
  425. ;       movff   POSTINC0,TempData+1
  426. ;       movff   POSTINC0,TempData+2
  427. ;       movff   POSTINC0,TempData+3
  428.  
  429. ;       return
  430.  
  431.  
  432. ;Message Recd. Successfully
  433. ;       RxMsgID = 32 bit ID
  434. ;       RxData = Received Data Buffer
  435. ;       RxDtLngth = Length f Received data
  436. ;       RxFlag = Flag of CAN_RX_MSG_FLAGS type, Use it for Message
  437. ;       information
  438.  
  439. final:
  440.         nop
  441. ;#endif
  442.  
  443.         bra     Loop
  444.  
  445.  
  446. ;********************************************************
  447. ;                atencion a interrupcion ALTA PRIORIDAD
  448. ;********************************************************
  449.  
  450. INTER0:                                 ;ATENCION INT0 ALTA PRIORIDAD
  451. #ifndef CANIntLowPrior
  452.        call    CANISR          ;Call CAN Interrupt Service routine
  453. #endif 
  454.  
  455.         btfss           INTCON,INT0IF   ;revisa int0
  456.         goto            EXITIH          ;SI NO ES INT0 SALIR
  457.         goto            INTERA          ;ATENCION INT0
  458. EXITIH
  459.         BCF     PIR3,0
  460.         GOTO    SALIR
  461.  
  462. INTERA:
  463.         bcf     INTCON,INT0IF           ;LIMPIA BANDERA DE INTERRUPCION 0
  464.         BSF     PORTA,0                 ;ENCIENDE LED INTERRUPCION OCURRIO
  465.         ;setf   PORTC
  466.         CLRF    PORTC                   ;limpia puerto c
  467.         BCF     Tmp,1                   ;limpia bandera de control
  468.        
  469.  
  470. SALIR:
  471.         RETFIE  FAST
  472.  
  473.  
  474.  
  475. INTER1:                                 ;ATENCION INT1 BAJA PRIORIDAD
  476.         BCF     INTCON3,0               ;LIMPIA BANDERA DE INTERRUPCION
  477.         BSF     PORTA,0
  478.         MOVLW   0xf0
  479.         movwf   PORTC
  480.         retfie  FAST
  481.        
  482.         END

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7907
Re: Mis experiencias con el BUS CAN
« Respuesta #479 en: 01 de Julio de 2008, 08:13:23 »
Dame unos dias para poder probarlo.
Mientras tanto si subes el esquematico de tu circuito, ayudara a poder revisarlo.

Cuando has probado desde el sniffer y CanKing, estas seguro de haber puesto la misma velocidad en la configuracion??? :shock:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.


 

anything