В статье про формирование звука с помощью Arduino было отмечено удобство использования функции tone() для генерации сигнала. Интересно было покопаться в библиотеке Brett Hagman — каким образом реализована эта функция? Читать далее Процедура tone() — что там внутри…
Архив за месяц: Декабрь 2015
Что происходит после нажатия кнопки «Загрузить»
Вроде бы ничего экстраордиинарного после тыкания в кнопку не происходит… Все знают, что будет идти компиляция текста скетча и полученный исполняемый код загрузится в подключенную к компьютеру плату Arduino. Но, все-таки, интересно, а какие внутренние процессы совершаются в Arduino IDE… Читать далее Что происходит после нажатия кнопки «Загрузить»
Как работает процедура analogWrite()
В статье про работу таймеров в Arduino было отмечено, что все три (имеем ввиду микроконтроллер ATmega328) таймера принимают участие в формировании «аналогового» сигнала на некоторых выходах платы Arduino. На самом деле, конечно, никакого аналогового сигнала не формируется, некоторые пины выводят ШИМ сигнал, который, при желании, с помощью интегрирующей цепочки можно преобразовать в «нормальный аналоговый уровень». Пример ШИМ и его «аналогового аналога»:
Разберем работу процедуры формирования ШИМ импульсов в платформе Arduino Читать далее Как работает процедура analogWrite()
Как работают таймеры 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() — как она устроена…