To forum używa plików cookies
To forum wykorzystuje pliki cookies do przechowywania informacji o Twoim logowaniu, jeśli jesteś zarejestrowany, oraz informacji o Twojej ostatniej wizycie, jeśli nie jesteś zalogowany. Pliki cookies to niewielkie pliki tekstowe zapisywane na Twoim komputerze; cookies ustawiane przez to forum mogą być używane wyłącznie na tej stronie i nie stanowią zagrożenia dla bezpieczeństwa. Cookies na tym forum śledzą również, które tematy zostały przez Ciebie przeczytane oraz kiedy miało to miejsce. Prosimy o potwierdzenie, czy akceptujesz, czy odrzucasz zapisywanie tych plików cookies.

Niezależnie od wyboru w Twojej przeglądarce zostanie zapisany plik cookie, aby zapobiec ponownemu zadawaniu tego pytania. W każdej chwili będziesz mógł zmienić ustawienia cookies, korzystając z linku w stopce strony.

Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Programowanie w języku C w środowisku AVR Studio4
Pomyślałem sobie że ... jeśli masz zmienne "unsigned 4-Bytes" i rezultat ma być "unsigned 4-Bytes" ale obliczenia potrzebujesz wykonać w precyzji "unsigned 8-Bytes" ... to można po prostu użyć jawnej konwersji typów (explicit type conversion) bezpośrednio w samym równaniu ...

Kod:
Uint32_t FTW, fs, frequency;
fs = 400000000UL;
// ...
FTW = ((Uint32_t)( 4294967296ULL * ((Uint64_t)frequency) / ((Uint64_t)fs) ));

A żeby być jeszcze bardziej pewnym ... można zastąpić 4294967296ULL poprzez (((Uint64_t)1) << 32) albo (((Uint64_t)65536UL) * ((Uint64_t)65536UL))
Cytuj


Wiadomości w tym wątku

Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości