A po co ten nawias? 16MHz czyli 1 cykl trwa 1/16000000 = 62,5ns. 200*8*62,5ns = 100us
Czas otwarcia wtryskiwaczy mierzysz za pomocą 1 timera, ale nie tak od razu. Są dwie metody: pierwsza to podpięcie (przez transoptor) wtryskiwacza do wejścia timera i wejścia przerwania - po wykryciu przerwania (początek stanu niskiego) startujesz timer, przestawiasz stan aktywacji wejścia INT na przeciwny i procek wraca do pętli głównej, po ponownym...
W przerwaniu Int0 inkrementuj zmienną. Ustaw timer na jakąś jednostkę czasu i w przerwaniu od tego timera obliczaj cześtotliwość i zeruj zmienną
Że częstotliwość z zegara w przypadku tim2 jest to 86Mhz jest dzielona przez TIM_ClockDivision, następnie przez Prescaler, a potem dobiera się okres sygnału czyli TIM_Period Nie, nie i nie. Na podstawie datasheeta: Several prescalers allow the configuration of the three AHB buses, the high-speed APB (APB2) and the low-speed APB (APB1) domains. The...
już sobie poradziłem z tym termometrem ale jak narazie na 24h śpieszy się 10 min . Może jakoś inaczej obliczać timer.
Chciałem Ci dać wędkę, ale wolisz rybę. $regfile = "m8def.dat" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Cls Config Timer1 = Timer , Prescale = 256 On Timer1 Odmierz_2s Dim Licz As Byte Enable Interrupts Enable Timer1 Start Timer1...
Ustaw wartość OD ilu ma liczyć Timer. Od 65536 odejmij 62500 i to ładuj za każdym razem na początku do Timera.
NE555 jest dosyć dokładny jak na generator RC, ale na super precyzję nie licz, podałeś wyniki różnice sie zaledwie o 0,2% podczas gdy przeciętny rezystor ma tolerancję 5% przeciętny kondensator 10%, w przy takich elementach możesz sie spodziewać że częstotliwość wypadnie gdzieś pomiędzy 60Hz a 79Hz,
Jaki stosujesz Timer, bo tego w kodzie nie ma. W datasheecie są odpowiednie wzory do obliczania częstotliwości pracy timera.
1. Do wyznaczenia co ile następuje przepełnienie timera potrzeba znać taktowanie procesora. Dla kwarcu 12MHz timer zwiększany jest o 1 co 1us (= 12/12MHz). 2. Timer to licznik, który zlicza w górę. Wpisując liczbę do rejestrów tego licznika zlicza on od tej wpisanej wartości, czyli szybciej doliczy do maksymalnej wartości (65535) i "przekręci się" co...
Proponuję ściągnąć z sieci program do obliczania parametrów timerów np. kalk.exe. I musisz odróżnić Load timer 1, ? od Timer1 = ?. Za pomocą pierwszego wskazujesz ile timer ma odliczyć a za pomocą drugiego od jakiej wartości ma zacząć odliczanie aż do przepełniena.
No to wg. mnie wywazasz otwarte drzwi. Skoro w wiatraku masz enkoder to wystarczy dowiedziec sie co to za rodzaj enkodera i napisac aplikacje. Jezeli zwykly impulsowy enkoder 2-fazowy to musisz znac ilosc impulsow na obrot. Szybkim licznikiem liczysz z niego imulsy a timerem liczysz czas i ustawiasz przerwanie na wartosc zadana timera. W tym przerwaniu...
To nie jest skomplikowane tylko zamiast docinać można wytłumaczyć. Jedna sekunda ma 1000 (słownie tysiąc) milisekund. Herz określa ile razy coś dzieje się na sekundę 1 Herz - coś dzieje się raz na sekundę 50Hz - coś dzieje się 50 x na sekundę Teraz weź 1000ms(czyli sekundę) podziel przez 50 razy czyli 50Hz i wyjdzie Ci 20ms... Potem to już logiczne...
Czy dobrze zrozumiałem? INT włącza Timer, który dla max prędkości zliczy np. 2000 taktów, więc w pętli głównej gdzie dokonuje obliczeń po ustawieniu flagi (dokonaniu pomiaru) powinien być warunek, żeby program nie obliczał jeśli timer<2000? Coś w stylu: do if flaga then if timer1>2000 tu robi obliczenia i wyswietla predkosc ... loop
Jak to sie oblicza? Timer po włączeniu przy każdym swoim cyklu zwiększa wartość TCNT0 o jeden. I tak aż do 256. Gdy osiągnie tą wartość ustawia flagę TOV0 = 1, TCNT0 = 0 i zaczyna od początku. W tym momencie możesz znów ustawić np. TCNT0 = 136. Flagę TOV0 ustawia się na jeden po to, aby ją wyzerować. Jeśli tego nie zrobisz nie będziesz mógł jej więcej...
Nie wiem jaki to procesor ale Timer pracuje prawdopodbnie w trybie Fast PWM a wypełnenie to ok. 63%. Po ustawieniu odpowiednich bitów w rejestrach kontrolnych i wpisaniu wartości do rejstru porównania OCR timer generuje PWM już samemu a program może w tym czasie robić co innego. PS. Ten kod nie wygląda mi na asm tylko raczej na program w języku C :P
Przede wszystkim 1 godzina to bardzo długi czas, więc musisz w pierwszym 4541 wybrać maksymalny podział przez 65536, a więc nóżki A(12) i B(13) do plusa. Wówczas oscylator musi pracować z częstotliwością 65536/3600 = 18.2Hz. Wzór na częstotliwość oscylatora to: f = 1/(2.3•R T •C T ) , przy założeniu, że Rs ≈ 2•R T Na Twoim schemacie...
Poradziłem sobie bez przerwań. Prędkość impulsatora obliczam z wykorzystaniem timera, sprawdzając ile razy zmieni się w zakładanym czasie zmienna impulsatora ± 1. Dzięki za pomoc i wskazówki. Temat zamykam.
Obliczanie wartości Timera ma tylko wpływ na opóźnienie, jak sam powiedziałeś i tu masz rację. Ja też tak robię z tym że przepełnienie tego timera wywołuje mi przerwanie w którym wystawiam na porty kolejną wartość czyli kolejno: 1. wyłączam wszystkie anody (przeważnie stosuję takie wyświetlacze) 2. zmieniam wartość segmentów (dalej wszystkie anody są...
A może byś kod pokazał? Przeciez napsal ze ma bledny kod .... Load Timer0 = 144 co winno byc: Load Timer0 , 144 albo jezeli preferuje zapis ze znakiem rownosci to: Timer0 = 112 ' gdzie dzialanie (256-144=112) wykona Bascom. e marcus
Całe obliczanie czasu w przerwaniu? Czytałem tu, że obsługa przerwania ma być jak najkrótsza. Na pewno mam całe obliczanie wpakować w przerwanie timera 2?
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...
Wystarczy zamienić funkcję wait na taką, która wykorzystuje timer - nawet niekoniecznie przerwania, po prostu czeka, aż stan timera zwiększy się o odpowiednią wartość (odczytujemy timer, obliczamy stan końcowy i czekamu w pętli aż timer tyle osiągnie) - taka pętla będzie w miarę niezależna od przerwań, no chyba że w tych przerwaniach spędzasz strasznie...
A po co te dywagacje - po to masz timer aby wyzwalać w odpowiednich okresach czasu.
Ale Bascom czy FastAVR to sa to jezyki nieprzewidywalne. Niby tak, ale jeśli do obliczania czasu stosuje się timer i przerwania i wszystko jest dobrze skonfigurowane i wyliczone to nie powinno być problemów czasowych.
Ż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...
Tym programikiem obliczysz wszystkie potrzebne wartości, ustawiasz kwarc, typ timera, prescaler, wartość timera, a on oblicza czasy między przerwaniami
Witam JEstem studentem i mam mały problem w zrozumieniu obliczania czasu TIMERA T0 i T1, nie za bardzo rozumiem to liczenie i nie potrafię się do tego zabrać z odpowiedniej strony,na wykładach było ale wiecie jak to na wykładach, muszę po prostu umieć liczyć te czasy ale nie kumam za bardzo, czy ktoś z was pomógłby mi, wytłumaczyć to jak chłop krowie...
A tak to by to zadziałało ?? Nie zadziała. Przynajmniej tak, jak tego oczekujesz. Przy kwarcu 2,4576MHz i prescalerze 64 Timer0 przekręca się co ok. 6,7ms a Timer1 co ok. 1,7s. jak ustawić timer żeby odliczał np 1 sec i wtedy coś się działo 1. Zdefiniować co się ma wykonać w przerwaniu 2. Włączyć przerwania od timera 3. Włączyć globalne zezwolenie...
Mam problem z określenie zależności czasowych w 89C52 Potrzebuje aby timery obliczały mi 3 interwały czasowe 55 minut 30 sek i 10 sek Zupełnie nie wiem jak się do tego zabrać :/ to są dla mnie początki w prog. mikro Bardzo proszę o poradę (przykład kodu w C dla interwału czasowego, sposób obliczenia poszczególnych interwalu czasowych) Z góry dzięki...
w trybie LPM3 procesor chodzi tylko z baterii, co 4 sekundy się wybudza, inkrementuje datę i czas i idzie spać. Pobór prądu < 3uA. to oznacza, że w uśpieniu działa algorytm odmierzania czasu?? A po wyjściu z uśpienia ( co 4 sek) czas jest odświerzany?? działa to tak, że w uśpieniu pracuje jedynie oscylator CPU na kwarcu 32k (rdzeń jest taktowany...
Strasznie skomplikowałeś tak prostą rzecz. Nie trzeba wyliczać napięć skutecznych i z nich napięć szczytowych. Stosunek tych napięć jest stały, więc można to przeskalować i od razu wszystko obliczać na napięciach szczytowych. Z kolei zamiast ustalania okresu przerwań Timera można wykorzystać przerwania do Timera PWMa. PWM i tak nie jest w stanie wiernie...
Do obliczania wpisu do timera bez wdawania sie w "teorię" służy dostępny w sieci kalk.exe. Na Timerze0 zliczane są impulsy z zewnątrz w czasie 1 s. Niestety Timer0 może zliczyć tylko 256 impulsów, a częstotliwość np. to 8MHz czyli 8000000. Musimy zliczyć zatem ilość przerwań od timera, pomnożyć to przez 256 i dodać resztkę, która została zliczona ale...
Samo wygenerowanie częstotliwości nie jest niczym skomplikowanym - obliczasz okres i dalej ustawiasz timery z przerwaniami wywoływanymi co obliczony odcinek czasu. Co do wygenerowania przebiegu - możesz zrobić to używając kilku pętli for i kilku delay'ów :D - tak najszybciej/ najprościej jest to wykonać.
nie możesz używać instrukcji load timer= jeśli chcesz w ten sposób to tak:load timer0,250(to daje do odliczenia 250 cykli) lub counter0=6 co też daje tyle samo do odliczenia czyli 250 cykli, to jeden z problemów z Twoim tajmerem Dodano po 3 Zapamiętaj zasadę, instrukcja load timer oblicza sama ilość cykli zliczanych do wystąpienia (tyle ile wpiszesz...
No nic dziwnego że Ci się nie zgadza bo te wartości z błędne :D Powinno to być 1000 i 20000. A oblicza się prosto. Timer pracuje na zegarze 1MHz (8MHz i preskaler równy 8). ICR1 określa okres, a nie częstotliwość. Częstotliwość pośrednio też ale jako odwrotność. Zatem dla tych dwóch wartości (50 i 1000Hz) mamy: 1000000Hz/50Hz = 20000 1000000Hz/1000Hz...
Timer ma działać cały czas. A czas trwania obliczasz na podstawie różnicy czasów.
Jeszcze jedno pytanie: do czego Ci rejestr Timera przy instrukcji warunkowej if() podczas obliczana całki Ei?
W każdym programie jakoś musisz obsługiwać upływ czasu, na pierwszej lekcji do zamigania led użyłeś delay, do paru innych prostych programów to też wystarczy, ale generalnie należy to robić na timerze. Jest to tak oczywiste, że w Arduino zrobili do tego gotowe funkcje, w AVR C masz sobie to napisać sam. Czyli w obu uC masz mieć timer wybijający rytm...
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...
TCCR0=0x04; TCNT0=0x05; I w przerwaniu na początku musisz mieć: TCNT0=0x05; I zliczać równo 125 przerwań - odliczysz doładnie 1s. Tak przy okazji, nie prościej to zrobić na tajmerze 1, który jest 16 bitowy i nieco inaczej pracuje? Zresztą już w jednym Twoim wątku wstawiłem program kalkulatora do obliczania zawartości rejestrów do tajmerów i UARTa.
Szanowny kolego, Ten fragment kodu jest konwersją wartości typu INT zawierającej liczbę sekund dla timera do formatu S5time. Składa się on z kodu BCD (instrukcja ITB) oraz podstawy czasu, w tym przypadku to sekunda (8192). Reszta wygląda na zabezpieczenie przed ewentualnym przekroczeniem zakresu INT. Pozdrawiam Michał
Normalnie bierzesz licznik kasujesz go i zliczasz impulsy przez 10min (czas obliczasz timerem) potem dzielisz tą wartość przez 100 przepisujesz do jakiegoś rejestru, a sam licznik kasujesz. W rejestrze masz pomiar aktualizowany co 10 min.
Witam http://bc107.republika.pl/html/zamowieni... - tu znajdziesz bardzo fajny program do obliczania parametrów (f, wypełnienie, itd.). Program nazywa się "Timer". Pozdrawiam
Myślę, ze sam powinieneś zastanowić się co robi poszczególna linia i dojdziesz co jest nie tak. Po pierwsze jak to ma działać? Bo jeśli prędkość ma być obliczana w oparciu o liczbę impulsów Timer/Counter0 w czasie wyznaczonym przez Timer1 to linia Imppr = Timer1 jest bez sensu (nie mówiąc o tym, że do 8-bitowej zmiennej jest wpisywana 16-bitowa) Po...
Cześć Przerabiam komputer do samochodu i chce użyć 89C52 zamiast 89C51 bo ma ten dodatkowy timer , ale dokońca nie kumam możliwości tego T2. Ma może ktoś jakiś opis po polskiemu tego procka bo po angielsku PDFa mam ale ten angielski..... W '51 T1 służył do baudrate przy transmisji przez RSa ,a jak to sie ma w '52? Doczytałem sie że T2 może służyć do...
Najpierw musiałbyś sprawdzić, ile i jakich instrukcji procesora zawiera ta pętla i jaki jest czas wykonania obiegu. Na tej podstawie należałoby dopiero wyznaczyć liczbę powtórzeń. Tylko że taki sposób - to czysta amatorszczyzna, nadająca się tylko do programów z serii "umiem pomigać diodą przy użyciu mikrokontrolera". W praktyce programowanie zaczynasz...
Witam, Zliczaj impulsy w czasie. Uruchamiasz timer i do momentu aż timer nie doliczy do 1h liczysz impulsy. Po odliczeniu czasu obliczasz częstotliwość. Pozdraiwam,
Mam problem z którym próbuje uporać się już od dłuższego czasu. Nie wiem jaką wartość powinienem wpisać do timera dwu bajtowego aby uzyskać przerwanie co sekundę. Nie pytałbym się tu o takie rzeczy ale nawet w książce "Mikrokontrolery dla początkujących" autor oblicza wartość timera pisząc sprzeczne równanie! Od razu mówię że programuje w BASCOMIE jeśli...
Ma 6 kabli bo ma gaszenie dodatkowo, co do sterowania wyprzedzeniem za pomocą mikrokontrolera to taki mikrokontroler można wpiąć przed fabrycznym zapłonem - między czujnikiem na magnecie a modułem zapłonowym. Mikrokontroler - wystarczy AVR np Atmega8. Cała zasada jest taka że mikrokontroler z impulsów dawanych przez czujnik w magnecie oblicza prędkość...
Czy odbiornik IR na nośną 36kHz (w moim przypadku TSOP34836) będzie odbierał poprawnie sygnał o nośnej 40kHz z protokołu SIRC? Posiadam pilota wspomnianego w temacie wątku (RM-ED016). Podłączyłem czujnik wg. jego noty katalogowej, na rozgrzewkę napisałem prosty program w C pod WinAVR na pomiar okresu między zboczami opadającymi i niestety nie przypomina...
No robocik pierwsza klasa muszę przyznać. Z niecierpliwością czekam na jakiś filmik. Jak w części różniczkującej obliczasz dt ? Timerem? ale w jakim trybie?
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...
W praktyce otwierasz notę katalogową mosfet, patrzysz na wszystkie parametry w niej zawarte, otwierasz jakąś notę katalogową, która opisuje wszystkie te parametry i porównujesz/obliczasz do swojego projektu. Na pewno ważnym parametrem jest maksymalny prąd ciągły, rozproszenie mocy (przy idealnym radiatorze), czas załączenia i wyłączenia tranzystora,...
Ja mam program w którym wpisuje czestotliwośc timera i wypełnienei i samo mi rysuje schemat i oblicza wartości elementrów i tak włąsbnie zbudowałem jak na schemacie.
kurczę ja zawsze zapominam przy tym obliczaniu, że jeszcze się Timer musi przepełnić ;) - dzięki za sprostowanie tylko uprzedzę, że w twoim programie pierwszym używaliśmy (i ja używam nadal preskalera 8 a nie 64). Jak na próbę ustawiłem 64 to już była masakra dla oka ;) uuuf ok - czyli przy 8MHz i preskalerze = 8 - nasze przerwanie wykonuje się co 256us...
8-O 1) Dokładność pomiaru jest słaba, bo masz w układzie silnik, który sieje zakłóceniami, a nie masz ani jednego kondensatora filtrującego zasilanie. http://mikrokontrolery.blogspot.com/2011... 2) Pin AREF wisi w powietrzu, a przydałby mu się kondensator 100n http://mikrokontrolery.blogspot.com/2011...
odtwarzacz filmów w ktorym mozliwe jest "narysowanie" linii (tylko do pomocy przy ogladaniu filmow Nie wiem jak to zrobić, może narysować linie na monitorze jakimś łatwo zmywalnym markerem. oprogramowania, ktore mogłoby zliczyć czas pomiędzy kliknieciami poszczegolnych klawiszy Napisanie takiego programu wydaje się być dosyć proste. Chodzi sobie timer,...
odpaliłem dwa timery jeden miał dawać sygnał 20 Hz a drugi miał odświeżać mi wyświetlacz 7 segmentowy 100 Hz i niestety nie działa, zrobiłem dwa różne przerwania... ISR(TIMER1_COMPA_vect) // przerwanie dla porownania { PORTD ^= 0x01; // zapalić/zgasić diode ICR1 = 1000000/(16*(0.0234*ADC + 0.9765)); // oblicza nowy szczyt...
Witam Staram się zrobić odliczanie na przerwaniach - jak do tej pory nie używałem jeszcze przerwań, więc proszę o wyrozumiałość za banalne pytanie. A więc tak. Potrzebuję za pomocą Timera0 wprowadzić diodę w pulsację z częstotliwością 10Hz (to tak dla testu) Wszystko wydaje się w miarę proste. Skonfigurować T0 i przerwanie na ten zegar. A więc mam tak:...
1. Było nie dawno tutaj o adresowaniu pośrednim w S7-1200 http://www.elektroda.pl/rtvforum/topic23... 2. jak ja bym to zrobił. 1. Utowrzył UDT gdzie miałbym nr pomiaru i czas w jakim został wykonany pomiar. Następnie DB z x * UDT w zależności ile chcesz mieć tych pomiarów. Co do funkcji. Najpierw użyłbym funkcji Move blk Podczas wystąpienie sygnału,...
Dzięki Panowie za odpowiedzi. Rzeczywiście po obliczeniach wychodzi kaszana z PWM lub z czasem do obliczania impulsu. Przejrzałem sobie notę większych ATTiny 25/45/85 i chyba któregoś z tych maluchów wykorzystam. Co do ATTiny2313 nie jest aż tak duży ale już mam projekt wykonany i maluchy ładnie się wpisały na płytce więc z nich skorzystam. Najważniejsze,...
Miałem taki projekt na uczelni, zrobiliśmy to troche metodą "studenta" żeby się jak najmniej napracować. Otóż chodzi sobie procedura na timerze która wysyła kolejne próbki z pamięci do DAC, ilość próbek jest regulowana zmienną. W przypadku sinusa ustawiamy obszar zmiennych na stałą tablice w pamięci procka, w innym przypadku mamy procedure która generuje...
A zaglądałeś do DS ? Bo widzę, że niespecjalnie. Sygnał podpinasz pod nogę T0 a licznik konfigurujesz na zewnętrzny sygnał zegarowy. TCCR0 = (1 << CS02) | (1 << CS01); // External clock source on T0 pin. Clock on falling edge. i teraz w TCNT0 masz liczbę impulsów. Odpalasz jeszcze jeden timer i co chwilę obliczasz prędkość...
Wejdż na www.elportal.pl >bascom a tam jest znakomity help w naszym rodzimym języku w którym to zagadnienie jest opisane . Polecam również kalkulator do obliczania czasu pomiędzy przerwaniami - do pobrania w/w linku. Pozdrawiam. Waldek.
mam pytanie dlaczego attiny13 timer nie lepszy był by attiny15 który ma dwa takowe z tego co wiem to jeden timer musi zajmować się generowaniem częstotliwość 36khz a drugi musi obliczać czas po jakim mają pojawić się kolejne zmiany stanu logicznego więc jak ma to zrobić jeden licznik w tiny13
Przedstawiam sposób odbierania znaków z nadajnika (bez zastosowania przerwań). Co prawda używam AVR studio z GCC, lecz nie powinno być problemu z zaadaptowaniem poniższego algorytmu do każdego języka. Wykorzystuję hardware'owy moduł szeregowy SPI do komunikacji, ale to w tym przypadku nie ma znaczenia. Nie wklejam bezpośrednio kodu bo całość będzie...
Kolega dondu ma rajcję, przedstawiłem prostszy sposob obliczania OCR2, a zapomniałem o synchronizacji timera2 . Spróbuj może jeszcze raz z moim kodem, ustawiając preskaler timera 2 na 64 : [syntax=c] ISR(INT1_vect){ //ustawienie timera2 aby robial przerwania 20 razy na obrot: static uint8_t last = 0; TCNT2 = 0; SFIOR |= 1<<PSR2; // nie zeruj TCNT0...
Mylisz się :-) Obliczasz całą tablicę okresu przebiegu, włączasz CIRC w DMA (bufor kołowy), podajesz adres początku tablicy, ilość elementów i wio.. Każdy trigger, np z timera i próbka z pamięci leci do DAC bez ingerncji CPU. Jak dojdzie do końcowej próbki w tablicy dzięki CIRC zawija się na początek i leci kolejny okres :-)
hehe :) dzieki zrobilem tak: //Licznik zlicza impulsy co .... impulsów zegara T0PR = 59; //351300Hz //Gdy warunek spelniony zeruj Timer i zglaszaj przerwanie T0MCR |= T0MCR_Interrupt_on_MR0 | T0MCR_Reset_on_MR0; //Przeladowanie licznika co.. T0MR0 = 100; i działa :) mam w związku z tym parę niejasności 1. wyjaśnienie- karkołomny sposób obliczania bo...
W tej architekturze programu tego nie zrealizujesz. Ramki CAN musisz wysyłać co określony czas. Zrobisz to przy użyciu rutyny obsługi timera ustawionego na zdefiniowaną przez Ciebie częstotliwość. Dane do wysłania muszą być gotowe, gdy nadejdzie przerwanie (nie obliczamy wtedy częstotliwości). Pomiar częstotliwości jest również do przerobienia, bo teraz...
Ok dzieki kolego za jakies wzskazowki w sumie moj błąd bo nawet nie wiedzialem ze zlych bramek uzylem. A jak to jest w pradzie przemiennym w tym przypadku chociażby z rezystancja rezystorow? Dalej obliczana jest podobnie do pradu stalego? Wkoncu prad leci raz w jedna raz w druga
z ta kalibracjo to ciekawy temat ,ale jak podepne czujnik do termometru zrobionego na rs232 to temperature pokazuje idealnie,a ten kwarc to faktycznie 12.902400 ,tylko zmieniłem go na 11,059 oczywiscie tez zmieniając w kompilatorze. Wybacz kolego , ale Cię troszkę "obsztorcuje" :D 1)Twierdzisz , że używasz DS1820 (9-bit) , a temperaturę obliczasz jak...
Pierwszy problem który widzę to timer T30 i licznik C1. Używasz konkretnych zmiennych, które przy różnych wywołaniach mogą mieć przecież całkiem inną wartość, wartość ta będzie modyfikowana w kolejnym innym wywołaniu i po powrocie do danego nie będzie miała odpowiedniej wartości. Ponieważ musisz przechowywać dla każdej obliczanej średniej pewne obliczone...
Nie znam Basica, ale blokowo program powinien wyglądać mniej więcej tak: Musisz napisać 2 podprogramy. Pierwszy obsługuje przerwanie od układu wykrywającego zero, drugi (oparty o timer) włączy triaka. Przy przejściu przez zero wyzwalane jest przerwanie, w przeraniu obliczasz opóznienie (wartość jaką należy wpisać do rejestru timera). Po przepełnieniu...
powiedziałby mi ktoś rozgarniety jak to działa (ten segar Ze5bee.txt) najlepiej jakiś algorytm, ogólnie gość się pytał jak tam jest w tym zegarze jest obliczane 60 sek min godz, chodzi o to zę dsm nie ma wbudowanego zegara
czesc w zalaczniku masz fajny program do obliczania czsow przerwan dla procesorow AVR w praktyce wyglada to np tak: ustawiasz timer0 tak zeby przerwanie wystepowalo co 2 ms config timer0 = timer, prescale = 64 ... ... counter0 = 6 start timer0 przy kwarcu 8MHz, timerze0 (8 bitow) i preskalerze 64, timer zwiekszany jest co 8 us 256 - 6 = 250 :) 250 *...
W innych językach na uC nic nie pisałem, więc nie mogę specjalnie porównywać. Sam miałem niedawno dylemat, w jakim języku pisać i ostatecznie, za radą pewnej osoby, zacząłem "uczyć się" asma. Z doświadczenia mogę powiedzieć, że asm nie jest aż taki straszny - przynajmniej jeżeli chodzi o proste aplikacje (w stylu - guzik&dioda, czy nawet sterowanie...
Pokaż kod. Trzeba dodać sprawdzanie czy nastapiło przekroczenie zakresu a gdy tak to nie przeprowadzać obliczeń i wyświetlić 0. Bez tego po przepełnieniu Timera, Timer przekręca się do 0 i liczy dalej i z tego obliczana jest wartość. Czyli następuje dzielenie przez 0 albo inną małą wartość i stąd wychodzą bardzo duże wartości prędkości.
Witam Zadeklarowałem przepisowo Timer1 jako PWM: Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Disconnect , Compare B Pwm = Clear Up , Prescale = 8 Obciążyłem wyjście również przepisowo rezystorem 4k7 (dalej jest baza tranzystora) i teraz czary: wszystko działa ale jak wpisuję do PWM1B = 0 (zero) to procek pobiera 150mA i się gotuje (ale działa)....
-Można dodać linki do kalkulatorów programowalnych online. -Kalkulator dla timerów. Podajesz częstotliwość taktowania i wymagany czas między przerwaniami, uzyskujesz prescaller oraz wartość przy której timer wywołuje przerwanie (w STM nazywa się to output compare). Trzeba by było zrobić opcje dla wszystkich popularnych MCU, bo np. w AVR timery działają...
Moja propozycja kodu (algorytmu obliczania cyfr dla temperatury nie analizowałem):[syntax=C]#include <avr/io.h> // dołączenie głównego systemowego pliku nagłówkowego #include <avr/pgmspace.h>// dołączenie pl. nagłówkowego potrzebnego do odczytu #include <avr/interrupt.h> #include <util/delay.h> #define FALSE0 #define TRUE1 //...
Zasada działania jest dość prosta: Jeden Timer odmierza czas 5ms i w jego przerwaniu zapalana jest odpowiednia dioda a gaszona druga oraz zezwolone jest przerwanie ICP drugiego Timera. Drugi Timer pracuje jako częstotliwość wzorcowa z uruchomionym przerwanie ICP zatrzaskującym wartość tego Timera. W przerwaniu ICP sprawdza się dwa kolejne zbocza rosnące...
timer pracuje w trybie 16 bit. to jest fragment obliczania wyniku. Temp = Counter1 'odczytaj wartosc timera1 Zm_pom = Zm_pom + Temp 'dodaj ja do wartosci zmiennej zm_pom Temp = 4218750 / Zm_pom 'oblicz predkosc Wynik = Temp 'zapiasz wynik do zmiennej wynik cos mi sie wydaje ze po prostu moje wyniki przekraczaja zadeklarowana zmienna. czy taki zapis...
przeanalizuj sobie dobrze ten kdzik poniżej bo on jest dobrze napisany - naprawdę ;) ja wprawdzie kiedyś przy okazju swojej wytrawiarki też zrobiłem sterowanie w Bascomie 2 odbiorników przy 75 krokach ale dałoby radę więcej kroków i jeszcze kilka odbiorników. Z tym, że już nie pamiętam dokładnie zagadnienia więc trudno mi się teraz znowu w to wgryzać....
Mam problem jestem początkujący napisałem program który ma za zadanie regulować włączanie wiatraka i czas z jakim ma dmuchać , jednocześnie mierzy temperaturę i nie działa tak jak powinno : Temperatura pokazuję co jakiś czas błędny pomiar np 124 , 32 , 98 procek się resetuje chińskie znaki raz na jakiś czas w programie można było ręcznie zmieniać czas...
Hej, Bardzo dziękuję za cenną wskazówkę. Oczywiście ustawienie prescalera na 0 rozwiązało problem. Najciekawsze jest to, że w przypadku innych timerów do obliczania częstotliwości (taktowanie sterowników silników krokowych) biorę pod uwagę wartość PSC + 1, a tutaj o tym w ogóle nie pomyślałem. Nauczka na przyszłość. Co do wartości 4096 w ARR. Oczywiście...
Chyba wszystko się zgadza. Co 32us licznik się przepełnia i zwiększana jest zmienna licznik o 1. Po 256 takich zwiększeniach zmienna licznik sie przekręca. Teoretycznie powinno być 122Hz. Dokładnie, przecież częstotliwość takiego programowego PWM'a oblicza się w ten sposób: F_CPU / pojemność timera sprzętowego (tutaj 256) / rozdzielczość PWM'a (tutaj...
wow... Takiej odpowiedzi się nie spodziewałem, ale jest ona jak najbardziej pomocna i dziękuję za nią. Jednak po przeczytaniu tego małego "artykułu" nasuwa mi się kilka moich wniosków. Taki harmonogram piszę już po raz kolejny, tylko że tym razem używam do tego oddzielnej klasy. W jego "pierwotnej" wersji również używałem timera, jednak wtedy nie obliczałem...
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...
Bo znalazłem na http://bc107.republika.pl/html/zamowieni... Timer.exe (oblicza parametry dla 555) i użyć schemat astabilny 3 (wydaje się najprostszy i ma Ww=50%). :)
Na twoim miejscu zrobiłbym to tak (przypominam o rtc i stabilizowanym temperaturowo kwarcu): timer1 liczy czas i przepełnia się co 1s timer2 liczy impulsy i przepełnia się co np 15 timer3 liczy czas w kółko (np inkrementuj go co 1ms) i nie daje przerwania Przerwania od t1 i t2 obliczają prędkość z ds/dt, gdzie dla jednego timera zmienną jest droga,...
Witam Napisałem prosty program używający timera1 i timera 2 do zliczania częstotliwości, Chciałbym użyć dodatkowo serwa do mojego projektu ale używając intrukcji Servo coś nie tak dzieje się z serwem . Servo nie chce ci pracowac bo masz niepoprawnie obliczaną freq., od której (w twoim programie) zależy praca serva. Również niepoprawnie masz skonfigurowane...
Niestety nie udało mi się odnaleźć w internecie wszystkich informacji, które rozjaśniłyby mi problem, stąd mam parę pytań, które mnie nurtują: 1. Z tego co zrozumiałem to aby użyć ICR to trzeba podać sygnał na wejście ICP1, następnie przenieść wartość z ICR do zmiennej i to będzie mój wynik z racji tego, że zeruję sobie wcześniej licznik, tak? 2. Jeśli...
To jest po prostu stała obliczana ze wzoru OCR1A = (t*F_CPU/preskaler) gdzie: t= pi/3 = 3.(3)ms F_CPU = 14745600 stąd OCR1_DEF = 6144 a tu definicja ;) [syntax=c]#define OCR1A_DEF 6144[/syntax]
Teraz wszystko OK :spoko: Pamiętaj tylko, by we wzorze obliczającym stosować 65536 (czyli 2^16), a nie 65535.
Witam. Rzeczywiście, to rozwiązanie na ICL8038 wydaje się rozbudowane, choć tak naprawdę dla Twojego zastosowania można by go znacznie uprościć. Tak wygląda jego podstawowa aplikacja. Niestety cena jego jest niezbyt atrakcyjna. http://obrazki.elektroda.net/38_12085973... Natomiast jeżeli chodzi o rozwiązanie tego na układzie 555, to pomocnym...
Może skorzystać z przerwania, które UART zgłosi, kiedy odbierze znak. Wtedy kod może wyglądac tak: ISR (SIG_OVERFLOW2) { //obliczanie wartosci ktore maja byc wyswietlone na wyswietlaczu } ISR (USART_RX_vect) { //operacje na odebranych danych } main(){ //wlaczenie przerwan itp while(1){ //wyswietlanie...
Wydaje mi się, że najpierw powinno być „uruchomione” odliczanie tych 0,1 sek, wyzwalane pierwszym pikiem z „paczki”. Potem trzeba odczekać te 0,1 sekundy na zanik „szumów” i zacząć zliczanie w czasie 0,9 sek. Ilość zliczonych pików podzielona przez czas da mi częstotliwość. Wynik ma się utrzymywać na wyświetlaczu...
Tak tylko jest ta różnica ze akumulatory podładowują baterie słoneczne i układ działa dwa dni :) I właśnie rozchodzi mi się o to aby po tym co już pokazały nowe liczniki zobaczyć ile pobrało prądu z sieci a ile zrobiły baterie słoneczne z akumulatorami.Dlatego właśnie się pogubiłem w moim toku myślenia jak to teraz faktycznie obliczyć na podstawie 2...
oblicza spadek oblicza radiator oblicza tranzystor
zamiennik sterownik deska rozdzielcza omega alarmu zgaszeniu silnika
ogrzewanie basenu ogrzewanie basenu
Jakie paliwo do kosy spalinowej: 95 czy 98? Znikające literki na desce rozdzielczej BMW - jak naprawić?