Adc ile ilgili problem? (Çözüldü)

Başlatan kdrsrn, 10 Eylül 2014, 23:28:07

kdrsrn

Hocalarım arkadaşlarım merhaba,

Aranıza yeni katıldım yeni yeni Ccs-c ye alıştırma turları yapıyorum ancak şu şekilde bir problemle karşılaştım.
877A ile Pin A0 dan (an0) analog veri okumaya çalışıyorum ancak nedense pot ile en ufak oynamamda bile -64 128 64 0 gibi değerler okunuyor. Yarcımcı olursanız sevinirim.

Sigorta ayarlarını vs hepsini Project Wizard'dan yaptım.

adc-1.h
#include <16F877A.h>
#device ADC=16

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O

#use delay(crystal=4000000)


adc-1.c
#include <adc-1.h>

#define LCD_ENABLE_PIN PIN_B0
#define LCD_RS_PIN PIN_B1
#define LCD_RW_PIN PIN_B2
#define LCD_DATA4 PIN_B4
#define LCD_DATA5 PIN_B5
#define LCD_DATA6 PIN_B6
#define LCD_DATA7 PIN_B7

#include <lcd.c>

void main()
{
 
   setup_adc(adc_clock_div_32);
   setup_adc_ports(AN0);

   lcd_init();
   int pot;

   while(TRUE)
   {
      set_adc_channel(0);
      delay_us(20);
      pot=read_adc();
     
      printf(lcd_putc,"\fILK ADC DENEMESI");
      delay_ms(50);
      printf(lcd_putc,"\nDEGER=%d",pot);
      delay_ms(1500);
   }

}




Burak

Valla basic'te 877 işlemcisi ile çalışırken ADCON1 ve ADCON0 kayıtçı değerlerini ayarlıyoruz ... Bu değerleri istediğimiz kanalları analog yada dijital olarak ayarlayabilme , ADC çevrim kontrolü sağlama gibi işlevler için kullanıyoruz .. CCS'de durum nasıldır bilmiyorum ama belkide dediğim kayıtçılara bi ayar çeksen durum lehine döner ... Bide proteus'ta ekran kontrast potu bağlantısı yanlış yapılmış sanki potun en baş uçlarından birisi Vdd diğeri Vss orta bacak Vo yada vee bacağına gitmeli .. ..  Bunun dışında benim gözüme çarpan bişi yok .
Ω Gens Una Sumus Ω

kdrsrn

Burak hocam valla adcon1 vs daha bilmiyorum kayıt falan nedir ne değildir ama sorun çözüldü.

Hatam da 877a nın adc modülünün bitiyle alakalıymış ben project wizard dan yaptım oda 877a için 16 bit vermiş ama normalde 10 bit sadece adc-1.h deki 16 yı 10 yapınca herşey düzeldi. :)

Burak

Evet benzer problemler basic'te de oluşabiliiyo , define parametreleri ile adc çevrim sonucu bit genişliğini yazılımda bildirmemiz gerekiyor . Çözüldüğüne sevindim . Hayırlı akşamlar dilerim
Ω Gens Una Sumus Ω

Powered by EzPortal