Безкоштовна технічна бібліотека ЕНЦИКЛОПЕДІЯ РАДІОЕЛЕКТРОНІКИ ТА ЕЛЕКТРОТЕХНІКИ Мікроконтролер PIC16C84. Короткий опис. Енциклопедія радіоелектроніки та електротехніки Енциклопедія радіоелектроніки та електротехніки / Мікроконтролери Даний опис не претендує на повноту і містить кілька помилок і помилок. Повну документацію можна отримати у дистриб'юторів Microchip, адреси яких наведені в кінці файлу. Запровадження PIC16C84 відноситься до сімейства КМОП мікроконтролерів. Відрізняється тим, що має внутрішнє 1K x 14 біт EEPROM для програм, 8-бітові дані та 64байт EEPROM пам'яті даних. При цьому відрізняються низькою вартістю та високою продуктивністю. Користувачі, які знайомі з сімейством PIC16C5X можуть переглянути докладний список відмінностей нового від вироблених контролерів. Усі команди складаються з одного слова (14 біт шириною) виконуються за один цикл (400 нс при 10 МГц), крім команд переходу, які виконуються за два цикли (800 нс). PIC16C84 має переривання, що спрацьовує від чотирьох джерел, та восьмирівневий апаратний стек. Периферія включає 8-бітний таймер/лічильник з 8-бітним програмованим попереднім дільником (фактично 16 - бітний таймер) і13 ліній двонаправленого вводу/виводу. Висока здатність навантаження (25мА макс. струм, що втікає, 20 мА макс. струм, що витікає) ліній вводу/виводу спрощують зовнішні драйвери і, тим самим, зменшується загальна вартість системи. Розробки на базі контролерів PIC16C84 підтримується асемблером, програмним симулятором, внутрішньосхемним емулятором (тільки фірми Microchip) та програматором. Серія PIC16C84 підходить для широкого спектру додатків від схем високошвидкісного керування автомобільними та електричними двигунами до економічних віддалених приймачів, що показують приладів та зв'язкових процесорів. Наявність ПЗП дозволяє підлаштовувати параметри у прикладних програмах (коди передавача, швидкості двигуна, частоти приймача тощо). Мінімальні розміри корпусів, як для звичайного, так і для поверхневого монтажу, робить цю серію мікроконтролерів придатною для портативних додатків. Низька ціна, економічність, швидкодія, простота використання та гнучкість введення/виведення робить PIC16C84 привабливим навіть у тих областях, де раніше не застосовувалися мікроконтролери. Наприклад, таймери, заміна жорсткої логіки у великих системах, співпроцесори. Слід додати, що вбудований автомат програмування EEPROM кристала PIC16C84 дозволяє легко підлаштовувати програму та дані під конкретні вимоги навіть після завершення асемблювання та тестування. Ця можливість може бути використана як для тиражування, так і для занесення калібрувальних даних вже після остаточного тестування. Огляд показників - лише 35 простих команд; - усі команди виконуються за один цикл(400ns), крім команд переходу -2 цикли; - робоча частота 0 Гц...10 МГц (min 400 нс цикл команди) - 14 – бітові команди; - 8 – бітові дані; - 1024 х 14 електрично перепрограмованої програмної пам'яті на кристалі (EEPROM); - 36 х 8 регістрів загального використання; - 15 спеціальних апаратних регістрів SFR; - 64 x 8 ЕEPROM пам'яті, що електрично перепрограмується, для даних; - восьмирівневий апаратний стек; - пряма, непряма та відносна адресація даних та команд; - чотири джерела переривання: . зовнішній вхід INT . переповнення таймера RTCC . переривання під час зміни сигналів на лініях порту B . після завершення запису даних у пам'ять EEPROM Периферія та Введення/Виведення - 13 ліній введення-виводу з індивідуальним налаштуванням; - струм, що витікає/випливає, для керування світлодіодами . макс струм - 25 мА . макс струм, що витікає - 20 мА - 8 - бітний таймер/лічильник RTCC з 8-бітним програмованим попереднім дільником; - автоматичне скидання при включенні; - таймер включення під час скидання; - таймер запуску генератора; - Watchdog таймер WDT із власним вбудованим генератором, що забезпечує підвищену надійність; - EEPROM біт секретності для захисту коду; - Економічний режим SLEEP; - біти, що вибираються користувачем, для встановлення режиму збудження вбудованого генератора: - RC генератор: RC - звичайний кварцовий резонатор: XT - високочастотний кварцовий резонатор: HS - Економічний низькочастотний кристал: LP - вбудований пристрій програмування EEPROM пам'яті програм та даних; використовуються лише дві ніжки. КМОП технологія - Економічна високошвидкісна КМОП EPROM технологія; - Статичний принцип в архітектурі; - широкий діапазон напруг живлення та температур: . комерційний: 2.0...6.0 В, 0...+70С . промисловий: 2.0...6.0 В, -40...+70С . автомобільний: 2.0...6.0 В, -40...+125С - низьке споживання . 3 мА типово для 5В, 4МГц . 50 мкА типово для 2В, 32кГц . 26 мкА типово для режиму SLEEP при 2В. Структурна схема PIC16C84 Архітектура заснована на концепції роздільних шин та областей пам'яті для даних та команд (Гарвардська архітектура). Шина даних та пам'ять даних (ОЗУ) - мають ширину 8 біт, а програмна шина та програмна пам'ять (ПЗУ) мають ширину 14 біт. Така концепція забезпечує просту, але потужну систему команд, розроблену так, що бітові, байтові та регістрові операції працюють з високою швидкістю та з перекриттям за часом вибірок команд та циклів виконання. 14-бітова ширина програмної пам'яті забезпечує вибірку 14-бітової команди в один цикл. Двоступінчастий конвеєр забезпечує одночасну вибірку та виконання команди. Усі команди виконуються за один цикл, виключаючи команди переходів. У PIC16C84 програмна пам'ять обсягом 1К х 14 розташована усередині кристала. Виконувана програма може бути лише у вбудованому ПЗУ. Відмінності PIC16C84 від PIC16C5x 1. Довжина команди збільшилася до 14 біт. Це дозволяє організувати ПЗУ та ОЗУ зі збільшеним розміром сторінки: (2К байта замість 512 байт), (128 байт замість 32 байт) відповідно. 2. Старший регістр програмного лічильника (PCLATH) управляє перемиканням сторінок програмної пам'яті. Біти вибору сторінок PA2, PA1, PA0, які використовувалися для цього в кристалі PIC16C5X – вилучені з регістру STATUS. 3. Сторінка організації пам'яті та регістр STATUS- модифіковані. 4. Додано чотири нові команди: RETURN, RETFIE, ADDLW, SUBLW. У двох командах TRIS та OPTION відпала необхідність, однак вони збережені для програмної сумісності з PIC16C5X. 5. Реєстри OPTION і TRIS зроблені такими, що адресуються за номером. 6. Додано можливість працювати з переривання. Вектор = 0004h. 7. Розмір стека збільшена до восьми рівнів. 8. Адреса скидання при включенні змінилася на 0000h. 9. Розпізнаються п'ять різних типів скидання (виходи з режиму SLEEP). Ініціалізація регістрів змінено. Вони встановлюються по-різному, залежно від типу скидання. 10. Додано вихід із режиму SLEEP через переривання. 11. Для більш надійного запуску додані наступні апаратні затримки: таймер запуску (OST) та таймер включення живлення (PWRT). Ці таймери можуть бути використані вибірково, щоб уникнути непотрібних затримок як при включенні, так і при виході з режиму SLEEP. 12. Порт B має активні навантаження та переривання при зміні вх.сигналів. 13. Ніжка RTCC поєднана з ніжкою порту (RA4). 14. Реєстр з адресою 07h (порт C) немає і не є регістром загального призначення. 15. Реєстр FSR (f4), в якому зберігається покажчик при непрямій адресації, став шириною у вісім біт. 16. Реалізовано вбудований автомат програмування EEPROM. Користувач може програмувати PIC16C84, використовуючи лише п'ять ніжок: Vdd, Vss, /MCLR/Vpp, RB6(тактова частота), RB7(вхід/вихід даних). Перехід від PIC16C5x до PIC16C84 Щоб перевести код, написаний для PIC16C5X в код для PIC16C84, користувач повинен виконати такі кроки: 1. Замінити операції на вибір сторінок програмної пам'яті (біти PA2, PA1, PA0) командами CALL, GOTO. 2. Переглянути всі обчислювані операції переходів (запис у PC або додавання з PC, і т.д.) і переконатися, що біти сторінок встановлюються коректно і для нового кристала. 3. Виключити перемикання сторінок пам'яті даних. Перевизначити змінні та перерозподілити пам'ять для них. 4. Перевірити запис регістри STATUS, OPTION, FSR, т.к. вони дещо змінені. 5. Змініть вектор скидання під час увімкнення на 0000h. 6. Зверніть увагу, що адреса 07h - це неіснуюча адреса пам'яті даних. Типи корпусів та виконань Позначення корпусів кристалів PIC16C8x. Тип корпусу вказується в маркуванні при замовленні мікросхем. Корпуси бувають лише з 18 Висновками. PDIP – Звичайний пластмасовий дворядний корпус. Використовується для OTP EPROM версії кристалів. SOIC - Малогабаритний корпус DIP для монтажу на поверхню Виконання мікросхем бувають трьох типів: комерційні, для промисловості та автомобільної електроніки. Основна їх відмінність у температурному діапазоні та робочій напрузі. Комерційне виконання Робоча температура 0...+70°C Робоча напруга 3.0...5.5 В Виконання для промисловості Робоча температура -40.... +85 °C Робоча напруга 3.0...5.5 В Виконання для автомобілів Робоча температура -40...+125 °C Робоча напруга 3.0...5.5 В Маркування при замовленні Позначення мікросхем складається з наступних полів: <Фірм.номер>-<Частота генератора><Темпер.діапазон>/<Корпус><Примітка> <Фірм.номер буває>: PIC16C84 - Vdd range 4...6 V PIC16LC84 Vdd range 2...6 V <Частота генератора>: 04 ---> 4 mHz 10 ---> 10mHz Температурний діапазон буває: - від 0С до +70С I від -40С до +85С E від -40С до +125С Корпус позначається: P – звичайний пластмасовий DIP SO -300 mil SOIC Приклади: PIC16C84-04/Pxxx 4 mHz, комерційне виконання в PDIP корпусі, норм.діапазон Vdd, масочне ПЗУ з програмою xxx PIC16LC84-04I/SO 4 mHz, виконання для промисловості, розширений діапазон живлення, корпус = SOIC PIC16C84-10E/P виконання для автомобілів, 10 mHz, PDIP, норм. живлення Розведення ніжок Функціональне призначення висновків див. "Позначення Виводів" або Структурну Схему. Типи корпусів PDIP та ін. див. "Корпуса". Призначення ніжок Позначення ніжок та їх функціональне призначення. Максимальні значення електричних параметрів Вихід параметрів за ці межі може призвести до пошкодження мікросхеми. Робота кристала на гранично допустимих значеннях протягом багато часу вплине з його надійність. Примітки: 1. Повна потужність, що розсіюється, не повинна перевищувати 800 мВт для кожного корпусу. Розсіювана потужність обчислюється за такою формулою: Pdis = Vdd (Idd - Сума (Ioh)) + Сума ((Vdd - Voh) Ioh) + Сума (Vol Iol) 2. Зниження напруги на ніжці /MCLR нижче Vss(земля) викликає великі струми, більше 80 мА, і може призвести до пошкодження цієї лінії. Тому рекомендуємо подавати сигнали на ніжку /MCLR через обмежуючий резистор 50-100 Ом. Огляд регістрів та ОЗУ Область ОЗП організована як 128 х 8. До осередків ОЗП можна адресуватися прямо чи опосередковано, через регістр покажчик FSR (04h). Це також стосується і EEPROM пам'яті даних-констант. У регістрі статусу (03h) є біти вибору сторінок, які дозволяють звертатися до чотирьох сторінок майбутніх модифікацій цього кристала. Однак для PIC16C84 пам'ять даних існує лише до адреси 02Fh. Перші 12 адрес використовуються для розміщення регістрів спеціального призначення. Регістри з адресами 0Ch-2Fh можуть бути використані як регістри загального призначення, які є статичною ОЗУ. Деякі регістри спеціального призначення продубльовані на обох сторінках, а деякі розташовані на сторінці 1 окремо. Коли встановлена сторінка 1, то звернення до адрес 8Ch-AFh фактично адресує сторінку 0. До регістрів можна адресуватися прямо або опосередковано. В обох випадках можна адресувати до 512 регістрів. Пряма адресація Коли проводиться пряма 9-бітова адресація, молодші 7 біт беруться як пряма адреса з коду операції, а два біти покажчика сторінок (RP1, RP0) з регістра статусу (03h). Непряма адресація f4 - Вказівник косв.адресації Будь-яка команда, яка використовує f0 (адреса 00) як регістр фактично звертається до покажчика, який зберігається у FSR (04h). Читання опосередкованим чином самого регістра f0 дасть результат 00h. Запис регістра f0 побічно виглядатиме як Nop, але біти статусу можуть бути змінені. Необхідна 9-бітна адреса формується об'єднанням вмісту 8-бітного FSR регістру та біта IRP з регістра статусу. Зверніть увагу, що деякі регістри спеціальних функцій розміщуються на сторінці 1. Щоб адресуватися до них, потрібно додатково встановити один біт RP0 в регістрі статусу. RTCC таймер/лічильник Структурну схему включення RTCC наведено нижче. Вона містить елемент "MUX" – це електронний перемикач. Режим таймера вибирається шляхом скидання в нуль біта RTS, що знаходиться в регістрі OPTION. У режимі таймера RTCC інкрементуватиметься від ВНУТРІШНЬОГО ДЖЕРЕЛА частоти - кожен командний цикл (без предделителя). Після запису інформації в RTCC інкрементування його почнеться після двох командних циклів. Таке відбувається з усіма командами, які виконують запис чи читання-модифікацію-запис f1 (напр.MOVF f1, CLRF f1). Уникнути цього можна за допомогою запису RTCC скоригованого значення. Якщо RTCC потрібно перевірити на рівність нулю без зупинки рахунка, слід використовувати інструкцію MOVF f1,W. Режим лічильника вибирається шляхом встановлення в одиницю біта RTS, який знаходиться в регістрі OPTION. У цьому режимі RTCC інкрементуватиметься або позитивним, або негативним фронтом на ніжці RA4/RTCC від зовнішніх подій. Напрямок фронту визначається керуючим бітом RTE у регістрі OPTION. При RTE=0 буде обрано позитивний фронт. Лічильник може бути використаний або спільно з RTCC, або з таймером Watchdog. Варіант підключення дільника контролюється бітом PSA у регістрі OPTION. При PSA=0 дільник буде приєднано до RTCC. Вміст дільника програмі недоступний. Коефіцієнт розподілу – програмується. Переривання RTCC виробляється тоді, коли відбувається переповнення RTCC таймера/лічильника при переході від FFH до 00h. Тоді встановлюється біт запиту RTIF у регістрі INTCON<2>. Дане переривання можна замаскувати бітом RTIE у регістрі INTCON<5>. Біт запиту RTIF повинен бути скинутий програмно під час обробки переривання. Переривання RTCC не може вивести процесор з SLEEP тому, що таймер не функціонує в цьому режимі. Проблеми з таймером Проблеми можуть виникнути за рахунок зовнішніх сигналів. Ці сигнали намагаються внутрішнім сигналом синхронізації, див. схему SYNC. Утворюється деяка затримка між фронтом сигналу вхідного і моментом інкрементування RTCC. Cтробування проводиться після визначника. Вихід розподільника опитується двічі протягом кожного командного циклу, щоб визначити позитивний і негативний фронти вхідного сигналу. Тому сигнал Psout повинен мати високий та низький рівень щонайменше двох періодів синхронізації. Коли розподільник не використовується, Psout повторює вхідний сигнал, тому вимоги до нього такі: Trth= RTCC high time >= 2 tosc+20ns Trtl = RTCC low time > = 2 tosc + 20ns. Коли розподільник використовується, на вхід RTCC подається сигнал, поділений на число, встановлене в лічильнику дільника. Сигнал після розподільника завжди симетричний. Psout high time = Psout low time = NTrt/2, де Trt - вхідний період RTCC, N- значення лічильника дільника (2,4...256). В цьому випадку вимоги до вхідного сигналу можна виразити так: NTrt/2 >= 2 tosc +20ns або Trt >= (4tosc + 40ns)/N. Коли використовується межа, низький і високий рівень сигналу на його вході повинні бути не менше 10 нс. Таким чином, загальні вимоги до зовнішнього сигналу, коли дільник підключений такі: Trt = RTCC період > = (4tosc + 40ns) / N Trth = RTCC high time >= 10ns Trtl = RTCC low time >= 10ns. Так як вихід визначника синхронізується внутрішнім сигналом тактової частоти, існує невелика затримка між появою фронту зовнішнього сигналу і часом фактичного інкременту RTCC. Ця затримка знаходиться у діапазоні між 3tosc та 7tosc. Таким чином, вимірювання інтервалу між подіями буде виконано з точністю 4tosc (+-400нс при кварці 10 МГц). Реєстр статусу Регістр (f3) містить арифметичні прапори АЛУ, стан контролера під час скидання та біти вибору сторінок пам'яті даних. (f3) доступний для будь-якої команди так само, як будь-який інший регістр. Однак біти TO і PD встановлюються апаратно і не можуть бути записані в статус програмно. Це слід на увазі при виконанні команди з використанням регістру статусу. Наприклад, команда CLRF f3 обнулює всі біти, крім бітів TO і PD, а потім встановить біт Z=1. Після виконання цієї команди регістр статусу може не мати нульове значення (через бітів TO і PD) f3=000??100. Тому рекомендується для зміни регістру статусу використовувати лише команди бітової установки BCF, BSF, MOVWF, які не змінюють решту бітів статусу. Вплив всіх команд на біти статусу можна переглянути в "Описі команд". Програмні прапори статусу Розміщення прапорів у реєстрі статусу таке: Для команд ADDWF та SUBWF. Цей біт встановлюється, якщо в результаті операції із найстаршого розряду відбувається перенесення. Віднімання здійснюється шляхом додавання додаткового коду другого операнда. При виконанні команд зсуву цей біт завжди завантажується з молодшого або старшого біта джерела, що зрушується. Для команд ADDWF та SUBWF. Цей біт встановлюється, якщо результаті операції з четвертого розряду відбувається перенесення. Механізм установки десяткового біта переносу "DC" той самий, відрізняється тим, що відстежується перенесення з четвертого біта. Z - Прапор нульового результату: Встановлюється, якщо результатом арифметичної чи логічної операції є нуль. PD - Power Down (Режим зберігання даних): Встановлюється в "1" при включенні живлення або CLRWDT. Скидається в "0" командою SLEEP. TO – Time Out. Прапор спрацьовування Watchdog таймера: Встановлюється "1" при включенні живлення і командами CLRWDT, SLEEP. Скидається в "0" після завершення витримки часу таймера WDT. RP1, RP0 - Біти вибору сторінки пам'яті даних за прямої адресації: RP1, RP0: 00= Сторінка 0 (00h-7Fh) 01= Сторінка 1 (80h-FFh) 10= Сторінка 2 (100h-17Fh) 11= Сторінка 3 (180h-1FFh) На кожній сторінці розміщено 128 байт. У кристалі PIC16C84 використовується лише RP0. У цьому кристалі RP1 можна використовувати просто як біт загального призначення читання/запису. Однак слід пам'ятати, що у подальших розробках він використовуватиметься. IRP - Біт вибору сторінки пам'яті даних при непрямій адресації: IRP0: 0= Сторінки 0,1 (00h-FFh) 1= Сторінка 2,3 (100h-1FFh) Цей біт у кристалі PIC16C84 використовувати не має сенсу. Тому його можна використовувати як біт загального призначення читання/запису. Проте, слід пам'ятати, що у подальших розробках він використовуватиметься. Апаратні прапори статусу Апаратні Біти статусу TO (Time Out) та PD (Power Down). За станом бітів регістру статусу "TO" та "PD" можна визначити, чим було викликано "Скидання": - просто включенням живлення, - спрацьовуванням таймера watchdog, - виходом з режиму зниженого енергоспоживання (Sleep) в результаті спрацьовування watchdog таймера, - За зовнішнім сигналом /MCLR. На стан цих бітів можуть вплинути лише такі події: Примітка: Біти TO та PD зберігають поточний стан доти, доки не відбудеться одна з подій, перелічених у таблиці. "0"-Імпульс низького рівня на вході кристала /MCLR не змінює стан бітів TO та PD. Організація вбудованого ПЗП Програмний лічильник PIC16C84 має ширину 13 біт і здатний адресувати 8Кх14біт обсягу програмної пам'яті. Проте, фізично на кристалі є лише 1Кх14 пам'яті (адреси 0000h-03FFh). Звернення до адрес вище 3FFh фактично є адресація в той же перший кілобайт. Вектор скидання знаходиться за адресою 0000h, вектор переривання знаходиться за адресою 0004h. EEPROM PIC16C84 розрахований на обмежену кількість циклів стирання/запису. Щоб записати в програмну пам'ять, кристал повинен бути переведений у спеціальний режим, при якому на ніжку /MCLR подається напруга програмування Vprg, а живлення Vdd має перебувати в межах 4.5 В ... 5.5В. PIC16C84 непридатний для застосування, в яких часто модифікується програма. Запис у програмну пам'ять здійснюється побитно, послідовно з використанням двох ніжок. PC та адресація ПЗУ (f2). Програмний лічильник Ширина програмного лічильника – 13 біт. Молодший байт програмного лічильника (PCL) доступний для читання та запису та знаходиться в регістрі 02h. Старший байт програмного лічильника (PCH) не може бути прямо прочитаний або записаний. Старший байт програмного лічильника може бути записаний через PCLATH регістр, адреса якого 0Ah. Залежно від цього, чи завантажується в програмний лічильник нове значення під час виконання команд CALL, GOTO, чи молодший байт програмного лічильника (PCL) виробляється запис, - старші біти програмного лічильника завантажуються з PCLATH у різний спосіб оскільки показано малюнку. Випадок команд GOTO, CALL Стек та повернення з підпрограм Кристал PIC16C84 має восьмирівневий апаратний стек шириною 13 біт. Область стека не належить ні до програмної області, ні до області даних, а покажчик стека користувачу недоступний. Поточне значення програмного лічильника надсилається у стек, коли виконується команда CALL або виконується обробка переривання. При виконанні процедури повернення з підпрограми команди RETLW, RETFIE або RETURN), в програмний лічильник вивантажується вміст стека. Регістр PCLATH (0Ah) не змінюється під час операцій зі стеком. Дані в EEPROM Довготривала Пам'ять даних EEPROM. Пам'ять даних EEPROM дозволяє прочитати та записати байт інформації. При записі байта автоматично стирається попереднє значення і записуються нові дані (прання перед записом). Всі ці операції здійснює вбудований автомат запису EEPROM. Вміст клітинок пам'яті зберігається при вимкненні живлення. Кристал PIC16C84 має пам'ять даних 64х8 EEPROM біт, яка дозволяє запис і читання під час нормальної роботи (у всьому діапазоні напруги живлення). Ця пам'ять не належить до області регістрів ОЗУ. Доступ до неї здійснюється через два регістри: EEDATA <08h>, який містить восьмибітові дані для читання/запису та EEADR <09h>, який містить в собі адресу комірки до якої йде звернення. Додатково є два керуючі регістри: EECON1 <88h> і EECON2 <89h>. При зчитуванні даних з пам'яті EEPROM необхідно записати потрібну адресу в регістр EEADR і потім встановити біт RD EECON1<0> в одиницю. Дані з'являться в наступному командному циклі в регістрі EEDATA і можуть бути прочитані. Дані в регістрі EEDATA замикаються. При записі в пам'ять EEPROM необхідно спочатку записати необхідні адреси в EEADR регістр і дані в EEDATA регістр. Потім виконати спеціальну послідовність команд, що робить безпосередній запис: movlv 55h movwf EECON2 movlv AAh movwf EECON2 bsf EECON1,WR ;установити WR біт, почати запис Під час виконання цієї ділянки програми всі переривання повинні бути заборонені для точного виконання тимчасової діаграми. Час запису - приблизно 10мс. Фактичний час запису змінюватиметься залежно від напруги, температури та індивідуальних властивостей кристала. В кінці запису біт WR автоматично обнулюється, а прапор завершення запису EEIF, він же запит на переривання встановлюється. Для запобігання випадковим записам у пам'ять даних передбачено спеціальний біт WREN у регістрі EECON1. Рекомендується тримати біт WREN вимкненим, крім випадків, коли потрібно оновити пам'ять даних. Більше того, кодові сегменти, які встановлюють біт WREN і ті, які виконують запис, повинні зберігатися на різних адресах, щоб уникнути випадкового виконання їх обох при збої програми. Управління EEPROM Керівні регістри для EEPROM Реєстри EECON1 та EECON2 Реєстр EECON1 (адреса 88h) - це керуючий регістр шириною п'ять біт. Молодші п'ять біт фізично існують, а старші три біти читаються завжди як `0`. Реєстр EECON1 Адреса 88h Сброс при вкл.- 0000Х000 Керуючі біти RD та WR запускають відповідно читання та запис. Вони можуть бути встановлені лише програмно. Скидаються- апаратно після завершення операцій читання/запису. Заборона програмного скидання біта WR запобігає передчасному закінченню запису. RD - Біт читання. RD =1 : Запуск читання пам'яті даних EEPROM. Читання займає один цикл. Встановлюється програмно. Обнулюється апаратно. WR - Біт запису. WR =1 : Запуск запису пам'яті даних EEPROM. Встановлюється програмно. Обнулюється апаратно. WREN - Біт дозволу запису пам'ять даних EEPROM. WREN = 1: Дозволено запис. WREN = 0: Заборонено запис. Після включення живлення WREN обнулюється. Прапор помилки WRERR встановлюється, коли процес запису переривається сигналом скидання /MCLR або сигналом скидання WDT таймера. Рекомендуємо перевіряти цей прапор WRERR і за необхідності проводити перезапис даних, дані та адреса яких зберігаються в регістрах EEDATA та EEADR. WRERR - Прапор помилки запису. WRERR = 1: Прапор встановлюється, коли операція запису передчасно переривається сигналом скидання /MCLR (під час звичайного режиму або SLEEP) або сигналом скидання WDT під час звичайного режиму. Прапор EEIF встановлюється, коли вбудований автомат завершує запис у пам'ять даних. Він має бути скинутий програмно. EEIF - Прапор завершення запису. EEIF = 1: Прапор встановлюється після завершення запису. Відповідний біт дозволу переривання - EEIE у регістрі INTCON. Організація переривань Переривання PIC16C84 можуть бути від чотирьох джерел: - Зовнішнє переривання з ніжки RB0/INT, - переривання від переповнення лічильника/таймера RTCC, - переривання після закінчення запису даних у EEPROM - переривання від зміни сигналів на ніжках порту RB<7:4>. Всі переривання мають один і той же вектор/адресу - 0004h. Проте, у керуючому регістрі переривань INTCON записується:- від якого саме джерела надійшов запит переривання. Записується відповідним бітом-прапором. Таке переривання може бути замасковане індивідуально або загальним бітом. Єдиним винятком є переривання до кінця запису в EEPROM. Цей прапор знаходиться в іншому регістрі EECON1. Біт загального дозволу/заборони переривання GIE (INTCON <7>) дозволяє (якщо=1) всі індивідуально незамасковані переривання або забороняє (якщо=0) їх. Кожне переривання окремо може бути додатково дозволено/заборонено установкою/скиданням відповідного біта в регістрі INTCON. Біт GIE обнулюється при скиданні. Коли починає оброблятися переривання, біт GIE обнулюється, щоб заборонити подальші переривання, адреса повернення посилається в стек, а програмний лічильник завантажується адресу 0004h. Час реакції на переривання зовнішніх подій, таких як переривання від ніжки INT або порту B, становить приблизно п'ять циклів. Це на один цикл менше, ніж для внутрішніх подій, таких як переривання переповнення від таймера RTCC. Час реакції завжди однаковий. У підпрограмі обробки переривання джерело переривання може бути визначено за відповідним бітом у регістрі прапорів. Цей прапор-біт повинен бути програмно скинутий всередині підпрограми. Прапори запитів переривань не залежать від відповідних бітів, що маскують, і біта загального маскування GIE. Команда повернення з переривання RETFIE завершує перерву підпрограму і встановлює біт GIE, щоб знову дозволити переривання. Реєстр запитів та масок Керуючий регістр переривань та його біти Адреса: 0Bh Значення при reset = 0000? RBIF -Прапор переривання від зміни на порту RB. Прапор встановлюється, коли сигнал на вході RB<7:4> змінюється. Прапор скидається програмним способом. INTF – Прапор переривання INT. Прапор встановлюється, коли на ніжці INT з'являється сигнал від зовнішнього джерела переривання. Скидається програмним способом. RTIF – Прапор переривання від переповнення RTCC. Прапор встановлюється, коли RTCC переповнюється. Прапор скидається програмним способом. RBIE - Біт дозволу/заборони RBIF переривання. RBIE = 0: забороняє RBIE переривання RBIE = 1 : дозволяє RBIE переривання INTE - Біт дозволу/заборони INT переривання. INTE = 0: забороняє INT переривання INTE = 1: дозволяє INT переривання RTIE Біт дозволу/заборони RTIF переривання. RTIE = 0: забороняє RTIE переривання RTIE = 1 : дозволяє RTIE переривання EEIE - Біт дозволу/заборони переривання запису EEPROM. EEIE = 0: забороняє EEIF переривання EEIE = 1: дозволяє EEIF переривання GIE Біт дозволу/заборони всіх переривань. GIE = 0: забороняє переривання GIE = 1 : дозволяє переривання Він скидається автоматично за таких обставин: - по включенню живлення. - за зовнішнім сигналом /MCLR за нормальної роботи. - за зовнішнім сигналом /MCLR у режимі SLEEP. - після закінчення затримки таймера WDT за нормальної роботи. - після закінчення затримки таймера WDT у режимі SLEEP. Зовнішнє переривання Зовнішнє переривання на ніжці RB0/INT здійснюється по фронту: або по наростаючому (якщо біт6 INTEDG = 1 в регістрі OPTION), або по фронту, що спадає (якщо INTEDG = 0). Коли фронт виявляється на ніжці INT, біт запиту INTF встановлюється (INTCON <1>). Це переривання може бути замасковано установкою біта керуючого INTE в нуль (INTCON <4>). Біт запиту INTF повинен бути очищений програмою, що перериває, перед тим, як знову дозволити це переривання. Переривання INT може вивести процесор з режиму SLEEP, якщо перед входом до цього режиму біт INTE був встановлений в одиницю. Стан біта GIE також визначає: чи переходитиме процесор на підпрограму переривання після прокидання з режиму SLEEP. Переривання від RTCC Переповнення лічильника RTCC (FFh->00h) встановить біт запиту RTIF (INTCON<2>). Це переривання може бути дозволено/заборонено установкою/скиданням біта RTIE маски (INTCON<5>). Скидання запиту RTIF – справа програми обробки. Переривання від порту RB Будь-яка зміна сигналів чотирьох входах порту RB<7:4> встановить біт RBIF (INTCON<0>). Це переривання може бути дозволено/заборонено установкою/скиданням біта маски RBIE (INTCON<3>). Скидання запиту RBIF – справа програми обробки. Переривання від EEPROM Прапор запиту переривання після закінчення запису в EEPROM, EEIF (EECON1<4>) встановлюється після закінчення автоматичного запису даних EEPROM. Це переривання може бути замасковане скиданням біта EEIE (INTCON<6>). Скидання запиту EEIF – справа програми обробки. Огляд регістрів/портів Кристал має два порти: 5 біт порт RA і 8 біт порт RB з побітовим індивідуальним налаштуванням на введення або на виведення. Схема лінії порту A Порт А - це порт шириною 5 біт, відповідні ніжки кристала RA<4:0>. Лінії RA<3:0> двонаправлені, а лінія RA4 -вихід з відкритим стоком. Адреса регістру порту А – 05h. Регістр TRISA, що відноситься до порту А, розташований на першій сторінці регістрів за адресою 85h. TRISA - це регістр шириною 4 біт. Якщо біт керуючого TRISA регістру має значення одиниця, відповідна лінія буде встановлюватися на введення. Нуль перемикає лінію виведення і водночас виводить її у вміст відповідного регістру клямки. Нижче дана схема портів RA0..RA5
Схема лінії порту B Порт - це двонаправлений порт, шириною у вісім біт (адреса регістра 06h). Відноситься до порту У регістр TRISB, що управляє, розташований на першій сторінці регістрів за адресою 86h. Якщо біт керуючого TRISB регістру має значення одиниця, відповідна лінія буде встановлюватися на введення. Нуль перемикає лінію виведення і водночас виводить її у вміст відповідного регістру клямки. У кожної ніжки порту є невелике активне навантаження (близько 100мкА) на лінію живлення. Вона автоматично вимикається, якщо ця ніжка запрограмована як висновок. Більш того, біт RBPU OPTION<7>, що управляє, може відключити (RBPU=1) всі навантаження. Скидання при включенні живлення також вимикає всі навантаження. Чотири лінії порту (RB<7:4>) мають здатність викликати переривання при зміні значення сигналу на будь-якій з них. Якщо ці лінії налаштовані на введення, вони опитуються і замикаються в циклі читання Q1. Нова величина вхідного сигналу порівнюється зі старою у кожному командному циклі. При розбіжності значення сигналу на ніжці та у клямці, генерується високий рівень. Виходи детекторів "несупадінь" RB4,RB5,RB6,RB7 об'єднуються АБО і генерують переривання RBIF (запам'ятовується в INTCON<0>). Будь-яка лінія, налаштована як висновок, не бере участі у цьому порівнянні. Переривання може вивести кристал із режиму SLEEP. У підпрограмі обробки переривання слід скинути запит переривання одним із наступних способів: 1) Заборонити переривання за допомогою обнулення біта RBIE INTCON<3>. 2) Прочитати порт У. Це завершить стан порівняння. 3) Обнулити біт RBIF INTCON<0>. Переривання по розбіжності та програмно встановлювані внутрішні активні навантаження цих чотирьох лініях можуть забезпечити простий інтерфейс наприклад з клавіатурою, з виходом з режиму SLEEP по натискання клавіш. Ніжка RB0 поєднана із входом зовнішнього переривання INT. Назва Проблеми з портами Проблеми при організації двонаправлених портів -Деякі команди внутрішньо виконуються як читання+запис. Наприклад, команди BCF і BSF зчитують порт повністю, модифікують один біт і виводять результат назад. Тут потрібна обережність. Наприклад, команда BSF для біта 5 регістра f6 (порт В) спочатку вважає всі вісім біт. Потім виконуються дії над бітом 5 і нове значення байта повністю записується у вихідні клямки. Якщо інший біт регістра f6 використовує я як двонаправлене введення/виведення (скажімо біт 0) і в даний момент він визначений як вхідний, вхідний сигнал на цій ніжці буде рахований і записаний назад у вихідну клямку цієї ж ніжки, затираючи її попередній стан. Доки ця ніжка залишається в режимі введення, жодних проблем не виникає. Однак, якщо пізніше лінія 0 переключиться в режим виведення, стан її буде невизначеним. На ніжку, що працює в режимі виведення, не повинні "навалюватися" зовнішні джерела струмів ("монтажне", "монтажне"). Великі струми, що результують, можуть пошкодити кристал. Послідовне звернення до портів введення/виводу Запис у порт виведення відбувається наприкінці командного циклу. Але при читанні дані повинні бути стабільними на початку командного циклу. Будьте уважні в операціях читання, що йдуть одразу за записом у той же порт. Тут слід враховувати інерційність встановлення напруги на висновках. Може знадобитися програмна затримка, щоб напруга на ніжці (залежить від навантаження) встигла стабілізуватися до виконання наступної команди читання. Огляд команд та позначення Кожна команда PIC16C84 - це 14-бітове слово, яке розділене за змістом на такі частини: - 1. код операції -2. поле для одного і більше операндів, які можуть брати участь у цій команді. Система команд PIC16C84 включає байт-орієнтовані команди, біт-орієнтовані, операції з константами і команди передачі управління. Для байт-орієнтованих команд "f" позначає регістр, з яким виробляється дія; "d" – біт визначає, куди покласти результат. Якщо "d" =0, то результат буде поміщений у W регістр, при "d"=1 результат буде поміщений у "f", згаданому в команді. Для біт-орієнтованих команд "b" позначає номер біта, що у команді, а "f" -це регістр , у якому цей біт розташований. Для команд передачі управління та опреаций з константами, "k" позначає восьми або одинадцятибітну константу. Усі команди виконуються протягом одного циклу. У двох випадках виконання команди займає два командні цикли: -1. перевірка умови та перехід, -2.зміна програмного лічильника як результат виконання команди. Один командний цикл складається із чотирьох періодів генератора. Таким чином, для генератора із частотою 4 МГц час виконання командного циклу буде 1 мкс. Байт орієнтовані команди Біт орієнтовані команди Переходи Зауваження та пояснення Примітка 1: Команди TRIS та OPTION поміщені до списку команд для сумісності із сімейством PIC16C5X. Їхнє використання не рекомендується. У PIC16C84 регістри TRIS та OPTION доступні для читання та запису як звичайні регістри з номером. Попереджаємо, що ці команди можуть не підтримуватись у подальших розробках PIC16CXX. Примітка 2: Коли модифікується регістр введення/виводу, наприклад MOVF 6,1, значення, яке використовується для модифікації, зчитується безпосередньо з ніжок кристала. Якщо значення клямки виведення для ніжки, запрограмованої на висновок дорівнює "1", але зовнішній сигнал на цьому виводі "0" через "навал" зовні, то зчитуватиметься "0". Примітка 3: Якщо операндом цієї команди є регістр f1 (і якщо припустимо, d=1), то дільник, якщо він підключений до RTCC, буде обнулений. Умови скидання У PIC16C84 існують відмінності між варіантами скидів: 1) Скидання включення живлення. 2) Скидання зовнішнього сигналу /MCLR за нормальної роботи. 3) Скидання зовнішнього сигналу /MCLR у режимі SLEEP. 4) Скидання після закінчення затримки таймера WDT при нормальній роботі. 5) Скидання після закінчення затримки таймера WDT у режимі SLEEP. Деякі зі спец.регістрів при скиданні не ініціалізуються. Вони мають випадковий стан при включенні живлення та не змінюються за інших видів скидів. Інша частина спец.регістрів ініціалізуються в "стан скидання" при всіх видах скидання, крім скидання після закінчення затримки таймера WDT в режимі SLEEP. Просто це скидання розглядається як тимчасова затримка у нормальній роботі. Є ще кілька винятків. Програмний лічильник завжди скидається в нуль (0000h). Біти статусу TO та PD встановлюються чи скидаються залежно від варіанта скидання. Ці біти використовуються програмою визначення природи скидання. Їхні значення після скидання наведені в таблиці. Стан регістрів після скидання представлено таблиці. Там прийнято позначення: і-не змінюється, x -невідомо, - не виконується, читається як `0`. ? - буде встановлений після закінчення запису в EEPROM Алгоритм скидання при включенні живлення Кристал PIC16C84 має вбудований детектор живлення. Таймер запуску починає рахунок витримки часу після того, як напруга живлення перетнула рівень близько 1,2...1,8 Вольт. Після закінчення витримки близько 72мс вважається, що напруга досягла номіналу і запускається інший тайм витримка на стабілізацію кварцового генератора. Програмований біт конфігурації дозволяє дозволяти або забороняти витримку вбудованого таймера запуску. Витримка запуску змінюється від екземплярів кристала, від живлення та температури. характеристики постійного струму. Таймер на стабілізацію генератора відраховує 1024 імпульсу від генератора, що почав роботу. Вважається, що кварцовий генератор цей час вийшов режим. При використанні RC генераторів витримка на стабілізацію не проводиться. Потім вмикається таймер очікування зовнішнього скидання /MCLR. Це необхідно для тих випадків, коли потрібно синхронно запустити кілька PIC контролерів через загальний для всіх сигнал /MCLR. Якщо такого сигналу не надходить, то через час Tost виробляється внутрішній сигнал скидання та контролер починає хід за програмою. Час Tost програмується бітами конфігурації EEPROM. Тут існує проблема, коли Vdd наростає надто повільно і всі витримки на запуск, а живлення ще не досягло свого мінімального значення Vdd(min) працездатності. У таких випадках рекомендуємо використовувати зовнішні RC ланцюжки для скидання /MCLR. Нижче наведено такий ланцюжок Тут можна застосувати діод швидкого розряду конденсатора при вимкненні живлення. Рекомендується резистор R < 40 кОМ, тоді ньому падати трохи більше 0,2В. Резистор 100 Ом Watch Dog таймер Watchdog таймер є повністю незалежним вбудованим RC генератором, який не вимагає ніяких зовнішніх ланцюгів. Він працюватиме, навіть якщо основний генератор зупинено, як це буває при виконанні команди SLEEP. Таймер виробляє сигнал скидання. Вироблення таких скидів може бути заборонено шляхом запису нуля спеціальний біт конфігурації WDTE. Цю операцію виробляють на етапі пропалювання мікросхем. Витримка часу WDT Номінальна витримка WDT становить 18 мс (без використання дільника). Вона залежить від температури, напруги живлення, від особливостей типів мікросхем. Якщо потрібні великі затримки, то WDT може бути підключений вбудований дільник з коефіцієнтом розподілу до 1:128; який програмується шляхом запису в регістр OPTION. Тут можуть бути реалізовані витримки до 2.5 секунд. Команди "CLRWDT" та "SLEEP" обнулюють WDT та дільник, якщо він підключений до WDT. Це запускає витримку часу спочатку і запобігає деякий час вироблення сигналу скидання. Якщо сигнал скидання від WDT все ж таки стався, то одночасно обнулюється біт "TO" в регістрі статусу (f3). У програмах з високим рівнем перешкод вміст реєстру OPTION піддається збою. Тому регістр OPTION повинен оновлюватись через рівні проміжки часу. Слід врахувати, що найгіршою комбінацією є: Vdd = min, температура = max і max коефіцієнт поділу дільника, - це призводить до найбільшої витримки часу, вона може досягати кількох секунд. Типи генераторів Кристали PIC16C84 можуть працювати з чотирма типами вбудованих генераторів. Користувач може запрограмувати два конфігураційні біти (FOSC1 і FOSC0) для вибору одного з чотирьох режимів: RC, LP, XT, HS. Кристали PIC16... можуть також тактуватися і від зовнішніх джерел. Генератор, побудований на кварцових або керамічних резонаторах, потребує періоду стабілізації після живлення. Для цього вбудований таймер запуску генератора тримає пристрій в стані скидання приблизно 18 мс після того, як сигнал на /MCLR ніжці кристала досягне рівня логічної одиниці. Таким чином, зовнішній ланцюжок RC, пов'язана з нкой /MCLR у багатьох випадках не потрібно. Вбудовані генератори працездатні при певних номіналах напруги живлення: УВАГА! При частотах нижче 500 кГц, внутрішній генератор може енерувати збійний імпульс на гармоніках, коли перемикається біт порту A. Цього не відбувається при використанні зовнішнього генератора або при вбудованому RC генераторі. Генератор на кварцах PIC16C84-XT, -HS або -LP вимагають підключення кварцового або керамічного резонатора до висновків OSC1 та OSC2. Маркування наступне: XT – стандартний кварцовий генератор, HS – високочастотний кварцовий генератор, LP – низькочастотний генератор для економічних додатків. Резистор Rs може бути потрібним для генератора "HS", особливо при частотах нижче 20 МГц для гасіння гармонік. Він може знадобитися в режимі XT з резонатором типу AT strip-cut. Вибір конденсаторів для керамічного резонатора. Вища ємність збільшуватиме стабільність генератора, але також збільшуватиме час запуску. Значення наведено для орієнтування. У режимах HS і XT, щоб уникнути гармонік, може знадобитися послідовний резистор Rs. RC генератор. Коли не пред'являються вимоги до швидкодії та точності за часом, ОТР кристал, наприклад PIC16C84-RC, дозволяє заощадити гроші та реалізувати простий RC генератор. Частота є функція напруги живлення, значень резистора Rext, конденсатора Cext і температури. Крім того, частота генератора незначно змінюватиметься від партії до партії. На частоту генерації впливає власна ємність корпусу кристала, її вплив помітно малих значень Cext. Потрібно взяти до уваги також дрейф R та C елементів. Для значень Rext нижче 2.2 кОМ генератор може працювати нестабільно чи заводитися. При дуже великих значеннях Rext (напр. 1 МОм) генератор стає чутливим до перешкод, вологості та монтажних витоків струму. Рекомендована величина Rext знаходиться між 5 КОМ і 100 КОМ. Хоча генератор працездатний при відсутності зовнішнього конденсатора (Cext = 0), ми рекомендуємо використовувати ємність більше 20 пФ для збільшення стабільності роботи. З малою Cext, або взагалі без неї, частота генератора залежить від монтажних ємностей. Розкид буде тим більше, чим більша величина R (т до чого менша величина C (оскільки в цьому випадку сильніше проявляється вплив монтажних ємностей). Сигнал з частотою генератора, поділеної на 4, присутній на ніжці OSC2/CLKOUT, і може бути використаний для тестування або синхронізації інших схем. Зовнішнє збудження Реєстр OPTION Регістр OPTION (адреса 81h) доступний для читання та запису і містить різні керуючі біти, які визначають конфігурацію визначника, куди він підключений: RTCC або WDT, знак фронту зовнішнього переривання INT і зовнішнього сигналу для RTCC, підключення активного навантаження на порту RB. Реєстр OPTION Адреса 81h Значення при включенні живлення = FFH PSA - Біт, що підключає дільник до: 0 - RTCC 1 - WDT RTE - Фронт зовнішнього сигналу RTCC: 0 - інкремент по позитивному фронту на ніжці RTCC 1 - інкремент негативного фронту на ніжці RTCC RTS - Джерело сигналу для RTCC 0 - сигнал від внутрішнього генератора 1 - Зовнішній сигнал на ніжці RTCC INTEDG - Фронт сигналу INT: 0 - переривання негативним фронтом на ніжці INT 1 - переривання по позитивному фронту на ніжці INT /RBPU – Інверсний біт підключення активного навантаження до порту B. /RBPU = 0: Активні навантаження підключатимуться за алгоритмом роботи порту RB /RBPU = 1: Активні навантаження порту В завжди відключені Підключення дільника частоти Один і той же восьмибітний лічильник може бути включений або перед RTCC або після таймера Watchdog. Зазначимо, що дільник працює лише з одним із цих пристроїв. Повторюємо, якщо дільник працює з RTCC, це означає, що в даний момент він не працює з таймером Watchdog і навпаки. Схему включення лічильника (див. розділ RTCC:RTCC}. Біти PSA і PS0-PS2 у регістрі OPTION визначають, з яким пристроєм працює дільник і налаштування коефіцієнта поділу. Коли дільник підключений до RTCC, всі команди, які записують у RTCC (напр. , CLRF 16 MOVWF 1, BSF 1,x... і т.д.) будуть обнулювати дільник.Коли він підключений до Watchdog таймеру, то розподільник разом з Watchdog таймером буде обнулювати команда CLRWDT. керований Нижче представлений фрагмент програми перемикання з RTCC на WDT 1. MOVLW B`xx0x0xxx` ;вибрати внутрішню синхронізацію та нове ;значення для дільника. Якщо нове значення; дільника дорівнює 2. OPTION; `000` або `001`, то треба тимчасово вибрати; інше значення дільника. 3. CLRF 1; обнулити RTCC і дільник. 4. MOVLW B`xxxx1xxx` ;вибрати WDT, не змінюючи значення дільника. 5. ВАРІАНТ 6. CLRWDT ;обнулити WDT і дільник. 7. MOVLW B`xxxx1xxx` ;вибрати нове значення для дільника. 8. ВАРІАНТ Пункти 1 і 2 потрібні лише тоді, коли до RTCC було підключено зовнішнє джерело імпульсів. Пункти 7 і 8 потрібні тоді, коли коефіцієнт поділу треба встановити `000` або `001`. Перемикання дільника з WDT на RTCC 1. CLRWDT ;обнулити WDT і дільник. 2. MOVLW B`xxxx0xxx` ;вибрати RTCC, нове значення для дільника ;джерело сигналу. 3. OPTION Використовуйте ці програми, навіть якщо WDT заборонено. Конфігураційне слово Кристал PIC16C84 має п'ять біт конфігурації, які зберігаються в EEPROM і встановлюються на етапі програмування кристала. Ці біти можуть бути запрограмовані (читається як `0`) або залишені незапрограмованими (читається `1`) для вибору відповідного варіанту конфігурації пристрою. Ці біти розташовані в EEPROM пам'яті на адресу 2007h. Користувачеві слід пам'ятати, що ця адреса знаходиться нижче області кодів і недоступна програмі. Комірка EEPROM конфігурації. CP - Біт захисту коду. CP = 1: Код захисту вимкнено CP = 0: Код захисту увімкнено Інші біти у слові не використовуються і читаються як одиниці. Індивідуальна мітка Кристал PIC16C84 має чотири слова, розташовані за адресою (2000h-2003h). Вони призначені для зберігання ідентифікаційного коду (ID) користувача, контрольної суми або іншої інформації. Як і слово конфігурації, вони можуть бути прочитані або записані лише за допомогою програматора. Доступу за програмою до них немає. Якщо кристал захищений, користувачу рекомендується використовувати для ідентифікації лише молодші сім біт кожного ID слова, а старший біт записувати `0`. Тоді ID слова можна буде прочитати навіть у захищеному варіанті. Захист програм від зчитування Програмний код, записаний у кристал, може бути захищений від зчитування за допомогою установки біта захисту (CP) у слові конфігурації в нуль. Вміст програми не може бути прочитаний так, що з ним можна було б працювати. Крім того, при встановленому біті захисту стає неможливим змінювати програму. Теж відноситься і до вмісту пам'яті даних EEPROM. Якщо встановлений захист, то біт CP можна стерти лише разом із вмістом кристала. Спочатку буде стерта EEPROM програмна пам'ять та пам'ять даних і в останню чергу біт захисту коду CP. Перевірка кристала із встановленим захистом. При зчитуванні захищеного кристала читання будь-якої адреси пам'яті дасть результат, схожий на 0000000XXXXXXX(двійковий код), де X- це 0 або 1. Щоб перевірити збереження пам'яті в захищеному кристалі, дотримуйтесь правил: 1) запрограмуйте та перевірте роботу справного кристала. 2) встановіть захист коду програми та вважайте вміст програмної пам'яті у файл-еталон. 3) перевіряйте будь-який захищений кристал шляхом порівняння його програмної пам'яті з вмістом цього зразка. Пам'ять даних EEPROM не можна перевірити після встановлення біта захисту. Режим зниженого енергоспоживання Вхід у режим SLEEP здійснюється командою SLEEP. За цією командою, якщо WDT дозволено, він скидається і починає рахунок часу, біт "PD" у регістрі статусу (f3) скидається, біт "TO" встановлюється, а вбудований генератор вимикається. Порти введення/виводу зберігають стан, який він мав до входу в режим SLEEP. Для зниження споживаного струму в цьому режимі ніжки на виведення повинні мати такі значення, щоб не протікав струм між кристалом і зовнішніми ланцюгами. Ніжки на введення повинні бути з'єднані зовнішніми резисторами з високим або низьким рівнем, щоб уникнути струмів перемикання, що викликаються плаваючими високоомними входами. Те саме і про RTCC. Ніжка /MCLR має бути під напругою Vihmc. Вихід із режиму SLEEP здійснюється в результаті наступних подій: 1. Зовнішнє скидання - імпульс низького рівня на ніжці /MCLR. 2. Скидання під час спрацювання WDT (якщо він дозволений) 3. Переривання. (Преривання з ніжки INT, переривання при зміні порту B, переривання при завершенні запису даних EEPROM). При першій події відбувається скидання всього пристрою. Дві інші події передбачають продовження виконання програми. Біт "PD" у регістрі статусу (f3), який встановлюється при включенні, але обнулюється командою "SLEEP", може бути використаний для визначення стану процесора до "прокидання": або процесор був у режимі "SLEEP"(гарячий старт), або було просто вимкнено живлення (холодний старт). Біт "TO" дозволяє визначити, чим був викликаний вихід із режиму SLEEP: або зовнішнім сигналом на ніжці /MCLR, або спрацюванням WDT. Щоб пристрій вийшов з режиму SLEEP через переривання, це переривання має бути дозволено встановленням відповідної маски у регістрі INTCON. При виході з режиму SLEEP буде витіснятися фонова програма, якщо загальна маска забороняє всі переривання (GIE=0). Якщо GIE=1, то виконуватиметься підпрограма обробки переривань. Максимальні значення електричних параметрів Вихід параметрів за ці межі може призвести до пошкодження мікросхеми. Робота кристала на гранично допустимих значеннях протягом багато часу вплине з його надійність. Примітки: 1. Повна потужність, що розсіюється, не повинна перевищувати 800 мВт для кожного корпусу. Розсіювана потужність обчислюється за такою формулою: Pdis = Vdd (Idd - Сума (Ioh)) + Сума ((Vdd - Voh) Ioh) + Сума (Vol Iol) 2. Зниження напруги на ніжці /MCLR нижче Vss(земля) викликає великі струми, більше 80 мА, і може призвести до пошкодження цієї лінії. Тому рекомендуємо подавати сигнали на ніжку /MCLR через обмежуючий резистор 50-100 Ом. Параметри постійного струму Характеристики постійного струму PIC16C84-04, PIC16C84-10. (для комерційного, індустріального, автомобільного виконання). Фірма MEMEC BALTIC Ltd. є членом Memec International Components Group та Raab Karcher Electronics Group. Ця група дистриб'юторів електронних компонентів займає провідні позиції у сфері поширення новітніх електронних технологій та напівпровідникових компонентів. MEMEC BALTIC Ltd. представляє групу фірм MEMEC і є офіційним дистриб'ютором фірм Microchip і Raychem в Росії, Україні, Білорусії та країнах Балтії. MEMEC BALTIC Ltd. Публікація: Н. Большаков, rf.atnn.ru Дивіться інші статті розділу Мікроконтролери. Читайте та пишіть корисні коментарі до цієї статті. Останні новини науки та техніки, новинки електроніки: Машина для проріджування квітів у садах
02.05.2024 Удосконалений мікроскоп інфрачервоного діапазону
02.05.2024 Пастка для комах
01.05.2024
Інші цікаві новини: ▪ Розпочато постачання зразків магніторезистивної пам'яті ST-MRAM ▪ Цифрові датчики магнітного поля від Texas Instruments ▪ Міцне скло на основі алюмінію ▪ Новий сплав не гірший за титан, але дешевше Стрічка новин науки та техніки, новинок електроніки
Цікаві матеріали Безкоштовної технічної бібліотеки: ▪ розділ сайту Мистецтво відео. Добірка статей ▪ стаття Антуан де Рівароль. Знамениті афоризми ▪ стаття Як видмухують скло? Детальна відповідь ▪ стаття Табельник. Посадова інструкція ▪ стаття Зварювальні - на вибір. Енциклопедія радіоелектроніки та електротехніки
Залишіть свій коментар до цієї статті: All languages of this page Головна сторінка | Бібліотека | Статті | Карта сайту | Відгуки про сайт www.diagram.com.ua |