ads1299 does not recover gracefully. Need to figure out transfer complete interrupt
This commit is contained in:
parent
c05a7675d0
commit
7ed41be749
|
@ -229,10 +229,12 @@ static void spi_ads1299_init_dma_descriptors()
|
|||
_dma_get_channel_resource(&resource_rx, CONF_SERCOM_2_SPI_M_DMA_RX_CHANNEL);
|
||||
_dma_get_channel_resource(&resource_tx, CONF_SERCOM_2_SPI_M_DMA_TX_CHANNEL);
|
||||
resource_rx->dma_cb.transfer_done = ADS1299_Transfer_Complete_cb;
|
||||
//resource_rx->dma_cb.error = ADS1299_Transfer_error_cb;
|
||||
|
||||
resource_rx->dma_cb.error = ADS1299_Transfer_error_cb;
|
||||
|
||||
resource_tx->dma_cb.transfer_done = ADS1299_Transfer_Complete_cb;
|
||||
/* Enable DMA transfer complete interrupt */
|
||||
_dma_set_irq_state(CONF_SERCOM_2_SPI_M_DMA_RX_CHANNEL, DMA_TRANSFER_COMPLETE_CB, true);
|
||||
_dma_set_irq_state(CONF_SERCOM_2_SPI_M_DMA_TX_CHANNEL, DMA_TRANSFER_COMPLETE_CB, true);
|
||||
//_dma_set_irq_state(CONF_SERCOM_2_SPI_M_DMA_RX_CHANNEL, DMA_TRANSFER_ERROR_CB, true);
|
||||
|
||||
|
||||
|
|
|
@ -218,8 +218,8 @@ static void _dmac_handler(void)
|
|||
if (hri_dmac_get_INTPEND_TERR_bit(DMAC)) {
|
||||
hri_dmac_clear_CHINTFLAG_TERR_bit(DMAC, channel);
|
||||
tmp_resource->dma_cb.error(tmp_resource);
|
||||
} else if (hri_dmac_get_INTPEND_TCMPL_bit(DMAC)) {
|
||||
hri_dmac_clear_CHINTFLAG_TCMPL_bit(DMAC, channel);
|
||||
} else if (hri_dmac_get_CHINTFLAG_TCMPL_bit(DMAC, channel)) {
|
||||
hri_dmac_clear_CHINTFLAG_TCMPL_bit(DMAC, channel); /********* ADDED **************/
|
||||
tmp_resource->dma_cb.transfer_done(tmp_resource);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -72,7 +72,16 @@ static void b2bTransferComplete_cb(struct _dma_resource *resource)
|
|||
volatile int x = 0;
|
||||
}
|
||||
|
||||
|
||||
void SERCOM2_1_Handler()
|
||||
{
|
||||
volatile int x = 0;
|
||||
|
||||
}
|
||||
void SERCOM2_2_Handler()
|
||||
{
|
||||
volatile int x = 0;
|
||||
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
// ADC Callback for Motor Phase Current Measurement.
|
||||
|
@ -142,7 +151,9 @@ void ADS1299_dataReadyISR(void)
|
|||
void ADS1299_Transfer_Complete_cb(void)
|
||||
{
|
||||
//PORT->Group[0].OUTSET.reg = (1<<GPIO_PIN(SPI2_SS));
|
||||
|
||||
volatile int x = 1;
|
||||
|
||||
}
|
||||
|
||||
void ADS1299_Transfer_error_cb(void)
|
||||
|
|
|
@ -71,10 +71,11 @@ void enable_NVIC_IRQ(void)
|
|||
NVIC_SetPriority(ADC1_0_IRQn, 3);
|
||||
NVIC_EnableIRQ(TCC0_0_IRQn);
|
||||
//NVIC_EnableIRQ(TCC1_0_IRQn);
|
||||
//NVIC_EnableIRQ(EIC_2_IRQn);
|
||||
NVIC_EnableIRQ(EIC_2_IRQn);
|
||||
|
||||
NVIC_EnableIRQ(SERCOM1_1_IRQn);
|
||||
NVIC_EnableIRQ(SERCOM2_1_IRQn);
|
||||
NVIC_EnableIRQ(SERCOM2_2_IRQn);
|
||||
//NVIC_SetPriority(SERCOM1_1_IRQn, 1);
|
||||
NVIC_EnableIRQ(TC0_IRQn);
|
||||
//NVIC_EnableIRQ(TC0_IRQn);
|
||||
|
@ -181,10 +182,12 @@ int main(void)
|
|||
/* External IRQ Config */
|
||||
custom_logic_enable();
|
||||
|
||||
__enable_irq();
|
||||
|
||||
delay_us(20);
|
||||
ADS1299_START();
|
||||
delay_us(20);
|
||||
/* ADS Result Ready Interrupt, active low */
|
||||
__enable_irq();
|
||||
|
||||
/* Enable Reception
|
||||
* Enable RX channels at startup, Linked to itself so never ends
|
||||
|
@ -193,8 +196,7 @@ int main(void)
|
|||
_dma_enable_transaction(CONF_SERCOM_2_SPI_M_DMA_RX_CHANNEL, false);
|
||||
|
||||
/* Clear Exint Flag */
|
||||
EIC->INTFLAG.bit.EXTINT = (1<<2);
|
||||
|
||||
//EIC->INTFLAG.bit.EXTINT = (1<<2);
|
||||
//ext_irq_register(GPIO_PIN(ADS_DATA_RDY), ADS1299_dataReadyISR);
|
||||
enable_NVIC_IRQ();
|
||||
|
||||
|
|
Loading…
Reference in New Issue