adnega 11 2 февраля, 2022 Опубликовано 2 февраля, 2022 · Жалоба 40 минут назад, khlenar сказал: Одного НТ достаточно. Заполнились первые 2 отсчета, появилось прерывание DMA. Почему вы обращаетесь ко всем четырем - в двух-то еще пусто. Может, вы HT и TC перепутали? Но даже в этом случае вы будете тягать данные с нулевого элемента, а там уже может оказаться новое измерение, или еще старое лежать, или случайное старое/новое, и это не только нулевого элемента касается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khlenar 5 2 февраля, 2022 Опубликовано 2 февраля, 2022 · Жалоба Ну в любом случае конвертируется 1 раз и все, больше прерывания не происходит. я писал, что полностью код исключал, оставлял только сброс прерывания, все равно только один раз происходит прерывание при старте. Такое впечатление, что АЦП 1 раз преобразует и засыпает. Режим в битах стоит непрерывное преобразование. В регистре данных DR почему то сразу заполняется 0хFF Хотя да, там у меня операционник с неподключенным входом, та выход по максимуму. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex-lab 4 2 февраля, 2022 Опубликовано 2 февраля, 2022 · Жалоба 54 minutes ago, khlenar said: На 303 столкнулся с непонятками. У вас написано, что стар преобразования происходит программно. Но где он фактически происходит? В какой строке? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khlenar 5 2 февраля, 2022 Опубликовано 2 февраля, 2022 · Жалоба /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_SPI2_Init(); MX_I2C1_Init(); MX_ADC1_Init(); MX_ADC2_Init(); MX_TIM2_Init(); MX_DMA_Init(); MX_TIM3_Init(); /* USER CODE BEGIN 2 */ ADC1nextinit(); ADC2nextinit(); LL_ADC_REG_StartConversion(ADC1); LL_ADC_REG_StartConversion(ADC2); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 2 февраля, 2022 Опубликовано 2 февраля, 2022 · Жалоба Нужны значения регистров статуса DMA и ADC после "затыка". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khlenar 5 2 февраля, 2022 Опубликовано 2 февраля, 2022 · Жалоба Сейчас покушаю...)) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 245 2 февраля, 2022 Опубликовано 2 февраля, 2022 · Жалоба 2 часа назад, adnega сказал: Ответьте на прямой вопрос: может быть так, что вы входите в такой обработчик, а флаг события при этом сброшен? 1) Если источник прерывания на данном векторе единственный; 2) если этот флаг программист не очищал где-то помимо этого ISR (криво, так что флаг в регистре периферии очистился, а в pending-регистре NVIC - остался); 3) если не генерил этого прерывания программно (через соответствующий регистр NVIC) Если это всё выполняется - то должен быть установлен на входе в ISR. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khlenar 5 2 февраля, 2022 Опубликовано 2 февраля, 2022 · Жалоба Вот регистры стутуса dma adc Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 2 февраля, 2022 Опубликовано 2 февраля, 2022 · Жалоба Вроде, все ок, кроме OVR, но вы это и сами знали. Тогда давайте смотреть ADC1_CFGR и DMA1_CCR1. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khlenar 5 2 февраля, 2022 Опубликовано 2 февраля, 2022 · Жалоба ок Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khlenar 5 2 февраля, 2022 Опубликовано 2 февраля, 2022 · Жалоба В общем то я здесь тоже криминала не вижу) А нет, PSIZE 0 это значит 8битная переферия Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 2 февраля, 2022 Опубликовано 2 февраля, 2022 · Жалоба Странно, т.к. у вас LL_DMA_SetPeriphSize(DMA1, LL_DMA_CHANNEL_1, LL_DMA_PDATAALIGN_HALFWORD); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khlenar 5 2 февраля, 2022 Опубликовано 2 февраля, 2022 · Жалоба Да. я поправил это дело, сейчас он 16 битный, но все равно не помогло( Блин, хоть в одиночный ставь и каждый раз запускай его. Тогда нафиг этот DMA нужен ( Тут явно DMA не работает А может АЦП )) Ведь по сути АЦП должно давать прерывание по окончании конверсии Ошибки кристала надо почитать. может есть че Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khlenar 5 2 февраля, 2022 Опубликовано 2 февраля, 2022 · Жалоба Каким то образом не устанавливается флаг HTIFx потому, что если я его не сбрасываю, то у меня зацикливается в DMA прерывании. к стати я вот вижу , что в DMA CCR1 не установлен MINC а это инкремент памяти. Елки палки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khlenar 5 2 февраля, 2022 Опубликовано 2 февраля, 2022 · Жалоба Мля, заработал ))) DMA совсем не настроен был. См. вверху. А что, куб там какие то кода пишет, а в итоге регистры не настроены ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться