- Инструменты среды
Инструменты среды
Встроенная карта ASCII (см. рис. 10) позволяет посмотреть код любого символа ASCII в десятичном, шестнадцатеричном и двоичном формате. Открыть карту символов ASCII можно из выпадающего меню Tools —> ASCII chart, a посмотреть код символа очень удобно с помощью мыши, наводя её курсор на интересующий код в окне карты символов.
Рис. 10. Встроенная карта ASCII
С помощью инструмента экспорта кода, вызываемого из меню Tools -> Export Code To HTML, можно очень просто получить код программы в формате HTML для публикации его в Интернете.
Например, код программы, полученный из примера программы, описанного выше, будет иметь следующий вид на странице Интернет:
void main() {
ADCON1 = 0x80; // Configure analog inputs and Vref
TRISA = OxFF; // PORTA is input
TRISB = 0x3F; // Pins RB7 , RB6 are outputs
TRISD = 0; // PORTD is output
do {
temp_res = Adc_Read(2); // Get results of AD conversion
PORTD = temp_res; // Send lower 8 bits to PORTD
PORTB = temp_res >> 2; // Send 2 most significant bits to RB7, RB6
} while(1);
В среду mikroC включен терминал связи USART для работы с интерфейсом RS-232 (см. рис. 11). Его можно запустить из выпадающего меню Tools —> Terminal, или щелчком по иконке терминала, или с помощью клавиш Ctrl+T. Он позволяет отлаживать программы, в которых используется интерфейс USART для связи с внешними устройствами, на разных скоростях и с различными форматами данных.
Рис. 11. Терминал связи USART
Декодер семисегментных символов (см. рис. 12) является удобным инструментом получения кодов индикации по нужной комбинации активных сегментов. Активация и деактивация сегмента осуществляется простым щелчком мыши на изображении сегмента. Декодер можно запустить из выпадающего меню Tools -> Seven Segment Decoder.
Рис. 12. Декодер семисегментных символов
Рис. 13. Встроенный генератор кода для ЖК-индикаторов
Встроенный генератор кода для ЖК-индикаторов (см. рис. 13) позволяет очень легко создать любой символ для матрицы ЖКИ. Данный генератор кода запускается из выпадающего меню Tools -> LCD Custom Character. Он же позволяет сгенерировать программный код для отображения этого символа на языке программирования mikroPascal, mikroBasic или mikroC (см. рис. 14) простым нажатием на программную кнопку GENERATE.
Рис. 14. Окно с примером кода для ЖК-индикаторов
Ниже приведён программный код на языке программирования Си, полученный данным генератором кода.
void CustomChar(char pos_row, char pos_char) {
char i;
LCD_Cmd(64) ;
for (i = 0; i<=7; i++) LCD_Chr_Cp(character[i]);
LCD_Cmd(LCD_RETURN_HOME);
LCD_Chr(pos_row, pos_char, 0);
}
Ещё более мощным встроенным инструментом среды является генератор кода для графических ЖК-дисплеев (см. рис. 15).
Он запускается из выпадающего меню Tools -> GLCD Bitmap Editor и позволяет создавать точечные рисунки для дисплеев типа KS0108, Т6963 и Nokia3110, а также генерировать программный код для этих дисплеев на трёх языках программирования.
Рис. 15. Генератор кода для графических ЖК-дисплеев
Для отладки программ, обеспечивающих работу с картами памяти типа ММС, существует встроенный инструмент ММС Terminal (см. рис. 16). Он запускается из выпадающего меню Tools —> ММС Card Terminal и позволяет осуществлять чтение и запись данных карты памяти по секторам через последовательный СОМ-порт компьютера. Встроенный редактор перепрограммируемой памяти микроконтроллера (см. рис. 17) запускается из выпадающего меню Tools -> EEPROM Editor и позволяет модифицировать данные этой памяти.
Рис. 16. Встроенный инструмент ММС Terminal
Рис. 17. Встроенный редактор перепрограммируемой памяти МК
Рис. 18. Загрузчик программ mikroBootloader
Для отладки программ можно использовать специальный загрузчик программ mikroBootloader (см. рис. 18). Поскольку' многие семейства МК имеют возможность записывать в свою собственную программную память данные, это позволяет хранить в них небольшую программу-загрузчик, которая будет принимать и записывать в программную память коды программы. В наиболее простом варианте загрузчик передаёт управление программе пользователя всегда, кроме случая, когда есть запрос на загрузку новой программы. В такой ситуации загрузчик получает данные и записывает их в программную память. Существует много усовершенствований, которые могут быть добавлены, чтобы сделать процесс загрузки более надёжным и удобным.
Естественно, что загрузчик можно использовать только с микроконтроллерами, поддерживающими запись во флэш-память программ. Резидентная часть загрузчика даёт компьютеру 5 с на то, чтобы установить с ней связь. Если этого не происходит, она запускает на исполнение имеющуюся программу пользователя. Если связь установлена, резидентная часть загрузчика принимает коды и записывает их в программную память.
Ниже описан процесс использования загрузчика:
• загрузить в микроконтроллер необходимый файл программы, используя обычную технологию программирования файла в HEX-формате. Например, для микроконтроллера PIC16F877A использовать файл pl6f877a.hex;
• запустить загрузчик из выпадающего меню Tools —> mikroBootloader;
• щёлкнуть на Setup Port и затем выбрать номер СОМ-порта, используемого для связи с микроконтроллером. Убедиться, что установлена скорость обмена 9600 кБод;
• выбрать из меню Open File и затем выбрать файл с кодами для загрузки;
• поскольку резидентный загрузчик микроконтроллера даёт компьютеру не более 5 с на установку' соединения, следует сбросить микроконтроллер, а затем в течение не более 5 с жать на кнопку Connect;
• теперь последняя строчка в окне истории будет Connected;
• для запуска загрузки щёлкнуть по программной кнопке Start Bootloader;
• программа будет загружаться в память микроконтроллера. Загрузчик будет сообщать об ошибках, возникающих в процессе загрузки;
• сбросить микроконтроллер и начать исполнение загруженной программы.
Наиболее общие функции загрузчика перечислены ниже:
• адрес аппаратного сброса находится в распоряжении резидентной программы загрузки;
• другая часть кода резидентного загрузчика занимает небольшую произвольную область памяти;
• проверяется необходимость начала загрузки нового кода;
• если нет необходимости загрузки нового кода, то запускается на исполнение имеющийся в памяти код пользователя;
• при загрузке новые данные принимаются по каналу связи:
• принятые данные записываются в программную память.
Взаимодействие кода пользователя и резидентного загрузчика имеет некоторые особенности. Резидентная часть практически всегда использует адрес рестарта и некоторую дополнительную область памяти. Это - небольшой - фрагмент кода, который не использует прерываний, таким образом, пользователю становится доступен вектор прерываний по адресу 0x0004. Резидент загрузчика должен избегать использования вектора прерывания, поэтому переход к остальной части программы загрузки должен производиться в пределах адресов от 0x0000 до 0x0003.
Резидентный загрузчик должен программироваться в микроконтроллер с использованием обычного программатора, одновременно с битами конфигурации. Резидентный загрузчик не позволяет менять биты конфигурации, поскольку7 они располагаются за пределами программной памяти.
Рис. 19. Встроенный инструмент отладки программ для USB-устройств
Для отладки программ для USB-устройств существует встроенный инструмент (см. рис. 19), запускаемый из выпадающего меню Tools —»HID Terminal.
При создании программ для сетевых устройств с интерфейсом Ethernet очень полезным может оказаться встроенный инструмент UDP Terminal (см. рис. 20). Он запускается из выпадающего меню Tools -> UDP Terminal и позволяет отлаживать программы, поддерживающие сетевой протокол UDP.
Рис. 20. Встроенный инструмент UDP Terminal
Созданную и отлаженную программу можно записать в память программ микроконтроллера непосредственно из среды разработки с помощью специального программатора, разработанного в компании MikroElektronika.
Рис. 21. Окно запуска программирования
Программирование (см. рис. 21) запускается из выпадающего меню Tools -> mE Programmer или с помощью клавиши F11. После программирования МК можно приступать к тестированию программы в реальном устройстве.