[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: [avr-gcc-list] Problem with timer0 overflow interrupt in clanguage..
From: |
Schwichtenberg, Knut |
Subject: |
RE: [avr-gcc-list] Problem with timer0 overflow interrupt in clanguage.. |
Date: |
Mon, 10 Dec 2007 12:51:31 +0100 |
On Friday, December 07, 2007 5:24 PM, David Kelly wrote:
> The compiler won't read PINB using the above.
>
> In general on AVR when one reads PORTB one reads the output latchs, in
> other words the last value written. On other CPU's this same
> action may
> read the input buffers. AVR provids PIN ports for specifically reading
> the state of the external pins.
>
> Using -O1 the above exclusive-or-equals generates exactly the
> same code
> as the OP first wrote:
>
> PORTB = ~PORTB;
> 3ee: 85 b1 in r24, 0x05 ; 5
> 3f0: 80 95 com r24
> 3f2: 85 b9 out 0x05, r24 ; 5
> PORTB ^= 0xff;
> 3f4: 85 b1 in r24, 0x05 ; 5
> 3f6: 80 95 com r24
> 3f8: 85 b9 out 0x05, r24 ; 5
This result is unambiguous. The question is: Is this a bug which means a
bug report is necessary or is it a feature that needs to be described?
It would be comfortable if GCC could distinguish between the IO-ports
and other IO-variables were the in and out address are identical.
Knut