ADC Ayarları

Başlatan oongit, 15 Ekim 2013, 00:28:31

oongit

Merhaba...

16F877A'nın ADC girişlerinden sadece 3 adedini analog, diğerlerini dijital olarak kullanmak, ayrıca TMR0 sayacını kullanarak Pulse üretmek istiyorum. bunun için yapmam gereken ayarları tam çözemedim. Aşağıda yazdığım kodda bir sıkıntı var mıdır?

INTCON=%10100100
OPTION_REG=%00000101
ADCON1=%10000100
ADCON0=%????????


Ayrıca tüm forum arkadaşlarımızın ve Tüm İslam Aleminin Kurban Bayramını tebrik ediyor ve hayırlara vesile olmasını diliyorum.

robomaster



INTCON = 0b10100000
option_reg = 0b00000111  prescaler 256
adcon1 = 0b1?00100 (an3,an1 ve an0 analog) ? işaretli bit adcon0 daki 7. ve 6. bitin başına gelerek ad işlemindeki frekansı belirler 000 -fosc/2
110 - fosc/64 dür mesela

adcon0 = ??xxxY0z
yukaıdaki ?? ile beraber.
xxx kanal seçimidir. sizde 3 kanal olduğum için 000,001 veya 011 olabilir
Y biti adc durum bitidir. 1 ise adc aktif 0 a dönmesi beklenir. yani burada bir döngü kurup bekletilir.
z biti adc yetkilendirmedir . 1 ise işlem yap 0 ise adc kapalıdır.

not:  ??? işaretli bitlet sizin osc frekansınıza göre denetleyicinin adc çevrimi için ihtiyaç duyduğu süreden az olmamalıdır. fazla olmasında sakınca yoktur ancak buda çevrim için lüzümsuz zaman kaybıdır. 16f877 için bu süre pdf datasheet te var. hesabı da var. siz T = 1 / f ten frekansı hesaplayıp bitleri düzenleyin

Maxim

AN0
AN1
AN3

16F877A analog tanımlamaları için:

TRISA=%001011
CMCON =7
ADCON1=%11000100

Declare Adin_Res 10
Declare Adin_Tad FRC
Declare Adin_Stime 50