В этой статье я расскажу о способе вывода звука на Arduino Due без активного использования процессора.
Получив плату и поэкспериментировав со скетчами, я понял, что не стану писать прошивки в стандартной IDE и начал искать альтернативу. Мой выбор остановился на Atmel Studio версии 6.0. Мне очень понравилась эта IDE, которая сделана на основе Visual Studio 2010. Понравилась она особенно тем, что все заработало из коробки. В мастере создания нового проекта я выбрал плату Arduino Due, выбрал проект а-ля «Hello World» (мигание светодиодом), скомпилировал и запустил. Особенно радовало то, что не было никаких скрытых от меня слоев и библиотек. Прошивка полностью собиралась из исходного кода, это меня в итоге и подкупило, и я остался на Atmel Studio. В нее, кстати, уже встроен Visual Assist, который делает написание кода еще более комфортным.
И так, передо мной встала задача вывода звука через DACC (Analog Converter Controller), но без 100% загрузки процессора. В идеале хотелось отправить в DACC очередную порцию данных и забыть о нем до тех пор, пока не потребуется отправить новую порцию.
Для этого мне пришлось задействовать PDC (Peripheral DMA Controller) и TC (Timer Counter). В итоге, все оказалось достаточно просто, но я немного помучился, прежде чем все это заработало. Если интересно, то прошу под кат.
Получив плату и поэкспериментировав со скетчами, я понял, что не стану писать прошивки в стандартной IDE и начал искать альтернативу. Мой выбор остановился на Atmel Studio версии 6.0. Мне очень понравилась эта IDE, которая сделана на основе Visual Studio 2010. Понравилась она особенно тем, что все заработало из коробки. В мастере создания нового проекта я выбрал плату Arduino Due, выбрал проект а-ля «Hello World» (мигание светодиодом), скомпилировал и запустил. Особенно радовало то, что не было никаких скрытых от меня слоев и библиотек. Прошивка полностью собиралась из исходного кода, это меня в итоге и подкупило, и я остался на Atmel Studio. В нее, кстати, уже встроен Visual Assist, который делает написание кода еще более комфортным.
И так, передо мной встала задача вывода звука через DACC (Analog Converter Controller), но без 100% загрузки процессора. В идеале хотелось отправить в DACC очередную порцию данных и забыть о нем до тех пор, пока не потребуется отправить новую порцию.
Для этого мне пришлось задействовать PDC (Peripheral DMA Controller) и TC (Timer Counter). В итоге, все оказалось достаточно просто, но я немного помучился, прежде чем все это заработало. Если интересно, то прошу под кат.