Chodzi o zwykłe przesuwanie bitów, czy tak? W takim razie w C są po prostu potrzebne ku temu dwa operandy:) "<< n" przesuwający o n bitów w lewo oraz ">> n" przesuwający o n bitów w prawo Dla przykładu: 1 << 3 = 8 3 << 1 = 6 15 >> 2 = 3 Czy chodziło o to? Bo późno jest już i oczy mi się zamykają :D
Wpadłeś w pułapkę liczb ze znakiem, domyślnych konwersji i Undefined Behaviour (UB) za jednym zamachem. [syntax=c]wartosc32 = (FLASH_0_read_eeprom_byte(addrEE)<<... | (FLASH_0_read_eeprom_byte(addrEE+1))<... | (FLASH_0_read_eeprom_byte(addrEE+2))<... ; [/syntax] kiedy wykonujesz taką operację to FLASH_0_read_eeprom_byte(.adres) jest...
Układ zwraca wynik z dokładnością do 0.25C, zatem dwa najmniej znaczące bity określają właśnie ułamkową część temperatury. Jeśli nie potrzebujesz takiej rozdzielczości to musisz przesunąć wynik o dodatkowe dwie pozycje. Robisz to poprzez dzielenie, równie dobrze - a nawet szybciej działa przesuwanie bitów wspomnianą już komendą Shift. Zatem polecenie:...
Cos chyba kolega przekombinowuje z tym projektem (tak się domyślam po metodzie zjechania z 10 bitów do 8). Proponuje zamiast mnożyc floaty zrobić V8bit = V10bit >> 2; Nie używam za dużo przesunięć bitowych, nawet nie wiedziałem, że jest taka możliwość. Dziękuje za wskazówkę. dodatkowo mnożąc przez ułamek używałeś do tego armaty w postaci biblioteki...
. bedzie sześć przekaźników np jak włącze układ to załączy się przekaźnik nr1 jak nacisne przycisk''A'' to rozłączy się przekaźnik nr1 i załączy się nr2, jak znowu nacisne przycisk''A'' to załączy się przycisk nr3 i tak dalej lecz kiedy nacisne przycisk"B" to załączy się przekaźnik nr2 jak znowu nacisne"B" to załączy się przekaźnik nr1 i jak znowu...
Witam, A czy S7 1200 nie ma w bibliotece bloku do przesuwania bitów np. w prawo ale przesuwanie kołowe?. Nie ma TIA pod ręką to nie sprawdzę na 100%;) Ewentualnie funkcja i zamiana ręczna bitów. Pozdrawiam,
Dzielenie przez 16 to to samo co przesuwanie bajtu w prawo o 4. Czyli jest to wywalenie jakby 4 najmłodszych bitów, czyli odczyt temp będzie z dokładnością do 0,5 stopnia. Zajrzyj do notki. 5 najstarszych bitów to znak czy dodatnia czy ujemna, a 4 najmłodsze oznaczają miejsca po przecinku. Rozumiem ze zmiana z systemu binarnego na dziesiętny jest znana?...
Przede wszystkim to w ostatniej linii jest błąd. Nie powinno być tam operatora '>>'. co to jest to 2*4 potem &0xf... No cóż, zazwyczaj 2*4 daje 8, tak to już jest z mnożeniem ;) A poważnie to jest tak: '>>' - oznacza przesunięcie w prawo bitów wartości z lewej strony o liczbę podaną z prawej, np. short a = 0x1285; // 0001001010000101b short b = a>>8;...
Hehe, przeanalizuj dokładnie Twój ostatni programik i odpowiedz sobie jeszcze raz na pytanie jak on właściwie działa :) ...jak ograniczyć ruch diody dosłownie na 4 pinach. Tu mamy przesuwanie 2 diodek - "00010001"... Wkradł mi się mały błędzik :) W swoim programie pobierałem dane z linii Data i były to tylko bity 0...3 dla silnika bipolarnego natomiast...
Pamięć jest zorganizowana w komórki 16-bitowe, objawia się to np tym że wskaźnik programu wskazuje na słowo (2 bajty) a nie na bajt. Wszystkie instrukcje muszą być więc wyrównane do granicy dwóch bajtów. Jakkolwiek z poziomu samego programu pamięć flash jest zorganizowana bajtami, więc spokojnie można w niej umieszczać tablice bajtów bez utraty pamięci....
L MD 80 RLD 1 //nie wiem w jakich przypadkach parametr a w jakich nie T QW24 //i jaka jest różnica gdy jest bez parametru? Parametr wtedy, gdy nie wiesz co załadowałeś do ACCU2 i gdy potrzebujesz rotacji o wartość do 32.. :-) L MD 80 RLD 32 T QW24 A bez parametru wtedy, gdy w ACCU2 już załadowałeś o ile masz przesunąć. Wtedy też możesz przesunąć o...
http://obrazki.elektroda.net/33_12693286... Cześć! Kiedyś, kiedy zaczynałem zabawę w wyświetlacze graficzne, potrzebny był mi program na PC, który pozwalałby konwertować czcionki i obrazki do tablicy C, by potem użyć jej w programie dla mikrokontrolera. Potrzebowałem zapisywać ja w postaci monochromatycznej, gdzie jednemu bitowi zmiennej w...
https://obrazki.elektroda.pl/8661538600_... Zainspirowany podcastami o historii komputerów (podcast #19 - Toksyczna pojemność - rtęciowa, akustyczna linia opóźniająca Linia opóźniająca opiera się o zjawisko przewodnictwa akustycznego w różnych materiałach. Dźwięk w powietrzu rozchodzi się z prędkością 343m/s. W wodzie morskiej, ze...
producent (na bank) oleje prośbę o udostępnienie specyfikacji transmisji Ja zwykle mam do czynienia ze sprzętem, dla którego producent podaje, co ten sprzęt wysyła, jakie polecenia przyjmuje, jaki jest format tego wszystkiego. Ale... * Znalezienie w sieci odpowiedniego dokumentu nierzadko wymaga dłuższego przekopywania się (godziny, nawet dni). * Jest...
Okazało się, że przesuwanie bitów w liczbie ujemnej funkcją bit.rshift() nie jest dobrym pomysłem. Do przesuwania bitów w liczbie ujemnej należy użyć funkcji bit.arshift() Ah te tajemne szyfry i polecenia magiczne.. fajnie że już działa ;) Miłego korzystania !
Elektronicznie takie sumowanie (liczb całkowitych, czyli jednostki ALU) jest prostą operacją i wewnętrznie tak się odbywa, ale w szeregu na wielu tranzystorach równocześnie (a właściwie: kaskadowo). Stąd architektura (szerokość danych) procesora - wskazuje, jak dużo bitów (jak długą liczbę) może zsumować i dać wynik w ramach taktu. Ponieważ zanim wynik...
Witam, Zna ktoś może szybki i prosty sposób by obrócić bajt bez indeksowania bitów- nic nie przychodzi mi do głowy. Czyli by Bajt.8=Bajt.1, Bajt.7=Bajt.2 itd...czyli taki obrót wokół osi symetrii ;-)... robiw inventco.eu - temat poprawiłem.
Wielomian opisuje ciąg 17-bitowy, ale jest to poprawny zapis - jeśli liczyć crc z definicji, traktując dane jako wielomian x-tego stopnia (gdzie x to liczba bitów), to przy dzieleniu aby reszta była wielomianem 16 stopnia (16 bitów), generator musi być stopnia o jeden wyższego. Do implementacji na rejestrze przesuwanym odrzuca się najstarszy bit. Co...
Istnieje takie przesuwanie bitów jak zostało pokazane. a nie robisz czasem tego na PORTB a nie PORTD?
W pierwszym poście masz jeszcze jakieś przesuwanie bitów [syntax=c]LFOTAB[i]=pgm_read_word( &tab1[i] )>>5;[/syntax] To nie ma znaczenia?
W C ja stosuję inne zapisy bez _BV. Ja też. I nie rozumiem tej polityki z _BV. Jak dla mnie łatwiej jest zapisać 1<<7 niż _BV(7). Zresztą, całe to przesuwanie bitów w AVR to pomyłka.
AVE... Odsyłasz do noty bo nie potrafisz napisać programu, który osiągnie max bez DMA. Czy tak ciężko przyznać, że nie masz racji? Jak napisać taki program napisałem w spoilerach. Jeśli nie możesz tego odczytać, to może powinieneś iść do okulisty? Co do GPIO to w przypadku PIC i XC8 nóżką manipulować można na kilka sposobów: 1. Można bawić się w maski...
żeby po samym naciśnięciu switcha Co Masz na myśli ? By zmienić kolejność przesuwania bitów Musisz albo nacisnąć drugi raz ten sam przycisk, lub też nacisnąć inny, ewentualnie jeśli skończy się przesuwanie w lewo, nastąpi przesuwanie w prawo. Jeśli ma być to ten sam przycisk to Musisz dodać informację, która będzie widoczna dla podprogramu, który z...
Czy dobrze liczę, że dla f = 50 Hz kolejne elementy tablicy wynoszą: 2, 5, 7, 10, 12, 15 ? Tak. Chyba te trzy linijki obliczające krok oznaczają to samo co pisałem w wcześniejszym poście: https://obrazki.elektroda.pl/7776132100_... To to samo tylko inne wartości. Ty dzielisz przez 100 a ja przez 64. Tylko czemu zamiast dzielić przesuwasz...
Nie wiem jak to robią inni, ale ja dla potrzeb np. wyświetlacza sprawdzam tylko najstarszy bit dla wyświetlenia znaku, potem sprowadzam liczbę do wartości bezwzglednej i pozostałe operacje, w tym przesunięcia np. o cyfrę (>>4 w spakowanym BCD) robię już na uint. Bo rzeczywiście nie wiem jak zachowuje się przesuwanie bitów liczby ujemnej.
Witam Bardzo dziękuję za pomoc oaz ten program. Jedyne czego nie rozumiem w programie Kolegi, to zasady działania polecenia Shift. Z tego co zrozumiałem, to chodzi o przesuwanie bitów zmiennej, czyli umożliwia to de facto dzielenie lub możenie liczby. A co w przypadku, gdy chcę pomnożyć moją liczbę np przez 0.74, w tym wypadku byłby to zapis: [syntax=vbnet]Liczba...
Dzięki. Jeszcze mam pytanie, która operacja będzie szybsza (zabierze mniej czasu pracy procesora) - w przypadku multipleksowania i wystawiania jedynki kolejno na port sterujący zapalaniem kolejnych wyświetlaczy, czy przesuwanie bitów zerując i ustawiając wyjścia portów, czy podawanie w jednej linijce np PORTA=0x02; itd
Nie ma sensu przesuwanie bitów tutaj. Z opisu można zrozumieć, że chodzi tak na prawdę o przesunięcie elementów. [syntax=c] char tab[6] = {'1','2', '3', '4', '5', '6'}; for(size_t i = 1; i < 6; i++) { tab[i-1] = tab[i]; } [/syntax] Albo na wskaźnikach: [syntax=c] char tab[6] = {'1','2', '3', '4', '5', '6'}; char * p_tab = tab; for(int i = 0; i <...
z tabelka to dowaliłem ... przepraszam...zapędziłem się odpowiedzią... Bardzo dziękuję, że jestes taki pomocny. Napisałem też do Ciebie PW. Przeanalizuję to wszystko dzisiaj i zobaczę co mi wyjdzie, nie mogę nigdzie znaleść przykładu procedury przesuwania bitów na 3 pinach - znalazłem tylko przesuwanie na całym porcie co do tabelki to widzę prawidłowość,...
Znak liczby ujemnej odnotowujemy w pierwszym bicie i dalej zupełnie ignorujemy, postępujemy jak z liczbą dodatnią. Zaokrąglanie to zupełnie oddzielna operacja, którą wykonujemy na początku, przed normalizacją (przesuwaniem). Dzięki zaokrągleniu mamy właściwe wartości na znaczących bitach. Mantysę zaokrąglamy do 6 bitów, bo wiemy, że pierwszy będzie...
(at)raffiki Dzięki za odp. Ad.1 Faktycznie, lecz chyba nie moge tego teraz przenieść Ad.2 Mogłbyś to jakoś przedstawić bardziej dopasowanego do mojego przypadku gdzie: PORTC=0b00000000; do 0b00000111; to przełączanie wierszy (74ls259) DS_L; DS_H; kolejno stan niski i wysoki wejscia szeregowego dla 74hc595 SHCP_L SHCP_H kolejno stan niski i wysoki pinu...
Przecież ten wyświetlacz pozwala zapalić i zgasić dowolny pixel. Tylko, że ram X adresujesz co 8 bitów, czyli na raz operujesz 8 pikselami. Jeżeli wyświetlacz ma w X 400 pikseli, to adresy w ram są od 0 do 49. Nie musisz się też ograniczać do znaków o szerokości będącej wielokrotnością 8 bitów. Możesz rozważyć drukowanie znaków proporcjonalnych do...
https://obrazki.elektroda.pl/4044017600_... Pytanie: Czy istnieje element konstrukcyjny, który pozwala mi połączyć mały sygnał wyjściowy z sensora bezpośrednio do wejścia napięciowego przetwornika analogowo-cyfrowego (ADC)? Odpowiedź: Tak, najnowsza rodzina wzmacniaczy pomiarowych od ADI może, wykorzystując jeden układ, usunąć napięcie...
Witam, Zastanawiam się nad Siemens Logo! Kup używkę z zasilaczem , weź 24V , jak zostaniesz przy tym to dokoptujesz albo moduł rozszerzeń albo płytke przekaźnikową 24V i masz działający system. Fakt trzeba dokupić kabel programujący. Dokładnie jak wspominał kolega. Nie ma sensu wydawać pieniędzy na nowe zestawy startowe bo to niepotrzebny wydatek. Proponuję...
Moje sygnały wejściowe przedstawiają element, który porusza się na maszynie z prędkością 16 m/min. Na ten element muszę nanieść preparat na początku i na końcu maszyny. Tak więc muszę "dokładnie" wiedzieć w którym momencie element znajdzie się pod dyszą by ją załączyć. Dysza rozpyla preparat w obszarze ok. 1 cm. Element porusza się 16 m/min - czyli...
ja ci kolego nie podam gotowca z 2 powodów, bascom mnie zupełnie nie interesuje a druga sprawa ze net jest pełen przykładów. A różnica jest zasadnicza bo sprzetowa transmisja aby wysłać znak potrzebuje takich czynności jak ustawienie interface (predkość, polaryzacja sygnału) a potem tylko trzeba ustawić pin odpowiedziałny za sygna CS urzadzenia oraz...
Witam, byłem zajęty :? Przecież UART w PC można tak skonfigurować, żeby używał TXD jak zwykłego wyjścia. Wtedy będą trzy linie do sterowania układem.
Sprzętowe SPI przesuwa 8 bitów i koniec, dlatego masz dwa wywołania funkcji - najpierw młodsze 8bitów, później starsze. W soft spi wysyłasz tak długo, aż wartość cnt nie będzie równa 0 . Przesuwanie "wciska" od lewej strony 0 więc gdy miałeś np. cnt=0b10000000 to wykona się to 8 razy bo ta jedynka będzie się przesuwać w prawo więc po wykonaniu pętli...
można np przesuwając bit po bicie sprawdzić czy jest jedynka i wtedy negować jakiś bit, jeśli będzie 0 lub 1 to wiadomo czy było parzyście
Ad 1 Jest możliwe połączenie dowolnej liczby takich układów, jednak należy pamiętać o kilku aspektach technicznych (linia zegara robi się długa) oraz programowych - w zasadzie wpisuje się wszystkie układy naraz, więc nawet zmiana jednego sygnały wymaga wpisania wszystkich bitów, co wymaga czasu. Czasami lepiej (szybciej) jest podłączyć kilka takich...
Zależy mi na zrozumieniu i napisaniu funkcji po swojemu, więc to mi nie pomaga.. Znalazłem taką informację - With the polynomial X^8 + X^5 + X^4 + 1 (or X^0), each bit of the data byte is tested, starting with the bit-0 position. This is effectively the X^8 term of the polynomial. Only if the modulo-two addition of this bit with the same bit position...
ledy=(ledy<<=1)+1; to jest to samo co: ledy=(ledy<<=1); ledy=ledy + 0x01; pierwszą linijke można zapisać: ledy<<=1; // przesunięcie bitów o jeden w lewo drugą linijke można zastąpić: ledy |= 0x01; // ustawienie najmłodszego bitu tak więc jest to przesuwanie w lewo z wpisywaniem jedynek w puste miejsca.. jeśli zero zejdzie z ostatniego...
Witam nie chce zakładać nowego tematu dlatego podepnę się pod ten :] mam problem z tym rejestrem przesuwnym, mój kod: library IEEE; use IEEE.std_logic_1164.all; entity D8s is port ( we : in std_logic; wy : out std_logic; clk : in std_logic; nreset : in std_logic ); end D8s; architecture D8s_a of D8s is signal c : std_logic_vector(7...
slawek55 napisał: Nijak sie mi to ma do tego co wydaje sie że powinno wyjśc przy normalnych obliczeniach robionych na piechotę czyli przesunięcie z powrotem bitów w prawo o 6 pozycji i odjęcie składowej stałej (połowy przetwornika czyli 512). Nie za bardzo rozumiem :/ To już się wyjaśniło. Na początku myślałem, że odjęcie liczby 0x8000 powoduje odjęcie...
Kolejne potęgi dwójki: 1, 2, 4, 8, 16 itd - jest dobrze. Jeśli na wejściu by było 1000 0000, to pierwsze przesunięcie i ustawienie da wynik 1100 0000, drugie przesunięcie da wynik 1111 0000, trzecie przesunięcie 1111 1111 - dla 8 bitów wystarczą te 3 operacje, przesuwanie o 8 da wartość zero a więc nic nie zmieni.
Zmienna nadal może nie być zapisywana - dopóki w toku wykonywania nie będzie wywoływanej funkcji, która mogła by korzystać z tej zmiennej, nie zabraknie rejestrów pod zmienne, dopóty wartość będzie trzymana w rejestrze. Oznaczenie zmiennej jako volatile wyłącza ten mechanizm "cacheowania" wartości zmiennych w rejestrach. Dla przykładu rejestry IO są...
Widzę, że autor chce zrobić konwersję liczby binarnej na BCD. Jest do tego specjalny algorytm, który nie używa mnożenie i dzielenia, tylko przesuwanie bitów i dodawanie warunkowe. Można poszukać w google pod nazwą "bin to bcd conversion algoriht", "Double-Dabble", "Shift-and-add-3 algorithm". [url=http://www.eng.utah.edu/~nmcdonal/T...
Zgadza się, ale w moim przypadku, gdzie chodziło o przesuwanie bajtu w postaci 11110111, przy dodatkowym pomijaniu bitu 7, dlatego po prostu ustawiłem flage C, zeby po przesunieciu jej na pozycje bitu 0 wpisywana była jedynka. Więc w tym przypadku efekt jest taki sam. BTW można w C "zaklamrować" kilka instrukji asemblera tak, żeby nie trzeba było wpisywać...
Czyżby płytka trzaśnięta? 99% początkujących twierdzi, że sprzęt jest uszkodzony. Prawda jest inna! lub coś koło tego jako wynik mnożenia, dzielenia, przesuwania bitów I z przesuwaniem może być problem. AVR-GCC operuje na 16-bitach. Jak działasz na uint32_t odczytanaWartosc = 0; to wynik może być dziwny. To jedna z ułomności AVR-GCC, która zmusiła...
Jestem praktykiem i wiem, że na avr'ach mnożenia nie da się wykorzystać, jeśli przesuwanie jest o zmienną wartość. Przesuwanie o stałą bez problemu można zrealizować przez mnożenie (na jakiej podstawie twierdzisz, że nie umiem mnożenia przez 2?), jednak nie masz instrukcji która umożliwia przesunięcie w lewo o tyle bitów jaka jest wartość rejestru (arm'y...
Właśnie pisałem jakiś kolejny program w GCC i jak pewnie większość z Was musiałem sobie skonfigurować liczniki by uzyskać... coś, nieważne co. Dziwię się, że środowisko związane z AVRGCC nie wpadło na pomysł by takie konfiguracje ludziom uprościć! Pewnie wielu z Was rozpisuje się w stylu: // ****************************************...
przesuwanie kółka sekwencja bitów zamiana bitów
działa obrotomierz mazda vestel 17ips72 głośny parownik lodówka
ue50hu6900 podświetlenie ktrot wyświetlacz
Peiying PY-3118M4 – zwarcie żółtego przewodu BATT+, przyczyny i diagnostyka Pioneer DEH-4500BT brak dźwięku na głośnikach, radio działa – diagnostyka i naprawa