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.
Tak odpal helpa zajrzyj do config timer i tam będzie przykład;)
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...
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
.... W pętli głównej sprawdzam na okrągło bit 0 rejestru 0 układu ( sprawdzam flagę alarmu timera). .... "Additionally, a timer alarm can be programmed by setting the timer alarm enable (bit6 of the alarm control register). When the value of the timer equals a pre-programmed value in the alarm timer register (location0F), the alarm flag is set ( bit1...
delay w przerwaniu?! Nie przesadzasz? Dlaczego 2 razy ustawiasz TOIE2? Po co zerujesz TCNT2? Po co ustawiasz TOV2? Spróbuj najpierw sprawdzić ten kod z taktowaniem timera z podstawowego zegara, nie z kwarcu zegarkowego. Wtedy będziesz wiedział, czy problem leży w oprogramowaniu, czy w braku oscylacji.
Należy: - zadeklarować zmienną globalną np. LICZNIK i nadać jej wartość zera, - włączyć przerwania od przepełnienia Timer0, - w funkcji przerwania należy zwiększać wartość zmiennej LICZNIK o jeden Aby poznać liczbę impulsów wystarczy pomnożyć LICZNIK*256 i dodać do niego aktualną wartość rejestru licznika timera, czyli jak sądzę counter0 (nie znam BASCOM).
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...
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ą.
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ś...
Skróć czykl zliczania Timera.
impulsy mozesz liczyć na innym pozostałym liczniku, tylko należy mu ustawić jako źródlo impulsy zewnętrzne to rozwiązanie jest sprzętowe, tylko wymaga wybrania licznika o odpowiednim zakresie no i od czasu zerowanie aby przygotować go na kolejne zliczanie.
R10 jest nie potrzebny Kolega pisze bzdury, bez rezystora przycisk dostaje spore impulsy przeciążeniowe z naładowanego kondensatora. zapewne styki switcha sie skleją od tej pojemności 100n A jeśli chodzi o zliczanie impulsów to używa sie do tego Timera.
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...
Konfiguracja timera '51 jest inna : [syntax=basic4gl]Składnia: CONFIG TIMERx = COUNTER | TIMER , GATE = INTERNAL | EXTERNAL , MODE = 0 | 1 | 2 | 3 gdzie: x0 – TIMER0, 1 – TIMER1, Opis: TIMER0 i TIMER1 mogą pracować jako liczniki impulsów zewnętrznych gdy pierwszy parametr jest ustawiony jako COUNTER. Impulsy zliczane muszą być dostarczane...
Rozwiązanie Twojego problemu jest banalne. Na początek proponuję wykorzystać zmienną, która jest zwiększana przy każdym wciśnięciu przycisku i w zależności od wartości tej zmiennej (tu wystarczy od 0 do 3, przy wartości 4 zmienna jest znowu zerowana) ustawiasz jedynkę na odpowiednim porcie jednocześnie uruchamiając zliczanie. Kiedy licznik dojdzie do...
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...
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.
Nie możesz wykorzystać timera do zliczania impulsów?
Na spokojnie jeszcze raz poczytaj Helpa i notę Atmega16. Wejście Icp jest wejściem Timera 1 a nie Timera0. Myślę też że do tego co ty chcesz zrobić można by się obyć bez Timera tylko na wejściu INTx zliczać zbocza, a potem w pętli analizować te dane.
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ć...
Masz ATmega8, czyli masz ADC i masz timer połączony z pinami I/O, czyli za pomocą timera możesz generować przebiegi na wyjściu. Rzecz wręcz banalna. Za pomocą ADC wykonujesz pomiar napięcia. przeliczasz go na okres, albo odrazu częstotliwość, nie wiem jak to w bascomie wyglada. W każdym razie częsottliwość ustala się przez zapisanie w odpowiednim rejestrze...
........ 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...
Timer2 jest nieco inny niż Timer1. Timer2 w M8 może pobierać sygnał zegarowy z oscylatora taktującego procesor bądź z kwarcu małej częstotliwości. Spróbuj dodać do Config Timer2 ASYNC = OFF . Skieruje to do Timera 2 sygnał zegarowy generatora uC. P. S. Jak chcesz sprawdź to sobie ustawieniach rejestrów. Mnie się nie chciało. Poczytaj sobie helpa. No...
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ść...
Kiedys w bascomie mialem taki kod ze ustawialem timer do zliczania impulsiw indukcyjnych owijalem kilka razy kabel na przewod WN i pokazywalo mi te impulsy. Napisane z telefonu ;)
To rozwiązanie chcę użyć do zliczania sygnałów z czujnika. Na chwilę obecną zliczam impulsy na zmiennej i jest taki efekt, że w trakcie zliczania program wykonuje zliczanie i nie mam możliwości przełączać innych wyjść. (zliczanie jest jednym etapem gdzie musi zostać wykonana określona liczba obrotów)
[syntax=basic4gl] Config Timer1 = Timer , Prescale = 8 'Parametr Prescale może być równy:1, 8, 64, 256 lub 1024 [/syntax] Potem w programie możesz sobie odczytywać zawartość tego licznika w następujący sposób (np.): [syntax=basic4gl] Stan = Timer1 'Zmienna Stan typu Word [/syntax] robiw
Żeby zrobić za pomocą Timera - to nie możesz używać trybu PowerDown tylko Sleep - żeby właśnie Timery mogły działać to po pierwsze. W taki trybie jednak będziesz miał nieco większy pobór prądu niż w pełnym PowerDown. Więc wszystko zależy na ile ma wystarczać bateria o ile jest to coś zasilane z baterii. Bez PowerDown'a na pewno będzie to sporo krótszy...
Sygnałem wyjściowym hallotrona jest napięcie. Tak więc przez 1/2 LM358 pracująca jako komparator i zasilona napięciem takim jak procesor. Ważna jest biegunowość napięcia wejściowego.
Kwarc dajesz np. 12 MHz Robisz sobie pętelkę pomiarową wywoływaną z Timera np. co 200 µs sprawdzającą dane wejście pomiarowe. Jeżeli wejście jest =0 to nie zliczasz jeżeli = 1 to zwiększasz zmienną WYNIK o 1 (zmienna 16 bitowa) zakres będzie do jakichś 6.4 sekundy. W pętli sprawdzasz także czy zmienna nie przekroczyła 25000 (5 sekund). Jeżeli...
Jeśli te 32Hz nie są do niczego używane, to zabawę z Timer 2 uważam za zbędną, wystarczy preskaler 1024 w Timer1 i wpisanie wartości 32*128 do OC1A i ustawienie trybu CTC w Timer1.
Mam już program napisany w Bascomie obliczający czestotliwość a z częstotliwości okres jednak nie bardzo mam pomysł jak moge wychwycić koniec impulsu(zbocze opadające)...Reszta to pikuś następnie obliczam procent wypełniania impulsu do całego okresu...ma ktoś pomysł jak zrealizować czas trwania impulsu w Bascomie? Dodam tylko że impulsy zliczam poprzez...
marcinek.p - to gotowiec dla ciebie, nie mam jak go przetestować ale jestem pewien że zadziała jak trzeba. Masz tu przerwanie, miganie led i zliczanie migniec z incr Mozna to wszystko wkleic do przerwania ale dobra zasada nakazuje w przerwaniach umieszczać jak najmniej kodu. [syntax=basic4gl] $regfile = "m8def.dat" $crystal = 1000000 $hwstack = 32 $swstack...
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...
Nie tędy droga, Ty musisz zrobić coś dokładnie odwrotnego - nie wygenerować sygnał, ale go zmierzyć. Rozwiązania są 2, ale jeśli programujesz w bascomie i nie masz ochoty na operacje na rejestrach w procesora to kurczą się do jednego. Mianowicie: 0. ustawiasz timer na zliczanie impulsów i zmianę wartości jakiejś zmiennej - parametry dobierz w zależności...
Musisz ustawić timer. Nie wiem czy dasz radę na 5minut, ale możesz np zrobić go na 10sekund i wywołać 30razy (w timerze będziesz zliczał kolejne wywoływania i ponownie ustawiał timer, jak dojdzie zmienna do 30 to wyłączysz timer i wywołasz podprogram). Nie będzie to nic blokowało :)
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...
OK dziękuję wszystkim za pomoc, rozumiem że Timer będzie liczył czas non stop aż nie nadejdzie zbocze narastające i nie dojdzie do komendy stop timer1? Chodzi mi o to że włączam go w przerwaniu a potem się ono kończy i czy timer wtedy nie zakończy zliczania?
nie no to jasne ... jak coś komuś nie wychodzi to na bank wina Bascoma ... tylko ze jak ma liczyć impulsy to ma być skonfigurowany jako licznik COUNTER a nie jako czasomierz TIMER czyli nie CONFIG TIMER0 = TIMER , PRESCALE= 1 | 8 | 64 | 256 | 1024 tylko CONFIG TIMER0 = COUNTER , EDGE= RISING | FALLING
Mam mały problem - nie potrafię przenieśc kodu z bascoma do avr c (eclipse). Tzn, wiem ze nie przeniosą go 1:1 chodzi mi raczej o ogólne zasady, szkielet: chodzi o zapis do pamięci eeprom stanu licznika - licznik sie zmienia przy pomocy przycisków góra/dół - przy wyłaczeniu zasilania oczywiście jego zawartośc jest kasowana. Oczywiście zapis przy każdej...
Program zajmuje 50%. Może i jest źle napisany ale działa.. Ja bym to stwirdzenie troche skorygował; Program działa tak jak jest napisany!... bo - "Jest jeszcze jeden problem." Co jakiś czas temperatura podskakuje o 10 stopni a czasami nawet do 200 podskoczyło co spowodowało zbędne załączenie przekaźnika. Z czym jest problem? Popatrz na pracę timera0,...
Zliczaj przerwania timera co odpowiedni odstęp czasu. Po 59 zliczeniu przerwij generowanie i wyzeruj timer. pozdrawiam
Sprawa jest dosc prosta. Mozesz wykorzystac do tego wejscia licznikow T0 i T1. Wystarczy tylko odpowiednio skonfigurowac rejesrt TMOD. Jezeli konfigurowales rejestry specjalne w Asemblerze to nie bedziesz mial zadnych problemow w Bascomie (trzeba do niego wpisac odpowiednia wartosc binarna TMOD=&BXXXXXXXX) Mozesz tez uzyc polecenia CONFIG TIMER . Musisz...
Widocznie w BASCOM bity są zanegowane - nie wiem niestety bo jak już wspomniałem BASCOM to nie moja działka. Zapytaj jakiegoś BASCOMowca :) Co do spóźniania lub szybszej pracy: http://mikrokontrolery.blogspot.com/2011...
Mam użyć Timera do zliczania ilości impulsów i jeśli jest mniej niż 55 to ma sygnalizować że połączenie zostało zerwane? Czy jak mam użyć tego timera?
Nie ma rejestru który by to zliczał. Chyba że podepniesz wyjście OC1A do wejścia innego Timera, np. T0. Tylko że nie masz już Timerów 16-to bitowych a tylko 8-mio bitowe. Praktycznie więc zostaje tylko zliczanie zmiennej. W BASCOMie przerwanie będzie się wykonywało ze 100 cykli. Minimalna wartość jaką możesz więc wpisać do OCR1A żeby nie zwiesić programu...
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.
Nie,ma liczyć litry tak jak dystrybutor . Dodano po 2 Nie wiem w jaki sposób dodawac litry do zmiennej po przekroczeniu okreslonej liczby impulsów z przepływomierza to co znalazłem to liczone wszystkie w czasie a tu chyba chodzi o przepełnienie licznika Czas tu nie ma znaczenia! Użyj dowolny timer w charakterze licznika (Counter), i tak jak sugerowano...
Pozwolę sobie umieścić post pod postem żeby wiadomość dotarła do zainteresowanego. Jeszcze lepszym wyjściem dla takiego zegara będzie zastosowanie dedykowanego rezonatorka 32768Hz (32,768KHz) Wartość 32768 to w zapisie binarnym dokładnie piętnaście bitów. Jeśli więc Timer będzie zliczał generowane impulsy to po 32768 uzna że mineła sekunda :D Bascom...
Kolego patrzę na ten kod ze zgrozą, ale załadowałem do swojego Bascoma i trochę więcej zrozumiałem bo mozna sprawdzać referencje i skakać po kodzie. W przerwaniu co osiem taktów (nierealne) timer ma zliczać te twoje "niby" OCR. (Incr Licz_timera1 : If Licz_timera1 >= Ooo Then) Te OCR jest ładowane z tabeli gdzie najmniejsza wartość to 127 a najwieksza...
Po upływie 655.35ms następuje przepełnienie licznika, w takiej sytuacji trzeba utworzyć zmienną która będzie zliczać ilość przepełnień. Czyli.......... W takiej sytuacji (.."time out"; => Err=1) - trzeba przyjąc że instrukcja została zakończona i processor już nie powróci do jej kontynuacji, a raczej przystąpi do kolejnej instrukcji przewidzianej programem....
2. Teraz ustawiam np. preskaler na 256 - rozumiem, że wtedy licznik Timera0 mnożę przez wartość preskalera i wychodzi mi jakaś wartość. Zakładam, że nie ładuje to timera żadnej wartości na początku czyli: Np. 255 x 256 = 65280 - pytanie co to za liczba? co ona oznacza? Nic nie oznacza. Zacznij od przeczytania opisu timera w Datasheet. Preskaler dzieli...
1. jaki język programowania? 2. ja bym to zrobił tak: a) Timer ustawiasz, żeby łatwo zliczał impulsy do odmierzenia czasu 2s. b) pierwsze naciśnięcie przycisku (po eliminacji drgań styków) wubudza timer c) każde kolejne naciśnięcie przycisku przed upływem 2s zwiększa zmienną, jeśli dojdzie do 2 to wtedy ją zerujesz, zatrzymujesz timer i włączasz tą...
witam jest proste w asm ale w c też nie powinno być problemu. Przerwania INT0 i INT1 mogą być wyzwalane zmianą stanu napięcia wysokim lub stanem niskim . Odpowiednio ustawić bit w rejestrze MCUCSR. Ustawić bit aktywujący przerwanie w rejestrze GICR. mierzysz czas przez odczyt TIMERa
Jesteś pewien że powinieneś ładować do Timera0 wartość 78? Przecież Timer będzie zliczał od tej wartości do TOP (255) i otrzymujemy nie 78 a 177 co daje częstotliwość ~ 4Hz.
bezpośrednio z bascoma się nieda. trzeba by wpisać odpowiednią wartość do rejestru sterującego timerem ale niepamiętam dokładnie jak to sięrobi, trzeba by zajżec do noty katalogowej tam wszystko dokładnie opisane. ale mozna zrobić inna sztuczkę $regfile = "m8def.dat" Config Pinb.1 = Output $crystal = 1000000 Config Timer1 = Timer , Prescale...
nie wiem czemu ale w bascomie licznik co ileś impulsow dodaje mi impuls "lewy" . // pokrótce// mam czujnik indukcyjny(max 500Hz) który liczy ilość nawiniętej folii , impuls jest co 8 centymetrów - przy około 100 m/min . chodzi mi o dokładnośc nie gorszą jak 0.5% . parametry : procek 2313 kwarc 10 mega timer ,odświeżanie wyświetlacza co 0.5s przerwanie...
Tak wiem że należy odpalić timer na początku i zatrzymać na końcu i odczytać jego wartość.. no nic. Dziękuję za wypowiedzi tak czy inaczej.. Odp. kol. Draco była troche sarkastyczna, bo na tak prostą procedurę nikt, kto ma choć troche rozeznania w tej dziedzinie chyba (!) nie szuka pomocy. Mopzesz to zrobić na kilka sposobów: 1. mierzyc czas metodą...
Prototyp zrobiłem na pomiarze napięcia (ADC) na fotodiodzie - to chodziło, dopóki nie zacząłem testu na dworze.... Fotodioda łapała podczerwień z... no właśnie, skąd? Nie wiem. To oczywiste. Światło z otoczenia również zawiera podczerwień, więc pojawiają się zakłócenia. Po odłączeniu fotodiody i dotykaniu kabelkiem do + na wyświetlaczu także pokazywały...
Wait nie stopuje programu. Program nadal się wykonuje.Piszesz trochę niejasno o tym, że timer wywołuje przerwanie z częstotliwoscią około 400 Hz. Czy to znaczy, że przerwanie wykonuje się około 400 razy na sekundę? Zliczasz coś?
Witam. Ja zrobiłbym to tak: 1. Przebieg pomiarowy wprowadziłbym na wejście przerywające INT0 lub INT1 (w 2051 są dwa więc można mierzyć dwa kanały). 2. Ustawiłbym timer do pracy ze zliczaniem impulsów 1/12 fxtal, w trybie pracy 1, a więc 16-bitowym. Przy kwarcu 12MHz daje to rozdzielczość timera 1us, a maksymalny czas liczony przez timer to 65535 us,...
Witam serdecznie zrobiłem zegar na w/w procesorze i wyświetlaczach 7 segmentowych led. Sekundę odmierzam z wykorzystaniem Timera 2 w trybie asynchronicznym z dodatkowym kwarcem 32,768Khz. Multipleksowanie wyświetlaczy realizowane jest za pomocą timera0. Do tej pory wszystko działa świetnie, Chciałbym jednak dodać jeszcze zliczanie setnych sekundy i...
Pomysł jest straszny. Poczytaj o timerach. :D No dobra, ale w tym przypadku timer ma zliczać impulsy i ilość tych impulsów dodawać lub odejmować od zmiennej? I czy do tego wystarczy jeden timer, czy dwa (do dodawania jeden i do odejmowania jeden)?
juz to robie w inny sposob, ale teraz mecze sie nad czyms innym... chce zrobic licznik impulsow zewnetrznych, na timerze 1 ale nie za bardzo chce mi to wyjsc... po prostu program nie chce wejsc mi w przerwanie :( czy moglby mi ktos napisac co powinienem ustawic poza: config Timer1 = timer, prescale = 1 set (pin tam gdzie jest t1) (pin gdfzie...
Chcę zrobić prosty obrotomierz na attiny2313 (częstotliwościomierz), ale jak do tej pory każdy kod, który napisałem kończył się albo niedokładnym zliczaniem 1 sekundy, albo nie wiadomo skąd pojawiały się jakieś wartości w timerach i wynik był conajmniej dziwny. Kwarc mam 10MHz (akurat taki mam na płytce testowej), µP to attiny2313. Wykorzystywałem...
Sorry, Wiesz ja to sie z tym bawie tylko i program pisze w bascomie metoda prob i bledow. Nie ma większego znaczenia w jakim środowisku programujesz (Basic albo C). Istotny jest koncept projektu i sposób rachunkowy, reszta to tylko inna forma zapisu programu. Wybrałeś za narzędzia: Timer1 i jeden z interruptów zewnętrznych. Zatem jest tez bez znaczenia...
Jak krótki odcinek czasu można zmierzyć zależy od częstotliwości taktowania uC. Procedura może polegać na ustawieniu Timera procka na tryb czasomierza (parametr TIMER0 = TIMER). Uruchamianiem i zatrzymywaniem zliczania Timera zajmują się: Start i Stop (np.: Start Timer0), które uruchomisz konfigurując przerwania zewnętrzne (np.: Config Int0 = Low Level).
Podaje program z komentarzem. ............ Ps. Nie ładowałem do licznika wartości bo potrzebuje dwóch pełnych przeładowań. W programie jest zupenie nie ważne ile tych przepełnień wystpuje; istotne aby rachunek odmierzanych odcinków czasu był zgodny z zamierzonym. Skoro jesteś zmuszony zliczać przepełnienia (co jest rzeczą absolutnie normalną), więc...
Witam. Mój wtrysk w samochodzie jest załanczany poprzez mase. Jak skonfigurować Timer żeby zliczał czas załączenia masy. Z tego co pamiętam to gdy podamy mase na Timer1 to zlicza impulsy dopóki nie wystąpi stan wysoki. Jak skonfigurować w bascomie żeby tak pracował???
Jeśli chcesz zrobić wait na liczniku to możesz uzyskać dwa efekty. W obu ustawiasz w przerwaniu flagę. Pierwszy do instrukcja czekaj aż flaga będzie ustawiona wykonuj dalszy ciąg programu loop Generalnie w takim rozwiązaniu nie ma sensku dawać timera. Druga opcja do instrukcja if(flaga ustawiona) reszta kodu loop Oczywiście drugie rozwiązanie...
Witam, chciałbym przy użyciu Atmega8 i zewnętrznego kwarcu odmierzać i zliczać setne części sekund, sekundę mogę łatwo wyłapać z timera1 według przykładowych obliczeń 4000000MHz / 256 = 15625 65536 - 15625 = 49911 lub 8000000Mhz / 256 = 31250 65536 - 31250 = 34286 Nie mam jednak pomysłu jak....... Z góry dziękuję za pomocne wypowiedzi. Aby odmierzac...
Wolałbym nie pisać Ci gotowca ;) natomiast moja rada jest taka. Uruchomić timer i jeśli częstotliwość tych impulsów jest dość wysoka to bezpośrednio w przerwaniu timera dawać sygnał rozpoczęcia i zakończenia zliczania i zliczać w pętli głównej programu, a jeśli częstotliwość impulsów jest mała (np. w ciągu 5 czy 10s ma liczyć) to lepiej zrobić dodatkowy...
P.S. używam kwarcu 4MHz W takim razie na pewno sie nie uda. Chyba ze bedziesz zliacz przerwania i co ktores wykona sie porgram. Oczywiscie musisz wtedy uwzglednic czas potrzebny na obsluge przerwan i odpowienio zmodyfikowac ilosc zliczanych impulsow. Tylko nie wiem na ile mozna w bascomie liczyc na powtarzalnosc czasu wykonywania kodu.
Tak kwarc to 8MHz i pisze w bascom. On Interrupts jest zbędne, mój błąd. Timer jest włączaniu w przerwaniu int1. Wtrysk: If Pind.3 = 1 Then Start Timer1 'wl timera End If If Pind.3 = 0 Then Stop Timer1 'wylaczenie timera End If Return Samo zliczanie czasu trwania stanu wysokiego na wejściu int1 działa poprawnie , tylko co jakiś czas wynik się zeruje...
Witam! Jak rozwiazac problem zliczania impulsow z 8 kanalow np. na ATmega8535? ATmega8535 ma 3 wejscia typu timer/counter (ATmega128 tylko 4) a ja potrzebuje zliczac impulsy z 8 zrodel (wentylatory)-w celu pomiaru ich predkosci. CZy jest jakas mozliwosc podlaczenia tego przez jakis multiplekser (jak tak to jaki i jak to podlaczyc )?? Poniewaz jestem...
Tu masz program pod ATtiny2313, jeśli potrafisz programować, to też potrafisz przerobić program na ATMegę: [syntax=basic4gl]' Bardzo prosty zegar bez możliwości ustawiania Dim Sekjed As Byte , Sekdzies As Byte , Minjed As Byte , Mindzies As Byte Dim , Godzjed As Byte , Godzdzies As Byte , Mux As Byte , Migaj As Bit Config Portb = 255 : Portb = &B255...
. Zamierzam zrobić tak by mogli wprowadzić korektę (jeśli będzie potrzebna) i zapisać w eeprom. czy to dobry pomysł? Jakoś tak; $Crystal=12000000 Config Timer1 = Timer , Prescale = 8 On Timer1 Inter_1mS Inter_1mS: Counter1 = Counter1 + Licznik (64036 - wychodzi z obliczeń, że da to 1ms) /tu odliczę sobie 103/ Błednie to rozumujesz, albo błednie podałeś...
Super dzieki, faktycznie teraz troszke lepiej :-) Dodano po 5 Udało się pójść o krok dalej. Część programu dotycząca licznika wygląda tak: [syntax=basic4gl] $regfile = "m16def.dat" $lib "I2C.LBX" '$lib "mcsbyte.lbx" $lib "Ds1307clock.lib" $crystal = 4000000 Config Timer2 = Timer , Prescale = 64 On Timer2 Irq100ms 'Load Timer2 Enable Timer2 Dim Licz100ms...
Masz rację, z zegara taktującego peryferia masz tylko preskaler 8 i potem 16. Ale nic nie stoi na przeszkodzie, aby jeden timer taktować z zegara CLKPER, ustawić na nim zliczanie do 16 i wyjście z tego timera podłączyć pod event system z którego będziesz taktował inne timery. W takim układzie będą one taktowane z 32MHz/16, czy przez dowolną liczbę z...
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...
Po pierwsze, możesz jak najbardziej korzystać z timera (a właściwie to powinieneś, jeżeli chcesz pomniejszyć koszta o zakup zewnętrznego RTC). Po drugie - możesz kalibrować, możesz to robić długo i bezskutecznie. Po drugie i ćwierć - Wewnętrzny oscylator nie za bardzo nadaje się do tego celu. "Nieco" mu się zmienia częstotliwość wraz z temperaturą i...
Szkoda że na '51, bo na AVR było by łatwiej. Można to zrobić tak: Procki '51 mają wejścia zewnętrznego przerwania wyzwalanego stanem niskim, lub zboczem opadającym. Ciebie interesuje to drugie (bo zboczemn narastającym się nie da jak w AVR). Nie wiem jak wygląda konfiguracja przerwań w BASCOMie, zobacz w dokumentacji, ale podejrzewam że coś w rodzaju:...
Witam. Mam problem z przerwaniami w atmega8. Wcześniej nie potrzebowałem przerwań więc to zagadnienie mnie nie interesowało. Potrzebuję wywołać przerwanie zewnętrzne int0 które uruchomi timer1, a ten zacznie odmierzać czas. Proszę o pomoc. Pierwsza zasadnicza uwaga to nie zauważyłem w programie konfiguracji interruptu0- coś np. takiego: config INT0=...
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 myślałem, otałem sie o produkcje poligraficzną na maszynach offsetowych:D Główny problem to najniższa prękosc liczenia. Poza tym dość prosto, zewnętrzny kwarc jako podstawa czasu, wenętrzny ma za duże odchyłki. Timer 16-bitowy jako timer zliczający interwał czasu w którym odbywa się pomiar, drugi timer jako licznik impulsów z fototranzystora. Reszta...
Hmm. Niektóre zagadnienia można rozwiązać na wiele sposobów. W przypadku mojego przykładu pin INT układu PCF można podłączyć do dowolnego pinu uC. W przypadku Twojego rozwiązania trzeba się podłączyć do INT0 albo INT1 i z samego opisu wynika że takich punktów w tym uC jest tylko dwa. Co jeśli komuś komplikuje to układ? Można by rozważyć ocję zmiany...
Ad 1. Nie że chce jednocześnie INT0 i Timer0 wykożystać do liczenia tych samych impulsów. Tylko jak wpisuje: config Timer=counter gate=internal mode=1 enable interrupts enable timer0 a impulsy podaje na P3.4 to timer nie liczy nic. Dla pewności załączałem też dodatkowo przerwanie INT0 (rozumiem że to bez sensu). Chyba że ustawienie na zliczanie zbocza...
Dokładnie tak jak pisze Kolega emarcus. W moim przykładzie w programie operujemy na zmiennych minuty, sekundy. Ale do programowania czasu konwertujemy i tak wszystko do sekund. W ogólności można zrobić odwrotnie, tj. używać tylko zmiennej wyrażonej w sekundach i np. co sekundę konwertować tę wartość na wartość minut i sekund w celu ich wyświetlenia,...
Witam wspólnotę chciałbym zaznaczyć że z wykształcenia jestem mechanikiem, a z programowaniem nie miałem wcześniej styczności. Przeczytałem książeczkę która mowiła o programowaniu w jezyku bascom, i stworzyłem taki o to kod programu. [syntax=basic4gl] $regfile = "m8def.dat" $crystal = 8000000 Config Timer0 = Timer , Prescale = 256 'licznik do odmierzania...
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....
emarcus dzięki teraz już gra. ... Mam jeszcze takie pytaniena wejście INT0 podam np sygnał z generatora który podaje przebieg np 4.8KHz to na wyświetlaczu pojawia mi się liczba 11136 zamiast 4800. Co może być nie tak ? Poniżej podaję listing programu. $regfile = "attiny2313.dat" $crystal = 12000000 Portd = &B00100100 Portb = &B00000000 Config...
Witam, Zacząłem zabawę z AVR-em. Oczywiście trzeba uruchomić pomysł w miarę szybko więc BASCOM. Programy "kroczki" testuję na konfiguracji na wyrost, czyli Atmega16 z taktem 16MHz. Popełniłem program testowy który w założeniu miał zliczać impulsy poprzez timer. Źródłem impulsów jest PCF8593, procek obsługuje to przez PortB.0 (Wejście dla timerka). Konfiguracja...
Na Forum udzielał sie użytkownik Mundi1970 i tu od razu pisze dlaczego o Nim wspominam. Napisał kilka eleganckich kodów w Bascom które są napisane w takim stylu, że mogą być załączane do każdego innego programu i nie wymagają dostosowywania. Korzystaja ze zmiennych lokalnych no i nie zagłębiając się w szczegóły jedna funkcja woła drugą.. da się? Da...
Chciałbym mieć tak, że gdy przytrzymam przycisk na tej wartości to zacznie migać, a potem pojedynczymi przyciśnięciami zmieniam wartość co 1000. Ponowne przytrzymanie zapisuje wartość. to już zabawa. Zrób sobie szkielet menu, zaprzągnij jakiś timer, lub pętle for z delayem w obsłudze przycisku, zliczaj czas wciśnięcia, dorzuć kilka zmienych bitowych,...
Witajcie, mam problem z kodem poniżej. Chodzi o ten element: [syntax=basic4gl]Do B = A * 256 B = B + Timer2 B = B / 15625[/syntax] W takim przypadku kompilator wywala mi błąd w wierszu z Timer2 - niezadeklarowana zmienna TIMER2. To nie jest zmienna!! A gdy zmieniam na Timer1 - wszystko jest OK. Ale dla mnie ... to całkowicie bez sensu. Błędy w kompilatorze?...
Czesc! Mam do was pytanie jak przerobic ten program tak aby jednym przyciskiem np na p1.1 wchodzic do programu ktory bedzie wykonywal zliczanie impulsow jednokrotne a drugim zeby ta liczbe zapamietac i wrocic do glownego programu oczywiscie ta liczbe chcialbym gdzies zapamietac zeby moc z niej korzystac w glownym programie bo ja probuje i mi to nie...
A ja zrobiłem obrotomierz w Bascomie na ATtiny 2313, procesor ten ma wbudowany 8 i 16 - bitowy Timer/counter. Konfigurujemy ten układ peryferyjny jako counter, procedurę zliczania w określonej jednostce czasu umieszczamy w podprogramie wyzwalanym przerwaniem zewnętrznym - czyli impulsem z czujnika halla. w innym podprogramie umieszczamy obsługę wyświetlacza...
Zgadzam się z kolegą. Używanie polecenia wait to tak jakbyś strzelał z działa przeciwpancernego do muchy... Przykładowe skonfigurowanie licznika 16-bitowego w BASCOM tak żeby zliczał do 1s przy częstotliwości taktowania 16MHz: ( wszystkie ustawienia konfiguracyjne oraz deklaracja zmiennych ) Config Timer1 = Timer , Prescale = 256 ' konfiguracja licznika...
Dr_DEAD masz może jakiś przykład, bo tak średnio wiem jak to zrobić. Trochę lewy jestem w programowaniu, jadę na przykładach:) Dodano po 1 aha, no i timer 1 będzie wykorzystywany do zliczania czasu otwarcia wtryskiwacza, więc on jest zarezerwowany do odliczania stałej jednostki czasu
bascom zliczanie bascom timer0 zliczanie zliczanie impulsów bascom
ściemniacz oświetlenie schemat reset pojemnika koszt wymiany agregatu
sterownik movera sterownik movera
Wentylator nie działa w piecu Vokera 25 - brak napięcia Ustawienia trybu podtrzymywania w kotle SAS 29 kW ze sterownikiem ST-450 PID