View Full Version : Cấu hình 18F458
Pác nào làm CAN rùi giúp e với. e đang làm giao tiếp CAN qua máy tính, lúc trước viết trên CCS nhưng không nhận mạng đc giờ chuyển qua asm, a giúp e cấu hình PIC trong MPLAB để chạy đc module USART và CAN.
Cho e hỏi trong CAN, khi định địa chỉ ID cho từng node là do mình quyết dịnh, vậy 1 node có thể có cùng lúc nhiều ID đc ko? E muốn gởi từ master tới slave nhiều lệnh liên tục, mỗi lệnh gán ID khác nhau.
Thanks
scentoflove
27-05-2008, 12:35 AM
Bạn cần hiểu 2 khái niệm cơ bản như sau
Address base system: mỗi node được gán cho một ID, muốn send từ node này sang node khác cần phải biết trước ID của node cần gửi
Message base system: mỗi loại message được gán cho một ID, như vậy mội node ko có ID mà chỉ có message có ID. Khi 1 node gửi message có thể có nhiều node nhận đc message và ngược lại mỗi node có thể nhận nhiều loại message.
Mạng CAN thuộc loại message base system. Do đó bạn ko thể gán ID cho node mà chỉ gán ID cho message và việc nhận hay ko nhận 1 message trên mạng CAN do mask và filter của từng node quyết định theo ID của message đó
Bạn làm về CAN nên tham khảo luồng này.
http://www.picvietnam.com/forum//showthread.php?t=814
Pà con cho m hỏi chương trình m viết như vầy nhưng sao nó lại không báo ngắt để kết thúc truyền vậy? Chính xác là ko có ngắt để vào chương trình ngắt.
Vùng nhớ trong 458 phân bank thấp cao vậy m chỉnh bank khi chuyên lệnh là nó báo tràn con trỏ?
title "18F458 TRANSMIT TEST"
processor 18F458
include <P18F458.inc>
CONFIG OSC = XT, OSCS = OFF
CONFIG PWRT = ON, BOR = ON, BORV = 27
CONFIG WDT = OFF, WDTPS = 128
CONFIG STVR = ON, LVP = OFF, DEBUG = OFF
CBLOCK 0X20
W_SV,STATUS_SV,FSR_SV,PCLATH_SV,FSR,CANSTAT_SV
ENDC
ORG 0X00
GOTO MAIN
ORG 0X04
GOTO NGAT
NGAT
MOVWF W_SV
SWAPF STATUS,W
CLRF STATUS
MOVWF STATUS_SV
MOVF PCLATH,W
MOVWF PCLATH_SV
CLRF PCLATH
MOVF FSR,W
MOVWF FSR_SV
BTFSC PIR3,TXB0IF ;KT NGAT TRANSMIT
GOTO NGATRANS
BTFSC PIR3,ERRIF
GOTO LOI
GOTO EXITNGAT
NGATRANS
BSF PORTD,5
RETFIE
LOI
MOVLW 0XF0
MOVWF PORTD
RETFIE
EXITNGAT
MOVF FSR_SV,W
MOVWF FSR
MOVF PCLATH_SV,W
MOVWF PCLATH
SWAPF STATUS_SV,W
MOVWF STATUS
SWAPF W_SV,W
BSF INTCON,GIE
RETFIE
MAIN
MOVLW 0X08
MOVWF TRISB ;PORTB XUAT DATA
CLRF TRISC ;PORTC TEST TRANSMIT
CLRF TRISD ;-NT-
CLRF PORTC
CLRF PORTD
CLRF BRGCON1
CLRF BRGCON2
CLRF BRGCON3
MOVLW B'00001000'
MOVWF CANCON
BSF CIOCON,ENDRHI
BSF CIOCON,CANCAP
MOVLW B'00100100'
MOVWF PIE3
MOVLW B'00100000'
MOVWF IPR3
BSF INTCON,GIE
CALL TRANSMIT
BTFSC TXB0CON,TXERR
BSF PORTD,0 ;ERR=1
BTFSS TXB0CON,TXREG
BSF PORTD,0 ;REG=0
BTFSS TXB0CON,TXIE
BSF PORTD,2 ;IE=0
BSF PORTD,3
BSF PORTD,4
GOTO $
TRANSMIT
MOVLW B'00001111'
MOVWF BSR
MOVLW B'00000000'
MOVWF TXB0SIDH
MOVLW B'11100000'
MOVWF TXB0SIDL
MOVLW B'00001000'
MOVWF TXB0DLC
MOVLW B'11001100'
MOVWF TXB0D0
MOVWF PORTC ;TEST PORTC
MOVLW B'11001100'
MOVWF TXB0D1
MOVWF TXB0D2
MOVWF TXB0D3
MOVWF TXB0D4
MOVWF TXB0D5
MOVWF TXB0D6
MOVWF TXB0D7
BSF TXB0CON,TXREG
RETURN
END
ko ai viết code = asm sao vậy mờ. hay là cái này khó quá???
chắc e giải tán quá, ko ai giúp hết.
phamminhtuan
24-06-2008, 11:58 AM
chắc e giải tán quá, ko ai giúp hết.
Bạn hỏi anh N mờ, chắc ảnh đang bận không trả lời được
Đã sửa lại rùi, ai biết thì giúp m vậy? toàn cao thủ ko mừ
namqn
24-06-2008, 08:55 PM
Xin lỗi bạn vì tôi trả lời chậm (tôi đang bận viết luận án nên không có thời gian ngồi đào code của bạn).
Có vẻ như bạn port code xử lý ngắt cho PIC16 sang, vì người ta thường không viết như vậy cho PIC18. Bạn xem thêm mục 8.9 trong datasheet của PIC18F458 về việc lưu ngữ cảnh khi xử lý ngắt trong PIC18. Tôi chưa từng dùng CAN nên không giúp cho bạn được về phần này, tuy nhiên, nếu bạn đã biết phải đặt những giá trị nào vào thanh ghi nào thì dùng C hay hợp ngữ cũng chẳng có gì khác nhau.
Tôi thường dùng ACCESS bank khi thao tác các thanh ghi đặc biệt (SFR) nên không quan tâm đến BSR.
Thân,
phamminhtuan
25-06-2008, 02:20 AM
Pà con cho m hỏi chương trình m viết như vầy nhưng sao nó lại không báo ngắt để kết thúc truyền vậy? Chính xác là ko có ngắt để vào chương trình ngắt.
...
...
ORG 0X00
GOTO MAIN
ORG 0X04
GOTO NGAT
....
Có vẻ như bạn port code xử lý ngắt cho PIC16 sang,
Hì, vector ngắt của 18F458 đâu có nằm ở 0x04 đâu nhỉ, chưa kể là phải cấu hình ưu tiên trong thanh ghi IPR.
Datasheet http://www.nerdgirls.org/technical/seniorprojects/mppt/datasheets/pic_full_manual.pdf
trang 78 nhé :D
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.