Hi Everyone,
I am working on Q2686RD on a custom platform with following configuration
“DWL”,“V10c05”,"",“Sierra Wireless”,62640,“051513 10:45”,“a0836b50”,“00010000”
“FW”,“FW_752_34_3.Q2687RDG”,“R7.52.0.201306260837.Q2686RD”,“Sierra Wireless”,673436,“062613 08:37”,“89796368”,“001d0000”
“MODEM”,“1.3.36”,“201306260837.Q2686RD”,“Sierra Wireless”,1713240,“062613 08:37”,“85a2fb97”,“00020000”
“OAT”,“1.0.0.20140108105505”,“IO_Expander_I2C”,“TAGV e solutions”,77512,“010814 11:04”,“71d1227f”,“002a0000”
-“Developer Studio”,“2.3.2.201310241753”
-“Open AT Framework package”,“2.51.0.201206190958”
-“Open AT OS Package”,“6.51.0.201206010944”
-“Firmware Package”,“7.51.0.201205311751”
“ROM”,“800000”
“RAM”,“200000”
“DWLNAME”,“Q2686RD”
i am having a problem working with external interrupt. Here is the code i have been working with. i am able to register the external interrupt(INT1) and the irq, but unable to produce the event.
Please do provide comments…
// ExtInt interruption handler
bool KeyPad_irqHandler ( adl_irqID_e Source,
adl_irqNotificationLevel_e NotificationLevel,
adl_irqEventData_t * Data )
{
s32 Return;
TRACE( ( STORAGE_I2C_TRACE_LEVEL, "KeyPad_irqHandler " ) );
adl_extintRead ( ExtIntHandle, &Status );
TRACE( ( IRQ_MEASURE_TRACE_LEVEL, "External Interrupt pin status: %d ", Status) );
// Input status can also be obtained from the auto read option.
AutoReadStatus = ( adl_extintInfo_t * ) Data->SourceData;
TRACE( ( IRQ_MEASURE_TRACE_LEVEL, "PCA Int Status %d ",AutoReadStatus) );
}
void KeyPad_Extirq ( void )
{
/* Get ExtInt Capabilities */
adl_extintGetCapabilities ( &ExtIntCapabilities );
TRACE( ( IRQ_MEASURE_TRACE_LEVEL, "DebounceMode : available %d "
"DebounceNbStep %d", ExtIntCapabilities.DebounceMode ,
ExtIntCapabilities.DebounceNbStep ) );
// Test if the WCPU have Ext Int pin
if ( ExtIntCapabilities.NbExternalInterrupt >= 1 )
{
// ExtInt configuration: Falling edge detection without filter
extintConfig.Sensitivity = ADL_EXTINT_SENSITIVITY_FALLING_EDGE;
/* Set ExtInt Filter parameters */
extintConfig.Filter = ADL_EXTINT_FILTER_BYPASS_MODE;
extintConfig.FilterDuration = ZERO;
TRACE( ( IRQ_MEASURE_TRACE_LEVEL, "extintConfig.Filter %d ", extintConfig.Filter) );
IrqHandle = adl_irqSubscribe ( KeyPad_irqHandler, ADL_IRQ_NOTIFY_LOW_LEVEL, ADL_IRQ_PRIORITY_HIGH_LEVEL,ADL_IRQ_OPTION_AUTO_READ );
TRACE( ( IRQ_MEASURE_TRACE_LEVEL, "IRQ Subscribe Handle: %d ",IrqHandle) );
TRACE( ( IRQ_MEASURE_TRACE_LEVEL, "External Interrupts : available %d ", ExtIntCapabilities.NbExternalInterrupt) );
// Subscribes to the IRQ service
ExtIntHandle = adl_extintSubscribe ( ADL_EXTINT_PIN1 , IrqHandle, 0, &extintConfig );
if(ExtIntHandle >= OK)
{
adl_extintGetConfig(ExtIntHandle, &extintConfig);
TRACE( ( IRQ_MEASURE_TRACE_LEVEL, "External Interrupts sensitivity %d ,filter %d",
extintConfig.Sensitivity,extintConfig.Filter) );
adl_extintRead ( ExtIntHandle, &Status );
TRACE( ( IRQ_MEASURE_TRACE_LEVEL, "External Interrupt pin status: %d ", Status) );
}
}
}