PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   Cấu hình 18F458 (http://www.picvietnam.com/forum/showthread.php?t=2425)

KA52 26-05-2008 11:26 PM

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

KA52 18-06-2008 08:40 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.
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ỏ?

Code:

        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


KA52 22-06-2008 12:20 AM

ko ai viết code = asm sao vậy mờ. hay là cái này khó quá???

KA52 24-06-2008 11:22 AM

chắc e giải tán quá, ko ai giúp hết.

phamminhtuan 24-06-2008 11:58 AM

Trích:

Nguyên văn bởi KA52 (Post 17004)
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

KA52 24-06-2008 12:44 PM

Đã 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

Trích:

Nguyên văn bởi KA52 (Post 16870)
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.
...
Code:

...
ORG                0X00
        GOTO        MAIN
        ORG                0X04
        GOTO        NGAT
....


Trích:

Nguyên văn bởi namqn (Post 17019)

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/s...ull_manual.pdf
trang 78 nhé :D


Múi giờ GMT. Hiện tại là 06:59 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam