gelen sinyalin frekansını ve genliğini pic ile ölçmek

Başlatan metechno, 22 Temmuz 2010, 09:52:32

metechno

şu an sinüzoidal genliği lcd'ye yazdırabiliyorum. ama frekansı nasıl yazdıracağımı bilmiyorum kodlarda zayıfım baya yardımcı olabilirseniz sevinirim. şu ana kadar yazdığım kod aşağıdadır.

#include <htc.h>
#include "delay.h" 
#include "lcd.h" 
  
int voltaj_1, voltaj_2,i;
int frekans;
__CONFIG(XT & UNPROTECT & WDTDIS & LVPDIS & PWRTEN & BORDIS);
void main(void) {

TRISA=0x01; 
TRISB=0x00; 
TRISC=0x00;
TRISD=0x00;
PORTA=0x00;
PORTB=0x00;
PORTC=0x00;
PORTD=0x00;
 
PCFG3=1; 
PCFG2=1;
PCFG1=1;
PCFG0=0;

ADFM=1; 
ADON=1; 
ADIF=0; 
ADIE=1; 
PEIE=1; 
GIE=1;
lcd_init(); 
lcd_yaz("Genlik=");
lcd_gotoxy(2,1);
lcd_yaz("Frekans=");
 
for(;;) {
 
CHS2=0; 
CHS1=0;
CHS0=0;
ADCS1=1;
ADCS0=0;
DelayUs(250);
ADGO=1; 
while(!ADGO);
for(i=0;i<10000;i++){
voltaj_1=(int)((ADRESH*256+ADRESL)/2); 
if(voltaj_1>voltaj_2)
voltaj_2=voltaj_1;}
lcd_gotoxy(1,10); 


veri_yolla(voltaj_2/1000+48);
veri_yolla((voltaj_2%1000)/100+48);
veri_yolla('.');
veri_yolla((voltaj_2%100)/10+48);
veri_yolla(voltaj_2%10+48);
veri_yolla('V'); }}


static void interrupt
led_yaz_son(void){

if(ADIF) {
GIE=0; 
i=!i; 
RC5=i; 
ADIF=0; 
GIE=1; }}


FFT

picte ccp özelliği varsa onunla yada timer external pinlerinden birine bağlayıp başka bir timer ile de 1sn ye kurmak şeklinde olabilir. olmadı ext_int pinine bağlayıp değişkeni süre bitene kadar arttırmak