Czytając o rejestrach liczników, jedyną taką flagą (którą znalazłem), jest TIMx_SR_UIF, czyli UpdateInterruptFlag. Co prawda nie będę włączał przerwania, ale jest to chyba jedyna flaga którą mogę w tym celu wykorzystać, czy też jest jakaś inna lepsza do tego celu? To jest właśnie flaga która jest Ci potrzebna. 4\/3!!
a _delay_ms i _delay_us Ci nie wystarcza ? Do opóźnień nie trzeba wykorzystywać koniecznie przerwań timera. Można wykorzystać flagi timera (o ile się da, ale wszystko zależy). Poza tym, zmienna deb w Twoim programie zapewne nie jest volatile, ale wrzuciłeś nam NIC, także pomoc też nijaka
Tak,to prawda, wykorzystanie flagi zajętości to podstawa. Ale pomimo poprawnej obsługi lcd (nawet w asm) i poprawnego softu nie mamy wpływu na pracę całej elektroniki lcd, pamiętajmy o tym że to nie my zbudowaliśmy ten lcd, ktoś się starał, to prawda ale śmiem twierdzić że jeszcze się taki nie urodził coby zbudował coś czego nie można "wywalić" odpowiednio...
A co dokładnie nie działa? Pewnie cały czas świeci :) Przeanalizuj swoją pętlę while i zobacz co się dzieje po ustawieniu timera :) Podpowiedź: wykorzystaj dodatkową flagę i użyj tylko RAZ timera programowego.
Super, dzięki - spróbuję to wykorzystać u siebie ;) PS. a "Flaga" jak powinna być zadeklarowana ?
Musisz wykorzystać jakaś pomocniczą flagę (zmienną). Wciśnięcie przycisku zmienia stan flagi na przeciwny. To jak zachowuje się wyjście układu zależy od stanu flagi.
A ta flaga nie jest ustawiana w momencie opróżnienia bufora nadajnika czyli po wysłaniu danych ? Opróżnienie bufora nadajnika to nie to samo co wysłanie, wysłanie to wysuniecie wszystkich bitów z rejestru przesuwnego nadajnika. Bufor nadajnika jest tylko pośrednikiem. W nadajniku jednocześnie mogą być dwa znaki (lub więcej jeśli jest FIFO) jeden w...
Druga sprawa. Skoro ma być reset np. BORF: flaga resetu przy obniżonym napięciu sieci, to czy można wcześniej zapisać do EEproma jakieś ważne dane? Zdecydowanie nie należy nic zapisywać do EEPROM przy obniżonym napięciu. Poza tym BOD nie wystawia żadnej flagi przerwania którą mógłbyś wykorzystać. On po prostu resetuje układ o ile jest włączony a następnie...
po wciśnięciu pedała zatrzymał pompa1, pompa2, zawór i poczekał na kolejne wciśnięcie pedała aby ponownie uruchomić pompa (1 lub 2 w zależności od poziomu wskazań wagi) i zawór. Musiałbyś dodać jedną zmienną, tzw. flagę. Flaga może mieć 0 lub 1. Dla przykładu 1 oznacza że pedał był już raz wciśnięty, czyli jeśli wykryjesz jego wciśnięcie to sprawdzasz...
Ok, już sprawdziłem powyższy kod. Jak się okazało, jest w nim błąd. Instrukcja ROR, mogłaby być wykorzystana, gdyby flaga C zawierała wartość najmłodszego bitu rejestru przed wykonaniem operacji. Zamiast ROR, użyłem więc kolejno instrukcji BST, LSR, BLD, niestety kod wydłużył się o 2 CK. Czy ktoś ma pomysł na zoptymalizowanie tego kodu? [syntax=asm]ldi...
Zmieniłem sposób wyświetlania (wykorzystawszy flagę RW) oraz zmieniłem bibliotekę dzięki wielkie xD
markosik20- a tak z ciekawości zapytam- a te bity w rejestrach nie mają swoich nazw? No i w zwykłych AVR jest flaga przerwania i flaga zezwolenia na obsługę przerwania- można to wykorzystać albo do obsługi przerwania albo do sprawdzania w głównej pętli czy flaga przerwania się pojawiła- obsłużyć, skasować itp. A jak jest w ARM? Przepraszam za być może...
Jak zmusić diodę alarmu do migania nie używająć procedur waitms ? Mam teraz zrobine tak: Używasz Timer0 jako pewnego rodzaju 'swoisty' prescaler: (4 ms; 100 ms; i 1 sec). Dlaczego okazyjnie nie wykrzystać tych 100 ms na miganie diodą? Wstaw tą wyżej procedure (troche zmodyfikowana - zamiast "set Porta.5" daj "toggle") w przerwaniu timera0 w miejscu...
Witam, Jak Logo nie chce przyjąć jakiegoś połączenia, to czasami pomaga wykorzystanie flagi M i dalej tą flagę jako znacznik. Czasami pomaga. Ten typ tak ma ;) Pozdrawiam.
Wydaje mi się źe coś jest nie tak ze sprawdzaniem stanu przycisku- nie bardzo mogę to zrozumieć. Klasycznie to robi się tak: if(przycisk==0) delay() if(przycisk==0)//dalej 0 przycisk=1 //naprawdę wciśnięty Można też inkremantować jakąś zmienną aby sprawdzić to 3 czy więcej razy. A lepszym sposobem jest do liczenia opóźnień wykorzystać Timer. I tak masz...
Przetestowałem BMP280 na mojej płytce ESP32-C6. Piny 0, 1, 2, 8, 9 działają poprawnie jako SDA lub SCL. Piny 14 jako SCL i 13 jako SDA, adres i2c jest wykrywany, ale odczytuje nieprawidłowy identyfikator chipa (losowo przy każdym uruchomieniu). Nie działa w odwrotnej kolejności. ESP8266 można przenieść później, SDK są wystarczająco podobne. Ale czy...
Racja, w F1 jest jedynie flaga IDLE ktora moze się przydać. Jej procedura czyszczenia jest jedynie trochę dziwna. W F4 wykorzystanie flagi Idle + DMA działa wzorowo. Cała komunikacja w obu kierunkach odbywa się w tle.
Najprościej mówiąc dla testu bo nie chciałem kombinować z timerem, a tylko sprawdzić tak z grubsza działanie programu Dodano po 34 A czy multipleksowanie powinno być też w przerwaniu czy tylko wykorzystać flagę?
Ten program miałby się wykonywać w następujący sposób po załączeniu wejścia I1 załącza się wyjście Q 86 a jednocześnie flaga F1 załącza wyjście Q87. Następnie po załączeniu wejścia I2 załączane jest wyjście Q90 a jednocześnie flaga F2 załącza moduł tekstowy PCD2 F5. Myślałem że to w ten sposób będzie działać. Więc jak należy przekształcić ten program...
Markery (flagi) są to bity pomocnicze które można wykorzystać podczas pisania programów. Np: I0.0 AND I0.1 = F0.0 F0.0 = Q0.1 przerzutnik wykorzystuje siędo zatrzaskiwania flag i pamiętania ich stanu aby ją wykorzystać w innym kawałku kodu AND I0.0 S (set) F0.0 ... F0.0 = Q0.0 R (reset) F0.0 Powodzenia :)
Jeśli procesora nie wprowadzasz w tryb uśpienia, to zmiana poboru prądu przez procesor jest porównywalna jak by cały czas wpisywał te dane, jak i co jakiś czas.. jak chcesz, to możesz wykorzystać timer do odmierzania jakiś odcinków czasu np 200ms (w przerwaniu ustawiać jedną flagę, nic więcej) a w pętli głównej jeśli ta flaga jest ustawiona, to aktualizacja...
"mój" układ działa dla jednej połówki i w praktyce nie od zera. Czyli procesor jak jest podane 230V, cały czas, widzi aktywne impulsy (niecałe) 10ms i (trochę ponad) 10ms przerwy (nie aktywne). W programie robisz np. że jak raz wykryjesz aktywny, to zmieniasz stan flagi (bitu w pamięci) na 1 i liczysz kolejne 20ms. Jeśli przyjdzie kolejny aktywny to...
Witam pewnie ktoś powinien na początku napisać, żebyś zajrzał do dokumentacji, ale chyba nie jest za późno. Zajrzyj do dokumentacji. Tam są opisane te flagi i przerwania o które pytasz. Jeśli utkniesz w przerwaniu, to może uda Ci się "zamulić" mikrokontroler, tak, że nie będzie mógł wykorzystać ustawionej flagi, ale też nie konieczne. "Atmulki" nie...
Na końcu przerwania, zerujesz flagę (Reset Flag), nazwijmy ją "flaga końca przerwania", a przed każdym odczytem czy zapisem (przed każdym 1Wire...) czekasz aż ta flaga zostanie wyzerowana. Gdy to się stanie odrazu odczytujesz/zapisujesz dane z szyny 1wire i wtedy przerwanie nie powinno przerywać tych odczytów. Do oczekiwania na wyzerowanie flagi wykorzystaj...
w 51 można wykorzystać flagę "C" do której zostanie wsunięty ostatni bit podczas przesuwania bitowego i tęflagę wrzucić na wyjście. 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 (zresztą w pierwszym rozwiązaniu także jest potrzebna...
Kolega excray chce Ci powiedzieć, że kiedy ustawisz timer w tryb CTC, to flaga OCF1B (czyli ta od Output Compare B) też jest ustawiana, tylko z przesunięciem czasowym równym wartości rejestru OCR1B (chyba że do OCR1B wpiszesz wartość większą niż do OCR1A - wtedy flaga nie zostanie ustawiona, bo nie dojdzie do porównania). Od siebie dodam, że alternatywnie...
Ty stosujesz tzw. pulling, czyli sprawdzanie flagi w tym wypadku w pętli: [syntax=c]while(!(UCSRA & (1<<UDRE))); [/syntax] czyli CPU kręci się w pętli i czeka na to, aż flaga da znać, że można dać następny bajt do transmisji. Wskazałem Ci link do artykułu pokazującego jak wykorzystać przerwania, by mikrokontroler zwolnić z ciągłego sprawdzania...
Czy powinien w programie być XOB (16?) ? XOB16 wykonywany jest przy starcie sterownika i jest używany do inicjalizacji danych. Zamiast niego do inicjalizacji można wykorzystać flagi "volatile" ( F VOL ) które są zerowane przy starcie; w programie sprawdza się wartość flagi, gdy jest 0 to wykonuje się inicjalizację i ustawia flagę na 1. Używa się tego...
Tak, ify ciągle są niezbędne w C, miałem na myśli wstawkę w assemblerze i wykorzystanie flagi half-carry, co prawda ciągle potrzebujesz instrukcje skoku warunkowego, a już nie trzeba robić CP/CPI. To oczywiście niewiele zmienia i chyba nie ma sensu się w to babrać. Tak przy okazji masz błąd w sekwencji: if(((godziny_bcd & 0xF0) == 2) & ((godziny_bcd...
Flagę sygnalizującą wystąpienie przerwania kasujesz wpisąjąc do niej 1. Tak dziwnie- bo przecież już jest w niej 1- ale tak to w Atmelach się robi. Flaga jest jedna- jeśli w trakcie obsługi przerwania pojawi się kilkakrotnie to te przerwania pozostaną nieobsłużone. Tę flagę możemy wykorzystać do "obsługi" przerwania w pętli głównej. Czyli- sprawdzamy...
pier- w tym programie który Ci podałem masz wykorzystać zmienną "flaga_dodatkowa" do sterowania wyświetlaczem w sub- a nie w przerwaniu Timer2. Timer2 wyłącz. I daj program po przeróbkach. Żaden kwarc na to nie pomoże- trzeba korzystać z przerwań.
Kondensatory przy rezonatorze należy podłączyć do GND a nie do Vcc. Oj, ale babol - przegapiłem go :) Dodam jeszcze, że to nadawanie 2 razy jest efektem drgań styków (jak się ich pozbyć podałem Ci link w poprzednim poście). Twoje przerwania długo trwają. Gdy styk drga, to wywoła pierwsze przerwanie, a po rozpoczęciu jego obsługi zerowana jest flaga...
Witam ponownie udało mi się uruchomić ADC błąd polegał na tym, że pomiaru dokonywałem w przerwaniu od Timera i za nim dochodziło do konfiguracji ADC wykonywane było to przerwanie, w którym miałem ustawianie bitu ADCstart, który nie pozwalał na późniejsze przejście kalibracji podczas konfiguracji ADC. Mam teraz inny problem otóż chciałbym dokonać pomiaru...
Czyli przyjmujemy, że nie ma problemu z drganiami styków i innymi zakłóceniami. Jeżeli dobrze zrozumiałem zasadę działania czujników oraz Twój cel i chcesz wykorzystać obydwa INTx, to zrobiłbym tak: 1. pod INT0 podpinasz sygnał decydujący o starcie i końcu zliczania 2. pod INT1 podpinasz sygnał, który ma być zliczany Pseudo kod: 1. inicjacja: 1.1 INT0...
Witam W obsłudze przerwania nie powinno być żadnych waitms itp poleceń które blokują program, Wykorzystaj timer i flagi do odliczania konkretnych odcinków czasu a wszystko inne powinno leżeć w do loop. W przerwaniu nie ma po co wyłaczać timera, tylko trzeba zrobić dzielnik tak aby flaga była ustawiana co 4ms lub 3ms tak jak chciałeś mieć. Potem trzeba...
VF = verkers funk czyli radio kierowców. Czyli taki przodek RDS. Nazywało się to ARI lub SDK. A łatwo to wykorzystać tylko trzeba się zastanowić nad dekoderem tych komunikatów i radio będzie się przełączać na AUX jako kanał z komunikatami VF. Acha potrzeba wykorzystać 2 flagi SK i SDK z tego układu.
Witam Pytanie 1: Zrobiłem coś takiego że jeśli odebrano znak to jest wygenerowane przerwanie Urxc następnie przed instrukcją INPUTBIN uruchamiam przerwanie Timer0 jako licznik czasu który chcę wykorzystać do przeterminowania czasu odebranego znaku. bo INPUTBIN B(1), 6 oczekuje na 6 bajtów. Jak wysyłam całe 6bajtów to działa poprawnie, a jeśli bym wysłał...
Owszem, PWM chodzi niezależnie od programu głównego, ponieważ jest obsługiwane sprzętowo. Nie zmienia to jednak faktu, że konstrukcja programu jest błędna. Przerwanie powinno wykonywać się jak najszybciej. Wszelkie czasochłonne obliczenia wykonywane być powinny w programie głównym. Timera 0 możesz użyć do odliczania czasu, a resztę robić w pętli while(1)....
Chcę zbudować układ złożony z dwóch sterowników. Pierwszy z nich ma symulować sygnały z enkodera, drugi zaś liczyć RPM na podstawie częstotliwości sygnału z pierwszego sterownika. Istnieją gotowe funkcje umożliwiające wytworzenie sygnału o wysokiej częstotliwości jednak wydaje mi się, że mam błąd w oprogramowaniu właśnie dla nich. Szukam zatem jakieś...
Witam, 2) Jeżeli chcę w przerwaniu ustawić flagę , czyli zmienną typu char, to czy szybciej będzie, jeśli zrobię to jako flaga=1; czy flaga++; ? Oczywiście zdaje sobie sprawę, że druga opcja może spowodować po jakims czasie przepełnienie i wyzerowanie się mi tej flagi, ale sytuacja jest bardzo rzadka, więc nie obawiam się takiego przypadku. Przerwanie,...
Ja miałem kiedyś chyba podobny problem. Przyczyną był uszkodzony czujnik optyczny od jakiejś flagi. Wykorzystałem taki z OKI B6300. Gdzieś powinienem mieć podobne czujniki.
Wystarczy zamienić funkcję wait na taką, która wykorzystuje timer - nawet niekoniecznie przerwania, po prostu czeka, aż stan timera zwiększy się o odpowiednią wartość (odczytujemy timer, obliczamy stan końcowy i czekamu w pętli aż timer tyle osiągnie) - taka pętla będzie w miarę niezależna od przerwań, no chyba że w tych przerwaniach spędzasz strasznie...
Hej, korzystam z USARTA na STM32L4. Podczas odczytu / wysyłu danych zakładam że szerokość ramki jest stała (4 bajty). Odczyt 4 bajtów jest prosty i z tym nie mam problemu. Projekt zakłada jednak, że raz na jakiś czas dane mogą przyjść niepełne - np. 2 lub 3 bajty. Z obsługą takiej sytuacji mam jednak problem. Chciałem do tego wykorzystać flagi [syntax=c]USART_ISR_IDLE[/syntax]...
Witam! Jak powinna zachowywać się flaga RXC w tym uC? Według specyfikacji powinna wyzerować się, gdy nowe dane zostaną odczytane z rejestru UDR. W tym momencie głupieje :). Program: int main(void) {//sei(); UBRRL=0x33; // BaudRate UCSRB =0x18; // RXEN TXEN //UCSRB |=0x80; while(1) { if (RXC) { znak = UDR; znak++; while(!UDRE); UDR=znak; } } } Powyższy...
Co do programu na megę328: 1. Niepotrzebnie dołączasz sfr_defs.h 2. O F_CPU w kodzie było już miliony razy na forum. 3. Dla ułatwienia obliczeń prędkości polecam util/setbaud.h 4. W rejestrze UCSR0C ustawiasz bity, które po resecie są ustawione. 5. W UCSR0B nie włączasz przerwania od odbioru (bit RXCIE)! Dodatkowo niepotrzebnie stosujesz sumę bitową...
Za to mam problem z temperaturą. W pokoju mam 20, może 22 stopnie, a termometry pokazują 25, a przy niektórych włączeniach, nawet 29 stopni. Pomiędzy jednym a drugim 0.2, 0.3 stopnia różnicy. Rezystor podciągający użyłem 3.3K, zamiast 4.7K, ale to chyba nie jest wina tego. Wartośc rezystora podciągającego magistralę 1-wire nie jest krytyczna i to w...
nie wykorzystałeś mechanizmu flagi , jej ustawiania i zerowania. Generalnie ten mechanizm powinien wyglądać mniej więcej tak: Dim Flaga as Byte flaga = 0 Do if Flaga = 1 then Flaga = 0 .... tutaj reakcja na zdarzenie, np wyświetlenie czegoś na LCD Endif Loop ' podprogram obsługi jakiegoś tam przerwania Przerwanie: ...Obsługa jakiegoś tam zdarzenia...
To jest dobry pomysł. Na początku main(), zaraz po inicjalizacji LCD wrzuć funkcję wyświetlającą napis np "RESET" i będziesz wiedział, czy to funkcja się wywołuje czy uC się resetuje. Można także wykorzystać flagi resetów z MCUCSR, a konkretnie bit PORF. Bit 0 – PORF: Power-on Reset Flag This bit is set if a Power-on Reset occurs. The bit is...
Chciałem osiągnąć zmianę stanu diody co 1s, nie potrzebuję jak na razie przerwania, a chciałem wykorzystać tylko flagę przepełnienia TOV0 żeby równo odmierzać czas. Trochę poprawiłem warunki, ale program znowu stanął: [syntax=c]TIFR &= ~(1<<TOV0); TCNT0 = timer_start; do if(TIFR & (1<<TOV0)) cnt++; while (cnt<3); cnt = 0; PORTA...
Zliczanie czasu w sterowniku TMR 0,01s Omikron, odbywa się w pamięci wewnętrznej i jest ustawianie jako flaga (może być "podglądane" za pomocą podłączonego komputera lub kontrolera PLC). Nie bardzo rozumiem co chcesz uzyskać... Czy chcesz zmieniać czas wyzwalania timera, czy wykorzystać wskazanie czasu w pamięci? (Obie rzeczy są niemożliwe...)
Witam Panowie Dzięki za zainteresowanie i poświęcenie czasu . Dzięki użyciu FLAGI "B" program w pętli głównej nie marnuje czasu na LCD i wyświetlanie wyniku zmiennej A . Nie najlepszy to przykład dla przedstawienia konceptu stosowania flag. Poniżej masz trochę zmodyfikowany twój przykład reagujący wyświetleniem wyniku V z pomiaru ADC tylko w przypadku...
No dobra to tak trochę "po chłopsku" to opiszę: Jeśli ustawisz Bytematch = 13 to znaczy to tyle, że program przejdzie od podprogramu w którym może być tylko jedna linijka np. jak ja to zrobiłem w moim programie wysylania sms: Serial0charmatch: Input Todczyt Noecho Return Oczywiście trzeba ustawić Input na działanie tylko na znak enter (13). Proste...
dondu: Ja wcale tego pisać nie muszę :-) Po prostu zastanawiam się skąd taka maniera bierze. Ale dzięki za dbałość o mnie. Właściwie to ciekawsza byłaby dla mnie odpowiedź niż zlikwidowanie tej maniery. Moim zdaniem z braku umiejętności posługiwania się timerami, czyli po prostu brakiem doświadczenia, ale to jest normalne zjawisko, więc szansa że zaniknie...
Możesz wykorzystać nie przerwania ale flagi. Zaczynasz od wykrycia Start i odczytujesz co dzieje się na magistrali.
Zrób sobie jakąś flagę którą ustawiaj gdy zakończy się przerwanie. Następnie zainteresuj się "while" i "wend". Następnie umieść odpowiednią instrukcję przed odczytem z DS-a. Prawdopodobnie będziesz musiał to umieścić 2 lub 3 razy. Całość polega na tym że flaga informuje nas o tym że zakończyło się przerwanie i mamy jeszcze trochę czasu który wykorzystamy...
ok, dzięki Wszystkim za wskazówki, wykorzystałem tą globalną flagę i rozwiązało to problem. Zamykam. Widzę szacunek dla pomagających ale nie widać tego względem innych i tego forum. Postaraj się pisać bardziej po polsku. Dar.El
Kiedyś robiłem coś podobnego i wykorzystałem taki sposób. Zrobiłem sobie flagę która informowała mnie że odebrałem liczbę. Potem prosty warunek typu: If odebrano = 1 then a=odebrana_liczba do If odebrano = 1 then b= odebrana_liczba gosub label1 end if end if loop W podprogramie label1 miałem pętlę w której był sprawdzany warunek odbioru itd. aż do odebrania...
A czy gra "FLAGI" działa na podstawowej cobrze (oczywiście bez koloru) ? W tym programie spakowane dane obrazka każdej flagi rozpakowuję - kolor do obszaru FB00-FC00 - z rozpakowanych danych w obszarze FB00-FC00 korzysta podprogram SPRITE, który wypełnia odpowiednimi kolorami prostokąt w pamięci koloru (FC00-FF00) -znaki do obszaru FB00-FC00 - z rozpakowanych...
W obsłudze przerwanie Timer1 zrób tylko ustawianie flagi, a załączanie i całą resztę przenieś do pętli głównej, właśnie tu sprawdzające stan tej flagi. Zamiast grzebać programowo W Timer1, wykorzystaj możliwości Timer1 compare, np w trybie PWM, bez używania przerwania. Ogólnie polecam : http://www.easy-soft.tsnet.pl/modules.ph...
Teraz nie jest już skomplikowany - tylko 1 flaga i 1 zmienna. Wykonuje się szybko i co najważniejsze jest przejrzysty - a o to też przecież chodzi (z tego względu wprowadzono języki wysokiego poziomu żeby się później nie motać). Szczerze to brakuje mi jakichś dobrych przykładów, kursów itp. do robienia obsługi wielu rzeczy (choćby jak zrobić przejrzyste...
ok to jakoś sobie poradzę z tym co mi napisał Freddie Chopin, bo jakiś konkret się pokazał jeden :/ W przerwaniu chodzi o to chyba by zawiesić obecnie wykonującą się instrukcje na rzecz innej o wyższym priorytecie. W zasadzie NICZYM się to nie różni od tego gdybyś całość umieścił w pętli głównej i nie używał żadnego przerwania. Pytałem się o te przerwanie...
Sprawdziłem i to faktycznie działa, ciekawe jakie mają łącze i w jakim stopniu jest zatkane przychodzącymi pakietami ICMP. Projekt jest niezłą wymówką do zapoznania się z generatorem pakietów Prośba o info i zrzut ekranu gdy uda się coś wyświetlić.
A jeżeli wykorzysta się bitbanding do zerowania flag, to wykonają się w jednej fazie i będzie ok?
Dzisiaj zamierzam to sprawdzic, wczoraj już nie miałem sił - ginekolog, szkoła rodzenia itp-wrażenia:) Faktycznie zmiennych juz troszke jest, poza tym menu oparte mam na CASE'ach i jest ich troche-przełączam dziesiatkami (dana dziesiatka to okreslone menu i podmenu). Procedury dopiero 3 i ze 2 podprogramiki w tym od przerwania. Najgorsze, ze to dopiero...
Jeżeli dobrze zrozumiałem twój problem to: Wykorzystaj odejmowanie z uwzględnieniem flagi C, i wtedy zaczynasz odejmować po 10000, później 1000 itd (skoro obrałeś już taką metodę).
Stale to jest- ale ostatnio jakby więcej. "Napisałem program- działał. Dodałem odczyt z czujnika- przestał". Może postaram się opisać elementarne zasady korzystania z przerwań od Timera aby uzyskać możliwość obsługi więcej niż jednego zadania. Mamy program który wykonuje się liniowo- instrukcja po instrukcji. START deklaracje funkcji. definiowanie konfiguracji...
W trybie timera, który ustawiasz wykorzystujesz tylko jeden z rejestrów OCR zobacz tabelkę: Table 40. Waveform Generation Mode Bit Description i ustal który. Wykorzystujesz przerwanie z przepełnienia timera. Skoro jednak wykorzystujesz tryb CTC oraz ustawiasz (wprawdzie na razie na maks) rejestr OCR, to domyślam się, że chciałeś wykorzystać przerwania...
To czy ktoś sobie użyje całego bajtu czy nawet dwóch bajtów albo i nawet łańcucha znaków, który będzie coś sygnalizował w innej części programu - można na swój użytek nazwać flagą. To, że typowo mechanizm flag opiera się zwykle o pojedyncze bity sygnalizujące jakiś stan, wcale nie oznacza, że nie można w tym celu wykorzystać całego bajtu. Może sobie...
Przepisz poprawiony program i dodaj komentarze. Nie- "początek obsługi przerwania" bo to każdy widzi. Ale- np. "przerwanie od przepełnienia timer0 wywoływane co x us"- bo nie chce się liczyć co ile. http://www.starz.pl/elektronika/kalk.rar Teraz tak- możesz URUCHOMIĆ przetwarzanie ADC ustawiająć odpowiednio rejestr SFIOR. Możesz dać dodatkową flagę...
Pochodzi od czujnika przerwania wiązki, drgań styków nie ma : ), znalazłem że czyszczenie flagi przerwania powinno być na początku, ale to niestety nie pomaga, i nadal pozostaje problem z wykrywaniem obu zbocz a nie tylko jednego Dodano po 10 Przeszukałem forum, kilka kursów po polsku i angielsku i ten kod z pierwszego postu jest identyczny jak te z...
Notmalnie, przecież licznik w tym przypadku służy tylko do odmierzania czasu, żeby w ściśle określonym momencie wyłączyć diodę. Dodatkowa zmienna jest zupełnie niepotrzebna. Przerwanie timera można wykorzystać do czegoś innego (konkretnie przerwanie porównania) - do określania momentu wyłączenia LEDa i ustawienia flagi sygnalizującej konieczność uaktualnienia...
Też się mordowałem z fixboot i fixmbr, instalator czasem montuje dyski w trybie read-only i tyle, ponowne zamontowanie często pomaga, ewentualnie jeszcze raz odklikać Odśwież w instalatorze graficznym, aby przeskanował dyski. Zrobiłem też innego pendrajwa z inną wersją instalatora windows i poszło. Już nie pamiętam czy to była 7 z instalatorem z win...
Tylko jest jedno ale. To zajmuje 45 cykli, czyli tyle ile jakbym to robił po Ifach dla każdego portu. Dodano po 9 Sorki, na ifach byłyby 72 cykle (4 na każdy) A w ilu cyklach musisz sie zmieścic? Możesz sprawdzac instrukcją warunkową nie pojedynczy pin ale cały port wejściowy Np.: [code][syntax=basic4gl] Do If Pinb > 0 Then Flag = 1 Reset Portc.2 Temp...
Witam! Z pewnością chcesz wykorzystać mechanizm "polling" :) jak to się ładnie nazywa w dokumentacjach. Po pierwsze w ATmega8 nie ma flagi Tirf.0, jest natomiast flaga Tifr.0 o którą zapewne Ci chodzi, dlatego pewnie nie do końca che działać. ;) Pozatym aby używać przerwań w ATmega8 musisz też odblokować globalny system przerwań, ponieważ po starcie...
Tak, masz rację, po prostu przyjąłem, że typową operacją będzie if(flaga) flaga=cośtam. Spakowana struktura będzie dawała dokładnie to samo, po warunkiem, że będzie w obszarze dostępnym dla cbi/sbi, część AVR ma wydzielone rejestry GPIOR, w części do tego celu można wykorzystać rejestry układów peryferyjnych, których zmiana nie pociąga żadnych konsekwencji....
Cześć, problem polega najpewniej na tym, że pendrive jest źle przygotowany jako nośnik instalacyjny. Do utworzenia nośnika wykorzystaj program RUFUS. Samo formatowanie nie pomoże, ponieważ na nośniku muszą jeszcze być ustawione odpowiednie flagi. Pozdrawiam Serdecznie, Ksawery
z tego ci widzę to podłącz sobie RC5 do INT0 lub INT1 ustaw przerwanie na zbocze chyba opadające i tam daj podprogram z kodem dim flaga as bit reset flaga do if flaga = 0 then set (tu twoja dioda led) wait 2 reset (dioda) wait 2 else wykonanie tego co chcesz (albo wykonaj to w podprogramie przerwania czyli tak if command = 13 then to co chcesz wykonać...
Hmmm... ale jeśli poprawa wydajności ma polegać na cyklicznym wysyłaniu jednego znaku z bufora, np raz na 1ms korzystając z timera programowego lub sprzętowego, to i tak linia RW nie jest potrzebna. Po wysłaniu każdego znaku, funkcja obsługi wyświetlacz by się kończyła, a w tym czasie procek robiłby coś innego. Można założyć, że w ciągu tego czasu...
Program Trawiarki PCB przerobiony nie działa nie daje się kompilować Schemat http://obrazki.elektroda.pl/5213318500_1... Wejścia przełączników podłączony do portd.3 i portd.4 oraz wolny portd.5 chcę wykorzystać do załączenia pompki do napowietrzania po osiągnięciu temperatury 35 stopni oraz załączania oświetlenia miejsca trawienia. [syntax=vbnet]'*************...
A nie prościej wykorzystać przerwania EEPROM? Inicjować je flagą potrzeby zapisu struktury? A w przerwaniu "lecieć" po kolejnych elementach struktury? robiw Można tak, albo dodać kopiowanie struktury do bufora tymczasowego z którego odbędzie się zapis. Ma to sens jeśli w czasie zapisu pola struktóry moga się zmienić - dojdzie wtedy do uszkodzenia danych....
flaga==0; cóż to za cudo? Wykorzystujesz przerwanie TIMER1_OFV_vect a licznik ustawiasz w tryb CTC z wykorzystaniem COMPA. nic dziwnego ze nie działa. 2 sprawdzenie czy wciśnięto klawisz zbyteczne. if(flaga==1) { TCNT1=0x00; nie tylko zeruj licznik ale i włącz go, bo TCNT1=0X00; tylko zeruje licznik a nie zatrzymuje Dodano po 4 Ma byc...
Alternatywą jest pomysł asemblera czyli przerwania. Można by wykorzystać tak zwane "software'owe przerwania". Czyli wybierasz sobie dowolne nieużywane przerwanie, w jego obsłudze umeszczasz pętle opuźniąjącą powiedzmy na 1s i przed RETI ustawiasz flagę przerwania (tego samego w którego obsłudze jesteś). Procek wyjdzie z przerwania i zobaczy że znowu...
http://obrazki.elektroda.pl/9389203100_1... Witam. Projekt potencjometru cyfrowego zrodził się po tym, jak analogowy potencjometr wieloobrotowy uszkodził się. Nie chciałem, aby ponownie coś takiego się stało (te potencjometry są dość drogie ;P około 30zł), więc postanowiłem wykonać coś lepszego. Założenia regulacja rezystancji od 0-100...
http://www.ime.uz.zgora.pl/mkoziol/mcs51... skoro nigdzie nie ma sumowania przyciśnięć. Chodzi o to by sprzętowy licznik zliczał przyciśnięcia. Po jego przepełnieniu flaga TFx się ustawi, co oznaczać będzie zliczenie . Dlatego wypada wykorzystać wejście Tx do taktowania licznika. Można to zrobić w nieco inny sposób, sterując programowo...
Przerwania PCINTx wykonują się przy każdej zmianie stanu logicznego, niema możliwości konfiguracji np. tylko dla zbocz narastającego lub opadającego. Stan zbocza na poszczególnym pinie sprawdzasz w przerwaniu. Attiny13 ma 6 pinów PB.0-PB.5 (PCINT0 do PCINT5) które mogą wywołać przerwanie. I tu jest jedna myląca rzecz :) dla tych pinów jest tylko jeden...
Wystarczy, że ustawisz odpowiedni bit w rejestrze EECON i pamięć EEPROM jest widoczna jako zewnętrzna pamięć danych i obsługiwana rozkazem movx. Odczyt (adres w DPTR): movx A,(at)DPTR Zapis (adres w DPTR, dana w ACC): movx (at)DPTR,A Po zapisie (lub przed nim) trzeba sprawdzić flagę zajętości EEPROM i to wszystko.
A może wykorzystać Timer0 i ustawić odpowiednio rejestr SFIOR? Wtedy przerwanie od Timer0 compare wyzwala ADC. A pojawienie się flagi moźna sprawdzać w pętli głównej albo w przerwaniu od ADC.
Witam. Na wstępie chciałem zaznaczyć że jeżeli chodzi o Asemblera to jestem kompletnie zielony, a pech chciał że musze wykonać dwa zadania z nim związane, więc będe wdzięczny za każdą wskazówke i okazaną pomoc ;) Zad 1) Napisz kod w asemblerze odpowiadający fragmentowi kodu w C z wykorzystaniem TYLKO instrukcji MOV, SHL, SHR, SUB, JZ, JNZ, POP i PUSH...
Zrobiłem taki schemat i teraz mam dwa pytania: 1. do wszystkich osób, które działały już z układami Cypress'a o odpowiedź, czy piny typu: IFCLK, CLKOUT, FLAGA, FLAGB, itp. mogą pozostać niepodłączone czy trzeba jednak z nimi coś zrobić? 2. ogólnie do wszystkich zainteresowanych tematem, czy od strony hardware'u to będzie działało? zdecydowałem się na...
Dlaczego wykorzystałeś drugie rozwiązanie zamiast pierwszego (IMHO - znacznie lepszego)? Wykorzystując takie zmienne jako flagi prowadzisz do niepotrzebnego komplikowania kodu i utrudnienia kontroli dynamicznie rozwijającego się programu :) Jedna z propozycji rozwiązania problemu: [syntax=c]char SPI_MasterTransmit(char cData){ char spi_return; ATOMIC_BLOCK(ATOMIC_RESTORESTATE){...
Dzień dobry, dziękuję za szybką odpowiedź. https://www.youtube.com/watch?v=pdvhViM9... Działem dokładnie na podstawie wskazanego przez Kolegę poradnika (już na samym początku zanim zdecydowałem się zwrócić o pomoc na forum). Tak jak już wcześniej pisałem bezskutecznie. http://forum.android.com.pl/topic/220237...
Witam Nie znam dobrze sterownika S5. W logo siemensa żeby zachować stan wystarczyło wykorzystać właśnie element RS, dlaczego nie mogę zrobić tego samego w S5. Napisałem program: A I 0.5 S F 20.1 A I 0.6 R F 20.2 A F 20.1 = Q 1.0 Problem w tym, że jeśli czujnik I 0.5 mignie to flaga F 20.1 nie będzie trzymać stanu 1. Proszę o pomoc jak to rozwiązać w...
Jest to pomysł, aby nadać pewne priorytety czynnościom. Np. dla mnie ważny jest zapis, więc może dam dodatkowy warunek - sprawdzanie stanu pinu, który steruje zapisem ( CS_SD ) i gdy jego stan niski to blokować działanie innych podprogramów. Samo wykonywanie po kolei może się do końca nie sprawdzić, bo np : - DTH11 co 2 minuty - zapis SD co minutę -...
Witam! Chciałem się podpiąć do tematu. Również mam problem z tym zegarkiem. Flagi b0 i b1 zmieniają swój stan odpowiednio co 0.5s i 0.5min. Można to wykorzystać np. w celu mrugania znakiem pomiędzy liczbą godzin i minut (dokładnie chodzi mi o b0 0.5s). Problem polega na tym, że jeśli ustawię zależność świecenia się znaku ":" pomiędzy godz. i min. względem...
Witam. Zassałem szablon flash, zarówno jest plik .fla http://obrazki.elektroda.pl/8325300500_1... jak i .swf i inne takie -lecz nie mam bladego pojęcia jak zacząć pracę z tym szablonem w MFP 8... http://obrazki.elektroda.pl/1465659000_1... Czy ktoś mógłby, tak łopatologicznie przeprowadzić mnie przez proces obróbki w...
wyświetlacz nie pracuje tylko i wyłącznie w trynie odczytu to zwykła głupota, wyjściem może byś zapamiętanie stanu portu w przerwaniu i odtworzenie go po wyjściu z przerwania, w tym przypadku zalecałbym wykorzystanie wyświetlacza bez wykorzystania flagi zajętości. 2 wyjściem może być wyłączanie przerwania od klawiatury podczas realizacji funkcji obsługi...
Na początek taka uwaga: Driver Atmela bazuje na przerwaniach, w związku z czym wymaga globalnego zezwolenia na przerwania, czyli ustawienia bitu I w SREG. Z tego też powodu nie można używać go (w sposób przedstawiony w przykładzie obsługi PCF8563 Kod 3. .............. Owszem, tutaj również się program nie zawiesza. Ale też nic nie odczytuje. To, że...
Żaden spec od mikrokontrolerów nie jest w stanie postawić diagnozy?? Przepraszam , do mnie "pijesz" :?: :) Tyle się tego(gotowców) poniewiera na elektrodzie ... :( Naści :D // enable use of extended keywords #pragma language=extended #ifndef ENABLE_BIT_DEFINITIONS #define ENABLE_BIT_DEFINITIONS // Enable the bit definitions in the iom16.h file #endif...
Wydaje mi się że nie opłaca się ładować tych 32 bajtów do eepromu , pewnie procedura odczytująca zajmie więcej miejsca. Ale :) można by tam coś innego władować, w eepromie masz coś około 500 bajtów wolnych. Wolne miejsce można by wykorzystać na teksty wyświetlane na LCD. Niektóre łańcuchy też się powtarzają. Często masz np . [syntax=basic4gl]Locate...
http://obrazki.elektroda.pl/5724768100_1... Witam, Aktualnie buduję/remontuje niewielką tokarkę, do zastosowań domowych. Jej mechanika jest dość prymitywna, co za tym idzie nie posiada żadnych podziałek, ani automatycznych posuwów. Wobec tego chciał bym zaopatrzyć ją w liniał, który będzie pokazywał pozycję imaka na wyświetlaczu LCD....
flaga bascom obsługa flaga flaga funkcja
falownik bonfiglioli wchodzi kapilara sprężyna siłownika krups
philips senseo licznik geigera
Samoistne zamykanie ProgTV 2.20.05 z tunerem Rebel KOM 1060 Czy MOSFET może zastąpić diodę? Analiza i zastosowania