суббота, 27 сентября 2014 г.

32 битный ARM это круто

Ощущения от пересадки с 8 битного AVR на 32 битный ARM - непередаваемые!
Весь головняк и траходром  с арифметикой испарился без остатка. Наконец-то можно складывать лонги и не сжимать очко в ожидании нехватки тактов. Интегрирование MEMS датчиков превратилось в интегрирование, а не в шаманство с бубном по экономии пары тактов.
И да! Таки на Вильяма нашего Шекспира кватернионы можно по-людски замахнуться. 168 МГц и 32 бита. Супротив 16 МГц и 8 бит  это сила! А еще в нем FPU есть. Это вообще какое-то читерство после AVR.  
3.3 вольта немного напрягают. Надо повторители кое-где вешать. Но это такие мелочи в сравнении с возможностью писать вменяемую алгоритмику.

понедельник, 22 сентября 2014 г.

Все в жизни возвращается, на круги своя.

Взял вечером с полки почитать Кернигана и Ритчи.  Потому как одно дело в AVR-ках  баловаться, а другое дело STM32 контроллеры. Надо бы вспомнить как  оно было. Уж полтора десятка лет  без серьезной практики на Си. И так,  защемило, в душе.....   15 лет в профессии насмарку считай. Ну какого хрена я  перекинулся в веб программирование в свое время. Ну зачем я изменил старым добрым десктопам.  Чего мне было мало?  Денег? Почета?  Или может интерес пропал? Ну... может с последним чуть-чуть так и было. Захотелось чего-то нового, перспективного, как тогда казалось. И что? Прошло 15 лет. всяких перлов-пыхов и прочих html-ей со скриптами.  И стал я почетным сеньором интернет-говнокодером. 15 лет  однообразных страничек, формочек, админок.  И иногда по вечерам  поиграться с ардуинкой какой.  И все казалось так и должно быть,  пока  в руки не попала книга из той, прошлой, но очень настоящей жизни и настоящего программирования.
Эх жизнь, жестянка! 


пятница, 19 сентября 2014 г.

О вакансиях на удаленную работу PHP программисту.

Интересно, все работодатели, ищущие на постоянную должность PHP разработчика на удаленку,  неадекватные идиоты с комплексом наебывальщика, или все-таки  найдется хоть один вменяемый?






четверг, 18 сентября 2014 г.

stm32f407 и i2c

Ух тыж... ... мать....
Других слов нет. Если в какой ардунине или тексасовой мпушке i2c заводится на раз левой задней ногой. То аппаратный i2c на stm32 серии   при таком же подходе, как к ардуине будет в лучшем случае работать глючно и виснуть. В худшем, вообще не заведется. отчего, Собственно, говоря, куча народу занимается   на этих камнях безысходными говновелосипедами  реализацией софтверного i2c на тех же самых  выводах, путем ногодрыга по таймеру.
Я тоже не избежал участи сей.  Бег по граблям был долгим и неприятным.  Но победил.
Для начала я пробежался по всем детским  граблям, связанным с тактированием и делителями частот,   STM32F407 - классный камень, но блин..... Не все такие крутые шаманы, чтобы лихо  нащелкать нужных делителей и множителей на нужные ноги и интерфейсы. Особенно угнетает, что даже для демо плат, той же STM32F4Discovery , нету простых заголовочных файлов, тупо включающих в той или ной комбинации всю периферию на максимальной частоте от внешнего кварца. Ну почему? Типа чтоб разработчик сразу познавал дзен? 
Ну да. Я познал дзен. Путем нескольких бессонных ночей я таки собрал нужные настройки по частоте. И хрен я теперь этот файл когда буду менять.  Незачем просто.  Вот может соберусь и выложу в доступ.
Далее. После детских граблей, когда частоты правильно выставлены, ноги затактированы, подтяжечные резисторы включены  и на  потуги управлять интерфейсом  даже меняются уровни на ножках,  наступает вторая фаза. Уровни со стороны мастера меняются, а слейв отвечает не в попад или не всегда, или тупит, ил теряет что-то или потоком читает из одного регистра, а  потом виснет.   И наступает второй цикл бессонных ночей, когда качаешь их интернета всякие  примеры работы с шиной. А они однотипно не работают. Или работают  не дальше, чем чтение регистра WHO_IM. И свирипеешь. И понимаешь, что где-то какая-то жопа. Или думаешь, что камень кривой, или думаешь что что-то спалил. А потом краем глаза где-то в интернетах читаешь, что у кого-то тоже не работало, так он провода укоротил до датчиков и все заработало. И ты укорачиваешь и без того коротенькие провода. и паяешь и наращиваешь толщину. И все равно та же жопа. И что обидно. Эта же плата  с датчиками, воткнутая в ардуинку,  работает как швейцарские часики даже с двухметровым кабелем, скрученным из остатков китайской витой пары.  И ты свирипеешь еще больше. И тут приходит осознание. 3.3 вольта. Питание с шины от которой живет процессор.   Думаешь....   И приходит озарение. Паять времени нет.  В три часа ночи трясущимися руками ты подводишь к датчику непонятных три вольта от двух китайских батареек и случается чудо!  На байт! Ack! На еще! Ack!  еще, еще, еще Ack!  байтики бегут, параметры собираются. Ты уже прикидываешь как правильно интегрировать гироскоп..... Но тут некстати виснет отладчик. Перегружаешься и .... Ага и ничего не работает. Нифуа ни ресеты ни пляски с бубном. 
На следующий день - следующий раунд. Собираешь все обратно. Подтыкаешь   батарейки и то, что вчера не работало, опять  бодро работает.  Чертовщина какая-то.  Пара тестов туда-сюда и опять жопа. Тыцкаешь в ножки  щупом померять уровни, так блад и есть,  плата датчиков зажала шину и держит.   Втыкаешь в ардуину для теста. Там как всегда все хорошо.
Начинаешь думать. И мысль приходит - вероятно мастер не закончил прием. Тут же моделируешь ситуацию, и да. 100% воспроизведение. Шина залочена слейвом.
Ну что. Как бы решение простое.  Дать слейву дотрындеть то, что не успел, из-за прерывания или из за еше чего-то.
И все. Все работает. Но блин как все строго.  Развращенный ардуинками, где на шине все само, поимел кучу седых волос, чтобы завести i2c на STM32  .  Но!  По-большому счету это вероятно правильно.  Спецификацию нужно соблюдать на 100%.   Хотя произхводителям других кристаллов честь и хвала за то, что многие кривости работы с интерфейсом они прощают.



суббота, 13 сентября 2014 г.

L3G4200D лыжи не едут

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

вторник, 9 сентября 2014 г.

jQuery EasyUI Что-то это мне напоминает.

Посмотрел давеча близко и пристально на  jQuery EasyUI.

И  возникло смутное дежавю. Где-то я это все уже когда-то видел.  Ну конечно. Это же вылитый ExtJS  6-7 летней давности.