Микроконтролни вериги

Микроконтролни вериги

Jump to TINA Main Page & General Information 

TINA подкрепя много (PIC, AVR, Arduino, 8051, HCS, STM, ARM, TI-Tiva, TI-Sitara, Infineon-XMC) микроконтролери; постоянно се добавят нови MCU. Можете да виждате, променяте и отстранявате грешки в програмата, която се изпълнява в процесора и, разбира се, можете да създадете свой собствен код.

Има два начина за осигуряване на програмата за микроконтролери в TINA. Можете да използвате двоичния код и файла за отстраняване на грешки, направен от стандартен компилатор (напр. MPLAB за PIC), или просто да заредите кода за сглобяване, за да стартирате и отстранявате грешки в TINA, използвайки вградения в асемблер дебъгер.

Създаване на прост кръг с помощта на PIC микроконтролер с програмиране на асемблер

Създаване на прост кръг с помощта на PIC микроконтролер с програмиране C език

Основно отстраняване на грешки в микроконтролера чрез TINA

В TINA микроконтролерите могат да се симулират не само самостоятелно, но и заедно с аналогови, цифрови, HDL или други модели.

Стартиране и редактиране на MCU код

Заредете веригата PIC Flasher.TSC от папката "exampleMicrocontrollersPic".

Следното схематично използване на микроконтролера 16F73 PIC ще се появи с микроконтролера 16F73 PIC:

Микроконтролерни схеми, изображение 1

Тази схема просто брои напред един по един. Натисни за да видите как работи.

Дисплеят трябва да напредва един по един.

Щракнете два пъти върху MCU, за да видите ASM кода в него. (вижте повече подробности в ръководството за бърз старт).

TINA има страхотна възможност, чрез която можете да редактирате и променяте изходния код директно в TINA.

Да направим следната промяна в кода:

Променете инструкцията (избрана по-горе) в ред 25 (можете да видите номера на реда в долния десен ъгъл на прозореца на редактора на код):

от addlw 01H

за добавяне на 02H

Запазете променения код в TINA, като натиснете бутона и затворете отворените прозорци на MCU.

Ако натиснете Бутонът сега ще бъде 2!

Обърнете внимание, че промененият код ще бъде автоматично запазен в TINA файла .TSC.

Използване на дебъгера

Нека видим друго приложение с повече интерактивност.

Заредете PIC16F84interrupt_rb0.TSC примера на TINA от папката ExamplesMicrocontrollersPic.

Натиснете бутон. Отначало изглежда, че нищо не се случва.

Въпреки това, ако кликнете върху ключа SW-HL1, дисплеят ще пристъпи напред с 1 всеки път, когато превключите от нисък към висок.

Възможностите за прекъсване на работата на PIC ще ни позволят да откриваме промените в превключвателя.

Сега да видим операцията по-подробно, използвайки интерактивния ASM дебъгер на TINA.

За да активирате дебъгера, изберете Опция в менюто Анализ. След това поставете отметка в квадратчето “Enable MCU Code debugger” (Активиране на дебъгера за MCU код), както е показано по-долу в диалоговия прозорец Опции за анализ.

Натиснете бутона OK и ще се появи MCU дебъгерът:

Нека следваме стъпка по стъпка изпълнението на програмата, като натискаме бутона Проследяване в бутон.

След около 14 кликвания стигаме до етикета PT1: където програмата изглежда е в безкраен цикъл.

PT1: INCF TEMP, F GOTO PT1

Сега кликнете върху ключа SW-HL1 и го променете на High. (Трябва да щракнете, когато курсорът се промени в стрелка нагоре). Върнете се към Debugger и кликнете върху Проследяване на бутона два пъти. Програмата ще разпознае прекъсването и ще скочи в


NT_SERV: label.
INT_SERV: INCF COUNTER, F MOVF COUNTER, 0 MOVWF PORT

увеличаване на COUNTER и копиране в PORT A, а изходът ще бъде 1. След това програмата ще се върне към "безкрайния цикъл" на PT1.

Редактиране на кода в дебъгера

Сега нека направим малка промяна в програмата, за да демонстрираме използването на дебъгера. Дублирайте декларацията INCF COUNTER, F, като използвате Копиране и поставяне по следния начин:

        INT_SERV:
        INCF COUNTER, F 
        INCF COUNTER, F 
        MOVF COUNTER, 0
        MOVWF PORTA    

Сега, когато натиснете бутона програмата ще поиска:

Натиснете Да и натиснете отново. Сега прирастът ще бъде 2 при всяка промяна на ниско-високо ниво на ключа.

Можете също така да проверите веригата в непрекъснат режим на работа на дебъгера, като натиснете бутона бутон.

Въпреки че дебъгерът ще работи бързо, все още можете да видите “безкрайния цикъл” и след това да преминете към частта на сървъра за прекъсване (INT_SERV:), когато промените ключа.

Създаване на точка на прекъсване

С помощта на стъпка по стъпка често е невъзможно да се стигне до определена точка в програмата. Дори ако сте достатъчно търпеливи, за да стъпите на хиляда стъпки, потокът на програмата може да не ви позволи да стъпите там, където искате.

За да спрете на конкретен ред, можете да отбележите целта, като зададете "точка на прекъсване".

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

За да демонстрирате това, кликнете върху декларацията за нарастване в нашия прекъсващ сървър след етикета INT_SERV: и натиснете бутона Превключване на бутона за прекъсване.

Сега натиснете Пусни бутон. Програмата започва да работи в „безкраен цикъл”.

Въпреки че сте задали точка на прекъсване, изпълнението на кода няма да спре, защото никога не стига до точката на прекъсване. Въпреки това, когато промените ключа от нисък към висок, програмата ще спре при маркираното изявление:

   INT_SERV:
             INCF COUNTER, F

Сега можете да продължите или стъпка по стъпка или в режим на изпълнение