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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> 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
AHTOXA
сообщение Jul 25 2011, 09:12
Сообщение #2


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



TIM_BDTR_MOE?


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
koyodza
сообщение Jul 28 2011, 15:25
Сообщение #3


Местный
***

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



Цитата(AHTOXA @ Jul 25 2011, 12:12) *
TIM_BDTR_MOE?

Пробовал, чего-то не фурычит.

Есть пример точно работающего АЦП от TIM1 ?
Go to the top of the page
 
+Quote Post
Huston007
сообщение Aug 18 2011, 13:03
Сообщение #4





Группа: Новичок
Сообщений: 6
Регистрация: 18-08-11
Пользователь №: 66 780



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

И ведь не один проект уже на нём реализовал, а вот с TIM1 постоянно какие-то засады: то OCxN оказывается невозможно отключить, когда он попадает на другую периферию, то вот с запуском АЦП... Все таймера 2..4 сейчас заняты, перебросить запуск АЦП некуда


Послушайте, у меня на ST32F207 вообще не получается стартовать АЦП от таймеров. Покажите пожалуйста, как у вас работало с другими таймерами
Go to the top of the page
 
+Quote Post
Михаил Черепанов
сообщение Feb 7 2012, 03:19
Сообщение #5





Группа: Новичок
Сообщений: 1
Регистрация: 7-02-12
Из: Екатеринбург
Пользователь №: 70 121



Цитата(Huston007 @ Aug 18 2011, 19:03) *
Послушайте, у меня на ST32F207 вообще не получается стартовать АЦП от таймеров. Покажите пожалуйста, как у вас работало с другими таймерами


когда искал, как запустить АЦП по таймеру 1 или 8, попал на эту тему.
Вроде разобрался. При такой инициализации на STM32F205 АЦП запускается.
Может кому пригодится...

К библиотекам душа не лежит. Всё равно приходится по руководству разбираться как что работает.
У меня ещё DMA настроено.


Сообщение отредактировал IgorKossak - Feb 7 2012, 10:42
Причина редактирования: Длинные коды следует приаттачивать файлом

Прикрепленные файлы
Прикрепленный файл  code.txt ( 64.24 килобайт ) Кол-во скачиваний: 624
 
Go to the top of the page
 
+Quote Post
sevastianovd
сообщение Feb 7 2012, 08:51
Сообщение #6


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

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



koyodza, попробуйте пример из стандартной библиотеки stm um0427/FWLib/examples/ADC/TIMTrigger_AutoInjection
Go to the top of the page
 
+Quote Post
Юрий_СВ
сообщение Feb 7 2012, 19:38
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 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
AHTOXA
сообщение Feb 8 2012, 03:16
Сообщение #8


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(Юрий_СВ @ Feb 8 2012, 01:38) *
У меня работает. (Надеюсь, таймер и канал сравнения настроены)
Код
// последовательность обычных каналов
ADC1_SQR1=0x00000000;

Я правильно понимаю, что у вас длина последовательности равна нулю? Почему так?


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Юрий_СВ
сообщение Feb 8 2012, 09:08
Сообщение #9


Участник
*

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



Цитата(AHTOXA @ Feb 8 2012, 06:16) *
Я правильно понимаю, что у вас длина последовательности равна нулю? Почему так?

Нет вы понимаете неправильно. Она равна 1.
Цитата
Bits 23:20 L[3:0]: Regular channel sequence length
These bits are written by software to define the total number of conversions in the regular
channel conversion sequence.
0000: 1 conversion


Сообщение отредактировал Юрий_СВ - Feb 8 2012, 09:09
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Feb 8 2012, 11:05
Сообщение #10


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(Юрий_СВ @ Feb 8 2012, 15:08) *
Нет вы понимаете неправильно. Она равна 1.

Я не о том. Вопрос вот какой: а не маловато ли вам будет одного преобразования для двух каналов?


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Юрий_СВ
сообщение Feb 8 2012, 11:33
Сообщение #11


Участник
*

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



Цитата(AHTOXA @ Feb 8 2012, 14:05) *
Я не о том. Вопрос вот какой: а не маловато ли вам будет одного преобразования для двух каналов?

В самый раз. Номер канала меняется в прерывании.
1) между преобразованиями надо, как минимум, управлять внешними коммутаторами.
2) в некоторых случаях приходится пропустить несколько прерываний при работающем таймере.
(заботиться о синхронизации номера канала в АЦП и программе - не хотелось бы)
3) мне удобнее обрабатывать каждый канал отдельно.
4) переношу большую программу с другого ядра (AVR) - переписывать пол программы - ради чего ?
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Feb 8 2012, 11:41
Сообщение #12


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Дык, надо ж сразу обо всём этом писать. А то получается ерунда - делитесь вроде как рабочим куском, а он оказывается вон ещё сколько всего требует.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Юрий_СВ
сообщение Feb 8 2012, 12:10
Сообщение #13


Участник
*

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



Цитата(AHTOXA @ Feb 8 2012, 14:41) *
Дык, надо ж сразу обо всём этом писать. А то получается ерунда - делитесь вроде как рабочим куском, а он оказывается вон ещё сколько всего требует.

Надеюсь, вы шутите. Если человек хоть пару раз пролистывал описание МК - то у него всё необходимое есть.

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

Для него ведь важно:
1) Что это хоть у кого-нибуть работоспособно (у меня работает)
2) настройка битов регистра ADC1_CR2
// EXTTRIG=1 ; // запуск преобразования обычного канала по внешнему сигналу - разрешен
// EXTSEL=000; // источник внешнего запускающего сигнала для обычного канала - таймер 1, канал 1

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

Трудностей с отключением инверсных выходов таймера 1 у меня тоже не было. Работает нормально.

Сообщение отредактировал Юрий_СВ - Feb 8 2012, 12:11
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Feb 8 2012, 12:53
Сообщение #14


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



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

Тогда зачем ему ваш ответ? Вернее не так. Зачем вы ему тогда отвечаете? У него же есть всё необходимое! sm.gif
Цитата
Человек даже не посчитал нужным сказать какие каналы он использует: обычные или вклинивающиеся.

Если вы посмотрите повнимательнее, то увидите, что вопрос был задан более года назад. То есть, скорее всего, "человеку" ваш ответ уже не нужен. То есть, вы пишете свой ответ для других читателей форума, у которых возможно возникнет похожая проблема. И следовательно (это моё твёрдое убеждение), надо делать это внятно и понятно, с достаточной степенью детализации, а не бросать огрызки нерабочего кода, комментарии в котором к тому же не совпадают с его содержанием.
Цитата
А вы мне предлагаете трактат на 3 страницы писать ?

Не обязательно три страницы. Хотя бы эти ваши четыре пункта из поста №11.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Юрий_СВ
сообщение Feb 8 2012, 14:37
Сообщение #15


Участник
*

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



Цитата(AHTOXA @ Feb 8 2012, 15:53) *
вопрос был задан более года назад.

Ой.. думал свежая тема (передо мной пара человек вчера оставили сообщения..)

Настройка АЦП stm32f100RB
- с калибровкой АЦП
- для обычных (regular) каналов (5-й и 6-й)
- запуск от таймер 1, канал1

Последовательный перебор каналов не используется - следующий канал выбирается после очередного преобразования.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 18:54
Рейтинг@Mail.ru


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