Что такое ШИМ и как он работает я особо подробно расписывать не буду, информацию без труда найдёте на просторах интернета. Коснусь лишь общих понятий. ШИМ — это Широтно-Импульсная Модуляция, (по-английски PWM — Pulse Width Modulation) уже из самого названия ясно, что здесь что-то связанное с импульсами и их шириной. Если изменять ширину (длительность) импульсов постоянной частоты, то можно управлять, например, яркостью источника света, скоростью вращения вала электродвигателя или температурой какого-либо нагревательного элемента. Обычно, именно с помощью ШИМ микроконтроллер управляет подобной нагрузкой. Микроконтроллеры имеют аппаратную реализацию ШИМ, но, к сожалению, количество аппаратных ШИМ-каналов ограничено, например, в AТmega88 их аж шесть штук, в ATtiny2313 — четыре, в ATmega8 — три, а в ATtiny13 только два. В AVR ШИМ-каналы используют таймеры и их регистры сравнения OCRxx. Изменяя их содержимое и задавая параметры таймеров, в зависимости от задач, можно управлять состоянием, связанного с регистром, выхода — подавать на него 1 либо 0. То же самое можно организовать программно, управляя любым выводом контроллера, а главное, реализовать большее количество ШИМ-каналов, чем имеется на борту аппаратных. Практически, количество каналов ограничено лишь количеством ножек-выводов микроконтроллера (по крайней мере, если говорить о семействах Mega или Tiny). Как оказалось, алгоритм довольно прост, но у меня ушло некоторое время на его понимание и полное осознание.
Читать полностью »
Рубрика «avr» - 17
Многоканальный программный ШИМ в AVR
2012-09-26 в 9:36, admin, рубрики: arduino, avr, PWM, Программинг микроконтроллеров, метки: avr, PWM, шимПрошиваем AVR вручную
2012-09-24 в 3:38, admin, рубрики: avr, diy или сделай сам, SPI, ловкость рук, Программинг микроконтроллеров, прошивка, троллейбус из хлеба, метки: avr, SPI, ловкость рук, прошивка, троллейбус из хлеба
Картинка для привлечения внимания — xkcd
Представьте себе, что вы попали на необитаемый остров. И вам жизненно необходимо запрограммировать микроконтроллер. Зачем, спросите вы? Ну, допустим, чтобы починить аварийный радиомаяк, без которого шансы на спасение резко падают.
Радуясь, что еще не забыли курс ассемблера, вы кое-как написали программу палочкой на песке. Среди уцелевших вещей каким-то чудом оказалась распечатка документации на контроллер (хорошо, что вы еще не успели пустить её на растопку!), и программу удалось перевести в машинные коды. Осталась самая ерунда — прошить её в контроллер. Но в радиусе 500 километров нет ни одного программатора, не говоря уже о компьютерах. У вас только источник питания (батарея из картошки кокосов) и пара кусков провода.
Как же прошить МК фактически голыми руками?
Читать полностью »
Сравнение эффективности компиляторов для Amtel AVR
2012-09-17 в 6:32, admin, рубрики: arduino, avr, bascom, Программинг микроконтроллеров, метки: arduino, avr, bascom, c++, ассемблер В статье habrahabr.ru/post/151544/ и комментариях к ней возник вопрос, почему разные компиляторы выдают код не только разного размера, но и разной эффективности. Если с первым фактором еще можно мириться, то второй может свести все ваши усилия в написании программы на нет. Это на PC еще можно добавить памяти до 32 Гб и поставить 16 ядерный процессор на 10 ГГц, чтобы косынка на NET8.0 не тормозила, а embedded система — девица более изысканная и утонченная.
Итак, сравниваем компиляторы:
1. BASCOM-AVR
2. Wiring
3. С CodeVisionAVR.
Читать полностью »
Сравнение эффективности компиляторов для Atmel AVR
2012-09-17 в 6:32, admin, рубрики: arduino, avr, bascom, Программинг микроконтроллеров, метки: arduino, avr, bascom, c++, ассемблер В статье habrahabr.ru/post/151544/ и комментариях к ней возник вопрос, почему разные компиляторы выдают код не только разного размера, но и разной эффективности. Если с первым фактором еще можно мириться, то второй может свести все ваши усилия в написании программы на нет. Это на PC еще можно добавить памяти до 32 Гб и поставить 16 ядерный процессор на 10 ГГц, чтобы косынка на NET8.0 не тормозила, а embedded система — девица более изысканная и утонченная.
Итак, сравниваем компиляторы:
1. BASCOM-AVR
2. Wiring
3. С CodeVisionAVR.
Читать полностью »
Поддержка C++ на avr в gcc
2012-08-16 в 7:25, admin, рубрики: arduino, avr, c++, Программинг микроконтроллеров, стандарты, метки: avr, c++, стандарты Компилятор avrgcc поддерживает C++, однако в его поставку не входит ни стандартная библиотека, ни реализация ABI: служебных функций, вызовы которых вставляет сам компилятор. В результате люди пытаются реализовать те части, которые им нужны, самостоятельно и зачастую делают это не очень хорошо. Например, часто предлагается отстрелить себе ногу определив пустую функцию __cxa_pure_virtual(void) {} или подложить себе грабли, написав заглушки для __cxa_guard_acquire, __cxa_guard_release и __cxa_guard_abort. В данной статье я предлагаю разобраться, чего не хватает для счастья, где это взять или как написать.
Я знаю, что немло людей считает, что C++ на микроконтроллере не нужен. Их я прошу прочитать последний раздел статьи перед тем, как писать комментарии.Читать полностью »
Использование библиотек QSerialDevice и QWT для организации коммуникации с контроллером и отображения данных
2012-08-13 в 21:14, admin, рубрики: arduino, avr, com-порт, diy или сделай сам, qt, Qt Software, QWT, Программинг микроконтроллеров, метки: arduino, avr, com-порт, Qt, QWT
В продолжение своей статьи «Простой электронный самописец» хочу поделится опытом создания терминала для сообщения с разработанным мной девайсом на основе библиотек QSerialDevice и QWT, ну и естественно QT. QSerialDevice работает с любым COM-портом (реальным или виртуальным) определенным операционной системой, поэтому не имеет значения каким способом контроллер подключен к ПК: непосредственно через адаптер UART->RS-232(MAX-232), через адаптеры UART->USB(FT-232, CP2101) или UART->Bluetooth(BTM-222), также можно, например, подключить Arduino-совместимое устройство (адаптер UART->USB уже напаян на плату). QWT же — мощное средство отображения данных. Их общий плюс — кроссплатформенность, это же QT, достаточно скомпилировать коды под нужной платформой — и все работает! Так что, кому интересно, прошу под кат!Читать полностью »
А мне летать охота, или как протестировать узлы квадрокоптера без аппаратуры радиоуправления
2012-07-13 в 12:49, admin, рубрики: avr, avr-usb-mega16, DIY, diy или сделай сам, квадрокоптер, метки: avr, avr-usb-mega16, DIY, квадрокоптерНачитавшись статей на Хабре про квадрокоптеры, и насмотревшись видео на YouTube, захотелось и мне сделать квадрокоптер.
Заказал я в чудесном китайском магазине деталек, за основу брал список из этой статьи. К сожалению, в том магазине отсутствовала радиоаппаратура, да и опыта покупок на такие суммы у меня пока что не было, поэтому заказ состоял только из пропеллеров, аккумуляторов, двигателей, контроллеров к ним (ESC) и главного контроллера.
Приехало все достаточно быстро — менее двух недель (из Гонконга в Киев). Сразу после этого заказал в другом магазине радиоаппаратуру и разную мелочь.
Раму я сделал из подручных материалов (квадратной алюминиевой трубы из местного строительного магазина), разместил на ней двигатели с контроллерами. И захотелось мне их испытать — вдруг бракованые есть. Инструкция к ESC говорила о том, что нужно подключить к ним один из каналов от радиоуправления. Но радиоуправление приедет не раньше чем через полторы недели…
Читать полностью »
Макетная плата MAT90USB162 с аппаратным USB, ЦАП, внешним АЦП и 32Mb DataFlash
2012-06-18 в 12:19, admin, рубрики: avr, diy или сделай сам, макетная плата, прототипирование, Электроника для начинающих, метки: avr, макетная плата, прототипированиеПривет!
Хочу представить дипломный проект, который плавно перерос в мелкосерийное производство.
Собственно это Open Source платы для протипирования на базе AVR AT90USB162 с аппаратным USB.
Плата предназначена для начинающих и основной упор делается на изучение периферии UART, SPI, 1-wire.
Механический дисплей на AVR с нуля. Часть 1: плата дисплея
2012-05-29 в 15:54, admin, рубрики: avr, diy или сделай сам, electronics, LED, Электроника для начинающих, метки: avr, diy или сделай сам, electronics, LED, электроника для начинающихИтак, продолжаем. Подробный разбор полетов, мои этапы рисования платы. Мало текста, много картинок. Если вам не интересна вся эта информация, но интересен результат, смело листайте вниз и забирайте рисунок платы в формате lay.
Продолжение темы
Механический дисплей на AVR с нуля. Часть 0: программатор(ы)
Читать полностью »
Механический дисплей на AVR с нуля. Часть 0: программатор(ы)
2012-05-28 в 17:03, admin, рубрики: avr, diy или сделай сам, electronics, LED, Электроника для начинающих, метки: avr, diy или сделай сам, electronics, LED, электроника для начинающих Спасибо ресурсу easyelectronics.ru и лично DI HALT, большинство информации черпал оттуда, здесь также будет проскакивать немного материалов с данного ресурса. Для того, чтобы избежать излишнего повторения, рекомендую начать именно с него, там понятным языком расписаны такие страшные слова, как FUSE-биты, ISP программирование или сдвиговый регистр. Предполагается, что читатель диванный теоретик обладает небольшой теоретической базой
Самое лучшее обучение – практика. Именно поэтому, когда я первый раз увидел статью про микроконтроллеры мне захотелось соорудить что-нибудь «эдакое». Первое, что попалось на глаза было видео: