Делегаты, сигналы и слоты.

Как известно, в C++ делегатов нет. А жаль.
Впринципе, в интернете много делегатов. И слотов много. Но, я зачем-то решил написать свои.

Благодаря механикам: официальной — variadic templates и неофициальной — horrible_cast реализация делегатов оказалось компактной, хотя, у нее, возможно и будут проблемы с переносимостью (не зря же у нормальных людей в реализациях трёхэтажная шаблонная магия и двухэтажная препроцессорная).


Читать дальше
  • +3
  • 09 декабря 2015, 11:48
  • Mirmik
  • 1

чарлиплексинг: 12 светодиодов на 4 ножки без регистрации и СМС

AVR
перепало мне задание сделать из подножного корма простенькое устройство, дающее на выходе определенную частоту, её выбирает пользователь (одну из десяти заранее заложенных) и соответственно как-то нужно показать какая частота сейчас выдаётся. Была найдена жменя светодиодов, кварц и мега48, ну и дабв не скучно было городить было принято решения придумать проблем на свою ж какое-то забавное техническое решение.
Для подключения 12 светодиодов нужно:
а) 12 ножек контроллера и 12 резисторов
б) соединить в группы по 4 лампочки катодами или анодами(в зависимости от религиозных убеждений)и потратить 7 ножек и 4 резистора
в) приколоться и соединить их как на рисунке ниже, потратив 4 ножки контроллера и 4 резистора номиналом в два раза меньше обычного(я брал по 500 ом, но должно работать и с меньшими)



Читать дальше

Новая Atmel Studio 7 импортирует код из Arduino IDE в один клик

AVR
Бывшая AVR Studio теперь позволяет разработчикам Arduino быстро преобразовывать свои скетчи созданные в среде Arduino в полноценные C++ проекты, например для отладки в симуляторе или в железе (вот только JTAG отладчик обойдется минимум в сто баксов).

Поддерживаются платформы AVR и ARM, а также ардуино платы. Причем все — даже те которые вы сами сделали и добавили в Arduino IDE (но только AVR-based).

Новая студия сделана на основе Visual Studio Isolated Shell 2015, поэтому она не устанавливается в Windows XP.
После установки студия занимает на диске 888Mb, причем из них 365Mb занимают примеры кода которые можно не устанавливать (Atmel Software Framework — библиотека свободного исходного кода с 1600 примерами проектов)
Также некоторое место займет .net framework 4.6, если он еще не был установлен.

Может быть со временем на Atmel Studio перейдет большая часть продвинутых ардуинщиков?
Дебажить логику в симуляторе седьмой студии — одно удовольствие.
Ардуинщиками теперь можно быстро увидеть в какие ассемблерные инструкции превращается код и что можно оптимизировать.

Стоит заметить что функция импорта проектов Arduino IDE только односторонняя и пока что сырая, скетч состоящий из нескольких файлов импортировать пока что не умеет.
Интеграция работает начиная с 1.6.5 версии Arduino IDE. Если у вас поля выбора платы и девайса пустые — значит нужно обновить версию Arduino IDE.
Как вариант обхода этого ограничения — можно написать консольную программу, чтоб она все ino файлы склеивала в один большой ino файл, предназначенный специально для импорта в студию. Заодно эту программу можно доработать, чтобы оно потом автоматически подтягивало изменения из С++ проекта назад в ардуиновский проект. Думаю написать такую утилиту.

Ссылка для скачивания: Atmel Studio 7

Код для водонагревателя. С 19-й попытки.

Итак мой первый быдлокод, который, как ни странно, работает.
Всё про эту портянку я написал в комментариях к коду.
Так как на небольших разрешениях мониторов на сайте не очень удобно читать, выкладываю отдельно файл .c в zip-папке.
«Эта мой первый проэкт, так что не ругайте сильно...» — это не про меня. Наоборот, хочу тонны критики, по структуре, по оформлению — по всему. Хочу делать хорошо, так что жду наставлений отцовским тоном.


Читать дальше

О размерности данных в программах для микроконтроллеров

Для начала предисловие. Я не программист, и все знания приобрел в процессе решения технических задач. Поэтому для меня до сих пор банальные для других вещи становятся как открытие. В институте изучал Fortran 77, после появления персонального компьютера начал осваивать Си для AVR. Сейчас осваиваю STM32. Программы под Windows пробовал писать( пару примитивных по нужде, подгрядывая в интернете как это делается). В результате я понял, что мне больше подходит низкоуровневое программирование (когда понимаешь процессы, которые происходят). Для большего утоления информационного голода не хватает знаний как работают компиляторы. В сети практически нет информации об этом (или я не правильно поисковый запрос формировал). Теперь про суть.

Читать дальше

Отладка программ для AVR через виртуальный COM порт Proteus

Всем привет. Заранее боясь прослыть некромантом, представляю краткую заметку о способе отладки программ для микроконтроллеров avr, использующих связь с компьютером или другим мк через uart. Предназначен для тех, кто о нем не знает, на революционность не претендую.


Читать дальше
  • +3
  • 06 июня 2015, 02:42
  • XOR

VinxFS - Самая маленькая файловая система FAT32 для AVR

Скачать одним файлом тут: github.com/vinxru/VinxFs/archive/master.zip
Смотреть на GITHUB: github.com/vinxru/VinxFs

Неоднократно читал на форумах, что люди ищут небольшую программу, которая бы позволяла работать с файловой системой FAT16/32. И многие выбирают Petit FatFS, потому что она работает даже на ATTiny. Но понимают через некоторе время, что она не умеет увеличивать размер существующих файлов. Приходится заранее создавать большие пустые файлы. А об удалении, создании, перемещении файлов или папок можно даже не думать.

Я предлагаю (безвозмездно) переработанную версию этой библиотеки. Это самая маленькая файловая система FAT16/FAT32 написанная на Си, умеющая создавать, изменять размер и удалять файлы. А так же переименовывать и переносить файлы и папки.


Читать дальше

Генерация синуса 50 Гц на AVR. Макетирование.

Начало здесь.

Руки чесались проверить идею, поэтому решил быстро собрать макет из подручных материалов. Генератор импульсов прошил в старую макетку с ATMega168PA:



Исходник и вспомогательная таблица есть в первой части статьи.

UPD: Осциллограммы!


Больше картинок!

Avrdude, Flowcode и Arduino Leonardo.

Всем снова привет! Недавно начал пользоваться программой Flowcode v5. Мне она по нраву, можно наглядно посмотреть о чем ты думаешь, складывая алгоритм по кирпичикам. Написать простую программу можно за 5 минут. Подробно о программе тут: Визуальное программирование
Используя эту программу за две недели сделал пару проектов используя для отладки китайскую макетку на Atmega 32, программировал кристалл при помощи USB BASP Подробнее и Khazama AVR Programmer Подробнее. Все бы ничего, если бы на работе не притащили ARDUINO Leonardo Подробнее. Слышал об этом устройстве не раз, но никогда с ним не работал, да и знакомых работающих на ней нет. Полез на сайт, скачал родное IDE, доки и тд. Скажу сразу, родная IDE не понравилась. Решил использовать Flowcode, благо 5 версия поддерживает платы Arduino. И вот тут напоролся на грабли, плюс IDE от Arduino — загрузка скетча прямо из среды разработки в кристалл. А это ведь очень удобно. Изучив доки и программу, понял — что в Leonardo протокол AVR109, и загрузка программ идет по USB через вшитый bootloader. Arduino IDE использует AVRDUDE. Решено! Пробую встроить дудку во Flowcode v5. И тут началось самое интересное. Пошуршав интернет, сделав выводы, промучившись ровно 2 дня подключения железки к IDE Flowcode нашел такое, что при подключении ARDUINO Leonardo к USB с дровами подтянутыми из родной IDE мы видим виртуальный com порт № например 1. Используя дудку и этот порт залить откомпилированную программу не удастся. Для того что бы запрограммировать кристалл нам нужно пнуть плату в режим bootloader. Для этого нажимаем один раз ресет (если бут оригинал от итальянцев), у нас есть порядка 8 секунд, что бы пойти в диспетчер устройств и увидеть там номер виртуального com порта Arduino leonardo bootloader:
Теперь нам нужно скачать avrdude последней версии и закинуть в корневой каталог диска С.
После чего настраиваем Flowecode.

Читать дальше
  • +2
  • 11 марта 2015, 17:22
  • Jman

Генерация синуса 50 Гц на AVR

КдПВ
Я недавно в форуме чисто теоретически поднимал вопрос о бесперебойнике с чистым синусом.

А тут еще стабилизатор сгорел, от которого котел газовый запитан был, да с такими спецэффектами сгорел, что до сих пор запах горелой изоляции в кухне. Слава Богу, УЗО отработало, проводка выдержала, в общем, обошлось.

Так что теория постепенно начала превращаться в практику, но пока (на уровне идеи) с использованием железного трансформатора от сгоревшего UPS, коих у меня накопилось уже много.

UPD: Добавил пару картинок


Читать дальше