Все чувствуют себя уникальными ровно до тех пор, пока не настаёт время выбрать домен для своего стартапа.

Меню навигации для мобильных

Показометр на STM32 для блока питания

Автор zenon, 22 Март, 2024, 18:44

« предыдущая - следующая »

zenon

Код для прерывания сообразил.
void adc_init_42(void)
{
  RCC->APB2ENR |= RCC_APB2RSTR_ADCRST; // Enable ADC clock 
  ADC1->CR &= ~ADC_CR_ADEN;            // turn off ADC: 0
  
  ADC1->CR |= ADC_CR_ADCAL;             // start ADC calibration
  while (ADC1->CR & ADC_CR_ADCAL)   {}; // ждем когда откалибруется
  ADC1->CR |= ADC_CR_ADEN;              // power up ADC
  while (ADC1->ISR & ADC_ISR_ADRDY) {}; // wait until ADC ready
  
  ADC1->CFGR1 |= ADC_CFGR1_CONT; // Continuous conversion ADC_CFGR1_SCANDIR;

  ADC1->SMPR |= ADC_SMPR_SMP_0 | ADC_SMPR_SMP_1 | ADC_SMPR_SMP_2; // Время выборки (Select a sampling mode of 111 i.e. 239.5 ADC clk to be greater than 17.1us)  

  ADC1->CHSELR = ADC_CHSELR_CHSEL5 | ADC_CHSELR_CHSEL6;
 
  ADC1->IER |= ADC_IER_EOCIE;     // Enable ADC interrupts
  NVIC_EnableIRQ(ADC1_COMP_IRQn); // Enable IRQ on NVIC
  ADC1->CR |= ADC_CR_ADSTART;
}
И само прерывание (если отселектили два канала, то поочереди в прерывании появляются значения);
uint8_t curr_adc_channel = 0;
// ADC1_IRQHandler
extern void ADC1_COMP_IRQHandler(void)
{
 if(((ADC1->ISR) & ADC_ISR_EOC) != 0)
 {
 ADC1->ISR |= ADC_ISR_EOC;
 if (curr_adc_channel == 0) current = (uint16_t) ADC1->DR;
 if (curr_adc_channel == 1) voltage = (uint16_t) ADC1->DR;
 curr_adc_channel++;
 if (curr_adc_channel > 1) curr_adc_channel = 0; 
 }
}
https://github.com/minamonra/

Slabovik

Цитата: Slabovik от 28 Март, 2024, 10:31INA226 - хорошее решение. Но...
'но' - оно очень толстое. Не может INA226 стоить столько, сколько по той ссылке на Aliexpress: https://www.findchips.com/search/ina226
Вывод: на Ali продаётся подделка. Какого она качества - вопрос открытый...
Общением на форуме подпитываю свою эгоистичную, склонную к самолюбованию сущность.

zenon

Тут я согласен...
//офф: недавно разглядывал IGBT "толстые" и дорогие, пришли в закупке, взгляд упал на ноги, каково же было удивление, что ноги приварены контактное сваркой, а сами транзисторы были с распая... Приварены были кстати плохо - у некоторых отваливались при первом сгибе.
https://github.com/minamonra/