PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

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

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 26-05-2008, 11:26 PM   #1
KA52
Đệ 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
KA52 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 27-05-2008, 12:35 AM   #2
scentoflove
Đệ 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
scentoflove vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 18-06-2008, 08:40 AM   #3
KA52
Đệ 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
KA52 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-06-2008, 12:20 AM   #4
KA52
Đệ 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á???
KA52 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-06-2008, 11:22 AM   #5
KA52
Đệ 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.
KA52 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-06-2008, 11:58 AM   #6
phamminhtuan
Super Moderator
 
phamminhtuan's Avatar
 
Tham gia ngày: Feb 2006
Bài gửi: 150
:
Trích:
Nguyên văn bởi KA52 View Post
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
phamminhtuan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-06-2008, 12:44 PM   #7
KA52
Đệ 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ừ
KA52 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-06-2008, 08:55 PM   #8
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
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
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-06-2008, 02:20 AM   #9
phamminhtuan
Super Moderator
 
phamminhtuan's Avatar
 
Tham gia ngày: Feb 2006
Bài gửi: 150
:
Trích:
Nguyên văn bởi KA52 View Post
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 View Post

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é
phamminhtuan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


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


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam