ето че стигнахме до момента в който трябва да запишем измереният резултат във регистрите и да отчетем краят на процедурата.



първо да припомним каква е разликата между ляво и дясно подравняване от предния урок.



ляво подравняване на резултата - използва се само регистъра ADRESH, като първите два бита /които са последните от регистъра ADRESL/ не се използват.

защо първите два бита не ги използваме в повечето случаи ?

сега ще отговорим на този въпрос.
първо - значи при въртенето на потенциометъра в двете посоки към увеличаване или към намаляване промяната на тези два първи бита /при ляво подравняване/ се променят прекалено бързо и числата получени от тях са прекалено малки за да ни послужат за нашите задачи.
второ - в нашата практика ще ни се налага по често да използваме само ADRESH регистъра защото той е със достатъчна резолюция в измерването. регистъра е 8 битов, това означава че имаме 255 стъпки в измерването на който и да е сигнал. ако сигналите са високо честотни примерно над 10 мегахерца /MHZ/, което ги прави много бързи и трябва да се измерва с голяма точност 10 битов регистър това са 1024 стъпки във процеса на измерване на аналоговия сигнал.

в нашият пример за потенциометъра със светодиодите е напълно достатъчно регистъра да е 8 битов, даже ще ви покажа няколко команди с които можете да намалите измереният резултат в десетично число до граница която ви е необходима за вашите примери.

имам идея да направя АЦП конвертор който да показва измерената стойност както във бинарен формат /11001101/ така и във десетичен едновременно. но това е доста сложен софтуер, който първо трябва да се запознаем със управлението на LCD/лсд/ индикаторите и тогава ще съберем цялата картинка на едно като пъзел ;).

така, да следваме процедурата показана във пдф файла за измерване на ацп конвертора. намирате във пдф файла следният текст :

ADC Operation - STARTING A CONVERSION

To enable the ADC module, the ADON bit of the
ADCON0 register must be set to a ‘1’. Setting the GO/
DONE bit of the ADCON0 register to a ‘1’ will start the
Analog-to-Digital conversion.

COMPLETION OF A CONVERSION
When the conversion is complete, the ADC module will:
• Clear the GO/DONE bit
• Set the ADIF Interrupt Flag bit
• Update the ADRESH and ADRESL registers with
new conversion result

я да преведем тука това парче текст.

значи, превод : за да разрешите АЦП модула, битът ADON във регистъра ADCON0 трябва да е установен в 1. установяването на GO/DONE битът от ADCON0 регистъра във 1 ще стартира конвертирането от аналогов към цифров сигнал.

когато конвертирането завърши, АЦП модулът ще изчисти GO/DONE битът, ще установи ADIF флага за прекъсване битът и ще запише новият резултат във регистрите ADRESH и ADRESL.

така, значи както се вижда от пдф файла процесора ще свърши цялата работа по измерването като от нас се иска само да вдигнем два бита в единица 1. това е добре но как ще видим ние резултата от измерването дали в вярно, колко е като стойност и как да настройм потенциометъра за да се получи желаният резултат. това ще стане като напишем правилно кода на нашият софтуер, проверим действието му на тестова платка, направим симулация в протеуса и ако сме толкова добри в програмирането и електрониката може да си свържем и едно лцд индикаторче да ни показва ко толкоз мери тва ацп разбийш ли :)

сега за сега светодиодите ще бъдат нашият коректив за това дали нашият софтуер е коректен, както разбира се и математиката която ще приложим във формулата за пресмятане на необходимите стойности за да светнат коректно светодиодите.

тука има един текст във пдф файла кйто описва коректно прцедурата при настройка на софтуера как да се измери и запише резултата от измерването. има и код на асемблер, но ние ще дадем коректен код на С/С++ който ще ви работи коректно за вашите примери.



ADC CONVERSION PROCEDURE
This is an example procedure for using the ADC to
perform an Analog-to-Digital conversion:
1. Configure Port:
• Disable pin output driver (Refer to the TRIS
register)
• Configure pin as analog (Refer to the ANSEL
register)
• Disable weak pull-ups either globally (Refer
to the OPTION_REG register) or individually
(Refer to the appropriate WPUx register)
2. Configure the ADC module:
• Select ADC conversion clock
• Configure voltage reference
• Select ADC input channel
• Turn on ADC module
3. Configure ADC interrupt (optional):
• Clear ADC interrupt flag
• Enable ADC interrupt
• Enable peripheral interrupt
• Enable global interrupt(1)
4. Wait the required acquisition time(2).
5. Start conversion by setting the GO/DONE bit.
6. Wait for ADC conversion to complete by one of
the following:
• Polling the GO/DONE bit
• Waiting for the ADC interrupt (interrupts
enabled)
7. Read ADC Result.
8. Clear the ADC interrupt flag (required if interrupt
is enabled).


превод :
АЦП процедура конвертиране
този пример ще бъде използвам за АЦП модулът за да осъществи аналогово към цифрово конвертиране:
1. конфигуриране на порта или само пин от даден порт:
а/ забранете изходните драйвери във TRIS регистъра.
б/ настройте пинът като аналогов във ANSEL регистъра
в/ забранете пул-ъп резисторите във OPTION_REG регистъра за целия порт или за даден пин поотделно
2. конфигуриране на АЦП модула
а/ изберете АЦП честота за конвертиране във ADCON1 регистъра. // забележка : по подразбиране честота е настроена да бъде два пъти по ниска от работната на процесора. в нашият пример работната честота на процесора ще бъде 8 мегахерца, значи измерването ще се извърши на 4 мегахерца, което е даже много бързо за този пример.
б/ настройте еталонното напрежение.
в/ изберете АЦП пин който ще измервате.
г/ включете АЦП модула.
3. настройване на прекъсванията /по желание/
а/ изчистете ADIF /бит/ флага за прекъсванията
б/ разрешете периферийните прекъсвания /бит/
б/ разрешете глобалните прекъсвания /бит/
4. изчакайте задължителното време за преместване на избрания канал
5. стартирайте конвертирането с установяването на GO/DONE битът
6. изчакайте АЦП конвертирането да завърши по един от двата начина :
а/ със смяна на GO/DONE в състояние нула /0/
б/ изчакване на АЦП прекъсване / ако са разрешени/
7. прочетете АЦП резултата във регистрите ADRESH:ADRESL
8. изчистете АЦП флага за прекъсване / ако са разрешени.

сега по план график след прилагането на коректен код всичко трябва да е ОК и светодиодите да светнат всеки според стойността на потенциометъра.

тука ще покажа и една грфика от пдф файла която трябва добре да разгледате и да помислите какво е нарисувано на нея. във следващия урок ще допълна графиката със малко обяснения за да стане по ясна кое за какво е написано.