3D LED глобус

12 years ago….
Давным давно… в далёкой галактике….. ))) Ну… в общем не так уж и давно, всего-то лет 12 назад, жил был мальчик, в небольшом БАМовском посёлке :) Все нормальные мальчишки в его возрасте, интересовались девченками и сигаретами :) но он напротив — целыми днями просиживал дома, за куренем журнала ЮТ или «Техника Молодежи»…. Рос не особым батаном, но и разгильдяем уж таким тоже не был.. в общем так… нормальный, поселковый сорванец :)

И его всегда интересовали всякие там игрушки (механические, с электроприводом естественно ), руки так и чесались у него что-нить раскурочить — авось что-нить вкусненького найду? Так вот…. Попалось ему на глаза, в одной передаче (по моему «спокойной ночи малыши») одна интересная весч…Там был показан концепт типа — «планета с бегущей строкой вокруг неё»

Мальчик был потрясён до глубины души! Ещё бы! Это же почти голограмма!!! Живое воплощение любимых фантастических фильмов в стиле Звёздных войн!

Итак, была поставлена цель — сотворить такую же штуку любыми, доступными уму и телу, способами :) И вот что в итоге вышло (далее…)

Read More »

AVR. Учебный Курс. Программирование на Си. Атомарные операции.

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

Сейчас я одним маленьким примерчиком это утверждение зарою в землю, а сверху накрою могильной плитой.

Итак, есть у нас такой код (не ищите в нем практического смысла, я его просто как пример работы с разными операндами написал):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
volatile char flag_byte; 	
/*Просто флаговая переменная, на разные случаи жизни. Разные события там 
выставляют флажки, опираясь на которые потом работает логика программы. 
Один из способов организации псевдомногозадачности. Когда у нас главный цикл 
анализирует флажки и делает переходы на подпрограммы, а вызов подпрограмм 
осуществляется не напрямую, а установкой соответствющих флажков. Своего 
рода диспетчер переходов. О такой архитектуре я скоро расскажу)*/
 
ISR (USART_RXC_vect)	// Обработчик прерывания, самый обычный.
{
flag_byte|=1< <rcv_buff;
...
...
}
 
int main (void)		// Главная программа
{
INIT_ALL();
SEI();
...
...
...
TCCR0A  	|=1<<WGM01;
...
flag_byte 	|=1<<options;
...
PORTB 	&=~(2<&lt;1);
...
}

(далее…)

Read More »

Мистер ремонт

Сдохла тут у меня стиральная машина. Вятка Автомат 16, если кто еще помнит этот гроб. Лет 16 проработала отлично, а тут ее переклинило. Судя по симптомам накрылся командоаппарат.

Если кто не в курсе, то командоаппарат это пра-пра-дедушка микроконтроллеров. Маленький моторчик через редуктор крутит вал с выступами, а он замыкает или размыкает контакты. Электромеханическая шарманка.

Система надежная, дубовая, но не вечная — сдохли контактные группы в шарманке, мелодия стирки прервалась. Погуглил и нарыл циклограмму программы стирки для Вятки-16 где буквально посекундно было расписано когда и какой контакт замыкается. Чтож, где наша не пропадала!

Все просто, мега8, несколько буфферов ULN2003 и десяток релюшек, а также пультик с индикатором и парой кнопок. За вечер, под пиво, была собрана вот такая конструкция:

(далее…)

Read More »

Скоростной AVR USB программатор на FT232RL без вспомогательного контроллера

При работе с микроконтроллерами важнейшим девайсом являетя программатор, именно он может залить в МК нашу программу. Он же часто становится камнем преткновения на пути освоения AVR.
 

Дело в том, что для работы простейшего программатора, не требующего в своем составе микроконтроллера, нужен компьютер с COM или LPT портом, причем желательно с частотой процессора не выше гигагерца-двух. Да операционную систему подревней — WinXP или Win2K. А это ныне редкость.
 

С другой стороны, для USB программаторов нужно предварительно прошить контроллер. А чем его прошить? Вот тут и возникает проблема курицы и яйца — как прошить контроллер программатора не имея программатора.
 

Не так давно появилось решение позволяющее сделать надежный и быстрый USB программатор AVR на базе тупой, непрограммируемой, логики.
 

Bitbang, что это такое и с чем его едят
Это не что иное как прямое управление выводами какого либо порта. В COM порт можно отправить байт через какой либо высокоупровневый API и он просто выйдет через линию TX потоком стандартого RS232 сигнала.
А можно достучаться напрямую до регистров отвечающих за состоянием каждого пина порта и дрыгая их как нам угодно сэмулировать через тот же COM порт не только RS232, но и SPI, I2C или Dallas 1-wire, HD44780 протокол, применив простейший тупой обвяз. Это и будет битбанг.
 

В старых программаторах вроде SiProg (PonyProg) или в схеме Громова так и было сделано с COM портом. И работало надежно и стабильно. Но, увы, СОМ порт ушел в небытье, а при попытке сделать то же самое с виртуальным COM портом на конвертере USB-RS232 ничего не получалось. Т.к. заточен он был все же на работу нормального COM порта, а для битбанга приходилось извращаться. В результате такие схемы либо не работали вовсе, либо работали ОЧЕНЬ медленно, прошивая контроллер за час-полтора, что ни в какие ворота не лезет.
 

Все изменилось с появлением микросхемы конвертера USB-UART FT232R у которой стал доступен битбанг режим не через виртуальный COM порт, а напрямую через драйвер FTDI. И вот тут наступила нирвана.
 

За битбанг там отвечает 8 выводов. Вот их раскладка.

 
В даташите ее нет, но она есть в аппликухе Application Note AN_232R-01 for the FT232R and FT245R Bit Bang Modes
 

В результате, из одной только FTDI получается первоклассный скоростной программатор, прошивающий 16кб прошивки за 10-12 секунд и это вместе с верификацией!!!
 

А из деталей надо ТОЛЬКО микросхему FT232RL, два конденсатора на 0.1uF и гнездо USB. ВСЕ! Ну и проводочки естественно.
 

Схема включения получается следующей:

(далее…)

Read More »