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.
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...
Timer, to dobry pomysł. Trzy zmienne boolean do zapisu widoku świateł, zliczanie "impulsów" Timera, i zmiana zmiennych co ileś-tam impulsów. Po odliczeniu do zadanej wartości (cały cykl), kasujesz licznik i od nowa.
Nie mogę zliczać impulsów timerami gdyż są one już zajęte do innych celów. A przerwań innych niż INT0, INT1 używasz?
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.
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...
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 &=...
Tak odpal helpa zajrzyj do config timer i tam będzie przykład;)
Rozważyłbym coś takiego: timer 8bit do przerwań, które zliczasz dla odmierzania czasu; timer 16bit do sprawdzania, czy nie zgubiłeś przerwania - chyba nie zgubisz 256 przerwań?
[syntax=c] #define Button (1<<PB0) #define Button_PORT PORTB #define Button_PIN PINB #define Button_DDR DDRB volatile _Bool Key_Pressed = 0; // flaga wciśniętego przycisku [/syntax] [syntax=c] Button_DDR &= ~(Button); //port - wejście Button_PORT |= (Button); //włącz pull up [/syntax] [syntax=c] ISR(TIMER0_OVF_vect)//przerwanie wywoływane...
Rozwiązywałem podobny problem (jestem początkujący) wykorzystałem dwa liczniki 8051 1. ustawiłem timer 1 na zliczanie impulsów zewnętrznych 2. ustawiłem timer 0 aby zliczał czas co 1 sek 3. wykorzystałem bit przepełnienia TF0 w celu sterowania w TCON bitem TR1 włącz wyłącz licznik i w ten sposób timer 1 zlicza mi impulsy zewnętrzne w czasie 1 sek a...
ad 1. Użyj timerów - taktując je zegarem o odpowiedniej częstotliwości licznik timera będzie zliczał czas. ad. 2. Użyj timera :) Tylko w trybie input capture - w tym trybie licznik zlicza impulsy zegara taktującego i jest stopowany zboczem sygnału doprowadzonego do wejścia ICP timera.
Mysle ze zliczanie czasu na timerach można wykonać bez żadnych problemów i nie będzie żadnych zakłamań. Po to są timery żeby dokładnie zliczały a czas wykonywania programu przez CPU nie ma znaczenia (chyba że chce się mierzyć krótkie czasy krótsze niż cykl pracy programu). Dobrym pomysłem jest generowanie impulsów co 1 sekundę i ich zliczanie na jakimś...
Pomiar czasu będzie dokładny, co najwyżej odświeżanie obrazu może być zakłócone. Nie licz sekund samodzielnie, tylko za każdym razem odejmuj aktualny czas od początkowego. Zamiast time() można użyć dokładniejszej gettimeofday(). Możesz jeszcze ewentualnie spróbować zwiększyć priorytet procesu.
Ja zawsze wpisuję Timer1 = var i to jest wartość początkowa licznika , a wpisując instrukcję load , podajesz ilość impulsów do zliczenia , a nie wartość początkową timera, kompilator sam wylicza wartość początkową.( chyba ). Timery zliczają w górę.
Co zrealizować? Programowe zliczanie impulsów? Ustawiasz timer tak, żeby generował przerwanie co 100 us, sprawdzasz stan portu, robisz xor z poprzednim stanem i testujesz, które bity są ustawione - ustawiony, znaczy zaszła zmiana stanu, czyli inkrementujesz odpowiednią zmienną.
http://obrazki.elektroda.pl/8593945400_1... Sygnał z czujnika I1 (wjazd) uruchamia timer na krótki czas który przez T003 daje zliczanie w górę Sygnał z czujnika I2 (wyjazd) daje przez timer T002 czas na odwrócenie zliczania, a kolejny timer T004 impuls zliczania (tym razem w dół). Takie działania na zboczach sygnałów z czujników w znacznym...
[syntax=c]TIM1->CR1|=TIM_CR1_URS; [/syntax] zle bit U w rejestrze EGR po tym tez wstaw to DMB dla pewności
no dobra tmod skałda się z dwóch czwórek następujących bitów: GATE,C/T,M1,M0 m1 i mo ustalają tryb które znasz. C/T określa funcję c/t=1 Counter czyli zlicza impulsy doprowadzone do wejścia T(0lub1 w zalezności który licznik) c/t=0 timer zlicza cykle maszynowe (właściwie to powinno być C/ (negacja) T, tylko nie wiem jak to napisać) :) :( Gate - bramkowanie...
Trzeba policzyć odpowiednio preskaler i wartość do której ma zliczać timer. Ale generalnie powinno być dokładnie. Dokładniej niż na kwarcu zegarkowym.
Zanegować wyjście komparatora możesz odwracając sygnały podane na wejście + i - komparatora - czyli przekonfigurować musisz rejestr multipleksera wejść AC. RESTART powoduje rozpoczęcie zliczania timera od zera, nie zmienia zawartości rejestrów PER i innych - tym różni się od resetu, który zeruje timer i przywraca jego konfigurację do stanu domyślnego....
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...
Wygląda na to, że procedura obsługi przerwania TIMER0_COMPA_vect się nie wyrabia (ma do dyspozycji 80 taktów). Innymi słowy czas pomiędzy przerwaniami jest krótszy od czasu wykonania kodu procedury obsługi przerwania. Wpisanie na początku procedury instrukcji TCNT0=0; powoduje po prostu wydłużenie czasu zliczania timera 0 o czas trwania prologu procedury...
To proste: Aby odczekać sekundę to przy zegarze 1Mhz musisz odczekać 1 000 000 cykli. Możesz użyć do tego preskalera (1,8,64,256,1024). Jesli chcesz odmierzyć sekundę to musisz użyć preskalera 64 (256 i 1024 nie wchodzi w gre ponieważ jeśli podzielimy 1 000 000 przez te liczby to nie wychodzi liczba całkowita). I tak przy preskalerze 64 timer musi zliczyć...
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,...
(at)seba_x:A co to za bzdura?:> • Peripheral Features – Two 8-bit Timer/Counters with Separate Prescaler, one Compare Mode – One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture Mode A co do pytania autora, nie, zliczanie umożliwiają tylko dwa pierwsze timery. Trzeciego można używać jako wewnętrznego.
Chodzi o to by wyjście PWM (Q4) oprócz "napędzania" sterownika krokowego zostało zapętlone na wejście Crouzet (I1) - dla zliczania wygenerowanych już impulsów (określasz w programie ile impulsów trzeba wysłać by obrócić silnikiem o określony kąt); OPCJA: Alternatywnie na wyjście Q1 "taktuje" timer Li - zapętlając jego wyjście z wcześniej omówionym wejściem...
Timer ma jeden licznik. żeby zliczać impulsy, musisz skonfigurować go na zliczanie z któregoś wejścia, a nie domyślne zliczanie impulsów zegara. Rejestry CCR nie są Ci potrzebne.
Mnożenie można zrobić robiąc programową symulację PLL. Zwykła symulacja wymagała będzie użycia jednego Timera i dość zamotanego kodu. Ale można inaczej. Dwa Timery. Jeden Timer zlicza okres przebiegu. A drugiego ustawia sie żeby zliczał powiedzmy do 1/3 wartości zmierzonej pierwszym Timerem. Taki układ ma już w miarę dobre parametery bo powinien działać...
; ========================================... sterowanie PWM_1 ========================================... ; OC1A pracuje jako PWM (z korekcja fazy 8bit z częstotliwością =f/(2*pre*ICR1L) ; ustawiamy OC1 w tryb PWM z korekcja fazy ldi R16, 255 out ICR1L, R16 ; wpisujemy max wartosc zliczana timera T1 ldi R16, 128 ; wpisujemy wypelnienie dla PWM1A...
Jak już tak rozpatrujemy to COM jest kolektorem a Y0 i Y1 to emitery. Niestety nie polecę żadnej przejściówki bo nie używam mam wbudowany:) Co do timera to zaczyna zliczać po podaniu tkzw ENABLE. i kończy po zdjęciu tego sygnału. Reset timera polega na przerwaniu sygnału ENABLE Tak to wygląda w IEC Developer http://obrazki.elektroda.net/11_12654663...
Nie ma czym zliczać wszystkie timery zajęte.
Cześć, Pozwól, że przejdę do konkretów. 1. Możesz napisać program tak, żeby aktywować timer tylko wtedy, kiedy masz aktywny klawisz. 2. Dlaczego chcesz mieć klawisz na tym samym pinie co wyjście timera? 3. Jeśli chcesz liczyć, ile razy klawisz został aktywowany (naciśnięty), potrzebujesz zdefiniować zmienną, którą będziesz zwiększać o 1 przy każdym...
Sciagnij, z jego pomoca powinienes zrozumiec o co chodzi kalkulator avr: http://www.edw.com.pl/ftp/kalkavr.zip
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...
........ chce wykorzystać wewnętrzny kwarc 8Mhz po trzecie czytając helpa jesli dobrze rozumiem to timer1 jest 16bitowy a timer0 jest 8 bitowy emarcus - gdybym chciał wykorzystać twój pomysł to gdybym zostawil timer1 jako counter a jako timer wykorzystał timer0 ktory by zliczał czas w jakim sa zbierane impulsy - jeśli o to ci chodziło i jeśli jest...
Raczej na Timerach tego nie zrobisz... można z generatora (1 sek) - bramka AND (gdzie drugim sygnałem jest zezwolenie liczenia) - zliczać do licznika.
Dodajesz przerwanie od przepełnienia timera i w nim zliczasz ilość przepełnień. Reszta to już matematyka. Przykłady: http://mikrokontrolery.blogspot.com/2011... http://mikrokontrolery.blogspot.com/2011...
Czy ten sygnał jest cykliczny? Jak często chcesz mierzyć długość impulsu?
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...
Nie wiem jak w 1500, ale w 1200 bez problemu można użyć jeden DB do kilku timerów. Efekt będzie taki że wszystkie timery będą zliczały do wartości takiej jaka była wpisana w PT w pierwszym użytym timerze w kolejności ich wykonywania w programie. Kompilator błędu nie pokarze. Nie wiem czy to jest zamierzone przez Siemens'a. Miałem już czasami takie przypadki...
Wygląda, że masz podobny problem jaki ja miałem niedawno na procesorze STM32F030R8... Sytuacja u mnie wyglądała tak: Taktowanie APB 48MHz, TIM1->PSC = 480. Co daje takt 10uS. Timer konfigurowany "po rejestrach". Zliczam impulsy timerem i czekam aż się timer przepełni: TIM1->ARR = 150 (zgłoszenie przepełnienia co 150*10uS=1.5mS) Okazuje się, że timer...
Licząc, że jeden impuls trwa dokładnie 1 us i przy timerze zliczającym do 10 (startuje od 246 - Timer0) to po przekręceniu się timera uzyskujemy czas 10us. Przy długości impulsów w podanym zakresie timer powinien się przekręcić od 100 do 200 razy. Niestety program zlicza mi od 12 do 24 przekręceń tylko. Gdzie robię błąd ??? Nieprawidłowe obliczenia...
Użyj przerwań a nie robisz je programowo Kolega Ch.M. napisał ze mam użyć przerwań, no wiec sie pytam jak to zrobić? W układach AVR Mega wyzwalanie przerwania linii INT0-INT3 odbywa się na skutek stwierdzenia niskiego poziomu (LOW LEVEL) i nie jest on konfigurowalny. Wiec jak mam wykryć stan wysoki żeby zatrzymać zliczanie TIMERa? Piotr
Zliczaj przerwania timera co odpowiedni odstęp czasu. Po 59 zliczeniu przerwij generowanie i wyzeruj timer. pozdrawiam
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 =...
Prawdę mówiąc nie widzę sensu w realizacji dzielenia przez 40 sprzętowo. Ale jak pisałem, jeśli masz wolny timer, to do rejestru PER timera za pomocą którego realizujesz QDEC wpisujesz 39, wtedy co 40 impulsów wygeneruje ci przepełnienie, które możesz transmitować przez event system jako zegar dla drugiego timera, który w efekcie będzie zliczał co 40...
Próbowałem zamiast dawać Waitms 250 jakieś Do loop until a = 2 i żeby a było zliczane przez timer ale to też nic nie dało
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).
Nie powinieneś zwiększyć tej wartości? [syntax=c]htim1.Init.Period = 0;[/syntax] Ona określa do jakiej wartości będzie zliczać ci timer, jeśli masz 0 to wartość countera będzie ciągle 0,
Mierzyć pobierany przez silnik prąd w oparciu o wbudowany ADC i odp. czujnik? Zliczać ilość RPM przy dołożeniu kontaktronu/czujnika Halla i drugiego timera?
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 .............. wiem ze należy postąpić w poniższy sposób: 1. zatrzymanie zliczania impulsow z T0 2. zatrzymanie odmierzania czasu bramkowania T1 3. przepisanie zliczonych impulsów do rejestru głównego...
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...
Możesz też nie używać Timera tylko licznika, przypisać bajt do timera wewnętrznego. Wtedy masz na poszczególnych bitach tego bajtu, impulsy o różnej częstotliwości. Zliczasz te impulsy i porównujesz je z wartością zadaną. A wartość zadaną zmieniasz za pomocą swoich przycisków.
Zły pomysł, zły kod. Użyj jednego timera w trybie zliczania impulsów zewnętrznych i podłącz wyjście wentylatora do jego wejścia. Drugi timer zaprogramuj na zgłaszanie przerwań co 1 sekundę (timer 0 tego nie potrafi), w procedurze przerwania odczytaj wartość licznika, wyzeruj licznik i wyświetl wartość. Nie jest to idealne rozwiązanie, ale o niebo lepsze...
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.
W 512 DC-RC nie ma funkcji arytmetycznych. Jedynie można zrobić tak: dodać blok znacznik tekstowy Dxx. Zaznaczyć jako wyświetlaną wartość z Timera: wartość zadaną i wartośc zliczaną - mając te dwie wartości przed oczyma (na wyświetlaczu) jakoś można ocenić działanie. Dodatkowo z wyświetlacza można czas zadany modyfikować "z przycisków". Powodzenia :)
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...
Skróć czykl zliczania Timera.
Zadawanie jest na wejściu PT, wpisujesz np. T#5s Odczytywanie zliczanego czasu jest na wyjściu ET (typ TIME).
Całkiem błędna sugestia - sygnał pochodzi ze styków, a ATmega nie ma sprzętowego filtrowania wejść timera. Tu sprawdzi się tylko zliczanie programowe w przerwaniu timera. Proponuję na początek częstotliwość ok. 50..100 Hz - powinieneś w ten sposób bezpiecznie ominąć drgania styków.
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...
Może być Timer0 inaczej skonfigórowany np: 8000000/256 = 31250Hz Load Timer0, 250 'zapis w Bascom ' TCNT0 = 6 'doliczy 250 31250/250 = 125Hz = 8ms ' występuje przerwanie Timer0 jest ośmio bitowy, więc może zliczyć od 0 do 255 czyli 256 impulsów. W przerwaniu wpisujesz to co ma być wykonane. 256 - prescaler 250 - dodatkowe zliczanie wyprzedził mnie bart-projects
Witam, Czy przy takiej rozdzielczości da radę?? Jasne że da radę pytanie jaka dokładności jest Ci potrzebna . Przy zastosowaniu szybkich liczników jak radzili koledzy będzie ok. Nawet z timerem będzie ok. Implementowałem podobną rzeczy jak Ty. Miałem enkoder, zliczałem impulsy w czasie z zastosowaniem timera a następnie wynik jeszcze uśredniałem. Miałem...
skoro wykrywasz zmiany w przerwaniu to można tam ustawić flagę (zmienną bool) i wtedy wyświetlać w głównej pętli i ją kasować. Prawdę mówiąc obsługa enkodera w przerwaniu od pinu też nie jest najlepszym pomysłem - chyba, że to enkoder optyczny. Lepiej użyć przerwania timera.
TFT też można użyć - przykład nowe multimetry Keysight itp. przy inteligentnym napisaniu kodu - może to działać szybko nawet na takim procku... Nie trzeba pisać inteligentnie, wystarczy gdy jest wystarczająco dużo RAM, że o DMA nie wspomnę W sumie tak... ...zawsze można jakieś ośmiordzeniowe i9 wpakować z rtx2080... Albo napisać coś inteligentniej...
Witam, Chcę zrobić prosty licznik impulsów na mikrokontrolerze Atmega16 i wyświetlać ilość impulsów na wyświetlaczu LCD. Impulsy prostokątne będą doprowadzone z zewnątrz z generatora zbudowanego np: na kostce NE555... Pozdrawiam, Rafał Czy masz jakiś specjalny powód budowy zewnętrznego generatora impulsów na 555 mając do dyspozycji 3 timery (T0,T2...
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.....
Cześć potrzebne mi przykładowe proste programy do sterownika s200/300 lub nowszych. Programy takie jak zliczanie na timerach, proste funkcje logiczne i jakieś przykładowe programy np. sterownanie silnikiem krokowym lub rozruch silnika gwiazda trójkąt. Z góry dzieki za pomoc.
Witam . Zadanie jest trywialne . Potrzebujesz 3 zmiennych i dwóch przerwań zewnętrznych plus przerwanie do wyświetlacza. Po starcie procka ustawiasz wartość jednej z zmiennych która będzie równa ilości przerwań wyświetlacza w czasie 10 sekund . Podczas aktywacji przerwania od T1 aktywujesz przerwania od INT0 i INT1 . INT0 zwiększa jedną zmienną a INT1...
Po wyzerowaniu licznika należy wyzerować bit zerowania. Nie miałbyś tego problemu, gdybyś zamiast bezsensownych |= używał podstawień do operacji na rejestrach timera.
No, tak dobrze to nie jest. AVR-y (a w nich timery) nie mogą poprawnie zliczać impulsów o częstotliwości większej niż połowa częstotliwości zegara zakladając na wejsciu wypełnienie przebiegu 50%. Niezbędne będzie zatem zastosowanie preskalera. Proponowałbym ATMEGA8 z kwarcem 16MHz i z prescalerem /4 zbudowanym np z cyfrówki 74F74. Mamy zatem poniżej...
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.
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ść...
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...
Jak rozumiem, chodzi o to, żeby timer zliczał impulsy podłączone do pinu T1. To dlaczego ustawiłeś ten pin jako wyjście?
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...
Dzieki mrrudzin.Postaram pociagnac nieco temat dalej.Poniżej załaczyłem proste liczniki oraz timer z opisem. http://obrazki.elektroda.net/10_12009055... http://obrazki.elektroda.net/50_12009053... Timer ONDTR (on-delay timer) zwiększa zawartość wewnętrznego licznika o jeden, jeśli dopływa do niego zasilanie. W przypadku przerwy w dopływie zasilania...
Jeżeli uszkodzony jest jakiś port który nie bierze udziału podczas procesu programowania to program ci tego nie pokaże (tak już miałem ale z ATMEL-em). Zgadzam sie, ale jeśli jest "złośliwie" uszkodzony układ to samo sprawdzenie portów nie pomoże. Najlepiej napisać program co sprawdza wszystkie kombinacje wejsc: ADC, INT, zliczanie timer itp. Na forum...
Niedokładnie przeczytałeś. W zakładce nawigator: Config Timer- uwaga! po ustawieniu prascale licznik natychmiast zaczyna zliczanie. Można użyć start Timerx i stop Timerx Np. Config timerx, prescale 'timer zaczyna liczyć stop Timerx 'timer stoi- ale już coś zliczył Timerx=y 'timer ma wartość początkową =y - np.0 Start timerx ' Timerx zaczyna liczyć od...
Prz zboczu narastającym odpal timer, i ustaw przerwanie na wyzwalanie zboczem opadającym. W obsłudze przerwania zatrzymujesz timere i odczytujesz wartośc oraz wyzerowujesz go przygotowując do następnego odczytu. Znając częstotliwośc zegara oraz wartośc prescalera i odczytaną wartość z timera znasz okres od zbocza narastającego do opadającego. Niby...
Timer uaktywniany kartą.
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ś...
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...
Ja też dorzucę swoje 5 gr :) Poniżej delay oparte o timer, chcąc wykorzystać inny timer należy LPC_TIM0 zamienić na inny np. LPC_TIM1. [syntax=c] #include "LPC17xx.h" #include "lpc17xx_gpio.h" #include "lpc17xx_timer.h" void delay_us(uint32_t czas) { TIM_MATCHCFG_Type MatchConfigStruct; LPC_TIM0->IR = 1; // zresetowanie flagi przerwania od rejestru...
A można jakoś ustawić ten licznik timera żeby zliczał np do 100?
Niestety nie będzie działać, jeśli nie zastosujesz w tym przypadku sprzętowego (filtr RC) debouncingu. Pytanie, czy to musi być całkowicie sprzętowo? Jeśli tak to tylko zewnętrzny filtr RC + podłączenie pod wejście XCK timera, wtedy każde naciśnięcie przycisku generuje impuls zegarowy zliczany przez timer. Całkowicie sprzętowa realizacja prostsza jest...
SysTimer jest wykorzystywany w FreeRTOS jako zegar systemowy. Ale jeżeli potrzebujesz timera(dla zliczania czasu będącego wielokrotnością zegara systemowego) dla jakiejs innej biblioteki możesz wykorzystać vApplicationTickHook(), gdy tylko masz symbol configUSE_TICK_HOOK zdefiniowany na 1 (plik FreeRTOSConfig.h). Funkcja ta jest wywoływana w przerwaniu...
Nie robić programowo - do odmierzania czasu służy timer. Możesz zaprogramować timer na stałą częstotliwość i zliczać czas w przerwaniu timera. Co określony czas przeliczasz impulsy na prędkość i zerujesz licznik impulsów.
Można oba odczyty dać do przerwania. Zliczać je i co któreś przerwanie robić odczyt. Czyli timer, np. przerwanie co 250 ms - co 3 przerwanie robisz odczyt temp. (w pierwszym dajesz polecenie konwersji, w 3 odczyt), co 8 przerwanie odczyt wilgotności.
A nie możesz zrobić tak że włączasz timer, zliczasz dajmy na to 100 impulsów i patrzysz ile czasu minęło? Jakie prędkosci przewidujesz?
Gate i Mode w konfiguracji timera nie występuje w bascomie na AVR. Prawdopodobnie może to być sposób wyzwalania/ zliczania timera (wewnętrzne lub zewnętrzne) plus jakieś inne tryby pracy.
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ń...
To co zamieściłem powstało w oparciu o tą stronę. Więc nadal nic to mi nie daje. Nadal nie wiem jak skonfigurować timer aby zliczał impulsy na sekunde a potem zerował wartość. może chociaż ktoś mi powie czy to co napisałem ma jakikolwiek sens.
Nie wiem czy wiesz co będzie wynikiem jeśli weźmiemy dwie zmienne szesnastobitowe bez znaku i odejmiemy większą od mniejszej? Wynik nadal będzie dodatni jednak pomniejszony o poprzednią wartość tej mniejszej zmiennej. Tak więc proponuję rozważyć taki temat: Timerx w momencie pierwszego odczytu w INTx ma 65530. Nie zerujemy Tmerx . Timerx w momencie...
Cześć, mam pytanie odnośnie Timerów w uC ATmega. Potrzebuję następujących opcji: - zliczanie impulsów z dwóch enkoderów - generowanie dwóch przebiegów PWM - generowanie przerwania co kilka ms. ..............? Czy są jakieś AVR'y mające 4 timery? ........... Pozdrawiam, Bartek Wystarczy ci Atmega48/88/168 Dla 2-ch sygnałów PWM wystarczyłby 1 timer z...
Cykl można odmierzać ustawiając generator impulsów co okreslony interwał tj. odpalac timer typu opózniającego moment załączenia zanegowanym wyjściem z tego timera. Podstawa czasu będzie stanowić interwał. Mozna pod tą zmienną podpiąć zmienną np. ze SCADY (InTouch, IFix itp) i generatorek dość uniwersalny gotowy. Co do zliczania impulsów to wyjście z...
A jest lepiej gdy podajesz z palca i masz ustawiony PULLUP? Generalnie jeśli częstotliwość impulsów jest duża to lepiej zliczać je na timerach i przerwanie generować od przepełnienia timera.
Opiszę szczegółowo jak wyliczyłem czas, może ktoś jeszcze będzie potrzebował, proszę o sprawdzenie czy dobrze :). Znalazłem coś takiego -> core CLK = 2.098 MHz. Więc liczę w ten sposób: 1/2.098MHz=0,46*10^-6 czyli około 5us trwa jeden cykl. 2084*0,48*10^-6=1,00032*10^-3 czyli około 1ms 10415*0,48*10^-6=4,9992*10^-3 czyli około 5ms ponieważ timer...
Problem rozwiązało właśnie użycie przerwań zewnętrznych. Można w funkcji obsługi przerwania EXTI sprawdzać od którego wejścia pochodzi przerwanie i zliczać impulsy z tego wejścia. Dzięki za pomoc.
uruchomienie timera reset timera przepełnienia timera
kyocera m2035dn pralka bosch produkowana rosji krótkie przewody spawalnicze
jakmet kosiarka jakmet kosiarka
Błąd ERROR 18 przy aktualizacji BIOS-u - Rozwiązania Zacinające się szyny: przyczyny i rozwiązania w AGD i przemyśle