Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d

Ana Menü

setup div_X komutları

Başlatan jozzef, 18 Ağustos 2011, 23:42:17

jozzef

Merhaba arkadaşlar,
ADC ve timer'larda geçen bölüm sayıları neyi etkiler?
Mesela ADC kullanırken 2 ve 32 olması neyi değiştirir?
setup_adc(ADC_clock_div_X);


Peki CCP modülünü kullanacaksam timer2'de neyi değiştir?
setup_timer_2(T2_div_by_X,255,1); (PWM)


Teşekkürler

justice_for_all

onlar zaman bolmeleri adc de olcme zamanini belirlersin yani hizli yada yavas sayi arttikca adc cevirme hizi azalir pemde de oyle ordada frekansi ayarlamak icin kullanilir hesaplari var onlarin arastirabilirsin..
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

jozzef

-Peki çevirmeyi neden yavaş tutmak isteyeyim ki? Güç tüketimini azaltmak için mi?

fahri-

4MHz de çalışırken hızlı çalıştırırsan problem olmayabilir ama 20MHz de çalışırken ADC doğru convert yapamaz. mecburen hızı düşürmek zorunda kalırsın.

jozzef

Açıklayıcı oldu, teşekkürler. ADC ile çalışırken bir problem daha çıktı.
-AN0 bacağına pot bağlıyorum ve ordan okuduğum değeri hyperterminal üzerinden okuyorum. ADC çeviriciden gelen değeri
unsigned int pot;

ile pot'a atarsam okuduğum değerler -128 ile +128 arasında değişiyor; eğer
unsigned long int pot;

yaparsam 0 ile +255 arasında değişiyor.
Bunun nedeni nedir? Sonuçta 2 tarafta 8 bitken sorun çıkmaması gerekmez mi? Kodumun tamamı aşşağıda verilmiştir. Teşekkürler

#include <16f877A.h> 
#device ADC=8 
#fuses HS,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD 
#use delay(clock=20000000) 
#use rs232 (baud=9600, xmit=pin_C6, rcv=pin_C7, parity=N, stop=1)
#org 0x1F00, 0x1FFF void loader16F877A(void) {}

// Değişkenler
unsigned long int pot;

// Ana Fonksiyon
void main ()
{
   setup_psp(PSP_DISABLED);       
   setup_spi(SPI_SS_DISABLED);     
   setup_timer_1(T1_DISABLED);    
   setup_timer_2(T2_DISABLED,0,1); 
   setup_CCP1(CCP_OFF);           
   setup_CCP2(CCP_OFF);            
   setup_comparator(NC_NC_NC_NC); 
   
   setup_adc(ADC_clock_div_32);    
   setup_adc_ports(AN0);    

   printf("\rADC Uygulamasi");
   set_adc_channel(0);
   delay_ms(20); // Kanal seçtikten sonra bekleme vermek zorunludur
   while(1)
   {
      pot=read_adc();
      printf("\n\rAnalog:%Ld",pot);
      delay_ms(1500);
   }
}




fahri-

printf("\n\rAnalog:%Ld",pot); satırını

printf("\n\rAnalog:%Lu",pot); olarak değiştirirsen tamam olur.

jozzef