Виртуальная машина и байт код

Автор DI HALT
Опубликовано 19 Фев 2010 
Рубрики: Робототехника
Метки: , ,

Часто требуется делать большие последовательности сложных операций — например полетное задание для робота. Да, можно запихать все это дело в основную программу, но вдруг что то пойдет не так как надо и алгоритм надо будет переделать — придется переделывать всю программу.

Тут на помощь придет виртуальная машина. Суть в чем — в памяти контроллера, в основную программу, занесены основные процедуры управления устройством. Если это робот, то это могут быть такие простые команды как “вперед”, “назад”, “повернуть” и так далее.

Дальше мы увязываем это все в таблицу переходов, где у каждой команды будет номер-смещение.

Потом нам нужен обработчик скриптов, который бы брал откуда нибудь, нашу последовательность действий — скрипт и преобразовывал это в вызовы реальных кусков кода -микрооперации.
Обработчик скриптов может быть той же самой задачей диспетчера, запущенной фоном. А откуда он будет брать данные неважно. Их вполне можно засасывать по usart или тащить из EEPROM памяти. А можно загнать на IIC память и получится сменный картридж :)
Читать полностью

Комментариев (79)

AVR. Учебный Курс. Работа на прерываниях

Автор DI HALT
Опубликовано 19 Фев 2010 
Рубрики: AVR. Учебный курс
Метки: , , ,

Одним из серьезных достоинств контроллеров AVR является дикое количество прерываний. Фактически, каждое периферийное устройство имеет по вектору, а то и не по одному. Так что на прерываних можно замутить кучу параллельных процессов. Работа на прерываниях является одним из способов сделать псевдо многозадачную среду.

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

Для примера покажу буфферизированный вывод данных по USART на прерываниях.

В прошлых примерах был такой код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Отправка строки
void SendStr(char *string)
{
while (*string!='\0')
	{
	SendByte(*string);
	string++;
	}
}
 
// Отправка одного символа
void SendByte(char byte)
{
while(!(UCSRA & (1<<UDRE)));
UDR=byte;
}

Данный метод, очевидно, совершенно неэффективен. Дело в том, что у нас тут есть тупейшее ожидание события — поднятие флага готовности USART. А это зависит, в первую очередь, от скорости передачи данных. Например, на скорости 600 бод передача каких то 600 знаков будет длиться 9 секунд, блокируя работу всей программы, что ни в какие ворота не лезет.

Как быть?
Читать полностью

Комментариев (26)

SinaProg — графическая оболочка для AVRDude

Автор DI HALT
Опубликовано 16 Фев 2010 
Рубрики: AVR. Учебный курс, Софт
Метки: , , ,

Вот уже много лет я пользуюсь мощнейшей программой для прошивки — avrdude. Программа эта поддерживает почти все виды программаторов, а те что не поддерживает изначально легко в нее добавляются.
Но есть у ней особенность которая сильно отпугивает многих — она консольная. И все шаманства с ней заключаются в формировании командной строки.

С одной стороны это хорошо — консольная утилита позволяет очень сильно ускорить и автоматизировать процесс прошивки. Один раз написал батничек и для перешивки только вызывать его и все.

Остается проблема прошивки разных устройств, ведь под каждую придется делать свой батник. И ладно бы ключи прописать, да файл с прошивкой указать. Самая засада начинается с fuse битами (впрочем, как и везде в мире AVR ;) ) Тут их надо вначале внимательно проштудировать в даташите, выписать в виде байтов, вписать правильно в командную строку и молиться на то, чтобы нигде не ошибиться.
Да, для avrdude написано много оболочек, но все что мне встречались раньше решали лишь малозначительную проблему выбора нужного ключа файла и/или программатора, а фузы также было надо указывать числом.

Проблема решилась с появлением новой версии оболочки SinaProg от команды программистов-террористов из Аль-каиды иранских AVR программеров.

Читать полностью

Комментариев (32)

Датчик Холла

Автор DI HALT
Опубликовано 14 Фев 2010 
Рубрики: Начинающим
Метки: , , ,

Есть такой интересный эффект — если через квадратную проводящую пластину гнать постоянный ток, а саму пластину пронизать магнитным полем, чтобы линии индукции проходили через ее сечение, то летящие по пластине электроны отклоняются силой Лоуренса.

А раз так, то с одного края электронов будет больше чем с другой. Возникает разность потенциалов, то есть напряжение. И чем больше ток и сильней поле, тем большая разность будет. Это и есть эффект Холла.

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

Комментариев (71)

Эндрю Таненбаум “Операционные системы. Разработка и реализация”

Автор DI HALT
Опубликовано 07 Фев 2010 
Рубрики: Книги

Автор:Эндрю Таненбаум
Название:Операционные системы. Разработка и реализация
Издательство:Питер
Описание: 
 Давненько я не выкладывал полезных книжек. Надо исправляться.
Итак, раз уж начал задвигать на тему программирования, то нельзя забыть такого автора как Эндрю Таненбаум.
Программисты про него и так знают — как никак это один из классических авторов, а его труды детально расписывают принципы построения операционных систем. Причем описывается это все буквально на пальцах, на упрощенных аналогиях. Впрочем, примеров на Си тоже хватает. Местами занудновато и многое к нашей области не применимо, но для общего развития совершенно не помешает. Книжка из серии обязательных к прочтению. Скачать!

Комментариев (13)

Монтаж плат с SMD компонентами с помощью паяльной пасты и фена.

Автор vvzvlad
Опубликовано 03 Фев 2010 
Рубрики: Радиолюбительские Технологии
Метки: , ,

Когда в единственный нормальный магазин в городе, чуть ли не на заказ, привезли паяльную пасту, я был за ней первый в очереди :)
Давно уже хотел полностью перейти на SMD, как наиболее ленивую технологию — дырки сверлить лень и была паяльная станция LINKO 850, китайский клон незнаю чего (Ну, судя по стилю написания логотипа, косят они все под HAKKO =) Своего рода Adibas =) прим. DI HALT), пока использовавшаяся только для демонтажа. Мосфеты ей с материнок выковыривать — милое дело. Паста у меня была BAKU BK-30G (У меня такая же грязюка есть. Мерзкая вещь, но паять ей прикольно. прим. DI HALT) Читать полностью

Комментариев (64)


Материалы сайта являются авторскими. Копирование и публикация материалов без активной ссылки на первоисточник запрещено.

Реклама: