15.05.2018, 16:06
|
|
Временная регистрация
Регистрация: 20.05.2015
Адрес: Бишкек, Киргизия
Сообщений: 59
Сказал спасибо: 22
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: синхронизация осциллограммы
Сообщение от DanilinSA
|
А у тебя сейчас пока ДМА не отработает - ядро крутится в пустом цикле ожидая событий.
|
Я понимаю, что мой код - "быдлокод" в чистом виде. Хочется как побыстрее - вчера содрал где-то код инициализации FSMC SPL, немного подправил под свой камень и сразу заработало. Думал, что с ADC тоже получится - ан нет.
Я почти два месяца убил на въезжание в HAL - так и не разобрался до уяснения хотя бы в общих чертах, вот решил попробовать CMSIS и SPL.
На взгляд новичка - это попроще или после "курения" HAL так кажется?
Забыл спросить, может из-за этого фигня получается.
Первой строчкой в main.c объявляю:
#define HSE_VALUE ((uint32_t)8000000) //кварц на плате
И еще в файле system_stm32f4xx.c меняю значение PLL_M
/* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */
//#define PLL_M 25
#define PLL_M 8 //168MHz
Где-то на просторах интернета такое увидел.
Вывод по FSMC на дисплей работает.
Последний раз редактировалось фёдорыч; 15.05.2018 в 16:24.
|
|
|
|
15.05.2018, 18:29
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.11.2010
Адрес: г. Дзержинск Нижегородская обл.
Сообщений: 1,718
Сказал спасибо: 130
Сказали Спасибо 1,108 раз(а) в 527 сообщении(ях)
|
Re: синхронизация осциллограммы
В теории облегчает. Но лично мне - мешает.
Причина:
1) Не всегда хорошо документировано, какие флаги в какое состояние в регистрах выставляются.
2) Сильно загруженный код. И сильно не оптимальный результат. Плата за универсальность.
Мне проще сразу в регистр число записать, чем заполнять монстроподобную структуру для вызова функции. Число собираю как сумма констант с удобноваримыми названиями. Быстро, читабельно ...
Но конечно бывает частенько пользуюсь "макрофункциями" моего специфичного компилятора.
|
|
|
|
15.05.2018, 19:59
|
|
Временная регистрация
Регистрация: 20.05.2015
Адрес: Бишкек, Киргизия
Сообщений: 59
Сказал спасибо: 22
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: синхронизация осциллограммы
Вы не первый человек,от которого слышу, что лучший результат получается, когда код пишется в регистры, без всяких библиотек. У меня скромный опыт по работе с HAL EXTI, когда я не смог запретить/разрешить внешнее прерывание, используя HAL. А запись напрямую в регистры принесло необходимый результат. Одно но: необходимо тщательно "талмудить" RM, который не очень внятно написан на взгляд новичка.
Что касаемо моей темы: посмотрел данные в буфере ADC_Data - какая-то каша, не похожая на оцифрованный меандр. Поменял тестовый генератор - результата нет, т.е. результат тот же самый. Буду копать код, попытаюсь обойтись работой с регистрами, без применения SPL.
Всем спасибо и всем удачи!
|
|
|
|
15.05.2018, 21:43
|
|
Прописка
Регистрация: 21.04.2018
Сообщений: 174
Сказал спасибо: 1
Сказали Спасибо 66 раз(а) в 53 сообщении(ях)
|
Re: синхронизация осциллограммы
Как сделать синхронизацию в самописном псевдо-осциллографе?
Очень просто. Проводите непрерывные измерения АЦП, выставив порог и AWD (analog watchdog) и разрешив от него прерывание. В прерывании скомандуйте начинать заполнение буфера захвата, размером до конца дисплея (или до конца буфера), одновременно запретив это прерыание. Затем останавливайте заполнение, разрешайте прерывание от AWD и ожидайте следующего события.
|
|
|
Сказали "Спасибо" Исбанни
|
|
|
16.05.2018, 01:57
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,257
Сказал спасибо: 11,170
Сказали Спасибо 3,858 раз(а) в 2,928 сообщении(ях)
|
Re: синхронизация осциллограммы
индюк, да какая бы не была плата, можно делать или как хочется или как нужно.
Во втором варианте математика не сильно сложная, но в результате получится работать с любым сигналом, а не только с заранее заложенным в алгоритм.
Аналоговые каскады нужны для решения именно аналоговых вопросов, которые в цифровую часть занести по некоторым причинам (скорость, память,…) затруднительно.
Синхронизация к таким причинам относится при совсем уж жестком лимите на ресурсы.
фёдорыч, последовательно и по шагам - сначала просто достоверную выборку получить от ADC, а затем уже заняться выводом ее на экран…
Вариант с постановкой на бумаге это никак не отменяет .
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
|
|
|
Сказали "Спасибо" mike-y-k
|
|
|
16.05.2018, 05:14
|
|
Временная регистрация
Регистрация: 20.05.2015
Адрес: Бишкек, Киргизия
Сообщений: 59
Сказал спасибо: 22
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: синхронизация осциллограммы
Сообщение от Исбанни
|
Как сделать синхронизацию в самописном псевдо-осциллографе?
Очень просто. Проводите непрерывные измерения АЦП, выставив порог и AWD (analog watchdog) и разрешив от него прерывание. В прерывании скомандуйте начинать заполнение буфера захвата, размером до конца дисплея (или до конца буфера), одновременно запретив это прерыание. Затем останавливайте заполнение, разрешайте прерывание от AWD и ожидайте следующего события.
|
У меня была идея использовать AWD для синхронизации. Меня остановила сложность (для новичка) реализации: AWD в режиме DualInterleaved.
Поэтому, следуя совету
Сообщение от mike-y-k
|
фёдорыч, последовательно и по шагам - сначала просто достоверную выборку получить от ADC, а затем уже заняться выводом ее на экран…
Вариант с постановкой на бумаге это никак не отменяет .
|
решил вернутся к тому, с чего начинал.
|
|
|
Сказали "Спасибо" фёдорыч
|
|
|
16.05.2018, 05:48
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,257
Сказал спасибо: 11,170
Сказали Спасибо 3,858 раз(а) в 2,928 сообщении(ях)
|
Re: синхронизация осциллограммы
фёдорыч, каждый компонент в планируемой конфигурации отдельно. Полученные знания на рихтовку задуманного и так к итогу…
Эволюция со всех сторон выгоднее кавалерийской атаки по фронту
Даже тот же опыт и знания в процессе…
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
|
|
|
Сказали "Спасибо" mike-y-k
|
|
|
16.05.2018, 08:09
|
|
Временная регистрация
Регистрация: 20.05.2015
Адрес: Бишкек, Киргизия
Сообщений: 59
Сказал спасибо: 22
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: синхронизация осциллограммы
Стало прояснятся ситуация. ADC крутится в циклическом режиме, DMA в нормальном режиме заполняет буфер. После обработки буфера необходимо включить поток, DMA снова заполнит буфер и т.д. Я правильно понимаю?
Возник еще вопрос - если изменять системную частоту, нужен какой-либо тайм-аут для ADC? Есть желание разогнать системную частоту на время работы ADC.
Сам камень разгонял до 320 MHz, FSMC работает на такой частоте, а вот ADC?
Есть у кого-нибудь инфа на сей счет?
|
|
|
|
16.05.2018, 20:34
|
|
Временная регистрация
Регистрация: 20.05.2015
Адрес: Бишкек, Киргизия
Сообщений: 59
Сказал спасибо: 22
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: синхронизация осциллограммы
Победил.
Почему-то не прикрепляется папка с проектом.
|
|
|
|
16.05.2018, 21:21
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,257
Сказал спасибо: 11,170
Сказали Спасибо 3,858 раз(а) в 2,928 сообщении(ях)
|
Re: синхронизация осциллограммы
фёдорыч, а прикрепить можно только по одному файлу, а папку только в архиве сжатую. Теперь можно вывод на экран из тестового набора данных для начала и лучше сразу отдельной подпрограммой с указателем на буфер и параметрами синхронизации на входе.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 21:21.
|
|