Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
начинающим / Экскурсия по электронике.pdf
Источник:
Скачиваний:
211
Добавлен:
06.01.2022
Размер:
31.57 Mб
Скачать

В.Н. Гололобов

Экскурсия по электронике

578

Почему я работаю с AVR?

Такой вопрос я не задаю себе, но часто встречаю в несколько иной форме: «Что лучше, PIC или AVR?». Затрудняюсь сказать что-либо вразумительное, но ответ, с которым я вполне согласен, я нашел на сайте http://avr.nikolaew.org, ссылку на который обнаружил на www.radio-portal.ru в недавно открывшемся разделе форума по микроконтроллерам. С микроконтроллерами Atmel, вернее контроллером 8051, я знакомился слишком давно, но упоминание о Proteus на форумах чаще связывалось с AVR микроконтроллерами, и любопытство взяло верх.

У меня нет таких задач, которые заставили бы меня сравнивать микроконтроллеры разных производителей, а те небольшие опыты, которые я проводил, вполне вписывались в работу с PIC-контроллерами. Вдобавок мои предпочтения, касающиеся Linux, в полной мере укладывались в то, с чем я имел дело в части микроконтроллеров. Как я выяснил, Proteus вполне счастливо работает с PIC-контроллерами, отчего эту главу с чистой совестью я мог бы опустить. Однако отчего бы не познакомиться с AVR-контроллерами? В первую очередь в Linux и Proteus.

В поставках Proteus есть много примеров работы со всеми мыслимыми устройствами, по крайности в любительской практике. Есть примеры работы с AVR-контроллерами.

Рис. 8.1. Пример работы AVR-контроллера в Proteus

Предпочитая работать с языком высокого уровня в удобной графической среде, я ищу, что предлагает Linux для работы с AVR. В моем дистрибутиве Fedora 8 есть некоторые средства программирования этих микроконтроллеров. Загружаю я очень быстро, но также быстро убеждаюсь, что это только транслятор и полезные утилиты, но не привычная графическая

В.Н. Гололобов

Экскурсия по электронике

579

среда программирования. Поиск по запросу «avr linux» в Интернете приводит меня к программе Kontrollerlab, которая существует в стабильной версии для Fedora Core 5 и в следующей альфа версии для Fedora 6. Начну со стабильной версии. Надеюсь, я загрузил для своего дистрибутива и компилятор «С», и что-то полезное для программатора, хотя не собираюсь пока собирать и использовать программатор.

Первый запуск программы Kontrollerlab показывает, что графический интерфейс очень похож на многие интерфейсы программирования в Linux. На всякий случай я создаю новый проект через раздел Project основного меню, где есть пункт New Project. Обычная процедура указания места расположения проекта и его названия, следом через раздел File и New, где можно выбрать, будет ли это файл на языке С или ассемблерный, я создаю исходный файл. Остается написать код пробной программы.

Рис. 8.2. Запуск программы Kontrollerlab

Я не видел программы AVRStudio, но работа много лет назад с программой для программирования и отладки контроллера 8051 оставила очень хорошие впечатления, а за прошедшие годы, я уверен, среда программирования контроллеров Atmel стала только лучше. Но меня интересует среда программирования для Linix. Итак.

Небольшой текст на языке С после нескольких поправок транслируется, полученный hexфайл даже работает в Proteus, но попытки запустить отладку в программе Kontrolltrlab не дают видимого эффекта. Не помогает и установка последней версии, то есть, отладка как-то идет, работают команды пошаговые, что-то происходит с регистрами микроконтроллера, но я бы не назвал это удобным отладочным средством. Хуже всего, что сайте проекта эти разделы документации еще не созданы. Конечно, можно транслировать исходный текст в этой программе, а присоединять дополнительные элементы и симулировать работу в Proteus. Что

В.Н. Гололобов

Экскурсия по электронике

580

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

Для отладки программ AVR-контроллеров есть штатная программа AVRStudio. Но, хотя установка проходит без видимых осложнений, работать программа в Linux не желает. Выяснять, отчего это так, особого желания нет, достаточно простого ответа — используй программу с той операционной системой, для которой она предназначена. Но есть и еще рекомендуемые бывалыми средства работы с AVR-контроллерами: VMLab и WinAVR. VMLab даже обозначена, как работающая в Linux (под Wine), что радует.

И действительно, программа устанавливается, запускается. Некоторые сомнения одолевают при попытке создать новый проект с помощью раздела основного меню ProjectNew Project.

Рис. 8.3. Программа VMLab в Linux

Как всегда есть несколько путей к достижению цели: найти документацию и прочитать ее, обратиться к опыту тех, кто уже работал с программой, можно посмотреть демонстрационные проекты, чтобы попытаться понять, как следует создавать проект. И есть еще один путь — открыть обучающий проект, расположенный в папке tutorial. Пожалуй, с этого я начну. Проекты обозначены достаточно ясно Step01.prj и т.д.

В окне сообщений «Messages» в разделе Code Maker появляется предупреждение, что следует запустить пересборку проекта для получения hex-файла. В разделе основного меню

Project есть пункт Rebuild-all.

В.Н. Гололобов

Экскурсия по электронике

581

Мне жаль, но после запуска на пересборку проекта программа «виснет», и я не понимаю, отчего это происходит. Дело явно не в программе, а в ее работе в Linux. Может быть, программа совсем не работает?

Это легко проверить, с программой приходит множество примеров, скажем, в папке AVR_demo. Мне приглянулся проект lcd.prj, который можно открыть с помощью ProjectOpen project разделов основного меню. Проект открывается, появляется сообщение, что hexфайл обновлен и нет необходимости пересобирать проект (скорее всего, я пытался запустить его раньше), но я не вижу «оживших» клавиш отладки, поэтому запускаю сборку проекта, после которой оживает клавиша запуска с иконкой светофора с зеленым светом. Если нажать на эту клавишу, то в окне дисплея появляется предложение ввести что-нибудь с клавиатуры в окно терминала. Я ввожу слово proba.

Рис. 8.4. Демонстрационный пример в VMLab

Я не удержался и переключил клавиатуру на ввод русского текста, что не помешало его правильному отображению на дисплее. Если в разделе основного меню Run отметить Animate code, то включается анимация прохождения кода. Становится интересно, в чем же причина того, что две демонстрационные программы ведут себя столь различно. Пустое любопытство, согласен, в Windows нет проблем, но — интересно.

Первый эксперимент. В месте установки VMLab есть папка Work. Перенесем туда текст на ассемблере lcd.asm (это текст предыдущего проекта) из папки с демонстрационными программами и попробуем создать свой проект. В окне диалога (рис. 8.3) щелчком по клавише Enter name / browse/ create directory (это отмечено как Step 1, первый шаг) можно указать директорию и задать имя проекта, скажем, test. В программе Wine, которая поддерживает работу Windows программ, в диалоговом окне выбора директории есть возможность выбрать либо диск C:, виртуальный логический диск Windows структуры, либо

В.Н. Гололобов

Экскурсия по электронике

582

диск Z:, логический диск реального расположения ОС Linux, если нажать на клавишу с иконкой домика и выбрать «Мой компьютер» в окне выбора. Я выбираю диск С:, нахожу программу VMLab, расположенную в корневой папке, и выбираю, наконец, папку Work. Проект по умолчанию назван my_idea.prj, и достаточно исправить название проекта. Нажав на клавишу Save, сохраняем эти настройки и обращаемся к шагу 2, где следует выбрать модель микроконтроллера. Здесь, чтобы не искать ненужных приключений, я подсматриваю в файле lcd.prj, исходном файле проекта, который открывается в тестовом редакторе, какова исходная модель — AT90S8515_64K. Такая модель есть, а приставка 64K означает наличие внешней памяти. Возможно это не обязательно. Попробуем выбрать базовую модель. На третьем шаге я не знаю, что выбрать и оставляю настройки «по умолчанию», а на четвертом шаге в окне Code files list мне приходится выбирать lcd.asm с помощью клавиши Browse +add, иначе из диалога не получается «плавный» выход, но исходный текст test.asm, появившийся после задания проекта, в окошке выше исчезает. Пусть так. Клавиша OK закрывает окно диалога и в проекте появляется текст проекта, исходный ассемблерный текст и окно сообщений рекомендует пересобрать проект. В пункте Windows основного меню есть возможность с помощью Title расположить рабочие окна удобным для меня образом. И, если до этой операции подменю Components было «серо» (не активно), то теперь оно активизировалось. Я понимаю, что мне нужно добавить терминал и дисплей. Теперь такая возможность появилась (это TTY и LCD module). После этого выбора в файле проекта появляются две строки:

X[inst_name]

TTY(baud_rate

[n_bits] [parity] [odd_parity] [n_stop_bits]

[rx_display_as]) node_tx node_rx

X[inst_name]

LCD(chars lines

oscil_freq) RS RW E D7 D6 D5 D4 D3 D2 D1 D0

Конечно, следует задать параметры терминала и дисплея, задать их привязку к контроллеру. Самый простой способ это осуществить, вставить эти строки из готового проекта:

Xterm

TTY(4800

8) PD0 PD1

PD7 PD6 PD5 PD4

nc3 nc2 nc1 nc0

Xdisp

LCD(24 2

250K) PD2 PB0 PD3

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

В.Н. Гололобов

Экскурсия по электронике

583

Рис. 8.5. Первый эксперимент по созданию проекта

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

.plot v(pd0) v(pd1)

После ее добавления в проект позволяет наблюдать на экране виртуального осциллографа прохождение сигналов передачи.

В.Н. Гололобов

Экскурсия по электронике

584

Рис. 8.6. Встроенный осциллограф в VMLab

Второй эксперимент. Опять создадим новый проект, но теперь я не буду использовать готовый файл ассемблера, а в список файлов, нажав на клавишу <-- Add this рядом с появившимся файлом test2.asm, по названию проекта, добавлю его в список файлов. И выберу модель AT90S8515, с которой все работало. Текст программы я просто скопирую из исходного файла, который открывается текстовым редактором. После сборки проекта программа не виснет, но появляется сообщение о том, что не получается запуск ассемблера и совет проверить, есть ли у меня права на работу с этой папкой. Попытка создать новый пустой проект и оттранслировать его приводит к прежнему результату.

Полная переустановка программы VMLab снимает эту проблему. Теперь пустой проект для модели AT90S8515 транслируется без проблем. Но попытка запустить пустой проект, созданный из шаблона (собственно, в руководстве с проектом Step_01 тоже пустой файл исходного текста) для ST6210 приводит к зависанию программы, и появляется необходимость полной переустановки. Интересно, свойство это моего дистрибутива или свойство Linux запуска программы под Wine? Я могу это проверить в другом дистрибутиве Linux — Ubuntu 7.10...

Нет. Смена дистрибутива не меняет поведения программы. Не любит Linux компонента ST6210. Используя время, проведенное в Ubuntu, я решил посмотреть, что с Proteus в этом дистрибутиве? И не зря. Первая загрузка демонстрационной программы выявила одну особенность — текст примечаний, штампа и все надписи компонент электрической схемы исчезли, как бы их и не было совсем. Немного странно, поскольку другие программы, работающие под Wine, этой проблемы не обнаруживают, иначе можно было бы «грешить» на отсутствие нужных шрифтов. В средствах изменения стиля, где есть настройка шрифтов с демонстрацией образцов, виден только векторный шрифт, и только этот шрифт работает при вводе текста в программе. Потратив минут десять на разные эксперименты, я к своему удивлению обнаруживаю, что если в конфигурации Wine выбрать WinME или Win98, то проблема шрифтов «остается за бортом». Советов в Интернете по этому вопросу я не нахожу, но обнаруживаю обсуждение схемы выполненной на микроконтроллере ATTiny2313. Автор предоставил на обсуждение и схему, и исходный текст, и hex-файл проекта. Я не собираюсь

В.Н. Гололобов

Экскурсия по электронике

585

повторять схему в «железе», но хочу попробовать, как она работает в Proteus.

Рис. 8.7. Работа в Proteus схемы с сайта cxem.net

В Proteus я не нахожу нужного контроллера, но использую AT90S2313. Схема работает, реагирует на переключение вида работы гирлянды. В программе не работают светодиоды D12 и D13, несколько медленно происходит переключение. Посмотрим, что говорят на форуме те, кто собирал схему:

Я собрал схему, все заработало! Только вот очень медленно работает! Я раз 50 нажимал на увеличение скорости работы программы, но такой скорости, как на видео-ролике у меня не получается! Да, обещанного стабилизированного свечения вроде бы не наблюдалось! Максимум, еле заметное мигание! Что делать?

Мигает быстро, а когда на кнопки нажимаешь реагирует примерно через 5 сек ( хотя смотря на какую кнопку нажимать). Это нормально? По моему должно быть быстрее, но я не знаю как должно быть.

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

...сделал как ты сказал! Теперь правда, намного быстрее стало работать, только перестали гореть первые три светодиода, т.е. нет ответа с 4,5,8 ножек МК! В чем может быт проблема?

Я не знаю, есть ли в Proteus возможность задать слово конфигурации микроконтроллера,

В.Н. Гололобов

Экскурсия по электронике

586

как справедливо отмечают на форуме проблемы могут крыться в этом. Обсуждение на форуме продолжается.

А я хочу завершить беглый обзор возможности работы в Linux со штатными средствами программирования AVR-контроллеров. Если бы мне пришлось начать с ними работу, я попробовал бы сделать это в Linux, несмотря на ограничения, конечно, до тех пор, пока эти ограничения не помешали бы работе. Что же до любительской практики, то, возвращаясь к началу разговора о выборе контроллера, я готов повториться, что если мне понятно, когда есть претензии к организации памяти, прерываний и работе со стеком у профессионала, но любителю, сдается, такие тонкости понадобятся не скоро. Proteus же работает и с PICконтроллерами и AVR, что я, собственно, и хотел выяснить.