[elektro] A szokásos C kezdő kérdések

Bali Zoltan eltexto at freemail.hu
Wed Jan 30 18:21:43 CET 2013


Hali!
Bár nem használok PIC -et, de
ha jól gondolom, ez MPLAB C és jól látom a
doksiban itt is van packed attrib, használd ezzel.
A manuálból idézek:
struct foo
{
char a;
int x[2] __attribute__ ((packed));
};

Üdv.  Zoli

2013. 01. 30. 17:53 keltezéssel, Skandar Graun írta:
> Na, megküzdöttem vele.
> A láncolt listák nagyon szépek, de tökéletesen nem ideillők.
> Jelenleg egy érdekes állapotban leledzik a dolog.
> Ami hiba nélkül lefordult és elsőre nagyjából megy is, az a következő:
>
> typedef union  sertomb
>    {
>            struct
>            {
>            unsigned char kezdet;
>            int act_set_ser;
>            int stb_set_ser;
>            int stat_ser;
> 		  unsigned char crcout;	
>            };
>    }sertomb;
>
>    sertomb tomb_crc;
>
> A feltöltés és a kivitel:
>
> 			if (kellsoros)
> 			{
> 				tomb_crc.kezdet = 0x55;
> 				tomb_crc.act_set_ser = 0x3231;
> 				tomb_crc.stb_set_ser = 0x3433;
> 				tomb_crc.stat_ser = 0x3635;
> 				tomb_crc.crcout = 0x37;
> 				UART2_PutChar( (unsigned char*)&tomb_crc, 8 );
> 				Uart2_CRLF();
> 				kellsoros = 0;
> 			}
>
> A kiveteli rutinok:
> void UART2_PutChar( unsigned char *data, unsigned char count )
> {
>    	while ( count )
> 	{
> 		while(U2STAbits.UTXBF == 1);
> 		U2TXREG = *data++;
> 		count --;
> 	}	
> }
> void Uart2_CRLF(void)
> {	
> 		while(U2STAbits.UTXBF == 1);
> 		U2TXREG = 10;
> 		while(U2STAbits.UTXBF == 1);
> 		U2TXREG = 13;
> }
>
> A processzor pic24f sorozat.
>
> De a végeredmény érdekes:
>
>
> U[00]123456
>
> Ez nekem azt mutatja, hogy hiába tettem be előre egy unsigned char-t
> és utána az int típusokat, a pointer erre tesz nagyívben és mivel a
> kontroller 16 bites, ezért szolgaian viszi ki az alsó-felső byte-okat
> Csak így jelenleg az utolsó char byte-ot nem viszi ki, hiszen
> elfogyott a cuklusváltozó...
> Ha nagyon kell, ezzel már tudok együtt élni, csak nem elegáns...
> Próbáltam union helyett sima struct szerkezettel is, de ugyanezzel az
> eredménnyel.
> Mit kellene csinálni?
>
> -----------------------------------------
>            elektro[-flame|-etc]
>
>
>    



More information about the Elektro mailing list