14.03.2017, 20:58
|
|
Гражданин KAZUS.RU
Регистрация: 16.02.2012
Сообщений: 441
Сказал спасибо: 89
Сказали Спасибо 735 раз(а) в 149 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Цитата:
|
Если хотите точно отмерить очень малые интервалы - вставляйте ассемблерные вставки nop-ов или циклов
|
после некоторого бодания с асмом удалось заинлайнить функцию и асм-цикл задержки:
Код:
|
inline void delay_loops(u32 loops){
asm volatile (
".syntax unified \n"
"1: subs %0,#1 \n"
" bne 1b \n"
".syntax divided \n"
: "=l"(loops) : "0l"(loops) : "cc"
);
} |
вся задержка транслируется в 3 команды / 6 байт (+4 байта если константа ›8 бит):
Код:
|
80009fc: 2164 movs r1, #100 ; 0x64
80009fe: 3901 subs r1, #1
8000a00: d1fd bne.n 80009fe ‹lcd_wr4+0x5a› |
3 такта на цикл при Flash latency=0 (‹=24MHz), 6 - при 1 (‹=48MHz)
генерация мкс/мс/с задержек:
Код:
|
#define D_C ((F_CPU ‹= 24000000uL) ? 3.0 : (F_CPU ‹= 48000000uL) ? 6.0 : 9.0)
#define delay_us(us) delay_loops((double)(us) * F_CPU / D_C / 1000000.0))
#define delay_ms(ms) delay_loops((double)(ms) * F_CPU / D_C / 1000.0))
#define delay_s (s) delay_loops((double)(s) * F_CPU / D_C)) |
Последний раз редактировалось zöner; 18.03.2017 в 15:18.
|
|
|
|
14.03.2017, 21:34
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от zöner
|
после некоторого бодания с асмом удалось заинлайнить функцию и асм-цикл задержки
|
Поздравляю... с зря потраченным временем!
|
|
|
Сказали "Спасибо" STM32F0
|
|
|
14.03.2017, 21:36
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от AR_Favorit
|
а разве STM32F030 вообще умеет такое? ........... в отличие от RM0091, который идет на STM32F031...
|
а в чём различие... хоть догадываешься?
|
|
|
|
16.03.2017, 05:07
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
__________________
Глаза боятся,а руки делают.
|
|
|
|
16.03.2017, 09:46
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от STM32F0
|
а в чём различие... хоть догадываешься?
|
Как бы то ни было, а запустить это прерывание я так и не смог.
|
|
|
|
16.03.2017, 09:51
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.03.2010
Сообщений: 2,897
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от STM32F0
|
а в чём различие... хоть догадываешься?
|
Между Value line и Accsess line?
Неа, никаких идей...
|
|
|
|
16.03.2017, 19:58
|
|
Вид на жительство
Регистрация: 09.12.2009
Адрес: Россия, Тула
Сообщений: 377
Сказал спасибо: 192
Сказали Спасибо 156 раз(а) в 99 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от STM32F0
|
Поздравляю... с зря потраченным временем!
|
Указывая на ошибку - предлагают другое решение. Не?
А то это больше похоже на пёрд в лужу.
Я, к примеру, задачу измерения или отсчета микросекундных интервалов решал с помощью таймера.
Задаю значение счетчика и смотрю флаг.
Наверняка неоптимально, зато быстро решено и точно меряет.
А вы как ее решаете?
|
|
|
|
20.03.2017, 15:10
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Для чего используют инжектронные каналы в ацп?
Понимаю что инжекторный канал прерывает измерение регулярного например от тригера определенного.
__________________
Глаза боятся,а руки делают.
|
|
|
|
22.03.2017, 08:53
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Самое главное различие инженционных и регулярных групп каналов в том, что у группы инжекционных - отдельные регистры результата. В этой группе может быть до 4 любых физических каналов. Преобразование выполняется последовательно в заданном порядке, а результаты складываются в отдельных 4 регистра, каждый для своего канала.
В группе регулярных каналов регистр результата один, но зато все 16 каналов могут быть назначены в группу в произвольном порядке измерений. И программа по прерыванию или ДМА должны успеть забрать результат предыдущего измерения до того, как новое измерение закончится.
Группы инжекционных и регулярных каналов могут работать вместе.
Разнесение по времени - это задача программиста.
|
|
|
Эти 2 пользователя(ей) сказали Спасибо NewWriter за это сообщение:
|
|
|
22.03.2017, 10:06
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Большое спасибо за обьянении. Заметил тоже что для инжекторных сделали 4 регистра данных что заманчиво. Сейчас пытаюсь запустить преобразование по сравнению от таймера 1.
А вот инжекторные тоже можно забирать через дма результаты?
Пример ваш еще не разобрал по Dma burst, изучу как ацп до конца добью через дма и попробую в реале тогда шим с Dma burst.
__________________
Глаза боятся,а руки делают.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 07:37.
|
|