Помогите разобраться с CAN для пика? Я купил PIC18F2580 и MCP2551 к нему. Вторым устройством пока будет
переходник с USB на CAN (он был мной куплен, чтобы отлаживать
программу для пика - проще когда есть заведомо рабочее устройство).
Со стороны переходника usbcan - там внутри стоит драйвер can на
микросхеме philips-SJA1000 с кварцем 24mhz. Для компа есть программа -
монитор сети, которая принимает пакеты и может что-нибудь посылать.
Для пика я пока использую генератор 11,0592 (просто уже был дома, а в
чип-и-дипе не было генераторов).
Набросал следующую программу для пика (пишу на ассемблере):
include P18F2580.INC
ORG 0
goto init
ORG 8
;:::::::::::: I N T E R R U P T :::::::::::::::::::::::
nop
init:
;:::::::::::: I N I T ::::::::::::::::::::::::::::::::::
clrf PORTB
clrf LATB
movlw b'11111000'
movwf TRISB
bcf WDTCON, 0
;;; CAN SPEED (11.0592MHz Fosc)
; movlw b'00000111'
movlw b'00011100'
movwf BRGCON1
; movlw b'11111010'
movlw b'11110001'
movwf BRGCON2
; movlw b'00000110'
movlw b'00000101'
movwf BRGCON3
movlw b'00110000'
movwf CIOCON
; SET CAN ID's
movlw 0x1F
movwf TXB0EIDH
movlw 0xFF
movwf TXB0EIDL
movlw 0x1F
movwf TXB0SIDH
movlw 0xFF
movwf TXB0SIDL
; START CAN
movlw b'00000000'
movwf CANCON
; SEND 3 bytes to CAN
bcf TXB0CON, TXREQ ; clear
buffer
movlw 0x03
movwf TXB0DLC ; len
movlw 0x01
movwf TXB0D0 ; 1 byte
movlw 0x02
movwf TXB0D1 ; 2 byte
movlw 0x03
movwf TXB0D2 ; 3 byte
movlw 0x1F
movwf TXB0SIDH ; ID high
movlw 0xFF
movwf TXB0SIDL ; ID low
bsf TXB0CON, TXREQ ; ready to
send
; INFINITE LOOP
st_main:
bsf LATB, 1
btfss TXB0CON, TXREQ
bcf LATB, 0
bsf LATB, 0
goto st_main
;:::::::::::: E N D :::::::::::::::::::::::::::::::::::
END
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Whatchdogtimer отключаю, запускаю пик - порты 0 и 1 стоят в единице и
usbcan ничего не ловит, хотя вроде пик должен передать 3 байта.
Для can расчитывал так:
Fosc(Fclock) = 11,0592
Tscl = 1,446759259*1000000
Propagation time = 3*Tscl
Phase seg1 = 8*Tscl
Phase seg2 = 7*Tscl
SJW = 1*Tscl
Скорость = 36,37894737 Kbit/s
Скорости в пике и в usbcan различаются менее чем 0,05% Сам usbcan
заведемо рабочий - т.к. когда покапал - при мне запустили.
Может надо как-то инициализировать кан модуль или я еще что-то забыл в
програме указать для запуска кан и передачи пакета?
Или может подскажете - в какую сторону смотреть?-
- если быть точным то пик должен передать CAN ID's И CAN Data[3] - Sergey Pinigin(18.05.2006 08:45,
) - Советую скачать с microchip.com примеры на Си для работы с CAN FDA(94 знак., 18.05.2006 08:20,
)
- Да, документ этот называется AN738 - FDA(18.05.2006 08:36,
)
- Да, документ этот называется AN738 - FDA(18.05.2006 08:36,
- если быть точным то пик должен передать CAN ID's И CAN Data[3] - Sergey Pinigin(18.05.2006 08:45,