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



Teraz jest 18 kwi 2024, o 09:36


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 13 ] 
Autor Wiadomość
PostNapisane: 7 kwi 2018, o 12:31 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

Witam Kolegów
Za pomocą uart-a przesyłam sobie dane z czujników pogodowych.
Wykorzystuję do tego funkcję "sprintf" i o ile przy temperaturze i wilgotności nie ma problemu to przy ciśnieniu mam ostrzeżenie o niezgodności typów
Obrazek
ponieważ obliczenia ciśnienia wymagają rzutowania na "int32_t"
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

i nie mogę tego zmienić poradziłem sobie z funkcją rzutując wartość ciśnienia na typ "int" akceptowany przez funkcję
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


W terminalu otrzymuję prawidłowy string wartości - znak temperatury, wartość przed przecinkiem, wartość po przecinku, wilgotność i ciśnienie.
Obrazek
czy to wyrażenie
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

jest prawidłowe?

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 kwi 2018, o 12:41 
Offline
Moderator
Avatar użytkownika

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

a dlaczego miałoby być nie prawidłowe ?

Pomijam już fakt, że samo pole struktury .P trzeba było zrobić typu int to byś nie musiał rzutować ;) tym bardziej, że ciśnienie na naszej planecie raczej nie przekroczy zakresu int jak chodzi o wartości panujących u nas ciśnień ;)

_________________
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: 7 kwi 2018, o 12:53 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

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

a mimo to dostawałem ostrzeżenie. Dopiero rzutowanie załatwiło sprawę

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 kwi 2018, o 12:58 
Offline
Moderator
Avatar użytkownika

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

No przecież piszę że trzeba było sobie dać

int P;

wtedy nie miałbyś ostrzeżenia i nie musiałbyś rzutować

_________________
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: 7 kwi 2018, o 13:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

No nie do końca bo przy typie
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

wartość ciśnienia to 295hPa
Obrazek

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 kwi 2018, o 14:32 
Offline
Moderator
Avatar użytkownika

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

sory ale nie wiem o czym ty mówisz ?

a co ? wartość np 1025 nie mieści się w int ? ;)

_________________
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: 7 kwi 2018, o 17:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

mirekk36 napisał(a):
a co ? wartość np 1025 nie mieści się w int ? ;)

Oczywiście, że się mieści, ale jak w strukturze zmienię z int32_t P na int P to funkcja obliczająca wartość ciśnienia zwraca 256...

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 kwi 2018, o 17:48 
Offline
Moderator
Avatar użytkownika

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

mczarny napisał(a):
Oczywiście, że się mieści, ale jak w strukturze zmienię z int32_t P na int P to funkcja obliczająca wartość ciśnienia zwraca 256...


no tu kolega troszkę popłynął ;) .....

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


;)

------------------------ [ Dodano po: 1 minucie ]

poza tym masz YB - zajrzyj do niego ;) do obsługi ciśnienia

------------------------ [ Dodano po: 2 minutach ]

Pomyśl - po jaki GWINT trzymać w strukturze, która przechowuje wartość 16-bitową - zmienną typu 32-bitowego - bo co? bo inaczej obliczenia źle wychodzą ? Obliczenia można wrzucić jak pokazałem wyżej do liczby 16-bitowej i nie tracić miejsca w RAM w strukturze dla zmiennej P , która i tak zawsze będzie przechowywała wartość int

_________________
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: 7 kwi 2018, o 18:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

mirekk36 napisał(a):
no tu kolega troszkę popłynął ;) .....

:oops: no tak

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 kwi 2018, o 19:50 
Offline
Moderator
Avatar użytkownika

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

spokojnie człowiek uczy się całe życie ... ja również

_________________
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: 9 kwi 2018, o 21:58 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lut 2015
Posty: 26
Pomógł: 0

mirekk36 napisał(a):
------------------------ [ Dodano po: 2 minutach ]

Pomyśl - po jaki GWINT trzymać w strukturze, która przechowuje wartość 16-bitową - zmienną typu 32-bitowego - bo co? bo inaczej obliczenia źle wychodzą ? Obliczenia można wrzucić jak pokazałem wyżej do liczby 16-bitowej i nie tracić miejsca w RAM w strukturze dla zmiennej P , która i tak zawsze będzie przechowywała wartość int


To, że tam będzie wartość 16 bitowa, wcale nie znaczy, że będzie zajmować dwa bajty. Alignment to złośliwy potwór.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 kwi 2018, o 22:02 
Offline
Moderator
Avatar użytkownika

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

Pan Ziemniak napisał(a):
To, że tam będzie wartość 16 bitowa, wcale nie znaczy, że będzie zajmować dwa bajty. Alignment to złośliwy potwór.

Znaczy znaczy panie kolego ;) w 8-bitowcu nie ma innej możliwości, a to o czym mówisz dotyczy procków a w zasadzie kompilatorów na procki więcej niż 8-bitowe.

Alignment to nie złośliwy potwór tylko trzeba wiedzieć jak działa i kiedy następuje pakowanie struktury w C.

_________________
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: 9 kwi 2018, o 22:52 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lut 2015
Posty: 26
Pomógł: 0

mirekk36 napisał(a):
Pan Ziemniak napisał(a):
To, że tam będzie wartość 16 bitowa, wcale nie znaczy, że będzie zajmować dwa bajty. Alignment to złośliwy potwór.

Znaczy znaczy panie kolego ;) w 8-bitowcu nie ma innej możliwości, a to o czym mówisz dotyczy procków a w zasadzie kompilatorów na procki więcej niż 8-bitowe.

Alignment to nie złośliwy potwór tylko trzeba wiedzieć jak działa i kiedy następuje pakowanie struktury w C.


Owszem, uwaga była dość ogólna i zgodzę się, że trzeba uważać z kompilatorem w takim wypadku. Ogólnie dobrze jest pisać kod tak, żeby był portowalny.



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: 13 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 6 gości


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