Pesquisar neste blog

25/02/2023

Timer 0 com PIC 14F4550

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: