Instrukcje wykonywane będą zgodnie z głównym zegarem (8MHz). Preskaler dotyczy tylko licznika.
Chodzi o to, że po pierwszym przerwaniu TCNT1 będzie miał wartość 0, czyli zliczy potem 65536 impulsów. Zaś do generowania, jak Ty chcesz, przerwań co określony odcinek czasu służy tryb CTC. Wtedy w rejestrze OCR ustawiasz ilość impulsów, które chcesz zliczyć, i wygenerować odpowiednie przerwanie.
Dokładnie aby wyliczyć potrzebny czas potrzebujesz pełnego wzoru: T = 1/(fcpu/PRESCALER/(65536-LICZNIK)) gdzie: fcpu - taktowanie procesora, PRESCALER - stopień podziału preskalera, LICZNIK - początkowa zawartość licznika. T = 1/(1000000/1024/(65536-6942)) = 60.000256s Wszystko odnosi się do licznika 16-bitowego. Dla licznika 8-bitowego wzór jest podobny:...
Piszą (w pkt.4 pod koniec) że jest to uproszczony przykład. Piszą też że próbkowanie powinno następować co ok. 1s. Pewnie 1/4 albo 4s też będzie działało. Ale nie co us. I tak trzeba dobrać TIME_INTERVAL i preskaler licznika aby to było co ok.1s. Istotna jest w tym wszystkim odpowiedź samego urządzenia sterowanego. Czyli silnika pracującego z nominalnym...
Coś poknociłeś. Zakładając, że to się kręci tak jak napisałeś, a kreska nie ma być większa niż 1mm to wychodzi mi, że PWM sprzętowy powinien spokojnie wystarczyć. Jeśli tak nie jest to coś robisz źle - albo preskaler, albo licznik, nie ten tryb, lub błędne sterowanie diodą - np. tranzystor za wolno się przełącza. Co do twojego rozwiązania - można dodać...
No ale przecież tak właśnie jest zrobione - preskaler/dzielnik to po prostu licznik z porównaniem. 4\/3!!
W dokumentacji niestety dla licznika 1 nie występuje preskaler 128. Występuje natomiast 256. Zakładając, że licznik pracuje w trybie CTC (WGM12 =1) i zakładając 8MHz źródło sygnału zegarowego (tak jak jest w komentarzu w kodzie) należy wpisać do OCR1A= 31249 oraz ustawić preskaler na 256 czyli CS12=1 A tak na przyszłość ...nota katalogowa. Tam wszystko...
Nie rozumiem jak przerwanie od licznik 8 bitowe mialoby przeszkadzac w dzialaniu pozostalych przerwan czy calego programu.. Przerwanie np przy 16Mhz bedzie generowane 62500 /preskaler na sek od licznika 8 bitowego, a zajętość (stan CLI) procesora oceniam na ponizej 1 uS co chyba nie wplynie na pozostale zadania procesora.
Czekaj, czekaj. Jeden czujnik odpali przerwanie INT0 a w tym przerwaniu sie uruchomi timer. Drugi czujnik po INT1 ma go wyłączyć. Raczej o tym myślałem. Lepiej tak: czy ktoś by mi dokładnie wytłumaczył jak wywoływać timery, zbierać z nich czas, do czego służą poszczególne rejestry. Noty katalogowej tego procka po polsku nie znalazłem, a dobrego poradnika...
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.
Każdy licznik ma własny preskaler, własne rejestry i własne przerwania - to 7segmentów starczy Ci 8 bitów i preskaler. Zreszta zerknij sobie na: http://www.et06.dk/atmega_timers/
Liczymy częstotliwość sygnału PWM: Fpwm = 1/PWM Period - częstotliwość PWM PWM Period = [(PR2) + 1] • 4 • TOSC • (TMR2 Prescale Value) PR2 - licznik TMR2 możesz wybrać wartość od 0 do 255 TOSC - okres oscylatora 1/Xtal, Xtal - częstotliwość kwarcu TMR2 Prescale Value - preskaler licznika TMR2, wartości jaki możesz wybrać 1, 4, 16 Musisz...
Wystarczy wpisać do rejestru licznika zero oraz wyzerować preskaler. Na przykład Timer0: 1. TCNT0 ustawiasz na zero 2. ustawiasz bit PSR10 w rejestrze SFIOR. Ale uwaga! W tym przypadku PSR10 zeruje także preskaler Timer1. Szczegóły w datasheet. Jak już poprawisz program to napisz proszę w komentarzu do artykułu. :)
Z tą kalibracją to chodzi o ustawienie preskalera? Preskalera, wartości licznika i wartości kwarcu. Dodano po 1 Przeczytaj: http://www.elektroda.pl/rtvforum/topic18...
Witam. Mam pytanie jak obliczyć czas przerwania od licznika T0 w mikrokontrolerze Atmega8. Gdy preskaler=1, licznik zaczyna liczyć od 0, oraz mikrokontroler działa na wewnętrznym oscylatorze (1MHz)??
Ustaw preskaler, to licznik ruszy.
Zawsze w takim przypadku możesz migać jakimś LEDem i zobaczyć czy po odliczeniu 168000000 (przez preskaler, licznik) miga Ci co 1 sek. Np. używając przerwania z tego licznika do zmiany stanu. Ja tak robię w takich sytuacjach aby nie zawracać głowy na forum:)
Niepotrzebnie ustawiasz preskaler (PSC=1). Zmień na PSC=0. Częstotliwość licznika jest dzielona przez (PSC+1). A teraz czemu UDIS pomagał: rejestr preskalera jest buforowany*. Nowa wartość zaczyna działać po UEV (update event). Bez bitu UDIS, UEV pojawiał się po przekręceniu licznika - zaczynała działać nowa nastawa preskalera (podział przez PSC+1,...
Były do tego celu preskalery. Popatrzę jaki układ scalony był wykorzystywany. [url=https://duckduckgo.com/?t=ffsb&q=pr... to wynik wyszukiwania. W oczy rzuca się zestaw Jabel J-200 z układami U664, U664B, układ U6358. W PE 3/94 był preskaler z układami SP8830 i SP8629. Poszukiwania świeżych układów przyniosły taki wynik [url=https://pl.farnell.com/c/polprzewod...
A może przyczyną jest nie wyzerowany licznik preskalera (strona 75): Bit 0 PSR10: Prescaler Reset Timer/Counter1 and Timer/Counter0 When this bit is written to one, the Timer/Counter1 and Timer/Counter0 prescaler will be reset. The bit will be cleared by hardware after the operation is performed. Writing a zero to this bit will have no effect. Note...
Kolega miał pewnie nieco rozkalibrowany generator RC, skoro takie ustawienie mu akurat wyszło. Licznik Timer0 zlicza przez pełen okres 256 impulsów. Zatem jeśli od 0x100 odejmiemy 0xCA to otrzymamy 0x36, co daje 54 impulsy zliczone przez licznik. Teraz: 4 MHz/8/54 = 9259,25 Hz 1/9259,25Hz = 108 us Otrzymamy zatem mocno naciąganą wartość w okolicach...
Tak kolejność zapisu rejestrów buforowych jest istotna. ale zastanówmy się: Ustawiasz preskaler Licznika 1 na ckl/8 co daje 4 MHz/8 = 500 000 ładujesz licznik wartością począkową 3036 przepełnienie nastapi po 62499 dzielimy 62499/500 000 z moich obliczeń wynika że procedura aktualizuj czas() jest wywoływana 8 razy na sekundę? czy o to chodziło?
Kolego jako programista to Ty oceniasz kiedy potrzebny jest reset prescalera. Kiedy używasz prescalera np. 1024 to brak resetu prescalera i zresetowanie jedynie licznika będzie wprowadzać całkiem spory błąd do pomiaru. Prescaler jest wspólny dla większości liczników więc jeśli zależy Ci na dobrej synchronizacji pomiędzy poszczególnymi licznikami to...
1s odpowiada częstotliwości 1 Hz. F_CPU/preskaler/wartość licznika = 1Hz
Po co koledze ten CTC? Prescaler ustaw na 128 i wykorzystaj przerwanie przepełnienia licznika. Fint = Fosc / preskaler / 2^ilość_bitów_licznika = 32768Hz / 128 / 256 = 1Hz Przy CTC trzeba pamiętać, że występuje taki jeden mały szczegół jak 1+OCRn , gdyż licznik musi przynajmniej zliczyć jeden impuls. A ty go nie uwzględniłeś: Fint = Fosc / (preskaler...
Ja tu widzę następujące rozwiązania: 1) Użyć licznik T1 (licznik 16 bitowy). Przy taktowaniu 8MHz i ustawieniu preskalera 1:1024 można otrzymać czas równy: 1/8000000 * (32768 * 1024) = 4,19 sek 2) W funkcji obsługującej przerwanie użyć dodatkowej zmiennej: SIGNAL(SIG_OVERFLOW0) { static uint8_t licznik; //zmienna zliczajaca przejscia pętli, koniecznie...
zrób to mniej więcej tak: .INCLUDE "m8def.inc" .cseg ; początek segmentu pamięci programu .org 0 rjmp RESET ; wektor ZEROWY (po resecie) .org OVF0addr ; wektor przerwania od przepełnienia Timera0 rjmp Przerwanie_T0 ; i tu właśnie skok do obsługi tego przerwania RESET: LDI R16, HIGH( RAMEND) OUT SPH, R16 LDI R16, LOW( RAMEND) OUT SPL, R16 ; porządek...
Urgon: gdy upłynie minimalny czas stanu wysokiego, rozdzielczość sygnału PWM nie jest ograniczona przez ustawienia licznika okresu. Preskaler i licznik okresu określają częstotliwość pracy i minimalny czas otwarcia tranzystora. Częstotliwość zależy też od częstotliwości zegara, Nie widzę tego w datasheecie. Możesz to dokładniej wskazać?
Reset ten co ty chcesz robi się rejestrem TIM->EGR. Ustawiaj bit UG, on wyzeruje się sam. To zresetuje cnt i preskaler. To co ty robisz nie resetuje preskalera, więc co zapis zera w CNT mylisz się o wartość w preskalerze.
Najprawdopodobniej jest to koło 14,4 kHz (FCPU/256), bo Timer/Counter0 pracuje bez preskalera, a jest to licznik 8-bitowy. Pozdrawiam! P.S. Swoją drogą, jesteś pewien, że to ATtiny2131, a nie ATtiny2313? Nie znalazłem takiego na stronie ATMELa.
witam. Co jest lepsze, hmmm jak dla mnie zależy to od aplikacji i tego w czym piszesz.Osobiście preferuje C i pisanie w tym języku na małe PICki (np.16f636) jest "problematyczne ". Nie rozumiem też niektórych rozwiązań Microchipa np. wspólny preskaler licznika i watchdoga- jak dla mnie wielkie nieporozumienie.Chyba odbiegłem od tematu, wg.mnie nie da...
Jesteś pewien co do tego PWM? Sterowanie wskazówką w licznikach najczęściej zrealizowane jest w oparciu o specyficzny rodzaj silnika - air core gauge. Tam wychylenie wskazówki uzależnione jest od relacji prądów płynących w dwóch przesuniętych o 90* cewkach. Próba odczytu napięcia/prądu tylko z jednej cewki da błędny wynik. Co do najprostszej implementacji...
Nie sprawdzilem dokladnie calego kodu, ale w oczy rzucilo mi sie to dziwne cos :) : char licznik=3200; ?????????? Nie mozesz do zmiennej typu char zaladowac wartosc 3200 bo jest to liczba 16-to bitowa! A zmienna char jest tylko 8 bitowa ( maks 256) . Poza tym jesli jest ona ze znakiem ( bez unsigned) to od -127 do 128. Powinienes zapisac unsigned int=3200;...
1000000 dzieli się przez 64: 1000000/64=15625 Masz więc gotowe ustawienia preskalera (64) oraz licznika 16-bitowego T1 (15625). Do dokumentacji i tak Cię odeślemy - nie zasłaniaj się nieznajomością angielskiego - książek po polsku trochę jest, a nawet parę wątków niżej można znaleźć [url=http://www.elektroda.pl/rtvforum/to... atmega32...
Dobrze, że uczysz się C ale jeżeli chcesz w pełni wykorzystywać ten język to naucz się jeszcze korzystać z not katalogowych uC. 1. O porcie A już kolega polprzewodnikowy napisał. 2. Timer0 w M8 w przeciwieństwie do M32 nie ma możliwości pracy w trybie CTC. Chcesz CTC to przenieś obsługę na T1 lub T2. Ewentualnie T0, ale w trybie normal z cyklicznym...
Zapomniałeś tylko dopisać, że ustawiłeś samodzielnie bit UDIS w rejestrze CR1 timera, który właśnie coś takiego powoduje. Nie wiadomo jednak po co go ustawiłeś. Nie potwierdzam, nie zaprzeczam ale faktem jest, że obecnie nie ustawiam bitu UIDS w rejestrze CR1 i bez ustawienia bitu UG w rejestrze EGR preskaler nie działa poprawnie. Poniżej kod jakim...
Zamiast liczyć częstotliwość, czyli ilość obrotów w ciągu 1sek., można mierzyć okres, czyli czas w jakim oś silnika wykonuje 1 obrót. Algorytm jest dość prosty - uruchamiasz timer aby zliczał impulsy zegarowe, w przerwaniu wywoływanym przez transoptor odczytujesz wartość licznika a następnie go zerujesz, i tak w kółko. Im silnik szybciej się kręci,...
Wszystko co napisałem powyżej pozostaje w mocy. Tryby normalny i CTC działają przy odmierzaniu czasu podobnie: obydwa tryby odliczaja ileś tam tyknięć rejestru TCNT i generują przerwanie. W przypadku trybu normalnego to liczenie następuje od wartości ustawianej w TCNT do wartości 0 (256), a w trybie CTC od wartości 0 do OCR (lub ICR). Zacznijmy od tego,...
Zajrzyj do dokumentacji atmegi16 opis trybu CTC i rejestru TCCR2 ustawiłeś preskaler 8 i OCR2=0 czyli licznik liczy od zera do zera, kiedy osiągnie zero zostaje wyzerowany, cokolwiek to znaczy ;) Nie jestem w stanie stwierdzić czy licznik powinien zgłaszać przerwanie co 8 cykli zegara, czy częściej - warunek wystąpienia przerwania jest zawsze spełniony,...
Witam Jakiego rzędu są to rozbieżności? Może warto zmienić preskaler licznika. Rozbieżności są dość znaczne rzędu ± 30%. Kombinowałem z preskalerem i częstotliwością procesora i nic to nie pomaga. No chyba, że Proteus przekłamuje bo nie sprawdzam tego fizycznie, nie mam generatora z regulowaną częstotliwością. Warunek oczywiście można zmienić ale...
Witam, odpaliłem ten miernik i mam pytanie do autora czy niepodpięty pokazuje coś czy tylko 0.0000 MHz. bo u mnie coś wariuje To normalne w preskalerach.
Ale pokrętnie wytłumaczenie. :roll: Zarówno preskaler jak i top (rejestr ARR) pomniejsza się o jeden albowiem liczniki liczą od zera. Na przykład dla ARR==3 licznik liczy: 0, 1, 2, 3, 0, 1, 2, 3 ...itd. czyli timer przekręca się co cztery tiki. Ta sama zasada obejmuje PSC.
Witaj, Brakuje jeszcze paru informacji: 1. deklaracji zmiennej licznik 2. gdzie definiujesz zegar ? 3. czy prawidłowo masz ustawione fusebity?
Chcesz analogowo mierzyć częstotliwość z dokładnością rzędu 3,5ppm? Wydaje mi się to bardzo trudne. Nawet jeżeli znajdziesz odpowiedni przetwornik lub parę przetwornik-preskaler, to 14 bitów da Ci 1/2**14 = 61ppm, np. jeżeli przyjmiesz 144,2MHz za nasycenie przetwornika, to uzyskasz rozdzielczość (a to jeszcze nie jest dokładność!) 8,8kHz. Musiałbyś...
Najprościej to chyba tak: [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #define TIMERSTART 6 volatile uint8_t FLAGA_50 = 0; volatile uint8_t FLAGA_1000 = 0; // funkcja obslugi przerwania TIMER0_OVF 8MHz / 64 * 250 wychodzi co 2ms // dla innego taktowania nalezy ustawic inny preskaler i/lub inne liczniki stawiania flag ISR(TIMER0_OVF_vect)...
Zerknij na "Clock tree" w RM. Sygnał zegarowy dla liczników TIM2,3...7 przechodzi przez bloczek podwajający częstotliwość jeśli preskaler dla APB1 jest różny od 1. http://obrazki.elektroda.pl/3624660300_1...
Preskaler jest aktualizowany po przepełnieniu licznika. Jeśli chcesz wymusić natychmiastową aktualizację preskalera, to ustaw bit UG w rejestrze EGR. Wiąże się to również z wyzerowaniem licznika.
ad 1. Dla timer 0 nie jest źle, bo masz preskaler i licznik jest 16-bitowy, więc wystarczy odpowiednio to skonfigurować i te 5 Hz uzyskasz. Timer 2 ijest tylko 8-bitowy, więc 5 Hz nie uzyskasz (chyba, że zwolnisz taktowanie MCU). ad 2. Zainteresuj się bitami COM, które definiują zachowanie wyjścia timera.
...jednak na wyświetlaczu liczby pojawiały się ok 100 razy za szybko. Raczej 125 razy za szybko. Winowajca ukrył się, w tej oto linii: [syntax=c]if(licznik>125); [/syntax]
Trzeba by zrobić licznik 6 bitowy i komparator, jeżeli stan licznika jest mniejszy od liczby zadanej to na wyjście dajesz 1, a jezeli większy to na wyjście dajesz 0. Czyli powinno się spokojnie dać. No i pewnei będzie do tego potrzebny jakiś preskaler do licznika czy coś ale to już są szczegółowe problemy do rozwiązania.
Żeby nie zapomnieć na końcu to już tutaj napiszę, że liczy się to w programach bo one się rzadziej mylą, ale zrozumienie tematu jest oczywiście ważne. Jest kilka, a w pełni darmowych, kalkulatorów do tego. Timer jest urządzeniem sprzętowym wbudowanym w mikrokontroler. Najczęsciej taktowany jest w taki sposób, że sygnał zegarowy taktujący mikrokontroler...
Poszukuje schematu (sprawdzonego ) licznika częstotliwosci opartego na AT89c2051 i lcd 1x16 , Czestotliwosc powiedzmy 50 Mhz , a może byc i więcej (preskaler) . Pozdrawiam Rysiek .
APB jest tak samo taktowane jak przy dzielniku 1 czyli zegarem 84MHz. Jeśli wnioskujesz o tym po taktowaniu timerów należących do APB1, to nie bierzesz pod uwagę takiego automatycznego mnożnika x2 na taktowaniu liczników tych timerów. Zachowanie tego mnożnika (mnoży x2 dla wszystkich ustawień preskalera APB1, oprócz /1) powoduje że dla ustawień preskalera...
Poczytaj o Timer1, to jest licznik 16 bitów, wiesz jaki masz zegar, wiesz jaki ustawiasz preskaler. Możesz na tej podstawie obliczyć ile cykli przypada na jedną sekundę. Zależy ile tych sekund chcesz liczyć bo musisz dobrać tak preskaler aby licznik Ci się nie przepełniał bo będziesz miał złe wyniki. I nadal nie widzę zerowania timera po wyświetleniu....
1. Sprawdzasz stan przycisku co jakiś czas, co przerwanie timera, np. 10ms (w przepełnieniu licznika np. Timer0 Overflow można regulować czasem pomiędzy przerwaniami, wpisując na początku obsługi przerwania odpowiednią wartość licznika, oraz wybierając preskaler w odniesieniu do częstotliwości zegara systemowego {1; 8; 64; 256; 1024}). Procedura timera...
Użyj preskalera.
odnosnie zegarka to ja bym to zrobil na timer1 - 16 bitowy licznik, i uzaleznil to od przepelnienia tylko nalezy ustawic preskaler na 256 wpisac poczatkowa counter=conter+34286 oczywiscie przy rezonatorze 8 MHz 8000000/256/(65536-34286) = 1 sekunda pozniej tylko zliczanie a i jeszcze jedna sprawa nalezalo by zmienic wartosc dwojkowa na kod BCD :)
hej tak dla pewnosci :) i dalszego zdrzumienia :) poczatkowa wartosc licznika = 131 preskaler = 8 timer0 jest licznikiem 8 bitowym jesli mamy zegar 1 MHz czyli 1000000Hz/8 /(2^8 - 131) = 1000us a dla rezonatora 8 MHz 8000000/64/(2^8-131)=1000us czy tak ? ;) oooopps ! musze przeprosic autora tego postu pend0lino, zle liczylem i nie zrozumialem liczylem...
Jeszcze raz muszę napisać: Nadal w przerwaniu INT1 nie zatrzymujesz i nie zerujesz preskalera Timer2. Musisz być pewien, że timer0 i timer2 zawsze rozpoczynają dokładnie od początku. czyli by być pewnym poprawnego działania powinieneś w przerwaniu INT1: - zatrzymać oba timery, - wyzerować ich preskalery, - obliczyć co ma być obliczone, - wyzerować liczniki...
Taka konfiguracja jest wystarczająca do pomiaru częstotliwości CB (z rozdzielczością 100Hz) o ile najstarsza cyfra pokazuje dziesiątki MHz. Wejściowy licznik binarny LS393 oraz preskaler z bramą LS74 oraz licznik wewnętrzny CPU zapewnią bezproblemową pracę do ponad 30MHz. Należy wykonać tylko układ wzmacniający i formujący sygnał do poziomu TTL. W najprostszej...
Co do programu przedstawionego w załączniku. Strasznie marnujesz czas procesora, powinienes w przerwaniu wykonac kilka instrukcji a ty wykonujesz wszystko. Uboczną stroną jest jescze to ze musisz zapisywac wykorzystywane rejestry na stosie i "uziemiasz sobie licznk 0" Proponowałbym taki sposób: czujnik dołaczasz do wejscia into lub int1 ustawiasz na...
Zrobiłem płytki do tego projektu (jednostronne). Pozamieniałem logikę jednobramkowa, zastosowałem trochę inny generator kwarcowy, inny preskaler, inne tranzystory cyfrowe. Licznik w fazie uruchamiania, jeszcze tylko wepchąć w jakąś estetyczną obudowę. Szczegóły wkrótce.:D
Falownik mógłby siać aż tak duże zakłócenia? Bywa różnie jaki jest obwód koła pomiarowego (jeden obrót enkodera to jaki dystans materiału) ? Masz za długi czy za krótki odmierzony odcinek względem wyliczeń ? jak masz ustawiony preskaler ?
1. Żeby licznik był 16 bitowy trzeba mu najpierw ustawić słowo sterujące TMOD Dla 16bitowego licznika trzeba w nim ustawić tryb 1 2. Wartość 64736 to FCE0 a więc wpisujesz tak: MOV TL0,#0E0H ; Ustawienie wartości początkowej w timerze T0 (młodsza połówka) MOV TH0,#0FCH ; Starsza połówka do bardziej znaczącego bajtu licznika 3. Tak, najpierw liczy TL...
Niestety schemat mi nie pomógł. Ależ pomógł, bo nie znalazłeś w nim żadnych zależności dot. kasowania timera przy jego wyłączaniu poprzez ustawienie preskalera zero. Jest to logiczne, ponieważ gdyby licznik timera był automatycznie kasowany, to zmniejszałoby jego możliwości, bo nie można byłoby go "puścić dalej" Schemat preskalera pokazuje natomiast,...
Witam Problem można rozwiązać podobnie jak proponował M.S. jednak połączyć procesor z licznikiem 74HC4040. Ma on wejście szeregowe i wyjście równoległe. Na wejście tego licznika można podawać impulsy (TTL) o częstotliwości nawet do 98MHz !!! Zasada zostaje ta sama bo się bramkuje wejście ale częstotliwość mierzona jest o wiele większa a procesor może...
Mam drobne uwagi do programiku: 1. Mógłby pamiętać wpisane wartości między sesjami, 2. Mógłby (jak już nie zapamiętuje) podpowiadać typowe kwarce w combie (z możliwością wpisania z ręki nietypowego), 3. Tego najbardziej brakuje: Przycisk "Kopiuj" - wrzucający do schowka wartości wybranego preskalera/licznika... P.S. Widzę że tutorial nie jest już rozwijany,...
Czytając tekst można znaleźć (oczywiście jak się chce): http://www.elektroda.pl/rtvforum/topic25... http://www.hobbielektronika.hu/cikkek/50... Gorzej ze znalezieniem preskalera MB.
Czyli: jeżeli mam ustawioną reakcje na zbocze narastające, TIMER1 w trybie normal, i preskaler ustawiony na 1, to licznik TCNT1 cały czas się zwiększa, w momencie wystąpienia zbocza narastającego na ICP1 rartoś jaka była w liczniku jest przepisywana do ICR1 którą przypisuję do zmiennej. W momencie wystąpienia kolejnego zbocza narastającego wartość...
Można zbudować z bramek i rezonatora generator częstotliwości, sygnał puścić na zewnętrzne liczniki.. częstotliwość powinna ulec radykalnemu zmniejszeniu sie.. taki sygnał do procka,odpowiedni i dokładny soft i już można mieżyć częstotliwość kwarca. Rezonator -> Bramki [generator] -> Licznik (Liczniki)[preskaler] -> Procesorek -> Komputer albo jakiś...
Czy 8051 ma preskaler na licznik? Napisałem programik pod AT89S8252 w C pod Keila uVision. Ledy zapalają się na zmianę a ja bym chciał żeby zapalały się wolniej. Oto działający kod: #include <AT898252.h> sbit LED0 = P0^0; sbit LED3 = P0^3; void main (void) { LED0 = 0; LED3 = 1; TMOD = 0x01;//Rodzaj pracy TRYB1 EA = 1; //globalne wlaczenie przerwan...
Widzę że muszę się wziąć sam do pracy ;-) Z tego co ustaliłem częstotliwość PWM oblicza się z zależności: f(PWM)=Fc/Preskaler/(wartośc max licznika * 2) Fc - częstotliwość oscylatora taktującego uC Preskaler - który może przyjmować wartości 1, 8, 64, 256 lub 1024. Rozdzielczość PWM | Wartość max licznika 8 - bit _____________ 255 9 - bit _____________...
No już wszystko jasne - lewy licznik 40103 to tzw dzielnik A a prawy to dzielnik N. CD4001 realizuje logikę przełączania modułu preskalera +1 . Szkoda że tego nie narysowałeś. 4046 to detektor fazy a binarny licznik 4020 zapewnia sygnał referencyjny dzieląc f kwarcu na częstotliwość rastra strojenia. Klasyk Spróbuj zbadać jaka jest częstotliwość referencyjna...
Chyba nie potrzebujesz odliczać dokładnych czasów, więc najlepiej wyliczyć ile przepełnień licznika potrzebujesz przy danej częstotliwości i danym preskalerze. f=fosc/p f - częstotliwość taktowania licznika fosc - częstotliwość oscylatora p - preskaler T=1/f t=(c*x)/f t - czas odmierzany c - pojemność licznika x - ilość przepełnień ostatecznie: x=(t*fosc)/(p*c)...
Raczej 255 = 0xFF (8bit). Przerwanie wykonuje się przy zrównaniu licznika z wartością 255, licznik liczy w górę a preskaler to 256, zakładając częstotliwość CPU na 1MHz przerwania wychodzą co: 256/1MHz*255 = 65ms . (dla 8MHz to około 8ms) Tego co nie jestem pewien, to to czy licznik (mam na myśli rejestr TCNT1 ) jest zerowany przy wartości maksymalnej...
Sorki ..... ale patrząc na wasz "poziom zaawansowania elektronicznego widniejący pod avatarem" dziwię sie co niektórym wypowiedziom. Po pierwsze kwarc 32kHz podłączony do pinów zewnętrznych oscylatora taktuje w konfiguracji RTC tylko i wyłącznie preskaler i licznik 2. Licznik musi pracować w trybie asynchronicznym a w związku z tym należy przed odczytem...
więc po co dodajemy do niej jeszcze wartość counter0 Bo counter0 zawiera liczbę impulsów która minęła od ostatniego przekręcenia licznika. Cały program to jakby programowo-sprzętowy licznik, sprzętowe jest młodsze 8bit, a programowe zmienna "Czestotliwosc". Równanie na wartość całego licznika wynosi "czestotliwosc*256+counter0". Preskaler jest podłączony...
Cześć, Czy U6205B może działać jako sam (programowany) preskaler? Niby na schemacie blokowym wyjście z licznika idzie do detektora fazy oraz do wyjścia testowego ("switching outputs"), a w opisie bitów programujących jest "T1 = 1: divider test mode on" ale nie ma wprost informacji czy wyjście z programowalnego licznika da się wypuścić na zewnątrz.
(at)atom: Dzięki, Twoje wskazówki fajnie mnie naprowadziły. (at)gaskoin: Nie wiem skąd pomysł, że nie posiłkowałem się datasheetem? Przecież przeczytałem regulamin forum. Dodam, że nie tyko tym, który wysłałeś ale też innymi np: uint8_t volatile i = 0; void setup (void) { DDRD = (1<<PD5); TCCR1A = 0x81; // 8 bit PWM, uzywjąc...
dea jest taka, że należy skonfigurować Timer1 na FastPWM z rejestrem ICR1 jako Top (czyli licznik będzie liczył do wartości tego rejestru). Należy tak dobrać preskaler i wartość ICR1 by licznik przekręcał się co 20ms a więc np. preskaler 1024 i ICR1 15625 (a raczej 15624 bo licznik liczy od zera). Przy tych ustawieniach otrzymujemy granulację 1,3 µs/tick,...
Wszystko staje się proste i zrozumiałe jak słowo INT0 zmieni się na TIMER2: 1. Licznik Timer2 ma preskaler 128 i możliwośc taktownia z dodatkowego rezonatorka 32,768kHz. Właśnie po podzieleniu tej częstotliwości przez 128 (z preskalera) i 256 (z licznika) otrzymamy dokładnie okres przerwań 1s. Oczywiście rezonator trzeba dołączyć do TOSCx. 2. Brakuje...
Start i stop realizowany jest przez wybór preskalera. Aby uzyskać 3 s musisz przeliczyć dla twojej wartości ilość potrzebnych taktów dla 3 sekund wybrać preskaler i odpowiedni wartość początkową licznika. Zalecam dokumentację.
Witam Właśnie przeczytałem rozdział manuala M8 dot. pracy T/C0 i rejestrów odpowiadających za timer, tylko nie wiem jak zrobić, aby timer odmierzał wartość 1 sekundy .... ;| To chyba nie bardzo zrozumiałeś to , co przeczytałeś :( Timery nie potrafią odmierzać czasu , ale za to doskonale potrafią zliczać impulsy , których źródłem może być przeskaler...
Z kwarcu i preskalera wyliczasz sobie przy jakiej wartości licznik powinien się przepełnić i taką wartość ustawiasz w rejestrze OCRx. Włączasz tryb CTC timera, preskaler i przerwanie.
kolejne preskalery wpływają na dokładność pomiaru. Do Waszych zastosowań wystarczy Tiny26 który z preskalerem *256 spokojnie może zliczyć nawet 5GHz. Piny zwykłych I/O pracują z połową częstotliwości systemowej z powodu bufora, a pin licznika na pewno bedzie pracować poprawnie z f mniejszym około 2krotnie od f timera czyli powiedzmy 20Msamples/s Pozdrawiam
Witam. Mam problem z generowaniem przez ATmege8 określonej częstotliwości impulsów. Chodzi mi o dokładne impulsy pochodzące z dzielenia przez preskaler częstotliwości kwarcu 8MHz. Np. przy takiej częstotliwości, podziale preskalera przez 256 i wpisaniu do licznika wartości początkowej 31250 powinien być impuls co 1 sekunde. U mnie ten impuls jest co...
Panowie! dzięki za informacje (szczególnie za AtMega16 po polsku ) ale nadal niewiele z tego wiem :/ czy mógłbym prosić o kawałek przykładowego kodu np tak jak wcześniej podałem timer0 zlicza od zera do 256, preskaler ustawiony na 1 i po przepełnieniu licznika przerwanie głównego programu i jakaś funkcja... - tak w zasadzie to ja po prostu nie wiem...
Fakt. Nawet wspólny generator tego nie załatwi... To raz, dwa przetworniki U/F np lm331 nie maja takiej dynamiki żeby obskoczyć zakres 3hz do 90khz na wyjściu. Dodano po 2 A na procku bez trudu to zrobisz bo masz też preskalery do liczników i przy każdym okresie wejściowym można dobrać odpowiedni wyjściowy. Dodano po 1 No i układ robi sie banalnie...
tak właśnie podejrzewałem że bascom nie lubi operacji z dokładnym czasem. Bascom (nie) lubi operacji precyzyjnych czasowo tak samo jak i każdy inny język. Wpisując do rejestru licznika 8bitowego wartość 255 i preskaler 1 lub 8 to nawet w asemblerze będziesz miał taki sam efekt.
Z tym ze zaden timer Ci nie wyrobi 3 sekund bez przepelnienia. Ale mozesz faktycznie wziasc maksymalny mozliwy czas (jak najwiekszy podzial na preskalerze i licznik 16-bitowy). Teraz masz dane: ilosc impulsow timera: 2^16 czestotliwosc timera: czestotliwosc_kwarcu/preskaler ilosc impulsow zewnetrznych: zmierzone Nie pomoge Ci z programem, nie potrafie...
Z tego co czytalem w datasheecie to przy ustawieniu bitow preskalera CS.. na 0 licznik sie wylacza. Da sie to robic inaczej? Jest to dobry sposób. Zerowanie wartosci licznika 2 zrobilem na wszelki wypadek, bo nie bylem pewny czy czegos nie wpisuje jeszcze przy ostatnim takcie zanim sie wylaczy w przerwaniu, uwazasz ze to zbedne? Nie oto chodzi. Pętla...
No zgadza się. sygnał wejściowy (do 40 MHz) dajesz na preskaler, a z preskalera na wejście licznika. I zamiast 40 MHZ masz 40 / 256 = 156 kHz. Ograniczenie zatem, jak widzisz, wynika z możliwości preskalera, a nie użytego do napędzania PICa kwarcu. Tak działa większość mierników częstotliwości opisywanych w internecie. I dlatego bardziej popularne są...
Nie potrafię obliczyć jaki preskaler wybrać i jaką wartość wpisać do licznika, aby wyszło te 50Hz? Zawsze wychodzi mi niedokładnie.
W tym wzorze na licznik CTC to ja widzę OCR1A a nie OCR1B. Nie sądzisz, że to jest problemem?
Bo WGM12 jest w TCCR1B a nie w TCCR1A. W tym momencie Twój licznik pracuje w trybie Normal i liczy do 65536 i raz na taki cykl ustawia flagę od porównania czyli co 2,09 sekundy.
Po pierwsze uruchom timer w trybie CTC, nie będziesz musiał ciągle przeładowywać licznika. Po drugie jak raz uruchmoisz ADC to nie musisz tego robić ponownie, wystarczy uruchamiać konwersję. Po trzecie - po co preskaler ADC? On ma zakończyć konwersję w miarę szybko (w każdym razie przed kolejnym przerwaniem timera. I najważniejsze - w przerwaniu timera...
Dziwne, że Bascom nie zgłosił błędu. Moim zdaniem powinno być: Load Timer0, 5 albo Counter0 = 5 Brakuje również Start Timer0, ale może Bascom i tak go uruchamia. Jedna jak i druga forma jest poprawna choć działa trochę inaczej. Po za tym komenda start timer0 jest zbędna gdyż ustawienie preskalera samo w sobie już startuje licznik. :arrow: Do autora:...
Ustawiłeś tryb fastPWM i preskaler na 256. A zatem częstotliwość sygnału PWM będzie w okolicy: F_PWM = F_CPU/(preskaler * TOP ) = 8MHz/(256 * 256) = 122Hz Dodatkowo wpisałeś do rejestru OCR0 wartość 104 . Na początku gdy licznik ma TCNT0 = 0 wyjście PB3 jest w stanie wysokim. I dopiero jak licznik zliczy do TCNT0 = 104 zmieni się stan wyjścia PB3 z...
Obawiam się że ten enkoder(to co podał kolega w linku to enkoder) długo nie pożyje. W automatyce robi sie to enkoderami i licznikami programowalnymi gdzie w liczniku ustalasz tzw dzielnik (preskaler). Popatrz np omron H7CX i E6A2. Lub używa się enkoderów absolutnych. Bardzo często role licznika przejmuje sterownik PLC z odpowiednim modułem licznikowym...
Tu uruchamiasz timer0 z preskalerem ... [syntax=c] //######## konfiguracja timera1 ############## TIMSK |= (1<<TOIE0); //Przerwanie overflow (przepełnienie timera) TCCR0 |= (1<<CS02) | (1<<CS00); // źródłem CLK, preskaler 1024 TCNT0 = timer_start;// //Początkowa wartość licznika //######################################... [/syntax]...
kwarc preskaler synteza preskaler preskaler lb3500
naprawa zamka drzwi zamek kabina felgi malowanie
mikrokomputer cobra1 electrolux esl74300ro
Termet Silver Pro 20 kW - Ustawienia ciągłej pracy pompy Schemat ideowy UPS Fideltronik Ares 1600 - dostępność i diagnostyka