No przecież prosto. Konfigurujesz timer1 do pracy w normalnym ale nie robisz start timer. robisz przerwanie dzialajace na zbocze np. narastające-> Dalej : robisz zmienną flaga w przerwaniu robisz if flaga=1 then start timer1 flaga=0 else stop timer1 w rej od timera masz czas... kopiujesz gdzie Ci tam pasuje flaga=1 zerujesz licznik endif I tyle, oczywiście...
Uruchom przerwanie od Countera (najlepiej od porównania wartości zliczonej z ustawioną) i zmień stan portu w podprogramie obsługi przerwania lub prościej, ale mało elegancko zmień [syntax=basic4gl]If Counter1 = 100 Then ...[/syntax] na [syntax=basic4gl]If Counter1 >= 100 Then ...[/syntax] Nie tak jest to, że w chwili zliczenia setki nasz if może się...
Funkcja WAITMS nie jest odporna na przerwania. Jeśli masz jakieś to każde wystąpienie przerwania w trakcie WAITMS rozjedzie go. Niezależnie od stabilności tej funkcji, a nie ma powodu, żeby nie była powtarzalna jeśli nie jest przerywane wykonanie przerwaniami, to i tak lepsza praktyką będzie wykorzystanie timera.
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. Tylko mniej świadomość że procek będzie odrywany od pracy wieloma nieprzydatnymi impulsami. Ewentualnie po pierwszym impulsie na INT, wyłącz przerwania na czas drgań. Jak teraz masz podłączony kontrakton ? INT podciągnięty pod +5V ? Jak INT wyzwalasz ? W docelowym projekcie koniecznie czujnik kontraktonowy zamień na jakiś halotron albo transoptor...
Nie mam noty przed sobą, ale o ile mnie pamięc nie myli to timery 0 i 2 mają możliwość zrobienia przerwania typu Compare w trybie CTC. Sprawdź to.
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).
64 takty to o połowę krócej. :) W każdym razie, rzeczywiście obsługa tego przerwania w asemblerze powinna się spokojnie zmieścić poniżej 2us. Ewentualnie można jeszcze dodać bramkę AND sterowaną z drugiego timera i załatwić to sprzętowo.
Witam Patrz DEBOUNCE pin_portu , stan , etykieta w Help
No a jak myslisz? W przerwaniu od jakiegoś Timera.
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....
Na moje oko 4046 to najlepsze rozwiązanie. To ja podpowiem że trzeba tylko minimalnie zmodyfikować mój program. Tak żeby drugi Timer generował tylko tyle impulsów po uruchomieniu ile wynosi mnożnik. A w tym pierwszym Timerze który mierzy okres ma być inicjalizacja tego drugiego Timera i uruchamianie go. Dzięki temu częstotliwość tego drugiego będzie...
Prosty program nawet w BASCOMie. Podajemy impuls z PLC na pin startujemy timer i liczymy czas. Jest impuls reset timera nie ma impulsu - reset PLC Start odliczania 60 sekund. I tak w koło. Dziesięć linijek kodu.
Akurat ważniejszy jest mały spadek napięcia, żeby stan niski pozostawał niskim również za diodą. Zrobiłem szkic pokazujący o co chodzi w tym różniczkowaniu i ANDowaniu: http://obrazki.elektroda.pl/7732349900_1... Przy zwykłym różniczkowaniu widać, że brakuje szpilki wskazującej początek impulsu pierwszego kanału. Można ją odtworzyć...
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...
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
Prawie wszystko jest nie tak - oczekiwanie w przerwaniu, brak eliminacji drgań. To nie tak się robi - potrzebujesz przerwania timera zgłaszanego ze stałą częstotliwością, np. 100 Hz, i w nim robisz wszystko - sprawdzasz stan przycisku i odmierzasz czasy impulsów.
Jeszcze raz od nowa. Tym razem postaraj się bardziej. Ustaw wreszcie te przerwania INTx na jakieś zbocze, a nie poziom. Co z tego, że ustawiłeś Timer1 jako licznik jak nie ma to związku z resztą kodu. Timer sobie działa,a ja się pytam - i co z tego ? gdzie obsługa tego timera?
Nie możesz wykorzystać timera do zliczania impulsów?
Tyle że kolega chciał w Bascomie :). Polecam help do bascoma. Konfigurujesz timer, uruchamiasz go i gdy zliczy pewną ilość impulsów wywołuje przerwanie.
robisz sobie zmienna 1bajtową i na przerwaniu od timera (kiedy sie przepełni) inkrementujesz ją( zwiekszasz o 1). Wtedy łaczna ilosc zliczonych impulsów wyniesie zmienna1*256+timer. Piszesz sobie najpierw procedurke ktora wyswietli pojedyncza cyfre, nastepnie piszesz procedurke ktora wyswietli całą cztero cyfrową liczbe. Wyswietlanie robisz w petli...
Zauważ, że przy zliczaniu impulsów w cyklu pomiarowym np. 1s można zliczyć max 15000/60 = 250 impulsów z enkodera. Czas pomiędzy dwoma impulsami to min. 4ms, a więc przy kwarcu 1MHz timer odmierzy minimum 4000 taktów. Błąd pomiaru w każdym przypadku to średnio 1/2 impulsu - w przypadku 1) mamy przy maksymalnej prędkości błąd względny 0,2%, który rośnie...
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.
Możesz użyć timera aby odliczyć sobie konkretny odcinek czasu.
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ą.
Może odpal jakiś Timer żeby generował przerwanie bardzo często. Powiedzmy co 10us. I w przerwaniu sprawdzaj czy pin ma stan 0 czy 1. Jak 1 to inkrementujesz jakaś zmienną. Jak zmieni się na 0 to zwracasz wynik i zerujesz tą zmienną. Oczywiście w tym samym przerwaniu sprawdzaj tak samo drugi pin. Niestety wymaga to kodu obsługi przerwania w assemblerze...
Osobiście wykorzystał bym nóżkę np. INT0. Wtedy wszystko dzieje się w przerwaniu, po za tym w zmiennej Counter1 masz twój wynik. Coś skąpą masz tę konfigurację timera :P
Tak, będziesz mógł. Jeśli chcesz liczyć w czasie (a nie chcesz) to mierzony przebieg doprowadzasz do wejścia zegarowego timera, w efekcie każdy impuls powoduje zwiększenie wartości licznika o jeden. Skoro chcesz mierzyć szerokość impulsu to wykorzystujesz wejście ICP timera - timer taktujesz z maksymalną częstotliwością, z kolei impulsy z obrotomierza...
Zliczaj przerwania timera co odpowiedni odstęp czasu. Po 59 zliczeniu przerwij generowanie i wyzeruj timer. pozdrawiam
Z timerami to się jeszcze nie bawiłem.
Fusebity nie mają tutaj nic do rzeczy. Timer1 oczywiście można skonfigurować w trybie CTC. A przykład Ci już chyba podawałem: [syntax=basic4gl]OCR1A = 65200 'Wartosc porownania TCCR1B = 0b00001001 'Tryb CTC (bit WGM12) oraz start Timera (bit CS10, czyli ustawienie preskalera na 1 co jest rownoznaczne z uruchomieniem Timera)[/syntax]
Udało mi się odpalić program z książki Pana Wiązani, ale tam timet odmierza 1s Jak to przeliczyć? Jest jakiś na to wzór? Rzeczywiście musiało się 'udac odpalić' bo ten program nie jest pozbawiony błędów (!) \ A jak zrobić żeby odmierzał np 10 sekund? Zmiana preskalera wydłużyła max do 2sekund czas. Aby timer1 odmierzył inne/dowolne interwały czasu,...
To nie Bascom jest przyczyną tylko źle napisany program ;). 1. odczyt timera1 16bit odbywa się po przez rejestr pomocniczy TEMP, ten rejestr jest też używany przez inne procedury i funkcje i jeśli jest użyty to właśnie niszczona jest wartość High timer1 bo ona tam jest wpisana gdy używasz komendy. wpisując tak timer1 do tablicy możesz gubić High timer1....
Program wyświetla to co chcesz ale w symulatorze to trwa bardzo bardzo długo. i Teraz ja licznik odlicza 100 impulsów to musisz pozmieniać obliczenia. Podczas symulacji w warunkach wpisz mniejsze wartości to się szybciej doczekasz tego wyświetlenia na lcd albo zwiększ zmienne ręcznie podczas symulacji. sygnał 125khz do generowania PWM 1,25khz. Nie rozumiem?...
Dawno Bascoma nie używałem ale to będzie coś takiego: On int0 czas 'przerwanie zewnetrze (wejście impulsów) do czestotliwosc=1/czas 'obliczenie czestotliwosci z czasu pomiedzy impulasmi loop czas: stop timer0 'zatrzymaj timer czas=timer0 'odczyt z timera timer0=0 'wyzerowanie timera start timer0 'ponowne uruchomienie timera return Oczywiście...
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...
Czy to poprawny zapis do uśredienia wyniku z 60 pomiarów kodu co wyżej podawałem (*) pytam z czystej ciekawości czy to poprawna forma To nie jest 'uśrednienie',- to jest zbyteczne rozszerzenie rachunku wydajności, które jest równoznaczne z pomiarem impulsów w czasie 60 sec. Inaczej, zamiast odczytywać zawartość Countera1 po zliczeniu 250 4-milisekundowych...
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...
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.
Witam, Polecenie SOUND port , il_impulsów , czas_impulsu To mi nie pomoże. Jako argument chcę podać potrzebną częstotliwość (liczba), a nie ilość impulsów i czas impulsu... Jeżeli znasz częstotliwość to nie problem określić ilość impulsów i czas trwania, ale ta funkcja jest mało precyzyjna. Lepiej wykożystać do tego Timera: $crystal = 4000000 Pwm1a...
Dałem kondesator i jest lepiej z tym że zawartość timera nie zawsze jest zwiększana co jeden szczególnie gdy z większą częstotliwością podaje impulsy.
Witam Pisalem kiedys program do sterowania robotem (manipulatorem ) w bascomie. Zliczal on miedzy innymi impulsy z 3 enkoderow. i wszystko ladnie chodzilo: Fragment kody ktory zlicza impulsy z 3 enkoderow: //enkoder 1 Enk1_a Alias Pinb.0 Enk1_b Alias Pinb.1 //enkoder 2 Enk2_a Alias Pinb.2 Enk2_b Alias Pinb.3 //enkoder 3 Enk3_a Alias Pinb.4 Enk3_b Alias...
Config Timer0 = Timer , Prescale = 32 Enable Interrupts Enable Int0 On Int0 Przerwanie1 Nosave Cls 'tutaj wysyłasz impuls pierwszy start timer0 Do : Loop Przerwanie1: stop timer0 'tutaj co ci sie podoba lcd "odleglosc:" ; wynik 'co tam jeszcze chcesz 'wysyłasz impuls start timer0 return End
Chcę napisac własny program z wykorzystaniem Timerów. Na początek proszę o wytłumaczenie dlaczego w poniższym programie: 1. wykorzystano podzial częstotliwości zegara (po preskalerze 256) 250/125 zamiast wykonac jedno dzialanie? 2. uzyto wartość początkową Timera0 = 250 przed Petlą do Loop End . O ile wyjaśnienie podane przez Tomq jest błędne(!) Load...
Z listingu programu nie mozna doszukac sie jaka metode przyjmujesz w pomiarze RPM. Ja jakoś się doszukałem. A nie, sory. Nawet doszukiwać się nie musiałem. Liczy okres pomiędzy impulsami. Ale przerwanie to powinno wyglądać tak: Przerwanie: Zmienna = Timer1 Timer1 = 0 Wynik = 7500000 / Zmienna Return Preskaler Timera ustaw na 64. A: Capture Edge...
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...
"Tą" liczbę masz zapisaną w zmiennej Liczba_przerwan_tim0 a nie w ośmiobitowym (czego się chyba obawiałeś) rejestrze timera0 - więc nie ma problemu.
Nie za wiele swojego programu pokazałeś, więc trudno powiedzieć gdzie masz błąd. Masz przykład jak powinno wyglądać przerwanie.[syntax=basic4gl]Config Timer0 = Timer , Prescale = 1024 Enable Interrupts Enable Timer0 Start Timer0 On Timer0 Timer_przerwanie Do ........ Loop Timer_przerwanie: ............ Return [/syntax]
A na początku dyrektywe $regfile = "M8535def.dat" wrzucił? Potrzebna tam na pewno jest. A bascom pewnie coś chrzani w timerach, żadna nowość. Bascom powinien pozostać tylko dla rodziny 90S (stare AVR) bo z nowszymi sobie często nie radzi...
opóźnienie w czasie nie jest zbyt istotne niestety ja dopiero zaczynam przygodę z uP , jestem na etapie ze gotowy kod jak już go zrozumie to jestem w stanie odpowiednio przerobić może pisze głupoty , ale można by uruchamiać timer generujący impulsy w czasie pomiędzy impulsami wejściowymi , mając wartość timera pomiędzy impulsami wejściowymi, generować...
Metoda z oscyloskopem - na początku pętli puść impuls na jakieś nieużywane wyprowadzenie procka, zapnij się oscyloskopem na to wyprowadzenie i mierz czas pomiędzy impulsami :)
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?
Wystarczy jedno wejście I NTx , które będzie wykrywało ten impuls. Ale jeśli to będzie impuls "z ręki" jakiś klawisz to bez sensu - ze względu na drgania styków a potrzebny minimalny czas np 1ms. Jeśli to będzie impuls z jakiegoś wyjścia cyfrowego to ok. Założenia: - wykorzystamy tylko jedno wejście INTx - wykorzystamy tylko jeden Timer sprzętowy Przygotować...
więc pisałem dlatego o czujniku Halla:) Zakładając ze wieje dość ostro koło wykona 5 obrotów czyli 5x20 impulsów a czujnik Halla zmieni tylko czas między stanami. Mając czas i obwód koła m/s łatwo obliczyć. Zbocza uruchomią timer i zatrzymają go. Przynajmniej tak mi się wydaje.
Ciekawe jest to widać w twoim profilu (Pomógł: 79927) :P ale do rzeczy. Według mnie coś takiego można zrealizować w następujący sposób: - konfigurujesz przerwanie zewnętrzne żeby było wyzwalane przerwanie zboczem opadającym, rosnącym etc. - w tym przerwaniu uruchamiasz timer który zlicza sobie impulsy - jeżeli zliczy określoną ilość impulsów to wykonujesz...
Podłącz diodę optotriaka pod wyjście OCx procesora, dzięki temu impuls wyzwalający będziesz mógł generować sprzętowo za pomocą timera.
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.
Jeżeli chcesz precyzyjnie odmierzać / wyznaczać częstotliwość powinieneś korzystać z przerwań Timera. Zależy też jakie mają być te impulsy, jakie wypełnienie etc.
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...
Jeżeli sprawdzasz przycisk podłączony do masy, to czemu przerwanie Timer ma być wyzwalane zboczem rosnącym ? Config Timer0 = Counter , Edge = Rising
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...
Impulsy pobieram przy liczniku z kabelka który wg "Sam naprawiam ..." pochodzi od czujnika drogi umieszczonego przy skrzyni. Do zliczania impulsów wykorzystałem timer0 (oczywiście znalazłem przykład), który liczył i podbijał mi zmienną. Zrobiłem 10 km i sprawdziłem wynik. Było 5150 więc podzieliłem aby zamienić na m i wyszło 5,15 Nic mi się nie zgadza...
Halogeny też będą zabronione ?? a co do projektu, właśnie zakończyłem projekt na uczelnie gdzie wykorzystuję sterowanie halogenem. jest to zrealizowane w ten sposób, że mam 100 poziomów jasności (0-100%). Sterowanie fazowe oczywiście i triak załączany impulsem. Logicznie, program działa tak: 1) system detekcji zera (transoptor) wykrywa moment w którym...
Niestety nie posiadam przykładu włączania i wyłączania Timera. Napisz na jakim mikrokontrolerze pracujesz, to może ktoś siedzący w Bascomie pomoże.
masz cos tak jak kursy do bascoma, tam masz jak zrobic licznik na timerze. Pozatym masz dobra ksiazke i helpa
Szybko zajrzałem do noty PCF8583 i tam jest napisane, ze kiedy nie używasz funkcji alarmu to stan na pinie INT zmienia się na przeciwny co 500ms. Tak wiec impuls jest na tyle długi ze spokojnie można go traktować jak zwykły przycisk naciskany co sekundę. [syntax=vbnet]$regfile = "m32def.dat" $Crystal=8000000 $hwstack = 64 $swstack=32 $framesize = 128...
Witam. Config Timer1 = Timer , Prescale = 1 Dim T As Word Do Load Timer1 , 0 Start Timer1 ' tu coś program robi Stop Timer1 T = Timer1 Loop Zmiennej T zostanie przypisana zawartość impulsów które zostaną zliczone przez Timer1. Przykładowo jeśli pogonisz uC z rezonatora 10MHz i Timer zliczy 1 impuls to będziesz miał 0.1us Pozdrawiam
Moim zdaniem koncepcja powinna być taka: 1. Obsługa przetwornika analog-cyfra. Na początek dobrze żebyś umiał dobrze zmierzyć liczbę impulsów. Nie wiem dokładnie jaka jest specyfika Twojego sygnału, jaką amplitudę mają owe szumy, skąd się biorą i czy nie warto by ich po prostu potraktować filtrem dolnoprzepustowym, a jeśli mają odpowiednio niską amplitudę...
Witam, analizator zobaczył tylko ja specjalnie to zwęziłem żeby było widać zarys całego przebiegu,. Teraz tez już wiem, że pomysł stosowania przerzutnika D jest raczej bezcelowy. Bo i tak w programie trzeba sprawdzać stan na pinie kierunku. Oczywiście najlepszym rozwiązaniem jest zastosowanie bramek z histerezą. Jest jednak jeszcze druga kwestia, a...
Bardzo dziekuje za zainteresowanie ale to nie ma być prędkościomierz tylko licznik najprostrzy w swiecie licznik który ma czekać na impuls który zliczy .Zwarłem pinb.0 do masy zgodnie z sugestia i tez nic licznik dalej liczy (niewiadomo co). Może nie robic tego na timer-ach? .
Dzięki... i rozumiem, że Counter0 liczy do 255, ... W trybie , który przedstawiłem - tak , ale w innych trybach, gdzie TOP może stanowić rejestr OCR0A , jest inaczej. a wypełnienie przebiegu wynosi Pwm0a/255? Dokładnie rzecz ujmując Pwm0a/256 Z jaką częstotliwością działa PWM (domyślnie chyba 500kHz)? Da się ją regulować? Mówiąc ogólnie - częstotliwość...
Zamiast polecenia "wait 1" zatrudnij drugi licznik pracujący w trybie "timer" do odmierzenia dokładnej wartości czasu, wtedy będziesz miał pewność że impulsy które zliczyłeś na pewno przypadały na 1s. Pozdrawiam
Chwile mnie nie było :D Napisałbym to inaczej, ale wracając do pytania z pierwszego postu . Jeśli chcesz by procesor zawsze był tak samo zajęty to każ mu w tych innych Case`ach także nadawać Pulseout tylko na pin Reset. Bascom to przełknie bo ten pin może pracować jako normalny I/O ale jak jest resetem to nic mu się nie stanie jak napiszesz Pulseout...
Jest możliwe aby przy kwarcu 16Mghz i prescaler1 Timer1wysyłał na portd.0 impulsy o szerokości 100us ? Timer1 nie wyśle żadnych impulsów na pin PD0. Można natomiast tak ustawić timer, by generował przerwanie co określony czas, a w nim odpowiednio sterować pinem PD0. I pytanie: Od kiedy programujesz w BASCOM?
W twoim programie wg BASCOM-AVR są błędy: Error : 42 Line : 31 Numeric parameter expected Error : 42 Line : 32 Numeric parameter expected Error : 124 Line : 32 LOOP expected Popraw program. Przepraszam za wcześniejsze błędy. Poniżej prezentuję poprawiony kod: [syntax=text] $regfile = "m8def.dat" $crystal = 16000000 $hwstack = 32 $swstack...
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...
Mam jeszcze jedno pytanie Jak chciał bym zmierzyć prędkość impulsów np: w m/s , to muszę użyć Timera - ale jak... pomożecie? Nie mierzy się prędkości impulsów. Impulsy nie poruszają się, lecz trwają; mozesz zatem zmierzyc czas trwania takiego impulsu (co w tym przypadku jest bez większego znaczenia), oraz częstotliwośc ich występowania (F); gdzie F...
Witam. Mam program, w którym stany 4 wyjść zmieniają się pod wpływem impulsów na jednym z wejść (Select Case) Teraz chodzi mi o to, żeby po zaniku impulsów (dłuższym stanie 0 na wejściu) wszystkie wyjścia przeszły w stan 0, RESET. Pewnie trzeba użyć TIMER, ale nie umiem. Pozdrawiam
Nijak z żadnego kodu nie mogę się doczytać na chłopski rozum kiedy on mierzy czas od Rising do Rising. Nie używaj więc chłopskiego rozumu - użyj własny! Wyjaśnienie powinno być zbędne bo jest bardzo trywialne; - obracając wiatrakiem, w pewnym momencie wbudowany tam hall switch daje impuls na INT0, co wtedy robisz w programie? - odsyłasz go do etykiety...
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...
Liczenie impulsów samo w sobie jest bezsensowne.. jak już to liczy sie impulsy przez określony czas albo podczas jakiegoś warunku itp, możliwości jest tak dużo że bascom niezostał w to wyposażony (bynajmniej ja tyle wiem). impulsy najłatwiej można zliczać za pomocą zewnętrznego przerwania, przez czas działania timera, timer uruhomić, uruhomić przerwanie,...
Witam! Mam pytania: jak w praktyce zastosowac timery? Jak one działają? W którą stronę zliczają? Jak zczytac ich stan? Do ilu mogą zliczać? chciałbym, aby ktoś wytłumaczył mi to na przykładzie Atmegi8 i języka Bascom. Wiem już że: -Timery zliczają impulsy które same generują wg. prescalera -Prescaler to taki dzielnik, który bierze jakąś część taktowania...
A jak trwa ci sygnał na wejsciu 1 i zacznie się na wejsciu 2, to jak jednym timerem zmierzysz dwa czasy, zerując timer po każdym impulsie?
Witam. Proszę Kolegów o podpowiedź jak z impulsatora sterować wyjściami : jeśli kręcę w prawo załączony np. portc.1 a w lewo portc.2. Port powinien być w stanie załączenia tylko w momencie kręcenia w danym kierunku , po zaniku ruchu wyjście ma być wyłączone. Oto część kodu wyzwalana przerwaniem: .......... (oczywiście "wait" odpada). Skonfiguruj w...
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...
Spróbuj zrobić tak Co4ms: 'procedura obsługi przerwania od Timera T/C0 wykonywana co 4ms Timer0 = 6 'załaduj do Timera0, żeby zliczył 250 (=256-6) impulsów Incr Licznik If Licznik = 6 Then 'zmienna Licznik liczy do 6 aby Licznik = 0 'sprawdzanie stanu przycisku następowało If Pind.0 = 0 Then 'co ok.24ms If Pomoc = 1 Then 'jeśli zmienna Pomoc...
Może: Licz: If Co_robic = 0 Then 'Odliczanie przerwy Incr Licz_przerwe If Licz_przerwe > 1000 then Licz_przerwe = 0 Co_robic = 1 End If Else Incr Licz_impulsy If Licz_impulsy > 4 Then 'Odliczanie okresu przebiegu (4 - okres = czas 4 przerwań Timera) Toggle PortD.4 Incr Licz_przerwe 'Odliczanie ilości impulsów (10/2 = 5 impuslów)...
ATmega8 posiada trzy liczniki/timery, z których dwa (T0 i T1) mają możliwość zliczania zewnętrznych impulsów, dołączanych do pinów 6 i 11. Wg atmelowskiego pdf'a częstotliwość zliczanych impulsów nie może być wyższa niż połowa częstotliwości zegara ATmegi. Dla bezpieczeństwa i zapewnienia prawidłowej synchronizacji podają wartość fclk/2.5 - co w Twoim...
Masz 8.5ms na obrót wału. Nawet w Bascomie jest to długi czas. A ile impulsów z czujnika indukcyjnego albo z foto jest na obrót? Ja bym zrobił jeden timer np. co 1ms a w pętli głównej polling czyli odpytywanie pinów. Jesli tych impulsów z czujników nie jest za dużo.
Gdy wpiszesz 65535, będziesz miał przepełnienie co 1 takt, dla 65534 co 2 takty. Resztę sam policz. hyhyhy no rzeczywiście jeszcze prostsze wytłumaczenie, no prościej już się nie da chyba ;) chcesz odliczyć 1 impuls to: 65536 - 1 --> wpisujesz 65535 chcesz odliczyć 2 impulsy to: 65536 - 2 --> wpisujesz 65534 a jak chcesz odliczyć 15625 impulsów to:...
Witam. W przerwaniu wpisałeś : Timer1 = 131 do zliczenia zostało 65536 - 131 = 65405 Przy wpisaniu do Timer0 tej samej wartości do zliczenia pozostaje : 256 - 131 = 125 impulsów. Myślę, że dobrze zrozumiałem Twój post.
Potrzebuje zmierzyć samo wypełnienie impulsów nie wiem jak za to się zabrać. Potrzebuje badać sygnał idący na serwo modelarskie. By wiedzieć na 3 diodach jakie jest jego położenie. Proszę o jaką kolwiek pomoc. Oczywiście nie chodzi mi tu o zrób za mnie... ale nie wiem od czego zacząć. Rozumowanie moje jest takie przychodzi impuls odpala się timer. Liczy...
Te impulsy wejściowe i wyjście ma być na tym samym pinie ? PD.0? Jeśli nie to ustawiamy przerwanie na INT0 i w obsłudze przerwania zwiększamy zmienną. Jeśli zmienna osiągnie dziesięć ustawiamy wyjscie na stan wysoki. Jednocześnie timer zlicza czas pomiędzy impulsami i jeśeli jest większy niż 60 sekund ustawia wyjście na stan niski. Podumowując: Przerwanie...
Myślałem wstępnie, żeby wykorzystać przerwania zewnętrzne i mierzyć czasy impulsów paczki za pomocą timera? EDIT, mam na myśli przerwanie ICP od timera1, ale jeszcze nie wiem jak to ugryźć ;)
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...
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)?
na symulatorze nie masz co patrzeć. One są do niczego. Ok sprawdzę zaraz. Dodano po 18 ok sprawdziłem. Działa bez problemu. Sprawdzałem na płycie testowej a sygnał brałem z Timera2 skonfigurowanego jako PWM. Zmieniałem różnie Prescaler od 1 do 1024 i działało bez problemu.
ok ja podpowiem co to jest :D COnfig timer0 = timer 'ustaw timer jako licznik impulsów wewn. zegara procesora Mode=1 ' tryb pracy czujnika, to jest ladnie opisane w datasheet do procesora, 1 w tym przypadku oznacza normalna prace timera czyli zlicza impulsy gate = internal ' najprawdopodobniej chodzi tu o taktowanie licznika ale nie pamietam dokladnie...
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
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...
impuls bascom timer dający impuls timer przerwa bascom
pinnacle instrukcja xprog instrukcja błędy pralka candy migające diody
uruchamianie przez żarówkę jakie kolumny aktywne
Błąd E3 w hulajnodze Frugal Alpha ex - co oznacza? Podłączenie taśmy LED 4-pin 7,2W/M IP20 12VDC do sterownika WiFi z muzyką