Nios® II Embedded Design Suite (EDS)
Support for Embedded Development Tools, Processors (SoCs and Nios® II processor), Embedded Development Suites (EDSs), Boot and Configuration, Operating Systems, C and C++
Intel Support hours are Monday-Fridays, 8am-5pm PST, except Holidays. Thanks to our community members who provide support during our down time or before we get to your questions. We appreciate you!

Need Forum Guidance? Click here
Search our FPGA Knowledge Articles here.
12453 Discussions

Disabling other processes on nios

Honored Contributor II



With some help from this forum, I've managed to get my project working well. The fpga reads samples from an ADC and enables a flag when the buffer is full. The nios2 polls the edge capture register, then when it sees the flag it reads the data, writes it to SDRAM, resets the edge capture register and repeats until it has read as much data as it wants. 


This seems to work perfectly, but every now and again it misses some samples from the ADC, all in one block. It's a block of about 20 samples in every 1200, not disastrous but enough to be a nuisance. I assume the processor is periodically doing something else, so my polling loop is too slow. Does anyone know what else the processor could be doing and how I could stop it? I've tried disabling interrupts with alt_irq_disable_all() to no avail. Any other ideas? 




0 Kudos
2 Replies
Honored Contributor II

Your processor does only what your C code tells it to do. If all you have is a main process pooling for a flag it's exactly what it is doing.

Honored Contributor II

How big is your buffer? If the CPU is slow sometimes to react to the edge, you could generate it when your buffer is almost full, so that you have a bit of margin. 

What happens to your buffer is a new ADC value comes just while the CPU is reading the data? Is this case handled by your hardware and software?