Witaj. Zamiast zewnętrznego PCF możesz wykorzystać timer2 z zewnętrznym kwarcem zegarkowym 32,768kHz. Dokładność ta sama, a koszty mniejsze.
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...
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.
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.
Algorytm w skrócie: 1. pętla czekająca na mignięcie 2. jeśli pojawił się sygnał, wyzeruj licznik, wykonaj pętlę zliczającą czas 3. jeśli czas = 0,5 sekundy to zwiększ licznik, wróć do pętli 4. jeśli czas = 3 sekundy to wartość licznika zapisz jako pierwszą cyfrę kodu błędu, wyzeruj licznik i wróć do pętli 5. jeśli czas = 6 sekund to znaczy że jest koniec...
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ą.
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).
Pomysłu na teraz nie mam jak to rozwiązać, ale problem zapewne leży w tym, że kiedy przekaźnik = 1 to zmienna jest zwiększana z każdym przejściem pętli..stąd 2 potem 7 itp. Po prostu przez czas trwania stanu 1 na zmiennej przekaźnik, liczba się powiększa. Ciebie interesuje jednokrotne powiększenie. Czyli Przekaźnik = 1 i tylko raz incr zmienna. Trzeba...
Witam ! Zmień zapis na ten: Stan_enk = Encoder(pind.2 , Pind.3 , Lewo , Prawo , 0)
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...
[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
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...
............... przy prescale = 1 częstotliwość PWM równa się częstotliwości krwarcu czyli 16MHz (trochę za dużo :)). .......... Co takiego? Timer5 skonfigurowany u ciebie do pracy w trybie1 generuje falę o częstotliwości 31 kHz (dokładniej 31250Hz), zgodnie z wzorem : http://obrazki.elektroda.pl/9569063700_1... gdzie TOP = "fixed value...
No to coś napisałem na AVRStudio 4.05.0.181 (na kolanie) :) . Co prawda na ATmega8 , ale przeportowanie to pestka(niektóre wektory przerwań do skasowania/zmiany nazwy i "2313def.inc" zamiast "m8def.inc" , prędkość kwarcu Xtal też do poprawki...), raczej tu chyba nie ma rozkazów niezaimplementowanych w AT90S2313 . ;included in next file - line ".device...
Muszę użyć układ dwóch timerów ponieważ w docelowym układzie zakres czasowy Timera1 będzie za mały. Czy procesor zliczy na T1 impulsy generowane na OC2 ? Obawiam się sytuacji, że przy wspólnym CLK gdzieś mi się zbocza miną pomiędzy OC2 a T1 i układ nie zatrybi... Oczywiście że zbocza te mogą się minąć, ale to jest bez znaczenia. Podczas synchronizacji...
A co to za kwiatek: Lcd Wynik2 = Wynik + Wynik1 Powinno być: Wynik2 = Wynik + Wynik1 Lcd Wynik2 A jeszcze zmienna Wynik2 jest niepotrzebna i może być: Wynik = Wynik + Wynik1 Lcd Wynik
wstawić dodatkową i uzależnić zliczanie od niej
Wystarczy 1
Najpierw dajesz Config INT0=Falling Wprowadzasz zmienną opisującą wybrane zbocze wyzwalające przerwanie (Edge_) i w procedurze obsługi tego przerwania: If Edge_ =0 Then Start Timer1 Config INT0=Rising Else Stop Timer1 Config INT0=Falling End If Niektóre AVR'y umożliwiają konfigurację typu Config INT0= Change Wtedy przerwanie wywoływane będzie po stwierdzeniu...
Ja już chyba na to odpisywałem, albo deja vu:) Nie Timer nie liczy stanów a zbocza... tak można na takie i takie zbocze liczyć... Ty zapewne chesz liczyć na zbocze opadające...
Metoda jest jak najbardziej poprawna i w dodatku szybka.
Witam, piszę sobie program na A128 i nie umiem sobie poradzić z jednym problemem ... wykorzystuję instrukcję encoder jaka jest w bascomie do zliczania zmiennej LONG + - i jednocześnie dokonuję pomiaru napięcia V kod programu [syntax=basic4gl]'----------------------... 'name : BG30dB_LCD.bas 'copyright...
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...
Witam, nie umie sobie poradzić zliczaniem zmiennej w pętli for od największej do najmniejszej zliczanie w górę tak sobie poradziłem [syntax=basic4gl] If Pind.5 = 0 Then : Waitms 30 Locate 1 , 7 : Lcd "Scan" : For Freq = Freq To Bandup Step Krok : If Krok = 1 Then Waitms 50 'Waitms 100 : If Krok = 10 Then Waitms 100 ' ' If Krok = 100 Then Waitms 150...
Witam ! Ustaw odpowiednio fuse bity, bo ATtiny2313 jest fabrycznie ustawiony na wewnętrzny generator 1MHz. Pozdrawiam. Stefan amator
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...
Skoro sygnał ma być podawany na INT1 (PD3) to chyba tu jest problem bo podłączony jest tu wyświetlacz No ale jak to? Mówisz tak ja by wyświetlacz podłączył tam się sam. A przecież to Ty go chyba podłączyłeś. Wina więc nie w wyświetlaczu a w tym kto go podłącza :D No i druga sprawa. Nie bardzo rozumiem dlaczego chcesz podłączać sygnał do INT1, skoro...
Zobacz to: Dim Przycisk As Word , Czas As Integer , Czas_zamka As Integer Czas_zamka = 0 Czas = 0 Do Debounce Pinb.1 , 0 , Licz , Sub If Przycisk > 0 Then Incr Czas If Czas = 300 Then Przycisk = 0 Czas = 0 End If If Przycisk = 3 Then Portb.2 = 1 If Portb.2 = 1 Then Incr Czas_zamka If Czas_zamka = 300 Then Portb.2 = 0 Czas_zamka = 0 End If Waitms...
po pierwsze źle obsługujesz przyciski - te podłącza się tak by zwierały do masy i załącza się wewnętrzne podciąganie pinów - od tego zacznij po drugie w obu przypadkach dodajesz liczbę po trzecie skorzystaj z timerów do eliminowania drgań styków, lub, jeśli nie jesteś na tym poziomie to dodaj odpowiednio funkcje wait lub poczytaj o bascomowej funkcji...
Witam, mam mały problem tzn. nie wiem dlaczego w jednym warunku INCR zlicza w nieskończoność a w drugim warunku tylko jak klikam w klawisz [syntax=basic4gl] do Key_readmemory = Bank_memory + 1 If Key1 = 0 Then Mkey = 1 Idx = 0 Readmemory = 1 : Writememory = 0 Incr M If M = 255 Then Readmemory = 0 End If Gosub Key_memory : Gosub Freq_update : Gosub Wyswietlacz...
Zliczam ilość impulsów z przycisku podłączonego do masy. Dokładność sobie później poprawię, na początek nic mi nie zlicza i nie wiem w czym jest problem. Pozdrawiam Sławek
wprowadź w programie zmienną bit która po wejsciu do przerwania uzależni zliczanie od swej wartosci. inaczej: dodaj warunek który musi być spełniony aby zliczyć nacisniecia if guzik nacisniety and zmienna = 0 then incr ilosc nacisniec : zmienna=1: end if dalej w programie: if guzik puszczony and zmienna = 1 then zmienna =0 to proste trzeba tylko pomyslec...
Może być Timer0 inaczej skonfigórowany np: 8000000/256 = 31250Hz Load Timer0, 250 'zapis w Bascom ' TCNT0 = 6 'doliczy 250 31250/250 = 125Hz = 8ms ' występuje przerwanie Timer0 jest ośmio bitowy, więc może zliczyć od 0 do 255 czyli 256 impulsów. W przerwaniu wpisujesz to co ma być wykonane. 256 - prescaler 250 - dodatkowe zliczanie wyprzedził mnie bart-projects
Witam. Chciałem zrobić przepływomierz, ale nie wiem jak się za to zabrać. Przepływomierz na litr podaje 648 impulsów. Jak napisać kod bascom, żeby zliczał litry. Proszę o podpowiedź jak zacząć.
No i słusznie. C.6 pewnie też Ci nie działa. Jak podajesz taką deklaracje to do pinów C.6 i C.7 należy podłączyć kwarc zegarkowy i zliczanie czasu masz obsługiwane automatycznie. Poczytaj HEPLa.
Chodzi mi jak napisać kod w bascomie do procka Atmega8 żeby zliczał takty zegara podczas występowania stanu niskiego.
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,...
Tomaszek_ A co ma timer do tego? Zmienna A zwiększa się o 1 podczas przerwania od pinu INT0. Też nie jestem za zwalaniem winy na Bascom. Nigdy mi się nie zdarzyło żeby Bascom namieszał coś.
brakuje Ci jeszcze jednej malutkiej instrukcji [syntax=basic4gl]Set Portc.5[/syntax] u mnie zawsze to działa
Dziękuję za pomoc już doszedłem jak to zrobić.
Widzę, że chyba przesiadłeś się z asemblera na bascoma, postaram się pomóc, napisz tylko do czego Ci ten program, co ma robić poza zliczaniem w dół i w górę. A ja już zbuduję układ na stykówce :P Edit: Rozumiem że wyś7seg masz ze wspólną Anodą?
Czesc.! Mam problem chce w Bascom napisac program.ale nie wienm jak. Portc.0=input Portc.1=output Portc.2=output Na Porcie c.0 jest przycisk ,na dwuch kolejnych portach Portc.1 i Portc.2 mam wyjscia Led. teraz : Port c.0 jest aktywny jeden z portow C.1 jest tez aktywny. Na porcie wejsciowym sa liczone impulsy jezeli ich bylo np: 100 to liczenie i wyjscie...
Po pierwsze pochwal się jakimś listingiem z tego co napisałeś i nie działa , gdzieś mi się już przewinął przed oczami taki projekt na elektrodzie i jak pamiętam autor również próbował wymusić napisanie programu . Między szukaniem pomocy a wyręczaniem się innymi jest cienka granica . Tym bardziej zastanawia mnie to ,że cały układ można przetestować na...
Popełniłem coś takiego, nie wiem czy w 100% poprawnie ale działa :) [syntax=basic4gl]Zegar: If S5 = 0 Then Toggle Startstop End If If Startstop = 1 Then If Ileminut <> 0 Or Ilesekund <> 0 Then 'pokaz babelki Locate 2 , 8 Lcd Chr(5) Locate 1 , 9 Lcd " Pracuje "; Gosub Sprawdztemp If Ilesekund >= 0 Then Ilesekund = Ilesekund - 1 End If...
Noise canceller raczej nie pomoże. Można zbudować jakiś prosty filtr RC, albo filtr programowy, ale wtedy i zliczanie musi być programowe. Swoją drogą, po co wewnętrzny pull-up, jeśli masz zewnętrzny pull-down?
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...
.... 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...
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...
marco47 - przepraszam, nie zauważyłem. marek19951 - proste if-then nie załatwi problemu. Jeżeli masz zapał, a widzę , że masz, zacznij od procedury obsługi klawiatury , która nie powoduje opóźnień poprzez martwe pętle ( czyli m.in wait, debounce, bitwait itp). Ja to zrobiłem na przerwaniu programowym z timer1, które odliczało mi okresy 10 ms w połączeniu...
A gdzie instrukcja CONFIG TIMER1 = COUNTER?
A na jakim to jest procku? ATMEGA czy ATTINY? Dużo zależy od czystości sygnału i jego amplitudy. Zliczanie można zrealizować na przerwaniu INT0 ale wczśniej dobrze aby sygnał przepuścić przez komparator aby ukształtować ładny prostokąc, można też wykorzystać wbudowany w procek komparator analogowy.
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.
W trybie 1 jest 16-bitowy, liczy od zadanej mu wartości do 65536, następuje przerwanie od przepełnienia licznika, coś wtedy może zrobić w obsłudze tego przerwania i ponownie zaczyna zliczać od zadanej mu wartości lub od zera jak mu nie zadasz.
A moż emi ktos pokazac jakiś przykład jak powinien wyglądać taki program w uC (bascom)że by zliczało ilość razy kiedy przycisk pod PB1 zosatł naciśnięty a potem po podłaczeniu do komputera że by to wyświetlił w programie; jak kod tego programu tej części w DELPHI powinien wyglądać
A gdzie masz Config INTx ? Jakiego rzędu czasu się spodziewasz ? Po co Ci Start Timer3 skoro Prescale = 1 automatycznie uruchamia zliczanie ?
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ś?
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.
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 :)
Wypełnienie jest 50/50 a więc takie samo...impulsy idą z wiatraka
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...
Jeśli postawisz przy schodach człowieka, który będzie instruował wchodzących, że mają nogi stawiać oddzielnie, nie skakać i nie podnosić za wysoko oraz nie będzie wpuszczał pań w spódnicach do kostek, to może nawet zadziała. A tak realnie - zliczanie jest skazane na niepowodzenie, chyba że zainstalujesz kołowrotek filtrujący osoby i będziesz wykrywał...
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...
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...
Jreżeli to mają być tylko komunikaty o jakich piszesz to najprościej wykorzystać transmisję RC5 Procek nadawczy robisz tabele z komunikatami i zbierasz dane Wartości przypisujesz do funkcji command i wysyłasz w odboirniku też masz tabele i odczytujesz kod z tablicy zostaje wyświetlić to na lcd Transmisja na taką odległość powinna zadziałać Kilka diod...
Skróć czykl zliczania Timera.
Nie możesz wykorzystać timera do zliczania impulsów?
zaprzyjaznij sie z datasheetem i znajdz sobie w nim rozdzial p.t. Input Capture gotowy kod mozesz napisac na podstawie tego co tam znajdziesz, powodzenia. 0x41 0x56 0x45!!
Jeśli nie wykorzystujesz tych samych pinów co kwarc zegarkowy to nic się nie będzie gryzło... O ile dobrze pamiętam wystarczy podpiąć kwarc 32,768kHz bez kondensatorów pod TOSC1 i TOSC2... Raz po uruchomieniu uC odpalasz timer2 w trybie asynchronicznym i tylko włączasz albo wyłączasz przerwanie od przepełnienia... Ustawiasz preskaler tak żeby przepełnienie...
Problem polega na tym, aby pomierzyć ilość impulsów jaka upływa pomiędzy kolejnymi pomiarami czujnika. Chodzi o to żeby timer1 zliczający impulsy po wykonaniu pomiaru przez czujnika wyświetlał ich ilość, a następnie zliczał kolejne impulsy upływające do wykonania 2 pomiaru itd. Zamiast czasu podawać na monitor zliczone impulsy pomiędzy kolejnymi pomiarami....
OK, już działa i zmienia czestotliwość. Pozostaje 1 pytanie. Jak ustawie przerwanie co 32kHz to układ wystawia przerwanie dla Atmega. Problem w tym ze wglada tak jakby ta czynność tak obciażała Atmega16, że nie ma on już czasu na normalne obsługiwanie programu. Dzięki w/w funkcji chciałbym uzyskać taki efekt gdzie będe mógł zliczać czas 100ms.
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...
Elementy to komplety, nadawczy przezroczysty, odbiorczy czarny (filtr niby jest) A gdyby puszczać paczki impulsów przez nadajnik i zliczać je odbiornikiem? Przynajmniej jak słonko zaświeci, to nie wykryje mi tego jako przeszkody... Już lepiej tak.
Witam mam problem mam do napisania na jutro projekt w Bascomie z którego jestem totalnie zielony.Mam zliczac ilosc naduszeń przycisku przesylac na dwa szeregowo polaczone 74ls164 i wyswietlac to na LED.Prosze o jakakolwiek pomoc
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...
Ten sposób też będzie powolny a do tego niedokładny. W sumie doszedłem do wniosku że programowe zliczanie impulsów nie będzie gorsze. Zliczanie 4 impulsów trwa 10us w symulacji programowej. Zauważ że w tym pierwszym rozwiązaniu mnoży się przez 28 a więc dokładność pomiaru jest do kitu. Przy 4000rpm układ zlicza tylko 160 impulsów. Możesz dać Prescale...
No tak, BASCOM - no to niestety ja nie pomogę :cry:
Gdzieś na elektrodzie ktoś już podawał fajny mały i szybki programik w BASCOM do obsługi enkodera, który przede wszystkim był naprawdę odporny na drgania i błędne zliczanie - wiem, bo sam go kiedyś sprawdzałem. Działał dokładniej niż gotowa bascom'owa instrukcja. Program był na tyle prosty, że i na C bez problemu byś go przepisał.
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...
A gdzie ten wyłącznik do "klików" podłączyłeś i jak procesor ma zliczać wciśnięcia? Do czego służy dzielnik R3-R4?
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...
Dane odbieraj w przerwaniu. Jak natrafisz na znaki "AT" to rozpoczynaj zliczanie 154 bajtów po czym ustawiaj flagę "Data_ready" czy jakąś taką i znowu czekaj na znaki "AT". A jak chcesz odbierać dane o rożnych długościach to czekaj na znaki "AT" i ustawiaj flagę po ich odebraniu. Tyle że odebranie poprzedniej ramki będzie wymagało pojawienia się początku...
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...
fakt przerwania od Timerów nie sa używane ale myśle że zliczanie odpowiedniego czasu lepiej zrobić w obsłudze przerwań niż w głównej pętli programu
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...
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...
Ten twór jest powodem tego że to był zegar pod wyświetlacz led, a został przerobiony na lcd. Skoro 4Mhz to 0.25 us to czy 1Mhz będzie 1 us ? Jak ustawić zliczanie z zewnętrznego kwarcu który ma 4Mhz?
Hej Ludzie mam pewien problem.z tego co sie orientuje ustawione liczniki: Config Timer0 = Timer , Mode = 1 , Gate = Internal Config Timer1 = Timer , Mode = 1 , Gate = Internal Start Timer0 Start Timer1 Do Loop powinny zliczac taka sama wartosc.a w symulacji programowej wychodzi, ze jeden zlicza o polowe szybciej niz drugi np: T0=100 to T1=50,T0=10 to...
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.
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...
Sprawdziłeś mój kod? Co z tym portem jest nie tak?? Dodano po 2 to pisane w BASCOMie??
Hmm. A można to co już napisałem przerzucić na Arduino?Bo tego sporo - połowa programu. Przyciskiem wyboru wybieram a potem chce żeby z czujnika szczelinowego dawało impuls do zliczania.
znam bascoma za słabo żeby napisać coś takiego, ale może kto inny by napisał moje pomysły: prędkość na zasadzie takiej jak licznik rowerowy (chyba zliczanie impulsów) można by dodać przejechaną trasę i temperaturę (ds18b20) oraz woltomierz (chyba przetwornik A/C wbudowany w ATmegę32) ja polecam zrobić to na jakimś lcd alfanumerycznym (z graficznym więcej...
Nie lepiej zerować przez RS'a zmienną która zlicza impulsy ?
Możliwość jest :) Wystarczy zliczać impulsy z wejścia licznika i podać je na lcd :) Do tego żeby pomiar był z 3ch źródeł, jakiś prosty przełącznik wejścia. Tu jest podobny temat, ale na PICu. http://www.elektroda.pl/rtvforum/topic93... Jeśli nie wiesz jak zacząć, poszukaj programów do obrotomierzy w BASCOMie, i troche zmodyfikuj :)
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...
a ja bym zaproponawal uzycie licznika np. T0 do zliczania impulsow zewnetrznych. chyba do tego zostal stworzony :) a poza tym kod bedzie prostszy, bo nie bedzie potrzeba stosowania ukladu przerwan.
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)
Z tym, że płytkę mam już wykonaną i impulsy podaję pod port INT0 możesz to zliczać w przerwaniach INT0 , trochę pod górkę ale może być.
Witam Mógłby mi ktoś powiedzieć jak to napisać, żeby program zliczał impulsy z pinu przez określony czas np. 10sec Pozdrawiam ;)
Może tak: Config Timer1 = Pwm , Pwm = 10 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Up 'Config Timer0 = Pwm , Prescale = 1 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Down Start Timer1 Dim I As Integer Config Portb = 8 Do Do Incr Pwm1a If Pwm1a = 1000 Then Exit Do Waitms 10 Loop Do Decr Pwm1a If Pwm1a = 5 Then Exit Do...
bascom timer0 zliczanie zliczanie impulsów bascom bascom zliczanie impulsów
manta trzaski husqvarna kosiarki tuner enigma
ustawienie kolejności kanałów ustawienie kolejności kanałów
How to Test Capacitors: DMM, ESR Meter, Visual Inspection, Panasonic, Nichicon, Murata OpenBeken v1.17.745 DeepSleep Issue on WD-01ADE BK7231N: Device Fails to Wake After Sleep