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

 
 
> STM32: запуск АЦП от TIM1
koyodza
сообщение Jul 24 2011, 13:36
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 213
Регистрация: 28-02-07
Из: Киев
Пользователь №: 25 744



У кого-нибудь получилось запустить преобразование АЦП от TIM1? Хоть по какому-нибудь каналу. По TIM2..TIM4 работает (канал только нужно выбирать, не от всех запуск возможен).
Делаю то же самое от TIM1 - молчит.

И ведь не один проект уже на нём реализовал, а вот с TIM1 постоянно какие-то засады: то OCxN оказывается невозможно отключить, когда он попадает на другую периферию, то вот с запуском АЦП... Все таймера 2..4 сейчас заняты, перебросить запуск АЦП некуда
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Юрий_СВ
сообщение Feb 7 2012, 19:38
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 73
Регистрация: 4-05-08
Пользователь №: 37 272



У меня работает. (Надеюсь, таймер и канал сравнения настроены)
CODE
void delay_y()
{
volatile u32_t i, ty;
for(i=0; i<10000; i++) ty=GPIOA_ODR;
}

void init_adc()
{

// выключаем АЦП и ждём не менее 2-х периодов синхронизации АЦП
ADC1_CR1=0x00000000;
ADC1_CR2=0x00000000;
delay_y();
// включаем (1 мкс) и ждём время установления (1 мкс)
ADC1_CR2=0x00000001;
delay_y();
// выполняем калибровку
ADC1_CR2=0x00000005;
while(ADC1_CR2&0x00000004); // ждём окончания (5,9 мкс)

// настраиваем

// время захвата значения
ADC1_SMPR1=0x00000000;
ADC1_SMPR2=0x0002d000; // используется только 5-й и 6-й каналы
// SMPx[2:0]=101

// последовательность обычных каналов
ADC1_SQR1=0x00000000;
// L - длина последовательность
// SQx - номер канала
ADC1_SQR2=0x00000000;
ADC1_SQR3=0x00000006; // используется только 5-й и 6-й каналы


ADC1_CR1=0x00000020; //
// AWDEN=0; // отслеживание диапазона обычных каналов - не требуется
// JAWDEN=0; // отслеживание диапазона вклинивающихся каналов - не требуется
// DISCNUM=0; // кол-во каналов в прерывистом режиме
// JDISCEN=0; // прерывистый режим для вклинивающихся каналов - не требуется
// DISCEN=; // ??? прерывистый режим для обычных каналов -
// JAUTO=0; // автопреобразование вклинивающейся группы - не требуется
// AWDSGL=0; // отслеживание диапазона в режиме .. просмотра (scan) - не требуется
// SCAN=0; // режим просмотра - не требуется
// JEOCIE=0; // прерывание по вклинивающимся каналам - не требуется
// AWDIE=0; // прерывание по отслеживанию диапазона - не требуется
// EOCIE=1; // прерывание по обычным каналам - разрешено
// AWDCH=0; // номер канала для отслеживания диапазона


ADC1_CR2=0x00100001; //
// TSVREFE=0; // каналы датчика температуры и внутреннего опорного - не требуется
// SWSTART=0; // программный запуск преобразования на обычных каналах
// JSWSTART=0; // программный запуск преобразования на вклинивающихся каналах
// EXTTRIG=1 ; // запуск преобразования обычного канала по внешнему сигналу - разрешен
// EXTSEL=000; // источник внешнего запускающего сигнала для обычного канала - таймер 1, канал 1
// JEXTTRIG=0; // запуск преобразования вклиниваюегося канала по внешнему сигналу - не требуется
// JEXTSEL=0; // источник внешнего запускающего сигнала для вклинивающихся каналов - не требуется
// ALIGN=0; // выравнивание результата - вправо
// RSTCAL=0; // сброс калибровки
// CAL=0; // запуск калибровки
// CONT=0; // непрерывный режим - не требуется
// ADON=1; // включение АЦП / запуск преобразования
// запуск преобразования происходит если выполняется оба условия:
// 1) до этого АЦП уже был включен ADON=1;
// 2) кроме бита ADON другие биты не меняются
}


Сообщение отредактировал IgorKossak - Feb 7 2012, 20:10
Причина редактирования: [codebox]
Go to the top of the page
 
+Quote Post
koyodza
сообщение Feb 8 2012, 20:41
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 213
Регистрация: 28-02-07
Из: Киев
Пользователь №: 25 744



Цитата(Юрий_СВ @ Feb 7 2012, 21:38) *
У меня работает. (Надеюсь, таймер и канал сравнения настроены)

Ну и где там TIM1 ?
Проблема была не в запуске АЦП в принципе, а в его запуске от TIM1.
Цитата(Юрий_СВ @ Feb 8 2012, 13:33) *
В самый раз. Номер канала меняется в прерывании.
1) между преобразованиями надо, как минимум, управлять внешними коммутаторами.
4) переношу большую программу с другого ядра (AVR) - переписывать пол программы - ради чего ?

Я Вам уже на сахаре говорил: не нужно пытаться использовать здесь старые навыки. Это вам не АВР, какими ещё "внешними коммутаторами" Вы тут управляете? 16-канального встроенного мало?
Встроенным мультиплексором АЦП управляет сам, нужно только его настроить, дальше он будет переключать каналы и складывать результаты куда нужно (если ещё и DMA настроено).
Цитата(Юрий_СВ @ Feb 8 2012, 16:37) *
- для обычных (regular) каналов (5-й и 6-й)
- запуск от таймер 1, канал1
Последовательный перебор каналов не используется - следующий канал выбирается после очередного преобразования.

Это только вручную. Но ЗАЧЕМ делать через *опу если можно сделать нормально?
Цитата(Юрий_СВ @ Feb 8 2012, 14:10) *
Надеюсь, вы шутите. Если человек хоть пару раз пролистывал описание МК - то у него всё необходимое есть.

Человек даже не посчитал нужным сказать какие каналы он использует: обычные или вклинивающиеся.
(для них предусмотрены совершенно разные источники запуска)
А вы мне предлагаете трактат на 3 страницы писать ?

Да, не посчитал, и у меня были на то основания: TIM1 должен работать и с regular и с injected каналами (только разные модули сравнения используются).

Цитата(Юрий_СВ @ Feb 8 2012, 14:10) *
Для него ведь важно:
1) Что это хоть у кого-нибуть работоспособно (у меня работает)

Я использую этот МК с 2007г, Вы - только три недели. АЦП у меня используется в каждом проекте, просто не было необходимости запускать его именно от TIM1. Или Вы думаете, [CENSORED]?

Цитата(Юрий_СВ @ Feb 8 2012, 14:10) *
2) настройка битов регистра ADC1_CR2
// EXTTRIG=1 ; // запуск преобразования обычного канала по внешнему сигналу - разрешен
// EXTSEL=000; // источник внешнего запускающего сигнала для обычного канала - таймер 1, канал 1

Практически каждый бит подписан по-русски - неужели "убеждения" не позволят их поменять под себя?

Это меня не интересует.

Цитата(Юрий_СВ @ Feb 8 2012, 14:10) *
Трудностей с отключением инверсных выходов таймера 1 у меня тоже не было. Работает нормально.

Они обязательно появятся, когда Вам понадобится использовать одновременно 4 таймера с выводом 3-4 каналов каждого таймера наружу, 2 SPI, UART, несколько каналов АЦП и всё это в малоногом корпусе. Вот тогда и полезут глюки, связанные с ремапом и невозможностью использования некоторой периферии одновременно

Сообщение отредактировал IgorKossak - Feb 9 2012, 08:19
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- koyodza   STM32: запуск АЦП от TIM1   Jul 24 2011, 13:36
- - AHTOXA   TIM_BDTR_MOE?   Jul 25 2011, 09:12
|- - koyodza   Цитата(AHTOXA @ Jul 25 2011, 12:12) TIM_B...   Jul 28 2011, 15:25
- - Huston007   Цитата(koyodza @ Jul 24 2011, 20:36) У ко...   Aug 18 2011, 13:03
|- - Михаил Черепанов   Цитата(Huston007 @ Aug 18 2011, 19:03) По...   Feb 7 2012, 03:19
- - sevastianovd   koyodza, попробуйте пример из стандартной библиоте...   Feb 7 2012, 08:51
- - AHTOXA   Цитата(Юрий_СВ @ Feb 8 2012, 01:38) У мен...   Feb 8 2012, 03:16
|- - Юрий_СВ   Цитата(AHTOXA @ Feb 8 2012, 06:16) Я прав...   Feb 8 2012, 09:08
|- - AHTOXA   Цитата(Юрий_СВ @ Feb 8 2012, 15:08) Нет в...   Feb 8 2012, 11:05
|- - Юрий_СВ   Цитата(AHTOXA @ Feb 8 2012, 14:05) Я не о...   Feb 8 2012, 11:33
|- - AHTOXA   Дык, надо ж сразу обо всём этом писать. А то получ...   Feb 8 2012, 11:41
|- - Юрий_СВ   Цитата(AHTOXA @ Feb 8 2012, 14:41) Дык, н...   Feb 8 2012, 12:10
|- - AHTOXA   Цитата(Юрий_СВ @ Feb 8 2012, 18:10) Надею...   Feb 8 2012, 12:53
|- - Юрий_СВ   Цитата(AHTOXA @ Feb 8 2012, 15:53) вопрос...   Feb 8 2012, 14:37
- - Юрий_СВ   Цитата(koyodza @ Feb 8 2012, 23:41) Ну и ...   Feb 9 2012, 12:13
- - koyodza   Цитата(Юрий_СВ @ Feb 9 2012, 14:13) // EX...   Feb 9 2012, 15:28
- - MiklPolikov   Пытаюсь запустить АЦП от события TIM6_TRGO Не п...   Apr 13 2012, 22:00
- - scifi   Цитата(MiklPolikov @ Apr 14 2012, 02:00) ...   Apr 14 2012, 08:24
- - MiklPolikov   Цитата(scifi @ Apr 14 2012, 11:24) Тут ну...   Apr 14 2012, 10:53
- - MiklPolikov   Разобрался. Оказалось что АЦП не хочет запускатся...   Apr 14 2012, 21:20
- - koyodza   Цитата(MiklPolikov @ Apr 14 2012, 23:20) ...   Apr 15 2012, 13:29


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 18:06
Рейтинг@Mail.ru


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