Jeśli dalej używasz choćby jednej zmiennej typu Bit to nadal pomysł jest aktualny bo bitów zawsze jest osiem. Jeśli nie, to mozna wygospodarować jedną zmienną typu Byte, ale że Tiny13 to bardzo wymagający uC i mozesz już nie mieć więcej miejsca na Byte to możesz pojechac po bandzie i do przechowywania wartości wykorzystać jakiś nieużywany rejestr :D...
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...
Nie można. Pole unii rejestr zawiera wszystkie 16 bitów widziane jako jedna zmienna 16-bitowa. Pole bit udostępnia je jako 16 indywidualnych zmiennych 1-bitowych b0, b1 itd.
Juz tlumacze :-) Zmienne volatile to takie, ktorych uzycia nie chcemy by kompilator optymalizowal. Zalozmy, ze uzywasz jakiejs zmiennej. Za chwilke chcesz cos na niej wykonac. Kompilator wyprodukowal kod, w ktorym ta zmienna jest w jakims rejestrze. Wiec stwierdzi, ze odwoalnie do pamieci jest niepotrzebne i je usunie, zakladajac, ze rejestr posiada...
Nie podałeś ja są przechowywane te dowolne liczby (chyba myślałeś o zmiennych). Dla jednobajtowych (8-bit) użyteczny jest skutek uboczny rozkazu "movf x,x" w postaci ustawienia bitu Z w rejestrze stausowym jezeli ruszony rejestr ma wszystkie bity równe 0. Jeżeli zmienna jest wielobajtowa to wystarczy wykonać "or" na wszystkich jej bajtach i jeżeli w...
Stos nie jest ustawiany na r16. Rejestr r16 służy do zapisania w rejestrach wskaźnika stosu SPH i SPL (jeden odpowiada starszemu bajtowi, drugi młodszemu) odpowiednich wartości. RAMEND to zmienna zadeklarowana w plikach *.inc dla każdego procka. Oznacza ona ostatni adres w pamięci RAM. HIGH(RAMEND) i LOW(RAMEND) służą do 'wyciągnięcia' z tej wartości...
Witam. Rn oznacza nazwę rejestru np. R1, R2, R3. Rejestr znajduje się pod jakimś adresem w pamięci uC. MOV Rn, #dana powoduje wpisanie do rejestru o nazwie Rn danej o nazwie dana np. Mov R5, #22h. A to akumulator, symboliczna nazwa rejestru tak samo jak R1. Nie jest to zmienna Mov A, Rn oznacza wpisanie do rejestru A (akumulatora) zawartości rejestru...
Witam, zmienna "b" jest 8 - bitowa, w pewnym momencie wykonuje się mnożenie 128 * 2 = 256, czyli dla 8 bitów zero. Warunek b > 128 nigdy nie jest spełniony. Tak na szybko, chyba ten warunek trzeba zamienić na b == 0, ale lepiej to przemyśl. Pozdrawiam
Nie śmieję się, ale przecież zapisywanie stałych w rejestrze systemu nie jest najlepszym pomysłem. Kto potem będzie ten rejestr odśmiecał ? Użytkownik usuwa aplikację a śmieci w rejestrze niestety zostają. Bez zrobienia instalatora/deinstalatora nie wolno robić takich rzeczy :) Z kolei niestatyczna zmienna globalna to zło zabijające obiektowość języka...
Ja pomiar czasu (i to nawet precyzyjnie) zrobiłem na timerze i przerwaniu od INT0. INT0 ustawiłem na przerwanie od dowolnej zmiany stanu. W funkcji przerwania sprawdzam czy jest to san wysoki czy niski, i uruchamiam z którymś z nich timer i przerwanie od zrównania licznika z rejestrem. Program leci sobie dalej jak chce i co jakiś czas następuje przerwanie...
Cześć Program działa następująco Zmienna pomocnicza jest zerowana następnie ze zmiennej DM47 i 48 przesyłana jest zmienna podwójne BCD do DM58 i DM59 ponieważ zmienna jest typu podwójne BCD to składa się z ośmiu cyfr. Najbardziej znacząca cyfra w tej liczbie reprezentuje znak. funkcja ANDW służy do odfiltrowania właśnie najbardziej znaczącej cyfry (dlatego...
W c ten program gdzies w internecie widziałem.. Bedzie wymagał być moze małego dostosowania. Mam go ale niestety w asm pod atmege 16. ; Programowalny pilot RC5, obsługa interfejsów optycznych i pamięci EEPROM ; Rafał Baranowski (C) 2004 .INCLUDE "m16def.inc" ; SEGMENT DEKLARACJI .EQU OSC_FREQ= 1000000; częstotliwość pracy w Hz .EQU...
Jeśli zmienna / rejestr jest volatile to działa, używam takich zapisów już od dawna i nie ma z tym problemów.
Teraz nie wiem ile pamięci zajmują mi zmienne w trakcie realizacji kodu. Są jakieś proste metody na taki debuging, typu: odczytuje jakiś rejestr i wiem ile zajęte/wolne? Wiedza ile ram jest zajęte w danej chwili niewiele daje, bo po tej chwili może być wysyłana funkcja z char bufor[1000]; Istotniejsze jest jakie jest max zapotrzebowanie na...
Jeśli zaś wywołana funkcja wywołana nawet z takiej pętli będzie miała argument bez volatile to w odróżnieniu od pętli głównej main() która nie wie co się dzieje w komórce pamięci 0x0060 - to nasza funkcja otrzyma prawidłowy adres argumentu ! i na wejściu odczyta aktualną - zmienianą w przerwaniu wartość tej komórki. Absolutnie nie. To zależy od kompilatora...
Cześć Co do tego co napisałem wcześniej( będą strony z data sheet do Twojego procka): Jak program odwoła się do obszaru pamięci UNDEFINED(ABORT)str.18,19 to generowany jest wyjątek "data abort", procesor wchodzi w tryb "ABORT MODE" i skacze pod adres 0x00000010 a adres powrotny zostaje zapisyna w rejestrze R14_ABORT,str41. Adres niezdefiniowanej pamięci...
https://obrazki.elektroda.pl/7245713600_... BK7231 zazwyczaj programujemy przez UART - pozwala na to wgrany przez producenta bootloader. W wyjątkowych sytuacjach jednak możemy niechcący ten bootloader nadpisać - wtedy musimy użyć trybu programowania SPI by odratować zablokowany układ. Tutaj opiszę, jak działa tryb SPI w BK7231 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ż...
Może coś w stylu Dodano po 1 XC8 jest opracowaniem Microchipa pierwotnie dla architektury PIC a ostatnio rozszerzonym o AVR. Dokumentacja XC8 pod AVR do złudzenia przypomina tę na AVR-GCC więc hmmm....
https://obrazki.elektroda.pl/1570592100_... Witajcie, zapraszam na relację z konstrukcji zegara na PIC18F2550 napisaną w formie tutoriala, wszystko krok po kroku. Pokażę tu jak i z czego tworzyłem prosty projekt DIY na prośbę jednego z czytelników. Wykorzystamy tu wyświetlacze 7-segmentowe, rejestr przesuwny, obsłużymy przyciski a...
https://obrazki.elektroda.pl/3711757000_... Witajcie, dzisiaj przedstawię uruchomienie układu AS1115 z Arduino w oparciu o gotową bibliotekę. AS1115 to kontroler wyświetlacza 7-segmentowego (do 8 cyfr) oraz klawiatury (do 16 klawiszy) z interfejsem I2C, oferującym dodatkową linię-przerwanie dla zdarzeń pochodzących od klawiatury. Temat ten...
Wysłałem żądanie ściągnięcia do repozytorium OpenBK7231T_App ze zmianami, aby umożliwić BL0942 pomiar przepływu energii do przodu i do tyłu. 2 edycje plików: drv_bl0942.c i drv_bl_shared.c Podsumowanie zmian: CF_CNT – 24-bitowa zmienna gromadząca dane z akumulacji energii czynnej mogła zostać przepełniona, powodując okresowo fałszywe odczyty. Sposób,...
W Zmienne globalne — wiedz, kiedy są modyfikowane Zmienne globalne muszą być ostrożnie obsługiwane, gdy są używane z przerwaniami, ponieważ te są generalnie asynchroniczne. I jeżeli zmienna globalna jest modyfikowana przez ISR, może zostać zmieniona w dowolnym momencie. Musimy mieć na uwadze następujące aspekty: Odczyt/zapis zmiennych globalnych...
czy tak trudno zerknąć do helpa PWM1A = wartość zmienna = PWM1Aalias rejestru Compare 1A licznika TIMER1 (Word) używany gdy licznik pracuje w trybie PWM PWM1B = wartość zmienna = PWM1Balias rejestru Compare 1B licznika TIMER1 (Word) używany gdy licznik pracuje w trybie PWM PWM2 = wartość zmienna = PWM2rejestr Compare 2 licznika TIMER2...
Nie chce mi się czytać instrukcji, napisz konkretnie jaki rejestr chcesz odczytać z falownika, tutaj masz błąd w Adres 4 to zmienna Ineger czy Dint jeżeli Dint to zaznaczasz 4xbit za rejestrem nie może być # tylko zapisujesz jako ciąg rejestru 01305 rejestr 13 bit 5 w screnie masz podpowiedz, jeżeli jest to Integer to i tak nie może być # https://obrazki.elektroda.pl/7175554800_...
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ść...
(at)BlueDraco A jak byś chciał to fizycznie zaimplementować w kompilatorze / linkerze Przykład jak zewnętrzna funkcja miałaby operować na takiej zmiennej w rejestrze? Rozumiem że trzeba byłoby przerabiać kod bibliotek np. Tak jak pisałem w poście 7 można sobie taką protezę wyobrazić. problemem jest C/C++ - zmienna typu rejestr nie ma adresu. To jak...
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...
Dzisiejszy świat pulsuje możliwościami, jakie mają do zaoferowania duże modele AI, takie jak ChatGPT. Potencjał sztucznej inteligencji do zrewolucjonizowania sposobu, w jaki ludzie pracują i bawią się, jest zdumiewający, a dla niektórych również nieco przerażający. Aby pokazać pewną perspektywę względem tego zjawiska, wystarczy spojrzeć na akcje firmy...
Witam wszystkich. Zaprojektowałem i uruchomiłem zegarek z wyświetlaczami LED(SA10-21GWA) i układem PCF8583 współpracującym z mikroprocesorem Atmega8 oraz układami PCF8574AP na szynie TWI(i2c). http://obrazki.elektroda.net/21_12497604... http://obrazki.elektroda.net/58_12497606... http://obrazki.elektroda.net/95_12497605...
Dobry wieczór. Przepraszam za tak dużą zwłokę, ale ostatnio miałem zakuwanie na egzaminy szkoleniowe do pracy i nie miałem kompletnie czasu by myśleć o tym:( Musiałbyś pokazać przykład swojego programu. Najpewinej efekty o któych piszesz wynikają z tego, że nie korzystasz z peryferii mikrokontrolera - m.in. timerów, przerwać itd. A na siłę starasz się...
Możesz przetestować Funkcję BIN() A = 25 C = 14 D = 14 B1 = switch functions Sub Write I2cstart I2cwbyte 130 I2cwbyte 0 I2cwbyte A ; Głośność kanał L ; zakres 0 - 63 I2cwbyte A ; Głośność kanał R ; zakres 0 - 63 I2cwbyte C ; Bass ; zakres 0 - 15 I2cwbyte D ; Treble ; zakres 0 - 15 I2cstop Waitms 10 I2cstart I2cwbyte 130 I2cwbyte 8 I2cwbyte B1 ; switch...
zadna z instrunkcji 1,2,3,4 nie kasuje flagi TXE ani TX w rejestrze USART3_ISR. Zawartosc zmiennej usart_isr tez sie nie zmienia Żadna z instrukcji kasowania flagi nie jest poprawna. Zmienna pomocnicza usart_isr nie jest potrzebna. Flagę od zakończenia transmisji należy skasować poprzez wpisanie 1 w odpowiednie miejsce, rejestr kasowania nie jest do...
no przeciez juz to sam napisales... rotacja sobie wrzucasz bit do Carry, nastepnie przerotowywujesz owe Carry dalej do jakiegos (wyczyszczonego wczesniej) rejestru na dowolna pozycje, choc najlepiej na LSB. dokladnie to samo robisz dla drugiej zmiennej, tyle ze wykorzystujesz jako adres drugi rejestr. czyli ze jesli akurat twoim bitem aktualnym jest...
Każda zmienna wykorzystywana w przerwaniu i pętli głównej lub w 2 przerwaniach musi być typu volatile. Normalnie zmienna jest kopiowana do rejestru i program operuje już na ty rejestrze. Przerwanie może zostać wywołane w każdej chwili wobec czego program nadal wykorzystuje ten rejestr mimo zmiany wartości zmiennej w przerwaniu. Jeśli zmienna jest typu...
Ok dodaje pliki. Teraz co chciałbym osiągnąć: 1. Będąc w pliku zlecenie chciałbym skopiować komórki B6,B7,N13. 2. przejść do pliku Rejestr, odszukać w tym pliku w kolumnie z nr zlecenia aktualnie nadane przez rejestr zlecenie. Problem w tym że szukane zlecenie to zmienna która musi zostać zaciągnięta z pliku zlecenie z komórki "F3", ponieważ w rejestrze...
To ty się mylisz. rejestr to nie zmienna Operacja jest wykonywana, ale zmienna nie istnieje i nie da jej się śledzić. No koledzy to już jest herezja Apage satanas !!! :D Rejestry w tym momencie zmienna - float i struktura tez są przechowywane w rejestrach i nie mają swojego miejsca w pamięci. Debuggery są na tyle mądre, że rozumieją jaka jest reprezentacja...
(at)excray, (at)es2, w stm32 jest coś takiego jak rejestr powtórzeń licznika - więc zmienna / licznik stanu nie ma sensu ;) Dygresję nie na temat usunąłem.
Cześć potrzebuje zmienić rejestr ale za pomocą pliku bat który znajduje się na dysku C:data.bat rejestr to: HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMic... Services zmienna to: REG_BINARY - NoLockData I potrzebuję zmienić 3 wartości w linijce 20, dokładnie piątą szósta i siódma. Napisałem coś takiego ale nie wiem jak zmienić tylko linię 20 [HKEY_LOCAL_MACHINESOFTWAREWow6432Nod...
Po drobnych modyfikacjach w/w programu udało! mi się jednak zestawić tą transmisję :D Zastanawiam się jednak po co robię takie kombinacje alpejskie skoro transmisja z lpt do uP może działać na dwóch liniach na zasadzie podobnej do spi - na jednym int (clk) i dowolnym porcie (miso). Wystarczy przerwanie i badanie stanu drugiego pinu. Jedna zmienna robiąca...
Oto przykładowy programik, który nic nie robi ale ma obsługę od przerwania INT0 i w zależności od stanu zmiennej o nazwie "zmienna" wykonuje tą obsługę albo nie. Dla urealnienia problemu zakładam, że używam w programie "akumulatora" R16 (czyli rejestru do wszystkiego) oraz rozpoczynam obsługę przerwania od zabezpieczenia tego "akumulatora" i rejestru...
Tak teraz patrze możliwe ,że pierwszy adres to 4000. Czyli fukcja 3 rejestr początkowy 4000 liczba rejestrów 24? Bo do tej pory ustawiałem: fukcja 03 ,rejestr początkowy 0 liczba rejestrów 24. A w Proface zmienna by wyglądała tak [lumel]404001.
Najczesciej Rejestr jest jakby podzielony jest na czesc zapisana na stale w ROM, mozesz ja sobie zbackupowac, ale ponownemu zapisaniu podlega TYLKO pdczas wgrywania od nowa Firmware (nie mylic z zawartoscia pamieci residentFlash) Druga czesc Rejestru jest zmienna i zapamietywana w ten sam sposob jak pliki na Flashu - jak zmodyfikujesz, tak bedziesz...
Witam! ad 1 podpunkt; Jeśli jako wynik pobierasz zawartość rejestru po przesunięciu bądź przesunięciach to możesz przesuwać dowolną liczbę razy, a jeśli wynik składasz z wyjścia to conajmniej tyle razy z ilu bitów składa się zadeklarowana przez Ciebie zmienna. Poniżej podałem przykład funkcji obsługijącej rejestr: przesun32() ad 2 podpunkt: Tak, zadeklarowaną...
Przy optymalizacji -Os kod jest generowany poprawnie przy -O2 jest jak powyżej. Czytam o opcjach optymalizcyjnych gcc. Domyslam sie że jakas optymalizacja tutaj ma coś do powiedzenia, ktoś wie która? I czemu to tak. Jezeli rejestr przechowuje zmienna globalna to kompilator stara sie zamiast tegoz rejestru uzyc chwilowo innego bedacego do dyspozycji...
dzięki za podpowiedzi, mam jeszcze w związku z tym pytania (dot. asemblera): według specyfikacji CORTEX-M3, funkcja mogła by wyglądać tak: ROL R0,1 ROR R0,31 dają identyczny wynik. Pytanie brzmi: co jeśli moja zmienna jest 16 bitowa, a rejestr na którym będzie realizowana operacja ROR jest 32 bitowy ? O tych rotacjach w asemblerze dot. tego kontrolera...
robisz to za każdym razem tak : 1. Zerujesz rejestr/zmienna w której chcesz miec wynik. 2. Przesuwasz rejestr/zmienna o 1 bit w lewo bez rotacji. 3. Jeśli P1.1 = 1 to ustawiasz najmłodszy bit w rejestrze/zmiennej, jeśli nie to zerujesz (poprostu dodajesz zawartość pinu do rejestru/zmiennej) 4. Jesli ni eodebrałes jeszcze 8 bitow to skocz do 2. Pozdrawiam...
witam wlasnie sie zoorientowalem ze te rejestry to tez przeciez pamiec SRAM i z przesunieciem 0x20 mamy do niej dostep jak do zwyklej komorki... zadeklarowalem zmienna jako wskaznik do niej i teraz juz moge podawac te zmienna w parametrze funkcji i zmienia mi w petli na bierzaco...problem rozwiazany :) Pzdr.
Kiedyś bawiłem się nawigacją z WinCE 4.2 czy 5.0. Na karcie SD była AutoMapa którą uruchamiało się z menu nawigacji. Wystarczyło podmienić skrót do pliku .exe AutoMapy na skrót do jakiegoś programu np. Explorera Windows. Normalnie to interfejs nawigacji ładowany był za sprawą rejestru gdzie zmienna Launch50 to YFLoader.exe - i modyfikowało się chyba...
Wiesz co - nie chce mi sie z Toba juz dyskutowac. Po prostu proponuje, zebys sprawdzil czym sie roznia komorki oznaczane np. jako R0, R1... od zwyklych komorek pamieci i co mozna na nich w '51(ktora znam na pamiec) wykonywac. Skoro nie jestes w stanie tego odroznic (a jako ciekawostke podam, ze na tych rejestrach przy przetaktowaniu zegara praktycznie...
wstawia zmienna zmienna ujemna wincc zmienna
wymiana kondensatorów zasilacz palnik kotła schemat rozrząd trafić
interfejs lexia interfejs lexia
Wymiana centrali Integra Satel krok po kroku Jak wykonać backup danych centrali Integra Satel