From: List <li...@sw...> - 2008-05-23 06:11:20
|
The problem is that I "believe" to see sporadic errors with the DMA engine accessing on-chip xram. Sometimes the movx a,@dptr does not load the acc register. Silabs can't confirm such a bug, so I have to modify my rather complex firmware to nail the problem down. I'm still hoping that I'm an idiot and made a big programming mistake ;-) If section 6.3 would not be true regarding on-chip xram access, we would always need to stop the dma engine for xram access. If it is true, we only need to do this on off-chip xram. Interrupts of course give the problem an additional dimension with the options: switch off irq during DMA0XBY check switch off irq during xram access getting accessing over the dma controller is not atomic, however it might be possible to check the timer that triggers the adc cycle if we keep the dma engine switched off for multiple movx instructions and check the DMA0DOE, in such a case we would also need to switch off irq otherwise it is not garanteed to switch dma engine on within a given time to prevent data lost. alternatively we could rise the dma engine above all other irqs (which would not be an option for my firmware, as the dma engine irq must have a very low priority) best regards Dani |