All streams
Search
Write a publication
Pull to refresh
9
0
Дмитрий @lnx

User

Send message
В качестве сенсора я бы использовал что-то похожее на датчик Холла.
Хотелось бы не повторять своих ошибок в дальнейшем.
Как исправить, чтобы не был «говнокод»? Может, есть ссылки в загашнике, что почитать?
Говнокод везде — и в asm и в C?
Да, перед вопросом погуглил, единственное, что нашел, доступнoe — TLC5940 и PCA9635, и то только на ebay.
Может подскажешь несколько конкретных ходовых моделей?
Идея понятна. Как-нибудь, на досуге, надо будет попробовать реализовать. Интересно, как оно будет по ресурсам.
В моем конкретном коде — дa, добавить пару строк, ввести дополнительно две переменные, изменить строку с заданием маски выходов. Про применение массивов я упомянул, при большем числе каналов — есть смысл, и будет меньше манипуляций при добавлении каналов.
Перекомпилировать и перезалить прошивку. (а без этого никак, в любом случае).

Согласен.
Но если мы говорим о AVR, а тем более о Tiny, то тут, по большому счёту, даже использование высокоуровнего C — перебор. Для примера, если скомпилировать приведенный код, то C-прошивка займет 266 байт, а ассемблерная только 118. А на борту всего лишь 1 килобайт флеша.
Ну не знаю, как на счет проще. Мне кажется сомнительной такая выгода.
Похоже, вы не совсем поняли что происходит в программе.
Обработка и так вся в прерывании. Можно смело идти в спячку. Бесконечный цикл лишь для демонстрации работы, в нём постепенно увеличивается коэффициет заполнения ШИМ по всем каналам. Если подключить к выходам светодиоды, то их яркость будет плавно увеличиваться, и гаснуть достигнув максимума. Начальные значения яркости даны со сдвигом, по-этому светодиоды будут разгораться и гаснуть по очереди.
Мне ещё очень нравилась Academy.
Ага, особенно сохранёнки на магнитофон!
oolite, если что.
Отличная статья.
Спасибо за информацию. Интересная идея.
Спасибо за конструктивную критику.
2) Самое правильное — буферизовать значение длительности ШИМ. То есть на каждый канал использовать две переменные: первую юзер меняет, когда ему вздумается, вторая используется в обработчике прерывания, и ей значение присваивается один раз в начале каждого периода.

но ведь именно так и сделано. при if (++counter==0) присваюваются значения буферным переменным.

Information

Rating
Does not participate
Location
Латвия
Date of birth
Registered
Activity