Jump to content

    

STM8 ADC1 не поднимает EOC

Здравствуйте.

STM8S003F3

Код инициализации.

 

	#define ADC1_CH6 0x06
	#define ADC1_PRESC 0x20						//0b0010 0000 (/4)
	
	ADC1->CSR = ADC1_CH6 | ADC1_CSR_EOCIE;				//CH6 + EOC IRQ enable
	ADC1->CR1 = ADC1_CR1_CONT;					//Continuous mode
	ADC1->CR1 |= ADC1_PRESC;					//ADC presc x4
	ADC1->CR1 |= ADC1_CR1_ADON;					//Enable ADC

   INTERRUPT_HANDLER(ADC_ISR, 22){

       ADC_result = ADC1->DRH;
       ADC1->CSR &= ~ADC1_CSR_EOC;
  }

Прерывания разрешены (другие функции работают и прерываются). 

Тактирование включено (PCKEN1\2 забиты 0xFF при старте).

В прерывании стоят брекпоинты, однако программа на них не попадает, т.к. не поднимается EOC флаг. Хотя в ADC_DR появляется значение.

Вроде по IO портам никаких действий ненужно (Штриггер отключитать по хорошему, но он не должен вызывать подобное поведение никак).

Скрины регистров.

Спойлер

7k0Z0Td.png

 

 

Edited by Solonovatiy

Share this post


Link to post
Share on other sites

Разрыл в интернете ответ. Не заметил в RM.

Для начала конверсии, нужно повторно записать 1 в ADON.

 

Share this post


Link to post
Share on other sites
26 минут назад, jeelman сказал:

это в RM0016->ADC functional description->ADC on/off control

Не отрицал, что оно там есть, проглядел. 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now