Frecuenciometro con 16f628A y PicBasicPro

Estoy haciendo un frecuenciometro y ya me esta aburriendo....

codigo...

Código:
@ Device   PIC16F628A
@ Device   Intrc_Osc
@ Device   WDT_Off
@ Device   Pwrt_off
@ Device   Mclr_off
@ Device   BOD_Off
@ Device   LVP_Off
@ Device   CPD_Off
@ Device   Protect_Off
Define osc 4

CmCOn=7
TrisA=0
TrisB=%01000000

On Interrupt goto MyInt

Define LCD_Bits  4 
Define LCD_DREG  PortB
Define LCD_DBIT  0
Define LCD_RSREG PortA
Define LCD_RSBIT 6
Define LCD_RWREG PortA
Define LCD_RWBIT 7
Define LCD_EREG  PortA
Define LCD_EBIT  0
Define LCD_Lines 2


Hz    var word
Lapso    var word

PS_tmr1 con  1
IntCon     = %11000000
T1CON      = %00000110

Lapso=1000
loop:
 Gosub muestra
Goto loop

End          
                                     
Muestra:
 TMR1H  = 0: TMR1L  = 0
 PIE1.0   = 1  
 T1CON.0      = 1  

 pause Lapso
 
 T1CON.0      = 0 
 PIE1.0   = 0  
 Hz = TMR1L + (TMR1H * 255)*ps_tmr1
 LCDOUT $FE,$C0
 Lcdout dec HZ," Hz" 
 pause 1000
return

MyInt:
 Disable
  If PIR1.0   = 1 Then  PIR1.0 = 0:lapso=lapso/10
 Resume        
Enable

pongo esquema...
Dibujo.JPG

pongo video...

en el video no se ve bien pero es un oscilador de cristal TTL de 32MHz, y otro de 25MHz, yo ya lo voy a dejar asi...

pero requiero de su coolaboracion para ver si es posible que me pasen un circuito para un oscilador de cristal normalito(no TTL)...diagmos de 4Mz o 10MHZ

pd. no sean koolaids ya me aburrio y no encuentro nada sencillito..
 
Última edición:
opssss...

me tarde exactamente 4 Horas... pero lo encontre...
oscila.jpg


aqui lo pongo por si se me olvida :D

gracia de cualquier manera...
 
lubeck seria posible explicaras esta parte de el programa
Muestra:
TMR1H = 0: TMR1L = 0
PIE1.0 = 1
T1CON.0 = 1

pause Lapso

T1CON.0 = 0
PIE1.0 = 0
Hz = TMR1L + (TMR1H * 255)*ps_tmr1
LCDOUT $FE,$C0
Lcdout dec HZ," Hz"
pause 1000
return

gracias
 
El timer1 se utiliza como contador

TMR1H = 0: TMR1L = 0 ' el valor del timer1 se guarda en 2 variables la H y la L y yo aqui la pngo en cero para que empiece el conteo

PIE1.0 = 1 habilito el registro del overflow (sobreflujo) del Timer1
T1CON.0 = 1 'habilito el timer1

pause Lapso hago una pausa para que haga un determinado numero de conteos en un lapso de tiempo digamos 1mS

T1CON.0 = 0 'deshabilito el timer1 para que deje de contar
PIE1.0 = 0 deshabilito el registro del overflow (sobreflujo) del Timer1
Hz = TMR1L + (TMR1H * 255)*ps_tmr1 ' sumo la variable L +la variable h que es el resultado del conteo pero la multiplico por 255 porque la L tiene los primeros 8 bitsy H los 8 siguiente bits para dar un word de 16bits... y lo multiplico por 1 el valor del preescaler... si se cambia el preescaler en la configuracion del Timer1 entonces se debe cambiar la constante... en este caso se toma la predeterminada del micro que es 1...
LCDOUT $FE,$C0 pongo en pantalla
Lcdout dec HZ," Hz"
pause 1000 Pauso 1 segundo y regreso al bucle principal
return
 
Última edición:
se ve bueno el proyecto pero es un generador o medidor de oscilaciones ?

en teoría es un frecuenciometro(para medir frecuencias)... a ese codigo solo le falta hacer los ajustes de presentación... y quizás los ajustes de calibración...

si lo preguntas porque puse unos osciladores... es que los osciladores los queria armar para verificar las frecuencias con el frecuenciometro...
 
aqui tienes mi frecuencimetro en PICBasic espero te sirva.. adjunto programa y simulacion (para pic 16f628a)

utilizo la funcion count.. ahi esta el truco revizalo
 

Adjuntos

  • EX5_FRECUENCIMETRO.rar
    53.8 KB · Visitas: 169
Atrás
Arriba