adc

Başlatan selvi, 20 Aralık 2009, 14:34:11

selvi

adc ozelligini kullanarak 200mv civarindaki degeri okuyup cikisinda(GPIO.4=1)
ledi yakmak istedim.GPIO.0  bosta iken devreye besleme verir vermez led yanip sonuyor.programda ancak HAM >= 200 kosulunu yazdigimda led kendi kendine yanmiyor.HAM >= 200 bu degerden kucuk olanlarda led kendikendine yanip sonuyor.program asagidadir.onceden farkli denemeler icin ayni programi kullanmisti normal calisiyordu.
@   device  pic12F675,intrc_osc_noclkout, wdt_off, pwrt_on, mclr_off, protect_off,bod_off

DEFINE ADC_BITS 8
DEFINE ADC_CLOCK 3
DEFINE ADC_SAMPLEUS 100
ANSEL = %00110000   
DEFINE OSC 4       'DEFINE OSCCAL_1K 1

TRISIO = %00000001
IOC=%00000000 
INTCON=%00000000
OPTION_REG=%10000000
ADCON0 = %00000001
'-------------------------------------------------------------------------------
HAM    VAR   BYTE
'-------------------------------------------------------------------------------
BASLA:
GPIO.4=0    
ADCIN 0,HAM
IF HAM >= 10  THEN
GPIO.4=1 :PAUSE 1000   'led 
ENDIF
ENDIF
GOTO BASLA
                                                       
END
Yaşam anlamlandırıldıkça kutsaldır....

ete

ANSEL registeri yanlış değer almış durumda.

Programda ADC-0 kanalını ADC girişi olarak kullandığına göre ANSEL registeri,
ANSEL=%00000001
şeklinde değer almalıdır. Hangi bite 1 verirsen o pin Analog olur. ANsel register bitleri GPIO bitlerine karşılık gelir.

DEFINE OSCCAL_1K 1 komutunu açmayı ihmal etme. Yoksa kalibrasyon değeri programlanırken silinir.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com