Статья №6


     В  этой  статье  мне  хотелось  бы  более  подробно  поведать  о  редакторе  кода  и  симуляторе  Bascom.
     Окно  редактора  Bascom  используется  для  ввода  и  редактирования  текста  программы. Сам  текст  подсвечивается:
         - зелёным  цветом  обозначаются  комментарии, т.е. текст  после  апострофа  « ‘ » ;                 
         - красным  обозначаются  спецсимволы: *  +  -  :  ;  <  >  %  #  @  ()  [ ]  ?  !  { }  |
         - полужирным  синим  выделяются  ключевые  слова, например,  Debounce . По  этим  словам  доступна  справка  при  наведении  на  слово  курсора  и  нажатии  F1
         - чёрным  обозначаются  переменные.
     Следует  отметить, что  версия  Bascom  2.0.5.0  имеет  руссифицированный  вариант. Достаточно  установить  на  вкладке  IDE  в  окне  выбора  языка -  Russian. Это  значительно  облегчает  работу  в  Bascom. В  дальнейшем  мы  будем  иметь  дело  именно  с  этим  вариантом  (см. Рис.1).
 
    Рис.1
 
     Изменить  цвета  текста, его  форму, толщину  можно, открыв  вкладку  «шрифт»  (см. Рис.2), но  предварительно  нажав  «настройка/приложение».
 
 
     Bascom  убирает  лишние  пробелы  и  добавляет  их  там, где  надо, делая  текст  более  разряженным.  Всё  это  можно  менять, открыв  окно  «редактор»  (см. Рис.3).
 
     
     При  компиляции  программ  Bascom  проверяет  синтаксис . Он  выдаёт  ошибки  в  случае  пропуска  букв,  неправильного  написания  слов, в  случае  использования  необъявленной  переменной  или  отсутствия  ключевых  слов  ( например, в  операторе  DO…LOOP  отсутствует  слово  LOOP)  и  др. Однако  Bascom  не  выявляет  логических  ошибок.

     При  разработке  нового  проекта  всегда  полезно  проверить  программу  до  прошивки  микроконтроллера. Симулятор  Bascom  позволяет  пошагово  проверить  программу. Здесь  можно  увидеть  состояние  портов, значения  переменных, регистров  и  программной  памяти. В  симуляторе  можно  увидеть  взаимодействие  микроконтроллера  с  подключёнными  к  нему  устройствами: светодиодами,  ЖК- индикатором. Можно  изменять  состояние  портов  виртуальными  кнопками, подводить  нужное  напряжение  к  АЦП, проверять  работу  UART  и др.
     Рассмотрим  работу  симулятора  на  примере  простенькой  программы – светодиодной  мигалки.  Для  этого  мы  используем  схему  c  микроконтроллером  ATtiny2313 и  подключённым  к  выводу  его  порта  PD6  светодиодом  (данная  схема  представлена  в  статье №1).  Откроем  Bascom,  установим  настройки  и  напишем  программу  в  основном  окне  (см. Рис.4). 
 
Рис. 4

     Скомпилируем  программу  (“LED1”)  и  войдём  в  симулятор  (см. Рис.5). В нижней  части  мы  видим  окно  с  исходным  кодом. В  верхней  части  расположены  кнопки  (слева  направо): автопуска, приостановки, полной  остановки  со  сбросом, пошаговой  симуляции,  запуска  с  текущей  строки, показа  аппаратной  симуляции – “LCD”, включения  аппаратной  эмуляции, просмотра  регистров, отображения  окна  регистров, отображения  окна  регистров  ввода – вывода, обновления  переменных.
 
 
     Чтобы  видеть, как  микроконтроллер  взаимодействует  с  подключёнными  к  нему  устройствами  необходимо  нажать  кнопки  “LCD” и  «обновление  переменных» . В  результате  появится  дополнительное  окно  (см. Рис.6).
 
Рис. 6
    
 
     Симуляцию  лучше  всего  проводить  пошагово, однако  на  командах  задержек  типа  Wait, Waitms  процесс  симуляции  может  задержаться  надолго. Для  этого  необходимо  в  коде  программы  после  настроек  вставить  директиву  $sim, и  все  эти  команды  в  программе  будут  пропущены. Но  нужно  не  забыть  затем  убрать  эту  директиву  и  перекомпилировать  программу. 
     При  симуляции  программы  видно, как  зажигается  и  гаснет  красный  светодиод  PD7  (см. Рис.7). 
     Рассмотрим  теперь  работу  симулятора  с  переменными  (о  переменных  было  рассказано  в  статьях  №2  и  №3). Напишем  новую  программу  “Count”  и  скомпилируем  её  (см. Рис.8). 
 
Рис. 8
 
     Войдём  в  симулятор  и  нажмём  кнопку  «обновление  переменных». В  первой  ячейке  таблицы  «Переменные – Variable»  запишем  Count. Запустим  процесс  симуляции. Можно  отследить, как  значение  переменной  увеличивается  до  255, после  чего  она  переполняется  и  становится  равной  нулю  (см. Рис.9). 


Рис. 9
    
 
     Познакомимся  с  работой  симулятора  Bascom  в  области  подключения  ЖКИ  к  микроконтроллеру. 
     Bascom  поддерживает  два  типа  жидкокристаллических  дисплеев – знакосинтезирующие  и  графические. В  этой  статье  будут  рассмотрены  только  знакосинтезирующие, поскольку  они  более  простые.
     Большинство  дисплеев  имеют  встроенный  контроллер  HD44780  или  совместимый  с  ним. Следует  отметить, что  индикаторы  отечественных  производителей  ни  в  чем  не уступают  импортным, но  и  превосходят  их  в  надёжности. Кроме  того  цена  отечественных  ЖКИ  ниже  импортных. Так, например  фирма МЭЛТ  выпускает  индикаторы  типа МТ-16S2H-1YLG, который  имеет  низкую  потребляемую  мощность  (10 мВт), встроенные  шрифты (английский/русский)  и  широкий  температурный  диапазон(от  -30  до  +70 град). В  Bascom  имеет  настройки  по  умолчанию  для  подключения  ЖКИ. Рассмотрим  их,   нажав  настройки/компилятор/ЖКИ  (см. Рис.10).
 
 
Рис. 10
 
     В  Bascom  уже  предустановлен  размер  индикатора  16*2. Это  наиболее  распространённый  тип, который  может  отображать  две  строки  текста  по  16  символов  в  каждой.
     ЖКИ  типа  МТ -16S2H  имеют  8 линий  данных, но  допускается  управление  с  использованием  4  старших  разрядов  шины, что  позволяет  сэкономить  выводы  микроконтроллера. Этот  четырёхбитный  режим, как  видно  из  Рис.10, уже  установлен  по  умолчанию. В  данном  режиме  байт  передаётся  за  два  прохода, поэтому , если  нужно  увеличить  скорость  передачи, используют  режим  управления  по  шине – 8 бит. Интерфейс  (режим  передачи  данных) по  умолчанию  установлен, как  «прямое». Это  значит, что  можно  назначить  любые  выводы  микроконтроллера  для  управления  ЖКИ. Таким  образом, можно  максимально  удобно  настроить  компилятор. Режим  «Шина»  организует  классическое  подключение  по  топологии  шины  данных, когда  много  устройств  подключено  к  шине, и  нужно  посылать  адрес  устройства, чтобы  отозвалось  только  нужное. В  этом  случае  необходимо  установить  значения  адресов  LCD  и  RS. При  подключении  «прямое»  разработчик  сам  определяет выводы  микроконтроллера  для  управления  ЖКИ. Вывод  Е  (Enable)  включает  и  отключает  ЖКИ. Пока  на  Е  низкий  уровень, ЖКИ  не  реагирует  на  команды  по  линиям  данных. Вывод  RS  служит  для  опознавания  ЖКИ  сигналов, передающихся  по  линиям: символ  или  команда. 
     Вывод  R/W  - считывание  информации  с  дисплея/ запись  информации  в  дисплей. Bascom  предполагает, что  на  этом  выводе  всегда  низкий  уровень, т.е.  ЖКИ  находится  всегда  в  режиме  приёма.
     Bascom  не  может  проверить  готовность  дисплея  к  приёму   данных, поэтому  он  делает  задержку  на  некоторое  количество  циклов  после  каждой  передачи  данных.

     Все  настройки  ЖКИ  можно  делать  также  и  в  прямом  коде:
Config  lcd = 16*2
Config  lcdpin = PIN, DB4 = PORTB.1, DB5 = PORTB.2, DB6 = PORTB.3, DB7 = PORTB.4, E= PORTB.5, RS = PORTB.6
Config  lcdmode = PORT
     Принципиальная  схема  подключения  ЖКИ  к  микроконтроллеру  представлена  на  Рис.11.
 
 
 
 
  
 
    Откроем  Bascom  и  после  установки  настроек, о  которых  указывалось  выше, в  основном  окне  напишем   программу  “LCD1”  (см. Рис.12).
 
Рис. 12 
 
   Скомпилируем  программу  и  войдём  в  симулятор. Кликнем  по  первой  ячейке  в  таблице  переменных  и  введём  Count. Нажмём  кнопки  «LCD»  и  «обновление  переменных  и  просимулируем  программу  сначала  в  пошаговом, а  затем  и  автоматическом  режиме. Результаты  симуляции  показаны  на  Рис.13.
 
    
Рис. 13 
 
Программы  “LED1”, “Count”, “LCD1”  находятся  в  папке  приложение 1  данной  статьи.