PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   PIC32 - Bộ điều khiển tín hiệu số 32-bit (http://www.picvietnam.com/forum/forumdisplay.php?f=61)
-   -   Thắc mắc nhờ các cao thủ chỉ giúp (http://www.picvietnam.com/forum/showthread.php?t=3133)

binhlt 18-11-2008 02:21 PM

Thắc mắc nhờ các cao thủ chỉ giúp
 
1 Attachment(s)
Tôi đang tập làm PIC32 bắt đầu với quyển sách "Programming 32-bit Microcontrollers in C: Exploring the PIC32 by Lucio Di Jasio" trong quá trình làm tôi dùng MPLAB SIM để debug nhưng với đoạn code sau: (trong ví dụ phần thứ 2 ngày thứ 7 của quyển sách trên)

OpenTimer45(T4_ON | T4_SOURCE_INT, 0);
// clear the 32-bit timer count
WriteTimer45(0);
FFT();
// read the timer count
t1111 = ReadTimer45(); //t1111 luôn =0 là sao????????????????

không hiểu sao t1111 luôn trả về giá trị = 0. Các bác đi trước có kinh nghiệm xin chỉ giúp. Tôi cũng up luôn cả phần ví dụ đó lên đây nếu tiện các bác xem hộ. Thanks

herrtien 18-11-2008 04:28 PM

Bạn chỉ cần đặt trước PR4 với giá trị phù hợp là được. Chúc thành công!

binhlt 21-11-2008 11:22 AM

Đã thương thì thương cho trót bạn có thể cho biết PR4 phải đặt bằng bao nhiêu không? Theo mình thì MPLAB SIM không debug được giá trị trả về của time thì đúng hơn

herrtien 21-11-2008 01:41 PM

PR=0x8000, chạy tốt với MPLAB SIM. Nếu bạn nói là không debug được với timer là sai. Bạn hãy thử lại xem.

binhlt 22-11-2008 10:39 AM

Thực sự là vẫn không thể hiểu nổi. Đoạn code đó nếu mình chạy trên PIC32 Starter Kit thì đúng là lấy được t1111 nhưng chạy trên MPLAB SIM thì chỉ có giá trị = 0 kể cả đặt PR4=0x8000 như bạn nói. Nếu có thể bạn thử chạy cả đoạn code mình đã viết thử xem thì mới có thể nói chính xác được

herrtien 23-11-2008 09:18 AM

1 Attachment(s)
Bạn thử lại đi nhé, tôi đã sửa đúng đoạn code của bạn và kết quả chạy tốt.

binhlt 25-11-2008 01:37 PM

Thanks bạn rất nhiều. Bạn đã rất nhiệt tình giúp mình

binhlt 25-11-2008 02:24 PM

Nguyên nhân lúc đầu mình dùng MPLAB SIM không lấy được giá trị vì PR4 đặt sai chỗ (chắc do sự kết hợp của code = C và việc gán thẳng giá trị vào thanh ghi) từ đó rút ra kết luận là giá trị của PR4 phải được đặt sau lệnh OpenTimer45(); nếu start timer45 bằng T4CONSET=0x8000 thì không cần thiết phải đặt phía sau.
Cuối cùng vì timer45 là timer 32 bit nên PR4 cũng phải đặt là 32 bit ví dụ PR4 = 0xFFFFFFFF; // Load PR4 and PR5


Múi giờ GMT. Hiện tại là 09:03 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