![]() |
|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#1 |
Đệ tử 1 túi
Tham gia ngày: Oct 2007
Bài gửi: 22
: |
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 thay đổi nội dung bởi: KA52, 24-06-2008 lúc 12:43 PM. Lý do: sửa ng.nhận |
![]() |
![]() |
![]() |
#2 |
Đệ tử 6 túi
Tham gia ngày: Mar 2006
Bài gửi: 129
: |
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 |
![]() |
![]() |
![]() |
#3 |
Đệ tử 1 túi
Tham gia ngày: Oct 2007
Bài gửi: 22
: |
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 thay đổi nội dung bởi: KA52, 24-06-2008 lúc 12:44 PM. Lý do: sửa ng.nhận |
![]() |
![]() |
![]() |
#4 |
Đệ tử 1 túi
Tham gia ngày: Oct 2007
Bài gửi: 22
: |
ko ai viết code = asm sao vậy mờ. hay là cái này khó quá???
|
![]() |
![]() |
![]() |
#5 |
Đệ tử 1 túi
Tham gia ngày: Oct 2007
Bài gửi: 22
: |
chắc e giải tán quá, ko ai giúp hết.
|
![]() |
![]() |
![]() |
#6 |
Super Moderator
Tham gia ngày: Feb 2006
Bài gửi: 150
: |
|
![]() |
![]() |
![]() |
#7 |
Đệ tử 1 túi
Tham gia ngày: Oct 2007
Bài gửi: 22
: |
Đã sửa lại rùi, ai biết thì giúp m vậy? toàn cao thủ ko mừ
|
![]() |
![]() |
![]() |
#8 |
Trưởng lão PIC bang
|
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,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
![]() |
![]() |
![]() |
#9 | |
Super Moderator
Tham gia ngày: Feb 2006
Bài gửi: 150
: |
Trích:
Datasheet http://www.nerdgirls.org/technical/s...ull_manual.pdf trang 78 nhé ![]() |
|
![]() |
![]() |
![]() |
|
|