Отговори на тема  [ 7 мнения ] 
PIC18F1220 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Вто Ное 25, 2008 4:44 pm
Мнения: 31
Мнение PIC18F1220
Здравейте. Имам малък проблем със разбирането на литературата към този определен ПИК. :oops: И се чудех дали някой може да ми каже от къде мога да намеря литература на български за този ПИК

Предварително благодаря.


Вто Ное 25, 2008 4:51 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Съб Фев 18, 2006 11:55 pm
Мнения: 1301
Местоположение: София
Мнение Re: PIC18F1220
iorgov написа:
Здравейте. Имам малък проблем със разбирането на литературата към този определен ПИК.
Какъв е точно "малкия" проблем? Че не знаеш английски ли? Ако е това... Проблемът ти изобщо не е малък за съжаление... Книжките на Млад Конструктор са на български, втората част е за PIC18, и трябва да ти свършат работа... евентуално. http://www.constructor.bg/mk/

_________________
Някой ден и костенурките ще се научат да летят...


Вто Ное 25, 2008 5:07 pm
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Вто Ное 25, 2008 4:44 pm
Мнения: 31
Мнение 
Благодаря за инфото. А "малкия" проблем е че не разбрах секцията от Datasheet-a в която е обяснено как се управлява АЦП-то понеже ми се налага да работя с АЦП за първи път.


Вто Ное 25, 2008 5:18 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Фев 25, 2005 1:58 pm
Мнения: 4585
Местоположение: US
Мнение 
Кажи какво не си разбрал, ще ти се обясни :wink:

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


Вто Ное 25, 2008 5:26 pm
Профил WWW
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Чет Ное 20, 2008 1:49 pm
Мнения: 276
Местоположение: Бургас
Мнение 
Добрее - явно се иска малко обяснение. Приемам, че никога не си работил с АЦП на ПИК, затова ще започна от принципа на управление.
Първо се намира кои са контролните регистри за АЦП-то на конкретния чип. Намира се кой е бита за включване на модула и се сетва, за да започне да работи. Намира се кой е регистърът, задаващ кои крачета от чипа ще са аналогови и кои цифрови. Сетват се съответните битове. Съответно, крачетата, които ще са аналогови, трябва да са конфигурирани като входове от съответния ТРИС.
После от контролните регистри на АЦП се избира източника на тактовата му честота и времето за измерване. В общия случай за едно сравнително точно измерване на АЦП му трябва определено време, за да се зареди задържащия кондензатор и след това да се усредни напрежението. Поради тази причина си има и горен праг за импеданса на източника на измерваното напрежение. Ако твоя източник е с по-голям импеданс, добре ще е да го буферираш с някакъв повторител.
За източник на такт може да се използва цикловата честота на микроконтролера, прекарана през делител или вграден независим осцилатор. В общия случай, вградения осцилатор се използва само ако чипът ще спи, докато се прави измерването. Щом приключи измерването, чипът се събужда, обработва резултата и после може да пусне ново измерване и пак да заспи. За събуждането, четеш регистрите за управление на прекъсванията.
Също се избират и референтните напрежения, спрямо които ще се правят измерванията - това дава възможност да се зададе диапазон, различен от 0 до 5 волта, посредством подаване на еталонни напрежения на едно или две крачета на чипа.
После се намира кой е битът за определяне на формата на резултата от измерването. За резултата са отделени два байта от оперативната памет, които се попълват веднага, щом приключи измерването. Докато трае следващото измерване, те не се променят, което дава сигурност при четенето. Обаче резултатът е десет-битово число, тоест то не запълва целите два байта. Има два варианта - ляво изравнен или дясно изравнен. При първия, старшите осем бита се записват в старшия байт, оставащите два бита са най-старши битове на младшия байт. При втория младшите осем бита се записват в младшия байт, оставащите два бита са най-младши на старшия байт. В общия случай за не съвсем точни и некапризни измервания, ляво изравнен резултат е удобен, защото така можеш да четеш директно от старшия байт, без конкатениране, при което получаваш осем-битов резултат.
Дотук беше настройката. Следва начинът на работа.
Намират се кои са битовете за избор на канал. Те задават кое краче ще е свързано в момента към АЦП, за да направи измерване от него. След като се настрои, се намира стартиращия бит - бита GO/DONE. Когато този бит се сетне, АЦП започва измерването. Щом приключи, той попълва двата байта с резултата, като съобразява формата, който си избрал и сам нулира стартиращия бит. Това е знак за теб, че измерването е приключило и можеш да си прочетеш резултата. Препоръчва се преди следващо измерване да се оставят четири чикъла почивка за АЦП. Не знам защо, но го пише в даташитите.
За следващо измерване си настройваш друг канал (ако ползваш повече от един) и пак вдигаш стартиращия бит. Изчакваш той да се нулира и пак четеш резултата. И така, докато ти трябват измерванията.
За удобство, може да се активира прекъсване при приключване на измерването и обслужващата ти подпрограма да прочита резултата и да го прави каквото си решил.

Сега за конкретния чип:
АЦП-модула има пет регистъра - три контролни и два за резултата. Контролните са наречени ADCON0, ADCON1 и ADCON2. Първия регулира работата на модула, втория задава ролята на крачетата на чипа, третия задава източника на такт, времето за измерване и формата на резултата. При инициализацията на фърмуера ти първо трябва да активираш модула от ADCON0<ADON>. След това задаваш еталонните напрежения от битове ADCON0<VCFG>. Ако ти трябват външни, ще видиш на картата на крачетата кои приемат еталонните напрежения. В общия случай тези напрежения не трябва да излизат извън диапазона на захранващото напрежение.
След това в ADCON1 задаваш кои крачета ще са ти аналогови и кои цифрови. Както вече споменах, тези, които ще са аналогови, трябва да са конфигурирани като входове от съответния ТРИС. Справка - картата на крачетата.
Накрая задаваш в ADCON2 източника ти на такт и времето за измерване. Малко по-надолу в даташита имаш таблица за препоръчителните стойности на времето за измерване, съобразено с тактовата честота на процесора. Пак оттам си настройваш и формата на резултата.
Оттук нататък, когато ти трябва измерване, настройваш от кой канал да ти измери от битовете ADCON0<CHS> и после вдигаш бит ADCON0<GO/DONE>. Изчакваш GO/DONE да падне и си четеш резултата от регистрите ADRESH и ADRESL. За следващо измерване пак превключваш на съответния канал, вдигаш бит GO/DONE, изчакваш да падне и четеш. И така нататък.
За този чип горния праг на импеданса е 2.5 килоома. Ако твоя източник на напрежение е с по-голям импеданс, измерването ще стане неточно. Може да увеличиш времето за измерване или да буферираш източника с повторител или усилвател.
Айде и успешен прощъпулник! :)

_________________
Digitally yours: Optron


Сря Ное 26, 2008 12:11 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 12:02 pm
Мнения: 9119
Местоположение: Разград
Мнение 
И малко допълнение : Всички пикове съобщават за завършване на измерването чрез прекъсване, като вдигат съответният флаг (ADIF) и генерират прекъсване ако ADIE е вдигнат. По този начин не се налага постоянно полване на бита GO/DONE, а резултата се обработва веднага когато е готов. Това е важно когато ще се ползва ацп-то в sleep режим, тъй като контролера излиза от сън при прекъсване.


Сря Ное 26, 2008 3:58 pm
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Вто Ное 25, 2008 4:44 pm
Мнения: 31
Мнение 
Благодаря хора златни сте :)


Чет Ное 27, 2008 1:13 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 7 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 0 госта


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

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни