PDA

View Full Version : Về chương trình timer trong tutorial 2 của anh Nam


NATO308
15-02-2009, 02:50 PM
hix, em mới học nên ko hiểu 1 số cái , mong anh Nam nói riêng và ai hiểu cái này nói chung thì chỉ hộ với

1 : mov #0xFFFE, W0 ;LED noi vao cong D, chan RD0
Sao lại có đến 4 số FFFE thế , em thấy trong datasheet chỉ có 2 số thôi mà .
Trích datasheet : MOVE #0x55, W0
Tại sao dựa vào câu lệnh tren lại biết LED nối vào chân RDO

2 : Em thấy C30 khó quá , CCS đọc dễ hơn , tớ mới học thì nên chọn cái nào .Mong mọi người chỉ giúp .

mong mọi người chỉ giúp . ! Thanks nhiều lắm

namqn
15-02-2009, 05:16 PM
Trích :
//Chuong trinh con khoi tao Timer 1, tran sau moi 0,5 giay o muc xung 8 Mips
void Init_TMR1(void) {
TMR1 = 0; //Xoa so dem trong TMR1
PR1 = 0xF424; //Nguong tran la 0,5 giay tuong ung voi clock = 32 MHz
_T1IF = 0; //Xoa co ngat cua Timer 1
T1CON = 0x8020; //Dung fcy lam clock, prescale = 1:64
_T1IE = 1; //Cho phep ngat Timer 1
}

hix, em mới học nên ko hiểu 1 số cái , mong anh Nam nói riêng và ai hiểu cái này nói chung thì chỉ hộ với
Thứ 1 : F424 và 8020 là 2 giá trị gán cho PR1 và T1CON , em ko hiểu tại sao lại là F424 và 8020 , ai có thể giải thích cụ thể giá trị này được ko
Thứ 2 : Nguong tran la 0,5 giay tuong ung voi clock = 32 MHz : Tại sao lại biết cái này thế , dựa vào đâu vậy
Tương tự , em cũng ko hiểu "Dung fcy lam clock, prescale = 1:64 " ,fcy và prescale là cái gì vậy , tỉ số 1 : 64 là gì .

Thứ 3 : mov #0xFFFE, W0 ;LED noi vao cong D, chan RD0
Sao lại có đến 4 số FFFE thế , em thấy trong datasheet chỉ có 2 số thôi mà .
Trích datasheet : MOVE #0x55, W0
Tại sao dựa vào câu lệnh tren lại biết LED nối vào chân RDO

Thứ 4 : Em thấy C30 khó quá , CCS đọc dễ hơn , em mới học thì nên chọn cái nào .Mong mọi người chỉ giúp .

Em mới học nên hỏi nhiều câu chắc ngu lắm , chắc phải đọc thật nhiều mới khôn ra được ,mong mọi người chỉ giúp . Em tra datasheet con dspic rồi nhưng ko hiểu nó nói cái gì . Giúp em với nha mọi ngườii ! Thanks nhiều lắm
1. và 2. Bạn đọc các luồng sau (chúng đã được đưa vào mục "Các câu hỏi thường gặp" cho dsPIC):
http://www.picvietnam.com/forum/showthread.php?t=974
http://www.picvietnam.com/forum/showthread.php?t=1389

Bạn nên đọc thêm section về Timer trong tài liệu "dsPIC30F Family Reference Manual" (DS70046), download tại trang web của Microchip.

3. Thanh ghi W0 có độ dài 16 bit, do đó cần dùng 4 chữ số hexadecimal nếu muốn cập nhật toàn bộ 16 bit này. dsPIC cho phép chỉ cập nhật 8 bit thấp nhất của các thanh ghi, như ví dụ bạn đã thấy trong datasheet.

Chỉ riêng lệnh mov #0xFFFE, W0 chẳng nói lên việc linh kiện gì nối vào đâu. Chú thích của tôi chỉ để nhắc lại rằng tôi đã thiết kế để LED nối vào chân RD0, do đó bit thấp nhất của thanh ghi TRISD sẽ phải được tắt để chọn nó là ngõ ra. Để làm việc này cần dùng 2 lệnh dưới đây, chứ không phải chỉ một lệnh mov #0xFFFE, W0 mà bạn đã hỏi:
mov #0xFFFE, W0 ;LED noi vao cong D, chan RD0
mov W0, TRISD


4. Nếu bạn viết code theo kiểu của tôi (thao tác từng thanh ghi của ngoại vi thay vì dùng hàm thư viện) thì dùng C30 hay CCS C đều sẽ viết như nhau. Vấn đề là tôi muốn trình bày rõ cách thức vận hành của các module ngoại vi, chứ bản thân C30 cũng có sẵn các hàm thư viện như CCS C.

Tôi đoán là bạn học thẳng dsPIC chứ không học qua PIC 8-bit trước, nếu đúng như vậy thì đương nhiên bạn sẽ cảm thấy khó, vì bạn chưa đủ nền tảng để học theo cách mà tôi đã chọn để viết các tutorial (giả thiết người đọc đã có kinh nghiệm dùng PIC).

Thân,

NATO308
15-02-2009, 06:34 PM
Tôi đoán là bạn học thẳng dsPIC chứ không học qua PIC 8-bit trước, nếu đúng như vậy thì đương nhiên bạn sẽ cảm thấy khó, vì bạn chưa đủ nền tảng để học theo cách mà tôi đã chọn để viết các tutorial (giả thiết người đọc đã có kinh nghiệm dùng PIC).

Thân,

Cám ơn anh nhiều lắm. Đúng là em ko biết PIC là gì , tự dưng thầy giao 1 đồ án điều khiển động cơ = dspic và bắt tự tìm hiểu nên em ko biết đi theo hướng nào nên em đọc thẳng luôn dspic. Giờ em vẫn đang tìm hiểu về dspic, có gì khó anh giúp em nhé . Chúc anh sức khỏe để còn giúp những người như em dài dài. Thanks anh nhiều lắm !