PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT 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

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 30-01-2013, 05:49 PM   #1
qloi
Đệ tử 3 túi
 
Tham gia ngày: Sep 2010
Bài gửi: 55
:
Ai rành timer giải đáp giùm mình vấn đề này?

Code:
#include <16f88.h>
#fuses intrc,nomclr,nowdt
#use delay(clock=4000000)
#bit dout = 5.0

int a,i=0;

#int_timer0
void pwm()
{ 
   set_timer0(245);
   if(i<a) {R=0;}
   else R=1;
   i++;
   if(i==100) i=0;  
}

void main()
{
   set_tris_a(0);
   enable_interrupts(global);
   enable_interrupts(int_timer0);
   setup_timer_0(RTCC_INTERNAL | RTCC_DIV_2);
   set_timer0(245);
   while(1)
   {
        a=10;
        delay_ms(2000);
        a=100;
        delay_ms(2000);
   }
chương trình chỉ đơn giản là điều biến xung. vấn đề năm ở chổ t không hiểu tại sao với tính toán như trên: t(tràn) = (4/4000000)*2*10 = 20us ; và khi hoàn thành hết 100% khoảng xung trong hàm ngắt là: 20us*100=2ms ~ 500Hz nhưng khi mô phỏng và chạy trên mạch thật đều bị chung 1 vấn đề là F đầu ra khoảng 7-8Hz thôi(có khi dừng hẳn không có xung ở đầu ra). khi t bỏ hàm set_timer(245) tở đầu hàm ngắt thì coi như t(tràn)=(4/4000000)*2*256*100=0.05s ~ 20Hz và xung out xấp xỉ đúng như tính toán. Sau đó t đổi lại hệ số presc=8 và vẫn giữ hàm set_timer0(245) như lúc đầu thì mạch xuất xung hoàn toàn đúng t(tràn) = (4/4000000)*8*10*100=8ms ~100Hz.khi bị lỗi như trường hợp đầu thì t theo dõi thấy trong vòng lặp while ban đầu cho a=10,và hàm delay_ms(2000) không còn đúng nữa (trở nên rất dài khoảng vài phút hoặc không thay chạy nữa y như vdk bị treo khi gặp delay vậy). các bác cho mình hỏi vì sao trên lý thuyết tính toán vậy mà lại không chạy đúng trong khi thay đổi hệ số prescaler cao lên thì đúng. có thể là ngắt xảy ra quá nhanh nó đáp ứng không kịp chăng?
__________________
heart.touching.2010@gmail.com!
qloi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


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à 11:28 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