Witam. Mam taki problem z asemblerem. Chciałem przemnożyć rejestr ecx przez liczbę 5 z wynikiem w ecx. Czy istnieje taki rozkaz, który to realizuje a jeżeli tak to jak się go definiuje. Zaznaczam, że używam masma'a. Pozdrawiam.
Dzięki za odpowiedź! Chodzi bardziej o to, że mam dwa rejestry, w nich w postaci U2 zakodowaną liczbę, mam też funkcję do konwersji na normalny kod binarny. Chciałem wykonać mnożenie dwóch rejestrów, przez inne dwa i wynik, zapisując do czterech rejestrów, przesłać do LCD do wyświetlenia. No...
DIV AB “DIV AB” a) ang. „divide” – podziel b) 8−bitowa liczba bez znaku, znajdująca się w akumulatorze jest dzielona przez 8−bito− wą liczbę z rejestru B. Cześć całkowita ilora− zu wpisywana jest do akumulatora, a reszta z...
Zastąp mnożenie wielokrotnym sumowaniem. Ma to wyglądać dokładnie jak mnożenie w słupku na kartce tyle że na liczbach binarnych tj: jeśli na danej pozycji w drugiej liczbie jest 1 to musisz wykonać dodawanie. oczywiście pierwsza liczba musi być proporcjonalnie do bitu przesunięta w lewo. 1101 x 1010 --------------- 1...
Wersja "pro" :) int szybkie_mnozenie(int a, int b) { int c=0; while(b) { if(b%2) c+=a; a*=2; b/=2; } return (c); } Sprawa jest elementarna. Wiadomo, że mnożenie liczb kosztuje sporo czasu procesora. Zatem ktoś wymyślił algorytm zamieniający "kosztowne" zwykłe mnożenie...
Przeniosę to przerwanie i tablice do plików .c. Ale wtedy w pliku głównym .c mam includować plik przerwania .c? Myślałem, że tam inkluduje się tylko pliki .h Nie musisz include'ować pliku .c, a nawet nie powinieneś. W Makefile dopisz go tylko do plików źródłowych (SRC = $(TARGET).c przerwanie.c inny_plik.c...
Witam. Czy potrafi ktoś pomóc mi z zadaniem z assemblera? Mam do napisania program, który mnoży dwie liczby 5 bajtowe (40 bitów) szesnastkowe oraz podaje wynik również w tym systemie (tylko wynik będzie wtedy 80 bitowy). Problem polega na tym, że do tego mnożenie trzeba wykorzystać algorytm, ponieważ...
witam i podziwiam :) nie chce mi się wyciągać ZX z szafki i znowu gapić się w ten zielony monitor :) Dzięki Sinclairowi za Spectruma ! gdyby nie ten komputer to nie znałbym się na mikroelektronice. Rok temu przesiadłem się na PCta, i przekładam swoje programy na intelowskie mnemoniki '25 * 255 ORG...
Prawdopodobnie (bo jest późno) oryginalna proceura bedzie działać pod warunkiem że dobrze umieścisz dane wejściowe tzn ze wpiszesz jedną liczbe 16 bitową na początku do wyniku na mniej znaczących pozycjach. Wtedy po drodze przesuwając bity wyniku równiez przesuwamy jeden z czynniku iloczynu co czyni...
Szkoda. Wprawdzie potrzebowałem 24MHz i ucieszyłem się że ten na 20MHz chodzi i na 24MHz. Ale liczyłem na to że jak zdobędę ten na 24MHz to łyknie ze 30MHz. Szczególnie że okazało się że 24MHz mi nie wystarczy. Wczoraj przypadkiem odkryłem w datasheecie dodatkowe rozkazy (muls, mulsu, fmul, fmuls, fmulsu,...
Ale o co Ci chodzi, o to czy to jest prawidłowa operacja czy szukasz jakiegoś konkretnego układu scalonego? Chodzi o to, że szukam układu scalonego, bo zrobiłem takie coś na bramkach ale wyliczyłem, że przy większej ilości bitów to trochę sporo bramek wyjdzie, więc myslałem, że istnieje...
Witam, Musze zrobic szybkie przerwanie od timera w atmega162. W związku z tym nie moge sobie pozwolic na korzystanie z pamięci SRAM i stosu, więc zostają tylko rejestry, wystarczą 3, w tym dwa wskaźnikowe np. X. No więc w właściwym programie te rejesrty nie mogą byc użyte, ani modyfikowane. Czy da...
Przesuwanie w lewo (odpowiada to mnożeniu przez 2 lub jej potęgę zależnie od ilości przesunięć) Na wejście D przerzutnika na pozycji i-tej podajesz wyjście Q przerzutnika z pozycji (i-1) {czyli tego po prawej stronie mówiąc obrazowo}, na wejścia CLK przerzutników podajesz równolegle sygnał zegarowy. Na...
Witam wszystkich bardzo serdecznie. Jestem dość nowy i mam nadzieje, że nie urażę niczyich ambicji tym tematem. Podobny był wprawdzie już poruszony ale nieco jednak "z innej beczki" Przeszukałem zasoby internetu i nie znalazłem jednoznacznej odpowiedzi na temat mnożenia ułamków. Oto mój problem: Chcę...
Przesuwa sie w prawo bo na ostatnim miejscu nic już sie nie zmieni i dodaje sie wprost wartość jak sie okręci rejestrem określona ilość razy to i tak wyjdzie dokładnie to co ma wyjść może to troszkę bez logiki ale działa jak powinno. A wynika to z tego że rejestr z wynikiem jest 16 bitowy składa sie...
To jest to o co mi chodziło, ale mam pytanie i niejasności związane z tym tekstem, bo nie mogę go zrozumieć i narysować. Nie chce być lamą ale to jest takie zagmatwane, że brakuje mi pomysłów: (2 sumatory 4 bitowe, 2 rejestry 4 bitowe pamiętające wynik) Wyjście sumatorów podajesz na wejście powyższych...
o dzizas kolejny skalany bascomem przetwornik AC ma rozdzielczosc 10 bit (zakladam ze rozumiesz co to rozdzielczosc). Oznacza to, ze moze on "rozroznic" 1024 wartosci napiecia (ma tyle progow - jak wartosc jest ponizej progu to jest jakas wartosc a jak powyzej to o 1 wieksza). Poniewaz napiecie odniesienia...
Błędem jest to, że przesuwanie rejestrów Multiplier i wynik jest taktowane tym samym zboczem zegara co dodawanie rejestru wynik do Multiplicand. Zawartość rejestru wynik jest w tym czasie nieustalona. To że jest typem inout nie ma znaczenia, ponieważ syntezer ze składni programu i tak wie, że musi ze...
Witam wszystkich potrzebuje pomocy mam do napisania program który liczy iloczyn liczb BCD. Napisałem program w którym mnożna jest obojętnej długości natomiast mnożnik na razie jest z jednej liczby niestety ten program mi nie chce poprawnie działać.Bardzo prosił bym o pomoc poniżej wklejam mój kod. ...
Już mówiąc chociażby tylko "przesunąć argumenty o 1 bit", robisz układ nie iteracyjny w sensie układów logicznych kombinacyjnych , a o czysto kombinacyjny dam głowę tu chodzi. Bloki to komórki iteracyjnego układu logicznego kombinacyjnego , połączone ze sobą w jednakowy sposób . Czyli ma tu...
O matko bloków CLB... Układ DSP48A ma możliwość potokowania wejść (podwójne rejestry A i B) i wyjścia, jak to tylko mnożenie, rejestr P. W takim wypadku nie będą załączone jak użyjesz w jednym takcie *, co spowolni cały układ bo zwiększy się ścieżka krytyczna. Ja bym wolał mieć większą kontrolę i...
[syntax=avrasm] ; PODPROGRAM MNOZENIA LICZB DWUBAJTOWYCH ; PISAL I TESTOWAL: MIROSLAW LACH, AVT ; WEJSCIE: ; R0 - ADRES NAJMLODSZEGO BAJTU MNOZNEJ ; R1 - ADRES NAJMLODSZEGO BAJTU MNOZNIKA ; WYJSCIE: ; ILOCZYN JEST UMIESZCZANY W MIEJSCE CZYNNIKOW ILOCZYNU, GDZIE ; ZLOZENIE BAJTOW (R0-1):(R0):(R1-1):(R1)...
Oj nie tak, sympatyczny kolego wygląda mnożenie. MOV B,#10000 ten rozkaz jest błędny, jak i następny ze względów formalnych. Nie da się do bajtu (osiem bitów) załadować wartości większej niż 255. Łap mnie na GG jak będę online i wtedy wytłumaczę ci jak to zrobić.
Jak zwykle jesteś Wielki Zumek:) A teraz jeszcze pytanie z innej beczki:) Jak, pomnożyć liczbę 255 raz 4,8? :P Bo fmul z tego co widzę umożliwia mnożenie ułamków mniejszych niż 4... [1N,7Q] Powiedzmy, ze wiem, ze mogę pomnożyć 255*48 i odpowiednio wyświetlić przecinek (za pomocą mul). A jak...
Mnożenie przezd dwa przesuwa o jeden bit w lewo przykłądowo mając liczbę 16bitową: 0111011100000011 po pomnożeniu przez 2 otrzymamy 1110111000000110 po kolejnym pomnożeniu przez 2 otrzymamy 1101110000001100 Dzielenie przesuwa w drugą stronę czyli w prawo Mozesz użyć zmiennej 16bitowej a po...
Znam to kombinowanie jak koń pod górę.. ;) Zazwyczaj jak chce się zrobić taki zabieg to jedna linijka ale w Lua to może być wyzwanie więc powodzenia :) Możesz tez to obejść i przesunięcia bitowe potraktować jako mnożenie bądź dzielenie przez 2*n czyli np.: <<3 jest równoważne pomnożeniu wyniku...
Dopisałem do poprzedniego mojego postu coś takiego, ale pewnie nie zdążyłeś zobaczyć. W bibliotekach STDPeriph znalazłem w definicjach coś takiego: Tutaj następuje mnożenie rejestru CR2 właśnie z tym bitem. O coś takiego chodzi?
Witam We wszystkich materiałach typu tutorial czytam: imul ebx; - pomnożenie zawartości rejestru EAX przez zawartość rejestru EBX, wynik mnożenia zostanie zapisany w EAX imul dword [dana]; - pomnożenie zawartości EAX przez 32 bitową liczbę zapisaną pod adresem wskazywanym przez etykietę dana,...
Operacje arytmetyczne i logiczne w procesorze wykonuje jednostka arytmetyczno-logiczna (ALU). Generalnie ma dwa wejścia i jedno wyjście (np 32bitowe dla procesora 32b) i współpracuje z rejestrami procesora o takiej szerokości. Dodatkowo ma wejście i wyjście do przerzutnika przeniesienia, przerzutniki...
Dodaje kod do zapisu daty i czasu w PCF8563 [syntax=basic4gl] '*******... Funkcja ustawiająca zegar PCF8563 Sub Settime_pcf Ssek = Makebcd(s) 'sekundy Mm = Makebcd(m) 'minuty Hh = Makebcd(h)...
Witaj, Obsługa wejść i wyjść analogowych jest prosta: wartość wejścia pojawia się w jednym z rejestrów R3840-R3903 (CH0=R3840, CH1=R3841...itd); natomiast wyjścia analogicznie w rejestrach R3904-R3967 (CH0=R3904, CH1=3905...itd). Jak z nich korzystać? np. Twoje wejście CH0 to R3840, a wartość referencyjna...
Jeżeli do celów edukacyjnych to ja bym to widział tak: Licznik zliczający w tył, do którego możesz wpisać wartość początkową (mnożnik powiedzmy) Rejestr mnożnej (drugiego czynnika) Sumator szesnastobitowy (na przyklad dwa osmibitowe połączone kaskadowo) Wyjscia sumatora, podajesz spowrotem...
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....
Jak masz wspólną magistralę do pamięci z kilkudziesięcioma/kilkuset procesorami to ile z nich w danym zegara cyklu może korzystać z pamięci?! Jak masz wspólną bazę danych z kilkudziesięcioma/kilkuset użytkownikami to ile z nich w danym momencie może korzystać z danych?! Nie mów że tylko jeden. Może...
bez urazy, kolego olekewaagata, zanim zaczniesz kogoś pouczać przeczytaj tekst ze zrozumieniem! ;)) Autor wątku miał problem z propagowaniem przeniesienia - moja odpowiedź dotyczy DOKŁADNIE zalecenia, jaką instrukcją uwzględnia się przeniesienie. A podany przeze mnie przykład dotyczy sumowania, z...
Bo FFT jest duuuuużo szybsze. Złożoność obliczeniowa DFT to O(N^2), FFT to tylko N*log(N), gdzie N - ilość próbek. Wraz ze wzrostem N złożoność obliczeniowa FFT rośnie dużo wolniej niż bezpośredniej implementacji DFT. Dla przykładu bezpośrednia implementacja DFT dla 128 próbkek to 128^2 = 16384 operacje....
Ja też bym nie radził używać R1 jako rejestru zerowego. Bo w tym rejestrze ląduje wynik mnożenia. I po każdym wykonanym mnożeniu (i odczytaniu wyniku oczywiście, czyli gdy rejestr R1 już nie jest potrzebny), trzeba go ponownie inicjalizować wartością 0.
Witam, Potrzebuję zbudować mnożarkę dwóch wektorów o długości 512-bit każdy. Posiadam układ Spartan3E 500 dysponujący 20 mnozarkami 18x18 .Zrealizowałem mnożenie dwóch licz binarnych o długości 512 bit-ów - mnożenie wg. algorytmu "shift-add". W najgorszym wypadku mnożenie trwa 512 cykli zegara....
Witam, piszę aplikację na ARMa, która wymaga wielu mnożeń oraz sumowań(głównie macierzy). Pomyślałem więc o zastosowaniu stałego przecinka, który mógłby przyspieszyć tę operację dość znacznie. Z tego co się zorientowałem, to wykonanie operacji mnożenia 2 floatów w procesorze STM32F103VE zajmuje 47...
Stosunkowo szybkim sposobem wyliczenia sekwencji punktów funkcji sinus/cosinus jest całkowanie równania różniczkowego układu drgającego bez tłumienia metodami numerycznymi (np. RK-4, czy Adamsa). x''=-ax przy warunku x(0)=0 ; x'(0)=1 Wyliczenie kolejnego punktu to kilka mnożeń i dodawań. W...
Nie rozumiem początku. Operacja mnożenia daje w wyniku sklejony rejestr 16 bitowy "B,A", gdzie jest B starszą częścią. Po drugim mnożeniu wykonujesz dodawanie z tym, że sumujesz starszy bajt poprzedniego mnożenia i młodszy bieżącego. Dalej nie sprawdzałem. Wyjaśnij cel powyższego działania (może ja coś...
W tym przypadku buforować wystarczy tylko okno z grafiką co spowoduje mniejsze zapotrzebowanie na RAM i znacznie ograniczy potrzebny czas na wygenerowanie takiego ekranu i jego wyświetlenie. Zrobiłem dodatkowy bufor na okno z renderowanym modelem (wymiary: 120x120). Wciągnąłem go do wewnętrznego RAMu...
Witam, Widzę, że to architektura '51 - w takim razie złe forum. Rejestry A i B są 8-bitowe, więc jak chcesz tam "zmieścić" 12 bitów? Musisz zapisać 8 bitów w jednym rejestrze, a kolejne 4 w innym. Mnożenie '51 też ma tylko 8x8 bitów, więc musisz też to robic "po kawałku". O konwersję na ciąg...
Ja mam takie zdanie że rzekoma "prostota" assemblera PICów wcale prostotą nie jest. Raz że instrukcji jest mało i żeby zrobić byle co to trzeba to poskładać ze 100 innych instrukcji (choćby mnożenie), to jeszcze jest wąskie gardło w postaci chyba tylko jednego pełnosprytnego rejestru (taki akumulator). Na...
Pozwólcie na dorzucenie jeszcze krótkiego rysu historycznego. Jeszcze nie tak dawno silna była grupa wyznawców pisania w ASM, którzy mówili bardzo brzydkie rzeczy o C - przecież nic tak nie cieszy rasowego programisty jak "ręczne" mnożenie dwóch liczb 16bit zapisanych w U2 - tylko TAK pisze się OPTYMALNIE...
RitterX - Myśląc nad architekturą tego urządzenia jeszcze na wczesnym etapie musiałem przemyśleć bardzo dokładanie te kwestie o których wspominasz. W końcu podjąłem decyzję i zdecydowałem się na sposób podobny do strzelania z broni palnej, a mianowicie: załaduj i strzel. Upraszczając - "załaduj" oznacza...
Piszę sobie szczęśliwie kody baremetal na ARMy w RPi3 i RPi4. Nie wnikałem w szybkość pracy bo i tak była duża. Ale potrzebowałem mocno zoptymalizować jeden algorytm, i dodałem sobie licznik cykli. I się mocno zdziwiłem. Kod jest najprostszy z możliwych. Czysty baremetal, nawet bez przerwań. Wzorowany...
Autor poniższego zestawienia jest inżynierem i konsultantem wsparcia dla systemów wbudowanych. W swojej karierze poznał on szereg różnych architektur mikrokontrolerów, różniących się wydajnością, wyborem peryferii, poborem zasilania etc. Wybór odpowiedniego układu stanowi zawsze o sukcesie projektu....
Druga część artykułu o najtańszych nowych mikrokontrolerach z roku 2017. Ekosystem developerski Środowisko developerskie mikrokontrolera ma ogromny wpływ na jakość pracy z nim i w konsekwencji - na produktywność. Na to składają się różne czynniki – jakość IDE, dostępne biblioteki,...
Dzieki wielkie za odpowiedz Zmodyfikowalem troche program liczący w HEXie a noz sie komus przyda [syntax=asm]ORG 000H START: LCALL WAIT_KEY ; czekanie na przycisk z klawiatury SWAP A ; zamiana starszych...
Jak wyglada opkode instrukcji dzielenia w AVR ? Która ATmega ma ? ZTCW jest mnożenie (MUL), mnożenie znak/bez znaku (MULS), cząstkowe mnożenie (FMUL) + znak/bez znaku (FMULS), ale o dzieleniu nie słyszałem. Jest ponadto instrukcja modulo na dwóch dowolnych rejestrach (EOR). Polecan spis instrukcji...
Jestem praktykiem i wiem, że na avr'ach mnożenia nie da się wykorzystać, jeśli przesuwanie jest o zmienną wartość. Przesuwanie o stałą bez problemu można zrealizować przez mnożenie (na jakiej podstawie twierdzisz, że nie umiem mnożenia przez 2?), jednak nie masz instrukcji która umożliwia przesunięcie...
Obawiam sie że atmego bez naprawde sprytnie napisanego softu jest po prostu za słaba do tego celu. Wez po uwagę że float mnożenie to ok 2980 taktów zegara przy zmniennych typu volatile. Dla porównania. Dzielenie na pewno więcej. Dane dla innych typów danych: uint8 => 19 cycles uint16 => 24...
1. Podrzucę Ci pomysł, pomocny lub nie. Zrobiłem PWN Atmega8 (czyli straszny dziad) generator miłego dla ucha sinusoidalnego dźwięku (w oparciu o przerwanie timera). Czystość uzyskałem, gdy na samym początku przerwania ustawiałem wartość ze zmiennej do PWM, a potem mogłem ją sobie opracowywać "na nastepny...
Witam, Postanowiłem dobudować sobie do zasilacza taki oto woltomierz: Ponieważ szkoda mi 8zł na nową Atmegę 48 zwłaszcza że mam kilka Atmeg 8 postanowiłem przerobić kod (wstawiam już po zmianach) [syntax=avrasm];Automatyczn... 2-zakresowy woltomierz panelowy z 4-cyfrowym wyświetlaczem LED ;Wersja...
Witam Potrzebuje waszej pomocy, musze napisac stoper w asm. Już sie męcze z tym troche i nie chce działac tak jak powinno, więc prosze was o naproawdzenie/poprawienie błedów w kodzie ponizej. I chcialbym rowniez wiedziec, czy moja interpretacja polecen w tym kodzie jest poprawna. Sam Timer działa...
Zastanawiam się czy tego kalkulatora nie dało by się odtworzyć. Odtworzenie schematu na podstawie płytek, przy tym stopniu upakowania oraz szerokości ścieżek nie stanowi większego problemu. Przerażeniem napawa konieczność rozplatania wiązek przewodów łączących złącza i mozolne rozpisywanie połączeń....
Witam! Dziękuje za wszystkie odpowiedzi i pomoc :) jak tylko moglem zacząć to mi bardzo pomogły:) Jednak mam nadal pewien problem z tym projektem. Mianowicie nie umiem w nim znaleźć błędu w działaniu (sama idea wydaje się być dobra). Wiem oczywiście ze złe mnoży ale nie wiem w czym tkwi problem. O to...
6502 - montowany był w C64. Eh te czasy. Nie zgodzę się natomiast, że nowoczesne procesory są zbyt skomplikowane i trudne w montażu. Przecież nowoczesny procesor w moim rozumowaniu to niekoniecznie np. 4 rdzeniowiec Intela. Równie nowoczesne są chociażby ATMEL'E i PIC'E. Zważywszy na to, że instrukcje...
Witam, ostatnimi czasy zainteresowałem się (po części przez studia) programowaniem mikroprocesorów, wykorzystując program EdSim51, do początkowej nauki Assemblera. Jakkolwiek początkowe sukcesy w nim teraz napotkały na przeszkodę. Mianowicie próbowałem zacząć korzystać z programu FASMW, by pisać...
Przecież wszystkie opisy komend masz w datasheet: SUBI - odejmij stałą od wartości rejestru -> SUBI r16,38 - odejmuje od zawartości rejestru liczbę 38 MUL - mnożenie bez znaku - > MUL r16,r17 - mnoży rejest r16 z rejestrem r17 a wynik wrzuca do rejestrów r1 i r0 SBIC - pomiń następny rozkaz jeśli...
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...
Układu SID (6581 stary i 8580 nowy), będącym muzyczną orkiestrą komputera Commodore 64 nie trzeba nikomu przedstawiać – między innymi dzięki jego brzmieniu owa maszyna osiągnęła tak dużą popularność. Warto tylko przypomnieć, że SID ma jedynie trzy kanały, ale umiejętności programistów potrafiły...
Witam Po latach wracam do głębszego poznania procków MSP430F a konkretnie MSP430F449 i mam problem z układem taktującym. Podłączając rezonator "zegarkowy" 32768Hz i wykorzystując ustrojstwo wewnątrz procka do mnożenia częstotliwości chcę uzyskać sygnał taktujący rzędu ok 8MHz. Postępuję według noty...
Kod maszynowy - dobrze go znać, ale stosować docelowo w AVR? Język jak każdy inny. Osobiście używam w produkcji(Modbus, LCD, sterowanie fazowe, sterowanie grupowe, RGB PWM programowe, obsługa klawiatury, pamięci zewnętrznej FRAM po SPI i wiele innych funkcji w jednym układzie działające jednocześnie)....
To moja trzecia konstrukcja na FPGA ;) pierwszy był trywialny zegarek na kilku licznikach, a potem prosty kalkulatorek dodający dwie liczby. Tak więc proszę o konstruktywną krytykę i porady, co by tu można jeszcze ulepszyć. FPGA ciekawi mnie już od jakiegoś czasu, ze względu na to, że można na...
What? Co tu na kartce liczyć? Przecież to są operacje z początków podstawówki - mnożenie i dzielenie. Uwzględniając te wszystkie dzielniki i mnożniki oraz PLLa najbardziej skomplikowana operacja to może max 7 operacji, więc spokojnie wszystko mieści się w mojej głowie. Używam CubeMX miedzy innymi...
Wiele dzisiejszych architektur powstało podczas wieloletniego procesu udoskonalania i tworzenia coraz lepszych rozwiązań, aby były one jak najbardziej doskonałe. Firmy odpowiedzialne za daną architekturę wymagają opłat licencyjnych za wykorzystanie ich dzieła w produkcie. Czy jest więc możliwe,...
a ja sie zastanawiam.. jak by odświeżanie zrobić 5FPS a żeby czas pomiaru trwał 2 sekundy można zastosować prosty stos FIFO z 10 zmiennych. przerwanie z czujnika by inkrementowało wszystkie 10 zmiennych, przerwanie z licznika odmieżającego 1/5 sekundy by kopiowało pierwszą zmienną stosu (stos_0) do...
Program chyba ukończyłem: ;Program do "modyfikatora sygnału" ;Parametry techniczne dla taktowania 4MHz: ;- skrócenie czasu o wartość max ponad 2,5ms z krokiem co 10us ;- lub wydłużenie czasu o max stałą wartość ponad 20ms z krokiem co 80us ;- mnożenie czasu przez współczynnik około...
Jak to zwykle na początku bywa warto ściągnąć jakiś kurs. Polecam też książkę Dolińskiego "Mikrokontrolery AVR w praktyce" (przede wszystkim bardzo dobrze opisane komendy assemblera wraz z przykładami) - przykłady są na 90S2313, ale maja 90% wspólnego z wyższymi wesjami. Ostatnio wyszła nowa książka...
DSP mają specjalne mechanizmy, które pozwalają na uzyskiwanie bardzo dużych mocy obliczeniowych w specyficznych dla przetwarzania cyfrowego algorytmach. Mowa tutaj np o filtrach FIR, gdzie robi się wielokrotne mnożenie z akumulacją. Typowe w DSP jest to, że taką opoerację jak: mnożenie, dodawania zwiększanie/...
Witam. Z tą pamięcią programu mam kilka pytań bo się zakręciłem. Tak czytam sobie w książeczce R.Baranowskiego że rozkazowi np. lpm należy podać wskaźnik 16bit z czego Wszystkie prócz najmłodszego bity rejestru indeksowego "Z" służą do adresowania 16-bitowej komórki pamięci programy, która ma...
ZAD. 1. Przygotować i uruchomić programy w języku asemblera 8051: a) kopiowania N-bajtowego obszaru TABL 1 z pamięci kodu do pamięci wewnętrznej DATA (obszar TABL2), b) kopiowania bit po bicie w pamięci DATA fragmentu danych z obszaru TABL2, a następnie bajt po bajcie i utworzenie obszaru TABL3...
AVR-y były projektowane pod języki wysokiego poziomu właśnie po to, żeby zwykły śmiertelnik nie musiał się męczyć z asemblerem. Że co prosze?????? AVR był projektowany pod języki wysokiego poziomu? To dlaczego ma architekturę RISC (bardzo ograniczona lista rozkazów, dużo równoprawnych rejestrów...
272 to taka nieciekawa wartość do mnożenia. Ja zrobiłem tak: Przerwania z TIM0 i TIM1 TIM0 zlicza impulsy z wejścia zliczającego, i gdy się przepełni jest króciutkie przerwanie inkrementujące parę 3 rejestrów. TIM1 zgłasza przerwanie równiutko co pół sekundy. Na samym początku obsługi przerwania jest...
a ja wiem co chce zrobić , tylko nie do końca wiem jak no właśnie o to mi chodziło, po prostu z tego co już 'opublikowałeś' nie jestem pewien czy wiesz co tak na prawdę powstanie w sprzęcie z tego co napisałeś. dystans <= ((v_dzwieku / f_zegara)*(zliczone_takty)... - korekcja;...
Pamięć ma określoną czas na odpowiedź (powiedzmy 10ns). Jeżeli procesor jest szybszy, to musi poczekać odpowiednią liczbę cykli zegarowych tak, żeby pamięć zdążyła zwrócić odpowiednie dane. To jest powód dla którego nowoczesne procesory mają pamięć cache L1, L2 czy nawet L3. Dostęp do takiej pamięci...
1. rejestry ax-dx to rejestry ogólnego przeznaczenia. Czyli w większości przypadków nie różnią się niczym. Ale mogą mieć też specyficzne zastosowania, jak AX do niektórych operacji arytmetyczno-logicznch, BX do wskazywania adresu (zapis: [BX]), CX używany do liczenia (podobnie, jak licznik w for). xH...
Panowie postanowiłem wykonać test wbudowanych w atmel studio typów fixed point vs float. Na razie tylko samych _Accum z saturacją ale to co zobaczyłem nie napawa optymizmem gdzie jest błąd?Dodam że -atmel studio 7, -wewnętrzny zegar 8MHz -Atmega16. -Do pomiaru czasu używam timer 1. Najpierw kod,...
A dlaczego od razu nie użyłeś mnożenia? Ależ to jest mnożenie. A to mnożenie dwóch liczb jednobajtowych wygląda mi na mnożenie jednej liczby przez 2. Tak, rozkaz ROL łącznie z LSL jest wykorzystywany do mnożenia dwóch liczb przez dwa. Dlatego kompilatory dobierają sobie do potrzeb: Zauważ,...
Błędnę jest też przekonanie że kiedyś mikrokontrolery 8051 czy podobne (CISC) były dobre do tamtejszych zastosowań, a teraz zmieniły się czasy i lepsze są inne mikrokontrolery (RISC). Wystarczy poczytać historię rozwoju mikrokontrolerów czy ogólnie procesorów. W skrócie: Procesory się rozwijały (wtedy...
To na przykładzie, chcesz wprowadzić np. liczbę 902: 0. liczba DW 0 1. Naciskasz 9 AL = '9' AL = '9' - '0' = 9 liczba = liczba * 10 + AL = 9 (0000 0000 0000 1001 b) 2. Naciskasz 0 AL = '0' AL = '0' - '0' = 0 liczba = liczba * 10 + AL = 90 (0000 0000 0101 1010 b) 3. Naciskasz 2 AL...
No! Dzięki! Rzeczywiście nie takie to trudne:) Użyj klasycznego mnożenia liczb wielobajtowych, kilka mnożeń i kilka dodawań. Klasyczne mnożenie liczb wielobajtowych, może dotyczyć liczb np. czterobajtowych? lub więcej? Gdzie o tym mogę poczytać?. Czy w trakcie wykonywania operacji wielobajtowych...
Witam Jeżeli T1 pracuje jako 16 bitowy to rejestry TH1:TL1 traktujesz jako jeden 16 bitowy i tam masz wartość możesz te rejestry przenieść gdzieś indziej i dalej obrabiać (np. wyświetlić itp.), natomiast to mnożenie w podanym przykładzie wydaje mi się nie potrzebne.
Witam. Co wy na to ? Bardzo fajne, raz wklepać a potem używać, ale mam pytanko, co robi kompilator kiedy z tego dzielenia wychodzą części ułamkowe? Część ułamkowa jest obcinana, bo i tak nie da się jej wpisać w 8-bitowy rejestr licznika. Chcąc osiągnąć jeszcze większą dokładność, można próbować...
Witam! Od pewnego czasu interesuję się ?P a dokładniej najmniejszymi AVR i gdy postanowiłem zabrać się za pierwszy projekt pojawiły się oczywiście problemy. Wiem ,że po przechwyceniu wart. przez timer1 jest ona od razu dzielona na 2 części i zapisywana do odpowiednich rejestrów(ICR1H i ICR1L) i...
Niekoniecznie, MCU ze sprzętowym mnożeniem całkiem gładko sobie z tym radzą. W jednej z implementacji szyfrowania udało mi się w assemblerze naskrobać kod szyfrujący z efektywnością 16kB/s przy 4MHz taktowania. Większość operacji odybwa się wyłącznie na rejestrach, SRAM jest używany tylko do pobrania...
Zadanie bardzo podobne do tego poniżej, z tym, że bez mnożenia i koniecznością zapisu kolejnych n komórek (brak trzeciego rejestru indeksowego – ix i iy są już wykorzystane – trzeba wymyślić sposób adresowania trzeciego wektora innym rejestrem np. hl) .z80 bdos equ 5 aseg start: o...
Marcin_xx1 : Optymalizacja nie polega na zamienieniu jednej linijki w inną od tak, ale na maksymalnym wykorzystaniu pewnych założeń, których nie przekazujemy jawnie kompilatorowi. Dla przykładu jeśli założymy, że wszystkie zmienne przyjmują wartości od 0 do 9, to wszystkie warunki się upraszczają (można...
skynet_2 : Zmienne globalne jak ta, nie muszą być inicjalizowane. Ta zmienna trafi do sekcji bss, a więc na starcie będzie równa 0. Co innego zmienne lokalne funkcji, które znajdują się w rejestrach lub na stosie - te trzeba inicjalizować. Dodano po 20 Mnożenia, if'y, dodawania - rozumiem,...
Siles - mnożenie to może i masz opanowane, ale tu nie matematyka winna być stosowana, bo - wyraźnie - na manowce Cię wiedzie. - Twoim tokiem rozumowania idąc na koncie Admininstratora zużycie zasobów wynosiłoby 1+5 (to ta sama logika). Pierdoła z Gądek - więc wyjaśnij co w moim toku rozumienia...
Nie wiem po co każdą instrukcję ldr Twój program wykonuje warunkowo. To akurat jest oczywiste. Procesor bierze to, co jest. Taki ma program, to taki wykonuje ;p Powinieneś raczej zapytać dlaczego napisałem taki program ;p Otóż nie wiedziałem co robi instrukcja ldrlo. W opisie instrukcji ldr...
Rozmiar fraktala dasz np. 6400x6400 pikseli to będzie się liczył kilkanaście, kilkadziesiąt sekund (plik ponad 117 MB). Przy 117Mb pamięci może okazać się że to już nie będzie test procesora, ale dostępu do pamięci. A w starych kompach z małą ilością pamięci nawet obsługi swap. Teraz prawdę powiedziawszy...
Trochę się nie rozumiemy. Jeżeli edytujesz post dwa razy, a ja czytam już końcową wersję, to nie bardzo wiem co gdzie zmieniałeś i co właściwie jest aktualne. Poza tym nie zawracałbym głowy tym pytaniem, gdybym biegle pisał w C, znam tylko asm (za to wielu procesoów), więc wszystko co mi piszesz poza...
1. Nigdzie nie napisałem, że na pewno upadek AVR jest przesądzony, tylko, że jeśli Atmel jeszcze bardziej pokpi sprawę... 2. Dla mnie w avr-gcc kompletnym nieporozumieniem jest używanie rejestru r1 jako "rejestru zerowego", który jest rejestrem specjalnego przeznaczenia przy mnożeniu, przy lpm bezargumentowym...
No, to już coś. Teraz podobne funkcje dla assemblera zapisz dla mnożenia (MUL). Następnie zobacz, jak [url=]wczytywać liczby (klika przykładów z assemblera) - znów zapiszesz swoją funkcję zamiast readln. Podobnie postąp z wyświetlaniem liczb (również ten sam link co podałem). Na koniec wszystko zapisz...
Już mnie zmęczyło to tłumaczenie. Dlaczego niektórzy z Was czytają z jakimiś klapkami na oczach. Proszę przeczytać uważnie to co napisałem i nie wmawiać mi, że chcę zmierzyć coś przy pomocy machania nóżką. Tłumaczyłem już czym ma być machanie nóżką. A wiesz jak nas już zmęczyło tłumaczenie Ci na czym...
Witam! Mógłby mi ktoś podsunąć jakiś pomysł na rozwiązanie na następujące zadanie? W rejestrze mamy zapisane bity np R16=10110001. Należy wziąć dwa pierwsze bity słowa i wrzucić je na bramkę AND a wynik (jeden bit) zapisać w R17. Tak samo dla 3 pozostałych par bitów w R16 (3-4 5-6 7-8). W rezultacie...
To może podasz źródło swojej informacji ;) że jakiś tam ALU składa się tylko z kilku/kilkunastu bramek ? ;) Widocznie źle zrozumiałem to co o ALU jest napisane w Wikipedii :) Przyczyną dla której operacje te grupuje się w ALU jest to, że bramek logicznych potrzebnych do zaimplementowania wszystkich...
Ponieważ działań w systemie dwójkowym nie można wykonywać „od tak” na większości kalkulatorów, a takie obliczenia na programowych, wbudowanych w system, kalkulatorach są najczęściej męczące, autor postanowił zbudować swój kalkulator dwójkowy. Pozwala on na wykonywanie następujących...
Ja mówię o różnicach w ASM. Tych swoją drogą pomiędzy ATMega8 a 88 nie ma za dużo (w sumie nie widzę żadnych ale nie przyglądałem się specjalnie). A gdyby nawet były to rozwiązuje je kompilator C. Tak jak np. rozwiązuje brak rozkazów mnożenia w mikrokontrolerach ATTiny. Albo różnice w dostępie do rejestrów...
Rejestr na mnożnik, mnożną, rejestr przesuwający i sumator. Albo układ kaskadowy sumatorów, tutaj do mnożenia dwóch liczb czterobitowych:
PID na bloczkach LD to żaden problem. Proporcjonalna część to prosto, uchyb * wzmocnienie Różniczkująca część wymaga zapisania poprzedniej wartości uchybu do odpowiedniego rejestru i liczenie różniczki dyskretnej na podstawie czasu cyklu sterownika. Potem mnoży się przez wzmocnienie. Część całkująca...
Procesory AVR nie tylko mają szesnastobitowy rejestr a nawet mają trzy 8O (X,Y,Z), a lista rozkazów jest w zasadzie uboższa tylko o mnożenie i dzielenie, w zamian za to przy tej samej częstotliwości zegara są kilkakrotnie szybsze :D
tak pracują nie tyle RISCi co procesory z przetwarzaniem potokowym (nie mylić pojęć). Poza tym w AVRach jest EOR oraz uzupełnienie do jedynki-negacja bitowa (COM). Obie wykonywane w 1 cyklu i obie (i nie tylko one) wymagają znajomości "poprzedniej wart. rejestru (bitów)" Stary co ty wiesz o RISC'ach...
:? Potrzebuje schemat i opis prostego procesora 8-bitowego w ktorym bedzie zastosowana pamiec, rejestry, ALU które wykona działania arytmetyczne i logiczne (dodawanie. odejmowanie, mnożenie) za pomoc bardzo dziekuje
Pewnie chodzi o syntezery o angielskiej nazwie Direct Digital Synthesis. (DDS). Analog Devices robi gotowe układy. Ogólnie polega to na tym, że układ generuje adresy do pamięci zawierającej jeden okres sinusa. Generator adresu składa się z akumulatora (sumator+rejestr) dodający co okres próbkowania...
Witam! Potrzebuję przeskalować wejście analogowe %AI0001 4-20 mA. Wiem, że ten fragment programu to robi. Czy mógłby mi ktoś wyjaśnić jak to się dzieje, że używając funkcji mnożenia, następnie dzielenia i dodawania osiągamy zamierzony cel. Jakie przyjąć wartości Const aby wartości %AI0001 np....
W moim AVRStudio zajmuje tyle samo, co jest raczej całkiem normalne. :) Faktycznie biorąc pod uwagę ATMega8 to taki programik zajmuje ponad połowę flasha. Głównym problemem jest to funkcja: dtostrf(x,5,2,buf); To ona zajmuje większość flasha, bo przy jej okazji pakowana jest cała arytmetyka...
- brak możliwości bezpośredniego dodania stałej do rejestru A nieprawda. Można odjąć stałą. Można odjąć wartość ujemną... Dodatkowo, organizacja pamięci programu w słowa... bllee, komplikuje to trochę odczyt danych z pamięci programu... w 51 jest 16 bitowy DPTR i jest pięknie, a tu... A tu masz...
SHR, czyli Shift Right, binarnie przesuwa bity o podaną liczbę miejsc w prawo, z tego co pamiętam, nadpisując zerami, czyli zakładamy cx = 0000000000101011 teraz, po wykonaniu np.: shr cx,3 otrzymamy cx = 0000000000000101 | 011 jeżeli zatem wykonamy shr cx,16 , wszystkie bity powinny...
Co do porównania prędkości procesora i FPGA to można to robic porównując czas wykonywania się danych al;gorytmów, na przykład 1024-punktowego FFT. Najczęściej FPGA będzie bił procesor na głowę w szybkości ;) Przykładowo Spartan3 XC3S400 ma 16 mnożników 18-to bitowych, a co za tym idzie może wykonać 16...
Dziękuje za naprowadzenie mnie na właściwą ścieżke....:) Korzystając z tablic konwersji całe wygenerowanie łańcucha tekstowego, wysyłanego na LCD, powinno się zamknąć w kilku-kilkunastu cyklach maszynowych. Zaciekawiło mnie to bo w sumie wymiśliłem sobie taki algorytm: np. dec = 195 dla starszego...
Okej mam taki oto programik który realizuje mniej więcej moje założenie - trochę się naszukałem ale ile przy tym znowu nauczyłem ;) Config Lcd = 16 * 2 Dim Ad As Byte Dim Pa As Single Do Do ' początek pętli programu Cls ...
Dostaje dane o wilgotności z tego czujnika (12 bitów) i mam je zapisane w dwóch rejestrach. Poszukuje wszelkich materiałów dotyczących tego jak przeliczyć tą 12-bitową liczbę na wartość w % RH. Podobnie z temperaturą. Wogóle poszukuję przystępnych materiałów zawierających opisy procedur do mnożenia,...
Programy się zwykle pisze a nie robi :) Przy pisaniu programów musisz wykonać następujące kroki: 1. Zdefiniować problem W przypadku twojego kalkulatora musisz określić: - typ obsługiwanych danych - czy to będą liczby wyłącznie całkowite czy całkowite i ułamkowe (ogólnie mówiąc rzeczywiste) -...
Zasadę działania masz opisaną, a taki generator to się zwykle programowo realizuje na DSP (ze względu na mnożenie wymagane przy interpolacji). Bez interpolacji generatory można robić na akumulatorze sprzętowym (sumator+rejestr).
Ale poprzedni gość jest w błędzie bo język C sobie z tym nie radzi. zato wy chyba nie bardzo macie pojecie o czym gadacie... Przerwanie może przyjść w każdym momencie i przerwać wykonywanie jakiejs operacji np. przepisywania intów lub mnożenia doublów. przerwanie moze ci przyjsc nawet w...
zrobiłem juz rejestr przesuwny w prawo w lewo to tylko ze znakiem minus przesyłam kod mam nadzieje ze dobrze wszystko zrobiłem Proponuję kod wklejać używając znaczników teraz tylko problem z mnożeniem i dodawaniem. bo nie wiem czy to ma byz wszystko razem czy osobna. I od czego teraz zaczac???...
Witam, mam za zadanie napisać w verilogu układ, który oblicza wynik wyrażenia cos x, gdzie x jest podawany w formacie zmiennoprzecinkowym pojedynczej precyzji single, czyli bit znaku, 8 bitów wykładnika, 23 bity mantysy. Chciałbym się dowiedzieć głównie jak rozwiązać problem z tym zmiennym przecinkiem...
Sprawdź listing assemblerowy jaki jest generowany. Też miałem niedawno dziwny problem z GCC. Niby taki banalny kawałek kodu: dana = ADCW; dana *= 31940; a okazało się że "dana" mnożona jest ale przez puste rejestry :( Musiałem przed mnożeniem dać wstawki: asm("ldi r18, 0xC4"); asm("ldi...
No tak, to jest jasne, niemniej jednak szukam najlepszego sposobu ominięcia tego problemu (; Zwróć też uwagę, że wartość którą dostaje kod: 80004c4: 01100028 .word 0x01100028 jest jednak częściowo zoptymalizowana, ponieważ adresy pamięci SRAM zaczynają się od 0x20000000. Optymalizacja...
ax=5 ax=ax-2=5-2=3 bx=2 bx=bx-5=2-5... cf=1 dx:ax=bx*ax=65533*3=196599 (0002fff7h); cf=0 bx=1 bx=ax=65527 (0fff7h); ax=bx=1 dx=0 dx:ax=dx:ax/bx=1/... 01 00 00h => dx=1; ax=0; cx=ax=0 Oto twój kod kompilowany w głowie. Nigdy nie otrzymasz wyniku -1/9,...
long pomiar1; pomiar1=(long) ADC * 244 / 1000; Wartość rejestru ADC (ADCW jest dla asemblera, aczkolwiek to i tak to samo) należy zrzutować na typ o minimalnej długości 18 bitów, najbliżej (w górę) jest 32 bitowy typ long (właściwie to 31 bitów wartości dodatnich). Bez tego wyniki z ADC...
Witam. Mam pewne wątpliwości co do mojego projektu i szukam porady. Myślę, że wybrałem odpowiedni dział. Tak jak w temacie, zajmuje się projektem cyfrowej pętli fazowej ( Digital Phase Locked Loop) wg modelu który został zaprezentowany w artykule w załączniku. W części 3 artykułu, w punkcie B mamy podany...
To się liczy. Wymiana może zmieścić się w 100 ms, a czasem 3 s to mało. I tak i nie. Takie dane powinny sie znajdować w DTR urządzenia a liczenie to jedynie sumowanie czasów odpowiedzi lub np: mnożenie czasów odpowiedzi przez ilość odpytywanych zmiennych. 1s to tylko przykład. Czy w tym przypadku...
No, nie całkiem ... Dwójka to podstawa systemu binarnego, a o taki opiera się technika cyfrowa. Wszystko, co jest wielokrotnością dwójki łatwiej się przetwarza. W szczególności dotyczy to dzielenia. Dzielenie przez 2 to poprostu przesunięcie zawartości zmiennej (rejestru) o jeden bit w prawo. Dzielenie...
W załączniku program-interfejs do prezentacji danych pomiarowych na porcie TCP (LabView nie łączy się z urządzeniem na USB tylko z tym portem), i program dla mikrokontrolera. Pomiar pojemności to po prostu mnożenie czasu rozładowania (w godzinach) przez prąd rozładowania (stały). Nie widzę potrzeby...
A mi się wydaje że o tym decyduje czas wykonania instrukcji. AVR do operacji na "rejestrach" 16-to bitowych potrzebuje więcej cykli co świadczy o tym że procesor coś musi modzic żeby na tych 16-tu bitach zaoperować. Z kolei 16-to bitowy procesor operujący na 8-miu bitach na 99% nie będzie wykonywał...
Tak, na pewno będzie dobrze... Twój program przecież nie wykorzystuje dzielenia, mnożenia, operacji na dużych liczbach, kopiowania dużych obszarów itp, no nie? To też są funkcje biblioteczne... NIGDY nie masz gwarancji, że kompilator nie dołączy sobie jakiejś typowej funkcji, która korzysta z rejestrów. 4\/3!!
Ja bym zrobił tak: Rejestr(y) wejściowe. Rejestr(y) wyjściowe. Rejestr konfiguracyjny/statutu Wklepujesz dane do rejestrów wejściowych. Do bitów powiedzmy 0...2 rejestru statusu wklepujesz zakładaną operację. Np: 000: dodawanie 001: odejmowanie 010: mnożenie 011: dzielenie 100: pierwiastkowanie Zapis...
Faktycznie prymityw. Dobre dla początkujących. Większość konstrukcji to 8bitowce. Zastanawiam się nad czymś szerszym powiedzmy 32-bity. Coś takiego (choć nie ukończonego) znalazłem tu: [url=]TREX was an experimental 32 Bit TTL RISC CPU Na stronce autor opublikował opis, listę rozkazów, schematy i pcb....
Dodawanie i odejmowanie z przeniesieniem to chyba najprostsze operacje ;) i wcale nie takie wolne. Mnożenie też jest szybkie. Zdecydowanie ładowanie zmiennych do rejestrów może być dłuższe. Jak chcesz mieć wydajnie to nie mierzysz czasu i tyle :) Jeśli pomiar trwa więcej jak 3% algorytmu, to imho...
Co do rejestrów 32 bitowych... W oprogramowaniu MT PROG są one widziane jako np. DREG1H, DREG1L. Nie można się do nich odwołać bezpośrednio jako DREG1 Z dokumentacji: Mnożenie X przez Y zapisz wynik (rejestr) = pobierz X (rejestr) * pobierz Y (rejestr) Przekroczenie zakresu sygnalizowane jest...
A jakaż to różnica między T85 i M32 przecież to ten sam rdzeń tylko różne peryferia... Pokaż mi w ATtiny85 sprzętowe mnożenie... :P Do do mieszania w RAM, to miewałem takie przypadki, najzabawniejszym było pomylenie "ldi XL, XX" z "lds XL, XX" (w inicjalizacji pętli) przed zapisem indeksowym "sts X,...
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...
Witam, W celu zrealizowania komunikacji z DS18S20 skorzystałem z następujących kodów dostępnych na forum: Kod od freddiego do konfiguracji GPIO: [syntax=c] #define GPIO_CRx_MODE_CNF_mask 0xf //4 bity - 2 bity na mode i 2 bity na configurację /*-----------------MODE-...
Witam, Może spróbuję L #ProgramNr L 1 -I //Operacja odejmowania #ProgramNr - 1 L 242 *I //Operacja mnożenia (#ProgramNr-1)*242 L 0 +I //Dodawanie [ (#ProgramNr-1)*242] + 0 T #Temp_1 //Zapamiętuje wynik wszystkich operacji...
Próbuję ogarnąć używanie FPU z rdzenia Cortex-M4 w GCC. 1. Mam toolchain linaro, multilib: >arm-none-eabi-gcc -print-multi-lib .; thumb;(at)mthumb ...
żeby użyć sld 4 albo 5 jeżeli chce 2 lub 4 x co powoduje że nie potrzebujemy dalej mnożenia przez 2(W) albo 4(DW) dalej jeżeli potrzebuje przesuwnego rejestru danych czytającego dane z czujnika, wcześniej kombinowałem AN M0.0 // generator BEC L MD 10 L 2 *d T MD 10 AN I1.0 BEC L...
Witam. Mam oto problem z pozoru dośc prostym programem bo tylko z sumą 2 cyfr, już nawet nie liczb, ale i tak znajdzie się kłopot dla malo doświadczonego 'programisty' :P Tak jak w temacie program ma za zadanie sume 2 cyfr(później będzie odejmowanie i mnożenie), ale pokolei oto kod: [syntax=asm].model...
Bym się rozpisał na ten temat, ale może kiedy indziej :P Dla fanów C/C++: "The Design Warriors Guide to FPGAs" i wiele innych.
Witam serdecznie, podczas pisania programu na PLC Fatek'a napotkałem pewien problem. Chciałbym aby na podstawie czasu pracy palnika olejowego oszacować bieżące zużycie paliwa wiedząc, iż dysza która jest aktualnie zamontowana spala 0.4 galona na godzinę (1.51 litra). No i tutaj pojawia się problem...
Intryguje mnie jeszcze jedna rzecz. Mianowicie podczas konwersji wartości ADC na wartość napięcia widniejącą na LCD wkrada się mały błąd w wyświetlaniu (tak mi się przynajmniej wydaje). Otóż gdy wartość zmiennej pm wynosi 248 to na LCD widzimy 8.6V a powinniśmy widzieć 8.06V jest to różnica połowy...
Podpowiedź: Użyć bloków UPCOUNTER i Timerów (w zależności co jaki odstęp czasu chcesz zwiększać wartość na wyjściu), do tego jeszcze MUL - mnożenie wartości z upcountera. Lub inaczej, wykorzystując zmienne: #T_10ms, #T_100ms, #T_sec i blok dodawania. Trzeba będzie też użyć bloku porównania GT bo na...
Jak dotychczas nikt z fanów Linuxa nie odpowiedział na pytanie o powód mnożenia dystrybucji tego systemu i niekompatibilności między nimi. Podobnie: dlaczego w Linuxie nie można instalować sterowników urządzeń tak prosto, jak to dzieje się w Windows? Po pierwsze nie ma "powodu mnożenia dystrybucji...
W przerwaniu nie miało być nic. A co to za funkcja operująca na buforze?? [syntax=c]switchBuffors();[/s... jaka logika myślenia skłania do takiego pisania programów, użyję porównania: to jak drapanie się po lewym uchu prawą nogą ;). I jak napisałeś wychodzi "audio sieczka" bo tak naprawdę...
Dokładnie. Poza tym w C masz sprawę ułatwioną. Zamiast samemu pisać procedury na np. mnożenie liczb, zastanawianie się jak i skąd mają być wczytane, do jakich rejestrów, piszesz po prostu: a=b*10; C jest moim zdaniem dużo prostszy od ASM w pisaniu kodu, bo działasz na wyższym poziomie. Ale jak sam napisałeś...
Podałeś przykład z mnożeniem niedostosowanych do FFP liczb, to ja podam kontrprzykład: for(float i=0;i<10;i+=0.00000001); Zadziała z float? Oczywiście nie. O czym to świadczy? Wyłącznie o tym, że programując trzeba myśleć. Rozwiązanie problemu który przedstawiłeś zajmuje jakieś 3 sekundy -...