Создание печатной платы методом лазерного утюга.
Автор DI HALT
Опубликовано 29 июля 2008
Рубрики: Радиолюбительские Технологии
Метки: ЛУТ, Печатная плата
AVR. Учебный курс. Макроассемблер
Автор DI HALT
Опубликовано 24 июля 2008
Рубрики: AVR. Учебный курс
Метки: Assembler, AVR, Макро язык
Перед изучением системы команд микроконтроллера надо бы разобраться в инструментарии. Плох тот плотник который не знает свой топор. Основным инструментом у нас будет компилятор. У компилятора есть свой язык — макроассемблер, с помощью которого жизнь программиста упрощается в разы. Ведь гораздо проще писать и оперировать в голове командами типа MOV Counter,Default_Count вместо MOV R17,R16 и помнить что у нас R17 значит Counter, а R16 это Default_Count. Все подстановки с человеческого языка на машинный, а также многое другое делается средствами препроцессора компилятора. Его мы сейчас и рассмотрим.
Читать полностью
AVR. Учебный курс. Постановка задачи
Автор DI HALT
Опубликовано 19 июля 2008
Рубрики: AVR. Учебный курс
Метки: AVR, Робот
Будем конструировать робота своими руками. Это конечно будет не Терминатор и даже не ходячий механизм, и интеллектом он особым обладать не будет. Для начала сделаем простенького, потом наворачивая его все больше и больше. Тут тебе и программирование и схемотехнические заморочки. В общем, надеюсь, будет интересно.
Итак, общая конструкция. Поскольку я робота делать уже начинал и даже сделал нечто адекватное и самостоятельно передвигающееся, то изобретать велосипед заново я не буду.
Что, в итоге, мы имеем:
- Для начала шасси. Из соображений проходимости, легкости управления и доступности я выбрал гусеничное шасси от советской игрушки “БМП“. Здоровенное корыто в которое влезут и аккумуляторы, и куча плат с контроллерами и много чего еще.
- Два двигателя на правую и левую гусеницу соответственно. Исходя из того, что привод двигателя удобней всего делать на микросхеме L293 или L298, то на каждый двигатель нам надо три линии порта. Две задают направление вращения, а одна разрешает вращение.
AVR Studio и HAPSim
Автор DI HALT
Опубликовано 19 июля 2008
Рубрики: AVR. Учебный курс
Метки: AVR Studio, Отладка, Софт
Раз уж пошел разговор об отладке AVR Studio, то стоит упомянуть про ряд примочек для нее. Одной из самых интересных примочек является небольшая программка - HAPSim. Программка почти не известна, по крайней мере я лишь пару раз слышал упоминание о ней на форуме. Прога не слишком стабильна, иногда работает не так как надо, а еще ей не хватает многих эргономических моментов, но, надеюсь, в следующий версиях это будет исправлено.
Итак, что делает Hapsim. Он всего лишь подцепляется к студии и в момент выполнения эмуляции программы может симулировать работу разных устройств, прицепленных на порты. Из доступных устройств есть:
- Кнопки. Как обычные, прижимающие к земле, так и трехвыводные, которые могут поставить как высокий, так и низкий уровень в зависимости от состояния
- LCD на базе HD44780
- Терминал (USART или I2C) с возможностью осуществить трансфер на комповый COM порт (сам не проверял, но заявлено в мануале)
- Клавиатурная матрица 4х4
- Блок светодиодов
AVR Studio ликбез
Автор DI HALT
Опубликовано 17 июля 2008
Рубрики: AVR. Учебный курс
Метки: AVR, AVR Studio
Вообще, честно говоря, с этого надо было и начинать. Но я как то упустил этот момент - IDE как IDE, ничего особенного, что там расписывать? Оказалось есть что, непоняток масса. Так что исправляюсь и даю инструкцию как писать и отлаживать код в AVR Studio. А также опишу ряд примочек и плагинов для студии.
Установка.
Сначала надо с сайта скачать последнюю версию AVR Studio. Весит она что то около 30 метров. Можно и старые релизы использовать, не преступно, но там может не оказаться новых микроконтроллеров. AVR Studio, как и многие буржуйские программы, крайне хреново понимает русские имена и длинные пути. Поэтому ставь ее по максимально простому пути, что то вроде C:\AVR\ А сами проекты тоже держи как можно ближе к корню, У меня, например, это D:\Work\AVR — никаких имен длинней 8 символов и, конечно же, никаких русских символов. Привет родимый DOS, как говорится.
Да, если планируешь (если не планируешь, то все равно скачай и поставь, не помешает) писать на Си, то рекомендую скачать GCC aka WinAVR и установить ее ДО студии, туда же, поближе к корню. Тогда студия подхватит ее в качестве своего плагина. Если поставить после, то тоже, может быть подхватит, но возможны проблемы.
Читать полностью
Демоплата
Автор DI HALT
Опубликовано 15 июля 2008
Рубрики: AVR. Учебный курс
Метки: AVR, Печатная плата
После программатора, вторая вещь которая тебе пригодится (если конечно ты планируешь изучить микроконтроллеры, а не повторить одно два готовых устройства) это демоплата.
Демоплата представляет собой кусок текстолита на котором распаян микроконтроллер и вся необходимая обвязка для его функционирования — кварц, стабилизатор питания, подтяжка RESET, фильтр на АЦП (если АЦП конечно есть) стабилизирующие конденсаторы, а выводы портов микроконтроллера подключены к штырям или гнездам — чтобы было удобно подключать к ним светодиоды, кнопки, разные другие модули которые мы будем изучать. Этакий радиоконструктор. Также крайне желательно, чтобы на плате был и ISP разъем — через него идет процесс прошивки внутри схемы (т.е. не вытаскивая из панельки готового устройства)
Когда то давно делал я плату для статьи в журнал Хакер — проект Trashduino. Простенькая демоплата на ATmega8 с кучей штырей и по параметрам схожая с Arduino, как минимум туда можно было зашить Ардуиновский загрузчик и работать потом из ее среды.
Мне правда загрузчик этот никуда не уперся, равно как и среда, но вот сама платка в итоге получилась удобной и в дальнейшем я ее активно использовал.
![]() |
А судя по письмам и комментам читателей она заинтересовала, поэтому я выкладываю ее LAY файл. Читать полностью
Конденсатор и RC цепочка
Автор DI HALT
Опубликовано 13 июля 2008
Рубрики: Начинающим
Метки: RC, Конденсатор, Резистор
Если соединить резистор и конденсатор, то получится пожалуй одна из самых полезных и универсальных цепей.
О многочисленных способах применения которой я сегодня и решил рассказать. Но вначале про каждый элемент в отдельности:
Резистор - его задача ограничивать ток. Это статичный элемент, чье сопротивление не меняется, про тепловые погрешности сейчас не говорим — они не слишком велики. Ток через резистор определяется законом ома - I=U/R, где U напряжение на выводах резистора, R - его сопротивление.
Конденсатор штука поинтересней. У него есть интересное свойство — когда он разряжен то ведет себя почти как короткое замыкание — ток через него течет без ограничений, устремляясь в бесконечность. А напряжение на нем стремится к нулю. Когда же он заряжен, то становится как обрыв и ток через него течь перестает, а напряжение на нем становится равным заряжающему источнику. Получается интересная зависимость - есть ток, нет напряжения, есть напряжение - нет тока.
Чтобы визуализировать себе этот процесс, представь г… эмм.. воздушный шарик который наполняется водой. Поток воды — это ток. Давление воды на упругие стенки — эквивалент напряжения. Теперь смотри, когда шарик пуст — вода втекает свободно, большой ток, а давления еще почти нет — напряжение мало. Потом, когда шарик наполнится и начнет сопротивляться давлению, за счет упругости стенок, то скорость потока замедлится, а потом и вовсе остановится — силы сравнялись, конденсатор зарядился. Читать полностью
C vs Assembler
Автор DI HALT
Опубликовано 13 июля 2008
Рубрики: Начинающим
Метки: Assembler, C, Микроконтроллер, Программирование
Но, истинна как всегда находится посредине. Каждый уважающий себя программер должен знать ассемблер, а вот писать должен на том, что более подходит под масштаб задачи. Особенно это касается микроконтроллеров.
Программатор Громова
Автор DI HALT
Опубликовано 13 июля 2008
Рубрики: Готовые устройства
Метки: AVR, Микроконтроллер, Описание, Программатор
Самый простой вариант программатора для AVR это пять проводков, припаиваемых к порту контроллера и втыкаемых в LPT порт. Не спорю, можно и так. Но я все же не рекомендую этот способ. Даже схему подключения давать не буду — если надо будет сам найдешь. Так как данный метод не очень стабилен, возможны сбои при прошивке, длина проводков ограничена двадцатью сантиметрами (если больше, то будет глючить), поэтому придется шариться в комповой заднице. Да и LPT порт спалить проще простого. В общем не рулез.
Шарясь по инету, я нашел отличный программатор, работающий через RS232 он же COM порт. А также удобную программу для прошивки контроллера от Николаева. Схему программатора придумал Громов, создатель Algorithm Builder.
![]() |
Саму программу UniProf можно скачать у меня, но лучше взять с . Возможно там будет версия посвежее.
Читать полностью
AVR. Учебный курс. Трактат о программаторах
Автор DI HALT
Опубликовано 13 июля 2008
Рубрики: AVR. Учебный курс
Метки: AVR, Программатор
Программа для микроконтроллера пишется на любом удобном языке программирования, компилируется в бинарный файл (или файл формата intel HEX) и заливается в микроконтроллер посредством программатора.
Итак, первым шагом в освоении микроконтроллера обычно становится программатор. Ведь без программатора невозможно загнать программу в микроконтроллер и он так и останется безжизненным куском кремния.
Что же представляет из себя это устройство?
В простейшем случае программатор это девайс который связывает микроконтроллер и компьютер, позволяя. Также нужна прошивающая программа, которая по специальному протоколу загонит данные в микроконтроллер.
Программаторы бывают разные под разные семейства контроллеров существуют свои программаторы. Впрочем, бывают и универсальные. Более того, даже ту же простейшую AVR’ку можно прошить несколькими способами:
Внутрисхемное программирование (ISP)
Самый популярный способ прошивать современные контроллеры. Внутрисхемным данный метод называется потому, что микроконтроллер в этот момент находится в схеме целевого устройства — он может быть даже наглухо туда впаян. Для нужд программатора в этом случае выделяется несколько выводов контроллера (обычно 3..5 в зависимости от контроллера).
Подключение микроконтроллера. Ликбез.
Автор DI HALT
Опубликовано 12 июля 2008
Рубрики: AVR. Учебный курс
Метки: AVR, Начинающим, Опорное напряжение, Порт, Схемотехника
Казалось бы простая тема, а однако в комментах меня завалили вопросами как подключить микроконтроллер. Как подключить к нему светодиод, кнопку, питание. Что делать с AGND или AREF. Зачем нужен AVCC и все в таком духе. Итак, раз есть вопросы, значит тема не понятна и надо дать по возможности исчерпывающий ответ. Все описываю для контроллеров AVR, но для каких нибудь PIC все очень и очень похоже. Т.к. принципы тут едины.
Питание
Для работы микроконтроллеру нужна энергия — электричество. Для этого на него естественно нужно завести питалово. Напряжение питание у МК Atmel AVR разнится от 1.8 до 5 вольт, в зависимости от серии и модели. Все AVR могут работать от 5 вольт (если есть чисто низковольтные серии, то просьба уточнить в комментах, т.к. я таких не встречал). Так что будем считать что напряжение питания контроллера у нас всегда 5 вольт или около того. Плюс напряжения питания обычно обозначается как Vcc. Нулевой вывод (а также Земля, Корпус, да как только его не называют) обозначают GND. Если взять за пример комповый блок питания. То черный провод это GND (кстати, земляной провод традиционно окрашивают в черный цвет), а красный это +5, будет нашим Vcc. Если ты собираешься запитать микроконтроллер от батареек, то минус батареек примем за GND, а плюс за Vcc (главное чтобы напряжение питания с батарей было в заданных пределах для данного МК, позырь в даташите. Параметр обычно написан на первой странице в общем описании фич:
• Operating Voltages
–1.8 - 5.5V (ATtiny2313V)
–2.7 - 5.5V (ATtiny2313)
• Speed Grades
–ATtiny2313V: 0 - 4 MHz @ 1.8 - 5.5V, 0 - 10 MHz @ 2.7 - 5.5V
–ATtiny2313: 0 - 10 MHz @ 2.7 - 5.5V, 0 - 20 MHz @ 4.5 - 5.5V
Обрати внимание, что есть особые низковольтные серии (например 2313V низковльтная) у которых нижня граница напряжения питания сильно меньше. Также стоит обратить внимание на следующий пункт, про частоты. Тут показана зависимость максимальной частоты от напряжения питания. Видно, что на низком напряжении предельные частоты ниже. А низковольтные серии раза в два медленней своих высоковольтных коллег. Впрочем, разгону все процессоры покорны ;))))) Читать полностью
Основы на пальцах. Часть 4
Автор DI HALT
Опубликовано 12 июля 2008
Рубрики: Начинающим
Метки: Аналог, Основы, Типы выходов, Цифра
Делятся они на цифровые и аналоговые. Для начала кратко пробегусь по цифровым микросхемам.
Миром правит цифра!
Краеугольным камнем цифровой схемотехники служит понятие нуля и единицы, понятие это совершенно условное, т.к. фактически нет никакого нуля и нет никакой единицы, есть лишь уровни напряжения – высокий и низкий, а также некий порог после которого данный уровень напряжения принято считать высоким или низким. Скажем все, что ниже 0.7 вольт считаем за низкий уровень, т.е. 0, все что выше 2.4 вольт высоким, т.е. единица. Между 0.7 и 2.4 вольта, когда не ясно какой уровень, это состояние совершенно неопределенное его нельзя оценивать как входную величину, иначе на выходе системы в таком случае будет непредсказуемый результат.
Сопротивление входов очень высокое, практически можно считать его бесконечным.
Выход в микросхеме бывает разных типов. Различают push-pull и open drain (в нашей литературе его называют Открытым Коллектором или ОК). Отличие заключается в способе выдачи сигнала на выход. В Push-Pull выходе когда нужен низкий уровень, то выход тупо и беспрекословно замыкается на землю, имеющую нулевой потенциал, а когда высокий, то на напряжение питания.
В открытом коллекторе все несколько иначе. Когда нам надо получить низкий уровень, то мы сажаем ногу на землю, а вот высокий уровень получается подтягивающим резистором (pullup), который, в отсутствии посадки на землю и большого сопротивления висящей на выходе нагрузке, заводит на ногу высокий потенциал. Тут можешь вспомнить закон Ома и посчитать какое будет напряжение выхода на открытом коллекторе если подтягивающий резистор обычно порядка 1КилоОм, а сопротивление входа больше 1МегаОм. Тип выхода определяется из документации на микросхему, некоторые микрухи имеют программируемый выход, например, все контроллеры AVR. Исходя из этого становится понятен смысл регистров Port и DDR в контроллере AVR – они определяют тип выхода Open Drain+PullUp, Push-Pull или просто Open Drain.
AVR. Учебный курс. Устройство и работа портов ввода-вывода
Автор DI HALT
Опубликовано 11 июля 2008
Рубрики: AVR. Учебный курс
Метки: AVR, I/O, Интерфейс, Начинающим, Порт
С внешним миром микроконтроллер общается через порты ввода вывода. Схема порта ввода вывода указана в даташите:
![]() |
Но новичку там разобраться довольно сложно. Поэтому я ее несколько упростил Читать полностью
AVR. Учебный курс. Архитектура.
Автор DI HALT
Опубликовано 10 июля 2008
Рубрики: AVR. Учебный курс
Метки: AVR, Микроконтроллер
Итак, камрад, прежде чем ты начнешь работать с контроллером, то неплохо бы тебе узнать что у него внутри.
Поэтому дам тебе краткий ликбез по архитектуре контроллера AVR.
| Архитектура AVR |
А теперь чуть подробней о каждом.
ALU занимается всеми операциями процессора, сложениями, вычитаниями, сдвигами и прочим. Это математическое ядро контроллера. Операнды на вход ALU поступают из регистров общего назначения (РОН), а результат появляется на шине и обрабатывается в соответствии с текущей командой.
Блок регистров (РОН), он же регистровый файл. Это пачка из 32 ячеек памяти по 8 бит каждая. Отличаются самой быстрой скоростью работы, а также с ними производятся почти все процессорные операции. В AVR регистры нумеруются от 0 до 31, причем первая половина регистров (R0-R15) весьма кастрированная от природы и ряд очень нужных и удобных команд (например засылка непосредственных данных в регистр командой LDI) не хочет работать. Вторая половина регистров полнофункциональна, но надо помнить, что регистры с R26 по R31 являются так называемыми индексными регистрами. Это 16ти разрядные X,Y,Z регистровые пары (X=R26:R27, Y=R28:R29, Z=R30:R31), служащие для адресации памяти в некоторых командах. Читать полностью





