AVR. Учебный курс. Архитектура Программ. Часть 3.

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

Приоритетный диспетчер.
Одной из проблем простого диспетчера является то, что все задачи имеют равный приоритет. С одной стороны, это просто и удобно. С другой — какое-либо важное событие можно прошляпить, пока там конвейер перещёлкает все задачи…

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

Если нужна высокоуровневая система приоритетов, то можно очередь задач превратить в двумерный массив, где вторым этажом будет идти приоритет задачи. Правда при этом увеличиться время обработки конвейера — ведь надо будет сперва прочесать всю очередь в поисках наибольшего элемента. Но тут можно напридумывать кучу оптимизаций. Например, сортировать очередь при постановке задачи на конвейер, либо завести TOP list приоритетов, занося туда значения приоритетов. Тогда диспетчер, обрабатывая очередь, сразу будет искать нужный элемент, ориентируясь по TOP листу. Но вот так, на вскидку, я не берусь сказать какой из приемов будет эффективней/компактней/быстрей.
Читать полностью

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

Паяльная станция Aoyue 950+

Автор Ved_kh
Опубликовано 30 Янв 2010 
Рубрики: Инструмент

DI HALT:
Накопилось у меня тут прорва чужих статей, присланных мне на сайт. Вот буду их потихоньку верстать и выкладывать.

Понадобилось достаточно плотно работать с SMD, да и чем дальше, тем больше попадается всякого мелкого. Вот и захотелось как-то упростить себе жизнь.

Фен как-то пока что без надобности, а вот паяльная станция, еще и чтобы с SMD было удобно работать - самое оно. Выбирать как-то долго и нудно не хотелось, выбирал из того, что можно было купить или заказать где-то поблизости.

Решил взять Aoyue 950+: термопинцет, да еще и с паяльником в комплекте.

Заказал, пару дней подождал, забрал.
Полностью черный корпус, тумблер питания, ручка регулировки температуры, да разъем под термопинцет и паяльник.
Сама конструкция очень сильно напомнила описанную ранее паяльную станцию Pro’sKit SS-217: такой же с виду паяльник, разъем под него и под термопинцет, такая же подставка от “фанатов бронепоездов”.

Итак, комплектация:

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

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

Sprint Layout 5. Подробное руководство.

Автор Sailanser
Опубликовано 29 Янв 2010 
Рубрики: Софт

DI HALT

Несмотря на простоту этой программы, меня часто просят написать по ней статью. Но мне все было некогда. Поэтому роль Капитана Очевидность взял на себя Sailanser. Выполнив этот титанический труд. Я лишь подкорректировал, да добавил кое где подробностей.

Всем наверно давно известна программа для изготовления печатных плат под названием Sprint-Layout, на данный момент последняя версия гордо именуется, 5.0

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

Как я и говорил, сама программа довольно проста, но имеет множество кнопочек и менюшек, помогающих нам в работе. Поэтому наш урок в рисовании платы разделим на насколько частей.
В первой части познакомимся с программой и узнаем, где и что в ней прячется. Во второй части нарисуем простенькую плату, которая будет содержать, к примеру, пару микросхем в DIP корпусах (причем эти микросхемы сделаем с полного нуля), несколько резисторов и конденсаторов, также посмотрим такую интересную фишку программы как Создатель макроса и сделаем с его помощью корпус микросхемы, например TQFP-32.
Также я покажу как обрисовать плату с картинки или фотографии. Читать полностью

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

Форум. Второе пришествие

Автор DI HALT
Опубликовано 26 Янв 2010 
Рубрики: Новости
Метки:

Самые нетерпеливые уже заметили что форум таки поднялся и даже не вешает сайт. Впрочем, старый форум один фиг не жилец. Дело в том, что последние два три месяца он начал адски глючить (да и раньше красотой кода не отличался, честно говоря) и грузить хостинг. В общем, Simple:Press Forum изначально был мертворожденным уродцем подходящим разве что для красоты. Не способен он работать на больших нагрузках (кто ж знал, что форум так резко разрастется, я то его вообще для галочки ставил :) )

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

По поводу переноса инфы со старого форума тут вопрос сложный. Дело в том, что найти конвертер к симпл прессу нам так и не удалось, а свой мы если и напишем, то далеко не скоро. Т.к. больших спецов по SQL у нас нету. Поэтому новый форум стартует с нуля. А старый через недельку и вовсе будет закрыт для редактирования, превратившись в статичный архив. Если у кого в старом форуме есть активная тема, то проще всего будет поднять такую же тему в новом форуме и связать их перекрестными ссылками. Мол “начало тут” & “конец там”.

Кроме того, есть 100МБ статичный архив сайта (и неслабого куска форума). С картинками и файлами, практически до последней записи. За эту радость спасибо Андрею Кузнецову.

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

Паяльник GOOT PX-201

Автор DI HALT
Опубликовано 24 Янв 2010 
Рубрики: Инструмент
Метки: ,

Долго гонялся я за этим агрегатом. С лета прошлого года. Наконец, под заказ, из Masteram мне его притащили. Почему именно он? Да люблю я этот паяльник, однажды на работе в руки попался с тех пор вот хочется иметь домой на всякий случай. Кстати, именно с него был слизан CT-96 и остальные клоны.

Итак, что из себя представляет GOOT PX-201.

Это отличный японский паяльник с регулировкой температуры и мощным (80Вт!!!) керамическим нагревателем. Читать полностью

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

Its Work?

Автор DI HALT
Опубликовано 23 Янв 2010 
Рубрики: Новости
Метки:

Запустились. Если что будет зеркало на гугле.

Пока все тихо :)

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

AVR. Учебный Курс. Архитектура Программ Часть 2

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

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

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

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

Благодаря такой системе управляющую структуру можно вынести в отдельную библиотеку, сварганить к ней конфиг и таскать за собой ее туда сюда. Очень удобно.

А теперь подробно распишу тот диспетчер который стоит в 90% моих проектов на Си.
Читать полностью

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

AVR. Учебный Курс. Архитектура Программ

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

Все учебные курсы по микроконтроллерам которые я встречал (в том числе, к сожалению, и мой ассемблерный, но я надеюсь это постепенно поправить) страдают одной и той же проблемой.
В курсе бросаются строить дом не заложив фундамент. Только показав на примере как мигнуть светодиодом, сразу же кидаются в периферию. Начинают осваивать ШИМ-ы, таймеры, подключать дисплеи и всякие термодатчики.
С одной стороны это понятно — хочется действа и результата мгновенно. С другой — рано или поздно такой подход упрется в тот факт, что программа, надстраиваемая без четкой идеологии, просто обрушится под своей сложностью. Сделав невозможным дальнейшее развитие.
Итогом становится либо рождение жутких программных уродцев, либо миллионы вопросов на форуме вида “а как бы мне все сделать одновременно, а то частоты контроллера уже на все не хватает”.

Самое интересное, что правильной организации программы учат программистов в ВУЗах, но вот только к микроконтроллеру народ обычно идет не от программирования, а от железа. А, как показала практика обучения в ВУЗе, электронщиков толковому программингу практически не обучают :( Приходится все додумывать самостоятельно.

Итак, что такое структура программы. Это, прежде всего, ее скелет. То какими путями движется код. Как организованы переходы между задачами прошивки. То как распределяется процессорное время. Без краткого ликбеза по общим принципам построения прошивки дальше двигаться нет смысла.

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

Итак, я для себя выделяю следующие структуры, по порядку возростания сложности конструкции и количеству управляющего кода:

А теперь подробно по каждому пункту: Читать полностью

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

AVR toolchain своими руками

Автор Nikita Nazarenko
Опубликовано 13 Янв 2010 
Рубрики: AVR. Учебный курс
Метки: ,

DI HALT:
В догонку к прошлому посту про AVR Studio в Linux досылаю и про сборку avr-libc там же. Вынесено из комментов к предыдущему посту. Спасибо Dark SavanT

Если есть возможность поставить готовый тулчейн из пакета, лучше воспользоваться ей.
преимущество самосборного в том, что все что надо, лежит там где сказано и не засоряет /usr/*. Но тут мы теряем автоматические обновления из пакетов. Короче, думайте сами, решайте сами.

Поехали!
В минимальной комплектации нам понадобятся:

для того, чтобы это все безобразие собралось, нужен установленный в системе gcc, bash, awk, binutils, libc, может что-то еще забыл.
Читать полностью

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

AVR Studio в Linux.

Автор http://devmind.livejournal.com/
Опубликовано 11 Янв 2010 
Рубрики: AVR. Учебный курс
Метки: , , ,

Печально, но факт, что Atmel штампует свое замечательное IDE только для семейства OS Windows. Поэтому пользователям Linux приходится по-всякому извращаться, чтобы заполучить себе на машину этот удобнейший инструмент разработчика. Существует два очевидных решения этой задачи. Первый - запускать студию в Windows, которая крутится на виртуальной машине (отдельную машину с Win не рассматриваем). Второй - запускать программу посредством Wine.

Первый способ хорош 100%-й совместимостью и полным отсутствием софтверных граблей. Железные же практически полностью висят на разработчиках виртуальных машин и обычно стремятся к нулю. Однако, виртуальная машина отжирает у хост-машины ценные системные ресурсы. Кроме того, стоит учесть, что налог на Windows не зависит от того насколько виртуальна машина, на которой бегает эта операционная система. Ну и окно-в-окне, особенно при неудачно реализованном механизме переключения между системами, удовольствия не доставляет. Если вас эти ограничения не смущают, это вполне себе вариант. В Википедии есть прекрасная сводная таблица виртуальных машин, которая может вам пригодиться.

Способ запуска программ (любых) посредством Wine - вполне себе самодостаточен. Стоит помнить, что проект постоянно развивается. Сегодняшний Wine не чета тому, который мне довелось пощупать при первом знакомстве. Сайт проекта: http://www.winehq.org/. Этот вариант распишу подробно.
Читать полностью

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

Ключ от всех дверей. Эмулятор ключей от домофона.

Автор Dlinyj
Опубликовано 10 Янв 2010 
Рубрики: Начинающим
Метки: , ,

Ты потерял ключи от домофона и не можешь сделать дубликат. Хочешь ходить в гости к подруге, но у тебя нет ключей от её подъезда. Либо просто тебе нужно подосрать твоему недругу, но ты не можешь попасть к нему в дом, тогда эта статья для тебя.

Пара слов о принципе работы…
Бытует мнение, что в таблетках от домофона находится магнит, и он открывает дверь. Нет, это не так. Таблетка представляет собой ПЗУ, с жёстко зашитым в ней ключом. Называется это ПЗУ - Touch Memory, марки DS1990A. DS1990A - это и есть марка домофонных ключей. Общается с домофоном по шине one-wire (однопроводной интерфейс). Эта шина разработана фирмой Dallas и позволяет общаться двум устройствам всего по одному проводу. Если устройство пассивное (как в нашем случае), то оно ещё и передаёт ему питание по этому проводу. Надо ещё заметить, что необходим ещё общий провод (чтобы цепь замыкалась), но, как правило, все земли устройств подключённых к этой шине соединены воедино. В ключе находится конденсатор на 60 пикофарад, который обеспечивает кратковременное питание ключа на момент ответа. Но ведущее устройство должно постоянно (не реже чем в раз 120 микросекунд) генерировать сигнал единицы, для зарядки этого конденсатора, чтобы ПЗУ в таблетке продолжало питаться.

Потроха таблетки. Как видно, никаких магнитов там нет!
Читать полностью

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

AVR. Учебный Курс. Программирование на Си. Работа с памятью, адреса и указатели

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

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

Итак, начну по порядку.
Инфа, любая инфа (команды, данные) лежит в памяти по ячейкам. У каждой ячейки есть порядковый номер — адрес.

Мы можем напрямую сказать процессору — возьми данные из ячейки с адресом 0xA0 и положи его в ячейку с адресом 0×11. Это будет прямая адресация. Здесь адреса 0xA0 и 0×11 содержатся напрямую в машинном коде. Это очень быстро, просто и не требует никаких дополнительных телодвижений. Один минус — адреса 0xA0 и 0×11 нельзя изменить, как мы их впишем в код, так они там и останутся.

Но может быть и другой способ. Когда у нас есть еще две ячейки памяти. Например, А и Б в которые мы предварительно положим числа 0xA0 и 0×11 соответственно. И тогда предыдущая операция будет выглядеть так.

Возьми число из ячейки адрес который лежит в А и положи в ячейку адрес которой узнаешь из Б.

Результат тот же, но возникло множество дополнительных телодвижений. Во первых положить первоначальные адреса 0xA0 и 0×11 в ячейки А и Б. Потом, при совершеннии операции, используая данные ячеек А и Б как адреса, взять уже оттуда нужные нам данные и совершить обмен.

Но прелесть вся в том, что при этом мы можем как угодно менять А и Б (ведь это такие же переменные как и любые другие) и они будут указывать на разные данные.

А один и тот же кусок кода становится универсальным. Он может работать с любыми данными адреса которых нам укажут переменные А и Б.

А сами эти переменные и будут указателями.
Читать полностью

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

Отладочная плата PinBoard v1.1

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

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

Итак, что мы имеем нового по сравнению с первой версией: Читать полностью

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


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

Реклама: