Nie tędy droga, Ty musisz zrobić coś dokładnie odwrotnego - nie wygenerować sygnał, ale go zmierzyć. Rozwiązania są 2, ale jeśli programujesz w bascomie i nie masz ochoty na operacje na rejestrach w procesora to kurczą się do jednego. Mianowicie: 0. ustawiasz timer na zliczanie impulsów i zmianę wartości jakiejś zmiennej - parametry dobierz w zależności...
Jeśli wyeliminujesz drgania przycisku, to najprościej to zrealizować podając wyjście przycisku na wejście zegarowe jednego timera (bedzie on zliczał ilość wciśnięć), a drugi timer wykorzystać do odmierzania czasów 1s - dokładnie co 1 s należy kasować licznik pierwszego timera. Ot i wszystko.
int main(void) { //zliczanie timera od 0 -> wart OCR1A TCCR1A |= ( _BV(COM1A0)| _BV(COM1A1)); TCCR1B |= ( _BV(CS10) | _BV(WGM12) ); ustaw_OCR1A(119); TIFR |= _BV(OCF1A); // wlaczenie flagi OCM if(TIFR!=0) { TCCR1B = 0x00; DDRA |= _BV(PA6); PORTA &=...
Poi pierwsze. Do BASCOM-a jest pomoc - także po polsku, której to zresztą jestem autorem. Wersję on-line (beta) znajdziesz na mojej stronie WWW. Jak one działają? Zliczają impusy. Albo z prescalera, albo z zewnątrz. Patrz nota katalogowa. W którą stronę zliczają? Zwykle liczą w górę. W trybach PWM liczą też w obie strony. Patrz nota katalogowa. Jak...
const int stepPin = 8; unsigned long stepperTimer; int currentStepperSpeedDelay = 500; // bieżąca prędkość krokowa opóźnienie byte stepInState = 0; // stan wysoki lub niski dla następnego kroku int stepCounter = 0; // licznik kroków int targetSteps = 200; // docelowa ilość kroków bool running = false; // flaga informująca, czy silnik działa void setup()...
AVE... Jakiego PICa konkretnie chcesz użyć? Zasada pomiaru jest dość prosta: najpierw ustawia się któryś z timerów, by odmierzał 40 sekund i po odmierzeniu wywołał przerwanie. Potem tworzy się pętlę, która w nieskończoność sprawdza stan wybranego przez Ciebie pinu. Gdy jest tam logiczna jedynka, to dodajesz 1 do zmiennej. Gdy timer skończy zliczać czas,...
1. W jakim języku piszesz? 2. Kalkuluje się to tak: Masz kwarc 16 000 000 Hz (16 MHz) i dajesz sobie jeden z dopuszczonych prescalerów, np. 64 i wtedy timer zlicza Ci impulsy z częstotliwością 16 000 000 / 64 = 250 000 Hz, czyli jeden impuls timera to 4*10^-6 s lub inaczej aby odmierzyć 1s musisz zliczyć 250 000 impulsów, Jako, że Timer0 jest 8 bitowy...
Szybko Ci poszło przeczytanie wszystkich artykułów na mikrokontrolery.blogspot. W każdym programie jakoś musisz obsługiwać upływ czasu, na pierwszej lekcji do zamigania led użyłeś delay, do paru innych prostych programów to też wystarczy, ale generalnie należy to robić na timerze. Jest to tak oczywiste, że w Arduino zrobili do tego gotowe funkcje, w...
hunterhouse W AVR-ach sprzętowo można zatrzasnąć zawartość timera , ale uruchomić zliczanie trzeba programowo.Natomiast w 51-ce można uruchomić i zatrzymać timer sprzętowo.Jeśli na P3.3 jest stan wysoki i flaga GATE timera1 jest ustawiona , to timer zlicza doputy , dopuki stan na P3.3 nie zmieni się na niski.Problem jest tylko z tym , że Charly chce...
Tylko jeżeli będziesz wyłączał przerwania na czas obsługi 1Wire, to zliczanie czasu w przerwaniu będzie zaburzone jeżeli nie zastosowałeś trybu CTC Timera tylko zwykłe przeładowywanie Timera w przerwaniu (dokładnie to będzie się troszkę późniło).
delay w przerwaniu?! Nie przesadzasz? Dlaczego 2 razy ustawiasz TOIE2? Po co zerujesz TCNT2? Po co ustawiasz TOV2? Spróbuj najpierw sprawdzić ten kod z taktowaniem timera z podstawowego zegara, nie z kwarcu zegarkowego. Wtedy będziesz wiedział, czy problem leży w oprogramowaniu, czy w braku oscylacji.
margas4542 zaopatrz się w program TimerCycles ze tej strony: http://www.wkretak.pl/downloads.php?cat_... Dzięki temu obliczysz liczbę cykli czyli to co zapisuję się do rejestru OCR1A. Jeśli chodzi o timery to po pierwsze preskaler(czyli część obwodu timera który dzieli impuls zegarowy tj. zmienia rozdzielczość timera) jest ustawiony na 1 mówi o tym...
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...
Nie bardzo mam teraz ochotę zgłębiać kod ponownie, ale pamiętam że w Twojej wersji Timer odmierzał czas 20s i kiedy nadszedł czas to w przerwaniu mierzył temperaturę Dallasem DS18B20 i w dodatku pisał od razu po wyświetlaczu :D Dlatego jedną ze zmian było to, że Timer tylko ustawia flagę by dokonać pomiaru i go wyświetlić. Tak więc dopóki nie jesteś...
Chyba trochę uprościłeś. No dobra - warunek jest taki, że pomiędzy kolejnymi odczytami nie może upłynąć więcej niż max jeden pełny okres timera, może być max jedno przepełnienie (; Z testowaniem flagi przepełnienia można by niby wykombinować więcej, ale tu pojawiają się bardzo nieprzyjemne sytuacje brzegowe: - jeśli odczytujesz najpierw CNT a potem...
Modułu nie odczytuje się w kółko. Kiedy wykryje wyładowanie atmosferyczne to da znać na pinie INT. Z kalibracją sprawa wygląda tak że antena wraz z wbudowanym układem mają rezonowac na 500kHz. Żeby to dostroić w czipie jest kilkanaście kondensatorków które można podłączać programowo. Ustawia się moduł w taki tryb by na pinie INT wystawiał częstotliwość...
Zrobiłem taki prosty program w PLC. Generator impulsów na dwóch timerach. http://obrazki.elektroda.pl/1390334300_1... http://obrazki.elektroda.pl/9343867500_1... Jeden genereje impuls co 10ms a drugi kończy zliczanie po 1s. Czyli przez 1 sekundę powinniśmy miec 100 impulsów. Podłączyłem Q0.0 do wejścia I0.0 odblokowałem...
kto wyjaśni lub zaproponuje ustawienie CD40110 do takiej pracy (lub ją wykluczy podając powód). Podejmę się tego zadania. Jeśli chodzi o schemat, to jest on poprawny, praca licznik również, tyle że "spiritus movens" tej afery jest wyjście 11 BORROW - U1, ale taka jest jego rola. Dlaczego tak się dzieje należy zrozumieć pracę licznika, użyję licznika...
Bo kontaktrony w licznikach rowerowych są jakieś szybsze. Robiłem kiedyś eksperymenty z rowerem i faktycznie zwykłe kontaktrony "rurkowe" nie nadążały się przełączać. Pierwszy z brzegu kontaktron KA-02 ze sklepu na literę T przy napięciu 5V i i prądzie 100mA ma częstotliwość przełączania 125Hz. Czas załączania do oporu 1Ohma wynosi ok 2,5 ms Czas odpuszczenia...
Problem w tym, że schematu nie mam, prototyp narazie składałem na AVR. Generator jest taki sam jak w oryginalnym układzie i wszystkich innych, narazie bez rewelacji, bajery będą później. Bramka AND z 74LS08. Wyjście do wejścia timera 0, który zlicza sobie impulsy z generatora (dodatkowo jeszcze jest zliczanie ilości przepałnień licznika, bo mały jest,...
W PICach rozne przerwania wywoluja jedna funkcje w ktorej musisz sprawdzic zrodlo wywolania przerwania czyli sprawdzic np flage czy timer sie przekrecil lub czy nastapila zmiana na porcie B. Powinno to wygladac tak: void interrupt() { if ( T0IF == 1 ) // czy timer sie przekrecil ? { if( T0IE == 1 ) // czy jest wlaczone...
Masz preskaler ustawiony na aż 256 więc przeładowywanie Timera nie powinno powodować błędów. A wyliczyłeś dobrze. A masz rezonator kwarcowy 8MHz? Zapis do EEPROMu jest sprzętowy więc nic mu nie będzie przeszkadzało. Zliczanie do 2500 też nie jest specjalnie trudne. A zawsze możesz też użyć dwa przerwania. Jedno co 400us do multipleksowania a drugie...
INTEGRA 1.18 (wydanie z dnia 2018-06-20) Dodano: zdarzenia nieudanego załączenia czuwania przez wejścia załączające czuwanie (typ reakcji 80 i 82) typ wejścia "97. Monitorowanie awarii centrali p.poż" (CID:200) obsługę INT-GSM zdarzenia nieudanego załączenia czuwania ze sterowania SMS (INT-GSM) zdarzenia ze stanem monitorowania testu stacji 1/2 A/B...
Co do samego pomysłu - choć niewątpliwie jest kontrowersyjny - nie będę się wypowiadał - twój cyrk, twoje małpy. Proponowałbym jednak przynajmniej wprowadzić jedną istotną zmianę. Limit (np. 5 min) powinien być możliwy do wykorzystania w ratach np. 1 min na wstępne zmoczenie ciała, po pewnym czasie 2 min na spłukanie głowy i znów 2 min na spłukanie...
Wklej caly program. #include<pic.h> #include <stdio.h> long int GlobalTime, time; #define INTERVAL 20 #define HOURS 3600 #define MINUTES 60 #define SECONDS 1 void ConsoleInit() { SPEN=1; TRISC5=1; TRISC4=1; RCSTA = 0x90; TXSTA = 0x20; // 0 SPBRG=51; // 51 } // OBSLUGA PRZERWANIA static void interrupt get_ir_int(void)...
Kwarc 16MHz pewnie ma dokładność rzędu 50ppm. Czy to dużo czy mało to sam musisz zdecydować. Da się znaleźć specjalne rezonatory o mniejszej tolerancji. 20 albo 10ppm. Opóźnienie w przerwaniu nie ma znaczenia jak obsługa przerwania będzie dobrze napisana. Po protu powstanie wtedy przesunięcie fazy. Ale to przesuniecie będzie stałe. Dodatkowo w mojej...
Ponieważ oprócz przypisania rejestru licznika TC do CR0 przy zmianie zbocza "chcę" wygenerować przerwanie. Za generację tego przerwania właśnie odpowiada 2 bit w rejestrze CCR. Zapis LPC_TMR32B0->CCR = wartosc ustawia tylko te bity które są ustawione w wartosc. Dlatego za każdy razem konieczne jest ustawienie 2 bitu, gdyby to pominął nigdy nie było...
Kwarc dajesz np. 12 MHz Robisz sobie pętelkę pomiarową wywoływaną z Timera np. co 200 µs sprawdzającą dane wejście pomiarowe. Jeżeli wejście jest =0 to nie zliczasz jeżeli = 1 to zwiększasz zmienną WYNIK o 1 (zmienna 16 bitowa) zakres będzie do jakichś 6.4 sekundy. W pętli sprawdzasz także czy zmienna nie przekroczyła 25000 (5 sekund). Jeżeli...
To nie musi być używane z Arduino - może z czymkolwiek, na co można podać sygnał cyfrowy (choćby NE555). Jest więcej podobnych czujników, być może także jakiś dający sygnał analogowy zależny od wielkości/szybkości ruchu (niestety nic takiego nie znalazłem), to by miało taką zaletę, że pozwoliłoby zrobić regulację czułości, ale znalezienie czegoś takiego...
No Dobra program juz prawie napisałem i głowiłem sie nad wersja ze zmiennym PWM+f... ale z tego co mi odpisałes to wnioskuję ze coś tu mi nie gra... A nie możnaby programowo realizować ten restart co 80ms? Moze napisz dokładniej co to ma być a coś doradzimy :) Pozdro No wlasnie o to chodziło by nie restartorwać tego zewnetrznie bo chyba prosciej zaimplementowac...
Na pewno czujnik Halla prościej. Ale nie to, że kontaktronu nie da się użyć, zwłaszcza przy dużych kołach. Zakładając koło 26" i Vmax=55km/h daje nam to ok. 8 obr/s czyli 125ms. Drgania kontaktronu raczej nie trwają 100ms, czyli niewielki zapas jest, wystarczy odpowiednio podejść. Po wykryciu zwarcia kontaktronu trzeba odczekać ok 80-100ms i upewnić...
Problemem jest tutaj fakt ze licznik zlicza impulsy. A ty każdemu krokowi enkodera chcesz przypisać pewna wartość (regulacja zgrubna/precyzyjna) a tego licznik nie robi (bo każdy impuls jest traktowany z taka sama waga). Jednym z możliwych rozwiązań jest zliczanie ilości impulsów i mnożenie ich przez wagę (w zależności od wybranej dokładności). [syntax=c]...
Pod ten drugi procek podpięte jest wyjście USART z XMEGA, dzięki czemu masz je widoczne w systemie jako wirtualny port szeregowy. W ten sposób możesz łatwo komunikować się z XMEGA za pomocą USART. Co do zmiany bitów portów IO - w XMEGA masz rejestry SET, CLR i TGL związane z portem, jeden ustawia bity, drugi kasuje, a trzeci zmienia na przeciwne. Dzięki...
Ja już chyba na to odpisywałem, albo deja vu:) Nie Timer nie liczy stanów a zbocza... tak można na takie i takie zbocze liczyć... Ty zapewne chesz liczyć na zbocze opadające...
https://obrazki.elektroda.pl/1205892900_... Zapraszam na drugą część przygody z termometrem/higrometrem zbudowanym od 0 w oparciu o PIC18F2550, części z szuflady oraz programowanym w kompilatorze SDCC - bez zewnętrznych bibliotek. W tej części uruchomię ADC, czyli przetwornik analogowo-cyfrowy, i zrealizuję w oparciu o niego kontrolę jasności...
IRQ tester https://obrazki.elektroda.pl/3243423400_... IRQ Tester to proste narzędzie, głównie do testowania czasu odpowiedzi na impulsy, lub czasów międzyzboczowych dostarczonego sygnału. Program został napsiany na ukontroler AVR Atmega168, a jego głównym zadaniem jest funkcja multiwibratora monostabilnego, którego działanie polega...
http://obrazki.elektroda.pl/3092945800_1... Witam Nie jest to mój pierwszy projekt ( było ich już z kilkunaście ;) ) , jednak jestem z niego nieco bardziej zadowolony niż z innych; włożyłem w niego także więcej pracy dlatego postanowieniem go opublikować. Ponieważ postanowiłem podciągnąć/ sprawdzić swoje umiejętności programowania /...
Lepiej użyć przerwania timera. W sensie próbkowania na przerwaniu od timera aby pozbyć się drgania styków, czy podłaczyć do sprzętowego licznika (co raczej w AVR Arduino nie pyknie)?
Witam serdecznie wszystkich. Siedzę nad małym projekcikiem i już opisuję co chciałem osiągnąć a co wyszło w praktyce :) Generalnie po małym remoncie zbudowałem ściankę kinowo/TV z oświetleniem LED do okoła. Mam tam trzy paski LED oddzielnie zasilane. https://obrazki.elektroda.pl/4623175700_... Moduł sterowania: 1) Power ON/OFF na pilocie...
Witam, Chciałem napisać w Step7 program, który w momencie, gdy czujnik =1 odmierza czas trzech dni i po tym czasie zapala lampkę. W Step7 timery zliczają czas maksymalnie do 2 godzin i 46 minut, czyli jednego nie zastosuję, a drugi problem to jak zniknie sygnał z czujnika to timer zlicza od zera. Może jest jakiś timer, układ w Step7 co kontynuuje zliczanie...
http://obrazki.elektroda.pl/9838687700_1... Trochę z obawą prezentuję kolejny już na elektrodzie sterownik oświetlenia, no bo ileż tego już tutaj było? A jednak nie znalazłem rozwiązania mnie zadowalającego, dlatego też powstał niżej prezentowany układ, powstał ponieważ klasyczne lampy z czujnikami ruchu mają pewną zasadniczą wadę:...
Jestem studentem, i na laboratoriach z mikrokontrolerów dostaliśmy do wykonania następujące zadanie: Zliczać w timerze ilość kliknięć przycisku i po zarejestrowaniu 5 kliknięć zapalić diodę. Zdaje sobie sprawę że timery nie powinny być w takim celu. Największym problemem przy tym prostym programie są drgania styków. Postanowiłem rozwiązać ten problem...
Witam, zaprogramowałem Attiny 2313 w bascomie tak aby co sekundę gasła i zaświecała się dioda led podpięta do PORTD.6. Ustawiłem obsługę przerwań, konfigurację TIMERA1 podzieliłem go przez 64. Oscylator procesora jest ustawiony w FUSEBITS na wewnętrzny 4Mhz ( 100010:int. RC Osc. 4 Mhz; Start-up time: 14 CK + 65 ms; Config Portb = &B11111111 Portb =...
Wysłałem żądanie ściągnięcia do repozytorium OpenBK7231T_App ze zmianami, aby umożliwić BL0942 pomiar przepływu energii do przodu i do tyłu. 2 edycje plików: drv_bl0942.c i drv_bl_shared.c Podsumowanie zmian: CF_CNT – 24-bitowa zmienna gromadząca dane z akumulacji energii czynnej mogła zostać przepełniona, powodując okresowo fałszywe odczyty. Sposób,...
Jest to możliwe, jednak tylko w sposób programowy. Jak to zrobić? Trzeba ustawić INT0 na reakcje na oba zbocza. Po wystąpieniu przerwania od INT0 sprawdzić jaki stan jest aktualnie na INT0 i w zalezności od tego włączyć/wyłączyć zliczanie timera.
Z tego jak i z tego co przed chwilą wgrałem wynika,że FOSC/4 inkrementacja co cykl maszynowy czyli 4 cykle zegara, a FOSC to taktowanie timera z częstotliwością taktowania rdzenia, ale trzeba uwzględnić, że każda inkrementacja trwa 4 cykle. Próbuje teraz doczytać czym to się różni i jedyne co znalazłem to to, że dzięki temu można synchronizować zliczanie...
Nie wiem jaka częstotliwość impulsów bedzie chciał mierzyć. Nie znam też czasu trwania imulsu. Rozwiązań jest kilka. - użycie wejścia Tx timera. Możesz zliczać Fmax = Fcpu / 2. - w przerwaniu od timera sprawdzasz czy nastąpiła zmiana stanu piny. Tak zmierzysz do kilku kHz - impulsy doprowadzasz do wejścia INTx. Tak zmierzysz kilkadziesiat kHz. Najlepsza...
uaktywnij przerwania i rozpocznij zliczanie timera i wyślij impuls na nadajnik, rozpocznij pętle i... koniec pętli. W obsłudze przerwania które wyzwoli powrót fali zrób takie coś, że ma zatrzymac timer sprawdzic jego stan, cos tam z tym stanem zrobic i wyzerowac timer. wysyłasz znowu impuls i rozpoczynasz timer i RETURN do loopa DO : LOOP i zmniejszyłbym...
Witam, Chciałem zrobić licznik obrotów na AVR, wydaje mi się, że najlepszym sposobem jest zliczanie impulsów z kabla WN cewki, i tu mam pytanie, czy ktoś ma schemat aby móc ładnie je zliczać za pomocą Timera i nie rozwalić mC? Pozdrawiam Tomasz.
Witam, Zgodnie z instrukcją próbuje zrobić generowanie impulsu 10us a później zliczanie timera ale cały czas wynik jaki uzyskuje to 100 czyli domyślna wartość. Nie wiem dlaczego impulsy nie są zliczane: main.c http://obrazki.elektroda.pl/2307557400_1...
Witam, zajmuję się licznikiem częstotliwości. Wykorzystuję timer, generujący przerwania co sekundę, i do tego licznik zliczający zbocza narastające i opadające. Problemem jest fakt, że po uruchomieniu programu dostaję tylko jedno prawidłowe zliczenia, podejrzewam że do pierwszego przerwania. Następne wartości z licznika to zero. [syntax=c] // kod timera...
uczę się programowania AVR w c i na ATMEGA16 napisałem prosty programik mający zliczać impulsy w czasie 1 sekundy timer 1 odmierza czas 1 sekundy timer 0 zlicza impulsy i przy przepełnieniu inkrementuje zmienną do wyświetlenia wyniku zmienna jest przemnażana przez 256 a do wyniku dodawana jest bieżąca wartość rejestru TCNT0 do celów ćwiczenia, jako...
Nio zobaczymy. Doszlismy wkoncu do wniosku ze zliczanie bedzie poprzez port uC a wyswietlanie w przerwaniu timera zeby nie migotaly wyswietlacze. Przy zliczaniu przez timer zlicza on wszystkie drgania przycisku czy przekaznika a RC sie nie sprawdzi bo musi to byc bardzo uniwersalny licznik.
TIM1->CR1=0; TIM1->CR1|=(//TIM_CR1_ARPE| // Auto-reload preload enable TIM_CR1_CMS_0|// Center-aligned mode 3 I nie twórz takich cudów na przyszłość, po co zerujesz rejestr by później wykonać OR na nim? Skoro można wprost zapisać wartość. Sprawdź czy zanim go nie włączysz nie masz ustawionej flagi przepełnienia. Zrobiłeś update timera z zerowaniem...
No przyznaję, że ja zrobiłem to w pełni programowo bo nie wiedziałem, że można zaprząc timera do zliczania czasu pomiędzy impulsami. Bo ja robię tak: uc ma zegar 8 Mhz, przy prescalerze 8 timer tyka sobie co bodajże 0,000001s, przepełnienie (8-bitowego) następuje po 0,000256s co mi bardzo uprościło liczenie czasu. Bo ile tyknięć i przepełnień, tyle...
no może nie trzy dni :D myślałem nad tym jeden dzień i kiedy nie przyniosło to żadnego efektu poszedłem inną drogą, poza tym tak jak pisałem na początku miałem gotowca na zliczanie z timera i nie bardzo wiedziałem jak to połączyć, a tu się okazuje że jak zawsze najlepsza droga to usiąść i napisać wszystko od zera jak dla mnie temat do zamknięcia bo...
Masz w avr-gcc. Dla innego kwarcu, lub innej czestotliwosci przerwan inny preskaler lub wartość OCR1A. #include <avr/interrupt.h> #include <avr/io.h> ISR(SIG_OUTPUT_COMPARE1A) { /* Kod przerwania Timera 1. Wywolywane co 10ms */ } void init(void) { /* Timer 1: ** Tryb CTC (zliczanie do wartosci TOP i...
Witam:) mam pytanie do forumowiczów w sprawie pomiaru częstotliwości, sprawa przedstawia się następująco: chciałbym zrealizować pomiar częstotliwości przy użyciu timera0 (zliczanie impulsów) oraz ustalić czas bramkowania na 1s za pomocą timera1, problem w tym, ze uzyskany wynik strasznie skacze mi po częstotliwościach ;/ i nie wiem jak sobie z tym poradzic.....
Potrzebuję zmierzyć czas trwania stanu wysokiego, będzie to wielokrotność 1 us. Wymyśliłem użycie timera TMR16B0 i jego wejścia CT16B0_CAP0 do rozpoczęcia odmierzania czasu lecz nie wiem jak zrealizować poprawnie [syntax=c] #ifdef __USE_CMSIS #include "LPC11xx.h" #endif // obsluga przerwania TMR16B0 void TIMER16_0_IRQHandler(void) { if ( LPC_TMR16B0->IR...
To co potrzebujesz to zwykłe zliczanie impulsów w czasie. 1. Start timera. 2. Jeśli timer nie odliczył zadanego czasu to zliczasz impulsy. 3. Jeśli timer odliczył to przepisujesz zliczone impulsy to rejestru wyświetlanego na panelu( z jednoczesnym przeskalowaniem na np. godzinę), zerujesz wartość rejestru w którym zliczałeś i restartujesz timer. Czas...
Na tym trzecim kabelku występuje ipuls zwierany do masy. Impuls ma wypełnienie 50% i na jeden obrót występują dwa przejścia, z 0 na 1 i z 1 na 0. Jak to mierzyć ? Ustaw sobie tak aby jeden z Timerów zliczał i powodowłą przerwanie co 1s. Natomiast drugi ustaw na zliczanie impulsów z zewnątrz. Z chwilą przerwania (1s) odczytaj wartośc z drugiego timera...
Ja tylko dodam dwie uwagi: 1. Oczywiście można każde dwie linie kodu (np. te, które ignorowałyby drgania styków) zastąpić przerzutnikiem czy uniwibratorem. Idąc w tym kierunku można wyrzucić mikrokontroler, wstawić kilkadziesiąt układów logicznych i mamy to samo, bez kłopotów z programowaniem. Pozostaje tylko kwestia sensowności takiego rozwiązania...
Timer2 jest nieco inny niż Timer1. Timer2 w M8 może pobierać sygnał zegarowy z oscylatora taktującego procesor bądź z kwarcu małej częstotliwości. Spróbuj dodać do Config Timer2 ASYNC = OFF . Skieruje to do Timera 2 sygnał zegarowy generatora uC. P. S. Jak chcesz sprawdź to sobie ustawieniach rejestrów. Mnie się nie chciało. Poczytaj sobie helpa. No...
Masz rację, z zegara taktującego peryferia masz tylko preskaler 8 i potem 16. Ale nic nie stoi na przeszkodzie, aby jeden timer taktować z zegara CLKPER, ustawić na nim zliczanie do 16 i wyjście z tego timera podłączyć pod event system z którego będziesz taktował inne timery. W takim układzie będą one taktowane z 32MHz/16, czy przez dowolną liczbę z...
(...) Czas trwania impulsu zliczasz wykorzystując właśnie bramkowanie, natomiast jeśli chodzi o zliczanie równoczesne impulsów z zewnątrz to musiałbyś mieć 2 timery, nie 1. (...) Mam dwa timery, problem w tym, że mam za mało wejść int :) Ten uC ma dwa timery i dwa wejścia int, tyle że bramkowanie timera następuje poprzez wejście int, przez co jeśli...
4. Jak rozumiem, Timer1 odlicza odcinki czasu, po których chcesz zobaczyć wynik pomiaru więc: [syntax=c]unsigned char flaga = 0; ISR (TIMER1_COMPA_vect) // timer0 overflow interrupt { impulse_count_frozen = impulse_count; impulse_count = 0; flaga = 1; }; ISR (INT0_vect) // int0 interrupt { impulse_count++; } int main(void) { ... sei(); while (1) { if(flaga)...
Odnośnie sposobu nr 2 - czyli chodzi o takie wykorzystanie: http://mikrokontrolery.blogspot.com/2011... ostatni listing? I wtedy przerwanie, a w ramach obsługi przerwania po prostu odpowiedni interwał czasowy? Nie do końca wiem jak mam użyć przerwań. Póki co, to o ile się orientuje, to aby uzyskać zliczanie impulsów...
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...
Witam W poniższym programie chciałem na przemian zaswiecać i gasić diode po zliczeniu przez zegar RTC jakiegoś czasu np (1 sekundy). [syntax=c]#include<avr/io.h> #include<avr/interrupt.h> #include<util/delay.h> #include<avr/iom8.h> #define TOGL PORTD ^=(1<<PD6) void TWI_start(void); void TWI_stop(void); void TWI_write(uint8_t...
(...)Chcę przy moim kwarcu 11,0592 uzyskać przerwanie co 1 sek(...) Zwracam tylko uwagę na fakt, że Timer zlicza w dół od wartości ICR1 do zera włącznie (po czym znów od ICR1). Akurat fakt jest troche inny. Wszystkie timery w AVR jako podstawowy process liczenia jest liczenie (od zera lub wpisanej wartości do timera - tryb Normal) w grórę do przepełnienia...
Dlaczego nie uzyskasz? Dla 16-bitowego timera i preskalera 1024 dla f=1MHz uzyskasz nawet minutę. Ja bym to zrobił tak, że ustawiłbym timer na zliczanie tego okresu 0-1,3 Hz, w przerwaniu zmieniłbym parametry pracy tak, żeby kolejne przerwanie wyszło po 20ms, wtedy ponowna zmiana i generowanie czasu do kolejnego impulsu. W przerwaniu programowa zmiana...
Po pierwsze, możesz jak najbardziej korzystać z timera (a właściwie to powinieneś, jeżeli chcesz pomniejszyć koszta o zakup zewnętrznego RTC). Po drugie - możesz kalibrować, możesz to robić długo i bezskutecznie. Po drugie i ćwierć - Wewnętrzny oscylator nie za bardzo nadaje się do tego celu. "Nieco" mu się zmienia częstotliwość wraz z temperaturą i...
Przymierzam się do zrobienia komputerka do samochodu. Jego głównym celem ma być obliczanie chwilowego i średniego zużycia paliwa. Nie wiem czy mi się to uda ale chcę wykorzystać kontroler ATTiny2313 i tu mam problem - potrzebuję zliczać czas wtrysku i ilość impulsów z czujnika ABS lub impulsatora na skrzyni, potrzebuję też odmierzać czas... i tu mam...
Witam!!! Od dłuższego czasu mam problem bo nie działa mi w ogóle zapis do rejestrów Pcf-a. Nie mam pojęcia co może być tego przyczyną może ktoś coś poradzi. Poniżej przedstawiam kod. [syntax=c] #include<avr/io.h> #include<avr/interrupt.h> #include<util/delay.h> #include<avr/iom8.h> #define TOGL PORTD ^=(1<<PD6) void TWI_start(void);...
He, dziękuję za sprostowanie - jednak dwa miesiące przerwy w programowaniu i mi się myli :). Tak - wkleiłem te niepotrzebne linie gdyż są one z komentarzem który przynajmniej mi pomaga zrozumieć co tam się dzieje w tych komórkach rejestrów, ale zgadzam się, że również może zaciemniać ogół - i to bardzo :). Freddie napisał dokładnie i krótko, to co chcę...
Przykład timera zrelizowanego na Atmelu AT89C2051 umożliwiający zliczanie czasu w zakresie od 30 sekund do 90 minut. Za pomocą S1 ustawiamy czas, natomiast S2 służy do wystartowania/zatrzymania timera. Zastosowano wyświetlacze LED. Załączony program w assemblerze ma walory edukacyjne, poprzez wprowadzone zamiany w programie możemy dostosować timerek...
Wolałbym nie pisać Ci gotowca ;) natomiast moja rada jest taka. Uruchomić timer i jeśli częstotliwość tych impulsów jest dość wysoka to bezpośrednio w przerwaniu timera dawać sygnał rozpoczęcia i zakończenia zliczania i zliczać w pętli głównej programu, a jeśli częstotliwość impulsów jest mała (np. w ciągu 5 czy 10s ma liczyć) to lepiej zrobić dodatkowy...
Czyli potwierdzasz, że nie wiesz, jak to zrobić. "oóźnienia przy przełączaniu wyświetlaczy", w dodatku "dobierane eksperymentalnie" dobrze nie wróżą. Zacznij od określenia częstotliwości przerwań timera - powinno to być coś około 1800 Hz. Napisz dobrze obsługę wyświeltacza - jakieś max. 6 linii kodu w C powinno wystarczyć - przykładów znajdziesz tu...
nibbit napisał: To co napisał Freddie to raz, a dwa to to że zamiast zaprzęgać dwa timery możesz okresowo sprawdzać różnicę dwóch ostatnich odczytów timera enkoderowego i na tej podstawie odświeżać zmienną 32 bitową. Takie rozwiązanie wiąże się z dodatkowym obciążeniem rdzenia procesora. Na pewno lepiej jest zrobić zliczanie enkodera sprzętowo tym bardziej,...
Przyznam że niezbyt zrozumiały jest dla mnie ten program z obsługą enkodera, ciężko mi to ogarnąć wszystko po prostu. O co chodzi tak w skrócie z tym przerwaniem timera? Dodano po 3 Czytam teraz ciekawy artykuł o timerze 0, pisze że jego zadaniem jest zliczanie przychodzących do niego impulsów, jeśli to tak działa, to myślę że idealne rozwiązanie. Dodano...
Ja to widzę tak: Dwa timery: 1) Ustawić na przeładowanie np co 250ms, w obsłudze przerwania z tego timera: - zapisać wartość timera 2 do zmiennej - wyzerować timer 2 2) Ustawić na zliczanie impulsów zewnętrznych. Można też mierzyć czas pomiędzy przerwaniami ale nie wiem czy procesor wyrobi czasowo.
Poszedłem za wskazówkami i wykorzystałem zliczanie czasu poprzez Timer0 w mikrokontrolerze atmega32. Ogólnym założeniem projektu jest podlewanie zależne od czasu ustawionego z klawiatury 4x4. Lecz tutaj pojawia się moje pytanie: W jaki sposób mogę sterować timerem tak, żebym mógł wydłużać czas działania timera w zależności jaką liczbę zapiszę do zmiennej...
AVE... Można to zrobić sprzętowo na dwóch komparatorach i kilku rezystorach i kondensatorach. Najpierw mierzysz przez ADC poziom szumu i za pomocą źródła napięcia odniesienia i pierwszego komparatora odejmujesz go od sygnału. Potem sygnał rozdzielasz na dwa układy RC, jeden ze stałą czasową Te, drugi ze stałą czasową 2Te. Sygnał z 1Te dajesz jako Twój...
Witam, na potrzeby większego projektu testuje zliczanie impulsów z czujnika szczelinowego jak poniżej: https://obrazki.elektroda.pl/9434569400_... Chcę zliczać impulsy z dwóch czujników. Wykorzystuje do tego przerwania zewnętrzne INT0 i INT1, podłączając wyjścia sygnału z czujników odpowiednio do pinów PD2 i PD3. Przerwania ustawione...
po prostu do nauki działania timera ma to symulować przychodzące impulsy i ich zliczanie zakładałem np. 1 impuls zapis do zmiennej, następnie dwa i zapis sumy do zmiennej itd. - taki prymitywny encoder przy okazji wyświetlanie wyników na LCD
Więc musisz zdecydować o czasie zliczania. najlepiej wykorzystać wejście licznika. Teraz pytanie czy konieczne w twoim przypadku jest zliczanie wszystkich enkoderów jednocześnie czy wystarczy je zliczać pojedynczo i poklei wystarczająco szybko o ile do możliwe. Innym licznikiem odmierzasz czas zliczania. Tu istotne jest aby po uruchomieniu licznika...
Licznik w trybie timera zlicza tzw cykle maszynowe. Jeden cykl maszynowy trwa 12 cykli dołączonego rezonatora kwarcowego. Przy kwarcu 12 MHz mamy 12 000 000 cykli rezonatora co po podzieleniu przez 12 da 1 000 000 cykli maszynowych. Czas trwania jednego cyklu maszynowego to 1 us. Co zrobić, aby odmierzyć 100us? Ponieważ timer liczy tylko do przodu,...
Twój problem sprowadza się do tego, że chciałbyś miec niezależne źródło (licznik), który w tle programu procesora zlicza cykle np. kwarcu procesora. Poczytaj o możliwościach timera w Twoim procesorze, bo to jest klucz do rozwiązania problemu. Pozdrawiam Mariusz Dodano po 1 a co z jakimś "preskalerem", co to oznacza? i do tego zliczanie przepełnień?...
Może tak...enkoder/impulsator działa tak, że zliczając w jednym kierunku pojawia się A, potem B, potem gaśnie A i następnie gaśnie B - wtedy masz jeden impuls w danym kierunku; w przeciwnym kierunku kolejność A-B jest odwrotna. Na obrazku: przygotowanie impulsów - zliczanie w kierunku; zliczony licznik - na "arytmetykę" (impulsy można pomnożyć przez...
Ostatni raz '51 (konkretnie at89c2051) programowałem jakieś 7 lat temu i nie pamiętam już nazw rejestrów itp. Twój program działa tak: MOV TMOD, #02H; //ustawiasz timer w odpowiedni typ pracy MOV TH0, #0FAH; //ladujesz starsza czesz rejestru timera wartoscią początkową NOP; //nie robisz nic CPL P1.0; //zmieniasz stan pinu na przeciwny MOV TL0, #0EBH;...
W trybie CTC nie musisz się martwić o ładowanie nowej wartości to timera, bo dzieje się to samoczynnie. Musisz jedynie na początku programu wpisać przy jakiej wartości timer będzie się resetował wpisując do rejestru OCR2 wyliczoną wartość. Przy 8 bitowym timerze proponuję ustawić preskaler na 1024 zaś do OCR2 wpisać 124 (124 czyli zliczanie do 125)....
Pomyśl, jaką wartość będzie miał licznik po zliczeniu 65536 impulsów? Z jakiego powodu uważasz, że Twój program powinien wtedy uznać, że impulsów było 65535? Wydawało mi się, że pomoc, jakiej oczekujesz - to wskazanie błędów w programie. Tymczasem Ty sprzeczasz się, sugerując, że ewidentny błąd, który popełniłeś, błędem nie jest. Nie pokazałeś wersji...
Mam problem aby zmienić taktowanie timera z wew. generatora atmegi na zew. kwarc zegarkowy (timer 1). Po podłączeniu kwarcu do wejść TOSC1 i TOSC2, ustawiłem flagę CS12 i zmieniłem liczbę zliczanych cykli. Po tych zmianach nic się nie dzieje (nie są zliczane sekundy itd.). Co jeszcze trzeba zrobić? Szukałem, ale niby nic więcej nie trzeba było ustawiać...
Dzięki za odpowiedź. Co d oschematu to nierysowałem gdyż są tam tylko następujące rzeczy: -procek AT9S52 -sygnał zewnętrzny podaje na wejście timera T0, to jest na P3_4 -diodę sygnalizacyjną podłączam na P2_5. To wszystko. Póki co narazie chcę pozostać przy takim rozwiązaniu, jakie jest, tzn. zliczanie impulsów za pomocą drugiego Timera. Sęk w tym,...
Nie PD5 tylko T1 - używaj właściwych oznaczeń do funkcji pinu, który chcesz wykorzystać. Opis znajdziesz na str 88: http://www.atmel.com/dyn/resources/prod_... Spróbuj sam, i co wymyślisz wklej do sprawdzenia - to najlepszy sposób nauki :) Ale czy aż potrzeba timera do liczenia impulsów? Może prędzej do generowania przerwania, które...
Witam wszystkich, powoli kończę swój projekt robocika zwiadowczego do wykrywania metalu, elektronika jak i 90% programu działa OK, niestety mam problem z obsługą timera w PIC16F84A który ma pracować w roli licznika, jeżeli chodzi o zliczanie impulsów z wewnętrznego oscylatora, to wszystko jest jak najbardziej OK, jednak jeżeli chce mu podawać impulsy...
Sorki rz eczywiście coś pokreciłem ale pomogłeś mi ;-) nie wiedziałem ze timer0 jest 8 bitowy myślałem że tak jak timer1 16 bitowy, i nie zlicza on do 4884 tylko 4884 razy sie przepełnia czyli po 1,250,304 X 8 taktch przerywa zliczanie :-) czy po równej sekundzie odliczjąc takty na przepaładowanie timera i wykonanie kilku procedur :) dzieki za pomoc
Szkoda że na '51, bo na AVR było by łatwiej. Można to zrobić tak: Procki '51 mają wejścia zewnętrznego przerwania wyzwalanego stanem niskim, lub zboczem opadającym. Ciebie interesuje to drugie (bo zboczemn narastającym się nie da jak w AVR). Nie wiem jak wygląda konfiguracja przerwań w BASCOMie, zobacz w dokumentacji, ale podejrzewam że coś w rodzaju:...
Zastanówmy się raczej jaka część sekundy jest miarodajna jako odświeżanie pomiaru - powyżej 1/25 sekundy oko nie widzi już skoków|zmian na wyświetlaczu. Nie każdy jednak wyświetlacz będzie tak szybko mógł prezentować dane. co racja to racja. Akurat w swoim obrotomierzu wykorzystałem wyświetlacz 7segment led, do którego wykorzystalem jeden z timerow,...
Czytam i sam się pogubiłem hehe . Czy tu chodzi o względne przesunięcie (tmf) czy bezwzględne (satanistik). Parę miesięcy temu robiłem sterowanie PID dla servo Xmega w bascom . [youtube]https://www.youtube.com/watch?v... Nie obyło się bez problemu , który polegał na zliczaniu bezwzględnym więcej niż 65535 impulsów . Mój wpis z innego...
sleep timera wykorzystanie timera capture timera
tworzyć folder drukarka termostat wymiana toner
telefunken rr200 telefunken rr200
Alan, Midland Alan 42/48/78, SEAT Alana – wprowadzanie kodu cyfrowego i literowo-cyfrowego SEAT Alana – jak wywołać cyfry do wpisania kodu radia, kombinacje klawiszy, SAFE