for - pętla, tak jak napisałeś bit= (buf>>j)&1; Operacje bitowe: ">>" przesuniecie w prawo,"&" operacja AND-owania. Poczytaj o operatorach w c i będziesz wiedzial
chyba w AVRach w takim razie w adresie ostatnia cyfra 0 oznacza ramkę "write", a ostatnia cyfra 1 oznacza "read", czyli adres 0x62 w nocie SCD41 oznacza 0xC4 dla nadawania i 0xC5 dla odbioru Nie w AVR tylko ogólnie w I2C. Najmniej znaczący bit określa typ operacji zapis/odczyt. 7 bardziej znaczących bitów to adres urządzenia. Autorzy not urządzeń I2C...
Przy operacjach bitowych dobrze czasem pomagać sobie przesunięciami Np. 1 << 0 oznacza bit 0 (wartość 1 - szesnastkowo 0x01) 1 << 1 oznacza bit 1 (wartość 2 - szesnastkowo 0x02) 1 << 2 oznacza bit 2 (wartość 4 - szesnastkowo 0x04) .. 1 << 31 oznacza bit 31 (wartość 2147483648 czyli szesnastkowo 0x80000000) Zamiast kombinować...
operacje mnozenia i dzielenia dumnie opisane jako przesuniecie bitowe lepiej zrealizowac jako przesuniecie bitowe ;) polecenie Shift, szczegóły w helpie... inne propozycje jak bede mial wiecej czasu ;) Pozdrawiam
TH0 i TL0 to rejestry 8-bitowe - przy czym TH0 to starszy, a TL0 młodszy bajt licznika T0... zatem, aby prawidłowo wpisać je do zmiennej typu unsigned int, należy najpierw TH0 przesunąć o 8 bitów w lewo, a następnie operacją bitową (OR) dodać młodszą część licznika. Załóżmy, że: (odstępy zrobiłem dla lepszej czytelności) TH0 = 0b 1000 1000 TL0 = 0b...
Wbrew pozorom użycie warunku którego chcesz uniknąć jest najbardziej optymalne. I jeśli przerzucasz się na c, przywyknij to operacji bitowych i z przesunięciami. Ewentualnie jak wspomniano można wykorzystać pola bitowe o ile rozumiesz pojęcie struktury i unii.
jak sie nie myle to jest przesuniecie bitow w lewo w pierwszym przypadku o jedna pozycje w drugim o dwie
Jeśli już chcesz sprawdzać parzystość liczby, to musisz to po prostu zrobić w pętli, której warunkiem wyjścia będzie nieparzysta liczba. Ty sprawdzasz raz i losujesz drugi raz i na tym koniec. A jeśli nie, to można po prostu zastosować ogólny wzór na liczbę nieparzystą jako 2x-1 , dostosowując teraz do tego tylko zakres losowania (zmniejszony i połowę...
Przesuń w lewo (SHL) i złącz (OR). Podstawowe operacje logiczne są dostępne w każdym języku. [syntax=delphi]wynik = (czesc_pierwsza shl 8) or czesc_druga[/syntax] Dostosuj tylko typ zmiennej.
Witam 1. Proszę w google wpisać słowo klucz "AVR operacje bitowe" ( >> << & ^ ~) 2. Dobrze użyć #define do opisania co to jest LED0, LED1, jeśli zmieni się miejsce przyłączenia diody to później trzeba będzie pilnować każdego odwołania do takiej diody. 3. Nie ma potrzeby zmieniać stanu wszystkich 8 bitów portu D, wystarczy przesunąć ten...
Ustaw wszystkie bity FTH w rejestrach FCR, zarówno dla RX jak i dla TX. To jest pierwsza rzecz którą zauważyłem w Twoim kodzie, która u mnie jest zrobiona inaczej. Natomiast druga - kluczowa - też już była wspomniana: Postraj się używać definicji zawartych w pliku opisowym danego układu. Wpisywania i odczytywanie tych zer i jedyne z przesunięciami przyprawia...
Na AVR'ach typ int ma 2 bajty, a wszystkie literały liczbowe domyślnie są typu int. 34816 pewnie normalnie powinno by powodować warning, gdyż komu chciało by się pisać 34816U żeby zaznaczyć, że literał ten ma być int'em bez znaku? Ten warning mogli jawnie wyrzucić, jednak w przypadku operacji 17*2048, jeśli obie liczby traktować jako int ze znakiem,...
Tak, tylko dobrze by było przed takim nawet ćwiczeniem dokładnie poczytać w książce właśnie, po pierwsze o samych operatorach w języku C w tym o podwójnych operatorach. Ale także o operacjach logicznych na bitach no i o przesunięciach bitowych << >> . Po przeczytaniu tego i zrozumieniu - te zapisy powyżej przestaną być tajemnicze i nie będzie...
Rozwijając to co pisał snnaap o nadpisywaniu, dla pewności lepiej wszystkie wartości maskować/warunkować, wtedy nie ma żadnych nieprzyjemności, jeśli zapomni się o dozwolonych wartościach. Dodatkowo, coś mi nie pasuje przy wysyłaniu danych po SPI. Zakładając, że funkcja wysyła bajt, to w pierwszej linii wysyłasz młodszy bajt słowa, a za drugim razem...
Tak, ale autor chce do tego użyć przesunięcia bitowego właśnie. Wyraźnie to zaznaczył. [syntax=c] unsigned short *p = tab; *p = *p << 8; [/syntax] Teraz tylko ustawianie nowego wskaźnika na kolejnym elemencie i powtórzenie operacji.
nie znam się na VHDL-u, ale przypuszczam, że potrafi on robić operacje bitowe na zmiennym (co nie jest oczywiste, bo C tego nie potrafi na typie zmiennoprzecinkowym). Wystarczy zamaskować odpowiednie bity liczby i przesunąć o odpowiednią liczbę pozycji w prawo. W ten sposób można uzyskać wszystkie "składowe" liczby zmiennoprzecinkowej.
Zdzis_ek: Faktycznie, do budowy ścian i linii w grach ten zestaw wydaje się być lepszy. Jeżeli możesz, to mam prośbę, żebyś na próbę narysował te podwójne ramki cieńsze (2 piksele marginesu zamiast 1) i jeszcze raz przedstawił planszę PacMana. Zobaczymy, jak będzie wyglądać. Czy w prawdziwej (sprzętowej) Cobrze da się w prosty sposób dorobić rejestr...
uwaga techniczna - przy dzieleniu przez potęgę dwójki, lepiej jest robić przesunięcia bitowe, gdyż zajmują wiele wiele mniej operacji. http://www.atmel.com/dyn/resources/prod_... tutaj możesz zobaczyć na pierwszej stronie ile co zajmuje operacji. Przesunięcie bitowe to jedna instrukcja... :)
Drogi panie kolego zegar został sprawdzony z chipem oryginalnym wsadem i działa, jeżeli chodzi o ai wykonało poprawnie program na test diody oraz test diody z sygnałem chipu ds1 302, jeżeli chodzi o to czemu nie może poprawnie wykonać testu wyświetlaczy to problem polega na tym, że większość oprogramowań jest albo na arduino z innym mikrokontrolerem,...
mozesz mi tylko wytlumaczyc jak dziala ta petla while a raczej to w niej bo jakos nie moge tego rozszyfrowac :] Moze w ten sposob bedzie bardziej czytelne: while(rozmiar >= (1 << i)){++i;} (1 << i) to po prostu przesuniecie bitowe (przesuniecie "1" o i bitow w prawo). Aby wiedziec, ile bitow wystarczy do zapisania...
Aaaaa, no to wiele tłumaczy :) Musisz zastosować przesunięcie bitowego. Twoja 16 bitowa wartość jest zapisana w dwóch rejestrach 8 bitowych. Czyli została podzielona na młodszy i starszy bajt. Gdybyś zrobił normalne przypisanie: rejestrH o osiem bitów w zmiennej doWysłania , to spowoduje że dostaniemy wartość: 1111111100000000 Zamiast (tak jak na początku):...
Dobra, czyli dla czytelności kodu będę stosować przyrostki U i UL dla wartości powyżej 65535 i przy przesunięciach bitowych, natomiast co do długości zmiennych widzę, że zdania są tu podzielone, więc nie wiem. Sprawdzę to chyba empirycznie, ile czasu zajmuje ta sama operacja na zmiennej 8, 16 i 32-bitowej. Przed operacją ustawiam pin, po operacji zeruję...
No nie jest poprawna, bo kolejne zapisy kasują poprzednie. Musiałbyś użyć operacji sumy bitowej (|). Kolejna sprawa, że coś przesunięte o więcej niż 8 bitów po operacji & 0xFF da zero, więc maskę też trzeba odpowiednio zmienić. IMHO o wiele przejrzyściej jest wykorzystać unie.
Mirekk36, Twój program już na pierwszy rzut oka bedzie działał, bo pobierasz dane z tablicy. Chciałem na początek poćwiczyć z tymi przesunięciami bitowymi... Tehaceole, strasznie to zagmatwane, ale wierzę, że działa :D Na razie jestem na tzw. oślej łączce, więc skupiam się na podstawach, proste operacje na bitach, konfiguracja portów itp. Widziałem...
dystans <= ((v_dzwieku / f_zegara)*(zliczone_takty)... - korekcja; o ile operacja mnożenia jest dobrze określona, o tyle w przypadku dzielenia musisz użyć jakiegoś układu który ci ten wynik dzielenia obliczy, no chyba że dzielisz tylko przez 2^n, wtedy wystarczy przesunąć bitowo w prawo. Obawiam się jednak że próbujesz zrobić...
Może warto zacząć od podstawowych obliczeń? Dane dla wyświetlacza to 480x640x3 = 921600 bajtów = 900 KiB. Pierwsze wrażenie może być takie, że wewnętrznej pamięci nie wystarczy na bufor obrazu, ponieważ nie jest to jednolity blok i część tej pamięci trudno współpracuje z DMA i LTDC. Ale w prostych aplikacjach, bez zaawansowanej grafiki, można ograniczyć...
mhy :D analizuję jeszcze operacje na bitach i w niektórych występuje np. PORTB jeżeli jest on zdefiniowany w ten sposób #define PORTB_SFR_IO8(0x18) to wynika z tego też, że ma on wartość 0x18 czyli przy przesunięciach bitowych mam używać takiego ciągu 00011000?
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...
Nie podałeś nawet procka na czym to chodzi żeby rozgryźć ten rejestr, ale wnioskując po nazwie rejestru pewnie cortex od st. Rejest BSRR jest 32-bit. Mniej znaczące 16-bit służy do ustawienia pinu, a starsze szesnaście do wyzerowania. Czyli przykładowo GPIOC->BSRR = 0x0001 ustawia pin C0 na '1' GPIOC->BSRR = 0x0100 ustawia pin C0 na '0' Teraz pod warunkiem...
Dzięki za odzew Szybkość, szybkość, szybkość - jak wspomniałem program wykonuje tylko przeliczanie liczb binarnych 8-bitowych (x8 liczb) (nawet nie zmiennoprzecinkowych)(statystycznie rzecz biorąc najwięcej jest operacji typu przesunięcie bitowe) więc interesuje mnie coś co będzie miało zegar ustawiony na MAX (bo podejrzewam, że wszystkie procesory...
Wiadomo, że jeśli pomnoży się liczbę przez (2 ^ ilość bitów W bajcie) to liczba przesunie się o 1 bajt. Zatem wystarczy liczbę pomnożyć przez (2 ^ ilość bitów w bajcie) tyle razy ile jest bajtów w liczbie - 1 a następnie podzielić wynik w ten sam sposób. Wszystko się zgadza, ale nie zadziała w tym przypadku przepełnienie bitowe, jako, że operujemy...
Ale tablica potrzebna do wyznaczenia wartości elementów ciągu ma rozmiar tylko taki, który element ciągu chcesz poznać. Jak chcesz 50-ty, to potrzeba tablicy 50-elementowej typu long long. Co więcej - po wyznaczeniu wartości elementu ciągu można śmiało ją usunąć. W algorytmie sita nie ma możliwości efektywnego skrócenia wielkości tablicy o więcej, niż...
Proponuję rozbić całość na 2 funkcje. 1. Inicjalizacja wartości sumy wywoływana przy każdej zmianie szerokości okna. W ten sposób masz bezpieczny i niezależny sposób zmiany szerokości okna. Wejście: MAFTABlenght Wyjście: None, ew. status. Operacja: Wyznaczenie wartości MAFUTABpointer oraz MAFUSum. 2. Obliczanie wartości po dodaniu kolejnej próbki, czyli...
Lutowanie BGA (a stosowne ARMy chyba tylko w takich są obudowach) Dementuję takie pogłoski. Przykładowa płytka STM32F429-DISCO. Ma prawdopodobnie wszystko co potrzebuje autor tego tematu, kosztuje śmieszne pieniądze. Na pokładzie 64Mbit SDRAM, więc wystarczy na wiele ekranów. Alpha blending + overlay (obraz statyczny + dynamiczny) robi sprzętowo. Sercem...
Próbuję przekonstruować cały opis opierając się na przesuniętych fazach sygnału zegarowego do kolejnych fragmentów układu. Chcę w ten sposób uniknąć hazardów. Trochę to potrwa zanim wytworzę. :) Propozycji kol. tymon_x o rozdzieleniu na dwa procesy na razie nie biorę pod uwagę. Muszę to skumać żeby stosować. Zamysł układu jest taki, aby po wykryciu...
Chyba zaczyna się ujawniać wyższość procesorów o możliwie długim słowie danych - nawet operacje 32 bitowe będą atomowe. Nie będą niestety o ile operacja RMW będzie realizowana przez kilka rozkazów, które mogą być przerwane. Będzie natomiast w systemie, który będzie modyfikować pamięć jednym rozkazem, który nie może być przerwany (a często mogą być...
dziel FFFFFFFFFFFFF000 przez 00000AAAAAAAAAA - ucierpi nieco dokładność, ale jest to do wykonania na 64 bitach ALU. Wynik przesuń o 6 w prawo (otrzymasz 6 miejsc binarnych po przecinku, oczywiście przesunięcia dokonujesz modyfikując cechę wyniku). Generalnie dzielenie np liczb 32 bitowych na FPU odbywa się w rzeczywistości z wykorzystaniem 96 bitów,...
Witam, język programowania C oferuje operację arytmetyczną powodującą przesunięcie bitowe, np: a | a<<1 | a<<2 | a>>1 ------+------+------+------- 0001 | 0010 | 0100 | 0000 chciałbym aby przesunięcie następowało w sposób cykliczny, bez zgubienia "1" czyli np 1000 << 1 = 0001; W AVR były do tego specjalne instrukcje w assamblerze,...
Dla strzały metalowej można by zrobić cewkowy - sugerowałbym generator o częstotliwości kilkudziesięciu MHz, zliczany na liczniku synchronicznym 8-bitowym (albo musi być synchroniczny, albo asynchroniczny + zatrzask, chodzi o to, żeby opóźnienia przeniesienia nie zniekształcały odczytu... a może jest licznik w [url=http://pl.wikipedia.org/wiki/Kod_Gr...
Tak tez robiłem do tej pory, ale teraz chcę odnieść wszystkie wielkości do wielkości rzeczywistych (napięcie, prąd, prędkość silnika). Ponieważ np. stała całkowania będzie wynosić TP = 100e-6s stąd na część ułamkową chcę przeznaczyć 16 b z czego wynika że na część całkowitą również zostaje 16b. Wtedy TP = 100e-6*65536 = 6 , a np 2A = (2<<16) =...
Hunterhouse ten sposób z liczeniem liczby modulo jest genialy :) Sam na to wpadles?? Na koncu jest jeszcze obliczany pierwiastek,tez to jest dosc czasochlonne dla procka , zastanawiam sie czy na niego nie ma podobnego sposobu :) Czyli beta przyjmuje wartosci od 0- 31, i zmienia sie w zaleznosci od k ,ale caly czas w zakresie 0-31 . Jak dokladnie obliczone...
Pituś Bajtuś masz rację, po prostu myślałem, że nie trzeba pisać przed adresem "np.", a jednak. Jest to oczywiste, że 0x000 to adres przerwania resetu. Mój błąd. Co do twojego pytani adj_max84, to tak jak powiedział Pituś Bajtuś. Możesz do tego celu użyć etykiety, dawno pod asemblerem nie pisałe i jakoś takie rozwiązanie wyszło mi z głowy ;P. Odnośnie...
Tworzymy rejestr przesuwający wybieramy jako odczepy bity o numerach np: 32, 7, 5, 3, 2, 1 i po przesunięciu ( i wysłaniu) zawartości najmłodszego bitu sumujemy modulo 2 bity z pozycji: 32, 7, 5, 3, 2, 1 oraz ten wysłany i wynik zapisujemy na pozycji najstarszego bitu Jeszcze nie do końca rozumiem jak to zaaplikować w procesorze, ale: - ile razy należy...
Nie umarł i nie umrze, aczkolwiek może zostać "zdegradowany" do pozycji języka, który jest potrzebny tylko do napisania kompilatora. Stanie się tak, jeżeli pojawi się jezyk wysokiego poziomu, a właściwie to kompilator takiego języka, za pomocą którego będzie można uzyskać kod równie wydajny. Chociaż i tak zawsze pozostanie grupa entuzjastów asm. Znajomość...
U mnie nie działa... Sam nie wiem, podobno można to w łatwy sposób rozwiązać sprzętowo. No nic, będę dalej próbował. Co rejestrów to jakoś tak się nauczyłem, a jak mam większą liczbę to z pomocą przychodzi mi kalkulator:) Chociaż pewnie przesunięcie bitowe jest łatwiejszą operacją. Dzięki z pomoc. Pzdr
Panowie - w bascomie jest wszystko czego potrzeba. Jeżeli np. dim czestotliwosc as word dim pomoc as byte czestotliwosc=1567 pomoc=low(czestotliwosc) do loop end Jak wyobrażacie sobie kompilator bez możliwości takich operacji? a w ogóle wiadomo że zmienne sa zapisywane - wystarczy wiedziec gdzie się zaczyna zmienna i jaką ma długośc i mozna...
Właśnie rozwiązałem u siebie jeden z Twoich problemów (tak myślę), więc się podziele. Potrzebowałem obliczyć wartość, którą muszę przesłać do DDSa mając daną częstotliwość w Hz. Wzorek taki: fw = czestotliwosc * 2^24 / 50000000 akumulator fazy ma rozmiar 24 bity, zegar DDSa to 50MHz. Moje pierwsze podejście wyglądało tak, że wykonałem tą operację dokładnie...
Przetestowałem rozwiązanie zaproponowane przez Kolegę nsvinc . Napisałem swój program testowy tak: adc_value=adc->dat; jest równoważny zapisowi: adc_value=*adc.dat; ?
PD1 wynosi 1 (bity są zadeklarowane jako numer bitu od 0 do 7) 1 przesunięte o 1 daje 0000 0010 suma logiczna ustawi ci 1 bit rejestru
Musze połączyć się z czujnikami pracującymi na magistrali Modbus. Ponieważ mam z tym problemy, ominąłem magistralę 485 i połączyłem bezpośrednio USARTy obu urządzeń. Niestety, czujnik nie odpowiada. Wysyłam mu jako pytanie jego nr, kod odczytu rejestrów (0x03), dwa bajty adresu pocz. (00,00,) itd. Na końcu wysyłana jest suma kontrolna, też dwa bajty....
to jest dobre miejsce żeby sensownie zacząć: http://www.mikesflightdeck.com/diy_airco... Co do drivera to robi sie to inaczej. Cztery rezystory podciągające cewki do plusa. Cztery tranzystory ściągające cewki do masy. Osiem rezystorów sterujących tranzystorami (połączenie szeregowe po dwa) Do tego dwa sprzętowe wyjścia PWM (jedno na jedną...
Witam, Uklad kombinacyjny może Ci sie nawet nie zmieścić w takim FPGA. Najrozsądniej by było stworzyć schemat obliczania takiego mnożenia, a następnie optymalnie podzielić operacje mnożenia pomiędzy dostępne układy mnożące - można to nazwać szeregowaniem. Zastanów się - jakoś dla mnożenia 64x64 bity narzędzia syntezują układ wykorzystujący tylko multiplikatory...
jak zadajesz takie pytanie, to zawsze podaj: -jaki procesor -ile ew. masz miejsca w pamieci (na tablice itd.) -raczej podawaj dokladnie problemy, bo to jest dosyc ogolne... -jaka ma byc dokladnosc tego jest cos takiego jak fixedpoint math - to taka matematyka na liczbach ulamkowych z uzyciem liczb calkowitych. Polega to na tym, ze zamiast...
http://obrazki.elektroda.pl/8660171200_1... Celem projektu było zbudowanie odtwarzacza MP3/WAV, używając jedynie układu FPGA, pamięci RAM i przetwornika stereo DAC. Układ wykorzystuje 32-bitowe jądro procesora programowego pracujące przy taktowaniu poniżej 60MHz, które odpowiada za dekodowanie MP3 bez wsparcia sprzętowego - poza wykorzystaniem...
Siemka! Tak patrzę w ten Twój kod i pewnych rzeczy nie kumam, ale spróbujmy go przeanalizować. - Resetujesz 1-Wire i wykonujesz polecenie konwersji po czym czekasz 750ms i super :) tylko zastanawiam się po co odczekujesz kolejne 750ms po poleceniu odczytu scratchpad? To jest niepotrzebne, możesz odczytywać dane od razu. Poza tym rozbijanie Waitms 750...
Mam drobne pytanie - wykonuję przesunięcie bitowe o zmienną: uchar a,b; a = 1<<b No i ta operacja zajmuje jakies 26 cykli procesora. Przesunięcie o stałą trwa jeden cykl bo raczej jest to zamieniane w czasie kompilacji a tutaj jest 'troszkę' wolniej. Czy można to jakoś przyspieszyć? Procesor - avr atmega32, kompilowane i analizowane w avr studio.
Hej witam.Dziękuję za szybkie zainteresowanie o postarałem się do Twoich wskazówek, ale chyba nie udolnie, bo nadal nie umiem tego rozpracować.Ale po pewnych zmianach program zaczyna oblicza faktycznie klucz jakiś na podstawie wpisanego ciągu, wiec jest lepiej.Ale przy przy szyfrowaniu zdjęcia bmp wykazuje, że jest 24 bit, ale gdy nacisnę, ok to wyskakuje...
Pięćdziesiąt lat temu powstał pierwszy programowalny układ logiczny do zastosowań komercyjnych, a dostępne dziś części pozwalają inżynierom przekraczać nowe granice technologiczne w wielu branżach. Mark Patrick, Mouser Electronics https://obrazki.elektroda.pl/4592035100_... FPGA ( field-programmable gate array – bezpośrednio...
https://obrazki.elektroda.pl/2227184700_... Dzisiaj uruchamiamy moduł MCP9808, czyli cyfrowy termometr działający w zakresie od -40°C do 125°C przy typowej dokładności 0,25°C, zasilany napięciem od 2.7V do 5.5V. Najpierw zaimplementujemy jego sterownik w oparciu o gotowe funkcje dla komunikacji I2C by móc odczytywać z niego pomiary...
Zgaduję, że to kontynuacja wątku dotyczącego wyświetlacza http://www.elektroda.pl/rtvforum/viewtop... Problemem nie jest SPI, tylko sposób w jaki przygotowujesz dane do przesłania. Zabijasz wydajność całą serią operacji, które nie powinny mieć miejsca podczas transmisji: odejmowanie, przesunięcie bitowe, iloczyn logiczny...
Witam, problem tkwi w wyświetleniu temperatury na LCD. Czujnik działa w trybie 12 bitowym. Szczytuje pierwsze 12 bitów z pamięci scratchpada, sprawdzam czy temperatura jest + czy -, a następnie dokonuje konwersji temperatury na string. Na wyświetlaczu pokazują się jednak dziwne rzeczy. Użycie funkcji typu sprintf odpada (zajmuje za dużo miejsca). Konwersja...
Twój LM75 jest na I2C, zakładam więc że umiesz odczytać z niego te dwa bajty z wartością temperatury. Sprawdzasz najstarszy bit, starszego bajtu w odczytanym z czujnika wyniku. jeśli jest równy 0, to znaczy że temperatura jest dodatnia i wynik liczysz poprzez: 1. przesunięcie otrzymanego z czujnika wyniku o 5 bitów w prawo 2. pomnożenie rezultatu tej...
Operatory postaci: zmiennaA += zmiennaB; zmiennaA |= zmiennaB; zmiennaA &= zmiennaB; //itp... są równoważne zapisowi: zmiennaA = zmiennaA + zmiennaB; zmiennaA = zmiennaA | zmiennaB; zmiennaA = zmiennaA & zmiennaB;//itp... Co do samych operatorów: "|" to bitowe OR "&" to bitowe AND "~" to bitowa negacja. Zapis (1 << 3) to przesunięcie...
Nie do konca, o ile SP, czy PC jest sterowany przez jednostke sterujaca, to na pozostalych operuje ALU - tak wynika ze schematu blokowego AVR. Wiec skoro istnieja operacje arytmetyczne, ktorych operand jest 16-bitowy (ADIW, SBIW, pre i postinkrementacja rejestrow X, Y, Z, adresowanie z przesunieciem tych rejestrow) to ALU musi byc do tego dostosowane....
co to robi: int foo(uint32_t a) { a = a ^ (a >> 16); a = a ^ (a >> 8); a = a ^ (a >> 4); a = a ^ (a >> 2); a = a ^ (a >> 1); return a & 1; } Wstępna ocena dostępnych informacji Przedstawiony kod to funkcja `foo`, która przyjmuje jako argument 32-bitową liczbę bez znaku `a` (`uint32_t`). Funkcja wykonuje szereg operacji bitowych na tej liczbie i zwraca...
W poniższym artykule skupimy się na zebraniu wszystkich informacji o aplikacji układu MSEQ7 – scalonego analizatora widma dla sygnałów audio. https://obrazki.elektroda.pl/4332519400_... Projekty ‘audio-reaktywne’ W pierwszej kolejności zarysować musimy potrzebę wykorzystania tego rodzaju układu. Załóżmy, że chcemy...
To jest tylko sztuczny marketingowy zabieg w celu zdywersyfikowania produktu jakim jest kompilator na wersje Free, Standard i Pro. Taki system powoduje przywiązanie do produktów i skrojenie na miarę kieszeni klienta i nie ma nic wspólnego z obiektowością. I to jest właśnie problem , bo pisząc w C nie mamy wpływu na to jak będzie wyglądał kod wynikowy...
[syntax=c] #include <stdlib.h> #include <avr/io.h> #include <util/delay.h> # include <math.h> #include <avr/interrupt.h> #include "HD44780.h" int a; # define keypin PIND # define keyddr DDRD # define keyport PORTD # define keypd6 _BV(PD6) # define keypd7 _BV(PD7) volatile _Bool keypin_pressed = 0; // flaga wciśniętego przycisku...
Raczej najpierw musisz sie nauczyć C No właśnie próbuję. Przez ostatnie kilka dni przewertowałem więcej PDF od kontrolerów, niż przez ostatnie 3 lata :D Na razie największy problem dla mnie to operacje bitowe - wiadomo w Bascom łatwiej. Kupiłem nawet Attiny4313, coby nie brakło pamięci. Problem był jednak w momencie polecenia włączenia przerwań, były...
http://obrazki.elektroda.pl/1852929500_1... http://obrazki.elektroda.pl/5115381900_1... Mimo upływu lat w dalszym ciągu lubię od czasu do czasu odświeżyć sobie w pamięci elektroniczne brzmienia lat 80tych, kiedy to po raz pierwszy miałem okazję usłyszeć „syntetyczną” muzykę pochodzącą z wielkich drewnianych...
Jeżeli między znakami masz jedną kolumnę odstępu, to na pierwszej stronie będą dwie, a nie jedna kolumna z drugiego znaku, no ale to szczegół ;) Nie wiem, jak masz zapisaną "czcionkę". Jak na moje oko, to może być po bajcie na każdą linię i takich linii 7, jedna po drugiej, potem następny znak itd. Nieużywane bity (te z prawej, znaki wyrównane sa do...
chyba zrozumialem - jesli nie wyprowadzcie mnie z bledu: - PORTC - moze miec dowaolna 8 bitowa liczbe, - wykonanie operacji PORTC & ~0x3f dla PORTC rownego 10010011 wynosi 10000000, - teraz wartosc PC1 moze byc 0 lub 1 (czyli bedziemy mogli przesunac o jedno miejsce w prawo lub wogole), - wykonanie operacji ( PORTC & ~0x3f ) | 1 << PC1...
CL = CAS Latency. CAS latency, CL (ang. column address strobe latency, opóźnienie bramkowania adresu kolumny) – czas utajenia (opóźnienie, czas dostępu), mierzony liczbą cykli zegara, jaki upływa między wysłaniem przez kontroler pamięci RAM żądania dostępu do określonej kolumny pamięci a otrzymaniem danych z tej kolumny przez kontroler. Im niższa...
Po co tak kombinować...?.?.? Jeżeli piszesz w WinAVR (nie wiem jak w innych) to możesz nizależnie od tego jak masz ustawione przesunięcie w rejestrach ADCL i ADCH możesz pobrać wartość 10-bitową w jednej operacji (chodzi mi tylko o zapis a nie o kod wynikowy) czyli np... volatile unsigned int adc; ... int main(void) { for(;;) {...
Czemu nie wysterowałeś pinu Tx jako pinu wyjściowego? Chyba domyślnie po resecie uC wszystkie piny są jako wyjście Zajrzyj do noty PDF, po resecie praktycznie wszystkie rejestry mają wartość = 0, a na pewno rejestry pinów, portów i kierunków. Czyli DDRx także jest = 0 a zatem domyślnie wszystkie piny procka po resecie są WEJŚIAMI. Ale wcale nie trzeba...
wrzucam całośc, co do Twojego rozwiązania sprawdzze jutro. Wcześniej nie wywoływałem funkcji w przerwaniu to pojawiały się 'krzaki' na LCD - przerwanie od T0 przerywało chyba funkcję wyświetl() dlatego dałem w przerwaniu. /*======================================... WinAvR wersja WinAVR-20050214 **Program obsługujący woltomierz/generator...
Tego próbowałem na samym początku. Niestety bez efektu. Procesor najwidoczniej potrafi wykonywać operacje najwyżej 32 bitowe niezależnie - na rejestrze, czy zmiennej. Oto przykłady: shr dword ptr 12345678, 16 = 00001234 shr dword ptr FFFFFFFF, 16 = FFFFFFFF Dane są oczywiście w zmiennej. Napisałem tak jak widać je w debuggerze. W pierwszym przypadku...
ok, już wyjaśniam - operacje bitowe wykonują się dużo szybciej niż dzielenie, przykładzik: liczba AND 255 - zerujemy wszystkie bity oprócz ostatnich ośmiu które pozostają bez zmian. Jest to odpowiednik reszty z dzielenia przez 256. przesunięcie bitowe w prawo jest odpowiednikiem części całkowitej z dzielenia przez jakąś potęgę dwójki - przesunięcie...
https://obrazki.elektroda.pl/5009750700_... Witajcie moi drodzy Oto druga część mojego praktycznego tutoriala dla ośmiobitowego mikrokontrolera PIC18F2550 od Microchipa i programatora SDCC . W tym temacie omówię podstawowe operacje cyfrowego IO na prostych przykładach. Spis części (osobnych tematów) tutoriala Tutorial podzielony jest...
Dla 'lpt' dostępne są jeszcze dwa dodatkowe ośmiobitowe rejestry pod adresami 'BASEPORT + 1' i 'BASEPORT + 2'. Odczytujesz je tak samo( możesz również pisać na sygnały wyjściowe) jak 'BASEPORT' czyli wynik_1 = inb(BASEPORT + 1); wynik_2 = inb(BASEPORT + 2); znaczenie bitów rejestrów: !przy pinach z '~' stan napięcia na pinie jest negacją...
Dla mnie zapis: OCR1AH=(wypelnienie>>4) to przesunięcie bitowe w prawo czyli podzielenie liczby przez w tym wypadku 2^4 czyli wypadku 16 A operacja OCR1AL=wypelnienie to przypisanie wartości wypełnienie do rejestru OCR1AL a mógłbyś mnie jakoś naprowadzić na poprawne napisane lub pokazać jak to ma być napisane bo kurcze sam nie mam pojęcia o tym....
https://obrazki.elektroda.pl/2375178000_... Dzisiaj tworzymy kolejny miniprojekt - tym razem będzie to dotykowy kontroler lampy RGB. Sam kontroler będzie bazować na płytce ESP32 + wyświetlacz dotykowy ESP32-2432S028R, natomiast sterować on będzie dowolnym urządzeniem Tasmota/OpenBeken poprzez interfejs HTTP Tasmoty. Komendy będą wysyłane...
https://obrazki.elektroda.pl/8808596700_... Pokażę tu jak łatwo uruchomić MAX31855 z Arduino a potem omówię jego protokół komunikacji. MAX31855 oferuje 14-bitowy pomiar temperatury z zakresu zależnego od użytej sondy, od -270°C aż do 1800°C. MAX31855 oferuje prosty protokół komunikacji oparty o SPI, zasadniczo odczytujemy z niego tylko...
https://obrazki.elektroda.pl/7246994600_... Dzisiejszy projekt będzie opierać się o Arduino. Pokażę tutaj jak uruchomić kontroler wyświetlacza/klawiatury ze starego tunera sat w oparciu o jego notę katalogową oraz bibliotekę Wire z Arduino. Poznamy szczegóły jego interfejsu szeregowego opartego o linie SDA i SCL i spróbujemy przygotować...
generowanie tablic dla wersji z podstawą 256 Type SPoint = array[-1..1] of byte; //Representation Const DecDumpName = 'DecDta.txt'; var ct0,ct1 : array[0..$FF] of SPoint; //low/hi byte conversion table RsShift : SPoint; procedure TabGen(MinOut,MaxOut,InRange : word); //Data preparation var vv : Double; vw :...
https://obrazki.elektroda.pl/3563451200_... Intro Zawsze fascynowała mnie możliwość konwersji sygnału czasowego na dane w dziedzinie częstotliwości. Pamiętam jak w wieku około 16 lat dopytywałem mojego ówczesnego nauczyciela matematyki, jak działa transformata Fouriera. Dowiedziałem się wtedy tylko że jest to całka, niestety nic więcej...
http://obrazki.elektroda.net/7_123635472... Prawie rok temu, zainspirowany konstrukcją pana Kamila Przychodzenia http://obrazki.elektroda.net/18_12363549... http://obrazki.elektroda.net/82_12363551... Płytka sterownika oraz płytka organizacji połączeń http://obrazki.elektroda.net/62_12363543... http://obrazki.elektroda.net/80_12363591...
http://obrazki.elektroda.pl/3025550100_1... Mając do dyspozycji jedną matrycę 8x8 czerwonych diod LED o boku 60,2mm oraz mikrokontroler ATtiny861 pozostałe po innych projektach postanowiłem zbudować to, co każdy elektronik chociaż raz w życiu zbudować musi: zegar ;). Ze względu na charakter wyświetlacza miał to być zegar binarny, ale...
Wstęp Synchroniczna detekcja pozwala na ekstrakcję niewielkich sygnałów, zwykle 'zagrzebanych' w szumie, co umożliwia pomiar bardzo małych wartości rezystancji, naprężenia, a także natężenia światła, jednocześnie pozwalając na odrzucenie istniejącego tła. W wielu układach poziom szumu zwiększa się wraz ze zbliżaniem się częstotliwości sygnału do zera....
Ludzie kochani, wspaniali, mądrzy i ktokolwiek tu jest. Proszę was o pomoc. Studiuję informatykę i szczerze mówiąc nie bardzo mi wchodzi vhdl....potrzebuję pilnie 3 ćwiczenia zrobić za 2 tygodnie, a nie mam pojęcia jak :( proszę was napiszcie mi to.... Muszę zaprojektować jednostkę arytmetyczno-logiczną umożliwiającą wykonanie wszystkich operacji arytmetyczno-logicznych...
http://obrazki.elektroda.pl/1510796900_1... Kurs: Operatory Powiedzmy sobie na początek czym są i jakie mamy operatory w języku C . Operatorem nazywamy konstrukcję językową jednoargumentową, bądź wieloargumentową zwracającą jakąś wartość. Operatory określają jakie operacje mają być wykonane i w jakiej kolejności. Oto operatory w języku C...
Wstęp Pomiary zużycia energii przez urządzenia elektroniczne, prowadzone w czasie rzeczywistym są coraz bardziej istotnym aspektem projektowanych układów. W tego typu pomiary wliczamy między innymi pomiary rzeczywistej mocy wejściowej oraz pomiar wartości RMS pobieranego przez badany układ prądu. Wyniki tych pomiarów mogą zostać wykorzystane do bieżącej...
przesuniecie bitowe operacje matematyczne operacje logiczne
pobieranie zablokowane wartość skuteczna napięcia tętnień potencjometr cambridge audio
Wentylator chłodnicy Peugeot 5008 działa po zgaszeniu silnika - błąd 108 Symbol kropli wody na wyświetlaczu Saeco - jak usunąć?