Witam Można kupić taki timer, a można i zrobić samemu. Całą konstrukcje układu wystarczy oprzeć na CD4047 plus kilka elementów zewnętrznych. Jest to multiwibrator mono/astabilny o dość dobrej stabilności powtarzania w czasie. Tu jest jego nota katalogowa: http://pdf1.alldatasheet.com/datasheet-p... Pozdrawiam.
Chciałem jeszcze dodatkowo wykorzystać alarm z pcf-a aby o określonym czasie włączał i wyłączał codziennie urządzenie. Może to jakoś podzielić? Timer na procku a alarm z pcf-a? Druga sprawa to nie zabardzo wiem jak tego timera zrobić w procku i jeszcze żeby można było ustawiać jego czas z zewnątrz :cry:
555 to bardzo dobry uniwersalny układ generatora impulsów, ale o niezbyt dużej dokładności - w dużej mierze zależnej również od elementów RC w układzie czasowym. O ile idealnie nadaje się we wszelkiego rodzaju minutnikach czy timerach, gdzie dokładność nie ma tak wielkiego znaczenia, to w wypadku zegara potrzebujesz czegoś, co potrafi utrzymać zdecydowanie...
AVE... [url=http://ece.wpi.edu/~wrm/Courses/EE2... masz przykład tego, jak możesz napisać kod w C dla użycia przerwania timera do odmierzania czasu... Druga rzecz: czemu nie użyjesz portu z przerwaniami zewnętrznymi i nie ustawisz sobie przerwania na zbocze wznoszące sygnału lub nie użyjesz PICa z wewnętrznym komparatorem...
Timer w procesorze Ci z taką dokładnością odmierzy spokojnie. 5ms w mikroprocesorach to wieczność ;)
A nie ładujesz do timera wartości przypadkiem tylko raz? powinieneś ładować timer za każdym razem w obsłudze przerwania
Ja doskonale rozumiem, że Atmegi moga pracować na kwarcu zegarkowym, tylko chciałbym wiedzieć na jakiego rzędu dokładność mogę liczyć na zwykłym kwarcu w porównaniu do kwarcu zegarkowego. -- pozdrawiam, demeus Taka sama!.... Wszystkie resonatory kwarcowe maja dokladnosc rzedu +/- 20ppm. Rezonatory zegarkowe jest o wiele wygodniej stosowac do odmierzania...
Tak, niedokładność czasu delay wynika głównie z tego, że dodaje się do tego czas wykonania innych funkcji, w tym szczególnie funkcji obsługi przerwań. W przypadku odpowiedniego użycia timera tej niedokładności nie ma, a w każdym razie nie akumuluje się ona, tak jak w przypadku delay. Oczywiście jeśli coś ma być wykonywane w superdokładnych odstępach...
Można też użyć ten timer w trybie CTC i nie martwić się ładowaniem wartości do timera. Dokładność też będzie większa ze względu na ograniczenie do minimum programowej obsługi.
Należy to zrobić na przerwaniach. Podział 1/32 akurat w tym wypadku nie będzie chyba dobry bo będzie trzeba odmierzać czas z dokładnością 50pikoSekund Przy podziale 1/1 to już "tylko" z dokładnością 5uS. Szukaj "arduino timer interrupt"
Sterownik ma być zbudowany w zasadzie od podstaw. Zależy mi zarówno na układzie elektronicznym, płytce drukowanej jak i programie do uC. Założenia przedstawiają się następująco: Wejścia: a) pomiar temperatury b) pomiar temperatury c) pomiar temperatury d) pomiar (wartość liniowa, napiecie mV, wymagana duża impedancja wejściowa - jest to pomiar ph wody)...
No to okazuje się, że czegoś tu nie rozumiem... Przeczytaj , to zrozumiesz ;) http://en.wikipedia.org/wiki/Intel_HEX Piotrek
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...
Jaka częstotliwość taktowania uK? Od tego zależy jak ustawić Timer. Jaki język?
Nie wiem czy akurat to jest przyczyną problemów, ale kolejność wpisywania wartości do rejestrów TCNT1L i TCNT1H powinna być odwrotna. Przeczytaj fragment "Accessing 16-bit Registers" z rozdziału "16-bit Timer/Counter1" dokumentacji ATtiny2313. Pozdrawiam, Jacek
Jaka dokładność timera? Nie poprawili uśpienia w ESP32? Jaki ma prąd w uśpieniu z działającym timerem?
Nie wiem dokładnie jak to jest w bascomie zrobione, ale teoretycznie nie. Przerwanie Timera2 musi wprawdzie poczekać na zakończenie obsługi przerwania timera 0, ale wywoływane jest zawsze w takich samych odstępach czasu (generator nie jest przecież zatrzymywany). więc jeżeli nawet w którymś momencie wykona się za późno, to następnym razem wykona się...
Źle myślisz. Jeśli przerwanie wystąpi akurat w trakcie funkcji atomic block jego obsługa troszeńkę się opóźni. I objaw będzie podobny to faktu obsługiwania wielu przerwań. Dlatego też jak wielokrotnie powtarzano, obsługo przerwania jak najkrótsza. atomic block również. W sumie powinien składać się wyłącznie z odczytu zmiennej typu volatile do zmiennej...
Witam czy jest ktoś w stanie mi pomóc w poprawieniu jednej procedury? Pisze program w Vb, który za pomocą suwaków reguluje jasność świecenia Diód RGB podłączonych do portu lpt. Problem polega na tym, że w VB kontrolka Timer nie daje wystarczającej dokładności - nie jest w stanie generować czasu z interwałem 1 ms a około 15 ms, co powoduje ze modulowanie...
Witam Czy jest dostepny w windows timer ktory odlicza z dokladnoscia do 1 lub kilku mikrosekund? Jesli nie to czy da sie go napisac w C? Zamykam. - arnoldziq
Jeżeli chodzi o intuicyjne dobieranie wartości to odpada bo ten układ ma mierzyć ilość obrotów ma minutę. Najlepiej jakby miał dokładność do 10 obr/min. , a przy błędnie dobranych czasach będą przekłamania.
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...
Jeśli nie potrzebujesz dużej dokładności, to ja bym umieścił Timer na formatce. Następnie przycisk START włącza timer i jednocześnie zapisuje w zmiennej (np. pole klasy okna) aktualny czas. W zdarzeniu timera wystarczy wyświetlić różnicę między aktualnym czasem, a tym zapisanym. Pod przyciskiem STOP zatrzymać timer i po prostu wyświetlić tekst "0:00"...
Pomiar czasu i otrzymanie częstotliwości bardziej komplikuje program. Pomiar ilości impulsów to tylko 1 timer mierzy czas a drugi pracuje jako licznik- proste i skuteczne
Nie przesadzaj, z jakim zegarem taktujesz procesor? Jeśli nawet tylko 1MHz, to 3 takty to zaledwie 3mikros. A jak potrzebujesz super dokładność to użyj timera i wyjścia OCx. Możesz zaprogramować zmianę jego stanu z dokładnością do taktu zegara z uwzględnieniem preskalera timera.
Jak już koledzy wspomnieli nie ma RTC (czytaj datasheet-y), ale można zrobić własny. Istotnym parametrem będzie jednak dokładność jaką chcesz osiągnąć: http://mikrokontrolery.blogspot.com/2011...
Jaka dokładność ?
Witam Czy ktoś wię gdzie mogę znaleźć komponent (najlepiej freeware) timer ze zwiększoną dokładnością bo ta z podstawowego komponentu mi niestety nie wystarcza..
Póki co to dokładność będzie +- czas miedzy przerwaniami timera sprzętowego. Czy istnieje jakiś sposób na zwiększenie dokładności takiego zegara? ...poza zwiększeniem częstotliwości przerwań timera/licznika? :)
Ale jak dam rezonator zewnętrzny to wtedy timer bedzie dokładniejszy? Dokładności Timera to nie zmieni bo on tylko liczy impulsy. Ale dokładność zliczania czasu to oczywiście się zwiększy. Już rozumiem o co Ci chodzi z tym preskalerem :D rzeczywiście nie spojrzałem na to z tej strony, czyli w tym czasie moge miec duzo wiecej instrukcji żeby tylko trwały...
Ze szczątkowych danych wynika, że ten moduł ustala czas jak każdy zwykły timer i jego dokładność zależy od stabilnosci R i stabilności C, ale - co gorsza - od napięcia zasilania. Tak więc, to ten moduł "C005 się nie umywa do CD4541.
Chodzi mi o wykrycie jakiejkolwiek awari w urządzeniu (awaria czujnika, silnika itp). Chciałbym mieć taki niezależny timer ponieważ dokładność odmierzanego czasu nie jest zbyt istotna ale za to sygnał można dać od razu na kilka mikrokontrolerów połączonych we wspólny system. To takie trochę moje własne widzimisię, ale ciekawy jestem jakby się to sprawdziło.
Nie wiem, jak dokładnie chcesz sterować tymi światłami, ale jeden impuls na sekundę z Timer-a, to chyba wystarczająca dokładność. Robisz zmienną (stałą :) ) globalną:[syntax=pascal]const licznik : integer = 0;[/syntax]I w procedurze OnTimer, dajesz coś w tym stylu :[syntax=pascal]var czerwone,zielone,zolte : boolean; begin czerwone:=false; zielone:=false;...
Miałem podobny problem wystarczyło obniżyć w u stawieniach czasy latency timer standardowo jest na 16 ustawiłem na 10 komunikował się ale nie można było ustawić autoregulacji a na 7 autoregulacja ruszyła. Menadżera urządzeń porty COM i LPT USB serial port właściwości ustawienia portu zaawansowane latency timer (msec) Zwalnia to czas transmisji i zwiększa...
No to w czym problem? PIT chodzi z MCK (kwarc + PLL, niezła dokładność) RTT chodzi z SCLK (oscylator RC, niezbyt dokładny) TC może chodzić z MCK lub EXT_CLK (zegar zewnętrzny możesz podać dokładniejszy, jeżeli dokładność zegara wewnętrznego jest niewystarczająca) To, którego timera użyjesz zależy od dokładności jakiej oczekujesz i Twojej fantazji.
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...
Użyj trybu CTC. Odpowiednie ustawienie timera da niemal "sprzętową" sekundę. Dokładność zależy wtedy tylko od jakości kwarcu.
Jeżeli dokładność pomiaru czasu nie jest krytyczna to użyj zwykłego timera CWnd::SetTimer(). Callback możesz zostawić NULL. Timer wysyła komunikaty WM_TIMER które obsługujesz w oknie. Za każdym razem przeliczasz i wysyłasz 1 fragment. Poczytaj jeszcze [url=http://www.codeproject.com/KB/syste... Jest tam sporo przykładów użycia...
Czy ktoś wie jak w VB zrobić timer w milisekundach? Ustawienie Interval na 1 daje dokładność 1/100s.
W ESP32 jest High Resolution Timer. Można generować przerwania z dokładnością 50µs.
Pokaż swoje próby, schemat podłączenia. Na początek wystarczy obsługa millis(), timery sprzętowe można zostawić na coś wymagającego dużej precyzji, odliczenie 60s nie musi być wyliczane z dokładnością pojedynczych cykli zegara uC. Pisanie na prive to kiepski pomysł, jeśli moje rozumowanie jest błędne tutaj od razu ktoś to poprawi . Akurat w Arduino...
Kosztem dokładności możesz zrobić to na jednym wspólnym 2-kanałowym timerze i przerwaniu EXTIi (oddzielnym dla każdego czujnika). Dwa kanały służyłyby do odmierzania czasu impulsu startowego i kasowania czujnika - wymuszenia kończenia pomiaru, a okres timera wyznaczałby cykl pomiarowy do kolejnego przeglądanai czujników.
do Elektryk 2000. Podczas rego okresu gdy spr pracuje norrmalnie jest 230V a po chwili spada o połowę i termik ...idt ..sprSTOP. Miałem taki przypadek i "fachowcy" wmawiali klientce że spr. Termostat bez timera radził sobie z tym urządzeniem- oczywiście że nie taka dokładność regulacji ale zawsze jakoś po niższym koszcie toto pracowało.
Czy w takim razie ekranowane przewody mogą poprawić dokładność potencjometru? Chyba dokładność odliczania czasu. Owszem, pod warunkiem, ze jedna końcówka potencjometru połączona jest z masa układu przekaźnika. Ale każdy analogowy timer jest mniej dokładny od cyfrowego.
Której? PLL czy tej z dwoma Timerami? Ta z PLL jest bardzo zamotana (albo inaczej - zamotana nie jest ale wymaga dużej ingerencji procesora. A to bardzo spowalnia program główny więc trzeba to napisać a assemblerze i własnie to powoduje zamotanie). Podam więc ten drugi sposób: $regfile = "M8def.dat" $crystal = 8000000 $hwstack = 64 '---------------------------------------...
(at)piotrva To miganie diodami to był tylko taki przykład. Watchdoga chcę użyć tak jak ten timer asynchroniczny w power save.
Witam, A po co w ogóle jest ten delay? Czemu nie tak: if ((Count * 8.75) / 100 > a) { sp1 = !sp1; digitalWrite(przekaznik1, LOW); } else { sp1 = !sp1; digitalWrite(przekaznik1, HIGH); } Dodaj jak chcesz np drugiego timera do odliczania czasu, a może po prostu użyj millis(), dokładność nie jest tu wyznacznikiem, ustaw jedną zmienną przed włączeniem przekaźnika...
Czasem układy zegarowe mają możliwość włączania czegoś o ustalonej porze. Do tego układ czasowy rozłączający urządzenie po iluś tam minutach. Można robić, możńa wykorzystać stary dekoder DVBT, który ma możliwość zaprogramowania czasu włączenia i wyłączenia. Napięcie 5V można pobrać z gniazda USB albo z wejścia antenowego, jeśli zaznaczy się "zasilanie...
czy to będzie led czy silnik to czas nie może się zmienić. Tak naprawde nie da sie na 100% idealnie sterować wiecej jak jednym urzadzeniem, można jedynie przy wielokrotnościach czasu i kiedy czasy te nie pokrywają sie. W każdym innym przypadku będą wachania zależne od częstotliości przełaczania oraz ilości przełaczanych LED. No i im szybszy będzie...
Wewnętrzny oscylator RC jest mocno niedokładny. Z pewnościa musisz kupić zewnętrzny kwarc, ale na ATmedze8 32mhz raczej nie pociągniesz :P Bardziej zalecane jest jednak kupienie kwarcu zegarkowego 32.768 kHz i podłączenie pod piny TOSC1 i TOSC2 które wykorzystuje specjalnie dostosowany pod to Timer2 w trybie asynchronicznym. Wtedy uC można taktować...
W PLC nic nigdy nie robiłem i również chciałbym wystartować w temat lecz też nie wiem w jaki sterownik iść jeśli możesz coś polecić to jak najbardziej gdzie kupić jaki zestaw itd na pewno ta informacja się mi przyda w PLC też chciałem się zapoznać jak się to programuje - ponoć łatwiej niż arduino. Myślałem że taki projekt wyjdzie najtaniej na Arduino....
Witam wszystkich, jestem w trakcie robienia Czasomierza/Okresomierza. W załączniku umieściłem schemat. Jeśli chodzi o Sharpy, to dla nich będą osobne malutkie płytki. Nauczyłem się już obsługi wyświetlacza, ale utkwiłem w samym pomiarze czasu. Używam zewnętrznego kwarcu 16Mhz. Moje pytanie(nigdy nie używałem timerów), jak badać moment kiedy stan niski...
na ile jest sens wykorzystać uC (np. ATtiny12) jako układ czasowy? Jaką miałoby to stabilność/dokładność (przy pracy z wbudowanym oscylatorem 1.0MHz)?? Czy ktoś z Was zajmował się podobnym tematem i mógłby mi coś w tej kwestii doradzić? ;-) Na tym scalaczku troszke by trzeba sie było nagimnastykować żeby zrobić jakiś timer - zawiera tylko 1 i to 8-bitowy...
Jedna uwaga tak na marginesie. Chyba wiem z jakiej książki korzystał kosmo90 i niestety jest tam błąd. Instrukcja Load Timer ma odrobinę inną składnię. Powinno być: Load Timer0, 250 czyli przecinek a nie znak =. Można ewentualnie napisać Timer0 = 5 co da taki sam efekt. A co do sposobu ładowania Timera to w pełni podzielam zdanie M.S. Taki trick poprawi...
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.....
Jeśli robisz to przy użyciu Sleep (bardzo złe rozwiązanie o dokładności nie mówiąc), to musisz wymusić obsługę kolejki komunikatów lub wymusić przerysowanie formatki. Powinieneś zastosować obiekt Timera.
Niewiem czy pomogę, ale wtrącę się do dyskusji. Po co komplikować sobie sprawę zewnętrznym zegarem astronomicznym skoro Integra ma ma swoje TIMERY, które można zaprogramować w podobny sposób jak jest to zrobione w zegarze astronomicznym. Ja do sterowania oświetleniem zewnętrznym zaprogramowałem TIMERY Integry wg tabeli zegara wschodów/zachodów słońca...
Kolejna aktualizacja. Przeniesiono kod OBK do XIP. https://github.com/NonPIayerCharacter/Op... Z innej strony, PinDeepSleep działa dobrze na XR809. Zostawiłem go na noc i obudziłem się rano. Sleep z timerem ma złą dokładność. Nawet jeśli pomnożę sekundy przez 1111, nadal budzi się wcześnie (o około 6 sekund, jeśli...
Można wykorzystać wejście audio w PC, tylko może przez dzielnik, ono jest przewidziane na niskie napięcia, ze 100 razy niższe od tego, co daje NE555. Jak się dobrze postarasz, to można zmierzyć częstotliwość z dokładnością znacznie lepszą od jednej milionowej - chyba żaden oscyloskop nie jest w stanie mierzyć z taką dokładnością.
Witam Właśnie męcze się nad timerami W załączniku masz gotowy program na AVR stopera z dokładnością 0,1s PIOTR
Dzięki za podpowiedz. Nie potrzebuje dużej dokładności, więc zrobię na timerach. Temat zamykam.
Czeka Cię cierpliwe studiowanie DS. W trybie asynchronicznym- który musisz skonfigurować w twoim projekcie- przerwanie co 1s będziesz miał gdy w trybie CTC ustawisz rejestr 0CRA na 127 (str.160). Oczywiście musisz też ustawić zezwolenie na obsługę tego przerwania. Jeśli chodzi o 20ms- to z dokładnością jest trochę gorzej. Przy początkowej wartości timera...
Bez sensu. Użyj timera w trybie capture i tyle. Na odpowiednim zboczu timer zatrzaśnie wartość, z różnicy pomiarów masz z dokładnością do 1 impulsu timera czas impulsu. I nie robi rożnicy jezyk programowania.
(at)Marek_Gorecki Przecież jeśli masz komparator i masz dostępne wejścia, a także wyjście (w każdym AVR, w tym w XMEGA, możesz przepiąć wyjście na pin IO MCU), to możesz ten komparator wykorzystać jako generator. Całkiem to ładnie działa, w dodatku komparatory w XMEGA są dosyć szybkie. Wyjście przez event system sobie routujesz na timer, a w E5 timer...
Nie rozumiem czemu w Twoim kodzie sumujesz dwa odczyty: Nie sumuję :) Poza tym nie mógłbym uruchamiać timera w momencie pierwszego zbocza(opadającego) a zatrzymać a następnie go zerować jak nastapi drugie zbocze(narastające) ? Wszystko zależy od Ciebie. Możesz kombinować na wiele sposobów w zalezności od dokładności pomiaru jaką chcesz uzyskać oraz...
Mniej więcej dobrze rozumujesz ale Logo z tego co wiem jest taktowane częstotliwoscią 96MHz , tak że sam Timer jest o wiele niedokładniejszy niż ten czas kiedy na bramce nor mamy stan wysoki , Praktycznie w żaden sposób nie wpłynie to na jakąś niedokładność w twoim układzie. A napewno tego nie zobaczysz. Powiedzmy że cała ta instrukcja z zerowaniem...
Próbowałem numer zrobić na LPT ale brakło mi dokładności Timera a przygotowane WaitalbeTimery cosik mi ześwirowały i brakło mi częstotliwości generowania impulsu:( Tu będzie ten sam problem, bo musisz stan linii przełączać programowo.
Timer 16-bitowy chodzący w kółko, linie INT0 i INT1 zaprogramowane na przerwania od obu zboczy, obsługa przerwań odczytuje wartość timera i wykonuje stosowne obliczenia. Jeśli procedury obsługi innych przerwań będą poprawnie napisane, nie ma powodu, żeby to nie zadziałało. Powinieneś uzyskać rozdzielczość i dokładność na poziomie kilku mikrosekund.
No dobra, w AVR nie da się ustawić tak aby Input capture zerowało timer (lewizna [; ), więc przerwanie jest potrzebne. Tak czy siak nie trzeba go wyłączać (ani zerować) - może sobie chodzić i odczytywać cały czas wartość ICP, obliczając długość cyklu (aktualny odczyt - poprzedni odczyt), a w przerwaniu co 25ms odczytywać ostatnią obliczoną wartość....
> stoowa Twoje kłopoty powodują 3 ostatnie linijki w pętli while czyli obsługa LCD. W ciele funkcji obsługujących lcd na pewno sa instrukcje blokowania przerwań na czas transmisji danych do lcd. Powoduje to pomijanie wywołań przerwań a co za tym idzie zegarek będzie się spóźniał. Chcemy skrócić czas do następnego przerwania o czas opóźnienia obsługi...
Akurat to da się uzyskać dość dokładnie. Dajesz taktowanie 8MHz. I tym taktujesz Timer bez preskalera. Timer ma liczyć do 1600. Wychodzi 5kHz. I masz 1600 kroków PWMa czyli 1, 2, 3% uzyska się z zerowym błędem (na 1% przypadało będzie równo 16 wartości z Timera). O dokładności zadecyduje tylko dokładność rezonatora kwarcowego. Dla 2 i 4 kHz też się...
Propozycja z 2 timerami może jest koncepcyjnie prostsza, ale zobaczmy - zalecana fext dla timera powinna być < fclk/2.5, czyli TOP timera generującego ustawiasz na min. 2 -> fext = fclk/3 (wypełnienie 1/3 lub 2/3). Stąd widać, że potrzebujesz 3x większej częstotliwości zegara niż w przypadku rozwiązania z pojedyńczym timerem. Poza tym z dwoma...
Widze, w takim razie ze mój "problem" wyniakał bardziej z nastawienia (siebie). Spodziewałem się raczej dużej dokładności z racji zastosowania kwarcu i procesora. Wniosek dla mnie płynie z tego taki , że dokładność jest trochę "picem" trzeba to jeszcze ustawiać ręcznie. Mozna tez chyba próbować z wolniejszymi kwarcami (8Mhz?) lub nawet zegarkowym. Może...
Spróbuj poszukać coś o mikrokontrolerach, są tanie i z całkowitą pewnością pierwsze lekcje pomogą Ci zaprogramować wymagane przez Ciebie zadanie. Do tego możesz dołączyć wyświetlacz i klawiaturkę (zależne od zaawansowania programu). Ewentualnie możesz użyć przekaźników czasowych, lecz nie uzyskasz takiej dokładności. Polecam też timer 555. Pozdrawiam
Większym problemem nie jet tu timer, a termometr mierzący z dokładnością 0,1⁰C. Czy naczynie i odbudowę elektroniki także należy wykonać?
niestety zegar mi się delikatnie "rozjeżdża". Co masz na myśli pisząc "delikatnie"? Brałeś pod uwagę dokładność zastosowanego kwarcu?: http://mikrokontrolery.blogspot.com/2011...
Ale dokłądność nie jest za dobra, a to dlatego że odmierzenie 10ms z kwarcem 11.0592 wymaga ładowania do Timera liczby z cześcią ułamkową, Ale chyba 0.00001sek dokładności Ci wystarczy? :P
Można wykorzystać jakiś nieużywany timer- jeśli jest. Inkrementować jakąś zmienną tymczasową, zapisywać do innej i porównywać. Jak pierwsza większa-jest sygnał. Jak nie- nie ma sygnału. Jeśli jest wolny timer.
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...
Jak na układ RC to dosyć długi czas, wymaga użycia dużych kondensatorów, a wiec elektrolitycznych, przez co dokładność jest słaba, ale można użyć timera 4541, który ma oscylator pracujący na wyższej częstotliwości i dzielnik.
Nawet nie koszty ani wielkość są straszne. Kondensatorek 220uF i rezystor dużo nie kosztują i nie zajmują tyle miejsca, żeby się tam nie zmieściły, ale rezystor miałby dużą wartość (4Mohm). Przy takiej pracy i tolerancji wykonania elementów elektronicznych, nie wspominając o dużym zakresie temperatury pracy dokładność wahałaby się w granicach 2 minut...
W tym napędzie jeśli to wersja centralki z wyświetlaczem i z osobnymi wejściami OPEN i CLOSE to proste - 3 zegary dobowe (albo lepiej przekaźniki czasowe z timerami dobowymi - zegary można ustawić z dokładnością minutową, timer może wydać impulsy sekundowe z dokładnością sekundową) - jeden podający o ósmej rano impuls na OPEN, drugi w tym samym momencie...
To nie jest najlepszy sposób, jeżeli jest potrzebny precyzyjny zegarek. Jeżeli gdzieś w programie głównym przerwania są zablokowane na dłużej niż niecałe 100 us (1/10800 minus czas dojście do ustawienia timera w przerwaniu ) to zegar będzie się spóźniał. Są lepsze możliwości: 1. Zmienić główny podzielnik na 64 i nie modyfikować timera w przerwaniu....
Właściwie układ można zrobić na jednej bramce shmitta, tranzystorze i przekaźniku. Jaka dokładność? Czy te 2s ma jakąś tolerancję?
2. Duża częstotliwość taktowania timera to wysoka rozdzielczość, ale czy też dokładność? Zakładam że jest tam PLL i jakiś wzorzec, od jego stabilności oraz pracy pętli będzie zależała wynikowa dokładność? HRTIM nie działa z taką wysoką częstotliwością, tylko z taką "częstotliwością ekwiwalentna", tam jest Delay-Locked Loop (DLL).
Bardzo długie impulsy można też uzyskać poprzez dodanie licznika, który podzieli impulsy zegarowe z wyjścia NE555 np. dekada zmniejszy 10 krotnie, 2 szeregowo połączone dekady 100 krotnie i tak dalej. Ale wymaga to zastosowania dodatkowego (lub dodatkowych) układu scalonego. Ostatnio jednak jako alternatywę zastosowałem z dobrym skutkiem specjalizowany...
Napisałem Ci jak zrealizować, (dobrze wiedzieć, że w końcu jest tam masa a i jak widać inne przewody... PS pomiar napięcia na 150metrów to szaleństwo!). Bit startu 0x55 lub 0xaa mierzysz długość jedynki lub zera jak wolisz masz czas odniesienia. Wiesz ile trwa jeden bit, potem najprościej przesuwasz sobie o t_zmierzone/2 czyli czas=mierze_czas(); delay(czas/2);...
Przy ustawianiu nowej wartości kanałów posortuj sobie je z rosnącymi wartościami i wylicz odstępy pomiędzy nimi. Przy przejściu przez zero włącz wszystkie kanały i zacznij odliczać czas do wyłączenia pierwszego kanału (najmniejsze wypełnienie). W obsłudze przerwania timera pobierz następną wartość z tablicy (odstęp pomiędzy 1 i 2 kanałem) i tak dalej,...
Standardowo nie masz zegara o potrzebnej rozdzielczości. Ja bym zrobił tak: napisał własną obsługę przerwania timera systemowego (nie RTC) aby uzyskać licznik do pomiaru z zadana dokładnością, podłożył ją pod tę standardową, podkręcił częstotliwość przerwań (standardowo jest to ok 18 Hz) do takiej jak potrzeba. Wtedy w przerwaniach od transmisji używał...
Najprościej - CD4541 https://www.google.pl/url?sa=t&rct=j&q=&... Działa od 2V, niezła dokładność.
Timer osobno czy razem z termostatem bez znaczenia, ważne z jaką dokładnością chcesz utrzymywać zadaną temperaturę - od tego zależy wybór termostatu. Podobnie timer - odliczanie minutowe czy sekundowe.
Jeśli chciałbyś się wznieść trochę wyżej, poczytaj o timer-ch. Umożliwiają one bardzo dokładne odmierzanie czasu (zależe od dokładności użytego kwarcu) i wykonanie procedury w przerwaniu, czyli po czasie jakie odliczył timer i bez względu na to jaki kod akurat realizuje procesor.
Ze zmienną nie, zawsze podawałem wartość. Do zmiennej wartości używałem zwykle timera bo potrzebowałem większej dokładności. Zawsze można samemu napisać odpowiednią funkcję jeżeli oryginalna za dużo zajmuje. Chociaż to trochę dziwne żeby zajmowało 3.5kB. Przecież to tylko dodatkowa pętla w _delay_ms(1). (przynajmniej ja bym tak zrobił)
Te 5Hz to częstotliwość podawania komunikatów przez port szeregowy - tutaj nie uzyskasz us dokładności. Pisałem o sygnale prostokątnym, który możesz wykorzystać do synchronizacji timera jak pisał michalko12. Pełne sekundy wystarczą do dokładnej synchronizacji.
Nawet standardowe funkcje _delay_ms i _delay_us z boblioteki delay.h nie blokują przerwań więc podobnie jak Twoje są narażone na to o czym pisze Asembler. Czasami dokładność nie ma aż takiego znaczenia np. mruganie diodami, czy generowanie dźwięku, itp. Ale jeżeli ma, to albo timery albo blokada przerwań.
Jeżeli potrafisz na mikrokontrolerze zmierzyć czas, to obliczenie odległości jest banalne. Fala dźwiękowa rozchodzi się w powietrzu z prędkością ok.330m/s. To nam daje 0,33m/ms (330mm) i 0,33mm/us Musisz liczyć, że fala najpierw musi dotrzeć do obiektu, a potem wrócić. Więc w praktyce każdy metr jest pokonywany dwa razy. Dlatego weźmiemy na to poprawkę...
Te mikrokontrolery mają coś takiego jak System Tick Timer, dzięki któremu możesz ustawić przerwania z dokładnością do 10ms. Ja mam coś takiego ustawionego dla LPC1343 (inicjalizacja SysTick): [syntax=c] // System Tick Clock source: System clock SysTick -> CTRL = 0x7; // Program the LOAD register (10msec) SysTick -> LOAD = 0x0927BF; // Clear SysTick...
Zobacz: On Delay Stopwatch Timer ONDTR_* Nie wiem jaką potrzebujesz dokładność, ale może wystarczy liczyć np.: 100ms impulsy i sprawdzić ile trwa powiedzmy 10 cykli.
Nie każę stosować timera. Tylko takie użycie delay powoduje dość sporą jego niedokładność. Jeżeli mamy stałe skoki czasu to można to zrobić tak: [syntax=c]uint8_t delayTimeInSeconds; void delay() { int i; for (i = 0; i < delayTimeInSeconds; i++) { delay(1000); } }[/syntax] I obsługę przerwania/przycisku zrealizować tak: [syntax=c]#define MAX_DELAY_TIME_IN_SECONDS...
Witam kolegów! Ustawiłem na atmedze128 timer 1 i 3 w tryb ctc. skorzystałem z nich z tego względu, że są 16-bitowe i liczyłem na większą dokładność. regulacja przy zmianie wartości ocrx jest nieliniowa i o tym wiedziałem. jednak muszę ustawiać częstotliwość ok 60khz z dokładnością do 0,1khz. Rzecz w tym, że przy niższych częstotliwościach regulacja...
dokładność rezystorów dokładność przetwornik pt100 dokładność
zmywarka bosch chiny czujnik cofać passat honda civic termostat
Terma KTX4 – świecące zero na wyświetlaczu, tryb czuwania, brak grzania, interpretacja symbolu Xerox WorkCentre 6605 – naprzemiennie blade i mocne kolory zdjęć, pełne tonery, kalibracja