2016-12-29

eddy_em: (Костерок)
2016-12-29 10:41 am
Entry tags:

Железяки

Попросили меня написать эмулятор сигналов от джиповского датчика коленвала (человек поменял мотор на тойотовский, теперь надо состыковать "мозги" джипа с двигателем, чтобы они таки считали, что двигатель работает). Написал под STM32. Так как частоты там небольшие, я не заморачивался с генерированием сигналов в режиме ШИМ+DMA, генерирую тупым ногодрыгом в прерываниях таймера. Сравнил осциллограмму с приведенными в интернете — вполне совпадает. Если будет нормально работать, следующим этапом будет сбор данных от тойотовского датчика (правда, там не Холл, а индуктивный — возможно, придется на входе еще операционник лепить).
Стал подбирать элементы, чтобы на макетке спаять минимальную обвязку (две кнопки, два светодиода и ключ на 2N7000, чтобы случайно порт мелкоконтроллера не спалить). Опять оказалось, что нужных резисторов у меня на работе нет. В обед дома надо будет захватить.
Сейчас погуглю, какие наиболее популярные номиналы стоит прикупить, да закажу на алиэкспрессе (0.65 баксов за 300 резисторов 0805, думаю, номиналов 10 прикуплю).
eddy_em: (Костерок)
2016-12-29 04:04 pm
Entry tags:

"A /= 2" или же "A >>=1"?

Я всегда думал, что это одно и то же, однако, оказалось, что совсем не так! Обратил внимание, что код из предыдущей записи как-то неоптимально компилируется: в ассемблерном листинге в операции деления на 2 вместо сдвига было реальное деление. "Что за нафиг?" — подумал я, и заменил деление на сдвиг. Благо, коммит не делал — решил сначала проверить. И вот, вместо ожидаемого периода в 10мс (6000 об/мин) получаю какую-то чертовщину! Меняю обратно на деление: вуаля!

Что за … ?
куски кода )