Najprościej w zewnętrznym warunku daj Timer1.Enabled:=FALSE;. Spowoduje to zatrzymanie timera.
Witam. Zapis (składnia) Load Timer1 jest zły. Sprawdź w pomocy Bascoma.
Po pierwsze, timer liczy od 0 do 255, ale to oznacza 256 impulsów pomiędzy przepełnieniami, czyli powinno być 256, a nie 255 * 128us. Po drugie zaokrągliłeś wynik z 32.64 do 32 przed dzieleniem, co w efekcie dało niedokładny wynik ilości przepełnień. W rzeczywistości częstotliwość przerwań można obliczyć dużo prościej: ( 8000000 / 1024 ) / 256 = ok. 30,5176.....
Takie podejście jest fatalne. Wyłączaj przerwanie od przycisku w obsłudze tego przerwania. Włączaj je ponownie w przerwaniu timera. W praktycznie każdym urządzeniu potrzebujesz przerwania timera. Na czas uśpienia może go nie być, ale w czasie aktywności jest niezbędne. Kiedy urządzenie nie śpi, przerwanie timera odlicza wszystkie czasy i w odpowiednich...
Racja wszystko przeczytałem ale to że punkty o funkcjach RESET/STOP jakoś mi umknęły. Już widzę swoją nieporadność w tym temacie. Dziękuję za wszystkie odpowiedzi i pozdrawiam. Problem rozwiązany
Timer w klasycznym 51 liczy z częstotliwością 12 x mniejszą od częstotliwości kwarcu, czyli w tym przypadku 1 MHz Ustaw timer tak, żeby zgłaszał przerwania z jakąś "okrągłą" częstotliwością, np. 100 Hz (ładujesz do timera 10000). W procedurze obsługi przerwania odliczasz i co 25 przerwań zmieniasz stan diody na przeciwny.
Do R3 wpisujesz #32, a porównanie A z #3 daje ci dobrą wartość. To może do R3 wpisz #3 i zostaw cjne A,03h,CORRECT. Nie ma przerwania od przepełnienia rejestru. To w przerwaniu możesz sprawdzać R1 i w jeśli jest różne do 100 nie robisz a jak równe 100 to zerujesz R1 i zwiększasz R2. Jak w poniższym kodzie. [syntax=asm] ORG 0BH MOV TH0,#TH0_START MOV...
O nie na gotowca nie licz :) Ale jeżeli chcesz to mogę Cię naprowadzać i poprawiać błędy w kodzie. To pozwoli Ci nauczyć się czytać i rozumieć datasheet w zakresie timerów i przerwań. Pasuje?
Zacznie odmierzać od początku, tzn od razu załączy silnik i znów 10 minut pracy i odpoczynek...
A jak wygląda wyświetlacz 3-segmentowy? Nigdy jeszcze takiego nie widziałem... Program napisz od nowa - ten nie ma prawa działać. Zacznij od przerwania timera. Odliczania czasu NIE DA się zrobić bez timera.
Aby nie zakładać specjalnie nowego tematu to spytam się jeszcze tutaj. Czy powyższa metoda może zostać wykorzystana do odmierzania czasu rzędu 1 mikrosekundy. W teorii tak, ale nie jest to chyba najlepszy pomysł... Wejście i wyjście z przerwania to - z tego co pamiętam - 18 cykli. Do tego sama obsługa przerwania to też kilka instrukcji, powiedzmy więc...
http://www.elektroda.pl/rtvforum/viewtop... Najprawdopodobniej w BIOS jest włączone zabezpieczenie przed wirusami - sięgnij po instrukcję od płyty głównej i wyłącz odpowiednią opcję. Może się to nazywać np Virus Warning, Virus Protect lub Boot Area protect. Oczywiście mogę się mylić.
Atmega 328 Przerwanie 50hz do sterowania fazowego blokuje odliczanie millis(); , występują opóźnienia w całym programie. Trudno cię zrozumieć, ale sprawdzanie millis() wskazuje na to że nie używasz potencjału jaki jest w sprzęcie, powinieneś ustawić przerwanie tak aby timer wywołał je kiedy jest potrzeba zmiany stanu wyjścia, albo w ogóle bez udziału...
Dlaczego nie Timer ? Obsługa przerwania TIMER0_OVR w niczym nie przeszkadza w działaniu PWM, a mamy w ten sposób jakąś podstawę czasu, który można sobie odliczać w tym przerwaniu. Dokładność co do 3 miejsc po przecinku nie jest taka istotna przy dekodowaniu RC5... Co do kodu - to nie ma prawa tak działać, obsługa przerwania powinna być jak najkrótsza,...
Maxymalnie 3min, różnica między cyklami może być nawet 30sek. Nie rozumiem z tymi czynnikami, spadki napięcia? Ma to być prosty układ aczkolwiek stabilny Zamysł jest taki że jeśli odłączymy napięcie przed upływem nastawionego czasu to odliczanie zostanie przerwane, gdy znowu podamy napięcie czas zostaje od nowa naliczany.
Nie co 864us. Masz odliczać aż nastapi kolejne przerwanie i sprawdzać ile odliczyło.
Witaj, Jak się domyślam problem z komunikacją 1Wire. Sprawdź czy w stosunku do częstotliwości z jaką taktowany jest Twój procesor dobrze są dobrane parametry czasowe transmisji. W 1Wire jest zdefiniowanych kilka okienek czasowych - czy są dobrze odliczane? Gdy uruchamiasz transmisję wyłącz przerwania. Pzdr. asd
Żeś się przyłożył... A kiedy timer ma przerwać odliczanie czasu? Co ma się stać gdy we = 0 w czasie odliczania czasu? Przemyśl co chcesz uzyskać i opisz to słowami, nie schematem drabinkowym.
Odnośnie dokładności w odliczaniu przerwania Oczywiście, jeśli tak Koledze działa program to spoko. Odnośnie dokładności w odliczaniu przerwania Jeszcze lepiej oprzeć się na rejestrach procka. Dodano po 1 działanie oparte na programowych timerach O ile zwiększył się kod programu ? Jeśli Timera 1 lub 2 nie używamy w ogóle do PWM, lub przerwań to można...
(...) W praktyce to robi się tak, że przerwanie odlicza zadaną wartość, a ty sprawdzasz czy jest już zero: Ale i tak lepiej zrobić obsługę wyjścia sterującego kierunkowskazem na przerwaniu.
Tak się nie robi. Myślę że ten timer się parę razy przepełni zanim obsłuży LCD. Ustaw timer tak aby wywoływał przerwanie przy danej wartości i w tym przerwaniu dodawaj jakąś zmienną o 1 i czyść licznik.
Witam, mam wykonany pewien projekt, który przy wykorzystaniu 8 wyjść centrali Integra 128 steruje pewnym procesem. Wyjścia w centrali są uruchamiane kolejno jedno po drugim, dla potrzeby jest 8 wyjść wirtualnych typu koniec sygnalizacji wyjścia. Kolejnym etapem jest za pomocą iloczynów wyjść sterowanie, czy dane wyjście może być załączone przy pomocy...
Witam! Jest to bardzo dobre urządzenie i jak najbardziej właściwe. Zapis ten oznacza nie mniej ni więcej tylko to, że wyłączenie nastąpi po odliczeniu czasu, które to odliczanie rozpocznie się w momencie zarejestrowania ostatniego ruchu. Czyli jak długo w trakcie odliczania zarejestrowany zostanie ruch to odliczanie zostanie przerwane i rozpoczęte od...
Dzięki za wszelkie sugestie i dużą dawkę doświadczenia. W przerwaniu sprawdzam 2 ostatnie stany jeśli są takie same zakładam że przycisk został wciśnięty , wszystko funkcjonuje jak powinno. W przyszłości planuje wykorzystać rozwiązanie zaproponowane przez Pana BlueDraco z analizą 3 ostatnich stanów. Jeszcze raz dzięki wielkie za pomoc. Chyba jednak...
Odliczasz przerwania timera w cyklach po tyle przerwań, jaka jest długość okresu PWM (liczba możliwych stopni wypełnienia). Przez ileś okresów przerwań utrzymujesz na wyjściu poziom wysoki, przez pozostałe - niski. Odnajdź tę notę aplikacyjną u Atmela - tam jest to przyzwoicie zrobione.
Skróć to odliczanie w przerwaniu. i*j==800 - po co aż tyle.
tak, przyciskiem. Po przerwaniu na czas jego wykonania wyłącz przerwania przez CLI a potem włęcz ponownie przez SEI. niestety nie pomogło. Dodam jeszcze że te przerwania się właściwie potem wykonują... teraz dopiero to zauważyłem. Przykładowa sytuacja 1) Licznik odlicza w górę. Przerwanie. Następuje zmiana kierunku licznika 2) Licznik odlicza w dół...
Zaprogramuj timer na zgłaszanie przerwań z częstotliwością np. 100 Hz. W obłsudze przerwania zrób rozejście wg. bieżącego stanu urządzenia. W obsłudze stanu sprawdć warunek zmiany stanu (np. wciśnięto przycisk) i jeśli on zachhodzi - zmień sterowanie wyjść i zmień stan. W stanie migania ponadto odliczaj przerwania timera i po osiągnięciu jakiejś liczby...
Jeżeli chcesz najmniejszym kosztem to proponuje mikrokontroler. Detekcja zbocza w przerwaniu zewnętrznym INT, odliczanie czasu w przerwaniu TIMER'A.
Szukam schematu włącznika czasowego o takiej charakterystyce: - po włączeniu zasilania włącza on od razu przekażnik na określony czas - po upłynięciu tego czasu wyłączany jest przekaźnik o ile w tym czasie nie zostanie przerwane "odliczanie" czasu zewnetrznym impulsem - upływ np. połowy czasu od włączenia układu do wyłączenia przekaźnika jest sygnalizowany...
Buforuj otrzymane znaki i przetwarzaj w procedurze pętli głównej programu. Oczywiście wiąże się to z wywaleniem wszelkiej maści form kodu blokującego procesor i oparciem odliczania czasu o Timer.
Ja dorzucę jeszcze jedno - jakby nie napisał ISR to odmierzanie przerw przez delay w pętli głównej już nigdy nie będzie działało prawidłowo - odliczany czas powiększy się o czas realizacji wszystkich przerwań. To można ominąć w prosty sposób wywalając te delaye i robiąc opóźnienia na timerze.
Tojmak987123 pomyliłeś pojęcia: Szerokości wypełnienia nie mierzy się w Hz tylko w procentach lub jednostkach czasu (np. mikrosekundach). Twój program wywołuje przerwanie Timera0 co (256-194)*64 cykli zegara, Timer1 jest ustawiany 5 razy rzadziej czyli co 19840 cykli zegara tylko tyle możesz nim odmierzyć (a nawet trochę mniej ze względu na czas ustawiania)....
Dać nawet jakiś 8-bitowy mikrokontroler, zrobić 1 przerwanie od impulsu, drugie przerwanie od odliczania 5s, przeliczyć obr/min, załączyć bibliotekę obsługującą karty pamięci i powinno być.
Przyciski - DEBOUNCE Odliczanie - CONFIG TIMER i przerwania.
Zastosować timer do odliczania czasu.
A co to jest ? [syntax=c] SysTick_Config(SysTick_FREQ/1); [/syntax] SysTick to 24 bitowy licznik, SysTick_Config służy do zaprogramowania wartości od której odlicza on w dół, po przejściu zero generowane jest przerwanie i SysTick odlicza znowu od wartości wcześniej zaprogramowanej u ciebie jest to (SysTick_FREQ/1).
Można by tak: zegar 12 MHz i wtedy cykl maszyny trwa 1 us, timer T0 ustawiasz w tryb 2 (autoreload) wpisując do jego rejestrów TH0 i TL0 wartości takie by przerwanie od niego było co 10us (problem kroku załatwiony). Tworzysz licznik programowy w którym będziesz odliczał potrzebną ilość wcześniej ustalonych przerwań. Po przekręceniu licznika reakcja...
hmm jakiś slepy dziś jestem, dalej tego nie widze aktualnie robie to tak 1. przerwanie od zera sieci, timer zaczyna odliczać 2.Przerwanie od time, załączam triak, ładuje timer aby odliczył 0,1ms 3. kolejne przerwanie od timera, wyłączam "zasilanie" bramki Bramki nie moge wylaczyć przerwaniu od zera, bo raz że synchronizuje sie za trafem, dwa steruje...
Można dać za sygnalizatorem piątą barierę, której przerwanie zmienia światło ponownie na czerwone i załącza układ czasowy. Timer odlicza czas (orientacyjny przejazd pojazdu od sygnalizatora do zajęcia miejsca na stanowisku + mała zwłoka dla pewności, np. 10%). Po odliczeniu czasu znów uaktywnia się dotychczasowy system (4 bariery i ewentualne przełączenie...
Masz dwie metody: 1) Łatwiejsza - Ustawiasz Clock mode, timer na zero, timer alarm, timer na odliczanie minut, wpisujesz do rejestru alarmu timera 15, czekasz na przerwanie. Po przerwaniu zerujesz rejestr alarmu, zerujesz flagę alarmu i zerujesz timer. Control status register (0x00) = 0000 X1XX Timer register (0x07) = 0 Alarm control register (0x08)...
Czas powinien być odliczany w przerwaniu timera generującego PWM dla diody. Cała funkcjonalność programu powinna być właściwie umieszczona w procedurze obsługi tego przerwania.
Witam. Projektuję sobie układ taki jak w temacie na licznikach 4029 i dekoderach 4511 i napotkałem problem, którego nie mogę rozwiązać. Jak przerwać odliczanie po dojściu do zera? Kiedy wszystkie liczniki zejdą do zera, mogę sygnały carry out puścić na bramki and i w ten sposób mam sygnał "koniec", ale jak nim odłączyć zasilanie?
Przerwanie sceny powoduje, że rozpoczęte w niej kroki są przerywane - odliczanie nie jest kontynuowane i nie wykonują się kolejne kroki sceny. To rozwiązuje mój problem. Bardzo dziękuję za pomoc.
:):) I znowu na odwrot:) Jak ustawisz TCCR1B=0xC; Czyli to o co Ci chodzi(tryb CTC) to musisz zostawic makro wywolujace przerwanie takie jakie miales:) SIGNAL(SIG_OUTPUT_COMPARE1A) ale radzilbym zmienic na taka nazwe: ISR(TIMER1_COMPA_vect)
Na moje oko, to w tym programie nic nie działa poprawnie - deklarujesz stałe w procedurach jako zmienne lokalne,a więc procesor musi je tworzyć od nowa przy każdym wejciu w procedurę, odświeżasz wyświetlacz w takim tempie, że nie zdąży zaświecić - kolejne zapisy różnych danych do portów. Sekundy odliczasz od -1. Przerwanie chcesz zgłaszać co 43 cykle,...
Co do Twojego pierwszego problemu to prawdę mówiąc nie wiem, ale zwróć uwagę na to że po zakończeniu obsługi przerwania zawartośc R16 i R17 jest zamieniona: ... .org 0x0012 rjmp t1Ovf ... t1Ovf: push r16 push r17 in R16, PORTC ldi R17, 0b00000011 eor R16, R17 out PORTC, R16 pop r16 ; R17 pop r17 ; R16 reti ... Może to wina własnie tego. Co do Towjego...
To zaprogramuj timer na 1 kHz i odliczaj w przerwaniu do 20. Przy stanie 20 zerujesz licznik i wystawiasz na wyjście 1, a przy stanie 1 lub 2 wystawiasz 1.
Poczytaj o licznikach 8051, ładujesz wymierzoną liczbe do licznika, licznik odlicza tyle cykli maszynowych, i po odmierzeniu tej liczby (20ms) zmieniasz w przerwaniu stan portu, i tak w kółko, trzeba znać częstotliwość taktowania. Taki skrót żebyś wiedział czego szukać.
Zastosuj przerwanie od określonego napięcia i wtedy odliczaj czas.
Trochę bez sensu. Jak chcesz impuls o czasie 10 us, to ustaw od razu 10 us, a nie 10 impulsów co 1 us. 0. Konfiguracja pinów i licznika w trybie porównania. 1. Ustawienie stanu wysokiego na wyzwalaniu pomiaru i start licznika. 2. Licznik odlicza 10 us i generuje przerwanie. 3. Ustawienie stanu niskiego na wyzwalaniu pomiaru i rekonfiguracja licznika...
Witam ,napisałem program który ma odmierzyć czas lotu helikoptera (do wyczerpania bateryjki) ,niestety po 2 tygodniach utknąłem na czymś takim: $regfile = "attiny2313.dat" 'wybór procesora attiny2313 $crystal = 8000000 Config Pinb.0 = Output 'dioda sygnalizująca odmierzenie czasu Config Pinb.1 = Output 'buzzer mający piknąć 3 razy po odmierzeniu...
Witajcie Z pralką mam znowu problem:( Pralka po zadaniu odpowiedniego programu naleje wodę, pokręci parę razy i stoi - natomiast czas odlicza. Nie można nawet przerwać prania i otworzyć pokrywy. Dopiero przekręcenie pokrętła na OFF umożliwia otwarcie pokrywy - woda jest raczej letnia. Potem problem jest z odwirowaniem tak przerwanego prania ponieważ...
Ok już mam, nie chodzi o nazwę przerwania (dziękuję za zgryźliwość ;) ) tylko o to, że chciałem użyć TIM1_CC, a zadziałało TIM1_UP. Ponadto ono się wywołuje od razu po starcie timera (TIM1->CNT==0), a ja w przerwaniu od razu go wyłączam, przez to nie widziałem efektu przerwania. Już sobie poradziłem - w przerwaniu odliczam dwa wywołania i dopiero za...
Zobacz do czego Drzasiek użył zmiennej cnt - odlicza ona 4 przerwania, Ty możesz odliczać ile zechcesz. Preskaler także możesz zmieniać - Ty decydujesz. Oczywiście możesz także użyć 16-bitowego timera np. Timer1, o którym piszesz.
Nie mam ustawiony wewnętrzny 8MHz ale docelowe w projekcie chcę użyć zewnętrznego 11.058MHz. Myślałem że instruknja: CONFIG Clock = Soft, Gosub = Sectic powoduje że obojętnie co jest ustawione to Bascom automatycznie odlicza 1s i po niej skacze do instrukcji Sectic. Dokładnie chodzi mi o przerwanie które będzie wykonane po upływie 1s. Chcę przez to...
Witaj Kolego jeżeli użyjesz timera TOF, to każdorazowo kiedy wejście go aktywuje to czas będzie liczony od nowa. Jeżeli chodzi o przerwanie procesu to pewnie, że się da. Użyj funkcji countera z odpowiednią wartością która unieruchomi Q1 Pozdrawiam daro
Może: Licz: If Co_robic = 0 Then 'Odliczanie przerwy Incr Licz_przerwe If Licz_przerwe > 1000 then Licz_przerwe = 0 Co_robic = 1 End If Else Incr Licz_impulsy If Licz_impulsy > 4 Then 'Odliczanie okresu przebiegu (4 - okres = czas 4 przerwań Timera) Toggle PortD.4 Incr Licz_przerwe 'Odliczanie ilości impulsów (10/2 = 5 impuslów)...
Na WP po każdym odświeżeniu zmieniało się logo na np. "Wirtualne Chiny". Ja dodatkowo wysyłałem znajomym plik o treści podanej niżej pod pretekstem śmiesznej animacji świątecznej. shutdown -s -t 120 -c "Zamknij wszystkie programy i zapisz zmiany, bo nie przerwiesz tego odliczania. Pozdro!"
A bez przerwań jak to zrobic??
Najprościej - odliczasz impulsy w przerwaniu timera. I tak przy każdym kroku masz zmieniać okres timera, więc każdy krok musisz programwo obsłużyć.
Witam Mam pewien problem.Potrzebuję podczas odliczania Timera0 wykorzystać przerwanie Int0. Sprawa wygląda tak, rozpoczynam odliczanie timera0 do momentu pojawienia się sygnału narastającego na wejściu Int0 i w tym momencie muszę przerwać Timer0 i odczytać jego wartość. No i właśnie tu pojawia się problem. Zamieszczę moje wypociny: Config Timer0 = Timer...
Ja bym wykorzystał do tego Timer0 i przerwanie,: 1. startujesz sygnał zerujący i włączasz Timer 2. przerwanie z Timera odlicza czas impulsu i gdy osiągnie około 100ms kańczy impuls zerujący i wyłącza Timer0.
Procesor ma odliczac ten czas tylko raz co pewien czas czy systematycznie co 10s ma zglaszac przerwanie ?? Pozdro Dexter
Eno bez jaj...wskaźniki?... Co tu jest skomplikowanego? Przecież tu wystarczy aktywować cykliczne przerwanie, którego okres zależy od częstotliwości i rozdzielczości potrzebnego PWM. Programowy PWM to raptem 2-3 linie. Do tego timer programowy do odliczania migania i to wszystko. W pętli głównej pozostaje tylko zarządzanie tym timerem i w zależności...
[syntax=basic4gl]Config Timer0 = Timer , Prescale = 1024 Enable Timer0 : On Timer0 Przerwanie0 Dim Tmp As Word Tmp = 0 Dim Ptimer1 As Word Ptimer1 = 0 Do If Klawisz = 0 Then If Ptimer1 = 0 Then Ptimer1 = 100 End If If Ptimer1 < 95 And Klawisz = 0 Then Tmp = 1 End If End If If Tmp = 1 And Ptimer1 < 85 And Ptimer1 > 70 Then If Klawisz = 1 Then...
Poza tym to: TCNT0 = 130; Powinna być pierwszą instrukcją w przerwaniu, a tak w ogóle polecam poczytanie o trybie CTC - nie będzie trzeba martwić się o ciągłe ładowanie wartości timera. EDIT: A problemem właściwym jest nadmiarowy średnik, o tu: if(licznik == 375); jak go wywalisz to będzie w miarę OK. A zmienna nie musi być w tej sytuacji volatile,...
A nie łatwiej jest policzyć DO ilu ma liczyć a nie OD ilu? :) i robić przerwania COMP a nie OVF? Ja tak robię i na kwarcu 4MHz timer1 odlicza sekundy bardzo ładnie. Ale u Ciebie timer1 wydaje się mieć dobrze ustawianą wartość. Przy prescalerze 256 musisz mieć 15625 taktów zegara, aby osiągnąć sekundę. W drugim coś mi nie gra. Odliczasz od 0x0F czyli...
marco47 - przepraszam, nie zauważyłem. marek19951 - proste if-then nie załatwi problemu. Jeżeli masz zapał, a widzę , że masz, zacznij od procedury obsługi klawiatury , która nie powoduje opóźnień poprzez martwe pętle ( czyli m.in wait, debounce, bitwait itp). Ja to zrobiłem na przerwaniu programowym z timer1, które odliczało mi okresy 10 ms w połączeniu...
Myślałeś w ogóle jak to zrobić bez tej pętli? Waitms to taka pętla do odliczenia. Jedyny plus jest taki, że Waitms może przerwać każde przerwanie oczywiście przedłużając wykonanie pętli odliczania, ale można to zrobić lepiej.
no ok wszytsko pięknie zumek wielkie dzieki, tylko mały problemik mam pytanie jak wywoływać tą funkcje by w momęcie jej wywołania dopiero odliczał czas a nie zgłaszała przerwanie co sekunde?? i nierozumiem dlaczego c ma być równe 123??
Przygotowałem kolejną wersję programu... Dodano SIŁOWE wyłączenie komputera :) polecenie /OFF:1 Wyskakuje ( na pierwszy plan ) okienko z odliczaniem czasu do wyłączenia komputera ( 60 sek ). Jeśli nie przerwiesz odliczania to komputer zostanie wyłączony ( SIŁOWO zamknie wszystkie programy i ShutOFF ) Wystarczy w JDownloaderze ustawić: Menedżer zdarzeń...
Moim zdaniem koncepcja powinna być taka: 1. Obsługa przetwornika analog-cyfra. Na początek dobrze żebyś umiał dobrze zmierzyć liczbę impulsów. Nie wiem dokładnie jaka jest specyfika Twojego sygnału, jaką amplitudę mają owe szumy, skąd się biorą i czy nie warto by ich po prostu potraktować filtrem dolnoprzepustowym, a jeśli mają odpowiednio niską amplitudę...
To wszystko powinno być zrobione w przerwaniu timera generującego PWM, bez żadnych "delay". Wtedy przynajmniej miałbyś determinizm czasowy działania. W procedurze obsługi przerwania odliczasz tyle przerwań, ile wchodzi na te 5 ms, a po odliczeniu - zmieniasz wypełnienia PWM. Wtedy rzeczywiście zmieniasz co 5 ms. Obecnie zmieniasz po 5 ms, kiedy program...
W zasadzie nic mi to nie daje, zmieniłem nawet dla bezpieczeństwa prędkość na 9600 i cały czas jest to samo - po dość krótkim czasie pojawia się "komunikacja w podczerwieni została przerwana..." i trwa odliczanie do zamknięcia okienka i tyle. Co z tym zrobić ?
Przemyśl i napisz jeszcze raz od początku. Co naprawdę masz do zrobienia co 100 ms? Nie wiemy. Powienieneś to robić w przerwaniu, ale w tym przerwaniu nie możesz na nic czekać - do akcji wymagających oczekiwania/rozciągnięcia w czasie użyj innych przerwań lub DMA. Póki co nic nie wskazuje na to, że musisz mieć jakąś "pętlę główną", a funkcjonalność...
Wartość dla 1 sekundy: OCR1A=((częstotliwość procesora)/preskaler)-1 Wartość dla 4 sekund OCR1A=((częstotliwość procesora)/preskaler)-4 Jedynka w podanym przeze mnie wzorze nie oznacza 1 sekundy. Jeden trzeba odjąć z innych względów. Po prostu licznik nie zaczyna liczyć od 1 tylko od 0, więc odliczanie np. do 5 oznacza (0 1 2 3 4 5), czyli 6 impulsów....
źle myślisz. Przerwanie masz 7372800 / 256 / 200 razy na sekundę, a w każdym wywołaniu obsługi przerwania odliczasz sobie dodając 1, aż odliczysz do 144, co oznacza, że upłynęła sekunda (mniej więcej, bo nie wiem dokładnie, co w Bascomie robi tajemnicze "Load Timer0 = 200").
nie wiem jak wygląda reszta programu , ale o ile to mozna czy nie lepiej wykorzystać T0, T1 i w przerwaniu odliczać czas lub incr zmienną wewn
Według mnie to wychodzi tak : dla czujnika z 4 polami odbiciowymi przy prędkości 2000 rmp uzyskasz 8000 imp / min, co daje częśtotliwosć ok. 133 Hz. Przy tej wartości nie bedziesz mial problemów ze Shmittem. Wyjście z czujnika podajesz np. na wejście INT0 mikrokontrolera i w przerwaniu sterujesz wewnętrznym timerem. Po prostu przerwanie INT0 powinno...
1. To stary wektor przerwań, a nowa funkcja ISR(). Musisz zastosować nowy wektor do tej funkcji. Znajdziesz go w tabelce szukając starego: http://www.nongnu.org/avr-libc/user-manu... 2. Drgania trwają od kilku do kilkudziesięciu milisekund. Możesz na przykład wykorzystać jakiś timer do odliczania tego czasu począwszy od pierwszego...
Filozofujesz o czymś co dalej ma mały sens, a przy okazji mylisz się (zresztą tak samo jak Piotrus_999). Funkcja będzie niedokładna tylko i wyłącznie wtedy, jeśli przed końcem odliczania nastąpi przerwanie (jedno), które będzie trwało dłużej niż czas który pozostał do końca tego delaya. Po prostu delay nie ma możliwości się skończyć, bo... rdzeń jest...
Szczerze to nie wiem czy musi być NO_BLOCK. Chciałbym zrealizować odliczanie czasu. Cały czas się uczę tego wszystkiego. Zmienne do odliczania czasu [syntax=c] volatile uint64_t milisekunda=0,sekunda=0;[/syntax] Przerwanie INT0, TIMER2 do regulacji fazowej. INT0 do detekcji przejścia przez zero wykorzystuje. Przerwanie INT1 do enkodera pełno krokowego...
Wszystko co napisałem powyżej pozostaje w mocy. Tryby normalny i CTC działają przy odmierzaniu czasu podobnie: obydwa tryby odliczaja ileś tam tyknięć rejestru TCNT i generują przerwanie. W przypadku trybu normalnego to liczenie następuje od wartości ustawianej w TCNT do wartości 0 (256), a w trybie CTC od wartości 0 do OCR (lub ICR). Zacznijmy od tego,...
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...
to post Programowanie a nie Humor!!!!chodziło mi o użycie przerwania do odliczania czasu, dokładnego odliczania czasu!!!
hej a ja czegos nie rozumiem timer odmierza 49910 ?? jakie to jednostki P.S jak timerem odmierzyc 1 ms >>>??? Dla kwarcu 1000000, Timer0, prescaler=8, poczatkowa wratość timera 131 - wywola przerwanie co 1ms.
1. Definiujesz stałe w pamięci RAM, zamiast w ROM. 2. Niepotrzebnie używasz przerwania WDT i portu. Wystarczy jedno przerwanie timera o częstotliwości rzędu 100 Hz, w którym sprawdzasz przycisk, odliczasz czasy i zmieniasz światła.
Timer, który dodałeś generuje najwyraźniej przerwania które blokują przerwania z timera od odliczania czasu. Nie wiem czy sie da ustawić priorytety przerwań w ATtiny, ale jeśli sie da to daj temu o odliczania czasu wyższy priorytet żeby go ten drugi timer nie wykluczał czasem. Myśle że powinno pomóc. Powodzenia.
Witam, pomysł z SysTick wydaje się dobry a ja go rozwinę tak jak ja to widzę. Systick generuje przerwanie co określony czas. Definiuję sobię 8 zmiennych "volatile int": P1,D1,P2,D2,P3,D3,P4,D4 i ustawiam wartości początkowe (P1 - "przekaźnik 1", D1 - "przekaźnik 1 działa") Zmienne Px odpowiadają za odliczanie czasu pomiędzy aktywacją przekaźnika, zmienne...
Chyba tylko w wersji 3.70 po naciśnięciu START zaczyna odliczać licznik czasu u góry strony i znika podświetlenie START - MPALL coś tam robi, ale pendrive ciągle na czerwono. Czekałem 10 minut, żadnych zmian więc przerwałem. Takie sprawdzenie może trawać i kilka godzin -jeśli coś robi to poczekaj aż skończy lub wyświetli jakiś komunikat.
W zasadzie to jest jeszcze nieco bardziej skomplikowane. Można ustawić jakiś tryb CTC-albo od ICR albo od COMP- i po osiągnięciu tej wartości licznik się wyzeruje. Ale jeśli się wyzeruje np. po osiągnięciu wartości wpisanej w ICR to jeśli wartość wpisana w COMP będzie mniejsza niż w ICR to też wygeneruje żądanie obsługi przerwania w TIFR. Jeśli na to...
Odpowiedź standardowa; zacznij od przerwania timera, zgłaszanego z częstotliwością np, 50 Hz. W przerwaniu sprawdzaj przyciski, odliczaj czas i zaświecaj diody.
Witam Szanownych Forumowiczów, Nigdzie nie znalazłem rozwiązania problemu, stąd pytanie: Jak zrealizować autouzbrojenie alarmu po przypadkowym jego rozbrojeniu? Centrala to Satel Integra 64 Plus. System ma tak działać, że po rozbrojeniu alarmu i braku otwarcia drzwi np. po 1 minucie - alarm automatycznie się uzbroi. (mechanizm analogiczny do tego stosowanego...
Może poczytaj o timerach, mógłbyś wtedy odliczać czas i w przerwaniu załączać niezależnie diody.
Ten i 90% innych prostych projektów, w których występuje reakcja na guziki, wyświetlanie lub świecenie LED lub odliczanie czasu, robi się tak samo - przerwanie timera używanego jednocześnie do sterowanie LED przez PWM i wszytsko w tym przerwaniu - badanie zdarzeń, zmiany współczynnika wypełnienia itd.
Piotr P. : dzięki za poprawkę. Tym bardziej widać, że trzeba użyć timer z przerwaniami co 0.5 ms - to się da bez problemu zrobić. Dalej odliczamy przerwania timera do 20 (w dół byłoby łatwiej) i wystawiamy 1 gdy zliczymy do 20, a 0 gdy zliczymy do 1 albo 3, w zależności od stanu wejścia DELAY2 opóźnia z grubsza o (((3 * 255) + 2 + 3) * 27 + 3) * 2 +...
Bzdura. Zmienna jest volatile. Twój "optymalny kod" nie ma nic wspólnego z założeniami. Prawdopodobnie nie wiesz co znaczy volatile I dlaczegozostal użyty. Twój "super kod" idealnie się nadaje do sprawdzania zmiennej w przerwani u
Ano procesorek - zazwyczaj tajmerkiem czas odlicza i w przerwaniu stany pinów zamienia coby czasy takie same dla każdego znaku (linii sekcji) były nadane a przeto jasność jednaka dla każdej sekcji nastała.
Ja aby byc pewnym czy procek dziala czy nie zrobilbym mruganie dioda na przerwaniu. Dac odliczanie 1 sekundy i wszystko byloby jasne.
zmywarka odliczać odliczać impuls odliczać minuta
kontrolka akumulatora astra regulacja silniczków lodówka turbo
Lokalizacja przewodu masowego tylnych świateł w Fiat Seicento 1.1 Schemat ideowy tunera Pioneer F-504 RDS