Cálculos:
Crystal = 4 MHz
Clock interno = 4.000.000 / 4 = 1.000.000 Hz
Frequência = Ciclo de máquina = 1 / t
Ciclo de máquina = 1 / 1.000.000 Hz = 1 us
Com 1 timer de 8 bits temos 256 períodos e com o de 16 bits temos 65336 períodos.
Prescaler x períodos x ciclo de máquina = tempo de interrupção
timer = 8 bits
clock = 4 MHz
prescaler = 1:1
1 . 256 . 1us = 256 us Ou seja, a cada 256 us à um overflow e consequentemente a interrupção
Para 16 bits e 4 MHz com prescaler 1:16 e pré-carga de 3036
16 . (6536 - 3036) . 1us = 1.000.000 us = 1s
CÓDIGO FEITO EM CCS C Compiler
#include <18F4550.h>
#fuses XT, NOWDT, MCLR
#use delay(clock=4MHz)
#INT_TIMER0
void interrupcao_t0() {
clear_interrupt(INT_TIMER0); // limpa os bits de interrupção
set_timer0(3036); // quando chegar em 6536 ele volta em 3036
output_toggle(PIN_B1);
}
void main () {
enable_interrupts(GLOBAL);
enable_interrupts(INT_TIMER0);
setup_timer_0(T0_INTERNAL | T0_DIV_16);
set_timer0(3036); // o timer vai realizar a pré -carga com 3036 e vai até 6536
while(true) {
output_toggle(PIN_B0);
delay_ms(1000);
}
}
Saída gerada no PicSimlab |
Palavras chave:
Timer 0 with PIC 14F4550
Тајмер 0 са ПИЦ 14Ф4550
ታይመር 0 ምስ PIC 14F4550
טיימר 0 עם PIC 14F4550
Timer 0 s PIC 14F4550
Timer 0 med PIC 14F4550
Χρονοδιακόπτης 0 με PIC 14F4550
Timer 0 nga adunay Pic 14F4550
Timer 0 Pic 14F4550-тай
Nenhum comentário:
Postar um comentário