avr-gcc-list
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [avr-gcc-list] Strange issues with 16-bit values


From: Brian Neltner
Subject: Re: [avr-gcc-list] Strange issues with 16-bit values
Date: Tue, 11 Nov 2008 15:38:48 -0500

Hi Bob!

Hmm, I agree that this would definitely cause problems, and am glad I
now know to watch out for it, but I don't believe this is happening
here. I only read the timer value inside the interrupt.

I've tried now compiling the exact same source code on my windows
computer running AVR Studio, and the hex file produced by that
compilation works exactly as expected. rand() produces a sequence which
doesn't repeat after only seven calls, and it is not halting or showing
any other odd behavior.

I wonder if this could be caused by Ubuntu 8.10 itself. I downgraded the
compiler and avr-libc to the Ubuntu 8.04 versions, which worked before,
but I am still running on Ubuntu 8.10. I wonder if there is something
more sinister wrong with the base Ubuntu system...

-Brian

On Tue, 2008-11-11 at 14:58 -0500, Bob Paddock wrote:
> > while(TCNT3<(uint16_t)benc_period*224UL/255);
> 
> One can never have to many parenthesise when
> writing something like the above.
> 
> I did not look at your code so the following may not be relevant.
> 
> If you are having issues with 16-bit register values,
> make sure that you are not accessing the same timer
> from both inside *and* outside of the interrupt
> concurrently.  Nor should you nest interrupts of the
> same 16-bit timer (not likely you are doing this).
> You will get corrupted values at very random intervals.
> The problem is explained here:
> 
> http://www.atmel.com/dyn/resources/prod_documents/doc1493.pdf





reply via email to

[Prev in Thread] Current Thread [Next in Thread]