Hi,
 refrence to the problem.....   
I compiled the following code on just a regular GNU gcc compiler... (for my 
pentium machine target, not the msp430)

see the output below:


union nibble_t {

struct nibbles {
         unsigned       nibble1:4;
         unsigned       nibble2:4;
         unsigned       nibble3:4;
        unsigned        nibble4:4; 
        };
        unsigned  char buffb[2];
        unsigned buff;
};

int main(void)
{
        int i;
        union nibble_t nibble;

        nibble.buffb[0]=0x12;
        nibble.buffb[1]=0x34;
        printf("\n2 bytes\n");
        printf("nibble1 %x \n",nibble.nibble1);
        printf("nibble2 %x \n",nibble.nibble2);
        printf("nibble3 %x \n",nibble.nibble3);
        printf("nibble4 %x \n",nibble.nibble4);

        printf("\none word\n");
        nibble.buff=0x1234;
        printf("nibble1 %x \n",nibble.nibble1);
        printf("nibble2 %x \n",nibble.nibble2);
        printf("nibble3 %x \n",nibble.nibble3);
        printf("nibble4 %x \n",nibble.nibble4);

        return 0;
}


------------------------------- OUTPUT-----------------------
2 bytes
nibble1 2
nibble2 1
nibble3 4
nibble4 3

one word
nibble1 4
nibble2 3
nibble3 2
nibble4 1





the nibbles are swapped....  depending on access type....   how do we fix 
this...   that cuasing me problems in my structure....  write to it using a 
one byte buff[i]..  and then i want to access the low-nibble of the 5th 
byte... but it gives me the high-nibble of the 5th byte...  becuase of 
swaping...   i thought endian problems are only for accessing structures 
larger than bytes....  any one have any ideas how can I get over this 
problem...

thanks...
Abe

















On November 19, 2003 12:27 pm, Garst R. Reese wrote:
> Sorry, they were in the original fwd.
> G.
>
> Dmitry wrote:
> > Oops...
> > where are bitfields?
> > ~d
> >
> > On Wednesday 19 November 2003 18:29, Garst R. Reese wrote:
> > > Dmitry wrote:
> > > > hm...
> > > > any code snippet?
> > > > ~d
> > >
> > > Sure, let me know if you need more.
> > > Thanks,
> > >   Garst
> > >
> > > #ifdef _MMC_TEST
> > > int main(void)
> > > {
> > >       unsigned int i;
> > >       union reg16b_t reg16b;
> > >       mcu_init();
> > >       spi_init();
> > >       lcd_init();
> > >       clear_display();
> > >       lcd_set_pos(0,0);
> > >       get_register(MMC_SEND_CSD,&reg16b);
> > >       print_register(&reg16b);
> > >       print_response(0xEE);
> > >       print_response(reg16b.csd.READ_BL_LEN);
> > >       SPI_NONE;
> > > }
> > > #endif
> > >
> > >
> > > int get_register( unsigned char reg_cmd, union reg16b_t *reg16)
> > > {
> > >       unsigned char arguments[4];
> > >       unsigned char temp25;
> > >       int i;
> > >
> > >       arguments[0]=0x00;
> > >       arguments[1]=0x00;
> > >       arguments[2]=0x00;
> > >       arguments[3]=0x00;
> > >       temp25=mmc_sendcmd(reg_cmd,arguments);
> > >       if(temp25)
> > >       {
> > >               SPI_NONE;
> > >               SPI_LCD_EN;
> > >               lcd_write_string("GETREG");
> > >               print_response(temp25);
> > >               BREAKPNT;
> > >               return FALSE;
> > >       }
> > >       mmc_get_data((unsigned char*) reg16);
> > >       return TRUE;
> > > }
> > >
> > >
> > > int mmc_get_data(unsigned char* data)
> > > {
> > >       unsigned char temp25;
> > >       int i ;
> > >
> > >       while((temp25=mmc_get_response())==0); //if card is busy
> > >       if(temp25!=0xFE)
> > >       {
> > >               BREAKPNT;
> > >               return FALSE;
> > >       }
> > >
> > >       /*read the data*/
> > >       for(i=0;i<16;i++)
> > >       {
> > >               data[i]=spi_read();
> > >       }
> > >
> > >       //CRC TOKENs
> > >       spi_read();
> > >       spi_read();
> > >
> > >       return TRUE;
> > > }
> > >
> > >
> > > -------------------------------------------------------
> > > This SF.net email is sponsored by: SF.net Giveback Program.
> > > Does SourceForge.net help you be more productive?  Does it
> > > help you create better code?  SHARE THE LOVE, and help us help
> > > YOU!  Click Here: http://sourceforge.net/donate/
> > > _______________________________________________
> > > Mspgcc-users mailing list
> > > Mspgcc-users@lists.sourceforge.net
> > > https://lists.sourceforge.net/lists/listinfo/mspgcc-users
> >
> > --
> > /*****************************************************************
> >      ("`-''-/").___..--''"`-._     (\   Dimmy the Wild     UA1ACZ
> >       `6_ 6  )   `-.  (     ).`-.__.`)  State Polytechnical Univ.
> >       (_Y_.)'  ._   )  `._ `. ``-..-'   Radio-Physics Departament
> >     _..`--'_..-_/  /--'_.' ,'           Saint Petersburg,  Russia
> >    (il),-''  (li),'  ((!.-'             +7 (812) 5403923, 5585314
> >  *****************************************************************/
> >
> > -------------------------------------------------------
> > This SF.net email is sponsored by: SF.net Giveback Program.
> > Does SourceForge.net help you be more productive?  Does it
> > help you create better code?  SHARE THE LOVE, and help us help
> > YOU!  Click Here: http://sourceforge.net/donate/
> > _______________________________________________
> > Mspgcc-users mailing list
> > Mspgcc-users@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/mspgcc-users


Reply via email to