после долгих часов безуспешного дебага имеем следующее:
CSR = 0x24 при инициализации, потом становится 0x20; CR1 = 0x1; CR2 = 0x0A; CR3 = 0.
код инициализации:
Код: Выделить всё
GPIOD->DDR &= ~(1<<2 | 1<<3);
GPIOD->CR1 &= ~(1<<2 | 1<<3);
GPIOD->CR2 &= ~(1<<2 | 1<<3);
ADC1->CR1 = 0;
ADC1->CR2 = ADC1_CR2_ALIGN | ADC1_CR2_SCAN;
ADC1->TDRH = 0;
ADC1->TDRL = (1<<3) | (1<<4);
ADC1->CSR = ADC1_CSR_EOCIE | 4;
Код: Выделить всё
if (!calculate_started) {
ADC1->CSR = ADC1_CSR_EOCIE | 4;
ADC1->CR1 |= ADC1_CR1_ADON;
}
calculate_started = 1;
Код: Выделить всё
INTERRUPT_HANDLER(ADC1_IRQHandler, 22)
{
calculate_started = 0;
//ADC1->CSR = ~(ADC1_CSR_EOC | ADC1_CSR_AWD);
ADC1->CSR = 0;
LED_PORT->ODR ^= LED_PIN;
}
Добавлено after 1 hour 31 minute 3 seconds:
таки да, протупил и невнимательно прочитал мануал, надо дважды в CR0 записать единичку...