PIC16F88 ADC ve LCD sorunu

Örneklerin doğrudan işlemci adresine teslim olması gerekmez.
Modüllerin nasıl kullanıldığını ne komutlar verildiğini görmek yeterlidir.
Mesela I2C modülü için chip değişince komut değişmez.
Ancak ilgili chip in pdf lerinde , hangi modüller var kapasiteleri nelerdir pinlerin hangisi nedir şeklinde bakabilirsiniz.
Aytıca kaydediciler nerededir adresleri filan hepsi pdf lerde mevcut.
Ne derler bilirsiniz " muhtaç olduğun kudret helplerde yoksa manuellerdedir "...

Serdar hocanın kitabını mutlaka al ve ccsc ye geç , benim acizane önerim bu.
Ne kadar iyi bilsekde ara verilince çok şey unutulabiliyor.
 
"Muhtaç olduğun kudret helplerde yoksa manuellerdedir."

Çok başarılı bir deyişmiş Sn. KAZIMUGUR, gerçekten çok beğendim.. :)

Ayrıca Sn. KAZIMUGUR'a katılıyorum. CCS C ile bulabileceğiniz kaynak da çok.. Ben o kitap ve forumumuzdaki çok değerli bir abim sayesinde (Hatta daha çok onun sayesinde.. :) ) çok şey öğrendim. Kitapta 51 tane anlatımlı uygulama yer alıyor. Fiyatı da bence kattıklarının yanında hiç denecek kadar az..

Saygılarımla,
 
@KAZIMUGUR

HiTech Aslanı incelemeyi az önce bitirdim. Genel bilgiler açısından oldukça güzel hazırlanmış bir paylaşım olmuş. Eğer buralardaysa bende bu vesile ile teşekkürlerimi iletmek isterim. Fakat benim LCD sorunuma cevabı tam olarak bulamadım. Yani benim lcd.c ve lcd.h dosyalarına ihtiyacım var öyle ki ; Hitech e direk dahil edebilmeliyim.

@etuzuner

Hocam sizin gödnerdiğiniz örneği de inceledim. ana kodda ve lcd kütüphanelerinde port_b yi atamışsınız çıkış olarak. Ve gayet de olmuş. Ancak ben bunu kendi C koduma yansıtamadım.

Bu kütüphane dosyalarını isteklerimize göre düzenleyebiliyoruz diye biliyorum ve nedense bu düzenlemeleri çalıştıramıyorum. Sanırım atladığım ufak bir nokta daha var.

Tekrardan paylaşımlarınız için teşekkür ederim.
 
Kendi kodunuza derken ne demek istediğiniz tam olarak anlayamadım, kusura bakmayınız. HI-TECH için mi uyarlayamadınız?
 
evet HI-TECH için uyarlayamadım. Bu arada Serdar ÇİÇEK kitabına sahibim. Kitabın çok faydasını gördüm ve genel mikroişlemci mimarisini ondan öğrendim.

Bu arada CCS C ile ilgili birşey sormak istiyorum.

configurasyon ayarlarını F88 için tam olarak belirleyemiyorum. USB pic programlayıcı kullanıyorum. Bu ayarları pice programı atarken configürasyon sekmesinden seçerek yapsam olur mu ?

NOT: Şuanda CCS C ile pic16F88 kullanarka analog okuma için tekrardan program yazıyorum. Sizin de desteğinizle yapacağım inşallah. Bitirince tekrardan ekleyeceğim. Dönütlerinizi bekliyorum
 
Son düzenleme:
Arkadaşlar hepinize tekrardan çok teşekkür ediyorum. Şuanda hem analog okumayı hemde etuzuner arkadaşımın gönderdiği düzenlenmiş lcd.c ile okuduğum analogları LCD de gösterebiliyorum. Bu işleri de CCS C ile yapıyorum :) tek sıkıntı Proteus ta ADC clock un 1.6ms in altında olduğu uyarısı. Ama pici programlayınca herşey düzgün çalışıyor. Bu uyarıyı gözardı edebilirim değil mi ?

Kod bu :

Kod:
#include <16f88.h>


#device ADC=10
#FUSES NOWDT, XT, NOPUT, NOMCLR, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG, NOPROTECT, NOFCMEN, NOIESO
#use delay(clock=4000000)   
#use fast_io(a)
#use fast_io(b)






#int_AD
void  AD_isr(void) 
{
output_high(PIN_A1);
delay_ms(200);
output_low(PIN_A1);
}

unsigned long int bilgi;

void main()
{  
   //setup_psp(PSP_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_ccp1(CCP_OFF);
   
   set_tris_a(0b0001100);
   output_a(0x00);
  set_tris_b(0x00);
   output_b(0x00);
   
   setup_adc(adc_clock_div_4);
   setup_adc_ports(sAN2|VSS_VDD);
   
      enable_interrupts(INT_AD);
      enable_interrupts(GLOBAL);
while(1)
{
set_adc_channel(2);
delay_us(20);
bilgi=read_adc();
if (bilgi < 370)
      
   {   output_high(PIN_B0);
      output_low(PIN_B2);}


      if (bilgi >= 370 && bilgi <= 700)
      
      
   {   output_high(PIN_B0);
      output_high(PIN_B2);}


      if (bilgi > 700)
      
   {   output_low(PIN_B0);
      output_high(PIN_B2);}
      
}


 
   
}
 
Sn. MetaL_HEAD,

16F88'in datasheet inde yazan ADC clock frekansı ile sizin tanımladığınız ADC clock frekansı uyuşmuyor sanırım. Onu bir kontrol edip sonucu söyler misiniz?
 
etuzuner hocam

Ben pic i 4MHz de çalıştırıyorum. 16F88'de ADC Cfrekansı olarak Fosc/2 Fosc/4 Fosc/8 Fosc/16 Fosc/32 Fosc/64 ve Frc destekliyor.

Yukarıdaki kodda sadece bir tane analog input kullandığım için;
setup_adc(adc_clock_div_4) ün karşılığı 4us dir diye düşünüyorum.

Eğer bu doğruysa , simülasyondaki ADC fraksnın 1.6us den küçüktür uyarısı yanlış değil mi ?
 
Sn. MetaL_HEAD,

setup_adc(adc_clock_div_4) => f[SUB]ADC[/SUB]= f[SUB]osc [/SUB]/4 demektir.
 
Sn. etuzuner. bilgilendirmeniz için teşekkürler. O zaman o formülden yola çıkarak 4 MHz de çalışna bir mikroişlemci için 1.6 us den daha büyük bir süre için ADC frekansını Fosc/8 ve daha küçük bir değer seçmem gerekli. Kodda mümkün olan her değişikliği yapmama rağmen proteus hala aynı hatayı gösteriyor. Bu neden olabilir ?
 

Forum istatistikleri

Konular
128,303
Mesajlar
916,558
Kullanıcılar
450,142
Son üye
efe_2.0s

Yeni konular

Geri
Üst