Chcę powitać wszystkich. Cześć.
Odświeżę trochę wątek wskaźników, ale w innej kwestii. Wskaźniki, piękna rzecz, ale... Mam problem z deklaracją wskaźników. Mówi się, że deklaracja (typ) wskaźnika powinna być taka sama jak deklaracja (typ) zmiennej, której adres wskazuje (mimo, że w avr 8 bit zawsze wskaźnik będzie dwubajtowy - wynika to z adresacji) to dla:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Chyba do tej pory dobrze myślę.
I teraz. Rozumiem to, że typ wskaźnika musi być taki jak typ zmiennej, ponieważ przy operacji odwrotnej czyli zapisu do komórki pod adres wskaznik_zmiennej_x jakiejś nowej wartości np. xx typ jej musi być zgodny z typem zmiennej x (w moim przykładzie 4 bajtowej) z której pobraliśmy adres żeby "zmienna się tam zmieściła".
Ale wymyśliłem sobie, że na port PORTB chcę wysłać najmłodszy bajt zmiennej unit32_t czyli x, a na port PORTD najstarszy bajt zmiennej x. I tutaj okazuje się, ze dla deklaracji wskaźnika dla zmiennej x jako unit32_t mam z tym problem, a dla deklaracji wskaźnika jako unit8_t dla tej zmiennej unit32_t wszystko działa dobrze. Ale najprościej będzie chyba pokazać część programu.
Dla wersji uint32_t *WSK_PORTB;
----------------------------------------------------------
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
-----------------------------------------------------------
Na POTRB wysłana prawidłowa wartość, na PORTD jakaś przypadkowa wartość.
Teraz dla wersji uint8_t *WSK_PORTB;
------------------------------------------------------------
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
---------------------------------------------------------
Na POTRB wysłana prawidłowa wartość i na PORTD też przypadkowa wartość.
Czy można tak jak powyżej deklarować wskaźnik o typie innym niż zmienna, której dotyczy. Na razie ta część programu działa dobrze, ale może w jakiejś sytuacji coś pójdzie nie tak.
Z góry dziękuję za sugestie.