CAN с 18F4580

V

viks

Guest
Момчета

Аз съм уморен с този проблем, моля да ми помогне тук.
Аз съм се опитват да общуват над CAN мрежа.

Аз имам две 18F4580
единия Излъчвател и друг като приемник.
Аз не съм в състояние да получи всички данни от Транс да приемник.

Кодекс, както следва

-------------------------------------------------- -----
Излъчвателя.

Списъкът P = 18f4580; списък директива, която да определи процесор
корен декември
# включват <p18f4580.inc>; процесор конкретни променлива дефиниции;************ Идентификатор е 123H

BRGCON1_CONST EQU 0x03; SJW = 2 Tq, BRP = 3
BRGCON2_CONST EQU 0xA1; Seg2 свободно програмируеми,
; 1 проби / битово, Ph1 = 5 Tq, предложение seg = 2 Tq
BRGCON3_CONST EQU 0x01; Seg2 = 2 Tq ---> пробата при 80%
START_CAN EQU 0x08; запитване нормален режим, прекратява всички xmissions, TXB0 в достъпа банка
TXB0CON_CONST EQU 0x03; стойност да бъдат заредени в TXB0CON да позволи пишете на достъпа до TXB0
; Искания съобщение прекратява, определен буфер приоритет 3 (най-висок)
TXB0CON_SEND EQU 0x08; изисква TXB0 бъде изпратен на CAN шина
DLC_CONST EQU 0x08; стойност за DLC областта на съобщение
CIOCON_CONST EQU 0x20; стойност да се зареди в CIOCON
; Drive TX закрепване към Vdd, не може да улавянето функцията RC2

Гото проекта; main_code код 0x2A
ORG 0x002A
започвам

movlw b'11111011 "; RB2 е продукция (CANTX)
movwf TRISB

; Създаден PORT D за използване с LED за RD0, изтеглен до Vcc.
movlw 0x00; Всички Port D закрепване се изходи
movwf TRISD
movlw 0x0E; инициализиране LED до (D0 = 0), успокои OFF (D1, D2, D3 = 1).LCD данни = 0 (D7: D4)
movwf PORTD
movlw TMR0_OFF; създава таймер 0, но не започне тя преброяване
movwf T0CON; Инициализиране CAN за TX Буферни 0
movlw CIOCON_CONST
movwf CIOCON

movlw 0x98; конфигурация режим с буферни 0 избрали.
movwf CANCON
check1:
btfss CANSTAT, OPMODE2
сутиен check1

movlw BRGCON1_CONST
movwf BRGCON1
movlw BRGCON2_CONST
movwf BRGCON2
movlw BRGCON3_CONST
movwf BRGCON3
movlw START_CAN
movwf CANCON; проекта CAN в нормален режим

; Създаден TX Буферни 0
movlw TXB0CON_CONST
movff WREG, TXB0CON; използване movff като TXB0CON е в банковата 15
movlw 24H
movff WREG, TXB0SIDH
movlw 60H
movff WREG, TXB0SIDL
movlw DLC_CONST
movff WREG, TXB0DLC

; Товароподемност до Постоянни данни Bytes
movlw 0
movff WREG, TXB0D0
movlw 1
movff WREG, TXB0D1
movlw 2
movff WREG, TXB0D2
movlw 3
movff WREG, TXB0D3
movlw 4
movff WREG, TXB0D4
movlw 5
movff WREG, TXB0D5
movlw 6
movff WREG, TXB0D6
movlw 7
movff WREG, TXB0D7; Е искане за предаване на съобщения
movlw TXB0CON_SEND
movff WREG, TXB0CON; поискване изпращане TXB0 на автобус

приключвам

------------------------------------------
Приемник

Списъкът P = 18f4580; списък директива, която да определи процесор
# включват <p18f4580.inc>; процесор конкретни променлива дефиниции
BRGCON1_CONST EQU 0x03; SJW = 2 Tq, BRP = 3
BRGCON2_CONST EQU 0xA1; Seg2 свободно програмируеми,
; 1 проби / битово, Ph1 = 5 Tq, предложение seg = 2 Tq
BRGCON3_CONST EQU 0x01; Seg2 = 2 Tq ---> пробата при 80%
START_CAN EQU 0x00; запитване нормален режим, прекратява всички xmissions, TXB0 в достъпа банка
TXB0CON_CONST EQU 0x03; стойност да бъдат заредени в TXB0CON да позволи пишете на достъпа до TXB0
; Искания съобщение прекратява, определен буфер приоритет 3 (най-висок)
TXB0CON_SEND EQU 0x08; изисква TXB0 бъде изпратен на CAN шина
DLC_CONST EQU 0x08; стойност за DLC областта на съобщение
CIOCON_CONST EQU 0x20; стойност да се зареди в CIOCON;************ Начална *******************

Гото проекта

; main_code код 0x2A
ORG 0x002A
започвам

CLRF PORTA
MOVLW 0xff
MOVWF TRISA
MOVLW 0xff
MOVWF TRISC
CLRF PORTB
MOVLW 0xFB
MOVWF TRISB; Инициализиране CAN за TX Буферни 0
movlw CIOCON_CONST
movwf CIOCON

movlw 0x90; конфигурация режим с буферни 0 избрали.
movwf CANCON
check1:
btfss CANSTAT, OPMODE2
сутиен check1

movlw BRGCON1_CONST
movwf BRGCON1
movlw BRGCON2_CONST
movwf BRGCON2
movlw BRGCON3_CONST
movwf BRGCON3
movlw START_CAN
movwf CANCON; проекта CAN в нормален режим

; настройка RX Буферниmovlw 0x60; / /
задаване да игнорирате всички филтри, маски
movwf RXB0CONNomessage BTFSS RXB0CON, RXFUL
BRA Nomessage

MOVFF RXB0D0, var0
MOVFF RXB0D1, var1
MOVFF RXB0D2, var2
MOVFF RXB0D3, var3
MOVFF RXB0D4, var4
MOVFF RXB0D5, var5
MOVFF RXB0D6, var6
MOVFF RXB0D7, var7

BCF RXB0CON, RXFUL

MOVFF var5, PORTA
MOVFF var6, PORTC
Гото Nomessage

приключвам

 

Welcome to EDABoard.com

Sponsor

Back
Top