Reply by daniel su May 9, 20112011-05-09
Thanks Tom for the help. I did not read the GDR, but dummy-read all the
sampling channels AD0DRn instead in the service routine. Would this make any
difference?

thanks again.
daniel

On Fri, May 6, 2011 at 5:06 PM, Tom Tang wrote:

> If you stop the ADC inside the handler in burst mode, make sure
> you do a dummy read on GDR register right after. The tricky part
> of this ADC is that the burst won't stop immediately even if you
> stop it and ADC interrupt may be serviced again. The dummy read
> should eliminate this, otherwise overrun may occur.
>
> best,
> Tom
> --- In l..., daniel su wrote:
> >
> > thanks Tom for your help. Had a look at the errrata, you mentioned and it
> > seems they are different type of problem. as my understanding goes, the
> > overrun is caused by the loss of ADC data before it can be read, i.e. the
> > burst had a full round of conversion and restarted before the data is
> read,
> > or in my case before the burst mode is stopped. it feels like the MCU
> > decided to speed up the int service call.
> >
> > thanks again.
> >
> >
> > daniel
> >
> >
> >
> > On Tue, May 3, 2011 at 6:13 PM, Tom Tang wrote:
> >
> > >
> > >
> > > There is an errata for LPC111x, the problem described
> > > may be related to what you have seen.
> > >
> > > regards,
> > > Tom
> > >
> > >
> > > --- In l..., "dnsu2" wrote:
> > > >
> > > > Could somebody enlighten me over the ADC overrun issue
> > > > on LPC2468?
> > > >
> > > > I am using timer1 0.5mS interrupt to set AD0 burst mode, then use
> AD0.3
> > > as interrupt. the AD0 INT Service routine clears the burst mode on the
> first
> > > line of code.
> > > >
> > > > the program can run sometime for 3-4 hours and sometime for 1-2
> hours,
> > > then overrun happens. The ADC registers are read to clear the overrun
> bit,
> > > and data discarded.
> > > >
> > > > Sometime it correct itself after a few data. But most of time it just
> > > keep on 'overrun'. Effectively stopped the ADC process.
> > > >
> > > >
> > > > Thanks.
> > > >
> > > >
> > > > daniel
> > > >
> > >
> > >
> > >
> >
>

An Engineer's Guide to the LPC2100 Series

Reply by Tom Tang May 6, 20112011-05-06
If you stop the ADC inside the handler in burst mode, make sure
you do a dummy read on GDR register right after. The tricky part
of this ADC is that the burst won't stop immediately even if you
stop it and ADC interrupt may be serviced again. The dummy read
should eliminate this, otherwise overrun may occur.

best,
Tom
--- In l..., daniel su wrote:
>
> thanks Tom for your help. Had a look at the errrata, you mentioned and it
> seems they are different type of problem. as my understanding goes, the
> overrun is caused by the loss of ADC data before it can be read, i.e. the
> burst had a full round of conversion and restarted before the data is read,
> or in my case before the burst mode is stopped. it feels like the MCU
> decided to speed up the int service call.
>
> thanks again.
> daniel
>
> On Tue, May 3, 2011 at 6:13 PM, Tom Tang wrote:
>
> >
> >
> > There is an errata for LPC111x, the problem described
> > may be related to what you have seen.
> >
> > regards,
> > Tom
> >
> >
> > --- In l..., "dnsu2" wrote:
> > >
> > > Could somebody enlighten me over the ADC overrun issue
> > > on LPC2468?
> > >
> > > I am using timer1 0.5mS interrupt to set AD0 burst mode, then use AD0.3
> > as interrupt. the AD0 INT Service routine clears the burst mode on the first
> > line of code.
> > >
> > > the program can run sometime for 3-4 hours and sometime for 1-2 hours,
> > then overrun happens. The ADC registers are read to clear the overrun bit,
> > and data discarded.
> > >
> > > Sometime it correct itself after a few data. But most of time it just
> > keep on 'overrun'. Effectively stopped the ADC process.
> > >
> > >
> > > Thanks.
> > >
> > >
> > > daniel
> > >
> >
> >
>

Reply by daniel su May 6, 20112011-05-06
thanks Tom for your help. Had a look at the errrata, you mentioned and it
seems they are different type of problem. as my understanding goes, the
overrun is caused by the loss of ADC data before it can be read, i.e. the
burst had a full round of conversion and restarted before the data is read,
or in my case before the burst mode is stopped. it feels like the MCU
decided to speed up the int service call.

thanks again.
daniel

On Tue, May 3, 2011 at 6:13 PM, Tom Tang wrote:

> There is an errata for LPC111x, the problem described
> may be related to what you have seen.
>
> regards,
> Tom
> --- In l..., "dnsu2" wrote:
> >
> > Could somebody enlighten me over the ADC overrun issue
> > on LPC2468?
> >
> > I am using timer1 0.5mS interrupt to set AD0 burst mode, then use AD0.3
> as interrupt. the AD0 INT Service routine clears the burst mode on the first
> line of code.
> >
> > the program can run sometime for 3-4 hours and sometime for 1-2 hours,
> then overrun happens. The ADC registers are read to clear the overrun bit,
> and data discarded.
> >
> > Sometime it correct itself after a few data. But most of time it just
> keep on 'overrun'. Effectively stopped the ADC process.
> >
> >
> > Thanks.
> >
> >
> > daniel
> >
>
Reply by Tom Tang May 4, 20112011-05-04
There is an errata for LPC111x, the problem described
may be related to what you have seen.

regards,
Tom
--- In l..., "dnsu2" wrote:
>
> Could somebody enlighten me over the ADC overrun issue
> on LPC2468?
>
> I am using timer1 0.5mS interrupt to set AD0 burst mode, then use AD0.3 as interrupt. the AD0 INT Service routine clears the burst mode on the first line of code.
>
> the program can run sometime for 3-4 hours and sometime for 1-2 hours, then overrun happens. The ADC registers are read to clear the overrun bit, and data discarded.
>
> Sometime it correct itself after a few data. But most of time it just keep on 'overrun'. Effectively stopped the ADC process.
> Thanks.
> daniel
>

Reply by dnsu2 May 1, 20112011-05-01
Could somebody enlighten me over the ADC overrun issue
on LPC2468?

I am using timer1 0.5mS interrupt to set AD0 burst mode, then use AD0.3 as interrupt. the AD0 INT Service routine clears the burst mode on the first line of code.

the program can run sometime for 3-4 hours and sometime for 1-2 hours, then overrun happens. The ADC registers are read to clear the overrun bit, and data discarded.

Sometime it correct itself after a few data. But most of time it just keep on 'overrun'. Effectively stopped the ADC process.
Thanks.
daniel