Архив рубрики: Программирование

Как работают таймеры Arduino после сброса…

В Arduino на основе ATmega328 используются все три имеющихся в микроконтроллере таймера. Таймер 0 задействован в функциях «определения времени» (millis(), micros()). Таймер 1 и Таймер 2 вместе с Таймер 0 используются в процедурах analogWrite() для формирования на некоторых выводах микроконтроллера ШИМ импульсов.

Может быть полезным — знать в каком режиме работают таймеры после включения питания платы Arduino, или подачи сигнала сброса… Читать далее Как работают таймеры Arduino после сброса… →

Как работает delay() и delayMicroseconds()

В предыдущих расследованиях мы посмотрели как работают функции millis() и micros().  Двигаясь далее по исследуемому файлу  ..\Arduino\hardware\arduino\cores\arduino\wiring.c — можно обнаружить самые частоупотребляемые в проектах на Arduino процедуры временных задержек.

Посмотрим: как они устроены «внутри»… Читать далее Как работает delay() и delayMicroseconds() →

Про функцию micros() — как она устроена…

В предыдущем расследовании стало ясно как работает функция millis(). Есть у Arduino более мелкая функция micros(). Посмотрим, что у нее внутри… Читать далее Про функцию micros() — как она устроена… →

Про millis() — как это устроено…

Когда начинающим ардунищиком проведены первые опыты по миганию светодиодом и он пытается найти хоть какое-то полезное применение тому «хламу», что он приобрел, первым делом он натыкается в интернете на функцию millis(). Ее использование «бывалые» рекомендуют внедрить во все те опыты, что начинающий ардуинщик только что проделал, используя delay().

Я не стал исключением и благополучно прошел этот путь. Но, имея инженерное образование, всегда хотелось посмотреть: а как это работает внутри? Выпала пара свободных минут и я погрузился в содержимое каталога установки Arduino… Читать далее Про millis() — как это устроено… →

Про digitalWrite() — как это работает

Когда впервые столкнулся с Arduino, меня несколько удивил подход итальянских ребят к работе с портами (выводами) микроконтроллера AVR. Обычно, с каждой линией работают через соответсвующий бит определенного порта, а тут… пронумеровали все ножки микросхемы и сделали их «равноправными»: теперь не надо думать — какой это порт? можно ли его использовать для своих целей? не занят ли он чем-либо «своим»? Очень удобно, с точки зрения ленивого разработчика. Но, с другой стороны, за это надо чем-то платить! очень хотелось посмотреть: чего итальянцы «засунули» в процедуру digitalWrite()? Читать далее Про digitalWrite() — как это работает →

Обработка нажатия кнопки в прерывании. Часть 2

Расследуя поведение контактов кнопки и предотвращая пагубные последствия их поведения, в предыдущей статье было отмечено, что для обнаружения срабатывания неплохо использовать прерывания от внешнего источника. Так же было отмечено, что это «не лучший способ» работы с кнопкой…

Рассмотрим иной способ работы с кнопкой, на сей раз — в другом виде прерывания — прерывании от таймера. Читать далее Обработка нажатия кнопки в прерывании. Часть 2 →