Zoufalstvi v kodu z knihy xx

Tomas Dresler dresler na hw.cz
Pátek Květen 27 08:48:14 CEST 2022


Vidim v tom par problemu:

a) zpomaluje si silene IRQ (pokud ADC neni v rezimu auto-delay, tak ty 
konverze zabije, nebo discontinuous s dlouhou pauzou mezi triggery)
b) mel by vyuzit callbacky z HAL_ADC_IRQHandler, takhle likviduje logiku 
ADC handle ("semafor", status ADC periferie, pocet konverzi apod.)
c) tohle je kod spis do DMA handleru, kdy uz jsou data pripravena 
vsechna

Tomas



On 2022-05-27 08:23, Nesvačil Jiří wrote:
> Zdravim,
> 
> myslel jsem, ze si treba poctu nebo podivam do jedne mistni knihy o
> STM32. Nicmene me presla chut po prvnim kouknuti. Vidite to taky nebo
> to je jenom pro me tak spatne napsane ?
> 
> Jirka
> 
> /**
>   * @brief This function handles ADC, COMP1 and COMP2 interrupts (COMP
> interrupts through EXTI lines 21 and 22).
>   */
> void ADC1_COMP_IRQHandler(void)
> {
>   /* USER CODE BEGIN ADC1_COMP_IRQn 0 */
> 
>     if(((ADC1->ISR & ADC_ISR_EOC) == ADC_ISR_EOC) &&
>        ((ADC1->IER & ADC_IER_EOCIE) == ADC_IER_EOCIE))
>     {
>         // odesli namerenou hodnotu
>         // cteni hodnoty nuluje priznak preruseni
>         HAL_UART_Transmit(&huart2, &(ADC1->DR), 1, 100);
>     }
> 
>     // konec mereni sekvence?
>     if(((ADC1->ISR & ADC_ISR_EOS) == ADC_ISR_EOS) &&
>        ((ADC1->IER & ADC_IER_EOSIE) == ADC_IER_EOSIE))
>     {
>         // odesle zpravu o konci serie
>         HAL_UART_Transmit(&huart2, "konec serie\r", 12, 100);
>     }
> 
>   /* USER CODE END ADC1_COMP_IRQn 0 */
>   HAL_ADC_IRQHandler(&hadc);
>   /* USER CODE BEGIN ADC1_COMP_IRQn 1 */
> 
>   /* USER CODE END ADC1_COMP_IRQn 1 */
> }


Další informace o konferenci Hw-list