Dobra... Twój program po umieszczeniu znaku w buforze leci do przerwania i zapisuje znaki po kolei w tablicy. Funkcja unsigned char uart_getc (void) pobiera te znaki z tablicy cyklicznie
Wynika z tego, że całego buforu zapisać do zmiennej int nie można, tak? Trzeba to robić bajtami. Dobrze rozumiem?
Bo mój problem jest tego rodzaju, że te 3 bajtysą tak jakby całością w której mam ważne informacje zapisane na polach bitowych. I dopiero po odebraniu wszystkich 3 muszę zająć się "odcedzaniem" informacji. Ta reszta, która dostaje się do bufora mnie na razie nie interesuje. Powiedzmy, że qC dostaje tylko jednorazowo 3 bajty.
Jak te 3 bity zapisać znowu jako "jedność"?
Już mam pomysł aby wykorzystać unie jak w poście
https://www.elektroda.pl/rtvforum/topic1381689.html. A dokładnie:
serwo[8];
struct slowo
{
insigned int synchro : 8;
unsigned int polozenie : 10;
unsigned int :3 ;
unsigned int nr_serwomechanizmu : 3;
};
struct bajty
{
insigned int bajt1 : 8;
unsigned int bajt2: 8;
unsigned int bajt3 :8;
};
union
{
slowo sl;
bajty bj;
};
i to wrzucić do unii abym mógł odwoływać się do tego jako do bajtów (które przecież dostanę z rs'a), oraz jako innych, znanych mi pól bitowych z różnymi informacjami
Będę mógł zapisać coś takiego (oczywiście nie tak banalnie):
bj.bajt1 = UDR; //czy takim sposobem pobiorę 3 bajty danych z bufora przyjmując, że one tam są?
bj.bajt2 = UDR;
bj.bajt3 = UDR; //teraz bufor jest juz pusty
a potem wyłuskać:
serwo[sl.nr_serwomechanizmu] = sl.polozenie;
Tylko, że kurczę w winavr tak zdefiniować unii nie mogę

, wrzucić struktury w ciało unii?