Witam No to po urlopie to pewno masz więcej energii na działanie, a myślałem że już zrezygnowałeś z tego wyzwania :wink: Mam pewien problem z uruchomienie pliku .exe (próbowałem wklejać bibliotekę do katalogu Windows i system32, oczywiście na początku uruchamiałem wszystko w jednym katalogu no ale sam widzisz) :?: Wiesz może co to za błąd? (na moje...
Jakiego typu jest absolutnie absurdalny i perwersyjnie wypaczony pomysł, aby mając OSa robić takie delay'e w wątkach ??? Również o podobną perwersję zakrawa wykonywanie przerwania timera co mikrosekundę tylko po to, zeby zmniejszać tam jakąś zmienną. Wez timer, skonfiguruj go jako one-shot, skonfiguruj mu takt na 1us, do ARR wpisz chciany czas w us,...
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)....
Jednak zrób to z timerami. Twój procesor wykonuje jedną instrukcjŁ an ogół w jedną mikrosekundę. Pętla, w której odliczasz jednomikrosekundowe opóźnienia samy wykonuje się kilka mikrosekund - tak zrobione opóźnienia są trudne do określenia, w każdym razie niewiele mają wspólnego z tym, co chcesz uzyskać. Do sterowania serwem (zwłaszcza płynnego) potrzebujesz...
11.0592 / 12= 0.9216 tyle trwa okres zegara w mikrosekundach . Poniewaz F=50 hz okres 20ms / 2= 10ms =10000 mikrosekund 10000 / 0.9216 = 10851- tyle taktow musi policzyc licznik timera, przerwanie wystapi gdy licznik doliczy do 65535 +1, poniewaz liczy od 0 do 65535 ,trzeba mu wpisac wartosc poczatkowa. zeby odliczył owe 10851 taktow , czyli 65536-10851...
Zapytaj bota Bardzo proszę. Inicjalizacja timera : Funkcja timerBegin(frequency) tworzy i uruchamia timer z określoną częstotliwością. W tym przypadku ustawiamy częstotliwość na 500 Hz, co odpowiada okresowi 2 ms. 2. Przypisanie funkcji obsługi przerwania : Za pomocą timerAttachInterrupt(timer, &onTimer) przypisujemy funkcję onTimer jako obsługę...
Proszę zapoznać się np. z tym tematem : [url=http://www.elektroda.pl/rtvforum/vi... Dokładny timer, mikrosekundy.
Zapamiętujesz timestamp ostatnio odebranego znaku (w milisekundach albo w mikrosekundach w zależności od prędkości transmisji). Następnie testujesz ile czasu upłynęło od odebrania ostatniego bajtu (np w przerwaniu od timera). Jeżeli czas od odbioru ostatniego bajtu > 3.5T to uznajesz że odebrałeś poprawną ramkę.
Chciałbym zmierzyć jak długo wykonuje się przerwanie od DMA po zakończeniu transmisji z I2S. Myślałem nad uruchomieniem jakiegoś timera, który będzie zliczał mikrosekundy, ale kiedy wykonuje się jedno przerwanie z najwyższym priorytetem to inne są hamowane. Dobrze kombinujesz! Ale trochę przekombinowujesz :). Nie potrzebujesz żadnych dodatkowych przerwań...
Na forum timerów jest zapewne sporo - użyj wyszukiwarki. Podobnie w sieci. Pisząc "odlicznie czasu" masz na myśli zegar czasu rzeczywistego (sek, min, godz), czy jakąś inną jednostkę np. mikrosekundy, itp? WinAVR - jeśli możesz zainstaluj AVR Studio 4 i nie męcz się więcej.
Hej Niewiem czy windzie jest dostepny timer o precyzji mikrosekund. Ale znalazlem taki timer, moze sie przyda: ZEN TIMER v2.2: The Zen Timer is a high precision (microsecond accuracy) timing library for 16 bit real mode, 16 bit protected mode and 32 bit protected mode programs. Supports Borland C++, Watcom C++, Visual C++, Symantec C++, Metaware C++...
Podczas odbioru danych z pinu PD2 ( funkcja zgłoszenie ) występuje błąd tylko wtedy gdy przerwanie z timera 0 jest aktywne. Gdy na czas odbioru danych zablokuję to przerwanie procesor ładnie odbiera wysyłane do niego dane. I moje pytanie brzmi: Co jest nie tak z przerwaniem? Konkretnie to, co wskazał albertb: ... jeśli masz włączone przerwanie to jego...
Chciałem zrobić taką uniwersalną funckję, która będzie wstrzymywała program na określoną ilość us z wykorzystaniem timera. Projektując urządzenie wykorzystujesz jego zasoby (wewnętrzne moduły) w taki sposób, by spełniły wymagania jakie stawiasz przed urządzeniem. Tworzenie ogólnych (czytaj: do uniwersalnego zastosowania w różnych projektach) funkcji...
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.
/* Setup SysTick Timer for 1 µsec interrupts */ Następny... Czy naprawdę uważasz, że przerwanie co jedną MIKROsekundę to jest dobry pomysł? Twój program się "zatrzymuje", bo po prostu w kółko wchodzi i wychodzi do przerwania (które zresztą nie jest nikomu do niczego potrzebne, ale...). Jeśli do tego próbujesz pracy krokowej, to już w ogóle Twój...
Witam Czy możliwy jest pomiar czasu w sterowniku S7-200 w mikrosekundach np. pomiar czasu sygnału cyfrowego pomiędzy zboczem narastającym a opadającym. Z tego co mi wiadomo w standardowych timer'ach dostępnych w tym sterowniku najmniejsza rozdzielczość to 10ms to dla mnie za mało. (nie znam także z jaką maksymalną częstotliwość sygnału wejściowego jest...
Takie rzeczy to tylko sprzętowo na timerze w trybie PWM. Twoje założenie o tym, że pętla wykona się w 1..2 us jest niezbyt realistyczne - przyjmując w uproszczeniu, że ATmega wykonuje jedną 8-bitową operację na cykl, Twoja pętla wymaga przynajmniej kilkudziesięciu takich operacji, więc jej czas wykonania wyniesie min. kilkanaście us. A poza tym - nie...
Najprościej można tak: 1. Ustaw przerwanie zewnętrzne na pinie ECHO wyzwalane na obydwa zbocza. 2. Gdy przychodzi przerwanie odpalasz timer pracujący z rozdzielczością powiedzmy 1us. 3. Gdy przychodzi kolejne przerwanie (od opadającego) to wyłączasz timer i sprawdzasz w rejestrze timera ile mikrosekund odliczył. 4. Wynik w us podstawiasz do wzoru i...
Rozumiem, ze zmienne zadeklarowales jako volatile, czy zapomniales o tym?:) Druga sprawa - komplikujesz. Ustaw 16-bitowy timer tak, zeby np. mial impuls co 1us, albo czesciej, w zaleznosci jaka potrzebujesz rozdzielczosc. Impuls, ktorego czas badasz wyzwala przerwanie, odczytujesz zawartosc 16 bitowego timera, czekasz na kolejne przerwanie, ponownie...
Witam. Timer mikrokontrolera '51 taktowanego zegarem 11.059200 MHz zliczy w ciągu jednej sekundy 921600 impulsów. Ze względu na wielkość timera (2 bajty) może Kolega zliczać setne części sekundy - ustawić przerwanie co 9216 impulsów. Każde wywołanie przerwania zwiększy zmienną o 1, czyli mamy w niej wynik pomiaru z rozdzielczością 0,01 s. Rozwiązanie...
Co to jest Prescale ? Timery w mikrokontrolerach AVR nie muszą być taktowane zegarem systemowym - często jest on za szybki dla potrzeb projektanta. Inżynierowie z Atmela rozwiązali ten problem, umieszczając dodatkowy (nieco ukryty) licznik zwany prescalerem. Z tego licznika otrzymujemy kilka nowych sygnałów zegarowych, z których skorzystać mogą timery....
A jaka rozdzielczosc pomiaru potrzebujesz ? To chyba zasadnicza kwestia. Czyli na ilu bitach chcesz mierzyc te kilka mikrosekund ? Pozdrawiam, yego
Też tak mi się wydaje. Sprawdzę po niedzieli czy to problem z delayem od HALa bo z tym programowym problemu raczej nie ma. Stosuję dwie funkcje ponieważ jedna daje opóźnienia w ms - HAL_Delay(), a druga to zrobiona programowo na timerze funkcja delay() która ustawia opóźnienie w mikrosekundach.
Zamiast tak kombinować to nie prościej wziąć XMEGA32, która nie jest droższa, a może nawet tańsza i ma 32-bitowe RTC, które rozwiązuje problem sprzętowo. A jeśli to nie wystarczy to sobie przez event system można kolejny timer podłączyć i mieć 48, 64 czy ile tam potrzeba bitów.
Wystarczy uruchomić któryś z timerów procka. Może być w tle, wystarczy np. [Start Timer0] wtedy połówki TL0 i TH0 zaczną liczyć. Dane z TH0 i TL0 możesz wykożystać do swoich potrzeb.
Witaj !!! Tak jak napisał kolega LightHouser, nop to rozkaz, który nie robi na prawdę nic ale zajmuje cykl rozkazowy. W standardowym procesorze '51, zastosowano preskaler przez 12. Znaczy to, że częstotliwość taktująca (kwarca) wstępnie jest dzielona przez 12. Jeżeli zastosujesz kwarc np:12MHz to naprawde rdzeń procesora będzie taktowany częstotliwością...
Przecież timer i preskaler są 16-bitowe TIM2 i TIM5 mają liczniki (CNT) 32-bitowe. 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. Wyrzuć przerwanie. Ustaw PSC na 83 i ARR na (unsigned)-1. Z TIM5->CNT będziesz odczytywał us.
OK Blue_Draco Czyli mam do wykorzystania timer1 Atmegi8 Jest on 16 bitowy timer2 - 8 bitowy Przypuśćmy że wykorzystam timer2 bez prescalera to wykorzystując powyższy wzór bez ładowania żadnej wartości do timera mam na czytsto 1/ 8000000 /256= przerwanie co 32 mikrosekundy to chyba za mało do odmierzenia kilku mikrosekund nie wiem jak będzie z timerem...
z tego co wiem to delay to komenda to odliczania czasu w mikrosekundach, a do dokładnego odliczania czasu należy używać funkcji Timer.
To przeliczenie które Ci podałem jest do pomiarów bardzo krótkich okresów czasu - rzędu mikrosekund - z wykorzystaniem właściwości ElapsedTicks. Jeżeli mają być milisekundy, wyświetl po prostu ElapsedMilisecond, bez żadnych przeliczeń (patrz: post #2)... Uwzględnij też, że w postaci którą Ci podałem mierzony jest czas wykonania kodu między Start() a...
Witam, chciałem zrobić sterowanie silnikiem krokowym przy wykorzystaniu Timera. Niestety milisekundy są za długie a potrzebuję uzyskać większe prędkości. Wcześniej zamiast timera miałem delayMicroseconds(); ale z timerem jest łatwiej, tylko nie mogę znaleźć sposobu żeby obliczał w mikrosekundach. Czy jest w tej bibliotece taka opcja? a może są inne...
Co prawda nie do enkodera, a do czujnika HC-SR04, ale reguła ta sama, pomiar szerokości impulsu. Zrobiłem to na systemie zdarzeń. Kod: [syntax=c]// konfiguracja systemu zdarzeń pod czujnik HC-SR04 EVSYS.CH0MUX=EVSYS_CHMUX_PORTD_PIN1_gc; // źródłem eventu pin PD1 PORTD.PIN1CTRL=PORT_ISC_BOTHEDGES_gc; // ustawienie przerwania na oba zbocza TCD0.CTRLB...
Witam! Od niedawna zmagam się z problemem którego nie mogę rozwiązać, dlatego zwracam się do was z prośbą o pomoc.A więc tak: potrzebuję zrobić odmierzanie czasu.Zamysł jest taki: taktuję Timer0 (8 bitowy) zegarem 4Mhz bez preskalera.Licznik przepełnia się po 256 taktach zegara czylo flaga przepełnienia ustawiana jest co 64us.Następnie wywoływane jest...
W pierwszym kodzie pojawia się czas 10us (mikrosekundy), później milisekundy. Rozumiem, że ma być 10ms? Dla 10us można jeszcze zautomatyzować przeładowanie timera np. tak: [syntax=asm51] LED2 BIT P1.2 ORG 0000h LJMP START ORG 000Bh ;TU ZACZYNA SIE OBSLUGA PRZERWANIA T0 CPL LED2 reti ;powrót z obslugi przerwania START: MOV TMOD, #00000010B ;USTAWIENIE...
Tak. Funkcja micros() zwraca czas w mikrosekundach od uruchomienia. Innym sposobem jest chyba to co napisał R-MIK w pierwszy poście Mogłeś użyć sprzętowego przechwytywania timera do pomiaru czasu.
Istnieje coś takiego jak HPT (High Performance Timer), pozwalające odmierzać czasy na poziomie mikrosekund i faktycznie było już omawiane na tym forum. Rozdzielczość czasu mocno zależy od sprzetu. Trzeba mieć to na uwadze, pisząc program.
Witam, Chciałbym mierzyć czas miedzy dwoma sygnałami gdzie pierwszy sygnał generuje START, a po kilkunastu mikrosekundach taki sam sygnał dochodzi z drugiego źródła i generuje STOP pomiaru. Odstęp między tymi sygnałami wynosiłby od kilku do kilkudziesięciu mikrosekund. Chciałbym do tego wykorzystać funkcje Input Capture Timera 1. Niestety Atmega328...
Po pierwsze to ty jak zwykle w temacie, gdzie chodzi o AVR 8bit zaczynasz opowiadać jak to ty robisz na ARM'ach - a to nie ma nic wspólnego z tematem. Po drugie - panie kolego - może już przestań opowiadać o Delayu 750ms, bo myślałem że co do tego to chyba się rozumiemy - że to jakaś bzdura i tak się nie robi. Ja piszę o pozostałych delayach ale tych...
sleep() ?? lub element timer zależy co kto woli ;) ---- zrób własną funkcję pętli
mikro = 0.001 [mili] mikro = 1 / 1000 [mili] czyli jedna milisekunda(ms) ma tysiąc mikrosekund(us). Mam pytanie: czy to działa z metodą wysyłania kwadratowej fali? Bo ja chcę zrobić pilot który będzie wysyłał parę komend, ale nie wiedziałem jak zmodulować sygnał. bardzo bym prosił o potwierdzenie tego sposobu. A co do wysyłania tylko przez określony...
Celem jest zrobienie funkcji zliczającej czas między przerwaniami generowanymi przez zewnętrzny generator (docelowo będzie to obrotomierz). Generator jest precyzyjny, AD9850. Na wejście zapodaje prostokąt o różnym od 50% stopniu wypełnienia ale to właśnie nie powinno mieć znaczenia. Wyjaśniam. W poniższym kodzie korzystam z funkcji micros która mierzy...
Najpierw zastanów się po co chcesz odmierzać pojedyncze mikrosekundy... Moim zdaniem nie ma w ogóle takiej potrzeby. Nastaw timer na taki czas, jakiego naprawdę potrzebujesz. Podtrzymuję zdanie, że taka obsługa LCD (z opóźnieniami na timerze) ma same wady.
Na Mega328 z KB RAM uruchamianie OS nie bardzo ma sens. Zrób wielowątkowość opierając cały program o maszynę stanów. Zapomnij, że istniej delay. Owszem, krótkich delay (mikrosekundy) w AVR przeważnie nie da się przeskoczyć ale nie zawsze. Na 1-Wire, można obsłużyć USARTem. Nie ma żadnych delay i 1-Wire działa na przerwaniach. Masz więc już pierwszy...
(...) żdy zasilany z osobnego źródła i odseparowany transoptorami PC817. Ze względu na ich szybkość oraz niską wartość prądów je sterujących 1mA zegar musi być obniżony do 10KHz ma. Chcę zrezygnować z polecenia: waitus 100 w zamian zrealizować to w obsłudze timer0 a w główną pętle przeznaczyć na inne cele. Rozumiem, że chcesz optymalizować swoje oprogramowanie...
(at)leonow - tak, prawda, kwestia jest taka że licznik może zgłosi za kolejną sekundę kolejne przerwanie, ale czy ono będzie w równych interwałach tak samo szybko przetwarzane to zupełnie coś innego - bo jeśli co 666 przerwań drugiego timera wydłuży się obsługa przerwania pierwszego o ileś tam mikrosekund to o tyle będzie już gorzej nasz zegarek działał.
Jeśli bez timerów to zadeklaruj 4 zmienne typu long ( dla odliczania dużych wartości - to będą czasy przerw ) i 4 zmienne typu byte (czas impulsu) zerujesz zmienne przed pętlą . W pętli incrementujesz kolejno te cztery zmienne. sprawdzasz komendą if czy kazda z nich osiągneła założoną wartośc (czas przerwy) . Jeżeli tak to : zerujesz zmienną , incrementujesz...
Nie rozumiem jak i kiedy mam ładować te wartości - prosiłbym o jakiś przykład. Czy mógłbyś to rozpisać (tak jak ja w pierwszym poście), zarówno dla timera jak i rejestru compare? Nie wiem jak z czasami tego ładowania ponieważ generowane impulsy są rzędu mikrosekund. Nie zaburzy mi to zależności czasowych? Czy ktoś z Was robił podobne rzeczy w picbasic,...
Hi wszystim!!! Dziala!!Chocby z predkoscia 1Mhz,wiecej nie sprawdzalem. Oto kod: Czas podajemy w mikrosekundach. procedure DELAY(czas:integer); var zm1,zm2 : int64; cykle : int64; begin cykle:=round(czas/1000000*(frequency)); QueryPerformanceCounter(zm1); repeat QueryPerformanceCounter(zm2); until zm2-zm1 > cykle; end; TYlko,ze zuzycie procesora jest...
Ale przecież w przerwaniu timera triak w odpowiedniej chwili włączam, więc skoro mam go wcześniej wyłączyć to późniejsze włączanie nie będzie miało sensu, gdyż w kolejnym wywołaniu przerwania timera ten triak zostanie niepotrzebnie wyłączony. Właśnie tak. MOC3023 z Twojego schematu potrzebuje pewnie kilkadziesiąt mikrosekund żeby się włączyć, a wyłączy...
Nemo: Przeciez nie ma to znaczenia gdyz przerwanie nastepuje co rowny okreslony czas, tylko ze z opuznieniem a opuznienie zedu mikrosekund nikomu chyba nieprzeszkadza ;) Zgloszenie przerwania --> skok do timer 0,1s Zgloszenie przerwania --> skok do timer 0,1s Zgloszenie przerwania --> skok do timer 0,1s ... Timer: czeka pare cykli wykonuje procedury...
delay mikrosekunda impuls mikrosekunda amper mikrosekunda
ładowarka trakcyjna pilot serwisowy zielony philips astra kostka stacyjki
budowa prostownika budowa prostownika
ER 22 Bosch Siemens Whirlpool LG – błąd panelu dotykowego, czujnika lub sterowania JCB 3CX 2002 – wpływ stacyjki na nierówną pracę silnika, objawy, diagnostyka