Witam!
Raz na jakiś czas programuje uC Atmela, ale nigdy nie musiałem komunikować się z peryferiami w postaci innych układów.
Aby za bardzo nie zagłębiać się w szczegóły, muszę wysłać do urządzenia 16bitowe słowo (driver wyświetlacza LED) i nie bardzo wiem, jak wysyłać bit po bicie. Oczywiście funkcje taktowania układu itd nie przedstawiają problemu.
Aby zobrazować "problem" powiedzmy, że mamy w zmiennej "a" jakąś wartość, a stała "b" ma wartość "ramki" jaką trzeba wysłać do układu drivera, aby ten wiedział że o niego chodzi:
a = odczyt_z_adc ;
b = 0x0100 ;
wg. mnie, powinno się to zsumować, czyli
c = a | b ;
i właśnie zmienna "c" wysłać na odpowiedni pin, tylko jak to zrobić bit po bicie ? zapewne napisać jakąś funkcję z pętlą, która to będzie realizowała tą wysyłkę, ale nie mam pojęcia jak "wybierać" kolejno pojedyncze bity.
Zapewne istnieje jakieś banalne rozwiązanie, jednak jak już pisałem, pierwszy raz mam styczność z komunikacją szeregową (od podszewki rzecz jasna)
Bardzo dziękuję i pozdrawiam,
Marcin
Raz na jakiś czas programuje uC Atmela, ale nigdy nie musiałem komunikować się z peryferiami w postaci innych układów.
Aby za bardzo nie zagłębiać się w szczegóły, muszę wysłać do urządzenia 16bitowe słowo (driver wyświetlacza LED) i nie bardzo wiem, jak wysyłać bit po bicie. Oczywiście funkcje taktowania układu itd nie przedstawiają problemu.
Aby zobrazować "problem" powiedzmy, że mamy w zmiennej "a" jakąś wartość, a stała "b" ma wartość "ramki" jaką trzeba wysłać do układu drivera, aby ten wiedział że o niego chodzi:
a = odczyt_z_adc ;
b = 0x0100 ;
wg. mnie, powinno się to zsumować, czyli
c = a | b ;
i właśnie zmienna "c" wysłać na odpowiedni pin, tylko jak to zrobić bit po bicie ? zapewne napisać jakąś funkcję z pętlą, która to będzie realizowała tą wysyłkę, ale nie mam pojęcia jak "wybierać" kolejno pojedyncze bity.
Zapewne istnieje jakieś banalne rozwiązanie, jednak jak już pisałem, pierwszy raz mam styczność z komunikacją szeregową (od podszewki rzecz jasna)
Bardzo dziękuję i pozdrawiam,
Marcin