Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 11 kwi 2026, o 05:47


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
Autor Wiadomość
PostNapisane: 27 sty 2014, o 23:12 
Offline
Nowy

Dołączył(a): 15 sty 2014
Posty: 10
Pomógł: 0

Witam,

na wstępie piszę, że niestety nie mogę udostępnić kodu, ponieważ nie chciałbym żeby posądzono mnie o plagiat (kod programu przeznaczony jest na pracę inżynierską).

Mam problem z dziwnie zachowującą się zmienną typu long. Przechowuję w niej ręcznie stworzoną liczbę w taki sposób, że na wyświetlaczu LCD wyświetlam liczbę jako pojedyncze cyfry. Przechodząc po menu prawo/lewo zmieniam cyfrę, a przechodząc góra/dół zwiększam/zmniejszam wartość cyfry. Na końcu z pojedynczych cyfr tworzę jedną liczbę za pomocą takiego kodu:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


gdzie digit1 to najważniejsza część liczby (dziesiątki tysięcy), a digit6 najmniej ważna część (jedności).

Następnie zmienną reference_pressure formatuję w taki sposób, że dziele ją przez 100 (aby zmienić skalę), a następnie robię modulo 100 z reference_pressure (wynik modulo to wartość po przecinku).

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Na LCD dla wartości digit1 > 0 wyświetla bardzo dobrze (przynajmniej dla wymaganego przeze mnie zakresu), jednak gdy digit1 = 0, a digit2 > 0 to zaczynają się wyświetlać kompletne bzdury. Np. dla 99900 wyświetla -311,0-72, a dla 91300 wyświetla +257,89. Wygląda to tak, jakbym wykraczał poza zakres liczby. Ale z tego co się orientuję typ long jest 32 bitowy, więc nie powinno być problemu.

Może Wy potraficie mi powiedzieć, o co w tym wszystkim chodzi ! :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 sty 2014, o 23:23 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27452
Lokalizacja: Szczecin
Pomógł: 1045

pakos napisał(a):
Może Wy potraficie mi powiedzieć, o co w tym wszystkim chodzi !


czasem warto poczytać i na stronie atnela ;)

http://atnel.pl/domyslna-promocja-do-typu-int.html

to może ci się przydać ;)


Autor postu otrzymał pochwałę

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 sty 2014, o 23:38 
Offline
Nowy

Dołączył(a): 15 sty 2014
Posty: 10
Pomógł: 0

W tak głęboki "busz" nie zapuszczałem się jeszcze, a widzę, że WARTO! Problem rozwiązany za pierwszym podejściem.

Wielkie dzięki za pomoc.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Baidu [Spider] i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO