Da się robić różne cuda, ale po co? Autora nie chciałbym spotkać na drodze (pisze lewo, przesuwa w prawo ;-) ) Wedłu standardu C działanie takie o które pyta jest "implementation-defined" A że się tak zapytam czy przypadkiem nie chodzi o dzielenie przez 2^n? Jeśli tak, to czemu po prostu nie dzielisz przez 2 do odpowiedniej potęgi? Albert
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...
https://obrazki.elektroda.pl/9290552300_... Witajcie moi drodzy. Zapraszam na kolejną część mojego tutoriala PIC18F2550 i kompilatora SDCC . W tej części poznamy sterownik wyświetlacza LED MM5450, połączymy go z PIC18F2550 i napiszemy od 0 implementację ich komunikacji. Docelowo użyjemy MM5450 do wysterowania wyświetlacza LED 5 na...
Dzielenie zrobiłem jako przesunięcie bitowe , więc teraz chyba na pewno nie będzie problemów z atomowością. Dziekuje za pomoc wszystkim.
Jedyne, co mi przychodziło do głowy, to przesunięcie bitowe w prawo i tak właśnie napisałem, jednak albo moja odpowiedź była zbyt ogólnikowa, albo nie o to chodzi wykładowcy. To jest ośmiokrotne przesunięcie bitowe w prawo. Ten sam efekt uzyskamy, odrzucając cały młodszy bajt. Jeżeli zaokrąglenie ma być zgodne z zasadami arytmetyki, to gdy młodszy...
Czy nie ma szybszych alglorytmów? Oczywiście, że są. Wykorzystaj algorytm mnożenia i dzielenia pisemnego. Dzięki temu znacznie ograniczysz ilość dodawań czy odejmowań. Na przykład 1234 * 5678 zrobione metodą powyższą to 1234 dodawania (zakładam, że program jest chytry i sprawdza na początek która liczba jest mniejsza i ją bierze jako licznik pętli)....
W rodzinie '51 standardowo stos ma początek w rejestrze o adresie 07H (i zajmuje kolejne o wyższym adresie) można to sobie zmienić przez wpisanie nowego adresu do SP przykład: MOV SP,#30H ;przenosi początek stosu od adresu 30H Co do dzielenia to mała podpowiedź Ponieważ liczba ma być dzielona przez 16 to najlepszym sposobem jest przesuwanie bitowe w...
Nie wiem też po co to dzielenie przez 16 w kodzie, przecież wystarczy przesunąć zmienną o 4 bity w prawo, a kod zmaleje w oczach :) Jeśli chodzi o C to przesunięcie bitowe liczby ujemnej jest niezdefiniowane w standardzie. Albert
Tak eliminacja wpływu niestałości długoterminowej (dryftu) to zaleta takiego pomiaru, podobnie w metodzie mostkowej eliminuje się wpływ zmian napięcia zasilania na wynik. Czytanie pojedynczych rejestrów jest możliwe, lepiej jednak od razu czytać cały rejestr. Kompilator zadba o odpowiednią kolejność i zoptymalizuje kod. Można porównać jak to wygląda...
Witam. Zabawnie się składa, że obecnie programuję ten sam chip (tylko z użyciem PIC18F4450). Ja problem odpowienich częstotliwoście rozwiązałem w tem sposób: - numer nuty dziele przez 12, dzielenie oznacza numer oktawy, reszta to nuta w oktawie - w programie zadeklarowałem tablice czestotliwości jednej najwyższej oktawy - niższe można uzyskać przez...
Czy takie całkowanie "trapezowe" ma sens w przypadku równomiernego próbkowania? Jest dokladniejsze, rownomierne probkowanie nie ma tu nic do rzeczy. Co do samego sposobu calkowania to wystarczy sobie wyprowadzic wzor na pole obszaru pod funkcja liniowa. Sklada sie to pole z sumy pola trojkata prostokatnego i prostokata czyli wzor podany powyzej. programowo...
Jeżeli te operacje mają na celu np. monofonizację sygnału to robi to się wg następujacego wzoru: M=\frac{X+Y}{2} (****) Dodajemy w zmiennej 16 bitowej ze znakiem a wynik po podzieleniu przez 2 zapisujemy w 8 bitowej ze znakiem. Nie podzielenie wyniku przez dwa powoduje wyprowadzenie wyniku poza zakres 8 bitowy. Obcinanie typu if x>127 then x=127 nie...
Działanie suma = suma << 1 to mnożenie przez 2. Dzielenie realizuje się przesuwając w prawo a nie w lewo. Dodatkowo można w ten sposób dzielić tylko przez kolejne potęgi liczby 2, a ponieważ 10 nie jest potęgą 2, więc nie da się dzielić przez 10 poprzez przesunięcie bitowe. Porponuję zrobić dzielenie przez 8 lub przez 16 (przesunięcie o 3 lub...
Dzielenie zmiennej int16 na dwie mniejsze możesz zrobić tak:[syntax=c]int 16_t zmienna, zmienna1; int8_t mala_zmienna, mala_zmienna1; mala_zmienna = zmienna >> 8; //przesuniecie bitowe skopiuje 8 bitów starszych mala_zmienna1 = zmienna; // skopiuje tylko 8 bitów najmłodszych zmienna1 = (mala_zmienna << 8) + mala_zmienna1; [/syntax]
powiedz prowadzacemu zajecia, ze nauka ahdl to czysta strata czasu; a moze lepiej nic nie mow ... :) /.../wydaje mi się że dobrze/.../ troche bledow jest :) 1. variable A S powinno byc zadeklarowane jako 5 bitowe DFF, a obliczane tak samo jak powyzej: S[] = ( 0, S_ab[] ) + ( ... 4.wyj[]=S[] div B"0100"; ahdl nie pozwoli ci na dzielenie niczego poza...
Dzielenie przez 8 to nic innego jak przesunięcie o 8 bitów w prawo, czyli w przypadku 8-bitowych procesorów wywalenie najmłodszego bajta wyniku. Dzielenie prze 8 to nie przesunięcie o 8 bitów w prawo, tylko o 3 bity. Do autora: dzielnie wlaczysz, tracisz czas, a na końcu koledzy podsyłają ci funkcje arytmetyczne zaimplementowane w C. Jaki jest więc...
wlasciwie te dwa sposoby to identyczne sa :D... tylko oczywiscie, jesli chodzi o iplementacje, to lepiej stosowac przesuniecie bitowe (pomnozyc przez 2^n to to samo co przesunac liczbe o n miejsc w lewo... dzielenie w prawo :)), gdyz procesor szybciej to liczy :)...
Stary i lubiany operand w C (!!) (i nie tylko :D ). Logiczne przesunięcie w prawo o 10 bitów, co daje że liczbę tlong dzielisz przez 2^(10) = 1024. Bity najmłodsze są wysuwane (tracone!), a na najstarszych pozycjach wsuwa się 0. Zakładam, że przetwornik jest 10-bitowy, co daje zakres od 0 do 1023. Prosta arytmetyka da nam zakres do <0; 1), wcześniej...
a to już zupełnie inna historia... Generalnie: nie liczyć zmiennoprzecinkowo - za mały procek - nie pomieści biblioteki. Trzeba liczyć stało pozycyjnie, np tak: x * 0.83 = (x * 849 ) / 1024; // czyli x * 0.84 = (x * 849) >> 10; jak masz zmienną a powiedzmy z zakresu (0.0 , 1.0), to mnożysz ją tak, żeby była z zakresu 0...1023 i zamiast x *a masz (x...
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...
No więc tak: (zakładam liczby w kodzie NKB (tj. bez znaku)) - ponieważ mnożysz liczby 4 bitowe więc wynik może być 8 bitowy: 15*15=225 (11100001) z tego wniosek, że akumulator wyjściowy powinien być 8 bitowy (2 sumatory 4 bitowe, 2 rejestry 4 bitowe pamiętające wynik) Wyjście sumatorów podajesz na wejście powyższych rejestrów, Na jedne z wejść np a0,a1,a2,a3,a4,a5,a6,a7...
A dzielenie przez 2 do 16 to przecież tylko przesunięcie o 16 bitów (co przy okazji sprawia że gdzieś tam w środku obliczeń chyba trzeba jakąś zmienną 32-bitową).
Witam skrobię mały program na armie. Problem jest następujący: Z ADC'a dostaję 12bitową paczkę danych zakodowaną w U2, program w procku przepisuje ją do zmiennej typu int. Kodowanie U2 jak wiecie zależy od tego ile bitów ma dana, int ma 32 a ja mam daną 12 bitową. Jak to ugryźć by tą daną do tego int-a właściwie włożyć. Metoda naokoło tj wygląda następująco...
1. Zrób sobie jakąś dużą zmienną- np 16 lub 32 bity. 2. Przy każdym odczycie prędkości odejmij od tej dużej zmiennej 1/8 jej wartości i dodaj do niej 1/8 odczytanej wartości obrotowej. 3. Aby wyciągnąć odfiltorwaną wartość, podziel dużą zmienną przez 8. Teraz tak, czy 16 czy 32 bity to już zależy od wielkości jakie otrzymasz w trakcie pracy, musisz...
AVE... Co to jest TDS3k? Masz na myśli serię Tektronix TDS3000 z 2008 roku? Dla Twojej wiadomości od tamtych czasów sporo się zmieniło. Obecnie każdy DSO emulujący zachowanie lampy oscyloskopowej bywa nazywany DPO. Siglent swoją wersję nazywa SPO - Super Phosphor, i tak to opisuje: SPO display technology provides fast refresh rates. The resulting intensity-graded...
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ć...
Przerwanie ADC jest wywoływane po zakończeniu konwersji, a ta zależy od częstotliwości taktowania ADC (preskalera). A uśrednić można przez dodawanie i na końcu odpowiednie przesunięcie bitowe - np. dodajesz 8 próbek i przesuwasz o 3 bity w prawo (dzielisz przez 8). Można też zrobić to inaczej - odejmować od średniej np. 1/8*śrendia i dodawać 1/8 wyniku....
Nie, nie, nie, bierzesz 16to bitową próbkę, przesuwasz w prawo(dzielisz przez 2) i wysyłasz, zmieniasz linie WORD i znowu bierzesz 16to bitową próbkę, przesuwasz w prawo i wysyłasz........itd W ten sposób tracisz najmłodszy bit ale nie musisz sie martwić o przesunięcie na linii WORD.
Nawet nie trzeba dzielic A/10000 wystarczy na lcd przesunac przecinek, albo pamiętać że wyniki mamy 10^4 większy. Aha sa instrukcje w tym kontrolerze do mnożenia 16-bit?
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,...
Sam trafiłem teraz na problem z odbiorem RC5 w przerwaniach i po przeanalizowaniu tego kodu myślę że można by łatwo dodać synchronizację dla każdego pilota. W programie Saabotaz mierzy czas trwania połówki bitu. Zakładając że czas wysłania połowy bitu wacha się miedzy pilotami np. od 905ms do 860ms i nie zmienia sie podczas transmisji, można wyliczyć...
Wszystko zależy od tego ile masz wolnego czasu i pamięci mikrokontrolera. Ja np. często wysyłam napięcia w postaci szesnastkowej, bo to nie kosztuje praktycznie nic po stronie uC, a program odbierający na PC odczyta je łatwiej niż z postaci dziesiętnej. Samo dzielenie przez 10, potrzebne do konwersji na postać dziesiętną, zajmuje grube dziesiątki instrukcji...
Dziękuję bardzo za odpowiedź chodź przyznam, że nadal nie jest to dla mnie do końca jasne. Nie pasuje mi to matematycznie. Skoro dzielenie przez 16 to przesunięcie w prawo o 4 pozycje więc wypada jakby 4 na jedną pozycję. Więc dlaczego przy przesunięciu w lewo wartość jest aż tak znacząco różna ? Przesunięcie (shift) o jedną pozycję ozacza pomnożenie...
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...
Masz napisać procedury mnożenia liczb: 1 bajtowej przez 1 bajtową (8x8) wynik będzie 16 bitowy (2 bajty) 2 bajtowej przez 1 bajtową (16x8) wynik będzie 24 bitowy 3 bajty 2 bajtowej przez 2 bajtową (16x16) wynik będzie 32 bitowy (4 bajty) Procedura przebiega tak w kodzie naturalnym binarnym: 1. Przygotowujesz rejestr wyniku o długości równej sumie ilości...
Witam Na czwartek muszę przygotować listingi programów napisanych w asemblerze które wykonają poniższe działania: 1. Dane są liczby: A=0F1h, B=00011111b. Obliczyć binarnie A+B, A-B, B-A. Podać wynik w postaci binarnej i szesnastkowej. 2. Napisać program mnożenia x4 liczby umieszczonej w rejestrze R7 bez użycia instrukcji mul ab. 3. Napisać program...
(at)ElektrodaBot przeanalizuj tylko ten poniższy schemat. Jaki jest stosunek częstotliwości sygnału CLK na wejściu układu do sygnałów H1 i H2 na wyjściu układu. https://obrazki.elektroda.pl/1923487900_... Bezpośrednia odpowiedź na pytanie W przedstawionym układzie sygnał CLK jest dzielony tak, że częstotliwość na wyjściach H1 i H2 wynosi...
Tu masz dzielenie liczb czterobajtowych przez dwu bajtowe (16 bit).Co prawda nie moje opracowanie, podaję w orginale. ;procedura dzielenia 4-BAJTOWYCH liczb przez 2-BAJTOWE ; wejscie: ;r0 - adres najstarszego bajtu dzielnej, ;r1 - adres najstarszego bajtu dzielnika, ; wyjscie: ;R0 - adres ilorazu ;R6:R5 - reszta ;W deklaracji zmiennych programu wykorzystujacego...
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ż...
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...
Witaj ... jeśli chodzi Tobie o otrzymanie cyfrowego dźwięku polifonicznego, musisz stworzyć w swoim programie coś w rodzaju "miksera" (sumatora) próbek sygnału. Można zrobić to na kilka sposobów :) Wszystko zależne jest od tego, czy Twoje próbki dźwięku przechowywane są w ośmiu, czy też 16 bitach. 1. Jeśli przechowujesz próbki w ośmiu bitach, a posiadasz...
Zwykłe binarne dzielenie nierestytucyjne przy 10 bitach będzie prawdopodobnie prostsze, niż każda z tych kombinowanych metod - to w końcu tylko 8 obiegów pętli z porównaniem, przesunięciem i warunkowym odejmowaniem, tyle że te trzy operacje trzeba zrobić na 10 (czyli w praktyce 16) bitach. Gdyby toto miało przynajmniej 8-bitowe dzielenie, jak stary...
dzielenie16_16: ;dzielenie 16 bitow przez 16 bitow ;we: r2 - H dzielna ; r3 - L dzielna ; r4 - H dzielnik ; r5 - L dzielnik ;wy: r2 - H czesc calkowita ; r3 - L czesc calkowita ; r0 - H reszta ; r1 - L reszta ;zmienia: acc, psw, r7 ;algorytm: ; Hi:=0 ; Lo:=dzielna ; wy:=0 ; repit 16 razy ; { ; shift_left_32bit (Hi,Lo) ; if Hi>=dzielnik ; {wy:=2*wy+1;...
No ladnie. Sliczne procedurki. Twoja proc odnosnie dzielenia jest olbrzymia. Moja jest mniejsza. Moze by tak maly konkursik na procedurke dzielenia 16 bitowego w kilku kategoriach: szybkosci wykonywania, wielkosci kodu. dzielenie16_16: ;dzielenie 16 bitow przez 16 bitow ;we: r2 - H dzielna ; r3 - L dzielna ; r4 - H dzielnik ; r5 - L dzielnik...
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) =...
Cześć, muszę napisać specyficzną funkcję filtru średniej kroczącej do uśredniania pomiarów z ADC. Sam algorytm nie jest specjalnie skomplikowany, ale cała trudność polega na tym iż filtr ma mieć dynamicznie zmienną szerokość okna. Poniżej zademonstruję o co właściwie chodzi. Chciałbym zaznaczyć, że w pisanym kodzie bardzo zależy mi na jak największej...
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...
Na ZX SPECTRUM tak powinno to działać. Na Cobrze z wyprowadzonym przewodem z portu FE sterującym przerzutnikiem dzielącym przez 2, z wyjścia którego przez opornik jest sterowana baza tranzystora T3 (głośnikowego) także powinno to działać, chociaż tam nie będzie sprawdzany bit 4 akumulatora. Tam wywołanie OUT(FE),A ustawi na wyjściu H, następny OUT(FE),A...
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...
Osobiście wybrałbym rozwiązanie tomgarta - przetwornik C/A sterowany z uC + wzmacniacz operacyjny na wyjściu. Przetwornik 8-bitowy można tanio kupić (także na Allegro po ~2zł), lub zbudować samemu (drabinka R-2R z rezystorów precyzyjnych). 256 poziomów (8-bitów) to rozdzielczość prawie 0.1V przy sterowaniu 3-25V. Wzmocnienie i przesunięcie zapewni Ci...
Program wygląda dużo lepiej. I = 1wread(2) pobiera dwa bajty w których znajduje się temperatura. Polecam zajrzeć do karty katalogowej DS18B20 str.4. W I znajdzie się liczba 16 bitowa, gdzie pierwsze 4 bity to znak, następne 8 bitów to część przed przecinkiem, a cztery ostatnie to to co po przecinku. Liczby ujemne są w kodzie U2. S = I / 16 Powyższe...
Przesuwanie w lewo jest realizowane na dodawaniu wartości samej do siebie (w asmie instrukcja lsl to alias do add, rol to alias do adc) więc bajt jest uzupełniany zerami. Przesunięcie w prawo jest dzieleniem przez dwa bez reszty, przesuwając w prawo liczbę bez znaku (lsr) wartość będzie uzupełniana zerami, ale przesuwając liczbę ze znakiem (asr) bajt...
Dziękuje za ten jakże profesjonalny wpis, ale jak się to ma do migania żarówki? Chciałem zaznaczyć, że nie konstruuję wehikułu czasu, czy tam napędu międzygwiezdnego, tylko losowy przerywnik obwodu, do migania żarówką. Wrzuciłem to co napisałeś _jta_ do Groka i poprosiłem o wyjaśnienie. Oto co przygotował w... 4 sekundy: Autor opisuje sposób generowania...
Nie zmienia, bo masz błąd w innym miejscu. Dokładnie to miałem na myśli-że błąd jest gdzieś indziej. Zastanów się, co oznacza nazwa trybu CTC (?) – w ang. jest to ‘Clear Timer on Compare’ (pol. - wyzeruj zawartość licznika/timera, gdy jego zawartość jest równa wyznaczonej z góry i ustalonej, bądź to wyliczonej jakiejś wartości w zmiennej...
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...
Oczyściłem nieco kod, zablokowałem domaganie się pilota Grundig o zmianę baterii oraz przede wszystkim dodałem obsługę pilota RC6. Przy odczycie Trailer bit występuje pewien problem, ale przy ustawieniu odpowiedniego czasu odczyt pilota działa prawidłowo. Na razie jest obsługa trybu 0, sprawdzanie trybu jest zhaszowane dla testów - pilot od HP Pavilion...
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...
/.../Ty używasz PLL żeby podwoić zegar, który używasz w projekcie i nie do końca wiedziałem po co czasem uzywam podwojonej czestotliwosci, pll prawie zawsze; otoz jesli taktujesz SigTap zegarem, z ktorym pracuje logika i cos nie gra - SigTap pokazuje inne dane niz sie spodziewasz, trudno jest rozpoznac, czy problem jest w logice, czy w timingu, podwojona...
Otrzymane 2 bajty łączę w liczbę 16 bitową. Mnożę ją przez 10 i dzielę przez 16 (tj. przesuwam o 4 bity w prawo). Mam w wyniku temperaturę 10x większą niż w rzeczywistości. Ewentualne obliczenia i ustawienia wewnątrz programu robię na liczbach 10x większych. Dla procesora to żadna różnica. Wyświetlaniem zaś zajmuje się za każdym razem ten sam podprogram,...
no hello z sd juz zrezygnowalem - zbyt skomplikowana procedura zeby sie do tych kart dobrac ale cena nawet ok (16mb uzywana ok 10 pln) kol marek Lodz: tak walsnie myslalem od samego poczatku zeby wykorzystac uklady dostepne w telefoni chociaz nie wiem czy nie byloby dla mnei zrobic swoj wlasny koder/dekoder oparty na 6 tonach i zamiast rozszyfrowywanie...
Witam! Od jakiegoś czasu staram się oprogramować żyroskop, który znajduje się w zestawie rozwojowym Stm32f3-discovery. Jest to żyroskop L3GD20. Komunikuje się z uC poprzez interfejs SPI (narzucone przez konstrukcję zestawu). Generalnie komunikacja działa, ale bardzo chaotycznie. Przykładowo: - na zapytanie o rejestr WHO_AM_I dostawałem kiedyś odpowiedź...
#define KHZ2MS(x) (1/(x))*1000 1<<KHZ2MS(27) liczy się jak 1<<(1/(27))*1000 czyli daje w wyniku 1. Ja sobiście nie wiem gdzie w tym przykładzie była by jakaś zachycka bo akurat przesunięcie bitowe jest w kolejności wykonywania za mnożeniem i dzieleniem
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...
Odnowię wątek po paru latach :). Prawda jest taka: praw fizyki pan nie zmienisz. Aby obliczyć ilość danych możliwych do zapisania, trzeba znać pasmo przenoszenia magnetofonu, oraz zastosować jedną z technik modulacji zapisywanych danych. Najprostsza to MFM (piszę z pamięci, odsyłam do googla), polega na nadawaniu nośnej o określonej częstotliwości....
Witam, mam prosbe i byłbym wdzieczny za pomoc, :) chodzi mi o taki krotki mniejwiecej opis (schemat blokowy) np. MOV A # .... i opisac "dodaj do akumulatora lub Delay 100MS EQU 8112H itd programiki pisalismy w Programie KEIL uVison pomoce moga tu na forum lub na emaila rafi07750(at)interia.pl Z góry dziękuje .. :) lub mzoe jakies linki z Opisami pomocami...
przesuwanie i dzielenie to to w gruncie rzeczy to samo. W systemie dwójkowym dzielenie przez 2 to przesuwanie, w dziesiętnym przez 10 to przesuwanie w ósemkowym przez 8 to przesuwanie itd. Jak masz problem z dzieleniem "dużych" liczb to nie zapominaj że dzielenie i mnożenie jest przemienne i czasami łatwiej to zrobić z argumentem np 8 bitowym niż potem...
https://obrazki.elektroda.pl/6203916300_... Pytanie: Jak mogę dokonać pomiaru wartości analogowej, jeśli w moim systemie pozostało tylko jedno GPIO na FPGA/mikrokontrolerze? Odpowiedź: Zamiast przetwornika analogowo-cyfrowego można zastosować przetwornik napięcia na częstotliwość. Ponieważ zapotrzebowanie na funkcje pomiarowe staje...
W poniższym artykule zajmiemy się szumem różowym, czyli tak zwanym szumem 1/f. Zajmiemy się zrozumieniem tego jak ten szum powstaje i zachowuje się, a także jak wyeliminować go w naszych układach - szczególnie precyzyjnych układach pomiarowych, gdzie jego obecność jest najbardziej problematyczna. Eliminacja szumu 1/f nie jest jednak trywialna, gdyż...
w r1 jest ilość bitów do zamienienia - dasz 16, będzie 16 bitowa:)
Ale właśnie nie bardzo wiem jak zrobić przesuwanie dzielnika w lewo aż do zrównania się z najstarszym niezerowym bitem dzielnej...
Czytaj komunikaty błędów. Dzielenie jest niesyntezowalne, chyba, że oba agrumenty są stałe, wówczas podzieli je kompilator i zostaną zaimplementowane jako stałą, lub jest realizowane jako dzielenie przez potęgi dwójki, czyli przesuwanie w prawo o odpowiednią ilość bitów. Jeśli chcesz zrealizować dzielenie w FPGA to musisz albo zaprojektować układ dzielący...
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...
Stałej F_CPU nie definiuje się w kodzie. Robi się to w ustawieniach kompilatora, szczególnie, że korzystasz z opóźnień za pomocą funkcji _delay_ms(). http://mikrokontrolery.blogspot.com/2011... Dodatkowo, jeśli chcesz, żeby procesor taktowany był zegarem 16MHz, to taki kwarc zewnętrzny musisz podłączyć oraz ustawić odpowiednie...
z mojej rozmowy z nim (na gg) wynika że jest to atmega8535.. div nieumiem znaleźć w helpah ani nigdzie.. więc trzeba to zrobić programowo... sukcesywne odejmowanie (w/w) albo odejmowanie z przesuwaniem bitowym (szybsza metoda)
Chciałbym również zauważyć, że AVR nie ma instrukcji mnożenia dannych 32-bitowych, więc nawet z tym to jednym mnożeniem też będzie musiał się trochę pomęczyć. Naprawdę warto ten wzór sprowadzić do mnożenia przez stałą i przesuwania w prawo. Nawet jeśli stopień podziału dzielnika jest taki, że mianownik nie jest potęgą dwójki - wtedy trzeba przeskalować...
Dlaczego nie mają dzielenia? To proste - dzielenie jest najtrudniejszym w implementacji sprzętowej z podstawowych działań arytmetycznych - złożoność sprzętowej dzialarki jest wielokrotnie większa, niż sprzętowej mnożarki, a mnożarki - wielokrotnie większa od sumatora. instrukcji dzialenia nie ma również Cortex M0, a procesory, które ją mają, wykonują...
Nie od parady był ten uśmieszek. Dlaczego? Cóż kolega stworzył bardzo mądry programik :D No to wręcz przeciwnie. Gorszy. Dlatego napisałem że nawet on się nie zawiesza. Chodzi mi o to że klasyczny algorytm dzielenia to zwykła pętla przesuwająca bity. Nawet jak dzielna będzie równa 0 to pętla powinna się wykonać tyle samo razy co zawsze, w przypadku...
Oj nie tak, sympatyczny kolego ... ... my TU się dzielimy swoją wiedzą :D Zakładamy , że wynik nie przekroczy 16-tu bitów , czyli dziesiętnie 65535.Dane pobieramy w kolejności od jedności do dziesiątek tysięcy. 1)Wynik = 0 ;zerujemy iloczyn 2)Wynik = Wynik + cyfra ;dodajemy liczbę 8-mio bitową , do 16-to bitowej 3)jeśli to była ostatnia cyfra , to...
hmm faktycznie..... czyli przy drógim dzieleniu trzeba mianownik podzelić prze 256, usunąc młodszy bajt i w jego miejsce wpisac starszy a msb trzeba by wyzerowąć. tylko że wtedy powstaną przekłamania:/ nieduże i tylko po przecinku ale tego juz chyba nie przeskoczymy, gdyż brakuje dokładności Dodano po 12 chociaż jest sposub na to drógie dzielenie, zeby...
Pytanie tylko, dlaczego jego post znalazłem w koszu? Wiadomość skasowałem sam. racając do tematu: Informacja o znaku ujemnym zapisana jest zawsze na najstarszym bicie. Wrzucając liczbę 16-bitową do 32-bitowej, informacja o znaku już nie jest na ostatnim bicie, tylko na 16-stym, a LongInt ma tą informację na 32 bicie. Mam rację? Nawet jeśli mam, to...
Napisałeś to tak, jabyś pisał program, a nie tędy droga ! Pętle nie są syntezowalne, przynajmniej nie takie, jakiej użyłeś. W VHDLu pętle służą do generacji układów o powtarzającym się bloku, np. sumatora wielobitowego. Dzielenie można zrealizować poprzez przesuwanie bitowe liczby w prawo, ale będzie to dzielenie tylko przez potęgi 2. O ile dobrze pamiętam...
Tylko że jak pomnożę całość przez 10 to już nie zrobię tego na 8 bitach. Czy jak dziele 2 liczby inie dzielą się całkowicie to ustawiany jest jakiś bit lub kilka ? Poza tym nie mam zielonego pojęcia jak wyświetlić pojedynczą cyfrę na wyświetlaczy z jakiejś 3 cyfrowej liczby zapisanej w końcu w postaci hex. Zakres liczb przy podanym przeze mnie wzorze...
Tablica alokacji FAT jest takim jakby spisem treści dla plików znajdujących się na partycji. Informacja o pierwszym klastrze pliku znajduje się w rekordzie katalogu opisującym ten plik. Ponieważ pliki często zajmują więcej, niż jeden klaster, kolejne numery klastrów musisz odnaleźć na podstawie tablicy. Jeśli znasz numer pierwszego klastra, musisz znaleźć...
https://obrazki.elektroda.pl/6510354700_... Witajcie moi drodzy. Pokażę tu wnętrze inteligentnego gniazda Tuya LSPA9 które oferuje pomiar zużytej energii elektrycznej oraz sterowanie przez WiFi, a następnie omówię jego wewnętrzny protokół komunikacji z układem scalonym mierzącym energię elektryczną. Następnie pokażę jak zaimplementowałem...
Poczytaj sobie o SHIFT, bo np taki kawałek kodu będzie przesuwał w jedną stronę Dim I As Byte Dim A As Word ' 16 bitowa zmienna (chyba) A = 1 For I = 1 To 15 Portb = Low(a) ' pierwszy port Portc = High(a) ' drugi port Shift A , Right , 1 Waitms 250 Next I podobnie dzieląc to na 2 części i stosując dla jednej Shift Left, a dla...
[quote="tarrant"]dziękuję za odpowiedź. założyłem, że chodzi o pełną syntezę dźwięku, bez wrażliwości na dynamikę uderzenia klawisza. muszę jedynie opracować schemat połączeń elementów układu bez pisania oprogramowania. Odczyt dynamiki uderzenia w klawisz odczytuje się z czasu przejścia styku związanego z klawiszem pomiędzy stykami stałymi - im jest...
....i ciekaw jestem w jaki sposób realizujesz programowa regulację poziomu głośności? Hmm jak widać było na filmiku nie jest to przede wszystkim płynna i liniowa regulacja głośności. Po prostu każdy pojedynczy bajt pobranej próbki do pamięci przesuwałem bitowo w prawo, realizując dzielenie przez dwa. Jest to po prostu w miarę szybka operacja, która...
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...
http://obrazki.elektroda.pl/4657030700_1... Pamiętam, gdy kupiłem swój pierwszy procesorowy miernik częstotliwości. Wyposażony pierwotnie w rezonator kwarcowy zapewniający dokładność około 10ppm. Było to całkiem zadowalające, biorąc pod uwagę rozdzielczość częstościomierza oraz możliwość dopasowania obliczeń do odchyłki wzorca. Po krótkim...
1. tak się zdarza tez nie wiem czemu miałem takie sam problem z wykresem. Po prostu jak nic nie obierasz to masz 0 na RS i on to rysuje :/ jedyne wytłumaczenie albo gubi jeden bajt -> wszystko się przesuwa i braki sa końcu są wypełniane "0" :( 2. pierwszy blok to sortowanie twojej tablicy w kolejności rosnącej :/ czy to jest zapis całych próbek ? w...
Oversampling - ilość próbek jest większa od dzielnika (zwiększa rozdzielczość) Średnia arytmetyczna - dzielnik jest równy ilości próbek. (nie zmienia rozdzielczości) Wszelkie znaki na niebie i ziemi mówią, że "In signal processing, oversampling is the process of sampling a signal with a sampling frequency significantly higher than the Nyquist rate."...
mam tylko podstawowe komendy A jakie to podstawowe? W Z-80 można było dac zadanie, napisać program używając instrukcji kompatybilnych z 8080. 8051 to nie 80251 i nie można tu mówic o instrukcjach podstawowych i rozszerzonych. W 8051, zdaje sie nie ma tez niepublikowanych rozkazów jak w 6502 czt Z-80. Daj liste tych "podstawowych komend". Dodano po...
kedzi1 - ten sposób też zadziała, ale łamie zasady tzw. nakładania się wskaźników. Poczytaj o "pointer aliasing". Kod z unią może jest dłuższy, ale przynajmniej jasny i dla kompilatora, i dla programisty. snow - Przyjrzyj się dokładnie przykładowi z tabelki, którą przytoczyłeś na początku tematu. Jak dla mnie prawidłowy odczyt danych z tego przetwornika...
Czy ktoś rozgryzał już układ RFID EM4305. Nie mogę doczytać się w nocie aplikacyjnej jak rozpoznać rozpoczęcie nadawania ramki. Doczytałem się jak go przeprogramować tutaj wyraźnie jest napisane, że rozkaz, adres i dane (słowo 32 bitowe) są uzupełniane bitami parzysytości (dane są dzielone na 2 bajty zakończone bitem parzystości). Ale z noty nie wynika,...
Witam, //--------------------------------------... char s_write_byte(unsigned char value) //--------------------------------------... // writes a byte on the Sensibus and checks the acknowledge { unsigned char i,error=0; for (i=0x80;i>0;i/=2) //shift...
Zgadzam się że może być przydatne trzymanie liczb skalowanych jakąś potęgą 2 itd... I tak się w praktyce robi gdy obliczenia na float-ach są za wolne (zarówno softowo jak i czasem również hardware-owe operacje na float-ach mogą być za wolne). Zapoznaj się z formatami Q. Idea jest znana, ale w zaskakująco innej dziedzinie: Biznes: liczby ułamkowe stałoprzecinkowe....
Dla początkujących http://www.pascal.eu.org/index2.htm Powiedzmy, że masz zmienną wejściową x typu longint: Konwersja szesnastkowa: 1. zapisujesz x w zmiennej pomocniczej xp 2. wydzielasz 4 najniższe bity xp (and 15) i tak powstałą liczbą adresujesz sobie zmienną tekstową Hx zdefiniowaną jak niżej: { const hx:string='01234546789ABCDEF'; } pamiętając,...
Witaj Kolego. No dobrze to kombinujesz. Podpowiem Ci jedynie jak możesz sobie to uprościć. Otóż powołaj sobie zmienną 16 bitową zamiast 2 8 bitowych w ARM to short w AVR to int i normalnie odwzoruj całość z czujnika następnie jak chcesz mieć dokładność do 0.5C to przemnóż całość przez 10. Pojawi się zapewne pytanie dlaczego pomnozyc przez 10 odpowiedz...
http://obrazki.elektroda.pl/5335012100_1... Mister Gloves to bezprzewodowy interfejs USB, pozwalający poprzez intuicyjne ruchy ręki i palców sterować komputerem. Rękawica noszona na prawej dłoni umożliwia użytkownikowi kontrolę ruchu kursora, wykonywanie skrótów klawiaturowych oraz symulowanie kliknięć przyciskami myszy, poprzez zginanie...
https://obrazki.elektroda.pl/3743484600_... Witajcie moi drodzy Przedstawię tutaj mojego shielda (nakładkę) na Arduino UNO opartego o układ ENC424j600. Shield ten pozwala podłączyć Arduino do internetu bez żadnego lutowania, a nawet bez użycia kabelków i płytek stykowych. W temacie dam jedenaście pełnych przykładów jego użycia z moimi...
przesunięcie bitowe reszta dzielenie przesunięcie bitowe portach przesunięcie bitowe atmega8
miganie oświetlenia sprzedam dozymetr falowanie wolnych obrotow
thomson dvbt2 instukcja serwisowa pixma
Jak odłączyć alarm pasa w Citroenie Nemo? Strojenie dyskryminatora FM z multimetrem