Пульт для симуляторов

Shinshilla

ADCSRA|=(1<<ADIF)
CLKPR=(0<<CLKPCE) | (1<<CLKPS3) | (0<<CLKPS2) | (0<<CLKPS1) | (0<<CLKPS0);
Как понять такие заклинания в CodeVisionAVR?
В скачанных с сайта разработчика Getting Started и User Manual нет описания, может кто даст толковую ссылку.

V_Alex

Это не заклинания. Нужно смотреть даташит на конкретный контроллер.
Слева от вертикальной черты идет название регистра микроконтроллера.
Справа - названия битов и состояние, в которое их нужно установить.
Лучше сразу настроиться на то, что быстро разобраться не получится.

Shinshilla

Заклинаниями я в шутку называю строки в программах.
А чтобы разобраться нужно иметь описание применяемой в CodeVisionAVR разновидности С.
Пока найти не могу…

V_Alex

Открываете даташит на контроллер, например - Attiny13a, находите раздел Register Summary. Там есть таблица с названиями регистров, их привязка к адресам и разбивка по битам с указанием имени каждого бита.
Соde Vision, Си или Assembler используют именно эти названия.

ADF
Shinshilla:

Как понять такие заклинания в CodeVisionAVR?

Качаем ПДФ-ку на контроллер.

Распечатываем оттуда две с половиной вещи:

  1. Список регистров и карту памяти
  2. Список ассэмблерных команд

Потом все это выкидываем в мусорку, берем arduino nano и делаём всё на ней 😃

ps:
вообще, это логические операции и побитовые сдвиги с использованием содержимого регистров. Это иногда имеет смысл, если надо сделать быстрый как понос код, но обсуждаемая задача не требует от контроллера максимального быстродействия. Можно все в человекопонятных переменных решать, даже с плавающей точкой.

msv

Как понять такие заклинания в CodeVisionAVR?

Это не особенности CVR, обычный C.
ADCSRA|=(1<<ADIF)
В регистре ADCSRA (по сути, это обычная переменная с фиксированным адресом) устанавливается бит с порядковым номером ADIF. Остальные биты не меняются.
CLKPR=(0<<CLKPCE) | (1<<CLKPS3) | (0<<CLKPS2) | (0<<CLKPS1) | (0<<CLKPS0);
В регистре CLKPR устанавливается бит CLKPS3, остальные сбрасываются.
Замечу, что вычисление значения делает прекомпилятор и в итоговой программе будет уже готовая константа.
Такая форма записи нужна исключительно для удобства программиста, более наглядна, чем просто число.

Dhole

Берём ардуину-нано, впихиваем в неё вот это, подтыкаем к компу и радуемся.

Цена вопроса триста рублёв.

1 month later
VVishen

Вот еще вариант для любителей STM32: хабр.
За пол часа напильником выпиливается анализ PPM и запускается ADC на 4 канала. В системе контроллер определяется как джойстик. Все работает.

2 months later
Shinshilla

Ардуины я купил для других целей. А Тину-13 хочу победить. Столкнулся с такой неприятностью: при входном напряжении меньше примерно 1/3 напряжения питания АЦП выдаёт нули во всех разрядах, потом работает “по теории”. Проверил три экземпляра. Может ли кто-нибудь сталкивался с похожими задачами?

1 month later