реклама на сайте
подробности

 
 
> Калибровка АЦП, stm32f103
777777
сообщение Dec 1 2011, 09:55
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357



В процессе отладки программы вдруг стал зависать АЦП во время его инициализации. Оказалось, он не выходит из калибровки:

Код
    ADC1->CR2 |= ADC_CR2_RSTCAL;                        // reset calibration
    while(ADC1->CR2 & ADC_CR2_RSTCAL)                    // wait until reset finished
        {}

Выяснилось, что если перед ним поставить два или более NOP-ов, то он начинает работать. В даташите нашел следующий абзац:
Цитата
Before starting a calibration the ADC must have been in power-off state (ADON bit = ‘0’) for
at least two ADC clock cycles.

Как это понимать? Калибровка производится при включении питания, поэтому он находится в power-off state гораздо больше, чем два clock cycles.
Может наоборот, после включения ADON должно пройти не менее двух циклов? Тогда это объясняет помощь NOP-ов.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sevastianovd
сообщение Dec 6 2011, 08:17
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 78
Регистрация: 8-04-08
Из: Омск
Пользователь №: 36 562



я имел ввиду так
CODE

ADC1->CR1 = ADC_CR1_SCAN | ADC_CR1_EOCIE;
ADC1->CR2 = ADC_CR2_EXTSEL(5) | // Timer 4 CC4 event
ADC_CR2_EXTTRIG ; // EXTTRIG


ADC1->SMPR1 =ADC_SMPR1_SMP12(0); // set sample time (1,5 cycles)

ADC1->SQR3 = ADC_SQR3_SQ1(12);
ADC1->SQR2 = 0;
ADC1->SQR1 = ADC_SQR1_L(0);

ADC1->CR2 =ADC_CR2_ADON;

думаю, что таймер здесь непричём. скорей последовательность запусака АЦП
Go to the top of the page
 
+Quote Post
777777
сообщение Dec 7 2011, 07:29
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357



Цитата(sevastianovd @ Dec 6 2011, 12:17) *
я имел ввиду так

Забыл "ИЛИ":

Код
ADC1->CR2 |= ADC_CR2_ADON;

Цитата(sevastianovd @ Dec 6 2011, 12:17) *
думаю, что таймер здесь непричём. скорей последовательность запусака АЦП

Да, но таймер при зависшем АЦП не работал. Его выход выведен у меня наружу для контроля, так при зависании на этом выходе не было импульсов. Значит АЦП на него как-то влиял.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th July 2025 - 23:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.01348 секунд с 7
ELECTRONIX ©2004-2016