Что нам понадобится
Даташит для ATMEGA328P.
Также будет добавленна электронная схема в виде шилда. Список компонентов предоставлю позже.
Работа с микроконтроллером. Побитовый доступ к регистрам
Для повышения быстродействия необходимо использовать функции более низкого уровня, чем стандартные функции Arduino IDE. Эти функции будут работать с регистрами, которые в свою очередь являются наборами из восьми бит, так как Atmega328P имеет восьмиразрядную архитектуру.
Каждый регистр имеет свое имя, описанное в даташите. Например ADCSRA - регистр А настройки АЦП. Кроме того, каждый бит регистра имеет имя, например ADEN - бит включения АЦП.
Для работы можно использовать обычные операторы языка C для работы с битами, но есть и очень удобные макросы :
// Определения для установки и сбрасывания битов регистра
#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif
#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif
Пользоваться ими очень просто:
Для установки разрешающего бита в 1 надо написать:
sbi(ADCSRA,ADEN);
Для сброса разрешающего бита в 0 надо написать:
cbi(ADCSRA,ADEN);
Комментариев нет:
Отправить комментарий