To wszystko prawda, aczkolwiek wydaje mi się, że różnie to widzą różne kompilatory. Ofszem Acc jest nazwą rejestru SFR i można ją używać jak każdej innej zmiennej czyli w rozkazach z adresowaniem bezpośrednim (direct). Oczywiście jeśli to możliwe to lepiej jest korzystać z rozkazów wykonywanych na akumulatorze. Ale czy każdy kompilator zrozumie inc...
Wyprowadzając clk z portc można zyskać 1 cykl ( 15 cykli zamiast 16) przy okazji nie wyprowadzając zbędnej części bajtu na pozostałe piny. ld r17.50 lot: ld r16, x+ mov r18, r16 andi r16, 0x0F out PORTC, r16 ori r16, _BV(clk) out PORTC, r16 swap r18 andi r18, 0x0F out PORTC, r18 ori r18, _BV(clk) out PORTC, r18 dec r17 brne lot andi...
https://obrazki.elektroda.pl/3928983600_... Opiszę naprawę dość rzadkiej konsoli, polegającą na odtworzeniu schematu pierwowzoru, zaprojektowaniu i wykonaniu płyty głównej i dalszych krokach niezbędnych do przywrócenia jej życia i funkcjonalności, w których zastosowałem swoją nowatorską metodę. Będzie więc coś dla miłośników retro,...
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...
https://obrazki.elektroda.pl/5680051600_... W tym artykule opiszę powód wymyślenia oraz konstrukcję testera do kart pamięci microSD który posłuży to sprawdzenia pewnej ciekawej własności kart. Przyczyna powstania Karty MMC/SD/microSD oprócz swoich naturalnych zastosowań są też lubiane przez miłośników mikrokontrolerów z kilku powodów:...
(...) (*(char **)(param_1 + 4), "rb"); if (pFVar1 == (FILE *)0x0) { lVar3 = 0; } else { fseek(pFVar1,0,2); lVar3 = ftell(pFVar1); fclose(pFVar1); } printf("nowy rozmiar %d\r\n",lVar3); } (at)__security_check_cookie(at)4(local_4 ^ (uint)&pFStack_28); return; } Wstępna ocena dostępnych informacji Pytanie dotyczy wielu kwestii: 1. Potencjalne wady...
Opis problemu wskazuje na to, że powinieneś w Startup Config ustawić początkowe wartości kanałów na -1, tj. na "remember last state". Dzięki temu moduł będzie pamiętać poprzedni stan i będzie poprawnie raportować zmiany. Nie martw się o zużycie pamięci flash, system zapisu zmiennych optymalizuje cykle erase flash (zapisuje w blokach po 64 bajty a dopiero...
Cykle 1, 2 oraz 3 nie mogą miec takiego samego A0 bo kodyu tych rozkazów leżą one obok siebie w pamięci. Zatem A0 nie będzie stały przez 7 cykli. Popraw się. Wstępna ocena dostępnych informacji Użytkownik zwrócił uwagę na błąd w poprzedniej odpowiedzi dotyczący maksymalnej liczby cykli, podczas których procesor 6502 może nie zmieniać stanu linii adresowej...
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...
http://obrazki.elektroda.pl/5313552500_1... Sterownik włącza/wyłącza do 8 urządzeń grzewczych i chłodniczych. Stan wyjść zależy od: temperatury mierzonej w dowolnej liczbie punktów, wewnętrznego zegara czasu rzeczywistego, programu grzania i chłodzenia przechowywanego w pamięci EEPROM. Architektura sterownika Sterownik jest oparty na...
Zgłosiłeś słuszną uwagę, ale nasz system pamięci flash jest bardzo elastyczny, jeśli chodzi o zapisywanie stanu. Wykonujemy wiele zapisów flash na jeden cykl kasowania, dzięki systemowi zaprojektowanemu przez współtwórcę. W obecnym stanie rzeczy, o ile się nie mylę, rozmiar sektora wynosi 4096 bajtów, a my zapisujemy 64 bajty (lub mniej więcej?) Na...
Po znalezieniu kolejnych błędów czas na coś nowego - a czasami są one tak ciekawe, że znajduje je tylko przez przypadek, jak np. to, że sprawdzając czy liczba 32 bitowa jest równa zero sprawdzałem tylko jej najmłodszy bajt - chyba z lenistwa. Tą liczbą był numer klastra pliku w FAT32 - wszystko działało dobrze, ale przy jednej piosence się sypało, a...
(at)helmud7543 Znalazłem SMART, a jednak zrobiłem, to jest zrzut przed tym zanim zabrałem się do zerowania dysku, chyba zrobiłem bo martwiły mnie parametry 197 i 199, ale tak jak mówiłem nie było żadnego reallocated sector. https://obrazki.elektroda.pl/5404439400_... Aktualizacja sytuacji dla zainteresowanych. Dysk nadal testowałem...
Musisz policzyć wszystkie cykle rozkazów, zanim ustawisz TL0 (samo ustawianie też trwa 2 cykle). Natomiast jeśli wyliczona wartość TL0 odpowiadająca Twojemu zadanemu okresowi przerwań kończy się na zero (X0h), mozesz podczas wykonywania przerwania "w locie" zmienic 4 najstarsze bajty (rozkazem ORL TL0, #X0h). Możesz również zastosować drugi tryb ustawienia...
Nie rozumiem o jaką pomyłkę Ci chodzi? Normalnie RCALL to 3 cykle a RET 4, sumarycznie 7. Tutaj masz RCALL 4 cykle a RET 5, więc masz 9 cykli. Przeglądając noty można natrafić na: atmega644, "5.8.1 Interrupt Response Time", drugi akapit wyraźnie mówi o tym, że PC ma trzy bajty (mimo że faktycznie górny bajt jest nieużywany, brak nawet rejestru EIND)...
uzylem 2X HYB514256B-70, co daje czas cyklu 130 ns. Mam trzy typy cyklu: zapis CPU=>RAM, odczyt RAM=>LCD, IDLE. Cykl zapisu zajmuje 3 cykle zegara, cykl odczytu zajmuje 5 cykli zegara, cykl IDLE zajmuje 3 cykle zegara. FSM realizuje schemat tak: r0l ) read ( 5 clock cycles ), r4h ) if write then goto w0l, else goto i0l; w0l ) perform write to RAM (...
Coś mi się zdaje że przywiesza się odczyt. Pewnie zmienia się sektor i procesor musi długo zajmować się szukaniem danych zanim odczyta ten jeden czy 16 bajtów. Przydał by się dłuższy bufor. Ale po takim czymś program powinien wracać do normalnej pracy więc jeżeli masz całkowitą przywiechę to nie gra coś jeszcze. Miałem już przypadek że przerwanie w...
Śmiem wątpić... Pętla kopiująca bajt po bajcie będzie w skrócie wyglądać tak: 1) weź bajt czternaście instrukcji . Nie można pominąć faktu, że instrukcje pobierające wartość (ldr,ldrb) i zapisujące wartość (str,strb) trwają po 2 cykle zegara, niezależnie od tego, czy pracują one na bajcie, czy na dwu-słowie . Przy pracy "bajtowej" 15x wykona się dwucyklowy...
Witam. Buduję pewien system zarządzany przez 2 odrębne mikrokontrolery. Jeden z nich to Arduino Uno R3, drugi specjalistyczny sterownik (nie wyposażony w port RS) realizujący cały program w pętli z czasem powtórzenia deklarowanym na starcie (domyślnie 20ms). Po zrealizowaniu pętli sterownik jest bezczynny do czasu upłynięcia czasu cyklu, czyli prędkość...
Proszę o pomoc w rozwiązaniu zadań niżej moje rozwiązania: 1. Na wejście 8-mio bitowego przetwornika ADC podawane jest napięcie wzrastające liniowo od zera do wartości 10V z szybkością wzrostu 1 V / minutę. Proszę przyjąć, że ADC „próbkuje” sygnał co minutę i podać wartości rejestru odczytu ADC (binarnie, lub szesnastkowo) w kolejnych 10...
I z jaką prędkością "lecą" bajty po magistrali? W tej chwili maksymalna prędkość magistrali (z jaką prauje razem z obsługą rozkazów itd ) to 95 kB/s. Protokół nie zawiera żadnych zabezpieczeń antyzakłóceniowych. Wysłanie rozkazu wygląda tak: MOV P1,#DANA NOP NOP NOP NOP SETB P1.7 Dane są takie, że najstarszy bit jest zawsze "0" co powoduje wywołanie...
Jasne ,że zdradzę ,bo nie mam nic do ukrycia . Myślałem,że problem tkwi w wiadomym miejscu :) Program jest przeze mnie modyfikowany,ponieważ na oryginalnych bibliotekach\źródłach książkowych i z forum nie działa mi z żadną kartą :/ [syntax=c] unsigned char SD_INIT(void) //Inicjalizacja karty SD { unsigned short timeout=4096; unsigned char status_R1=0;...
Przy UART mamy 3 bity na ramkę, a więc 260 kHz. Przy 16 MHz daje to 62 cykle procesora na przerwanie - wątpię, czy przy programowaniu w C ATmega ma szansę się wyrobić. Podwójny bufort UART tu nie pomoże, chyba, że w przerwaniu dorzucimy aktywne oczekiwanie, co wygląda śmiesznie, ale zmniejsza liczbę przerwań o połowę kosztem w tym przypadku dodatkowych...
O to napisany program w asembblerze dla '51. Niestety nie chce wyswietlać mi polskich znaków, czy procedura ładowania polskiego znaczka jest dobra, czy popełniłem gdzies błąd. Prosze o porady i wskazówki. lcd_rs equ p3.7 ;sygnal RS dla LCD lcd_dac equ p1 ;port danych LCD ;---------------------------------------... org 0h...
Witam , mam nadzieję iż nie zanudziłem bez reszty.. W zestawieniu z moimi "dokonaniami asm." kolega michalko12, jest najbliższy temu co ja kiedyś robiłem . Oto wersja asm z przełącznikiem kompilacji aby kompilować jako samodzielny plik - kto chce ->ten może :D ( ta wersja to 16-timerów, 16-nasto bitowych, każdy cztery tryby konfiguracji, oczywiście...
CLK w SPI może mieć dowolne czasy więc przerwy pomiędzy i w trakcie wysyłania bajtu są bez znaczenia, istotne są zbocza i stan linii danych w tych momentach. SPI jest dlatego praktyczne bo może być przerywana transmisja innymi zdarzeniami. To że nie wygląda to "ładnie" to nie ma znaczenia. 19 bitów być może można wysyłać sprzętowym SPI jako 24 bity...
Zmieniając typ na int w oryginalnym kodzie przenosisz 40 bajtów (20*2) na każdy po 4 cykle (2 wczytanie, 2 zapis) = 160 cykli. To jest minimalny czas, poniżej którego nie da się zejść. Jeśli memcpy działa szybciej, znaczy nie kopiuje wszystkich 40 bajtów (tylko 20 bajtów - jeśli nie zmieniasz trzeciego argumentu w wywołaniu funkcji), sam kod to wtedy...
Ok ,a czy nie da sie odrazu zapisac sprawdzania przycisku pomijajac zaladowanie stanu portu do akumulatora ?? np : sprawdz: // petla sprawdania przyciskow P0-P7 jnb P2.0,wys0 // jesli P2.0 jest 0 skok do wysw0 jnb P2.1,wys1 jnb P2.2,wys2 . . . itd (...) Można sprawdzać stan linii portu 2 w ten sposób, nie trzeba wykorzystywać akumulatora. mov acc,...
Ad 1. LD(IX+01),#23 - rozkaz 4-bajtowy: - 1 bajt - wartość DD (prefiks mówiący o tym że rozkaz dotyczy rejestru IX), - 2 bajt - wartość 36 (rodzaj operacji), - 3 bajt - wartość 01 (przesunięcie względem wartości z rejestru IX), - 4 bajt - wartość 23 (ta wartość będzie zapisana w komórce pamięci o adresie (IX+01). Rozkaz wykonywany jest w czasie 5 cykli...
dopisywać można ale zmieniać to inna para kaloszy . To zobacz opis WRITE BYTE na stronie 3 - Robisz operacje write, wartość bajtu jest zatrzaskiwana w rejestrze wewnątrz pamięci i startuje cykl kasowanie bajtu i ponowny zapis który dla cytowanej pamięci trwa do 200us z tego wychodzi zapis całości bajt po bajcie ok 1.6s. Można więc zmienić wartość dowolnego...
1.Bajty i cykle (opis) rozkazu ORAA dla wszystkich trybów adresowania. 2.Różnica pomiędzy SWI a WAIT ( cykle) 3.Kiedy przy sekwencyjnej zmianie PC µC zapisuje na stos: a) 9 bajtów b) 1 bajt c) 0 bajtów Jeżeli ktoś wie proszę o odpowiedz.
polecnie mov "kopiuje" wartosć argumentu ad2 do komurki ad1 to polecnie zajmuje jeden cykl maszynowy i jeden bajt w pamięci programu xchd a, (at)ri powoduje wymianę bitów 0...3 z komurki której adres jest podany w ri, z bitami 0...3 które znajdują się w akumulatorze. bity 4...7 akumulatora i komurki o adresie ri pozostają bez zmian. Polecnie to też...
(at)markos80 Zoptymalizowałem jeszcze trochę kod bo wcześniej miałem wywołanie funkcji w innej funkcji, teraz operacje dla 100 bajtów wynoszą około 1-2ms cyklu. Z ciekawości dla 1000 bajtów 11 ms :D https://obrazki.elektroda.pl/7685138500_...
Ok, 20 IO cyfrowych to 20 bitów, czyli 3 bajty. 10 wejść analogowych 16-bitowych, to 20 bajtów. Tyle chcesz odczytać. Do tego narzut protokołu - bajt adresu, masz 4 urządzenia, to dodatkowo 4 bajty. A więc jeden cykl to co najmniej 27 bajtów do przesłania. Ponieważ korzystasz z UART, więc jeden transmitowany bajt to co najmniej 10 bitów, a więc masz...
Domyślnie Atmel Studio w czasie debugowania blokuje przerwania podczas śledzenia krok po kroku, co ma za zadanie ułatwić śledzenie funkcji. Dodatkowo przerwanie od USART wystąpi bardzo późno - dopiero po wysłaniu bajta, co może trwać nawet kilka tysięcy cykli CPU.
Taktowanie, które jest potrzebne dla uzyskania takiej przepustowości to 3200/8 MHz w przypadku pamięci SDR. W przypadku pamięci DDR będzie to 200 MHz (czyli 400 MT/s). Wątpię by zrozumiał co napisałeś... Chce uzyskać 3200MB na sekundę. W jednym cyklu przesyła 64 bity czyli 8 bajtów. Jeden cykl to 1Hz=1/s. 1MHz to milion cykli milion Hz. 400[MHz]*8[B]=3200[MHzB]=3200[MBHz]=3200...
Zastanów się, jeżeli zapisujesz bajt danych to aby móc korzystać z zapisanej danej musisz przejść procedurę programowania pamięci czyli wygenerować impuls zapisujący 2ms. Jeżeli robisz to za każdym razem po zapisie pojedynczego bajtu to bardzo szybko przekroczysz maksymalną liczbę zapisów, które producent podaje w karcie katalogowej. Wartość 10000 wcale...
Różni się tym, że ten drugi jest niepoprawny, bo liczba 0x221 to dwa bajty.
Dla niektórych 512 bajtów ilość cykli oczekiwania na busy była znikoma, ale średnio przy dużej paczce wyniosła 900 więc co z tego, 900 cykli przy zegarze 32MHz dla bloku 512 bajtów, to przepustowość: ( 32M / 900 ) * 512 = 18,2 Mbajtów/sek Nawet dodając 400 cykli, to 12,6 Mbajtów/sek Dobrze liczę? Natomiast karty HC zapisują najmniej 512 bajtów, więc...
Pomysł genialny. Zrobiłem coś podobnego na procesorze 6502. Pamięć masową można zrealizować na karcie pamięci SD. Aby procesor mógł się z nią komunikować, wystarczy zrobić kontroler pamięci na prostym układzie CPLD - ja wykorzystałem do tego Xilinx xc9572. Kontroler ten zrealizowałem w ten sposób, ze cykl zapisu bajtu X procesora pod pewien adres w...
Z drugiej jednak strony, gdyby poczytać datasheet do odpowiednika tego układu od Microchipa (25AA512), to tam jest już coś takiego: Ale to nie jest ścisły odpowiednik tej kości od STM. Jedynie funkcjonalny i to z pewnymi zastrzeżeniami. Kość Microchipa wyraźnie jest zrobiona w innej technologii (ukryty flash) o czym świadczy choćby dodane "w bonusie"...
W c64 turbo wykorzystywało fakt że w standardowej transmisji dane byly przesyłane paczkami a każda paczka była przesyłana dwa razy na wypadek że jeśli w pierwszej wystąpił błąd to istniała szansa że za drugim razem uda się dane odczytać poprawnie.Z racji tego że magnetofony commodore miały interfejs zgodny ze standardem TTL to błędy nie były częste...
cp R4, R0 cpc R5, R1 brlo IncR17x10p3 ;1000 jest mniejsze niż liczba X breq IncR17x10p3 ;1000 jest równe liczbie X ? Takie pobieżne szybkie spostrzeżenie - czy nie powinno być cp r0,r4 cpc r1,r5 brlo - liczba x jest mniejsza od 1000 Poza tym czemu brlo i breq skaczą w to samo miejsce? Dodano po 5 Poza tym taka czysto kosmetyczna uwaga. Zamiast: ldi...
Pamięć wewnętrzna 2KB - 1514B na ramkę, reszta na stos. Sekcję data, bss oraz opcjonalną stertę wyrzucić do zewnętrznego ramu, chociaż nie wiem na czym niby polega trudność w rzutowaniu wskaźnika - pamięć i wewnętrzna i zewnętrzna są dostępne w dokładnie ten sam sposób. Co do odczytywania przy odbiorze i składania przy nadawaniu można wykorzystać dwie...
W pierwszym przypadku w celu jak największej dokładności czasu opóźnienia jest wyliczana liczba przebiegów wewnętrznej pętli (która wykonuje się w 3 lub 4 cyklach, zależnie od tego, czy licznik może mieć 1 bajt, czy musi mieć 2 bajty) - te obliczenia są wykonywane na liczbach zmiennoprzecinkowych. Co do drugiego kodu, nie jest on funkcjonalnie taki...
'do liczby 1536 trzeba by jeszcze coś dolożyć, na wykonanie instrukcji Zasadniczo nie trzeba nic dokładać, bo wartość timera jest inkrementowana sprzętowo od razu (w kolejnym cyklu maszynowym). Czyli już w trakcie obsługi przerwania. Jeżeli obsługa timera zmieści się w 255 cyklach maszynowych, to zmieniany jest tylko młodszy bajt timera - czyli w procedurze...
Ostryas , mozesz do tego uzyc jednej kostki rejestru PISO. Moze to na przyklad byc 74HC165. Ma osiem wejsc rownoleglych i wyjscie szeregowe. Stan wejsc ladujesz do rejestru rownoleglego, a nastepnie przesowasz to co zapisales osiem razy do procesora, i masz bajt przeczytany. Jesli odpowiednio dobierzesz cykl przesowania, to i debouncing kontaktronow...
Przecież te obliczenia są bezsensowne... Mikrokontroler nie jest "zajęty" wysyłaniem poszczególnych bitów czy bajtów przez cały czas. Wchodzi do przerwania, wpisuje coś do rejestru, wychodzi, nudzi się dalej... W rzeczywistości wysłanie jedneg bajtu przez I2C to powiedzmy kilkadziesiąt cykli zegara. Z wejściem/wyjściem z przerwania, powiedzmy że może...
Nic z tego nie wyjdzie. Próbowałem coś w 6 taktach sklecić, zgrubne obliczenia są takie: - załadować dane z portów - 2 cykle - załadować licznik przesunięć - 1 cykl - wyczyścić rejest pomocniczy - 1 cykl - przesunąć w prawo o 2 bity dane, odpadające 2 bity przekopiować do nowego rejestru - 6 cykli (!) - wystawić na port - 1 cykl (przy założeniu, że...
Nie zrozumiałem,że chcesz powiedzieć ,że twój zegarek nie wyświetla sekund :) tylko pullujesz zegarek DS 3 razy na minutę ,żeby nie przegapić zmiany minuty :) Żartuję oczywiście :) metoda dobra jak każda :) Podeślij kawałek kodu obsługi i2c może znajdziemy babola. Podejrzewam, że układ DS podobnie jak niektóre PCF-y[phlipsa] blokuje stan zliczania czasu...
bajty polskie pcf8583 bajty cykle asembler
regulacja obrót kosiarka 500gb seagate barracuda small forma
Pralka nie kręci bębnem i trze - możliwe przyczyny Wybór ozonatora do klimatyzacji Haier 3.5 kW