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



Teraz jest 18 kwi 2024, o 20:46


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 25 sie 2016, o 09:27 
Offline
Nowy

Dołączył(a): 23 cze 2016
Posty: 16
Pomógł: 0

Witam mam proste pytanie chciałbym wpisać w zmienną wynik(uint16_t) 3 zmienne (uint8_t)a=2,b=4,c=6 aby wyglądało to
tak wynik=aaaabbbbcccccccc według książki BB jest to banalnie proste -- wynik |=((a<<12)|(b<<8)|(c<<0)) ale u mnie zawsze bity a to są zera dlaczego ? czy te przesunięcia można tylko robić na 8 bitowych liczbach ?
proszę o podpowiedz



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 sie 2016, o 10:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 30 cze 2016
Posty: 247
Lokalizacja: Rybnik
Pomógł: 13

Nie musi być (c<<0) może być (c). Poza tym jak sprawdzasz że tam są zera?

_________________
Situs != Situs



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 sie 2016, o 10:19 
Offline
Nowy

Dołączył(a): 23 cze 2016
Posty: 16
Pomógł: 0

odczytam wynik wyśle rs232 i wklepie w kalkulator i widzę jak wygląda bin najprościej :) tak myślę



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 sie 2016, o 10:39 
Offline
Użytkownik

Dołączył(a): 23 sty 2014
Posty: 1079
Pomógł: 73

dobrze myślisz tylko pytanie czy ten rs232 Ci dobrze działa, zacznij od wysłania jakiejś pewnej zmiennej, np 10. i zobacz czy rzeczywiście to odbierasz. Jak to działa to zrób sobie jakiś prostszy przykład z przesunięciem z jedną zmienną na poczatek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 sie 2016, o 10:58 
Offline
Moderator
Avatar użytkownika

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

qbaand napisał(a):
czy te przesunięcia można tylko robić na 8 bitowych liczbach ?

Nie ;) można na każdych a domyślnie są robione na 16 bitach ... ty zaś jeszcze nie doczytałeś o tzw "domyślnej promocji do int" w języku C, więc polecam uzupełnij tę krótką lekturę ;) ze strony wydawnictwa Atnel
http://atnel.pl/domyslna-promocja-do-typu-int.html

wtedy się dowiesz dlaczego w twoim przykładzie trzeba stosować jawne rzutowanie na tym 32-bitowy

_________________
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: 25 sie 2016, o 11:15 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 30 cze 2016
Posty: 247
Lokalizacja: Rybnik
Pomógł: 13

Spróbuj wysłać UARTem zmienną a o takiej postaci [syntax=c]uint16_t TestRS232 = 0x5479 [/code]. Powinno pojawić się "Ty" albo "yT". Jak nie pojawi się to masz uarta zepsutego

_________________
Situs != Situs



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 sie 2016, o 14:27 
Offline
Nowy

Dołączył(a): 23 cze 2016
Posty: 16
Pomógł: 0

Dzięki za pomoc . Lekturę doczytałem panie mirku :) Wszystko działa tak jak należy. Musiałem nowy projekt utworzyć co sie pomieszało w eclipse.



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

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