Czy RTC (zegar czasu rzeczywistego) używający Timera 2 w trybie asunchronicznym , działa nawet wtedy gdy wyłączone sa przerwania globalne ? ... kwarc, preskaler oraz Timer2 nie potrzebuje przerwań ale to nie wystarcza do zrobienia całego RTC to wystarcza do zrobienia przerwania co 1 sekundę a reszta zegara musisz zrobić programowo i to właśnie na przerwaniu...
No dobrze - o matko (sorki) moja kurza ślepota ale zwrócę uwagę na coś innego mocno niepokojącego w twoim kodzie. On się cały czas resetuje po przerwaniu. Po pierwsz po co ci cli() i sei() w przerwaniu (przecież wyłączenie innych przerwań po wejściu w każde przerwanie dzieje się z automatu) ale już wplecenie rozkazu: reti(); to wyciągnięcie dywanika...
OK, no to następne podejście z nadmiarowym kodem testowym odliczającym w kółko na ATmega8515 zamiast ADC - wyświetlanie bez zarzutu. Co do tego dziwnie wyświetlanego zera, to może masz zamienione a z g, b z f itp. W tej wersji łatwiej zapanować nad częstotliwością odświeżania segmentów - zbyt duża skutkuje podświetlaniem sąsiednich cyfr, zbyt mała -...
Do arturt134 Wyłączenie przerwania na czas odpowiadający pracy powiązanej z przerwaniem( oczywiście nie globalne wyłączenie przerwań, co byłoby po prostu odsuniętym przerwaniem bez zagnieżdżeń) jest dobrym rozwiązaniem. I skanowanie klawiatury zamiast przerwań też jest dobre. Ale nie mogę się zgodzić co do uniwersalności Twojego rozwiązania. Jest przejrzyste...
https://obrazki.elektroda.pl/5705697300_...
Witam , Zaczynam z AS6, dotąd używałem 4.18 głownie z asemblerem Pytanie dotyczy możliwego błędu symulacji prostego kodu w AS6, do potrzeb zapytania sprowadzonego do wersji jak niżej : http://obrazki.elektroda.pl/4044092400_1... również wygenerowany kod obsługi jest poprawny http://obrazki.elektroda.pl/7240738500_1...
Dobrze, wytłumaczę więc jeszcze raz od początku o co mi chodzi tak żeby wszystko było jasne i zwięzłe. Rozchodzi mi się o akapit : If a logic high level (“one”) is present on an asynchronous external interrupt pin configured as “Interrupt on Rising Edge, Falling Edge, or Any Logic Change on Pin” while the external interrupt is...
Witam mam bardzo nietypowy jak dla mnie problem z układem który ostatnio wykonałem. Mianowicie jest to centralka alarmowa oparta o uC ATmega16. Działa na tej zasadzie że pod wejście PB2(INT2) podpięty jest kontrakton (zwiera do masy) do którego przykładam magnes i albo rozbrajam albo uzbrajam centralkę. Z grubsza to wygląda tak: PB2(INT2) skonfigurowane...
Witam, Niestety ostatnio od kilku miesięcy mam bardzo mało czasu na swoje hobby i zabawę z prockami więc teraz tak z marszu ciężko mi sobie przypomnieć jak dokładnie działałem z tym PowerDown w swoim pilocie ale wkleję poniżej swój kod taki jaki działa do dzisiaj w tym moim pilociku i to bardzo dobrze działa - moż coś to pomoże. Niestety kod jest w...
Nie wiem po co Ci ten zmienny przecinek - chyba nie ma problemu z policzeniem wszystkiego na liczbach całkowitych. Nie wiem też, na co miałbyś czekać w przerwaniu. Możesz do wszystkiego używać jednego timera, np. tego od PWM - to zwykle lepsze rozwiązanie niż zgłaszanie przerwań z kilku timerów. Sam zadecyduj, jak często chcesz wykonywać pomiary -...
pawel_konin -> podaj dokładny schemat (lub zdjęcie HD) i program którym to testujesz. [syntax=c] /* * GccApplication1.c * * Created: 2012-11-12 16:25:45 * Author: Pawel */ #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include <util/atomic.h> #include <math.h> #define NOOFSAMPLES 128 // ilosc...
Witam, jeśli chodzi o programowanie uC to jestem początkujący. Mam problem z programowym pwm na attiny13a. Mój program bazuje na programie M. Kardasia z książki. Na atmedze16 działał dobrze, ale jak przerobiłem go na attiny13a wg noty katalogowej, to dioda nie świeci. Wiem, że na pewno coś przekręciłem. Jeśli chodzi o podłączenie do programatora i samego...
no tak programista z bozej laski nie dodal 2 klamerek, teraz jjuz nie wyrzuca bledow, pytanie tylko dlaczego ekran tak jakby miga nic nie wyswietlajac, co robie jesscze zle? funkcje na pewno sa dobrze poumieszczane, bo do innej czesci programu wszystko dziala, ale umieszcze caly program zeby nie bylo watpliwosci:: #include <avr/io.h> #include...
dzięki za odpowiedź. z tego co czytałem to literki(scancode'y) są przerywane kodem 0xF0 W takim razie w jaki sposób zignorować ten kod, ktory jest wysyłany po puszczeniu klawisza ? myślałem o wstawieniu pewnej flagi tylko nie wiem, w którym miejscu, przypuszczam że gdzieś obsłudze przerwań mogła by być, mam rację ? edited: rozwiązano! myślę, że Twoje...
Chodzi mi o to że w bascomie żeby przerwania działały musisz włączyć globalną obsługę przerwań, i dopiero konkretne przerwanie. Do tego widzę że nie ma jak się wykonać podprogram "readir" bo masz wyłączoną globalną obsługę przerwań. Proponuję : [syntax=basic4gl] Config Rc5 = Pine.4 On Int4 Readir Config Int4 = Low Level Enable Interrupts Enable Int4...
Do kolegów co podpowiadają mi użycie makr, tak jak pisałem wczesniej, uzywam Codevision a w nim nie ma czegoś takiego - chyba. Jak już wcześniej napisałem, moim zdaniem przy takich procedurach obsługi przerwań program powinien się wyrobić bez konieczności zagnieżdżania przerwań, a przyczyna złego zliczania może leżeć gdzie indziej. Możesz oczywiście...
jeśli chodzi o inne przerwania od układów peryferyjnych to poza ustawieniem rejestrów tego układu muszę włączyć to przerwanie i czy tu wystarczy funkcja z core_cm3 np. NVIC_EnableIRQ( RTC_IRQn ); tak I dlaczego nie musiałem włączyć globalnych przerwań żeby SysTick działał?;] Przerwanie SysTick jest w grupie exceptions, ich się nie da wyłączyć w NVIC....
1. Dla SysTicka nie włączasz NVIC, bo to przerwanie jest w NVIC zawsze włączone (w ogóle nie da się go wyłączyć inaczej niż wyłączając globalne zezwolenie na jakiekolwiek przerwania). 2. Generowanie przerwania włączasz w SysTicku [; Reasumując: - SysTick->LOAD - wartość "przeładowania" - SysTick->CTRL - dla takiego działania jak chcesz ustawiasz tam...
Bo nie masz WYŁĄCZAĆ przerwań tylko je WŁĄCZYĆ. Zaraz po wejściu do przerwania INTx ustaw globalne zezwolenie na obsługę przerwań. asm("sei"); Dobrze by też było tuż przed tym wyłączyć zezwolenie na obsługę przerwania INTx żeby samo siebie nie zagnieżdżało. I tutaj rejestr GICR faktycznie będzie potrzebny. Coś takiego: ISR INTx()...
Witam wszystkich, to mój pierwszy post na forum :) Od niedawna bawię się w programowanie AVRów. Zaprogramawałam na Atmedze16 coś w rodzaju programowanego termometru, tzn. aktualna temperatura jest mierzona przez czujnik DS18B20, porównywana z zaprogramowaną wartością, i jeśli zajdzie odpowiednia zależność (większa/mniejsza z dokładnością co do szerokości...
Napisz tak: Dim Zmienna As Byte Zmienna = 0 Config Intx = Low Level | Rising | Falling [ | Change ] 'Konfiguracja reakcji na sygnał przerwania 'za x podstaw nr przerwania wybierz jeden ze sposobów pobudzenia kocówki uC Enable Interrupts 'Uruchomienie przerwań globalnych Enable Intx 'Uruchomienie przerwania INTx On Intx Obsluga_przerwania 'wskazanie...
Jak nie zostaje wyłączone... Przecież podczas wykonywania przerwania inne są automatycznie blokowane, właśnie poprzez wyzerowanie globalnej obsługi przerwań - tak więc nie ma nawet potrzeby stosowania specjalnych zabiegów (cli) w tym celu, to właśnie żeby włączyć stosuje się sei w przypadku, gdy trzeba odblokować przerwanie tak, aby możliwe było jego...
Witam serdecznie!! Potrzebuję uruchomić RS232 pomiędzy PICem a PC, do PC nic nie dochodzi, nawet 'krzaki' :/ Fragment kodu gdzie ustawiam RSa: void init_comms(void) { TRISC = 0x30;//ustawienie RC5, RC4 SPBRG = 25;//ustawienie baud rate 9600, przy 4MHz BRG16 = 0;//8-bit Baud Rate Generator BRGH = 1;//High speed SYNC = 0;//asynchroniczny...
A nie lepiej na czas modyfikacji zmiennej wyłączyć na moment odpowiednie przerwanie ?
Gdy procesor jest w trakcie wykonywania procedury przerwania, następne przerwanie nie będzie przyjęte , gdyż procesor (nie kompilator!) zeruję flagę globalnego zezwolenia na przerwania. Tak samo flaga bieżącego przerwania (tego, którego procedura obsługi jest wykonywana) zostaje automatycznie wyzerowana. Po zakończeniu przerwania flaga globalnego zezwolenia...
Możesz wyzerować flagę przerwania INT1 przed instrukcją sei(); : Obawiam się, że to nie uchroni przed ustawieniem przez mikrokontroler flagi INTF1, więc po ponownym włączeniu przerwania INT1 ( EIMSK |=_BV(INT1); ) i ustawieniu flagi globalnej ( sei(); ), program natychmiast wejdzie w procedurę obsługi tego przerwania. Wyzerowanie flagi i tak będzie...
Możesz w dowolnym momencie wyłączyć i włączyć globalne zezwolenie na przerwania.
Przecież wiesz, że delay w przerwaniu nie powinieneś stosować to dlaczego ponownie je tam wstawiasz? Przyjmij wreszcie postawę, że delay jest be i przestań go używać, oraz że do odliczania odcinków czasowych należy wykorzystywać timery. Patrząc na to co zaproponowałeś powyżej nie wiesz natomiast, że: - wchodząc w przerwanie przerwania są blokowane (flaga...
Co do flagi przerwania sprawdzę czy się na to nabierze symulator. Będę mógł wtedy przeanalizować obsługę przerwania. Wiem że w procedurze obsługi przerwania muszę sprawdzić źródło przerwania. Według Ciebie piti___ flaga przerwania jest ustawiana jak w czasie obsługi jednego przyjdzie drugie. Muszę to dokładnie przeanalizować bo faktycznie to może być...
Idzmy głównym wątkiem bez cofania sie. Tak, uaktywnia ale już wiem, ze było ono przechowywane w SREG. To jest wyjaśnione. W SREG przechowywana jest informacja o fladze I, czyli fakt włączenia lub wyłączenia przerwań globalnych. Nie ma to nic wspólnego z "przechowywaniem" informacji o przerwaniach INTx. Instrukcjami operującymi na fladze I w SREG są:...
Czy oprócz tego że w user mode nie mam dostępu do rejestrów systemowych są jakieś inne 'bonusy' za pracę w nim? Nie tyle chodzi o dostęp, co o fakt, że w trybie USER instrukcja MSR nie działa. W cstartup po koniec deklarowania stosów dla poszczególnych trybów mam: msr CPSR_c, #SYSTEM_MODE // switch to System mode, IRQ & FIQ enabled ldr sp, =__system_stack_end;...
Witaj. Pytanie: Co wybudza mikrokontroler ze snu? Odpowiedź: Przerwanie. Jeżeli uśpienie mikrokontrolera realizujesz w funkcji przerwania przy wyłączonych globalnych przerwaniach (po wejściu w funkcję przerwania są automatycznie wyłączane), to mikrokontroler się nie zbudzi, bo ma zablokowane przerwania. Musiałbyś w takim przypadku przed uśpieniem włączyć...
Witam! Przyznam że trochę chaotyczny ten fragment kodu. Myślę że mógłbyś bardziej korzystać z makr jakie oferuje środowisko winavr, np. cli() - globalne wyłączenie wszystkich przerwań, sei() - jw. tylko odblokowanie i np. zamiast pisać: TCCR1B = 0x19; może nie krócej ale na pewno czytelniej jest: TCCR1B=_BV(WGM13)|BV(WGM12)|BV(CS10); co oznacza tryb...
Witam ! Napotkałem taki problem: Mój program wykorzystuje przerwanie z końcówki INT1. uC M32. Program w Bascomie. Zdarza się, że na wejściu INT1 pojawia się stałe zero i wtedy przerwanie wykonuje się na okrągło, co powoduje zwis programu i reakcję watchdog'a. Próbowałem po wywołaniu przerwania wyłączyć go poprzez Disable INT1 i właczać po pewnym czasie...
W momencie zaistnienia jakiegoś zdarzenia wywołującego przerwanie zostaje ustawiona jego flaga. Jeśli przerwanie to nie jest zamaskowane i globalna flaga zezwolenia na przerwania jest ustawiona, to mikrokontroler skacze do odpowiedniej procedury obsługi przerwania i globalna flaga zezwalająca na przerwania zostaje automatycznie wyłączona do czasu zakończenia...
jeśli pokazuje ci 2mA to jeszcze nie jest niestety w najpełniejszym trybie PowerDown. W tym najgłębszym trybie miernik powinien ci pkazywać 0,6uA a skoro są mili ampery to znaczy, że bardzo częto się wybudza ze snu Dodano po 3 w związku z tym, że wykonałeś kawał dobrej roboty to tutaj pokażę ci jak ja zrobiłem usypianie procka, jak widać jest to robione...
BlueDraco no i tu może być problem. Czyli lepiej operować na tych globalnych tablicach, ale na czas ich wykorzystywania wyłączyć przerwania czy to nie wpłynie znacząco jeżeli będę "używał" tylko początku bufora?
Nie wiem w jakim celu wyłączasz timer na czas obsługi przycisku. Procedura obsługi przerwania powinna być jak najkrótsza. Niepotrzebnie wywołujesz za każdym razem funkcję setNum(). Warto byłoby ją wyrzucić do pętli głównej i wykonywać tylko w momencie zmiany prędkości. Utwórz sobie tablicę trzech elementów, w których przechowywał będziesz kolejne cyfry....
Hej, Mam pewną wątpliwość co do sposobu działanie przerwań w avr`ach i ich obsługi przez avr-libc 1.4.4. Co się stanie jeżeli w momencie, w którym procesor obsługuje jakieś przerwanie zostanie zgłoszone następne przerwanie. Z dokumentacji zrozumiałem że nie zostanie ono obsłużone od razu ponieważ ISR albo Signal mają wyłączone globalne zezwolenie na...
Głównie chodziło mi o sposób wysyłania poleceń 1 wire: Disable Int0 'wyłączenie przeszkadzającego przerwania 1wreset 1wwrite &HCC 1wwrite &H44 Capture = 1 Enable Int0 'załączenie przerwania po wszystkim Jeśli nie wiesz, które przerwanie może powodować u Ciebie problemy z 1 wire to możesz wyłączyć globalną obsługę przerwań. Czas po rozkazie odczytu temperatury...
Cos takiego powinno działac , musisz pokombinować. SP to stack pointer czyli wskaźnik stosu,a stos to chyba wiesz co to jest :) SPL określa młodszy bajt SP. Instrukjca nosave powoduje że na stos nie beda wrzucane zadne rejestry robocze. SREG to głowny rejestr kontrolny . Proponuje zajrzeć do pdfa z opisem układu. SREG.7 wskazuje na 7 bit w tym rejestrze....
Chodzi o to, że zmienna volatile cały czas odczytywana jest z pamięci i ładowana do rejestru a zmienna bez volatile, ładowana jest tylko raz? Czy dobrze myślę? Dobrze myślisz. Ogólnie zmienna globalna volatile ma sens w sytuacji, gdy ze zmiennej korzystasz jednocześnie w programie głównym i w procedurze obsługi przerwania. W Twoim przypadku, gdy korzystasz...
W aktualnej wersji programy wykonują co mają wykonać, a następnie z powodu braku pętli głównej, wykonują dodane na końcu przez kompilator: - wyłączenie przerwań globalnych, - pętlę nieskończoną, efektem obserwowanym jest "zawieszenie" się programu. Nie ma to wpływu na sam zapis, który próbujesz zrealizować. Po prostu program mikrokontrolera nie może...
Sprawdzałeś jak się ta transmisja zachowuje kiedy Twoje inkey() w ogóle nie jest używane ? Nie wiem co sobie wkompilowuje Bascom w procesor ale może używa jakiegoś przerwania które z kolei w ten czy inny sposób oddziaływuje na transmisje RS232. Dajmy na to jeśłi RS232 używa przerwań do odbioru lub wysyłania a jakaś inna procedura czy funkcja po wyjściu...
OK. W dokumentacji do XC8 (s. 198) sugerują by nie wychodzić z main. Być może w XC8 (wbrew tego co pisałem wcześniej zasugerowany C18) wyjście z main() powoduje reset. Wstaw zatem while(1); na końcu main(). Niezależnie od kompilatora ZAWSZE należy dodać nieskończoną pętlę główną i taką konkluzję należy autorowi tematu podać. Nie można bowiem liczyć,...
Trochę nad tym posiedziałem (dużo czasu minęło od ostatniego postu, ale jakośtak nie było czasu) i mam nowe pytanie, otóż: chcę uzyskać taki przebieg (dla rozdzielczości 1024x768): http://obrazki.elektroda.pl/4684247700_1... a wyskakuje mi coś takiego: http://obrazki.elektroda.pl/7828016300_1... I chciałbym się dowiedziec, jak walczyć...
Jeśli wyłączona jest globalna flaga przerwań nie zostanie nigdzie zapisana informacja o zajściu przerwania, istnieje prosta relacja AND między tymi rejestrami i tylko gdy jest spełniona, ustawiane są odpowiednie bity konkretnych przerwań. The Global Interrupt Enable bit must be set for the interrupts to be enabled. The individual interrupt enable control...
.org 0x0000 ; ustawia adres w pamięci programu rjmp reset ; skocz do etykiety ... ; wektor przerwania timer 1 .org 0x0005 rjmp led_off ; skocz do obsługi przerwania ; w tym przykładzie początek programu głównego reset: ; Jako pierwsze ustawienia stosu (w asemblerze jest to ; bardzo ważna operacja i programista nie może o tym zapomnieć)....
Jak mogę obsłużyć przerwanie tak, aby sygnał wykonywał się zadaną ilość impulsów. Np 10 impulsów i sygnał kończy gnerowanie Liczyć w przerwaniu do 10 i np wyłączyć je (znam dwa sposoby, przez NVIC lub wyłączyć timer). Można też w przerwaniu przestać robić to co robiłeś czyli "tachlować" GPIO i skończy się "gnerowanie" impulsów. Do liczenia użyj zmiennej...
Czyli jednak czegoś nie rozumiem... Myślałem, że skoro w rej DIER wyłączone jest generowanie przerwań to nie będą ustawiane flagi wystąpienia tych przerwań... A jeśli wystąpi przerwanie globalne to jak mam je rozróżnić, czyli skąd mam wziąć informację czy to z przepełnienia licznika czy z porównania kanału CC? Zresztą według RM'a flaga powinna się ustawić...
stm32 wyłączenie przerwań wyłączenie przerwań przerwaniu ocieplenie globalne
kosiarka agregat peugeot zapala kontrolka tl431 mosfet
kontrolka laptop uszkodzony regulator napięcia objawy
Rok produkcji telewizora Blaupunkt BN32H1032EEB New Holland 4310 - Wyskakujące biegi i problem z załączaniem