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
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...
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,
[syntax=c] zamiast if( ! (PIND & 0x38) ) daj if( !(PIND & (1<<PD2) ) [/syntax] Pozostałe warunki odpowiednio popraw. Przy okazji naucz się przesuwania bitów i używania zdefiniowanych symboli, bo kod będzie czytelniejszy (nie stosuj liczb). http://mikrokontrolery.blogspot.com/2011... http://www.java2s.com/Tutorial/C/0100__O...
Nie komunikuje się bo producent mógł celowo wyłączyć ISP. Ten wsad jest na pewno w jakiś sposób zaszyfrowany, nawet głupie odwracanie/przesuwanie bitów wystarczy żeby ktoś nie miał z niego pożytku.
Problem jest taki, że możesz "odwrócić" wielomian i wtedy trzeba zmienić kierunek przesuwania bitów. Każdy wielomian można zapisać w HEX aż na 6 sposóbów: http://en.wikipedia.org/wiki/Mathematics... Żeby móc sprawdzić poprawność implementacji musisz wiedzieć: jaki jest sposób zapisu wielomianu,...
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...
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:...
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;...
Sposób obsługi tego rejestru jest chyba taki że wybierasz go i wtedy przesuwające się jeden po drugim bity nie mają wpływu na wyjścia. Kiedy "puszczasz" wybór to ten podręczny rejestr jest przepisywany na wyjścia. Ty masz tylko LED`y i nic sie nie stanie, ale pomyśl o jakiejś maszynie w której byłby przekaźniki i podczas przesuwania bitów by się włączały...
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
Może steronik klawiatury z PC już to jakoś komputuje. No właśnie! Ale tylko softwareowo nie dałby rady, bo nie jest w stanie rozpoznać niektórych (nierozpoznawalnych) sytuacji, musi być wspierany harwareowo i o ten hardware mi właśnie chodzi. Bo softwareowo, nie mam problemów, nawet nie trzeba czekać NOPów, wystarczy wystawić zero na kolumnę/wiersz,...
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 !
Błąd polegał na tym, że przy ISC10 zamiast przesuwania bitów było porównanie, ISC10=2 a więc relacja była spełniona i przyjmowała wartość 1. Co do wszystkich rad dotyczących kasowania i ustawiania bitów MCUCR i innych - mają one sens, ale dopiero po wstępnym wpisaniu tam jakiejś wartości. Mimo, że po resecie są tam wartości domyślne, najlepiej na samym...
Shift jest od przesuwania bitów. Ty musisz przesuwać całe bajty w tablicy Buffer_in. Użyj sobie mojej metody odbierania: [syntax=vbnet]Inputbin Dana Buffer_in(in_pos) = Dana Incr In_pos If In_pos = 9 Then 'Jak zmieści się co najmniej jedna cala ramka danych If Buffer_in(1) = &H01 Then 'To sprawdzamy czy jest prawidłowo rozpoczęta If Buffer_in(2) = &H10...
Thx, wszystko śmiga. Teraz wiem, że nie do końca rozumiałem przesuwania bitów. Zaległości nadrobione ;)
Istnieje takie przesuwanie bitów jak zostało pokazane. a nie robisz czasem tego na PORTB a nie PORTD?
Do przesuwania bitów służy polecenie shift :) Poczytaj w pomocy bascom'a.
Tak, trzeba wywalić Lcdfontsize i Ch_inv. Bo są one przekazywane przez kilka funkcji aż do tej która faktycznie ich używa. Z kodu wywaliłem trochę niepotrzebnych działań matematycznych, niektóre dzielenia i mnożenia zastąpiłem przesuwaniem bitów (porównaj kody), ale na pewno jeszcze sporo da się zaoszczędzić. Wykorzystałem tego gotowca bo chciałem skupić...
A jaki to sekretny powód aby nie mnożyć (dzielenie zastąpiono przesuwaniem bitów) ?
Witam, Nie znam tego typu panela HMI ale do wyodrębniania bajtów często korzysta się z przesuwania bitów w lewo i prawo plus dodanie ewentualnej maski. Pozdrawiam,
Eh kolego, nie uważałeś na matematyce? Dzielenie całkowitoliczbowe to Q \cdot D + R = X , gdzie Q (quotient) to iloraz, D (divisor) to dzielnik, R (remainder) to reszta, a X to dzielna. Żeby było tylko jedno rozwiązanie to zakłada się że R \in . Dla liczb ujemnych są problemy ze znakami, więc to na razie pomińmy. Jeśli chcesz korzystać z reprezentacji...
Szukaj pod hasłem "ring buffer". Bufor cykliczny operuje na bajtach. A mnie interesuje bufor bitowy z jednoczesnym przesuwaniem tychże bitów. Spójrz na kody, które podesłałem. Rozumiem, że można stworzyć w ten sposób bufor cykliczny bitowy, ze wskaźnikiem bitu, ale to chyba będzie mistrzostwo nieefektywności.
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?
(at)khoam Czyżbyś był informatykiem z wykształcenia? ;) Mówię o moim środowisku, u mnie określenie kogoś informatykiem ma wydźwięk pejoratywny. Może u Ciebie to nie jest określenie tak negatywnie nacechowane. Cóż masz mnie, jestem z wykształcenia elektrotechnikiem, ale wiele lat doświadczenia w branży i spostrzeżenia że wiele projektów w sumie matematyki...
OK, pomogła ostatnia porada z przesuwaniem bitów. Co do X, to pozostawię go tam, gdzie jest, gdyż będzie on użyty zarówno w przerwaniach, jak i w pętli głównej "while(1)" Dzięki Kolegom za pomoc :)
O kurcze.. Ale wtopa z tą potęgą !!! :D Człowiek nieprzyzwyczajony do operacji przesuwania bitów i tak poleciałem z for(). Dzięki za słuszną uwagę!
W ostateczności możesz zrealizować taki interfejs programowo, za pomocą przesuwania bitów w zmiennej. Ale kolega ma rację, wyślij najpierw 2 bity adresu i potrem 8 bitów danych.
Zamienienie zmiennoprzecinkowej(float) na stałoprzecinkową(nie ma takiego typu, ale można użyć dwóch uint8_t jeden jako "przed przecinkiem" drugi jako "po") na pewno spowoduje znaczne zmniejszenie się aplikacji. Oraz trzeba usunąć dzielenie, bardzo często można je zamienić przesuwaniem bitów.
nie znam sie na GE Fanuc, ale można to zrobić poprzez wykorzystanie potencjometru wewnętrznego sterownika, którym reguluje sie częstotliwość impulsów sterujących (sterowanie timerem). Generowanie impulsów można zrobić poprzez instrukcje przesuwania bitów. Np. jeżeli będziesz przesuwał o 2 bity, bedziesz miał 4 impulsy w jednym okresie, o 1 bit 8 impulsów....
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.
Tak też myślałem, sporo taktów procka.... Właśnie pomyliłem kolejność bitów szyny danych i myślałem, że załatwię to w kilka taktów a tu brrr. Nie znalazłem niestety w AVR nic oprócz przesuwania bitów, przesuwania cyklicznego czy zamiany nibli i obawiałem się, że tak właśnie będzie...:-(. Dzięki...robiw
Można zrobić to na co najmniej dwa sposoby: Krokowo zał wyjście 1, uruchom timer 2s, wył wyjście, zał wyjście 2, znowu timer itd. Innym sposobem może być przesuwanie bitów.
Przecież z tych kombinacji wynika, że wystarczyłoby zrobić króciutką jedną lub kilka pętli typu For z przesuwaniem bitów w lewo lub prawo łącznie z rolowaniem i wszystko w 100% zrobić programowo zamiast tracić komórki pamięci na takie kombinacje do sterowania wyjściami portów
Obie wersje maja taki sam czas pomiaru (przesuwanie bitów trwa dużo krócej niż pomiar a więc prawie nie robi różnicy). 16000000Hz / 128 / 13.5 = 9259Hz 1/9259Hz = 0.000108s = 0.108ms.
(at)piotr_go - mógłbyś wstawić kluczowy fragment kodu jako syntax? Będzie wtedy to szybciej dostępne. Ja bawiłem się w 4 bity na bit i timerami oraz przesuwaniem bitów. Poza tym nie krytykujmy Panowie - przypomnijcie sobie ile razy jako początkujący cieszyliście się, że gdzieś znaleźliście rozwiązanie albo wskazówkę jak to zrobić.
Tak przy okazji - jesteś pewien, że chcesz użyć 74164, a nie rejestru z zatrzaskiem (np. 575)? Ze 164 jest taki problem, że na wyjściu zawsze obserwujesz przesuwane bity, bo nie ma zatrzasku. To może być pożądane, jeśli chcesz np. efekt fali, lub nie. BTW, jeśli piny CLK, CLR i A/B podłączyć pod wyjścia z arduino to rezystory nie będą potrzebne - Arduino...
Witam, jeśli nie potrzebujesz dużej rozdzielczości (co pociąga za sobą duży rozmiar bufora) możesz użyć prostego przesuwania bitów, rejestru szeregowego lub bufora FIFO do którego będziesz co określony czas dodawał wartość/stan wejścia pomiarowego.
A to nie miało być bez tego przesuwania? Bo to x to zdaje się 16 starszych bitów liczby wejściowej...
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.
Wiem, jak obliczyć to matematycznie i takie finalnie rozwiązanie przyjąłem, ale myślałem, że jest jakaś szybsza procedura z dodawaniem i przesuwaniem bitów. Dzielenie jest nieco bardziej powolne. Procedurkę zapodaną przez Kolegę adambehnke także ćwiczyłem, ale inaczej miałem nawiasy. Poprawnie zwracał mi tylko część jedności, dziesiątki wychodziły zawsze...
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
Moja propozycja: Dzielnik napięcia tak aby dla 15,5V uzyskać ten 1V na ADC Brak kondensatora równoległego do wejścia ADC (chodzi o to aby było trochę "szumu do oversamplingu") Zastosowanie programowego prostego oversamplingu :) polegającego na tym, że wynik to suma np. 8 albo 64 ostatnich pomiarów (tablica), bez dzielenia - wtedy uzyskujemy większą...
ż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...
tylko jak zrobic by kolejen bity pojawiajace sie na powiedzmy porcie p1.1 byly pakowane do zmiennej , przychodzi mi tylko do glowy mnozenie przez kolejne wagi p1.1*2^11+...+p1.1*2^0) A słyszałeś kiedyś o przesuwaniu bitów?
Witam, Chciałbym wykonać rejestr przesuwny, używając 10 wyjść oraz jednego wejścia do przesuwania bitów switchem. Proszę o podpowiedź co do komendy jakiej użyć oraz proszę o jakiś przykładowy program (kilka linijek, żeby zrozumieć zasadę tworzenia rejestru). Język do programowania Atmegi - Basic. Pozdrawiam
Chodzi o to, ze 13-stka jest mala i by mi bardziej pasowała. Mimo tego, że nie umiem jeszcze programować to wydaje mi się ze to takie jakieś niezbyt fajne kiedy potrzebujesz tylko 3 wyjścia z procka a używasz układu który ma ich 14...dlatego chciałem zastosować attiny13, ale pojawia się problem bo nie mogę zastosować procedury zwiększania licznika na...
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.
Witam, Chciałym się dowiedzieć na temat przesunięc i rotaji bitów w STL Step 7. Wiem na czym polegają funkcję przesuniecia i rotacji ale gorzej z wykorzystaniem praktycznym. Chciałbym mając np. MD80 = 1 przesunąć go po wszystkich bitach (wyjściach QD24 zapalając kolejno jeden po drugim i tak w kółko.Zaczynając od Q24.0 -->Q24.7 -->Q25.0 --> Q25.7 -->...
Ładowanie do rejestru Z (indeks dla operacji LPM) adresu tablicy sinusa (bajtowej, dlatego to przesuwanie bitów). Poczytaj o organizacji pamięci w procesorach AVR to wszystko stanie się jasne. Zastanów się także co kompilator zrobi z tym: SINUS: .db (...) 254, 255, 256, 256, 256, 255, (...) Symulacja w AVR Studio Twoim przyjacielem.
Nie, przyporządkowania Tx i Rx do pinów nie możesz zmienić. Więc pozostaje zmiana programu. Zmiana procesora wiąże się z kosztami, czyli lepiej byłoby wymienić LCD na prostszy... Zmiany w bibliotece są proste - ograniczają się do zmiany sposobu zapisu rejestrów IO. Tak, żeby właściwe dane trafiły na właściwe bity, czyli najogólniej trzeba wykortzystać...
jeśli będziesz to pisał w bascomie to używaj tylko najprostrzych instrukcji, staraj sie to zrobić bez użycia mnozęnia i dzialenia. w sumie to wystarczy ci przesuwanie bitów, i doczyt pojedynczych bitów. odczekanie na kolejny regaz musi być w pętli co określony czas i najlepiej jak będzie to pętla for która wykona sie ileś razy i potem przeskoczy dalej...
Czyli flagi wprost? bez przesuwania bitów i operacji na całych bajtach? Dobra, a czy można stworzyć makro typu x_on, x_off, używając bit-bandingu? bo u Ciebie widziałem, że robisz LED_bb=1,0, tu bardziej chyba chodzi już o specyfikacje języka C, masz pomysł na stworzenie takiego makra? używając oczywiście bit-bandingu.
Witam, próbuję przesunąć (obrócić) bity w lewo, używam do tego komendy: zaklocenie <= zaklocenie rol 1 jednak mam zwracany błąd "rol can not have such operands in this context" zaklocenie jest zadeklarowane w sposób następujący: signal zaklocenie : STD_LOGIC_VECTOR (6 downto 0) := "1000000"; prosiłbym o jakieś porady jak...
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...
Tak to da się zrobić. Godziny 5 bitów, minuty 6 bitów, miesiąc 4 bity, dzień 5 bitów, rodzaj x bitów. Razem 20 bitów + x. Kodowanie: Dim temp as long '.... temp = godziny shift temp, left, 5 temp = temp OR minuty shift temp, left, 6 temp = temp OR miesiac Działa jak widać dodajemy przesuwamy o odpowiednią ilość bitów i następną zmienną dodajemy w puste...
Rozumiem. Dziękuję za doradzenie. Na aukcji znalazłem coś takiego (zdjęcie z aukcji): http://obrazki.elektroda.pl/2494082900_1... Co prawda bez żadnej rewelacji, ale specyfikacja mi odpowiada. Czy takim zestawem prześlę potrzebne informacje? Wracając jeszcze do tych scalaków RX2 i TX2. Czy możliwa byłaby transmisja danych z termometru...
Dziękuję za podpowiedzi, ale zanim je przeczytałem to zdążyłem opracować swoją procedurę konwersji dla 24 bitów (3 bajty lub 6 cyfr). Ta metoda z mnożeniem jest ok, tylko musiałbym zacząć od mnożenia przez 100000 i tak po kolei, gdzie wystąpi dużo przesunięć bitów i operacji dodawania. Moja procedurka polegająca na przesuwaniu bitów i odejmowaniu działa...
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...
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 <...
Ale problemem nie jest dostęp jeśli w chwili kompilacji znany jest bit, tylko dostęp w sytuacji w której nr bitu jest zmienną. Twój sposób z unią i polami bitowymi jest najzupełniej legalny w C, co więcej powszechnie stosowany, ale nie rozwiązuje problemu braku w AVR instrukcji przesuwania bitów o zadaną ilość pozycji. W efekcie trzeba to robić przy...
Wykorzystując operacje przesunięć bitowych (>> lub <<) ale nie tak jak to zrobiłeś, bo w twoim przypadku zmienna dane jest przesuwana o wartość PD2 bitów w lewo, a następnie wykonywana jest operacja sumy logicznej z wartością PORTD. Ten fragment powinien mniej więcej wyglądać tak: Dodano po 44 Oczywiście to czy przesuwasz w lewo czy prawo...
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...
Bo potem jest dzielenie przez 1024 zrobione jako przesuwanie o 10 bitów.
No w tej linijce kodu jest tylko ustawianie kolejnych wierszy , których jest akurat 4 tyle co trzeba , problem jest z kolumnami w tej wersji klawiatura działa tylko z pierwszymi trzema kolumnami . Wiem, że to wszystko działa na jednym porcie i jakakolwiek ingerencja w col lub row może wzajemnie zakłócać zasoby porty. Miałem nadzieję , że ktoś znajdzie...
Stosując wstawki w asm można to zrobić w 8 krokach z wykorzystaniem 2 poleceń ROR i ROL (przesunięcie w prawo i przesunięcie w lewo z wykorzystaniem flagi 'C'). Najpierw zmienną źródłową przesuwamy w prawo (ROR) bit najmniej znaczący ląduje w 'C' następnie zmienną docelową przesuwamy w lewo - na najmniej znaczący bit wpada to co jest w 'C' i tak osiem...
Pewnie , a dla dwóch portów mogą być dwie tablice. [syntax=c] unsigned char TablicaStanow_B_[ ] = { 0,1,2,3,4,5...,0,0,0,}; unsigned char TablicaStanow_C_[ ] = { 0,0,0,0,0,0...,1,2,3}; for( index = 0; index < sizeof(TablicaStanow); index++ ) { portb &= TablicaStanow_B_[indeks]; portc &= TablicaStanow_C_[indeks]; opóźnienie na ducha; portb...
Ok, można podać jakieś cóś na nogę AREF, co będzie miało stabilną wartość w woltach, i może być nawet < 5V, co troszeczkę poprawi rozdzielczość, ale jak napięcie na LM-e je przekroczy, to nie poczytamy o niczym ciekawym z przetwornika A/D... Stąd w sumie mój pomysł x10, co wcale nie jest sztywne, można i x4, co nawet w świecie binarnym łatwiej liczyć...
W tej obsłudze przerwania odpowiedzialnego za wybór zapalanej cyfry lepiej jest się posłużyć przesuwaniem bitów niż operacją dodawania. W końcu dojdziesz do 4 cyfr i wartość aktualnie wybranej cyfry będziesz musiał inaczej wpisywać. Zatem najlepiej stworzyć 4 bajtowy bufor i dokonywać wyboru za pomocą indeksu z tablicy . Natomiast program główny już...
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...
No nie wiem czy jest lepszy ale: Płytka jest ładniejsza, bo nie mam tranzystorów i związanej z nimi plątaniny ścieżek, tylko ULN'y i UDN'y. Na dodatek rejestr '595 ma zatrzask, dzięki czemu będziesz w trakcie przesuwania bitów nie będziesz miał efektu migania. Po prostu wsuniesz bity, a następnie jednym impulsem przepiszesz je na wyjście. Jak chcesz...
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...
Algorytm jest banalny, nie ma nic trudnego w przesuwaniu bitów w tą czy w tamtą stronę - tu błędu nie ma i tego jestem pewien ;-) Inna sprawa, że elektronicznie może coś być nie tak - coś co wiąże się z innym sposobem oprogramowania kontrolera. Ja zakładam, że duszki są efektem mojego niezrozumienia części analogowej :-) Może powinna być minimalna przerwa...
Ok , działa :) Teraz pytanie odnośnie odbioru danych jeśli odbieram pierwsze 8 Bitów MSB to zapisuje je do zmiennej np. A1 i przesuwam o 8 bitów w lewo czy w prawo ? a Bity LSB nie przesuwa się czy też trzeba przesunąć ?
(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...
Pomyśl - zmienna aa ma 8 bitów a Ty jej wartość przesuwasz o 8 bitów w lewo więc ją zerujesz tak na prawdę. Do tego do zmiennej 32bit zapisujesz zmienną 8bit bez rzutowania.
Nie musisz się w to bawić "ręcznie" Możesz wziąć zmienną i ustawić w niej 1 jako wartośc a potem zrobic Shiftout gdzie można ustawiać ilość bitów do wypchniecia czyli taktów. Nominalnie Bascom robi dwa NOP`y pomiedzy zmiana stanów zegara. Czyli potem możesz brać jakiś Bajt z wartością 0 i wypychać tylko jeden Bit ;) Potem sobie mozesz napisac makro...
Do sterowania użyjmy portu B. Przycisk do zmiany efektów to pin D.2, będzie działać na przerwaniu. Potencjometr to pin C.0, przetwornik. No to prawie że gotowiec: $regfile = "m8def.dat" $crystal = 8000000 Config Portb = Output 'Wszystkie linie portu D jako wyjściowe Dim Opoznienie As Word 'opóźnienie między przełączeniami, liczba do 65535...
Na 164 raczej nie, bo to jest parallel in, serial out, a ty potrzebujesz na odwrót - serial in, parallel out, czyli 595. BTW, tablicę zdefinuj z progmem, dzięki czemu nie będzie zajmować SRAM (pamiętaj o użyciu stosownych funkcji do jej odczytu). Te wszystkie case są niepotrzebne - lepiej przesuwaj bity w PORTC - krótsze, szybsze.
Powodów może być wiele. Ponieważ na kolejnych wyjściach układu, pod wpływem impulsów podawanych na nóżkę 14 nie pojawiają się odpowiednie stany (przesuwanie bitów), to widzę co najmniej 2 powody: 1. Uszkodzony sam licznik 2. Generator nie podaje impulsów na wejście CLK (14) - czyli uszkodzony generator, co mogło być przyczyną nieprawidłowej pracy zasilacza...
A może podeszłaby instrukcja zmienna1 = MAKEBCD( zmienna2 ) gdzie: zmienna1zmienna, do której zapisana będzie liczba w formacie bcd, zmienna2zmienna zawierająca liczbę dziesiętną. Format BCD to coś takiego, że w 4 najstarszych bitach zakodowana jest binarnie liczba dziesiątek a w 4 młodszych liczba jedności. Normalny zakres liczby 8 bitowej to 0-255...
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...
Kolor jest taki: B7B6B5B4B3B2B1B0-G7G6G5G4G3G2G1G0-R7R6R5... Przesuwamy o 3: 0_0_0_B7B6B5B4B3B2B1B0-G7G6G5G4G3G2G1G0-... I mamy 5 bitów R: R7R6R5R4R3 Przesuwamy o 0: 00000 000000 RRRRR Przesuwamy o 10: 0_0_0_0_0_0_0_0_0_0_B7B6B5B4B3B2B1B0-G7G... I mamy 6 bitów G: G7G6G5G4G3G2 Przesuwamy o 5: 00000 GGGGGG 00000 Przesuwamy o 19: 0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_B7...
Odnośnie przesuwania bitów w sekwencji znaków - includy wskazują na WinAVR, więc czemu nie użyć 0b10101010 ? Po drugie jeśli nie jesteś asem programowania to nie pisz/kopiuj 100 linijek które potem "cudem" nie działają, tylko sprawdzaj działanie na bieżąco - możesz mieć problem z priorytetami operatorów, obsługą program space czy też nawet fizyczny...
Kompletnie zły zapis z tym xor'em. Zauważ, że (PIND&_BV(2)) przyjmuje wartości 0x00 oraz 0x04, podczas gdy (PIND&_BV(7)) 0x00 oraz 0x80. W jednym kierunku (przy zmianie stanu na PD2) stany są przeciwne, więc cały warunek zawsze jest fałszywy i występuje zmniejszanie. W drugą stronę albo oba są równe 0 albo jedno jest równe 0x04 a drugie 0x80. Sam xor...
Witam, Niestety nie potrafię Ci pomóc, jednak korzystając z tematu chciałbym spytać po co wartość rejestru konfiguracyjnego jest przesuwana 13 bitów? Uruchamiam MT48LC4M16 (1 Meg x 16 x 4 banks) na LPC1788 i nie wiem dlaczego te wartości na przykładach z sieci są przesuwane o 10 lub 12 bitów... Jeśli rejestr jest zapisywany za pomocą linii adresowych...
Tak, ma panel z przełącznikami. Jeżeli chodzi o przesuwanie w lewo to w instrukcji funkcji jest napisane że bity w tej instrukcji są przesuwane w stronę większych bitów, a ostatni bit jest usuwany
Tylko ciągle nie rozumiem dlaczego przesuwasz to o 16 bitów.
Tylko teraz nie wiem czy dam rade przekonwertowac cały progs do C ( pewnie tak ale ile mi to zamie to nie wiem ) Ale ale da sie pożenić rejestry z bascomem: Admux = &B01100001 Adcsra = &B11100111 Volt 1 = ADCH Narazie liczy napiecie ... ( robi to troche chaotycznie i za szybko ) Ale jest inne cudo ! CPU pożera w takiej konfiguracji do 100mA !!! jesli...
adass and gapa137 Z przesuwaniem bitów to jest tak: Dla dodatnich temperatur takie rozwiązanie jest godne poleceniu, ale dla temperatur ujemnych nie!! Ponieważ temperatury ujemne są w postaci + uzupełnienie do dwóch, a przy przesuwaniu w prawo, do czterech najstarszych bitów wpisywane są zera(zamieniające liczbę ujemną na dodatnią). Należy zmienić zmienną...
Ok, rozumiem.. w poleceniu while musze wyrażenie wpakować w nawiasy. Dlaczego nie będzie działać? Chciałem tylko poprzesuwać bity w PORTA i widzieć, że to działa... Gdzie popełniam błąd? Zaznaczam, że chcę poćwiczyć przesuwanie bitów. Dodano po 4 Po dodaniu nawiasów w poleniach while kompilator zwrócił zero, czyli nie ma zastrzeżeń. [syntax=c] #include...
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...
Chodzi o pomnożenie próbki przez liczbę x z zakresu 0-255 i potem przesunięcie o 8 bitów w prawo, żeby uzyskać próbkę o współczynniku x/255, tak? Dokładnie. Mnożenie ma niewielki narzut (procesor ma instrukcję MUL), a dzielenie przez 256 to po prostu obcięcie najmniej znaczącego bajtu. Stałą? Przecież volume_coefficient to zmienna. Owszem, ale nie...
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...
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ę...
Napisz parsowanie w Javascript obiektu DataView gdzie pierwsze 10 bitów to wartość A, następne 12 bitów to wartość B, a następne 18 bitów to C. Zaproponuj sposoby jak mogę to przetwarzać i rozbić wartości na osobne zmienne Witaj ponownie! Parsowanie skomplikowanego formatu danych z obiektu `DataView` wymaga szczególnego podejścia, ponieważ będziemy...
Znalazłem program na odczyt w ASCII. Odczyt podobnie tylko wywołanie SVCREQ z 0 (odczyt) w R500 i 3 (ASCII) w R501. Dalej przesuwanie, zerowanie bitów wyższych od 16 (AND 255 bo operacje na słowach) i odejmowanie 48 (bo w kodach ASCII liczby zaczynają się od 48, patrz tablica kodów ASCII). Generalnie HELP z Cimplicity może dużo pomóc w zrozumieniu programów.
Wydaje mi się, że operacje przesuwania bitów robisz na ośmiobitowej zmiennej. Zadeklaruj ją jako 16-bitową albo - podstaw wartość high pod zmienną szesnastobitową - przesuń o osiem bitów - dodaj wartość low Przyszło mi coś innego do głowy - skoro zawsze przesuwasz o osiem to warto by zadeklarować zmienne w tym samym miejscu pamięci tzn. &16bit = &high...
Co do dzielenia nie byłbym taki pewien, pamientam jak raz obsługiwałem wielką tablicę 2d w arm, aby uniknąć mnożenia przez double wyekstrachowałem sobie dwa razy integer mianownik 100 i licznik, najpierw mnożyłem przez licznik potem dzieliłem przez 100. okazało się, że dzielenie przez 100 wcale nie było takie efektywne ostatecznie zastosowałem mianownik...
Schemat jest nieczytelny, a poza tym mógłbyś przynajmniej wspomnieć o wykorzystywanym procesorze.
przesuwanie kółka sekwencja bitów zamiana bitów
przesuniecie obrazu słuchawka motorola przegrywanie kaset
electrolux ewt1066edw diagbox akumulator
Renault Laguna 3 – losowe działanie wycieraczek przedniej szyby, manetka, czujnik deszczu, UCH, UPC LTC LXDVB103 – najnowszy firmware 2023, aktualizacja USB, poprawa DVB-T2/HEVC