[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [avr-gcc-list] How to (efficeiently !!!) test a bit within a multi-b
From: |
Vincent Trouilliez |
Subject: |
Re: [avr-gcc-list] How to (efficeiently !!!) test a bit within a multi-byte integer ? |
Date: |
Fri, 04 Nov 2005 14:16:10 +0100 |
> Now your problem with 'address & 0x00040000' is a real one: avr-gcc is
> not yet very good with 32 bits operators
Well, this way we have nice things to be looking forward to, for
upcoming releases of gcc.... :-)
> (BTW what version of avr-gcc do you use?).
I compiled 3.4.3 ... does 3.4.4 or 4.0 do a better job at it ?
> To solve such speed problems, you have to tell the compiler that you
> want to perform just a 8 bit operation. So use something like:
> ----
> union {
> uint32_t my_ulong;;
> struct {
> uint8_t a;
> uint8_t b;
> uint8_t c;
> uint8_t d;
> } my_bytes;
> } value;
>
> value.my_ulong=address;
> if(value.my_bytes.c & 0x40)
>
> ----
>
> This is very dirty:
>
> Now it solves your problem today, so it's up to you to decide to use it
> or not.
>
> Bernard
Well, as we saw earlier today:
uint8_t temp;
temp = (address >> 16) & 0xFF;
if (temp & 0x04)
works perfectly, much simpler and cleaner than all the union stuff ! :o)
I am not sure if it's anymore portable (does the >> operator shift left
in systems where MSB is stored first ?) but my program won't ever be
ported, it's only a prototype/one-off for my personal use... and
although I do intend to "upgrade" it in the coming years, with a
graphical LCD module instead of a text module, and some basic data
processing and graphing functionality, I think/guess AVR chips should
still be up to the job, when clocked at 16MHz.
--
Vince
- Re: [avr-gcc-list] How to (efficeiently !!!) test abitwithinamulti-byte intege, (continued)
- Re: [avr-gcc-list] How to (efficeiently !!!) testabitwithinamulti-byte intege, Dave Hansen, 2005/11/07
- Re: [avr-gcc-list] How to (efficeiently !!!) test a bitwithinamulti-byte intege, Vincent Trouilliez, 2005/11/05
- Re: [avr-gcc-list] How to (efficeiently !!!) test a bitwithinamulti-byte intege, David Kelly, 2005/11/05
- Re: [avr-gcc-list] How to (efficeiently !!!) test a bitwithinamulti-byte intege, Vincent Trouilliez, 2005/11/05
- Re: [avr-gcc-list] How to (efficeiently !!!) test a bit within amulti-byte integer ?, Derric Tubbs, 2005/11/04
- Re: [avr-gcc-list] How to (efficeiently !!!) test a bit within a multi-byte integer ?, Alex Wenger, 2005/11/04
- Re: [avr-gcc-list] How to (efficeiently !!!) test a bit within a multi-byte integer ?, Vincent Trouilliez, 2005/11/04
Re: [avr-gcc-list] How to (efficeiently !!!) test a bit within a multi-byte integer ?, Bernard Fouché, 2005/11/04
Re: [avr-gcc-list] How to (efficeiently !!!) test a bit within a multi-byte integer ?, Bernard Fouché, 2005/11/04
Re: [avr-gcc-list] How to (efficeiently !!!) test a bit within a multi-byte integer ?, Vincent Trouilliez, 2005/11/05
Re: [avr-gcc-list] How to (efficeiently !!!) test a bit within a multi-byte integer ?, David Kelly, 2005/11/05
RE: [avr-gcc-list] How to (efficeiently !!!) test a bit within amulti-byte integer ?, Niklas Lövgren, 2005/11/05
Re: [avr-gcc-list] How to (efficeiently !!!) test a bit within amulti-byte integer ?, Eric Weddington, 2005/11/08
RE: [avr-gcc-list] How to (efficeiently !!!) test a bit withinamulti-byte integer ?, Niklas Lövgren, 2005/11/09
Re: [avr-gcc-list] How to (efficeiently !!!) test a bit within a multi-byte integer ?, David Kelly, 2005/11/04