Реинкарнация быстрого и мелкого TCP-стека для LPC17xx
[info]rst7_cbsie
По многочисленным просьбам трудящихся выложил порт своего TCP-стека для контроллеров LPC17xx.

ВНЕЗАПНО стек оказался вполне быстродействующим - без особой оптимизации под таргет обеспечивает загрузку 100M-канала практически полностью при загрузке ядра в 43% (тактовая - 100МГц), что, в общем рекорд среди общедоступных в исходниках (и не только общедоступных) стеков для младших братьев, и очень мелким - общий объем по памяти кода не превышает десятка килобайт вместе со стеком и http-сервером, по ОЗУ - тоже копеечный расход, но это было известно еще со времен разработки этого стека на AVR.

Все лежит тут; там же происходит обсуждение среди заинтересованных участников профильного форума.

Похоже, что дискуссия будет развиваться вокруг одного холивара спора - bsd-style-дизайн программного интерфейса сокетов таки тру или есть более оптимальные способы. Ваш покорный слуга стоит на второй позиции и ратует за решение проблем в комплексе. Подробности - в теме на Электрониксе.
Метки: ,

ICFPC 2011
[info]rst7_cbsie
Как обычно, участвовали в ICFPC. Все материалы будем складывать в блог команды - http://thirteen.kharkov.ru/

Пока не знаю, напишу ли собственный отчет, ибо fun я, конечно, получил некислый, но... но... Посмотрим, короче.

Официальные результаты будут в сентябре.

PS Вот как, уже это так обыденно - "как обычно, участвовали ..."
Метки:

ICFP 2010 Programming Contest
[info]rst7_cbsie
Случился очередной ICFPC. Выступили мы на этот раз не очень удачно - 30е место. Подробности, как обычно, на http://thirteen.kharkov.ru/

Немного разгребусь с работой и тоже напишу в блог команды, сейчас, к сожалению, нет времени.
Метки:

Ламповая вонь ;)
[info]rst7_cbsie
Давно не брал я в руки шашек, да вот "у меня случилась вава" - решил помочь кое-кому в записи нескольких треков. Причем, сначала думал, что помощь моя будет чисто технической, но пришлось поработать и руками, немного подергав струны. С полочки была извлечена старая гитарная вонялка, деланная еще году в 93-94 и за несколько подходов к снаряду была доведена до звука, который мне стал нравиться.
Вонялка, как и положено в среде гитарастов, меряющихся своим ЧСВ и матеростью цепочки обработки - ламповая. Хотя, когда я ее делал в 90х, задача ставилась исключительно исследовательского характера.

Технические подробности и семплы )

ICFP 2009 Programming Contest - результаты
[info]rst7_cbsie
Пришла почта от оргов. У нас второе место. В общем - почти победа :)

Собственно отчеты Thirteen, послесобытийные исследования и прочее собраны тут - http://thirteen.kharkov.ru/

В ближайших планах - участие в очередном Sapka Contest.
Метки: , ,

ICFP 2009 Programming Contest
[info]rst7_cbsie
Итак, ICFP 2009 Programming Contest завершился. По результатам на 4 часа до окончания контеста наша команда занимает второе место. Однако, десять решений, попавших в десятку  лучших, организаторы еще будут тестировать на предмет универсальности, а не заточенности под конкретные исходные данные.

Я не буду рассказывать, что есть ICFPC (есть гугл), а попробую по горячим следам в двух словах описать ход нашей работы над проектом.
Читать дальше... )
Метки: , ,

Current-Mode Controller на рассыпухе.
[info]rst7_cbsie
Не так давно на electronix.ru обсуждалась тема изготовления дешевого БП 5-7Вт с входным напряжением 380AC. В этой теме быстро зацепились за вот такую схему:



Основная полемика пошла вокруг способа существования белковых тел принципа регулирования выходного напряжения. Оказалось, что это такой себе current mode controller аля классическая UC3843. Подробный разбор полетов интересующиеся могут прочитать на форуме по ссылке выше. Там же можно скачать модели, иллюстрирующие  нашу дискуссию.

У меня эта схема вызвала живой интерес в связи с тем, что в разработках часто требуется простенький step-down с входными напряжениями 9-30 вольт и небольшой нагрузкой - ну, скажем, до трех ватт. Причем, хочется приемлемый КПД. Особенно с учетом того, что часто нагрузка (различные микроконтроллерные устройства) в работе имеет весьма большой разброс по потреблению - то десяток-другой миллиампер, то все двести-триста-пицот по пяти вольтам.

Да и товарищ обратился с вопросом в ru_radio_electr - как сделать подобного плана источник

После некоторого моделязма в Microcap 9 у меня получилась вот такая поделка:



Собственно модель в Microcap 9

Из неотраженных в модели вещей - трансформатор прицелен на сердечник E16 из материала N87 с зазором 0.2мм.

КПД такой штуки - порядка 80-82%. При снятии нагрузки (или резком уменьшении) схема переходит в режим пропуска импульсов с сохранением высокого КПД. При выходном напряжении 5 вольт КПД повышается (в связи с тем, что уменьшается вклад падения напряжения на обратноходовом диоде в общие потери).


UPD: R21 желательно уменьшить до 22кОм, чем повысить частоту преобразования и уменьшить пульсации на выходе.

Анемометр из почти подручных средств
[info]rst7_cbsie
Задумал мой хороший друг поставить себе на участок ветроэлектростанцию. И для принятия решения понадобилось оценить, на какие скоростя ветра можно расчитывать. Попросил меня помочь с изготовлением анемометра из подручных (ну или почти подручных) материалов.

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

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

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

Ну и фотки....

Настольные работы по отладке софта.  Кусок белого ПВХ под датчиками с нарисованными равнобедренными треугольниками - полигон для первого испытания - "а можно ли вообще будет что-то получить"



Отладка продолжается при помощи вентилятора (сам датчик  можно поворачивать на куске ПВХ)



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






Ну и скриншоты со скады, на которых хорошо видно, что погода почти безветренная (средние значения - черная линия, красные - максимальные, синие - минимальные).




 


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

Вот такие пироги :) Ах да, измеряемые скорости до 25м/с.


Если вдруг кому-то нужен такой девайс, могу довести до ума.

Spirit-ON: TR24A – модуль трансивера 2.4GHz ISM-диапазона - часть третья (совсем маленькая)
[info]rst7_cbsie
Собственно ссылка на проект Sonny для испытания модулей

code.google.com/p/spiriton-tr24a-demo/ 

Ничего лишнего :) 

Spirit-ON: TR24A – модуль трансивера 2.4GHz ISM-диапазона - часть вторая (маленькая)
[info]rst7_cbsie
Итак, модули приехали. Завтра (возможно) начну включать.

Пока из изысканий товарища Sonny понятно следующее:

0. Оно работает ;)
1. Да, действительно, регистрами можно побаловаться и добиться дальностей порядка 100 метров на открытой местности (правда, не во всех направлениях)
2. В панельном доме 3хкомнатная кваритра полностью не накрывается. Что, в общем-то лично меня совсем не удивляет - бывают мертвые зоны и при куда более приличных мощностях.

Теперь план действий:

0. Поднять пару модулей в воздух - но это не проблема.
1. Интенсифицировать мозговые процессы в направлении придумывания протокола маршрутизации.
2. Подумать насчет моделирования второй платки поверх модуля, которая вкупе со штатным антенным хозяйством модуля будет представлять из себя полосовой фильтр на связанных резонаторах. При этом на второй платке установить SMB-разьем для подключения более вменяемой антенны. Есть, конечно, банальный вариант из журнала "Ламер" ;) - отрезать штатную антенну и припаять разьем.

Spirit-ON: TR24A – модуль трансивера 2.4GHz ISM-диапазона
[info]rst7_cbsie
Наши трейдеры начали поставлять интересные модули. Интересные, в основном, своей ценой - менее $3 в розницу. Даташиты, правда, кривые, но извлечь из них полезную информацию вполне возможно. Кстати,  дополнительную информацию можно покурить тут, тут и тут.

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

Кроме того, хотелось бы носить по сети обычные IP-пакеты (конечно, обернутые в необходимый MAC-уровень) - так проще обеспечивать стыковку с большими братьями.

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


PS Поиск в инете отзывов по этим модулям показал, что ребята ниасилили покрутить в нем регистр мощности передатчика для получения заявленных данных по дальности (кричат - 20 метров и пипец). По умолчанию в поле мощности передатчика (регистр 9) рекомендуют писать значения мощности передатчика 2 (AN012), а то и 3 (EM198810 Datasheet), но при этом, в технических характеристиках указанны результаты при значении этого поля, равном 0. Отсюда делаем вывод, какой патч необходимо применить ;)

Sapka - Контест для настоящих программистов
[info]rst7_cbsie
Наша команда победила в соревновании (причем, как в OverClock Round, так и в Main Round) Sapka Contest, хотя, скажем прямо, мои заслуги там невелики - зажигал, в основном San.  

Пока могу только дать ссылку на наш репозиторий - svn://avarie.org.ua/sapka login:guest pass:guest

Общие впечатления постараюсь изложить несколько позже. 

И для истории - ссылка на небольшой отчет о нашем участии в ICFPC2008, писанный Саном, и немного откомментированный мною.

Малокадровое телевидение
[info]rst7_cbsie
Проект разрабатывался специально для тех, кто думает, что для сжатия изображений алгоритмом JPEG нужны большие специализированные камни. Так вот - думают неверно. Всего-то AVR в инкарнации ATMega16, подходящий АЦП, микросхема статического ОЗУ на 128кБайт - и - вуаля :) Источником видеосигнала послужила обычная китайская камера для видеоглазков/домофонов. Конечно, разрешение невелико - 320*240, да и производительности хватает всего на 2 кадра в секунду.

Проект пробовали повторять, как ни странно - работает :)

К сожалению, примененный экстремально дешевый видео-АЦП от NXP оказался давно снятым с производства. Что, в общем, не мешает заменить его на другой. Но мысль моя неспешно крутится вокруг ожидаемых камней XMega - там намечается 2 АЦП, каждый, понятное дело, с производительностью 2Msps. Интересно, если я их в два раза оверклокну (до 4х, соответственно, 2 АЦП дадут 8Msps) - будет работать? Делаем ставки?

Ethernet
[info]rst7_cbsie
Уже давненько выкладывал на Электрониксе такой вот проект - экстремально дешевое решение по оэзернечиванию микроконтроллерных устройств.

Суть проста до боли - AVR с тактовой частотой 20МГц (да и 16 тоже) вполне успевает получать данные с микросхемы PHY-интерфейса на скоростях потока 10Мбит/с. Передавать, конечно, тоже успевает :) Цены на микросхемы PHY от Realtek просто подарочные - порядка $1.5 в розницу. Кроме того, очень порадовало потребление сего девайса - всего-ничего 50мА (это PHY и процессор на пару, конечно, не в момент передачи пакетов). По сравнению с таким решением 300мА, которые жрет ENC28J60, просто отстой :)

Есть у такого решения и недостатки:
  1. Работа с PHY должна иметь максимальный приоритет. Однако, при вменяемом кодировании, в паузы между тетрадами можно вставить, например, опрос USART - что и сделано мною в серийном изделии - мост Modbus over serial line - Modbus over TCP.
  2. Занято довольно много ножек у микроконтроллера. Но над этим вопросом я сейчас неспешно работаю - планируется, что в новой редакции будет использовано всего 7 ног - 4 ноги SPI-интерфейса, прерывание по уровню, и еще два дополнительных сигнала.

UPD - положу фотку первого макетного экземпляра и сюда:
 


Startup
[info]rst7_cbsie
 Решил я завести тут аккаунт. Хотел покомментить кое-чьи записи (афтар которых запретил комментирование анонимусам), а потом решил, что можно попробовать пописать и просто так :)

Щас я сюда кое-какие ссылки на уже выложенное барахлишко посливаю...

Вы читаете журнал [info]rst7_cbsie