Основні особливості архітектури мікроконтролерів PlCmicro. Організація пам'яті програм. Непряма адресація, регістри INDF й FSR, страница 7

Регістри TRIS управляє напрямком каналів вводу/виводу, навіть коли він працює в режимі аналогового входу. Користувач повинен гарантувати, щоб відповідний біт TRIS встановлений в «1» якщо вивід використається як аналоговий вхід

Примітка 1. Якщо виводи мультипліціровани з аналоговими вводами АЦП, то при скиданні мікроконтролера вони будуть настроєні як аналогові входи (управляється регістром ADCON1). Читання каналів, налаштованих як аналоговий вхід буде давати результат '0'.

Примітка 2. Якщо виводи мультипліціровани з аналоговими вводами компаратора, то при скиданні мікроконтролера вони будуть настроєні як аналогові входи (управляється регістром CMCON) Читання каналів, настроєних як аналоговий вхід буде давати результат '0'.

Примітка 3. Якщо виводи мультипліцірованиіз драйверами сегментів LCD то при скиданні мікроконтролера вони будуть настроєні як драйвери сегментів LCD (управляється регістром LCDSE) Щоб настроїти виводи як цифрові канали вводу/виводу, необхідно скинути біти в регістрі LCDSE. Установка біта в регістрі LCDSE скасовує дію відповідного біта в регістрі TRIS.

Примітка 4. Виводи портів можуть бути мультипліціровани з веденим паралельним портом (PSP). Для роботи PSP необхідно встановити біт PSPMODE в «1», а відповідні виводи повинні бути настроєні як цифрові канали уведення/виводу.

Примітка 5. У цей час ведений паралельний порт мультипліцірован тільки з PORTD, PORTE. Порт мікропроцесора стає доступним тільки, коли біт PSPMODE установлений в «1». У цьому режимі біти TRISE повинні бути встановлені в «1» (виводи настроєні як цифрові входи). Для PORTD скасовується дія бітів TRISD. У режимі веденого паралельного порту до входів PORTD й PORTE підключені буфери ТТЛ. Біти керування PSP розташовані в регістрі TRISE

Програмування портів вводу/виводу

При використанні портів (у тому числі GPIQ) як каналів вводу/виводу, необхідно враховувати деякі нюанси роботи портів вводу/виводу для одержання необхідного результату.

Двунаправлений порти вводу/виводу

Всі операції запису в порт виконуються за принципом "читання • модифікація • запис". Наприклад, команди BCF й BSF зчитують значення в регістр ЦПУ, виконують бітову операцію й записують результат назад у регістр. Потрібно деяка обережність при застосуванні подібних команд до регістрів портів вводу/виводу. Наприклад, команда BSF PОRTB, 5 зчитує всі вісім бітів PORTB у ЦПУ, змінює стан біта 5 і записує результат у  вихідні засувки PORTB. Якщо інший канал PORTB (наприклад, RBO) настроєний на вхід, то сигнал на виводі буде зчитаний у ЦПУ й записаний у засувку даним, поверх попереднього значення. Поки RBО настроєний як вхід, ніяких проблем не виникає. Однак, якщо RBО буде пізніше настроєний як вихід значення в засувці даних може відрізнятися від необхідного.

При читанні регістра порту, читається поточний стан порту вводу/виводу. Запис у регістр порту, зберігає значення в засувці порту вводу/виводу. Коли використаються команди "читання - модифікація - запис" (наприклад BSF, BCF і т.д.), зчитується поточний стан порту вводу/виводу, виконується необхідна операція й отримане значення записується в засувку порту

Послідовність операцій з портами вводу/виводу

Запис у порт вводу/виводу фактично відбувається наприкінці машинного циклу, а читання даних виконується на початку циклу (див малюнок). Тому потрібно деяка обережність при записі в порт вводу/виводу, якщо перед записом виконується читання стану цього порту. Послідовність команд повинна бути такий щоб установилася напруга на виводі порту перш ніж буде виконана команда запису в  порт, супроводжувана читанням стану виводів (інакше замість нового значення може бути лічене попереднє). Якщо можливо списану ситуацію, розділите команди запису інструкціями NOP або будь-якими іншими командами, які не звертаються до порту вводу/виводу

6.2 Операції з портом

На малюнку 6.3 показана модель каналу вводу/виводу з описаною ситуацією. Зі збільшенням ємності (З) збільшується тривалість наростання/спаду рівня напруги на виводі. При збільшенні тактової частоти мікроконтролера, підсилюється вплив ємності на виконання команд "читання   модифікація   запис" з регістрам порту вводу/виводу PORTX. До складу ємності (З) входить паразитна ємність провідника й виводів компонентів, підключених до виводу порту вводу/виводу.