лилия, походы

ОНО таки не полетело...

Полтора года назад я писал о том, что в СМИ появилась информация, что Т-50 научился летать.
И вот нам предоставилась возможность увидеть это своими глазами. В общем, поехали сегодня на МАКС-2011. И ведь приехали таки вовремя - как раз успели осмотреть статическую экспозицию, немного потусоваться среди павильонов и направиться к лётному полю, как объявили полёт Т-50. Ну мы ломанулись вперёд, продрались к забору и стали смотреть на это чудо техники, которое проехалось туда-сюда по взлётной полосе и... заявило, что погода не лётная и оно лучше поедет в ангар...

ЗЫ: а вот Сухой Superjet 100 взлетел. И как взлетел! Градусов под 50 к земле... Я, конечно, понимаю, что он пустой был, но всё равно весьма впечатляюще для пассажирского лайнера.

Collapse )
работа, кошка

KDE4 и косяк с системным треем

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

Конкурс на EE

Примерно пол года назад я писал об открытии сообщества EasyElectronics и организации конкурса на этой почве. Так вот, недавно были объявлены результаты конкурса, а сегодня а забрал на почте приз за второе место =).
Collapse )
работа, кошка

Про непонятное африканское слово "ubuntu"

Тут говорят, вышла новая убунта со встроенной поддержкой мультитача. Решил попробовать, благо ставится легко прямо из-под винды - час времени и никаких бубнов. Погонял чуть-чуть, впечатления довольно противоречивые:
Collapse )
лилия, походы

Ассемблерные вставки в AVR-GCC

Практически всегда, когда в проекте задействованы АЦП, встаёт необходимость провести математическую обработку того, что там нацифровалось. Мат. обработка, в зависимости от задачи, может варьироваться от примитивного «сложить два измерения и поделить пополам (ака сдвинуть на разряд вправо)» до всяких там БПФ, цифровых фильтров и далее по списку. Если математика чуть сложнее, чем «найти максимум за период», а измерения непрерывные, то частенько встаёт вопрос в скорости обработки. Собственно говоря, это вообще-то отправная точка для выбора платформы, на которую будет опираться проект, тут надо здраво оценить потребности задачи и возможности различных платформ. Конечно, для ядрёной числодробилки лучше взять какой-нибудь DSP, а может даже и FPGA. А если наша числодробилка не особо ядрёная, зато требуется минимизировать энергопотребление этой фигни, да и конечная стоимость должна быть не как у самолёта? А ещё есть такие факторы, как опыт разработчика, доступность комплектухи и т.д. Короче если мы решили, что мозгами в нашем проекте должна работать старая добрая AVR, но мозга у неё не хватает, на то что бы осмыслить наш алгоритм, объяснённый ей на языке C, придётся объяснять на Assembler`е.

(Читать полностью на we.easyelectronics.ru)
лилия, походы

EasyElectronics в массы

Замечательный ресурс dihalt`а EasyElectronics выходит на новую уровень развития - теперь это общественный блог а-ла хабрахабр, где каждый сам может публиковать свои статьи.
И чем больше этих каждых - тем лучше! Присоединяйтесь!

лилия, походы

О работе с массивами

Когда в программе есть большой объём данных хочется для удобства собрать его в одну структуру. А в некоторых случаях в этой структуре хочется ещё и массивов напихать. Так вот, хочу отметить, что GCC местами туповат, по-этому надо ему понятно объяснять, как ему взять данные из этой байды. Под катом сравнение двух способов работы с массивами
Collapse )
лилия, походы

2*2=4?

Меня давно мучал вопрос как объяснить gcc, что 2*2=4 - он весьма упёртый в этом деле, говорит мол 2*2=2, либо 4*4=4, а всё что кроме - мол не по стандарту. Где-то в инете видел упоминание о том, что научить его премудростям этой высшей математики таки можно, но как именно - тайна сакральная. По крайней мере мне лезть настолько глубоко в архитектуру этого монстра совершенно неохота. По-этому я пошёл другим путём - сделал ассемблерную вставку, реализующую то, что мне нужно. Сей код я тут оставлю - вдруг кому пригодится. Под катом реализация умножения int16_t*int16_t=int32_t, а заодно ещё квадратного корня uint16_t=sqrt(uint32_t) и корня суммы квадратов uint16_t=sqrt(int16_t^2 + int16_t^2).
Collapse )

Первоисточники алгоритмов:
1) AN201 (на сайте atmel`а его что-то нет, так что ссылка левая - http://faculty.capitol-college.edu/~andresho/tutor/Multimedia/AVR/HW_mult/avr201.htm)
2) http://members.chello.nl/j.beentjes3/Ruud/sqrt32avr.htm
3) http://elm-chan.org/docs/avrlib/sqrt32.S


UPD (02.02.2001): Пофиксил ошибки в типах аргументов, плюс улучшение читабельности и правка комментариев, где они есть.
лилия, походы

Об архитектурных особенностях GCC

Как работает компилятор gcc - это просто сказка, о его архитектуре легенды складывают. Особенно меня удивляет его поведение в части их взаимопонимания с процессором. Вот свеженарытый пример:
Компилятор говорит "у меня есть два спец-регистра: временный регистр r0, в который можно не задумываясь писать что угодно, при условии использования этого в ближайшие пару тактов и нулевой регистр r1, который всегда можно использовать без предварительного обнуления".
Контроллер говорит "у меня есть команды аппаратного умножения 8*8=16, которые на вход принимают пару верхних регистров, а результат складывают в r1:r0".
В итоге если с r0 всё вроде понятно (если не использовать временный регистр, когда работаешь с умножением), то с r1 случается косяк. Как следствие, всегда после использования аппаратного умножения необходимо обнулять r1, дабы не снести компилятору крышу.