You are on page 1of 5

Bảng tra Tmax

8 Mhz 20 Mhz 24 Mhz X ??? Mhz


Timer_0 32,768 ms 13,1072 ms 10,923 ms
Timer_1 262,144 ms 104,8576 ms 87,38 ms
Timer_ Trước 2,048 ms 0,8192 ms 0,6827 ms
2 Sau 32,768 ms 13,1072 ms 10,9232 ms

Công thức tính quan trọng cần nhớ:


Timer0 , Timer2 : 8bit 2^8 = 256
Timer1 : 16bit 2^16 = 65536
 Timer0 và Timer1
DIV >= (Fosc * Tđếm) /(4*2^n)
Tmax = (2^n * 4 * DIV)/(Fosc)
T = 2^n – ((Tđếm * Fosc)/(4*DIV))
 Timer2:
DIV >= (Fosc * Tpwm) /(4*2^8)
DIV(Trước và sau) >= (Fosc * Tpwm) /(4*2^8)
TmaxTrước = (2^8 * 4 * 16)/(Fosc)
TmaxSau = TmaxTrước*16
[PR2 +1]= (Tpwm * Fosc)/(4 * DIVtrước * DIVsau)
Duty(100%)= (Tpwm*Fosc)/(DIV)
Duty(X%)= (Tpwm*Fosc*X)/(DIV*100)
Bảng tra: DIVtrước * DIVsau
DIVtrước DIVsau
1 4 16 DIVtrước * DIVsau
1 1*1 1*4 1*16 1 4 16
4 4*1 4*4 4*16 4 16 64
16 16*1 16*4 16*16 16 64 256
I. Timer 1 ,Thạch anh 8Mhz
1. Tạo Xung 10 ms
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
set_timer1(2^16 - (10*10^-3 * 8*10^6)/(4*1));
set_timer1(65536 - 20000 = 45536);
2. Tạo xung 50 ms
setup_timer_1(T1_INTERNAL|T1_DIV_BY_2);
set_timer1(2^16 - (50*10^-3 * 8*10^6)/(4*2));
set_timer1(65536 - 50000 = 15536);
3. Tạo Xung 100 ms
setup_timer_1(T1_INTERNAL|T1_DIV_BY_4);
set_timer1(2^16 - (100*10^-3 * 8*10^6)/(4*4));
set_timer1(65536 - 50000 = 15536);
4. Tạo Xung 200 ms
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
set_timer1(2^16 - (200*10^-3 * 8*10^6)/(4*8));
set_timer1(65536 - 50000 = 15536);
5. Tạo Xung 250 ms
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
set_timer1(2^16 - (250*10^-3 * 8*10^6)/(4*8));
set_timer1(65536 - 62500 = 3036);
6. Tạo Xung 262 ms (đếm tối đa = 262,144 ms)
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
set_timer1(2^16 - (262*10^-3 * 8*10^6)/(4*8));
set_timer1(65536 - 65500 = 36);

I. Timer 1 ,Thạch anh 20Mhz


1. Tạo Xung 10 ms
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
set_timer1(2^16 - (10*10^-3 * 20*10^6)/(4*1));
set_timer1(65536 - 50000 = 15536);
2. Tạo xung 50 ms
setup_timer_1(T1_INTERNAL|T1_DIV_BY_4);
set_timer1(2^16 - (50*10^-3 * 20*10^6)/(4*4));
set_timer1(65536 - 62500 = 3036);
3. Tạo Xung 100 ms
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
set_timer1(2^16 - (100*10^-3 * 20*10^6)/(4*8));
set_timer1(65536 - 62500 = 3036);
4. Tạo Xung 104 ms (đếm tối đa = 104,8576 ms)
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
set_timer1(2^16 - (104*10^-3 * 20*10^6)/(4*8));
set_timer1(65536 - 65000 = 536);

II. Timer 0,Thạch anh 8Mhz


1. Tạo Xung 10 us
setup_timer_0 (T0_INTERNAL|T0_DIV_1);
set_timer0(2^8 - (10*10^-6 * 8*10^6)/(4*1));
set_timer0(256 - 20 = 236);
2. Tạo Xung 50 us
setup_timer_0 (T0_INTERNAL|T0_DIV_1);
set_timer0(2^8 - (50*10^-6 * 8*10^6)/(4*1));
set_timer0(256 - 100 = 156);
3. Tạo Xung 100 us
setup_timer_0 (T0_INTERNAL|T0_DIV_1);
set_timer0(2^8 - (100*10^-6 * 8*10^6)/(4*1));
set_timer0(256 - 200 = 56);
4. Tạo Xung 1 ms
setup_timer_0 (T0_INTERNAL|T0_DIV_8);
set_timer0(2^8 - (1*10^-3 * 8*10^6)/(4*8));
set_timer0(256 - 250 = 56);
5. Tạo Xung 10 ms
setup_timer_0 (T0_INTERNAL|T0_DIV_128);
set_timer0(2^8 - (10*10^-3 * 8*10^6)/(4*128));
set_timer0(256 - 156 = 100);
6. Tạo xung 20 ms
setup_timer_0 (T0_INTERNAL|T0_DIV_256);
set_timer0(2^8 - (20*10^-3 * 8*10^6)/(4*256));
set_timer0(256 - 156 = 100);
7. Tạo Xung 30 ms
setup_timer_0(T0_INTERNAL|T0_DIV_256);
set_timer0(2^8 - (30*10^-3 * 8*10^6)/(4*256));
set_timer0(256 - 234 = 22);
8. Tạo Xung 32 ms (đếm tối đa = 32,768 ms)
setup_timer_0(T0_INTERNAL|T0_DIV_256);
set_timer0(2^8 - (32*10^-3 * 8*10^6)/(4*256));
set_timer0(256 - 250 = 6);

Timer 0 ,Thạch anh 20Mhz


1. Tạo Xung 10 us
setup_timer_0 (T0_INTERNAL|T0_DIV_1);
set_timer0(2^8 - (10*10^-6 * 20*10^6)/(4*1));
set_timer0(256 - 50 = 206);
2. Tạo Xung 50 us
setup_timer_0 (T0_INTERNAL|T0_DIV_1);
set_timer0(2^8 - (50*10^-6 * 20*10^6)/(4*1));
set_timer0(256 - 125 = 131);
3. Tạo Xung 100 us
setup_timer_0 (T0_INTERNAL|T0_DIV_2);
set_timer0(2^8 - (10*10^-6 * 20*10^6)/(4*2));
set_timer0(256 - 250 = 6);
4. Tạo Xung 1 ms
setup_timer_0 (T0_INTERNAL|T0_DIV_32);
set_timer0(2^8 - (10*10^-3 * 20*10^6)/(4*32));
set_timer0(256 - 156 = 100);
5. Tạo xung 10 ms
setup_timer_0 (T0_INTERNAL|T0_DIV_256);
set_timer0(2^8 - (10*10^-3 * 20*10^6)/(4*256));
set_timer0(256 - 195 = 61);
6. Tạo Xung 13 ms (đếm tối đa = 13,1072 ms)
setup_timer_0(T0_INTERNAL|T0_DIV_256);
set_timer0(2^8 - (13*10^-3 * 20*10^6)/(4*256));
set_timer0(256 - 254 = 2);

You might also like