[elektro] A szokásos C kezdő kérdések
Skandar Graun
sgraun at gmail.com
Wed Jan 30 18:48:50 CET 2013
Bejött, köszönöm.
Valamint mindenkinek.
Bali Zoltan <eltexto at freemail.hu> írta (2013. január 30. 18:21):
> 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]
>>
>>
>>
>
> -----------------------------------------
> elektro[-flame|-etc]
More information about the Elektro
mailing list