isi_enable function is hanging - the ISI Status Register never updates

1 post / 0 new
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0



SAM-ICE debugger

ATSAM E70Q20 on a custom board



I am using the ISI interface on a SAM E70Q20 microcontroller to interface with an Omnivision OV5640 camera. I have initialized the pmc clock for the ISI peripheral. But when I call the isi_enable, setting the enable bit in the control register doesn't update the corresponding bit in the status register in the debugger interface. The debug window otherwise seems to be up to date, other ISI registers get configured correctly but the ISI_SR register never updates, despite setting multiple bits in the ISI_CR register.  This results in isi_enable function hanging in the while loop (highlighted below). Any help would be appreciated.




static inline void isi_enable(Isi *p_isi)


uint temp = 0; 

p_isi->ISI_CR |= ISI_CR_ISI_EN;

while((p_isi->ISI_SR & ISI_CR_ISI_EN) != ISI_CR_ISI_EN);