Pessoal , deem uma olhada nesse simples programinha :
#include <12F675.h>
#fuses INTRC,NOWDT,NOPROTECT,NOMCLR
#use delay(clock=4000000)
#include <regs_12F6xx.h>
#bit pino0 = gpio.0
#int_timer0
void trata_int()
{ set_timer0(176);
pino0=~pino0; }
void main (void)
{
ansel=0;
trisio=0;
cmcon=7;
gpio=0;
setup_timer_0 (rtcc_internal | rtcc_div_2);
enable_interrupts (global | int_timer0);
while(true);
}
então vamos lá : fosc /4 = 1mhz
.
.
RTCC_DIV_2 = 500Khz
.
.
set_timer(176) ... (256-176)=80 , então 500K/80=6250Hz
.
.
pino0=~pino0; inverte pino ,ai 1 interrupção em 1 e outra em 0 , então fica 6250 hz / 2 , que dá 3125Hz ...
Beleza pessoal , mas quando rodo isso no pic , e meço a frequencia , ela está em 2540Hz ... muito fora .. o oscilador interno esta calibrado .... ai simulo no Proteus , e o resultado eh o mesmo , ~ 2540 Hz ....
agora pergunto , oque esta errado com esses calculos acima ??
abs
Geraldo