On May 19, 2005, at 3:34 PM, Guillaume Autran wrote: > Is it better like this ?
Yes, but now I see one problem with it. :-) We have to clear all events even though we may not handle all of them. Your while loop filters only the events we process, but there could be others causing the interrupt which will never get cleared. In this case we end up with an infinite interrupt loop where we don't process anything, but we don't make the interrupt go away, either. It may be easier to forget the loop, just read/clear the event register up front, then process based on the events based upon what we found. It's what we tend to do in the other drivers. The functions called to do the rx/tx processing have loops in them to process all of the data they find, so it isn't likely you have left anything behind. If you want to try to save the interrupt overhead, change it to do/while, check again at the end before the exit. Thanks. -- Dan