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ż...
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...
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...
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ć....
Załączyłem kawałek bazy zmiennych w Excelu, gdzie zmienna StatusF jest odczytywana fizycznie z falownika i jest słowem statusu, na poszczególnych bitach zawarte są informacje o pracy urządzenia. Pozostałe zmienne są zmiennymi nieaktywnymi (nie są wliczane do limitu zmiennych) i "rozszyfrowują" znaczenie poszczególnych bitów. Te zmienne mogą być użyte...
...i juz prawie dziala - mozna ustawiac date i zostaje ona zapamietana, problem jest tylko taki, ze rok maxymalnie wyswietla sie 25 mimo ze powinno dojsc do 99r... Zajrzyj łaskawie do dokumentacji PCF-a , bo to co tu wypisujesz ... woła o pomstę do nieba :( Dlaczego zmienną Rok wpisujesz do rejestru timera :?: Po co maskujesz rejestry 4 i 5 :?: Czy...
np potrzebujesz zmienną którą będziesz zarówno aktualizował w przerwaniu i w pętli głównej programu. Gdy nie dasz jej volatile - to optymalizacja doprowadzi do tego, że w pętli głównej wrzuci sobie zawartość tej zmiennej np do jakiegoś wolnego rejestru procesora i w ramach tej pętli głównej będzie się posługiwać tylko tym rejestrem bez sprawdzania czy...
postanowiłem przetestować Twoje wypociny. Ale brzydko to nazwałeś czy jest możliwość podglądania wszystkich rejestrów procesora tak jak to jest w IAR-e? Np. chciałbym widzieć co się dzieje z bitami w rejestrze np.: U0SCR, U0SCR, U0SCR itp. Wiem ze jest zakładka: Registers gdzie widać jedynie/aż wszystkie rej. główne poczynając od r1, a kończąc na cpsr....
Panowie, każdy Timer jest blokiem funkcjonalnym w mikrokontrolerze i nie można go dodawać do zmiennej. Ale tak jest z punktu widzenia człowieka. Dla kompilatora "Timer" to tylko literał. Tak samo jak każdy inny tekst. Atom napisał, iż nikt nie dodaje licznika, ale w pierwszym poście napisane: B = B + Timer2 jak wyżej, nie ważne co jest napisane. Człowieka...
Dodanie drugiego przycisku, podłączonego do pinu 3 Arduino : [syntax=c]#define BUTTON1_PIN 2 #define BUTTON2_PIN 3 int zmienna = 0; void setup() { pinMode(BUTTON1_PIN, INPUT_PULLUP); pinMode(BUTTON2_PIN, INPUT_PULLUP); Serial.begin(9600); } void loop() { if (digitalRead(BUTTON1_PIN) == LOW) { while (digitalRead(BUTTON1_PIN) == LOW) {} zmienna++; Serial.print("Wartość...
trochę kolega flapo213 starsznie pokrętnie to wytłumaczył dlatego ja postaram się jeszcze po swojemu ;) Jeśli deklarujesz zmienną globalną, z której będziesz korzystał zarówno w procedurze obsługi przerwania a także w pozostałych częściach (funkcjach) swojego kodu, to bez słówka volatile będzie to się działo w uproszczeniu w ten sposób, że w ramach...
. Deklarując zmienną "dowpisania" jako bajt nic się nie zmienia. W czasie jednej pełnej pętli głównej licznik zwiększa się o 3, więc dla najwyższej możliwej częstotliwości pętla wykona się 16 razy zanim dojdzie do przerwania, nawet zostawiając w głównej pętli wysyłanie ocr2 przez uart, gdyby wywalić tę linijkę, pewnie trwałoby to jeszcze krócej. Nie...
Ale....to nie jest ficzer kompilatora, a rdzenia! Niech Kolega zauważy, że pewne myki mogą się wykonać na jednych rdzenia tak, na innych inaczej. Skoro sam procesor nie daje możliwości "zbunkrowania" gdzieś wartości zmiennej, to kompilator nie będzie próbował tego robić.... W ogóle nie chodzi o kompilator. Wszyscy wiemy, jak on działa. Wyobraźmy sobie...
na początku programu ustawiam bity: GICR |= 1 << INT0; MCUCR |= (1 << ISC00) | (1 << ISC01); //przerwanie zboczem narastającym aby zezwolić na obsługę przerwań (INT0 w rejestrze GICR) oraz by przerwanie wyzwoliło zbocze narastające sygnału który sie pojawi (ISC00 = 1 i ISC01 = 1 w rejestrze MCUCR). następnie w procedurze...
Witam. Z artykułu zrobiłem pierwszą część tzn. w rejestrze HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wi... Script Host\Settings stworzyłem zmienną Enable i nadałem jej wartość 1. Reszta część artykułu niestety nie jest możliwa ponieważ wyskakuje monit, że nie jest to skrypt rejestru. Tak czy owak nie jest to chyba wymagane skoro zrobiłem to ręcznie niestety...
Jeszcze prosił bym o wyjaśnienie dlaczego tak się dzieje. No to: Pokaż nieco większy fragment programu. I nadal nie mówisz nic czy zmienna jest volatile czy nie. Jeśli nie to wtedy (sam zaobserwowałem) czasem działa, ale w 99% przypadków nie działa. Dodano po 6 Co do samego pytania o volatile - jak wspomniał kol. (at)stanleysts: modyfikator volatile...
Witam. Mam problem. Zrobiłem generator jak na rysunku poniżej: https://obrazki.elektroda.pl/4869239100_... Potrzebuje mierzyć w czasie rzeczywistym częstotliwość jego pracy. Chcę zrobić na Atmedze8 którą posiadam. Podłączyłem do niej wyświetlacze siedmiosegmentowe i napisałem w C ich sterowanie. Moja pierwsza próba: Najpierw próbowałem...
Pytanie za które mogę zostać wyrzucony z forum elektrody. Rozkaz SUB - odejmowanie bez pożyczki - kiedy ustawia bid "C"?? Stwierdziłem że w projekcie 2-ubajtowa zmienna mnożnika może okazać się za mała więc zaprogramowałem zmienną trzybajtową. procedura dzielenia odbywa sięmetodą wielokrotnego odejmowania. Rozkaz DEC ustawia bit Z jeśli rejestr osiągnie...
O popatrz moje bajty liczysz bardzo dobrze. Wychodzi Ci 5. I to jest maksymalne zużycie w mojej wersji. A policz Twoje. Ze zmienną x wyjdzie 6. Zarówno moja wersja jak i wersja z x omija niepotrzebny dostęp do volatile. Tylko, że moja pozostaje czytelna, odpowiadająca sposobowi myślenia o problemie, a nie zwalczaniu ograniczeń kompilatora. Jeśli ograniczenia...
Witam i dziękuję za zainteresowanie tematem. nie wiem,bascom chyba po definicji konfiguracyjnej przerwania już zapisuje i odtwarza ze stosu zawartości rejestrów,czy można więc pominąć te instrukcje? ----------------------------------------... przerwanie: $asm'informacja dla mojego kompilatora że dalej jest w asm...
Trzeba klawiszem zerować zmienną odpowiedzialna za wypełnienie (ustawiać wypełnienie 0 - zatrzymanie silnika)... Można i tak, tylko po co utrudniać sobie zadanie :?: Wyjście OCx jest wyjściem alternatywnym , którego funkcję możemy ustawić w rejestrze TCCR1A za pomocą pary bitów COMxxx. Piotrek
A jak ten kod działa, kiedy przycisk pozostaje wciśnięty? Faktycznie, po upływie zadanego czasu program odczytuje długie wciśnięcie jako kolejne. , i w czym jest on lepszy od moich dwóch linii kodu, które dają poprawną reakcję na naciśnięcie przycisku? O których liniach kodu mowa? Jeśli chodzi o SysTick (przykład 2), to niestety, ale jeszcze tego nie...
Witam, Szukam i nie mogę znaleźć. Chciałbym zadeklarować tablicę, która byłaby częścią struktury: [syntax=c] typedef struct { uint8_t sekundy; uint8_t minuty; uint8_t godziny; uint8_t dzien; uint8_t miesiac; uint16_t rok; } TTime; [/syntax] więc raczej nie może być z parametrem PROGMEM, ponieważ sama struktura będzie zmienną. Tablica miałaby 7 wierszy...
Nie nie nie, PCF ma rejestr do przechowywania roku, a raczej jest zapisany na dwóch bitach w rejestrze dnia. Przyjmuje wartości od 0 (00) do 3 (11). Rok "0" jest rokiem przestępnym. Przy ustawianiu daty w menu zegara zmienia się wartość zmiennej typu wrod. Następnie wartość ta jest dzielona przez 4, a reszta z tego działania oznacza "numer roku" w czteroletnim...
To co pokazałeś to jest właśnie doczyt z Tablicy elementu określonego zmienną INDEX. Musisz pojąć jedną rzecz w asm nie ma dosłownie czegoś takiego jak tablica, jest tylko zarezerwowany obszar pamieci a Twoim przypadku etykieta Tablica jest to właśnie adres początku tego obszaru, tak więc jeśli dodasz do tego zawartość INDEX wtedy otrzymasz adres komórki...
Co rozumiesz przez flagę C?? Czy chodzi o flagę przeniesienia w rejestrze PSW opisana w moich książkach jako CY?? Można też tak bardziej w stylu języka C zrobić sobie zmienną zawierającą część wysyłanych danych i ją przesuwać w każdym kroku o 1 i na wyjście wystawiać najmłodszy bit Jak to można zrealizować?? Możesz mi napisać jakiś praktyczny przykład??...
Po pierwsze nie jmp tylko najprawdopodobniej rjmp. To już sobie kompilator sam dobierze w zależności od długości procedury Flaga_z_1. Po drugie nie możesz używać brne jako skoku na koniec jakiegoś podprogramu, bo nie wiesz w jakim stanie będzie flaga Z, ani też nie wiesz jak długa będzie funkcja Flaga_z_1 (brne to skok relatywny, tak samo jak rjmp)....
Tutaj masz waszystko o timerach w '51. http://www.atmel.com/dyn/resources/prod_... W 89s51 są tylko dwa T0 i T1. Zasada jest prosta. W twoim przypadku najlepiej żeby timer pracował jako 16bit. Tryb pracy ustwia się w TMOD. (Masz w opisie bit M1 i M0). Ma zliczać impulsy z zegara systemowego który wynosi Fosc/12. Jeszcze trzeba odblokować...
Również przyłączam się do pytania o przyczyny tego zjawiska. Stało mi się tak i teraz, a nie widzi mi się przywracanie systemu do stanu sprzed roku. Wszelkie instalatory sterowników ze stron oficjalnych niewiele pomagają. Ostatecznie sprowadza się do to tego, że gdzieś w rejestrze (?) jest zapisana stara karta, bo kiedy tylko próbuję ręcznie zainstalować...
poprawiłem kod, w tej chwili rozpoznaje miesiące 30 i 31 dniowe, temat roku przestępnego odpuściłem - układ sam to poprawi... ...ale, kurcze pojawił się z rana kolejny problem, mianowicie wyobrażałem sobie że DS1307 w rejestrze DAY zapamiętuje konkretny dzien tygodnia dla danej daty (np. że 30 marca 2007 jest piątek), a tu nici , bo DAY to licznik dni...
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...
Dzięki za odpowiedzi. Zmienną TRYB nie dałem jako volatile, dlatego że wykonuję na niej operacje również w pętli głównej, a z tego co wiem volatile powinny być tylko te które wywoływane są przerwaniach. Zliczanie impulsów zachodzi tylko w trybach '1' i '3'. Funkcja start() wywoływana jest tylko raz przy przejściu do trybu '3', a w trakcie zliczania...
heh. tak można. Kontroll proponujesz zapamiętywanie aktualnej pozycji w menu poprzez PC, natomiast ja proponuję zapamiętywanie poprzez zmienną w rejestrze bądź w pamięci ram. Tyle ile masz menu tyle potrzebujesz tych pętli. Mi nudziłoby się pisanie takiego czegoś. Strata czasu. Przykład z AVRbuterfly może i działa, ale mi osobiście sie nie podoba. Przez...
Łączenie InToucha ze sterownikiem PLC GE-Fanuc jest całkiem proste. Sterownik PLC Ge-Fanuc VersaMax np. Micro (UAL lub UDR) ma do dyspozycji 2 porty (RS-485 i RS-232). Jeśli posiadamy kabel do programowania o przez ten kabel chcielibyśmy komunikować InToucha z PLC to siłą rzeczy korzystamy z portu RS485 (port2 - 15 pin). Chcąc wizualizować dane ze sterownika...
Kolega cezary1986 myślał o rozwiązaniu bardziej hakerskim, tzn. atmegą wystawiam clk a następnie czytam bit, a nie generator clocków i wykorzystanie przerwań - bo to nie zadziała. W podejściu tym (hakerskim) można w pełni wykorzystać moc procesora, oraz taktowanie ze zmienną prędkością. Ja bym to zrobił tak: wystawiam odp. clk, czytam bit np na PIND0,...
Faktycznie, powyższy kod nie był optymalizowany. Jednak zmieniłem zmienną na const, lecz wtedy kompilator wyrzucił że: pTIMSK nie może wystąpić w stałym wyrażeniu, ponieważ pTIMSK nie ma 'external linkage'. Jeśli jednak definicje zmiennej pTIMSK umieszczę w osobnym pliku, a później w pliku w którym jej używam, wpiszę extern const uint pTIMSK; kompilator...
powiedzmy, ze masz zmienną x w której jest 0b10100011 i teraz robisz dwie operacje [syntax=c]x |= 0b01010110;[/syntax] i po tej operacji w x będzie 0b11110111 po prostu wykonasz funkcję OR na obu wartościach. teraz to samo ale bez "|" [syntax=c]x = 0b01010110;[/syntax] i teraz x = 0b01010110 wiec wpiszesz dokładnie tą wartość. Ogólnie |= używa się do...
Witam. Próbuje napisać zegarek na PICu. Używam oscylatora 4 MHz. Nie wiem jak zrobic odliczanie jednej sekundy. Pisałam o tym na innym forum i otrzymałam taka odpowiedź: "Jeśli używasz kwarcu 4 MHz to ustaw preskaler na dzielenie przez 64. W takim przypadku do licznika/timer'a będą przychodziły impulsy o częstotliwości 15625 Hz (1000000 / 64 = 15625)....
pomijam tutaj kwestię zoptymalizowania przez kompilator konstrukcji switch/case do "computed goto" - wiele razy czytałem, że kompilatory coś takiego robią, ale nigdy w życiu nie widziałem, żeby faktycznie to zrobiły. Z ciekawości spojrzałem co robi kompilator w momencie natrafienia na instrukcje Switch/case - oto fragment listingu: [syntax=asm] 122...
Trochę hmmm mało szczęśliwa ta obsługa RC5. Zwykle robi albo powiem inaczej warto robić na przerwaniach zamiast wszystko w pętli głównej bo działa to zdecydowanie wtedy lepiej. Już samą tą procedurę można byłoby mocno uprościć, żeby nawet nie korzystać w ogóle z procedury obsługi przerwania, bo po co? skoro tam jest ustawiana tylko flaga na 1. Pomijam...
Najpierw trzeba poprawić program, bo jeśli jest to napęd do robota omijającego przeszkody to raczej wyjdzie z tego taran! Powód jest taki, że żaden z warunków ominięcia przeszkody nie będzie nigdy spełniony. Portd.0 i Portd.1 będą = 1 bo tak zostało to ustalone na początku programu i żadne zwieranie końcówek PD0 i PD1 do masy nie pomoże. Stan końcówek...
Przeznaczenie: Konfiguruje pracę programowego interfejsu I2C jako urządzenia podrzędnego (Slave). Ta instrukcja korzysta z biblioteki I2CSLAVE.LIB, która jest rozprowadzana oddzielnie przez MCS Electronics. Składnia: CONFIG I2CSLAVE = adres 'Instrukcja Config I2cslave automatycznie włącza globalny system przerwań! Config I2cslave = &B01000000 'czyli...
Obliczanie zawartości pamięci EPROM for i:=0 to 255 do begin wartosc=128+Round(126*sin(360*i/256)); { 128 ofset, 126 amplituda sinusa} kolumna:=i div 16; wiersz:=i mod 16; {Reszta z dzielenia przez 16} end; Przetwornik można zastosować typu DAC08 (8 bitowy). Częstotliwość wyjściowa generatora to FWY=FCLOCK/256; Jeżeli zapiszemy więcej niż jeden okres...
Ogólnie pod windowsem... Windows blokuje przerwania, na pewno w XP i wyżej. 95,98 Me itd. pewności nie mam ale pewnie też. Bajdewej ten kod jest poprawny i pod VS działa: char c; __asm { mov AH, 0x31 mov c, AH } cout << c << endl; Wypisuje na ekranie "1", więc ok.
Pierwsze pytanie (jeszcze nie dotyczące bootloadera ale pobliskie temu. Pamięć FLASH w STM32F4 jest 32 bitowa? 16? 64? Nie mogę znaleźć jasnej odpowiedzi na to pytanie w reference manualu. Jest coś takiego w rejestrze FLASH_CR jak PSIZE. Gdzie deklaruje się jakieś zapisywanie, że niby uzupełnia się wolną przestrzeń wielokrotnością tego co wpisałem....
Witam, blok BLKMOV służy do kopiowania danych ze źródłowego obszaru pamięci do docelowego obszaru pamięci, przy czym obszary te nie mogą na siebie nachodzić ("System Software for S7-300/400 System and Standard Functions- Volume 1/2" podpunkt 3.1). Powoduje to, że musimy używać dodatkowego bufora, który będzie używany przy przemieszczaniu danych w tworzonym...
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...
Tak się składa, że wiem, że R0 jest wolny a każdy inny zajęty. Dziś jest wolny, jutro jest zajęty - obyś się nie przejechał. No i coś takiego nie działa, bo zmienna StackPointer Działa - potem R4 będzie przepisane do R0 żeby prawidłowo zwrócić wynik. jest ładowana do R4, który to ma być zrzucony instrukcją STMDB Wstawki assemblerowe są dużo bardziej...
Przywroc starsza kopie rejestru i zmienne wroca: F8 przy starcie i ostatnia znana dobra konfiguracja czy jakos podobnie lub wlacz konsole i scanreg /restore A same zmienne masz w rejestrze w: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControl... Manager\Environment Niestety nie mam XP wiec nie powiem Ci jakie powinny byc.
No i jak tu sie wzorować na dokumentacji: The sofware calibration can be done using the formula: T = k * Jak najbardziej można się wzorować, tyle że ten wzór operuje zmienną integer (powiedzmy 16-bitową). W takim przypadku bajt ADCH wysunięty o osiem bitów w lewo daje starszy bajt liczby. W asemblerze wystarczy wpisać odczyt starszego bajtu przetwornika...
Cześć, chciałem przeportować kod do odbioru RC5 autorstwa Dondu za ATMega8 na ATTiny13 - http://obrazki.elektroda.pl/8294459100_1... REzystory diod 470Ω, nie zmieniłem na schemacie. Pilot samoróbka, ale 100% pewniak. No więc w czym problem? Uruchomiłem przykład na ATMega8, wszystko pięknie śmiga. Program kompiluje się dla Tiny13...
Witam, na wstępie dodam że jestem bardzo początkujący w programowaniu. Staram się stworzyć program który by włączał i wyłączał funkcję RGB, poprzez pilot RC5. Staram się to zrobić po kolei i najpierw próbuję gasić i zapalać pilotem diodę. Problemem jest to, że program reaguje na każdy przycisk a nie na konkretny - zaprogramowany. Chce sterować klawiszem...
silniki od wkrętarek, jak najbardziej ale oczywiście te z przekładnią planetarną przy zasilaniu takiej wkrętareczki napięciem 3V mają kopa i spory moment obr. a co do enkoderów to myslę że można by pomyśleć nad tarczą z przesłonkami od myszki i resztą elektroniki tzn.. tylko nadajnik IR i odbiornik IR o ile się nie mylę to jest to zintegrowany odbiornik...
Mam problem z połączeniem dwóch ATmeg8 za pomocą sprzętowego TWI. Otóż chciałbym połączyć dwie ATmegi, z których pierwsza - SLAVE TRANSMITTER - obsługuje akcelerometr poprzez ADC i przekazuje dane drugiej - MASTER RECEIVER - która to z kolei wyświetla dane na wyświetlaczu LCD. Przewertowałem elektrodę, google, datasheeta ATmegi i znalazłem wydawałoby...
wyświetlić zmienną zmienną adres string zmienną
alternator pobiera ampery ekspres xelsis meriva skrzynia easytronic
podłączenie zasilaczy serwerowych saeco xelsis
TDA7388 vs TA8268H – zamienność, różnice pinów, adaptacja w car-audio Symetria grzejnika drabinkowego Gorgiel: co warto wiedzieć?