Zamiast pytać o to jak odwołać się do tego rejestru (co prawda można tworząc zmienną przez jakas_zmienna >>= 1; if(PS_WEJ&0x01) jakas_zmienna |= 0x80; nie tracąc na szybkości (3 cykle przy rejestrze IO dostępnym przez sbic/sbis, 3 przy innym rejestrze [sbrc/sbrs], 5 przy komórce pamięci). Ze względu na skrajny bit można to zoptymalizować,...
To znany problem z tamtego okresu. Niestety nie ma prostego workaround. Najlepiej albo zaktualizować kompilator i binutils albo w kodzie nie wołać bezpośrednio funkcji oddalonych od siebie o więcej niż 4 lub 16MB(thumb2). Co więc zrobić jak wołać trzeba? Zastosować takie albo podobne makro do wołania "oddalonych" funkcji: #define x(func) \ {\ asm volatile...
Możesz sie dostać do bitu przeniesiena z poziomu C stosując predefiniowaną zmienną PSW. 7 bit w tym rejestrze to wlaśnie bit CY, więc możesz zrobić tak: long al,ah,bl,bh; al+=bl; if (PSW&0x80) ah++; ah+=bh; W ten sposób do zmiennej a (rozbitej na ah i al) dodałeś zmienną b.
A dlaczego kolega ma ustawiony bit ADLAR w ADMUX ( ADMUX = 0b00100000; )? Przecież to włączenie wyrównania do lewej w rejestrze ADC, więc trzeba to chyba później uwzględnić w obliczeniach. Chciałbym jeszcze zauważyć, że sprintf() operuje na zmiennej czterobajtowej, która w każdej chwili może zostać zmieniona przez przerwanie od ADC przykładowo w czasie...
PTR to nie jest rzutowanie, jakie występuje w językach wysokiego poziomu, tylko traktowanie. Po prostu jest spod adresu wskazanego zmienną pobierane WORD danych. Jako, że sama zmienna jest tylko typu bajt, to w rzeczywistości zostaną pobrane wartości ze zmiennej Byte1 i Byte2 w kolejności.
Czyli, generalnie zmienna lokalna zadeklarowana w przerwaniu , też będzie odłożona przez kompilator do rejestru i potem wszystkie operacje będą wykonywane na tym rejestrze? Dokładnie tak będzie. A jak wygląda sprawa z zmienną lokalną z specyfikatorem "static" ? Taka zmienna, jest niby tworzona w pamięci RAM, tam gdzie zmienne globalne, ale jej dostęp...
W Twoim działającym przykładzie do rejestru wpisujesz adres tablicy ("&" może być albo może go też nie być - również zadziała wg mnie), natomiast w przykładzie niedziałającym najpierw do funkcji podajesz adres tej tablicy, a potem jeszcze raz wyciągasz adres tego adresu - żeby zaspokoić Twoje potrzeby kompilator zmienną tab umieszcza gdzieś na stosie...
No tak dwa bity z lewej to rok dalsze 2 to 10 dni i ostatnie 4 to dzień zrobiłem taki program Zapisuje na starcie godzinę 23:59:58 i datę 31-12 dzień wpisuję tak &B00110001 , daję mi to 31 dzień miesiąca , kiedy przechodzi data na 1-01 to zmienną dnia wyświetla mi tak &B00000001 ale bity roku nie uległy zmianie. Jak do tego nie dojdę chyba zmienię...
dobra, obiecany gotowiec i przy okazji manual pt "jak korzystać z manuala". W naszej przeglądarce wpisujemy adres www.google.pl Wpisujemy tam Atmega8, po załadowaniu się strony z rezultatami klikamy w link posiadający w tytule "datasheet" i sprawdzamy czy jest on z atmela. Po pomyślnym otwarciu się datasheetu z indeksu po lewej stronie wybieramy 16-bit...
https://obrazki.elektroda.pl/4868547700_... Dzisiaj zrealizuję projekt na malutkim, ośmionóżkowym mikrokontrolerze PIC w obudowie DIP8 oferującym skromne 3.5kB pamięci Flash. Co więcej, do komunikacjami z peryferiami użyję tylko dwóch pinów - całość opierać się będzie o I2C. W oparciu o nie uruchomię kontroler wyświetlacza/klawiatury oraz...
https://obrazki.elektroda.pl/1761046600_... Pokażę tu jak uruchomić z Arduino czterocyfrowy wyświetlacz 7-segmentowy sterowany poprzez rejestr przesuwny 74HCT164 i cztery tranzystory BC546. Płytka z wyświetlaczem znów będzie odzyskana z elektrośmieci. Będzie to już kolejny temat, w którym uruchamiam wyświetlacz, gdyż omawiałem już...
http://obrazki.elektroda.pl/9589280700_1... HPS 2014 Hybrydowy laboratoryjny zasilacz sieciowy. Parametry użytkowe zasilacza w skrócie: 1. Wykorzystanie tanich i łatwo dostępnych elementów. 2. Wydajność prądowa min 3A (dla niskich napięć może dochodzić do 5A). 3. Rozdzielczość DAC 12bit. (filtrowany PWM 4.9kHz) 4. Rozdzielczość ADC...
Dziękuję za podjęcie tematu. Wchodząc w wyniki googlusia lub czata zwraca mi ten sam wynik z przykładem: "5. Ustawianie ustawień zasady grupy Możesz ustawić różne opcje w politykach grupowych. Na przykład, aby skonfigurować ustawienia dla centrum zabezpieczeń: Set-GPRegistryValue -Name "NazwaMojejZasady" -Key "HKLM\Software\Microsoft\Windows\Current...
https://obrazki.elektroda.pl/3252078300_... Poniższy artykuł przedstawia – krok po kroku – wykonanie niewielkiego, kieszonkowego oscyloskopu cyfrowego. Nie jest on tak dobry jak zwykły warsztatowy oscyloskop, ale z drugiej strony można zabrać go niemalże wszędzie. Poza tym – nie wszystkie projekty DIY muszą mieć sens....
Procesor STM32F103ZET6 jest mikrokontrolerem ARM z rodziny Cortex M3, który jest taktowany zegarem o maksymalnej częstotliwości 72 MHz i zasilany napięciem +3,3 V z wyjścia stabilizatora napięcia LT1117-3.3 (oznaczony desygnatorem U10 ). Poniżej przedstawiam napisany przeze mnie kod pliku main.c na procesor STM32F103ZET6, który steruje steruje dwiema...
No więc, tak jak obiecałem jakiś czas temu postaram się przybliżyć i wytłumaczyć kwestię programowej obsługi popularnego układu RTC – PCF8583. Układ ten ma zarówno zwolenników jak i przeciwników, a jedni i drudzy mają swoje racje. Są układy prostsze w obsłudze programowej, posiadające wszystkie interesujące nas dane w osobnych rejestrach prostych...
A zamieniłeś wszędzie , miejsca gdzie było 'dword ptr i' na 'edi', a 'dword ptr j' na 'esi' ? Poza tym, czemu wywaliłeś 'add esp, 0x0c' za wywołaniem funkcji???
"region" to obszar pamięci, dla którego możliwy jest dostęp za pomocą bit-band poprzez adresy w rejonie "alias". Innymi słowy - w "region" są zwykłe zmienne/rejestry/..., natomiast w "alias" są dostępne poszczególne bity zmiennych/rejestrów/... z "region".
To rozumiem to tak że zmienna "i" jest już na stałe w pamięci i zadanie tej funkcji jest wykonywane najszybciej jak to możliwe Tak zmienna ma swoje stale miejsce w pamięci. Nie koniecznie wykonanie jest najszybsze bo najszybciej to działa jak zmienna jest w rejestrze procesora a globalną trzeba zapisać do pamięci przynajmniej przed wyjściem z funkcji...
Panel dotykowy z 6 diodami sterowany po i2c na ATTINY44 Poniższy materiał przedstawia próbę ugryzienia tematu krytycznych zależności czasowych w asemblerze. Zadaniem było stworzenie stabilnie działającej aplikacji która obsłuży: komunikację z procesorem nadrzędnym w trybie slave i2c sterowanie multipleksowanymi diodami z 8bitowa regulacja jasności...
Kompilator umieścił twoją zmienną w rejestrze bo sam to wymusiłeś dodając modyfikator static. Nie analizuj też działania kompilatora na trywialnych programach. Jak myślisz, czy twoje założenia o niemodyfikowaniu SREG, czy umieszczaniu zmiennych w rejestrach są słuszne dla nietrywialnych przykładów? Zdecydowanie nie. A zmienne możesz trzymać w rejestrach...
Nie masz racji i było to już wyjaśnione. Procedura obsługi przerwania może zmodyfikować zmienną w rejestrze bez wiedzy wątku.
Atmega 328P z kwarcem 18432000 (w specyfikacji mozna ja kręcić do 20MHz) spokojnie potrafi wygenerować trzy PWM przesunięte w fazie o 120 stopni z krokiem 256 z częstotliwością 50Hz przy tym nadając na USART o aktualnych warunkach jednego potencjometru. Pewnie że potrafi, ja na attiny 861 wygenerowałem 3 sinusy co 120 st z regulacją F od 20 do 250Hz...
16-bitowy assembler jest bardzo ograniczony, nie każdy rejestr może być wskaźnikiem danych. Zmień dx na di/si/bp/sp, albo [syntax=asm]mov di,dx mov bx, [di][/syntax]
Powinieneś, w przerwaniu odebrać znak, przypisać do zmiennej, oraz ustawić drugą zmienną jako flagę odebrania nowego znaku. A po co tu przerwanie? żeby przepisać rejestr do zmiennej i ustawić własny znacznik? Przecież znacznik już jest - w rejestrze stanu UART, a odebrany znak w rejestrze UDR. Z kopiowania danych i znaczników pożytku nie będzie.
Jak wiadomo od Win7 instalator domyślnie tworzy małą aktywną partycję bez litery na której umieszcza loader a na drugiej partycji z literą C: umieszcza pliki systemu np. katalog WINDOWS. Z Wiki > %systemroot% Pytanie jest takie: Jak zainstalować (zmodyfikować) system WinXP aby pliki ntldr boot.ini NTDETECT.COM były na pierwszej aktywnej małej partycji...
Witam, Mam problem z wysłaniem zmiennej Long przez RS232. Wszystkie inne zmienne 2-bajtowe (Word) pięknie przechodzą natomiast Longa już na 1 rejestrze nie wyślę. Rejestry mam 16-bitowe - chciałbym wykorzystać 2 rejestry 16 bitowe żeby wysłać zmienną 4 bajtową. Czy może mi ktoś podpowiedzieć jak rozbić liczbę np 250000 w Bascomie aby przesłać ją na...
Oczywiście linie są podciągnięte, robiłem testy na hal i komunikacja działa czyli sprzętowo można uznać że jest dobrze. zmienną maddr ustawiłem na uint16_t i w celu wysłania podzieliłem na starszy i młodszy bajt bo rejestr DR jest 8 bitowy jednak dalej zatrzymuję mi się na pętli while [syntax=c]while (!(I2C1->SR1 & SR1_TXE)){}[/syntax] Oto zmodyfikowany...
Witam, piszę program w C z wstawką ASM i nie starcza mi rejestrów na przekazywanie zmiennych w sposób: C: void FunkcjaC( int x, int y, int z); ASM: push EBP mov EBP, ESP mov EBX, [EBP+8] ;X mov ECX, [EBP+12] ;Y mov EDX, [EBP+16] ;Z (czyli wstawianie zmiennych do rejestrów 32bitowych) Chciałbym stworzyć sobie zmienną...
właśnie że dobrze dobrze :wink: Trochę tak a trochę nie. Nie tylko w przerwaniach ale również w innych jak wspomniałeś "jednocześnie występujących" funkcjach. Poza tym można również przypisać zmienną do rejestru. Czasami też wystarczy zadeklarować zmienną globalną o ile nie jest ona używana w przerwaniach. Na pewno nie. ;) ... jeśli używasz jednej...
Chcę kożystać z przerwania INT0, a w nim o jeden powiększać zmienną zapisywaną w rejestrze np.: r20. Niestety po powrocie z przerwania zerowany jest stan rejestrów, awięc zmienna znika. Komend Push i Pop nie ma w ATtiny12. Jak operować na zmiennych? Jak odkładać je na stos?
Witam, Mam prosty problem: Jak inkrementować zmienną za każdym załączeniem ? Chodzi o to żeby był jeden marker pomocniczy (%M) który na starcie będzie przesyłał wartość zero do rejestru (%R) kiedy zmienna %M przejdzie w stan wysoki do rejestru powinna zostać wysłana jedynka kiedy zmienna ta przejdzie w stan niski w rejestrze powinna widnieć nadal wartość...
Plik bat [syntax=dos](at)echo off for /f "tokens=3" %%a in ('reg query "HKEY_CURRENT_USER\Software\Microsoft\Wi... Shell Folders" /v "Personal"') do set zmienna=%%a echo %zmienna% pause[/syntax]
Cześć Załóżmy że mam pewną funkcje w której zwiększam zmienną a o jeden. W funkcji main wywołuje funkcje i wynik przypisuje do zmiennej b. Załóżmy też że mam przerwanie które też zwiększa a o jeden. W celu optymalizacji operacje na zmiennej a będą wykonywane w wolnym rejestrze i przy wyjściu z funkcji wynik rejestru zapiszemy do zmiennej załóżmy że...
Zmienną lokalną kompilator chętnie ulokuje w rejestrze i odwołania do pamięci będą zbędne, co w przypadku Cortexów oznacza typowo 3-krotnie szybsze operacje na takich zmiennych w porównaniu ze zmiennymi w pamięci.
Jak miło zobaczyć ze ktoś jeszcze robi na omronach :) ale do rzeczy. Jak już masz zmienną w rejestrze np H0 to najprościej zrobić tak bez przypisywania czyli CNT 0 H0 (inny przykład CNT 0 DM0) czyli licznik zero licz do wartości H0. Jak chcesz używać MOV to piszesz MOV DM0 H1. DM0 źródło H1 cel. Tylko pamiętaj że licznik musi mieć zmienną zapisaną w...
Witam, Ostatnio wykonywałem wizualizację na panel AB i miałem podobny problem. Przyczyną była mała ilość pół w numeric display. Zwiększ ilość pól na liczby może to coś pomoże. Możesz dodatkowo wpisać w PLC w rejestrze odpowiedniej zmiennej np. 100 lub inną wartość i zobaczysz jak będzie to wyglądało. Pozdrawiam,
Do tego, co chcesz zrobić, przerwanie jest całkowicie zbędne - UART sam ustawi ci zmienną (bit RXNE w rejestrze stanu) kiedy odbierze znak. Sprawdzając stan tego bitu dowiesz się, czy coś przyszło.
Jeżeli możesz wybierać pin, albo masz wolny port to najszybciej robisz to kopiując zmienną do rejestru np. R21, po czym wykomujesz instrukcję Out P,R21 gdzie P to port po czym lsl R21 przesuwasz bity w rejestrze o 1 i znowu Out P,R21 i tak osiem razy, ma to wadę polegającą na tym że zabiera cały port na czas transmisji, ale na pinie 7 masz rządaną transmisje...
Czyli to działa tak, że jeżeli piszę w programie np.: char t=0; to kompilator rezerwuje w pamięci SRAM(??) 8 bitów do przechowywania tej zmiennej. A jeżeli potem mam w programie np. takie wywołanie: for (i=0; i<100; i++) t=t+3 to ładuje kopię zmiennej t do rejestru (np. r10), na rejestrze r10 100x wykona operację dodawania 3, i dopiero po zakończeniu...
W kodzie nie mam nic więcej, to jest cały kod. W rejestrze al znajduje się liczba, którą wprowadzam. Też najpierw podobnie pomyślałem i dlatego to sprawdziłem wyświetlając potem co tam się znajduje. Wydaje mi się, że problem może być w tym, że ta liczba może być traktowana jako tekst i dlatego te błędne obliczenia. Tylko nie wiem jak zamienić zmienną...
Witam, T1 w ATmega8 rzeczywiście ma rozdzielczość 16 bitów, ale PWM sprzętowo uzyskasz tylko 10 bitów. Można jednak zwiekszyć rozdzielczość PWM o 1 lub 2 bity programowo - ostatnio to właśnie udało mi się zrobić :) tylko, że w procku ATtiny13, zwiększyłem PWMa z 8 do 10 bitów - programowo w przerwaniu od licznika, który obsługiwał PWMa. Idea jest taka,...
Mam problem ze zliczaniem czasu przez timer w układzie PCF8583. Na starcie programu ustawiam timer: I2cstart I2cwbyte 162 I2cwbyte 0 'rejestr kontrolny I2cwbyte &B00000100 'alarm aktywny I2cstop I2cstart I2cwbyte 162 I2cwbyte 8 'rejestr kontrolny timera I2cwbyte &B01000010 'zapis rejestru alarmu 'odmierzanie sekund ' włączony alarm timera I2cstop I2cstart...
Pierwsza opcja to oczywiście zdefiniowanie NAPRAWDĘ DUŻEGO stosu, ale to średnie rozwiązanie jak wiadomo [; Do rozbudowanej aplikacji na ARMa myślę że należy liczyć minimum 1kB, jeśli używa się jakichś potwornych funkcji standardowych (printf!) i to głęboko to lepiej zaopatrzyć się w 2kB (o apetycie tych funkcji na pamięć pisałem ostatnio http://www.elektroda.pl/rtvforum/topic13...
Ale to miało być czekanie aż do zwolnienia przycisku - bo tak to by mi naliczył kilka tysięcy od razu, nie?;D w przerwaniu ustawiać flagę - tzn. swoją zmienną globalną czy jakąś w rejestrze czy gdzieś?:D a co z timer_init'em jest nie tak?:P coś jeszcze powinno być?
Napisano mi wcześniej, że nie mogę bezpośrednio użyć UDR w switch czy w if, żeby wrzucić z UDR do zmiennej tymczasowej i tą zmienną sprawdzać. Tak więc zrobiłem. Niestety zrobiłeś to źle. Napisano Ci również, że po odebraniu każdego bajtu rejestr UDR można odczytać tylko raz, a Ty wywołujesz funkcję odbierz() , która odczytuje i zwraca wartość rejestru...
-- Check for working C compiler: C:/Users/mkm/.espressif/tools/xtensa-esp... -- broken -- Configuring incomplete, errors occurred! Nie może odnaleźć lub jest uszkodzony plik kompilatora dla xtensa-esp32. ręcznie dodałem do PATH położenie do cmake (instalator tego nie zrobił). A jak konkretnie?...
Wciąż nie wiem jak działa bascom...;] armcc umieszcza zmienną lokalną na stosie jeśli gdziekolwiek jest używany jej adres. Analizując kiedys listing zauważyłem nawet patent, że operacje na zmiennej wykonywały się tylko na rejestrze (wyliczał się kolor), a bezposrednio przed pobraniem jej adresu wartość została skopiowana na stos (dla DMA). Optymalizacje...
Witam Przymierzam się do wyboru scady. W swoim projekcie będę miał dużo sygnałów 2 stanowych i chciałbym zredukować ilość zużytych zmiennych. Bardzo ciekawie wygląda nasz polski produkt ant - studio, ifix jest też w miarę cenowo i wydajnościowo ok. Za asixem jakoś nie przepadam - ma dziwny interfejs. Która ze scad umożliwia zmapowanie danego bitu z...
Nie podałeś wersji systemu operacyjnego. U mnie w Windows 7 też pamięta nazwę pierwszej sieci radiowej, chociaż połączenie zmieniłem na kablowe. Jakoś się przyzwyczaiłem, bo dla mnie ważniejszy jest komunikat o stanie połączeń sieciowych, niż przypisana nazwa. Ale masz prawo czuć jakiś dyskomfort. Ja pogrzebałbym w rejestrze systemowym, ale można napsuć....
wyświetlić zmienną zmienną adres string zmienną
aktywacja sterownik wyświetlacz sterownika pieca defro osram quicktronic
lodówka samsung lodówka samsung
Docieplenie zasobnika 140l CWU – jak poprawić izolację klasy C? Wełna mineralna, PIR, efekty Stiga Estate – piszczący głośnik sygnalizacyjny po włączeniu koszenia, diagnostyka PTO, czujniki