top of page

Отладочная система для МК

При разработке программы на микроконтроллерах часто, почти всегда, требуется видеть промежуточные результаты её выполнения. Программатор STK500, которым я пользуюсь,  имеет 8 светодиодов позволяющих наблюдать их в двоичном виде. Для того чтобы их увидеть, необходимо прибегать к специальным ухищрениям в программе, останавливать, циклически выводить результат и т.д.  Если бы STK500 был снабжён символьным экраном с памятью, то многие вопросы с отладкой программы были бы решены.

Технические требования для разработки

  1. Микроконтроллер (МК)  для разработки встраимого программного обеспечения (ПО) вставляется в предназначенный для него сокет STK500.

  2. Количество портов контроллера  для управления символьным экраном (СИ) должно быть минимально.

  3. Библиотека для управления   СИ должна занимать как можно меньше ресурсов МК.

  4. Питание СИ от STK500.   

Принципиальная схема

Представлена на Рис.1

Рис.1

STK500 имеет семь 10-и контактных вилок типа IDC-10 для вывода портов МК для связи с внешними устройствами. Стенд имеет 10-и контактное гнездо  IDC-10 сопрягаемое с любой из семи разъёмов. Адаптация стенда к определённым каналам происходит путём перепрограммирования макросов (указано ниже).

Для уменьшения каналов для символьного экрана (WH1604A), используется быстродействующий   8-и разрядный сдвиговый регистр (<>RG) 561ИР6. Для связи с МК используется 4 канала, SN - синхронизация записи информации обозначено как   DATA. На выходе <>RG появляется параллельный 8-и разрядный код для записи в память СИ. Для управления записью 8-и разрядного кода  <>RG используются ещё 2 порта МК, сигналы RS и E. Следовательно, для управления СИ необходимы 4 сигнала управления и два провода питания, всего 6. Для управления СИ используются два локальных сигнала, управление контрастностью – переменный резистор 10к на 3-ей ножке СИ        

 

Программное обеспечение

Используются стандартные заголовочные файлы  #include <mega16.h>, #include <delay.h>, #include <string.h>, #include <STDLIB.H> и одна разработанная мной библиотека в виде заголовочного файла #include "lcd1604.c".

Программа состоит из нескольких простых подпрограмм:

  1. void Init_LCD(void) – инициализация LCD.

  2. void RG(unsigned char x) – последовательная запись в регистр 561ИР6 байта «х» для подготовки передачи в LCD.

  3. void Data(unsigned char d) – запись символа в  LCD.

  4. void Out_Word(char *str) – запись слова в  LCD.

  5. void WrS(unsigned char stroka,unsigned char znakomesto,char *mes) – запись в LCD целой строки в конкретную позицию.

  6. void awatar(void) – запись в LCD диагностической информации для проверки

  7. void Clear(void) – очистка экрана LCD.

Макросы для привязки стенда к конкретному МК 

#define S0E1 PORTB.3=0;PORTB.2=1;

#define S0E0 PORTB.3=0;PORTB.2=0;

#define S1E1 PORTB.3=1;PORTB.2=1;

#define S1E0 PORTB.3=1;PORTB.2=0;

#define DATA PORTB.1

#define SN DDRD.7=PORTD.7=1;PORTD.7=0;

//  S=RS(на принцип.схеме),  E=E(на принцип.схеме), S0,E0-сигналы в 0, S1, E1-сигналы в 1

Отладка конкретного МК связана с корректировкой указанных макросов с последующей компиляцией. Если по окончании отладки ПО будущему встраиваемому модулю не нужна визуализация, модуль #include "lcd1604.c" удаляется с последующей компиляцией.

 

Печатная плата

Представлена на Рис.2

Рис.2

Внешний вид отладочного стенда представлен на Рис.3

Рис.3

bottom of page