- •Предисловие
- •Часть 1. Электроника для начинающих
- •Глава 1. Что на плате электронного устройства?
- •Резистор
- •Конденсатор и индуктивность
- •Диод и транзистор
- •Глава 2. Программы и схемы
- •PSIM в Linux
- •Qucs в Linux
- •Операционный усилитель
- •Цифровая микросхема
- •Глава 3. Путешествие по плате с осциллографом
- •Что такое осциллограф?
- •Что такое сигнал?
- •Что я увидел на плате с помощью осциллографа?
- •Глава 4. Электричество и магнетизм
- •Глава 5. Сигналы или переменный ток на практике
- •Разные законы изменения переменного тока
- •Генерация сигналов
- •Использование сигналов
- •Глава 6. С чего начать свой первый проект?
- •Усилитель мощности
- •Светофор
- •Блок питания
- •Глава 7. Усилитель
- •Включение транзистора с общей базой
- •Включение транзистора с общим коллектором
- •Включение транзистора с общим эмиттером
- •Определение зависимости тока базы от напряжения
- •Частотные характеристики усилителя
- •Стоп, стоп, стоп!
- •Глава 8. Бабахать или нет – вот в чем вопрос
- •Разговоры, разговоры
- •Проект «Громкоговоритель»
- •Глава 9. Теплоотвод
- •Разные режимы работы оконечных каскадов
- •Тепло. Что с ним делать?
- •Глава 10. Сигналы, немного больше
- •Прямоугольные импульсы
- •Получение импульсов некоторых видов из простых сигналов
- •Немного о сигналах и линиях
- •Больше об амплитудной модуляции
- •Другие преобразования напряжений
- •Глава 11. Немного больше об усилителях
- •Усилители в радиоприемнике
- •Предварительный усилитель НЧ
- •Снижение шумов и автоматическая регулировка
- •Глава 12. Автоматика, и зачем она нужна
- •Обогреватель-автомат или простые устройства автоматики
- •Автоматическая нянька для рассеянных
- •Глава 13. Один интересный преобразователь
- •Преобразователи постоянного напряжения в переменное
- •Разные типы современных преобразователей
- •Проблемы симуляции электрических схем
- •Глава 14. Как считает домашний компьютер
- •Пример расчета максимальной выходной мощности
- •Пример расчета схемы стабилизатора
- •Примеры соотношений в транзисторных схемах
- •Программы для более сложных расчетов
- •Глава 15. Микропроцессор и программирование
- •Галопом по европам
- •Как организована работа процессора
- •Что такое программа?
- •Глава 16. Микроконтроллеры
- •Что нужно для работы с микроконтроллером?
- •Завершение проекта «Светофор»
- •Некоторые особенности работы с программатором
- •Завершение проекта «Автомат для рассеянных»
- •Завершение проекта «Электроника для начинающих»
- •Глава 17. Измерения в электрических цепях
- •Схема коммутатора к осциллографу
- •Схема приставки к мультиметру для измерения L и C
- •Схема регулировки яркости светильника
- •Глава 18. Организация собственной разработки
- •Часть 2. Игра в программирование
- •Глава 1. Поиск печки, от которой танцевать
- •Два берега
- •Первое знакомство с Gambas
- •Компьютер может помочь с программированием
- •Почему Емеля ездил на печи?
- •А можно с этого места поподробнее?
- •Первый блин
- •Глава 2. Бряцая железом
- •Хорошее начало
- •Возвращение
- •Отладка в gpsim
- •Глава 3. У камелька
- •Начало проекта «Машинистка»
- •Развиваем успех
- •Заметки и пометки «на память»
- •Глава 4. Охота на кентавра
- •Засада в интерфейсе
- •Железное решение
- •Лирическое отступление
- •Грустное завершение рассказа о счетчике
- •Глава 5. Сказка о неудачливом радиолюбителе
- •Возвращение на круги своея
- •Расширение кругов (на воде?)
- •gpsim как зерцало грешника
- •Вялая попытка оправдаться
- •И оргвыводы
- •Глава 6. Сказка о ловком программисте
- •Предварительное рассмотрение проекта «Генератор»
- •Продолжение работы над проектом «Генератор»
- •Завершение
- •Конспекты
- •Gambas дружелюбен к пишущим на VB, но используя Linux
- •Разработка приложений в Gambas
- •Часть 3. Proteus в любительской практике
- •Что такое интегрирующая и дифференцирующая цепь?
- •Почему не выпрямляет диод?
- •Как работает транзистор?
- •Микроконтроллеры и Proteus
- •Как работать с линиями?
- •Помогите найти схему внешнего генератора импульсов 4-8 MHZ (например на 555ЛН1).
- •Собрал одно, собрал другое — не работает. Что делать?
- •Почему я работаю с AVR?
В.Н. Гололобов |
Экскурсия по электронике |
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, что я, собственно, и хотел выяснить.
