-
- Сорри, наверное так KT(5272 знак., 16.10.2012 22:30 - 22:43)koyodza
- насколько я понимаю, тут АЦП сконфигурирован в continuous mode, он молотит всё время с максимальной скоростью, какой может. Никакой синхронизации тут нет. DMA активируется по готовности данных и перекладывает из АЦП в ОЗУ - koyodza(16.10.2012 22:26)
- Ну да, АЦП молотит как бешенный, три канала на 48Мгц окучивает за 17 мкс, (большую часть времени занимает семплирование). Попробую завтра прикрутить к таймеру. Интересно, если таймер настроен на генерацию ШИМ, может ли он и АЦП запускать? (по KT(14 знак., 16.10.2012 22:48)
- это очень медленно на самом деле. Да, таймер может запускать АЦП, даже если он делает что-то другое koyodza(98 знак., 16.10.2012 23:57)
- Чего то не получается реализовать запуск АЦП по таймеру совмесно с работой DMA. Когда ставлю в настройках АЦП ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConv_T15_TRGO; период опроса АЦП все равно остается равным 17 мкс, хотя KT(2818 знак., 17.10.2012 12:16)
- чтобы был запуск от чего-то, нужно для начала ADC_ContinuousConvMode = DISABLE сделать. В самом таймере, возможно, TRGO нужно включать, чтобы он происходил по TUV, тут смотреть надо - koyodza(17.10.2012 12:26)
- Спасибо, включение триггера помогло - TIM_SelectOutputTrigger(TIM15, TIM_TRGOSource_Update); - KT(17.10.2012 12:50 - 13:10)
- Для полного щастья еще один вопрос: флаг DMA1_FLAG_TC1 может быть источником прерывания? - KT(17.10.2012 14:22)
- все флаги DMA (их всего 3 у F10х) могут вызывать прерывание. Но для каждого канала одно общее, внутри нужно разбирать флаги и сбрасывать - koyodza(17.10.2012 14:28)
- Пытаюсь запустить прерывание, пока не работает, вот код KT(1499 знак., 17.10.2012 18:31)
- нет только прерываний или заполнение буфера пересылками DMA тоже не происходит? koyodza(301 знак., 17.10.2012 19:19)
- Похоже у меня траблы с настройкой проекта. Обработчик прерывания линкером не включается в проэкт. По крайней мере дизасемблером я не вижу его в памяти. Когда то игрался с самым первым дискавери и наступал на эти грабли. Как линкер знает что KT(59 знак., 17.10.2012 20:51)
- его имя должно быть в startup_xxx.s - koyodza(17.10.2012 21:40)
- Спасибо! Траблы были именно в осутствии стартапа в проекте. А сам стартап потребовал еще два файла system_stm32f0xx.h и system_stm32f0xx.c - KT(18.10.2012 11:44)
- Какой-то у них стартап замороченный. SciFi(1003 знак., 18.10.2012 11:50)
- Стартап потребовал функцию SystemInit, а она как раз в файле CMSIS-са system_stm32f0xx.c - KT(18.10.2012 12:34)
- Какой-то у них стартап замороченный. SciFi(1003 знак., 18.10.2012 11:50)
- Спасибо! Траблы были именно в осутствии стартапа в проекте. А сам стартап потребовал еще два файла system_stm32f0xx.h и system_stm32f0xx.c - KT(18.10.2012 11:44)
- его имя должно быть в startup_xxx.s - koyodza(17.10.2012 21:40)
- Вот KT(1279 знак., 17.10.2012 20:08)
- Если в основной цикл вставить такой фрагмент KT(403 знак., 17.10.2012 20:19)
- Похоже у меня траблы с настройкой проекта. Обработчик прерывания линкером не включается в проэкт. По крайней мере дизасемблером я не вижу его в памяти. Когда то игрался с самым первым дискавери и наступал на эти грабли. Как линкер знает что KT(59 знак., 17.10.2012 20:51)
- нет только прерываний или заполнение буфера пересылками DMA тоже не происходит? koyodza(301 знак., 17.10.2012 19:19)
- Пытаюсь запустить прерывание, пока не работает, вот код KT(1499 знак., 17.10.2012 18:31)
- все флаги DMA (их всего 3 у F10х) могут вызывать прерывание. Но для каждого канала одно общее, внутри нужно разбирать флаги и сбрасывать - koyodza(17.10.2012 14:28)
- Для полного щастья еще один вопрос: флаг DMA1_FLAG_TC1 может быть источником прерывания? - KT(17.10.2012 14:22)
- Спасибо, включение триггера помогло - TIM_SelectOutputTrigger(TIM15, TIM_TRGOSource_Update); - KT(17.10.2012 12:50 - 13:10)
- чтобы был запуск от чего-то, нужно для начала ADC_ContinuousConvMode = DISABLE сделать. В самом таймере, возможно, TRGO нужно включать, чтобы он происходил по TUV, тут смотреть надо - koyodza(17.10.2012 12:26)
- Так время семплирования большое, 71.5 цикла. Думаю если его уменьшить, и общее время опроса каналов резко уменьшится. - KT(17.10.2012 09:43)
- Уменьшил время семплирования до 1.5 цикла, три канала опрашиваются за 3 мкс. - KT(17.10.2012 10:01 - 10:27)
- Чего то не получается реализовать запуск АЦП по таймеру совмесно с работой DMA. Когда ставлю в настройках АЦП ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConv_T15_TRGO; период опроса АЦП все равно остается равным 17 мкс, хотя KT(2818 знак., 17.10.2012 12:16)
- это очень медленно на самом деле. Да, таймер может запускать АЦП, даже если он делает что-то другое koyodza(98 знак., 16.10.2012 23:57)
- Ну да, АЦП молотит как бешенный, три канала на 48Мгц окучивает за 17 мкс, (большую часть времени занимает семплирование). Попробую завтра прикрутить к таймеру. Интересно, если таймер настроен на генерацию ШИМ, может ли он и АЦП запускать? (по KT(14 знак., 16.10.2012 22:48)
- насколько я понимаю, тут АЦП сконфигурирован в continuous mode, он молотит всё время с максимальной скоростью, какой может. Никакой синхронизации тут нет. DMA активируется по готовности данных и перекладывает из АЦП в ОЗУ - koyodza(16.10.2012 22:26)
- Сорри, наверное так KT(5272 знак., 16.10.2012 22:30 - 22:43)koyodza