Autor Tema: Comunicacion por CAN con pic18f458  (Leído 1617 veces)

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

Desconectado Betitriz

  • PIC10
  • *
  • Mensajes: 11
Comunicacion por CAN con pic18f458
« en: 22 de Febrero de 2005, 03:45:00 »
¿Alguien ha conseguido comunicarse por CAN? Yo he tratado de hacerlo en ensamblador, en C con el ccs y con el C18 de Microchip, pero no hay manera. ¿Podeis ayudarme? Os envio mi codigo en ensamblador, que es mas facil de entender. Estoy tratando de enviar una trama de un caracter (0x31) con el identificador 0x00, y un baud rate de 125Kbps. La frecuencia del oscilador es de 16MHz

CONF_CAN movlw b"10010000" ;Modo configuracion
                  movwf CANCON

       ;Configuracion del Baud Rate
       movlw b"00000011"; SJW1:SJW0=1, BRP=3 125kb/s
       movwf BRGCON1
       movlw b"10100001" ;SEG2PHTS=libremente programable,
                                                   ;se muestrea 1 vez, phseg1=5, propseg=2
       movwf BRGCON2
       movlw b"00000011" ;no Wake-up, phseg2 ignorado porque seg2phts=1
       movwf BRGCON3

       ;Configuracion de los pines I/O
       movlw b"00110000"   ;CANTX pin =Vdd cuando es recesivo.
                                                     ;CAN msg receive reemplaza a RC2/CCP1
       movwf CIOCON
      
       ;Configuración de interrupciones
       movlw b"00011111"       ;Invalid Msg Received Interupt disabled,
       movwf PIE3         ;bus activity wake-up disable
                     ;bus Error Interrupt disable
                      ;Transmit Buff2 interrupt enable
                     ;Transmit Buff1 interrupt enable
                                       ;Transmit Buff0 interrupt enable
                     ;Receive Buff1 interrupt enable
                     ;Receive Buff0 interrupt enable
       movlw b"00100100"        ;Prio Alta a CAN Error, y a Transmit Buff0
       movwf IPR3
       movlw b"10000000"     ;Habilita la prioridad de las interrupciones
       movwf RCON

NORMAL    movlw b"00001000"   ;Modo normal,Transmit Buff0
             movwf CANCON
       btfsc    CANSTAT,7     ;¿Ha cambiado el modo?
       bra      NORMAL

       movlw b"1100000"     ;Habilita las interr de alta prior
       movwf INTCON           ;Habilita las interr de los perifericos y de baja prior

       ;Config Buffer Trans 0
       clrf      RXB0SIDH
       clrf      RXB0SIDL
       movlw 0x01
          movwf RXB0DLC

       movlw 0x0A;     
       movwf cuenta
       clrf       nMens

ENVIA    movlw 0x01
       movwf RXB0D0 ;Byte 0 del buffer0
       movlw 0x03
       movwf RXB0D1 ;Byte 1 del buffer0
       clrf       RXB0D2
       clrf       RXB0D3
       clrf       RXB0D4
       clrf       RXB0D5
       clrf       RXB0D6
             clrf       RXB0D7
       bsf       RXB0CON,TXREQ
COM_ENVI  btfsc    RXB0CON,TXREQ
       bra      COM_ENVI
       decfsz cuenta
       bra      ENVIA

BIEN_TRANS incf nMens

¡¡Gracias!!