AnsweredAssumed Answered

Missing External Interrupts, frustration

Question asked by burger.ben.001 on Nov 25, 2011
Latest reply on Nov 26, 2011 by van_hooft.frank.001
Any one with ideas on this one, I`ve never seen this on other micros:
STM32F103RE6
I have a simple application, an asyc pulse stream of data bits:
2.4mS and 1.2mS MAX 2.4mS = 1, 1.2mS = 0
Unfortunately the design does  not allow for CCP, So I have to sample on both edges an keep count....
 NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel;
 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
 NVIC_Init(&NVIC_InitStructure);
I have tried all combinations of priorities etc...

I try to sample on BOTH edges and lo and behold the micro misses the edges, I have DISABLED ALL other interrupts, stopped all other processes and ONLY have the Interrupt running, I have a simple "follow the leader" pin that pulses high every time the interrupt happens and clears everytime the interrup exits.
void EXTI9_5_IRQHandler(void)
{
 EXTI->PR = EXTI_LINE_RFRX;
 BL_ON;       //make pin high here !! Reset the pin in MAIN while loop
 }

The "follow the leader" pin
 GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_8;        
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;            
 GPIO_Init( GPIOC, &GPIO_InitStructure );

The input pin where the INTERRUPTS are sampled
 GPIO_InitStructure.GPIO_Pin = GPIO_PIN_RFRX;
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
 GPIO_Init(GPIOC, &GPIO_InitStructure); 

    /* PCLK1 = HCLK/2 */
    RCC_PCLK1Config(RCC_HCLK_Div2);
This is running at 1/2 HCLK, but even when I set it to HCLK, NO DIFFERENCE edges are still missed.

I also tried the other route 1 edge at a time falling or rising samples are missed on a regular bases ?? it seems maninly the falling edges...

Outcomes