Config CPD_OFF, CP_OFF,MCLRE_OFF,PWRTE_OFF,WDT_OFF ,INTRC_OSC_NOCLKOUT
Device = 12F683
Xtal = 4
TRISIO = %00000011 '--------- GPIO.0 ve GPIO.1 portu input
Declare Adin_Res 10 ' 10-bit result required
Declare Adin_Tad FRC ' RC OSC chosen
Declare Adin_Stime 50 ' Allow 50us sample time
ADCON0 = %10000011
ANSEL.0 = 1 ' GPIO.1 Analog secildi, diğerleri digital
ANSEL.1 = 0 '
ANSEL.2 = 0
ANSEL.3 = 0
12F683 için sadece GPIO.0 NOLU girişini adc olarak kullanmak istiyorum.Diğerlerinin digital kalmasını istiyorum ama ne yaptıysam GPIO.1 ya bağladığım butonu çalıştıramadım.
Neyi gözden kaçırıyorum bilemedim.Datasheetteki adc ayarlarını denedim kanal seçiyorum vs. yemiyor.
All_Digital = TRUE denedinizmi ?
Yaptıklarına ek olarak,
datasheet te gözüme çarpan, yapılması gerekli görünen şunalr var:
9.1.3 ADC VOLTAGE REFERENCE
VCFG bit of the ADCON0 ...
REGISTER 9-1: ADCON0: A/D CONTROL REGISTER 0
ADCON.VCFG = 0 >>>ADC gerilim referansı Vdd (Mcu besleme) pini ne ise o olsun,
[1 yapılırsa Vref pini ADC referans gerilimi olarak alınır]
4.1 GPIO and the TRISIO Registers "NOTE kısmı"
Alıntı YapNote: The ANSEL and CMCON0 registers must
be initialized to configure an analog
channel as a digital input. Pins configured
as analog inputs will read '0'
REGISTER 8-1: CMCON0: COMPARATOR CONFIGURATION REGISTER
CMCON0 = 0x07olmalı.
ben bu şekilde 2 adc girişli olarak kullanıyorum.
Device 12F683
Declare Xtal=8
Config FCMEN_OFF,IESO_OFF,BOD_ON,CPD_OFF,CP_ON,MCLRE_OFF,PWRTE_ON,WDT_OFF,INTRC_OSC_NOCLKOUT
OSCCON.6=1
OSCCON.5=1
OSCCON.4=1
OSCCON.3=0
OSCCON.2=1
OSCCON.1=0
OSCCON.0=1
TRISIO = %00111110
GPIO=%00000000
ADCON0=%10000101
ANSEL =%00010010
OPTION_REG.7=0
WPU=%00110000
Declare Adin_Res 10
Declare Adin_Tad FRC
Declare Adin_Stime 50
Sorun, önseçimli olarak aktif olan komparatörü iptal etmemiş olmanız sanırım.
CMCON=7 komutunu programın başına eklemeniz yeterli olacaktır. Bu eklenti en azından GPIO.1 pinini digital giriş olarak kullanmanızı sağlayacaktır. Aynı pine pullup verebilmeniz için WPU.1=1 demeniz gerekiyor. Aynı zamanda Option_Reg.7=0 da demek gerekir.
Ete