Помогите разобраться с 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, )