Главная » Bascom-8051, Basic, Железо » Отладка программ Bascom

4

Способ  отладки  программ  Bascom,  в  принципе,  мало  отличается  от  методов   отладки   программ, написанных  другим  способом.  Чтобы  отладка  программы  быля  успешной  и  эффективной,  нужно  на  этапе проектирования  устройства  с  микроконтроллером  заложить  в  его  схему  некоторую  избыточность,  которая позволит потом осуществить этот процесс. В число мер, обеспечивающих процесс отладки, входят:

а) возможность электрического подключения эмулятора;

б)  программная  совместимость  применяемой  модели  процессора  с  имеющимеся   симулятором  или эмулятором;

в) соместимость файлов данных, выдаваемых компилятором, и понимаемых средствами программной или аппаратной отладки;

г)  наличие  в  схеме  проектируемого  устройства  элементов  для  внутрисхемного   программирования микроконтроллеров с корпусах, которые могут только впаиваться (SOIC, TQFP и т.п.).

Можно рекомендовать определеный порядок отладки программ, обусловленный особенностями  Bascom.

Отладка может и должна начинаться после написания первых строк программы. Bascom дает такую возможность, генерируя работоспособный код, практически, для любых логически незавершенных фрагментов. Рекомендуемый порядок написания и отладки программы выглядит следующим образом:

а)  вначале  пишутся  и  отлаживаются  отдельные  самые  важные,  для  разрабатываемой   программы, фрагменты функциональной обработки данных. Это относится к вычислительным  программам или программам обработки  данных,  использующих  значительные  ресурсы.  Для  отладки  этих  программ  лучше  использовать построчный отладчик Bascom. При отладке в текст  можно и нужно встраивать временные операторы задания начальных условий и вывода промежуточных результатов, пробовать применять различные варианты реализации алгоритма работы. На этом этапе лучше всего применять дисассемблирование полученного кода для определения оптимальности работы отдельных операторов или функций, и объема, используемых  ими регистров. Последнее особенно  важно  при  программировании,  например,  прерываний.   После  достижения  желаемых  результатов анализируется   объем   использованных   ресурсов   памяти,   время   исполнения   (отладчик   показывает   его)   и принимается решение об использовании отлаженного фрагмента в основной программе;

б) построить скелет программы, содержащий конфигурирование всех внутренних и  внешних устройств процессора,  системы  прерывания,  систем  ввода-вывода  и  отображения  данных.  Функциональное  наполнение программы  на  этом  этапе  должно  быть  минимальным.   Используя  аппаратный  отладчик  или  эмулятор  (в

программном симуляторе это вряд ли удастся), оживите скелет программы. Должны заработать  все таймеры и

прерывания,  которые  в  дальнейшем  планируется  использовать.  Подключение  аппаратных  ресурсов,  по  мере отладки  программы,  также  может  быть  поэтапным.  Для  облегчения   отладки  на  данном  этапе,  временно добавляйте в программу операторы задания начальных  условий и выдачи каких-либо сигналов (синхронизации или  “маркеров”),  сопровождающих   работу  аппаратных  устройств.  При  необходимости  в  программу  также временно  добавляются  операторы,  обеспечивающие  работу  отладочного  процессора  (если  он  отличается  от рабочего).  Только убедившись, что система работает нормально и все подключенные к процессору  устройства функционируют так, как требуется, приступайте к следующему этапу;

в) постепенно начинайте заполнять скелет программы функциональными модулями,  отлаженными на первом этапе, и другими, не столь принципиальными. Проверка работы программы должна проводится каждый раз при введении в действие новой функции, чтобы ошибки не накапливались и можно было точнее определить

момент  появления  ошибки.  Первыми  вводятся  и  отлаживаются  программные  модули,  взаимодействующие  с

наибольшим количеством других программных модулей (или наиболее используемые),  например,  индикации, клавиатуры,  последовательного  интерфейса,  интерфейсов  АЦП  и  ЦАП.  На  данном  этапе  очень  важно  так, организовать  работу  и  строить  структуру  программы,   чтобы  к  отлаженным  частям  программы  уже  не возвращаться (это тоже элемент  структурного  программирования). Данный этап разработки программы можно считать   законченным,  когда  все  устройства  функционируют  правильно  и  обеспечивается  работа   конвейра передачи данных;

г) следующий этап отладки – добавление в программу операций глубокой обработки данных, например, цифровой калибровки, сохранение и восстановление данных в EEPROM. Чаще  всего, именно на данном этапе обнаруживается,  что  внутренние  ресурсы  процессора   исчерпаны  и  необходимо  принимать  меры  по  более рациональному их использованию;

д)   последними   отлаживаются   (добавляются   к   отлаживаемой   программе)   программные   модули, обеспечивающие   сервисные   функции   (дополнительная   обработка,    дополнительный   интерфейс,   утилиты тестирования и настройки аналоговой части и т.п.).

Полностью отлаженная программа программируется в память процессора и проверяется  уже реальном

устройстве. Этот этап отладки позволяет выявить ошибки, обусловленнные неполным  представлением о работе устройства в целом, имеющимся в начале работы. Особое внимание  при  проверке следует уделить поведения программы при неправильных воздействиях и возможных неисправностях:

а) на клавиатуру – при нажатии неправильных комбинаций кнопок, одновременном  нажатии кнопок,

длительном удержании нажатой кнопки, ввод нереальных значений и режимов;

б) на последовательный интерфейс (или другой) – при подаче неправильных или  искаженных команд,

загрузке неправильных данных, подаче слишком длинных сообщений, подаче команд с малым интервалом;

в)  на  аналоговую  часть  устройства,  управляемого  процессором,  –  при  подаче  сигналов  перегрузки,

возникновении неисправности, разрыве обратной связи;

г) при порче данных в энергонезависимой памяти;

д) при нарушении протокола связи с другим процессором, при полном пропадании связи;

е) при возникновении аварийных ситуаций (перегрев, переполнение, отключение питания).

В  результате  практического  тестирования  определяются  меры  по  улучшению   работы   программы (переназначение функций кнопок, коррекция текста сообщений, изменение  формата выводимых данных, учет реальных временных соотношений, приспособление к форме  имеющихся сигналов, учет динамических свойств регулируемых объектов). Все выявленные ошибки и упущения (уточнения) обязательно протоколируются (просто записываются в виде списка с указанием условий возникновения). Это необходимо ввиду обычного временного разрыва  между  операциями  проверки  (обнаружения  ошибки)  и  коррекцией  программы.  После  исправления программы тестируется снова, и так до тех пор, пока не будут достигнуты необходимые качества и надежность работы.

При отладке программы все временные вставки обязательно выделяйте в тексте  программы, чтобы не забыть убрать их в окончательной версии. После завершения отладки  необходимо еще раз просмотреть текст программы,  убрать  все  лишнее  (метки,  отладочные   вставки,  неудачные  варианты  операций)  и  дописать недостающие  комментарии,  Законченная   программа  сопровождается  необходимыми  атрибутами  (номером версии) и архивируется (в том числе на резервном носителе).

Теперь рассмотрим основные приемы, которые рекомендуется применять при отладки программ Bascom:

а) применение циклической конструкции для проверки операции преобразования при  множественном значении исходных данных. Данная конструкция удобна при отладке функциональных модулей.

DO

INPUT “Input value A” , _A INPUT “Input value B” , _B

Это место отлаживаемой или проверяемой программы,

использующей введенные   значения

PRINT “C=” ; _C ‘посмотреть результат

LOOP

DO

LOOP

ЦАП.

DO

б)  применение цикла для отладки программы, воспроизводящей данные или сигналы, например, АЦП

Это место отлаживаемой или проверяемой программы

PRINT “C=” ; _C ‘печать результата операции

‘или, если имеется индикатор применять следующие строки

CLS            ‘очистить LCD

LCD C          ‘вывести результат

в) применение цикла с переменным параметром для отладки программы управления объектом, например,

FOR V = 10 TO 100

Это место отлаживаемой или проверяемой программы, зависимой от V NEXT

LOOP

г) установка аппаратного маркера для синхронизации осциллографа, применяемого для  наблюдения за отлаживаемым процессом или формированием временной диаграммы.

RESET P1.1 : SET P1.1 ‘формируем импульс синхронизации (запуска осциллографа)

Это место отлаживаемой или проверяемой программы, формирующей временной процесс

д)  выключение  или  обход  не  нужных  в  данный  момент  участков  программы.  Для   этого  перед компиляцией  ненужные  участки  делаются  комментарием  (символом  “  ‘  “)  или  обходятся  оператором  GOTO метка;

е) запуск программы естественным путем (с нулевого адреса) применяется, когда система уже построена

и работает. Далее отлаживаются вновь добавленные фрагменты. После того, когда очередной фрагмент полностью проверен и выполняет необходимые действия, добавляется новый. Это самый удобный способ отладки программ потому, что ориентирован на получение конечного результата. Он не требует глубокого “копания” во внутренних регистрах процессора, а проверка работы программы ведется в условиях реального времени;

ж) иммитация внешних  событий установкой признаков  этих событий и  подстановкой соответствующих данных. Это программа воспринимает как появление настоящих данных и начинает процесс обработки, в составе которого и участвуют отлаживаемые фрагменты.

SET B_NEW_DATA : ADC_DATA = 4000 ‘так имитируем появление данных АЦП

и)  использования  программы эмулятора терминала для отладки программ,  взаимодействующих  через COM-порт. Выбор текстового протокола связи с другими участниками интерфейса значительно облегчают задачу отладки. Для  этого,  достаточно  обеспечить лишь   аппаратное  подключение отлаживаемого   процессора  с персональным   компьютером.   Легко   отлаживать   программы,   действующие  через   последовательный   порт, используя и  симулятор-отладчик Bascom,  имеющий встроенную  функцию и   программного,  и   аппаратного эмуляторов терминала.  Если еще говорить о полезных функциях отладчика Bascom, нужно упомянуть о наличии программных эмуляторов символьного дисплея и  EEPROM (модели AT89S8252), которые  также существенно расширяют возможности отладки.

Относительно использования  аппаратных  средств  (эмуляторов)  для  отладки программ,  созданных  с помощью Bascom, можно сказать следующее:

а)  отсутствуют  ограничения  на  использование  выходных  файлов  (HEX-  и   BIN-форматов)  Bascom  в эмуляторах других типов (не упомянутых в списке, поддерживаемых средой Bascom);

б) структура текста программы Bascom такова, что самым рациональным является режим отладки путем

запуска программы с нулевого адреса. Это позволяет использовать даже самые простые эмуляторы;

в)  сложные  эмуляторы,  обеспечивающие  просмотр  содержимого  внутренних регистров  при  отладке программ Bascom, напротив, неэффективны и избыточны, так как, все равно, не обеспечивают режим построчной отладки, ассемблерный листинг  Bascom не выдает. К тому же, они  обладают массой недостатков, главные из которых, невозможность работы на предельной тактовой частоте, небезупречная поддержка аппаратных функций процессора, генерация помех на линиях эмулируемых портов в пошаговом режиме, невозможность полноценной отладки программ для процессоров старших моделей, высокая стоимость и низкая надежность;

г) для решения  различных задач требуются и  различные типы эмулятором, отличающиеся  как по типу поддерживаемых процессоров, так и  по составу используемых ресурсов. В одних случаях удобным оказывается наличие  прямой  связи портов  TxD  и   RxD  отлаживаемого  процессора  с  COM-портом  компьютера,  в  других случаях   необходимо  предоставить  все   ресурсы   отлаживаемой  программе   или    обеспечить  возможность выполнения шинных операций (для сообщения с внешней памятью);

д) вследствие того, что Bascom обеспечивает быстрое получение работающей программы,  то он очень удобен при создании программ для самых современных моделей процессоров, выполняемых в плоских корпусах, присоединяемых  только пайкой, имеющих  внутреннюю  Flash-память (электрически  перепрограммируемую) и режимы  внутрисхемной загрузки (по  последовательному интерфейсу). Применять традиционные  эмуляторы в таких случаях неудобно и их может заменить программирующий адаптер (трех- , четырех или пятипроводный). Однако, вследствие того, что процесс перепрограммирования небыстрый (занимает 15 – 30 секунд), то для отладки таких программ  рекомендуется  применять комплексный  подход.  При этом,  вначале  необходимо  применять отладку независимых программных модулей другими способами  и  только на  завершающей этапе переходить к отладке   в   процессоре   в   составе   объекта.   Схема   устройства   (повторяем   еще),   в   которой   используется перепрограммирование впаянного процессора, также должна быть приспособлена для этого.

Источник: М.Л.Кулиш, СПРАВОЧНИК ПО ПРОГРАММИРОВАНИЮ BASCOM-8051, Краснодар 2001

По теме:

  • Комментарии

Комментариев 4

  1. Андрей says:

    Доброго времени суток. Нужно доработать программу на микроконтроллере Attiny 2313, написана на BASCOM. Программа включает и выключает (плавно) светодиоды через определенные промежутки времени (зажигается-горит-тухнет-спит), но не может запускать новый цикл ровно через 24 часа, она не отрегулирована и время следующего включения не совпадает с временем первого включения. Есть мысли как отрегулировать ? Может кого-то посоветуете ?

    • Vadik says:

      Для этого в схеме желательно использовать часы реального времени. Сейчас много готовых решений в виде отдельной платы или микросхемы. Данный блок взаимодействует с контроллером по шине i2c и имеет автономное питание от батарейки. Программно можно установить время на самом блоке и опрашивать текущее время. При совпадении текущего с заданным (или заданной разницей) выполнять какое либо действие. Как-то так. Например есть модули на микросхеме ds1307, вот немного теории, а тут пример схемы с прошивкой.

      • Андрей says:

        Спасибо за ответ. Была идея использовать готовые китайские электронные часы, и на воспринимающую ногу контроллера подать сигнал от будильника с этих часов, но даже без звонка будильника программа запускалась сама, видимо на проводе что-то все такие было (обнулить этот сигнал не получилось). Прозондирую завтра кто может слепить с ds1307 (сам то я не техник=) , спасибо.

  2. 123ksn says:

    Спасибо за статью, но после её прочтения осталось очень много вопросов.
    Вы пишите:”В число мер, обеспечивающих процесс отладки, входят:
    а) возможность электрического подключения эмулятора;”
    Вопрос1: Что Вы имели ввиду под словом “эмулятора”? Желательно ссылочку на конкретное устройство.
    Еще Вы пишите: “Легко отлаживать программы, действующие через последовательный порт, используя и симулятор-отладчик Bascom, имеющий встроенную функцию и программного, и аппаратного эмуляторов терминала. ”
    Сейчас я изучаю чужую программу, пытаясь запустить её на более мощном МК.
    Программа в симуляторе Bascom выводит определенные команды в окно эмулятора терминала UART0 и ожидает на них ответа. Но я не могу ввести руками ответ в этом окне, хотя всплывающая подсказка и пишет, что “Печатать тут”.
    Вопрос2: Что я делаю неправильно или Вы ошиблись в своём утверждении?
    Вопрос3: Можно ли окно эмулятора терминала UART Bascom соединить с виртуальным или аппаратным СОМ-портом компьютера как это сделано в Протеус? Поясняю: Запускаю на компьютере HIPER TERMINAL, ввожу в нем данные и они попадают в симулятор Bascom. И наоборот. Данные из симулятора принимаются HIPER TERMINALом.