[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