|
Флаг ADIF регистра ADCSRA-в АЦП ATmega8-непонятно |
|
|
|
Sep 27 2013, 14:49
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 25-01-13
Из: Брянск
Пользователь №: 75 345

|
Здравствуйте.Вот если перевести АЦП в непрерывный режим флаг ADIF установится сразу после окончания преобразования,но непонятно когда он сбросится , а ведь на очереди очередное преобразование. Этот флаг необходимо програмно сбрасывать ,чтобы увидеть очередное преобразование.В даташите не увидел ответа.Благодарю всех ответившим.
|
|
|
|
|
Sep 27 2013, 15:23
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 25-01-13
Из: Брянск
Пользователь №: 75 345

|
Цитата(ARV @ Sep 27 2013, 18:56)  он сбросится аппаратно в момент перехода на обработчик прерывания Спасибо понятно.А можно ли считывать результат АЦП в любое время (Режим непрерывного преобразования) при считывании результата АЦП ну вначале младший ADCL затем ADCH, при считывании младшего старший будет заблокирован пока и он не будет прочитан.И мне не надо ожидать окончания преобразования просто устройство примитивное-индикатор на 8 светодиодов.Для обучения.Спасибо.
|
|
|
|
|
Sep 27 2013, 20:33
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 25-01-13
Из: Брянск
Пользователь №: 75 345

|
Цитата(ARV @ Sep 27 2013, 22:57)  для обучения лучше делать правильно, а не "как-нибудь". считывать ADC до завершения преобразования все равно что определять время по компасу - оно то, конечно, можно, но бессмысленно... А если так.Дождаться когда завершится преобразование-Флаг ADIF установится,далее програмно сбросим ADIF и "поработаем" со светодиодами потом снова на метку-("Дождаться когда завершится преобразование-Флаг ADIF установится") Или по прерыванию от АЦП и уже обработчик прерывания будет зажигать светодиоды.
|
|
|
|
|
Sep 28 2013, 07:51
|

Местный
  
Группа: Свой
Сообщений: 397
Регистрация: 3-12-09
Из: Россия, Москва
Пользователь №: 54 040

|
Цитата(ARV @ Sep 27 2013, 22:57)  для обучения лучше делать правильно, а не "как-нибудь". считывать ADC до завершения преобразования все равно что определять время по компасу - оно то, конечно, можно, но бессмысленно... Для задачи топикстартера - вовсе не бессмысленно - читаем непрерывно, непрерывно индицируем, и нам пофигу, что мы 10 (100 или 1000) раз отобразили значение предыдущего измерения
|
|
|
|
|
Sep 28 2013, 13:30
|

Профессионал
    
Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581

|
Цитата(RabidRabbit @ Sep 28 2013, 11:51)  Для задачи топикстартера - вовсе не бессмысленно - читаем непрерывно, непрерывно индицируем, и нам пофигу, что мы 10 (100 или 1000) раз отобразили значение предыдущего измерения  вы уверены, что считывая регистр ADC до завершения очередного преобразования мы получим результат предыдущего завершенного преобразования?
--------------------
Я бы взял частями... но мне надо сразу.
|
|
|
|
|
Sep 28 2013, 21:03
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
Цитата(V_G @ Sep 28 2013, 03:31)  АЦП работает сам по себе в непрерывном режиме (и даже последовательно опрашивая каналы), а пользователь в произвольные моменты времени считывает специальные буферные регистры требуемого канала, в которых хранится последний результат преобразования по каналу. Подскажите, пожалуйста, как называются эти "специальные буферные регистры"? Кандидатов на эту роль вижу два: ADCA.CH1.RES ADCA.CH1RES Который из?
|
|
|
|
|
Sep 28 2013, 22:52
|

Профессионал
    
Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955

|
Названия регистров различаются в Си и ассемблере (я из тех извращенцев, что предпочитают ассемблер). Тем не менее, указанные Вами регистры имеют разные адреса, и в этом заключается фишка (содержимое регистров одинаковое). Конкретно, в ассемблерном варианте, адреса регистров, принадлежащих одному каналу: ADCA_CH0_CTRL, ADCA_CH0_MUXCTRL, ADCA_CH0_INTCTRL, ADCA_CH0_INTFLAGS, ADCA_CH0_RES, идут подряд друг за другом, позволяя организовать обращение к общему блоку регистров канала (например, через DMA).
С другой стороны, адреса регистров ADCA_CH0RES, ADCA_CH1RES, ADCA_CH2RES, ADCA_CH3RES также идут последовательно, что позволяет организовать блоковое обращение к регистрам результата всех каналов.
|
|
|
|
|
Sep 28 2013, 23:09
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
Цитата(V_G @ Sep 29 2013, 02:52)  Названия регистров различаются в Си и ассемблере (я из тех извращенцев, что предпочитают ассемблер). Тем не менее, указанные Вами регистры имеют разные адреса, и в этом заключается фишка (содержимое регистров одинаковое). Конкретно, в ассемблерном варианте, адреса регистров, принадлежащих одному каналу: ... ADCA_CH0_RES, идут подряд друг за другом, позволяя организовать обращение к общему блоку регистров канала (например, через DMA).
С другой стороны, адреса регистров ADCA_CH0RES, ... также идут последовательно, что позволяет организовать блоковое обращение к регистрам результата всех каналов. Я не об этом спрашивала. Меня интересует, откуда брать готовые данные. Из ADCA_CH0_RES или из ADCA_CH0RES? Тем более, если, по вашим словам, это имена не синонимы, а "имеют разные адреса".
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|