24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

Микроконтроллеры

 Аноним 09/11/21 Втр 19:20:09 #1 №2208183 
F3.png
Не нашёл трэда про микроконтроллеры - создал.
На микроконтроллере STM32F303VCT6 запустил прерывания по завершению преобразования АЦП (End of conversion of a regular group) выстави соответствующие биты EOC. Но когда увеличиваю значение sampling time больше 2 (010 в двоичном), то прерывания перестают происходить. АЛУ при этом нормально работает, взаимодействует с портами (для проверки кнопкой зажигаю светодиод, а при отжатой кнопки светодиод мигает от прерываний)
Как и почему sampling time отключает прерывания?

Код настройки АЦП:
NVIC->ISER[0] = (1 << ((uint32_t)(18)));////установить прерывание 18, под которым АЦП
ADC1->CR = ADC_CR_ADVREGEN_0; // напряжение
ADC1->IER |= ADC_IER_EOCIE; // прерывание по готовности
ADC1->CFGR |= ADC_CFGR_CONT; // непрерывный режим
ADC1->SQR1 |= ADC_SQR1_SQ1_0; // канал 1
ADC1->SMPR1 |= ADC_SMPR1_SMP1_1;// Вот тут не работает при больших sampling time
ADC12_COMMON->CCR |= ADC12_CCR_VBATEN | ADC12_CCR_TSEN | ADC12_CCR_VREFEN | ADC12_CCR_CKMODE_0 | ADC12_CCR_CKMODE_1; // включения дополнений и предделитель 4
ADC1->CR = ADC_CR_ADVREGEN_0 | ADC_CR_ADEN; // включение
ADC1->ISR = ADC_ISR_EOC; // сбросить бит прерывания по готовности
ADC1->CR = ADC_CR_ADVREGEN_0 | ADC_CR_ADEN | ADC_CR_ADSTART; // пуск
Аноним 09/11/21 Втр 20:08:17 #2 №2208247 
>>2208183 (OP)
> Не нашёл трэда про микроконтроллеры
Это тонкий намёк на то, что на этой доске одни вебмакаки, и в микроконтроллерах никто не разбирается.
Аноним 10/11/21 Срд 12:10:41 #3 №2208667 
>>2208247
Пошёл нахуй.
>>2208183 (OP)
На hw искать не пробовал?
Контроллер не выставляет бит события при больших sampling time Аноним OP 10/11/21 Срд 14:36:08 #4 №2208784 
>>2208183 (OP)
Оказывает при sampling time больше 4,5 ADC clock cycles (то есть биты SMP в регистре SMPR равны 011 или больше) не появляется единица в бите события EOC в регистре ISR после простого запуска АЦП. Это проверил прочтением EOC в замкнутом цикле при выключенных прерываниях.

>>2208667
>hw
Это где? Я искал в гугле по запросу STM32 ADC interrupt sampling time.
Аноним 10/11/21 Срд 22:28:41 #5 №2209174 
>>>/ra/
Аноним 11/11/21 Чтв 09:34:47 #6 №2209383 
>>2208784
http://2ch.hk/hw
Аноним 13/11/21 Суб 21:29:51 #7 №2211604 
>>2208784
Бля. Вот это прикол.
В реф. мануале что-то сказано по этому поводу?
Если такое время ок согласно мануалу (сложилось так, что на стм мало с АЦП работал и не помню нихуя) - то, подозреваю, дьявол может крыться в тактовой частоте шины, на которой сидит АЦП.
Аноним OP 14/11/21 Вск 08:43:04 #8 №2211799 
>>2211604
>мануале что-то сказано по этому поводу?
Нет, лишь влияние минимального значения на качество оцифровки, но не максимального и не работы модуля.

>>2211604
>тактовой частоте шины, на которой сидит АЦП
Менял от 0,25МГц до 4МГц, никакой разницы.
Аноним 14/11/21 Вск 10:17:09 #9 №2211821 
Маякните когда там можно будет под эти ваши железки на Расте писать за доллары.
Аноним 18/11/21 Чтв 14:22:57 #10 №2216013 
>>2208183 (OP)
В /ra/ пиздуй ебанашка.
Аноним 26/11/21 Птн 00:55:49 #11 №2222506 
>>2208183 (OP)
Ты можешь задать этот вопрос в С, Rust или asm-треде. Ну или в радаче, как выше подсказали.
Аноним 04/04/22 Пнд 08:05:03 #12 №2328547 
>>2216013
там железо, а не ПО, злая глупышечка
comments powered by Disqus

Отзывы и предложения