Nie jestem przekonany co do tego, że użycie tablicy z maskami poszczególnych bitów zoptymalizuje dostęp: w moich wstawkach liczenie maski to dokładnie 7 cykli na dwóch rejestrach(załadowanie 1, jeśli bit1 ustawiony to załadowanie 4, jeśli bit0 ustawiony to przesunąć w lewo o 1, jeśli bit2 ustawiony to zamienić połówki), rozwiązanie z ładowaniem maski...
Linker nie tylko może żonglować zmiennymi, ale wręcz musi to robić. Dopiero na etapie linkowania zmienna uzyskuje konkretny adres, wcześniej to tylko symbol. Twoje rozwiązane jest ryzykowne, ryzyko to jest zależne od tego jak jest skonstruowany makefile. tadzik85 słusznie pisze, żeby przeusnąć data. Nie trrzeba w tym celu ingerować w skrypty linkera,...
Źle to wykonałeś. Zrobiłeś obraz do pliku i wgrałeś obraz partycji (nie dysku) na dysk. Wobec powyższego system nie widzi partycji - błędna tablica partycji a właściwie jej brak. Partycja nie może zaczynać się od sektora 0 (trzeba było przesunąć o powiedzmy jak dawniej 63 sektory lub 2048 względem początku dysku). Jak masz na innym dysku ten obraz to...
Co dokładnie nie działa? Z tego co zrozumiałem chcesz przesunąć tablicę "w lewo" o trzy pozycej, a te które wypadną przepisać na sam koniec, tak? Czy na odwrót? Bo w pętli przyjmujesz inny kierunek, a te trzy elementy przepisujesz w przeciwnym. Jeśli w lewo to powinno być: [syntax=cpp] int bufor0,bufor1,bufor2; bufor0=tablica[0]; bufor1=tablica[1];...
W sensie wszystkie cyfry w lewo przy użyciu operacji bitowych? Jest możliwe, choć mało intuicyjne. Zaczyna się od tego, że taka tablica to ciąg bajtów. Bierzesz pierwszy jej element, traktujesz jak słowo (2 bajty) i przesuwasz w lewo o 8 bitów. W ten sposób na pierwszym miejscu znajdzie się drugi element tablicy. Następnie bierzesz drugi element, traktujesz...
Ten twój kod, wybacz proszę, ale to bełkot... Rozumiem, że zaczynasz przygodę z programowaniem, ale proponuję jednak przysiąść do tego. Jedno z setek dostępnych rozwiązań twojego problemu, może wyglądać np. w następujący sposób. [syntax=delphi]program Project1; {$APPTYPE CONSOLE} uses SysUtils; var tablica : array of integer; tablica_wynik : array of...
Rozumiem, że jeżeli tablica zawiera {1,2,3,4}, to po przesunięciu cyklicznym ma zawierać {4,3,2,1}, a tab. {1,2,3,4,5}: {5,4,3,2,1}. Przedstawiam kod napisany pod Dev-C++. #include <iostream> #include <conio.h> #include <math.h> using namespace std; main() { const int N=7; int t[N]={1,2,3,4,5,6,7 }; int...
Wydaje mi się że nie "przesunąłeś" tablicy wektorów przerwań: SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; w pliku system_stm32l4xx.c
http://obrazki.elektroda.pl/9090946500_1... Witam. Chciałbym dziś zaprezentować niewielkie, pokazowe urządzenie. Idea zbudowania takiego cyfrowego portfolio sięga czasów, gdy gdzieś tu na elektrodzie pojawiła się "Elektroniczna Wizytówka". Bardzo zaciekawił mnie ten projekt, lecz większość podeszła krytycznie do nazwy "wizytówka". Postanowiłem...
Czy przewidziałeś wyłącznik bezpieczeństwa ("tzw. grzybek")? Jest to element obowiązkowy, a tu go nie widzę. Oczywiście, grzybek (wyłącznik awaryjny) tak jak przyciski załącz wyłącz (sterujące stycznikiem G) znajdują się w zewnętrznej kasecie sterującej. Wszystko wykonane zgodnie z przepisami bezpieczeństwa: grzybek oraz krańcówki osłon są podłączone...
Daj nowy region pamięci tylko na przerwania, Flash zaczniesz wyżej. Ja dałbym nawet nowy region na ów eeprom. mógłby być programowany wartościami domyślnymi, albo po prostu przesuń operator . za przerwaniami, choć to mało eleganckie.
Odpowiedź jest prosta (wykonanie niekoniecznie): trzeba zmodyfikować stos. Wyciąć ramki, które zostały utworzone po rozpoczęciu zadania, aktualną przesunąć i zmodyfikować adres powrotu z przerwania (albo aktualną też wyciąć i zrobić skok). Po powrocie przywrócić kontekst. Jest to oczywiście sposób niezalecany. Może pokaż kod... Coś takiego robi obsługa...
Witam.Musisz odłączyć tablicę z wyłącznikami od obudowy i wówczas będziesz miał dostęp do podzespołów. W tym celu wykręć blachokręt z tablicy i z prawej strony między tablicę , a obudowę wsuń płaski wkrętak nachylając go ku dołowi , tak aby tablica uniosła sie lekko do góry , jednocześnie uderzaj delikatnie w lewy jej bok , aby przesunąć ją w prawo...
Faktycznie, nie zauważyłem działu ogólnego, przepraszam. Dzięki Dr_DEAD, jest to jakiś punkt odniesienia. Muszę mieć około 125000 wartości sinusa na przedziale (0, 2pi), cosinus da się przesunąć o pi/2, ale potrzebny jeszcze arcus sinus, więc tablica floatów musiałaby być rzędu 2MB, dla double 2x większa... Oczywiście to rozwiązanie oprócz szybkości...
Sam kiedyś próbowałem się dowiedzieć, czy się da.. umieszczenie 256 bajtów w pamięci programu pod stałym adresem nie udało się - w asemblerze wymuszanie adresów było względne do pliku obiektowego, po linkowaniu wszystko się przemieszczało... Rozwiązaniem może być ("może", bo nie próbowałem) dodanie sekcji i wskazanie miejsca w którym ma ona być umieszczona...
Niestety tak prosto nie jest. Zasadniczo przy tych rozważaniach można operować na ułamkach albo na liczbach całkowitych. Jeśli mówimy o tych pierwszych, to wtedy Twój krok dX jest ułamkowy i całą filozofią jest wyznaczenie X0 - jako całkowitej wartości X - i X1 - jako wartości o 1 większej o X0 (z uwzględnieniem tego co stanie się na końcu tablicy)....
Poczytaj w pomocy o instrukcjach: DATA , RESTORE, READ. Kiedyś robiąc skomplikowane menu używałem tego do przechowywania stałych tekstów/opisów. Wszystkie były tej samej długości. Aby nie używać SELECT CASE zrobiłem wstawkę asemblerową. O ile dobrze pamiętam rejestry R8 i R9 są używane jako wskaźnik dla funkcji READ. Możesz też wszystkie swoje dane...
Jeżeli korzystasz z jakiegoś programu matematycznego, to zajrzyj do pomocy, przy fft() (albo cfft(), jeżeli program ma taką osobną funkcję) powinien być przykład zastosowania takiej funkcji centrującej. Jeżeli natomiast upierasz się, żeby to zrobić ręcznie, czy też nie korzystasz z tego typu programu, to wynik zależał będzie od implementacji. Najczęściej...
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...
OK, już piszę jak to działa. W moich programach pod mikrokontrolery format tablicy ze znakami jest taki: na początku, pod offsetem '0' wartość która informuje o wysokości czcionki (czyli ile znaków składa się na jedną czcionkę. Pod offsetem '1' znajduje się dana informująca o szerokości znaku, i dalej wartości wiersz po wierszu. Tych danych jest dokladnie...
załóżmy N=8 http://obrazki.elektroda.net/65_12469953... Mój algorytm ...i wtedy mnożąc jest przez kąt fazowy otrzymujemy takie same operacje jak w DFT(N) miałem na myśli że teoretycznie to jest to samo bo licząc DFT mamy 8 mnożeń zespolonych, a licząc w FFT każdą próbkę oddzielnie mamy podobną liczbę mnożeń tylko że wcześniej wykonane mnożenia...
TO masz pecha. BO początku pamięci flash nie da się tak wykorzystać.
Najprostsze rozwiązanie. Tworzysz w pamięci programu tablicę funkcji sinus (na 8 bitach). Tworzysz trzy wskażniki do danych w tablicy, przesunięte o 1/3 rozmiaru tablicy. Ze zmienną częstotliwością (zmienianą np. przerwaniem od timera) odczytujesz wartości z tablicy i wystawiasz na trzy porty. Zwiększasz wskaźniki. I to chyba cały algorytm
(at)GanzConrad Prościej nic nie kopiować, a tylko wprowadzić wskaźnik na pierwszą wyświetlaną linię i zadbać o jego zawijanie po dojściu do końca tablicy. W takim układzie przesunięcie o jeden wiersz to tylko zmiana tego wskaźnika.
Dobrze by było podac w czym programujesz asembler, C++, bascom??
Wpisujesz w nim: - w pole selektora- deskryptor segmentu wykonywalnego znajdującego się w tablicy GDT, bądź też w aktualnej tablicy LDT, - przesunięcie, - na koniec dla DPL=3 parametry = 1110111000000000
Zatem co nie działa w tym przesunięciu? Chyba, że sugerujesz się błędnym wyświetlaniem tablicy przed operacją i tą po operacji?
DEC 1 jest w złym miejscu. Przesuń przed *D i będzie OK.
Nie znam składni pascalowej, więc napiszę w pseudokodzie: a = 10000011; b = 10000000; for (i=0;i<8;i++) { if ((a and b) == 0) then tablica[i] = false; else tablica[i] = true; przesuń "b" bitowo w prawo; }
(at)zumek Dzięki za kod, ale nie do końca wiem jak on działa. Szkoda :( W1 to tablica wskaźników na W, przesunięta o dwa miejsca? Mylisz się :( W1 , to jakby wskaźnik na W powiększony o 1 element tablicy W , czyli 2 bajty . Natomiast tablica wskaźników , to ... nie z tej bajki ;) A dokładnie rzecz ujmując , to Bascom definiuje tablicę W1 , w obszarze...
Tym razem znów wprost ze standardu: Pomiędzy wskaźnikiem a tablicą jest taka różnica, że wskaźnik jest zmienną, a nazwa tablicy nią nie jest. Objawia się to właśnie tym, że wskaźnik możesz sobie przesunąć, lub przypisać mu adres wprost. Z nazwą tablicy tego nie zrobisz. Chyba, że Albert miał na myśli: (*tablica)++ :) -- Jak ktoś jest ciekawy: Niby &string8...
Przesunięcie partycji będzie trwało ok. 30 minut. Skopiowanie wszystkiego z kopii po jej zamontowaniu pewnie podobnie lecz może się okazać, że coś pominiesz przez brak uprawnień. I tak co do ścisłości. Tablica nie jest uszkodzona. Przesunięcie partycji polega na skopiowaniu odwrotnym przez np. DMDE obrazu na dysk z podaniem innego (nowego) sektora startowego,...
Dlaczego przesuwasz w drawgraph a nie odrazu w ifie? Pierwsze powinieneś przesunąć a potem dodać na koniec.
Wróćmy może do teorii... for(exp_1;cond;exp_2) Kolejnością wykonywania jest: exp_1 cond exp_2 cond ... Tak więc przed wystąpieniem warunku zakazującego wykonania pętli (czy bardziej właściwie: przed niespełnieniem warunku wykonania pętli) następuje przesunięcie wskaźnika poza tablicę (10 element). Tak więc, aby powrócić na właściwy w kolejnej pętli...
Pomyliłem się, tablica jet pod adresem 0x480. Przesunąłem bity w niewłaściwą stronę. Taka sekwencja będzie prawidłowa: [syntax=C] LDI ZH,HIGH(C64_Ins<<1) LDI ZL,LOW(C64_Ins<<1) LSL R16 ADD ZL,R16 ADIW ZL, #0 ;korekta dla ZH [/syntax]
Z tym że uciekają mi tutaj 2 ostatnie zmienne, da się coś z tym zrobić? Przesuń tablice. Wypełnij reszte jakąś wartością(0,random). Wyśweitl tablice.
Dowiedziałem się od fachowca, że mam przesuniętą tablicę partycji. Nie wiem co z tym zrobić
Dokumentacja funkcji Read nie pozostawia wątpliwości co do znaczenia offsetu: Offset: The byte offset in array at which the read bytes will be placed. Czyli: offset (przesunięcie) w bajtach w tablicy, w której będą umieszczane odczytywane bajty . Jeżeli chcesz osiągnąć taki efekt jak piszesz, to musisz przesunąć pozycję "kursora" w strumieniu przed...
W petli bedziesz zwiekszał o rozmiar elemetu w tablicy ( bajt ) a przesuniecie dodaj najpierw do zmiennej adres (czyli adres do innych rejestrów o ile nie da sie dodawac do zl,zh) do tego dodajesz poczatkowy indeks i potem dopiero w petli adiw dodajesz. [syntax=avrasm] LDI r1,poczatek clr r0 ADD zl,r1 ADC zh,r0 [/syntax] Cos w tym stylu.
OK. ale co będzie jak w ciągu tych 8 cykli multipleksu (np. w cyklu 5) zostanie przesunięta tablica napisu? Będzie smużyło :( Wklej algorytm multipleksowania.
Możesz napisać prostą funkcję wyciągającą dowolny bit... Parametrem może być nawet numer bitu z całej tablicy (licząc od pierwszego). Tworzysz maskę 1b przesuniętą w lewo o numer_bitu modulo 8. Mnożysz logicznie razy numer_bitu dzielony (całkowicie) przez 8. Jeśli wynik>0 to znajduje się tu bit 1.
Nie próbowałeś wszystkich, bo jedna na pewno działa :) Z tego co zrozumiałem chodzi o wycięcie środka i przesunięcie końca tam gdzie środek się zaczynał tablica o dowolnym rozmiarze p poczatek obszaru do wyciecia k koniec obszaru int i; for (i=p ; i < k-p ; i++) { tablica[i] = tablica[k+i-p]; } tablica zmniejsza...
Może lepiej byłoby zrobić sumę 8 lub 16 elementów z tablicy i zamiast dzielić przez 10 ( co zajmuje kilkaset operacji procesora) podzielić przez przesunięcie
Witam, bardzo dawno nie używałem tego procesora ale coś tam jeszcze pamiętam. Po pierwsze. Wystarczy Ci tylko jedna pętla i jedna tablica "znaki". W rozkazie MOVC ... rejestr DPTR trzyma adres bazowy a akumulator przesunięcie. Możesz więc jednorazowo, na początku podstawić adres tablicy do DPTR a następnie "jeździć" po niej akumulatorem (przesunięciem)...
Witam Opóźnienie może wynikać z killku faktów. Po pierwsze czujnik w zależności od środowiska w jakim mierzy temperaturę w różnym czasie reaguje na zmianę temperatury. Pisze o tym w nocie katalogowej LM-a. Po drugie problem może stanowić obudowia czujnika. Po trzecie trudno powiedzieć jak napisałeś program. Biorąc pod uwagę wspomniane czynniki może...
kolego nie potrzebujesz żadnych dodatkowych zmiennych. Jak masz elementy swojej tablicy powiedzmy(binarnie): x 00 + 000000 11; czyli: x i i z i+1 .
Najłatwiej kod bootloadera pisać jako osobny projekt - wtedy nie pojawiają się żadne konflikty, a docelowo i tak podczas aktualizowania nie wysyła sie już bootloadera. MarcinKawka : Twój kod wykonuje dwa odwołania do MCUCR w celu zmiany lokalizacji tablicy wektorów przerwań. Wstawka zawiera błąd, ponieważ nie informuje kompilatora o zniszczeniu zawartości...
Na początku flasha masz tablicę wektorów przerwań. Za pomocą NVICa możesz przesunąć tą tablicę lub przenieść do RAM. W załączniku masz przykładowy plik z tablicą wektorów przerwań
Witam robię po prostu DFT dla interesujących mnie prążków mam rację? Co do tablicy cosinusa, mogę zamiast tablicy cosinusa używać przesuniętej o pi/2 tablicy sinusa.
Piszę z pamięci, może być gdzieś błąd: char dane = {"hgtsdgshd... itd. lub szesnastkowo 64kB danych, albo więcej"}; To tylko deklaracja. Reszta programu nie stwarza problemu. Czegoś takiego kompilator nie deklaruje. Wywala błąd i koniec. Próba deklaracji dwóch osobnych tablic kończy się tym samym - przekroczenie rozmiaru segmentu danych. Być może jest...
bascom przesunąć tablica przesunąć wartość tablica przesunąć fazowy
manta supreme zmiana dekodera system radiowy namierza
egzamin zawodowy sharp parowanie pilota
Płyn chłodzący w kolektorze wydechowym traktora - przyczyny Instrukcja obsługi pralki Ariston Margherita AL848TX