Topic

FAQ
Login Register
DFIFO Interrupt
Mar 12, 2023 05:32

/

A

/A

Hi everyone,


i have some problem. I prepared:


a) buffer for ADC data:

volatile unsigned int buffer[104];


b)variable for test

unsigned char interruptCounter;


c) interrupt handling:

_attribute_ram_code_ void irq_handler(void) {

   irq_blt_sdk_handler ();

   timerInterruptService();

   if((reg_dfifo_irq_status & FLD_AUD_DFIFO2_H_IRQ) == FLD_AUD_DFIFO2_H_IRQ){

     interruptCounter++;   //for test

      reg_dfifo_irq_status |= FLD_AUD_DFIFO2_H_IRQ;

   } 

}


I want to put ADC values to the buffer and generate interrupt when i exceed 96 measurements. So, I write something like this in my init_user function:


adc_init();

adc_base_init(GPIO_PB6);


irq_enable();

adc_config_misc_channel_buf((unsigned short *)buffer, 104<<2); //size*4

reg_dfifo_mode |= FLD_AUD_DFIFO2_H_INT;

reg_dfifo2_h_level = 96;   //I tried also 96*4

reg_irq_src |= FLD_IRQ_DAM_FIFO_EN;

reg_irq_mask |= FLD_IRQ_DAM_FIFO_EN;

dfifo_enable_dfifo2();

adc_power_on_sar_adc(1);


Values interruptCounter is always "0". Do someone know why interrupt dosn't work?


Best regards


1 replies
TL_Soyo Mar 14, 2023 09:39
0
/A

HI ,

 We haven't the example for this usage,if you need this feature ,please contact our sales.