Przedstawię Ci kolego przykład zastosowania Pulsein żebyś miał jaśniej. Myślę że będzie "rzeczowiej". To przykład dla dekodowania transmisji pilotów podczerwieni. Sygnał podłaczony jest do zewnetrznego przerwania INTx i w momencie zmiany na pinie program skacze do tej procedury. Mierzy impuls i poddaje rozwadze jego długość. [syntax=basic4gl]Int_1isr:...
Przyciski - DEBOUNCE Odliczanie - CONFIG TIMER i przerwania.
Może używając timer1 i jakąś zmienną przechowującą ilość przerwań wywołanych przez ten timer - czyli co przerwanie timera zmienna+1 i jeśli osiągnie jakąś tam wartość (czyli ileś tam przerwań timera = jakiś czas (zależny od kwarcu)) to wtedy spełniać ten warunek.
Dzięki "emarcus" działa wyśmienicie :) teraz muszę to połączyć z moim programem JESZCZE RAZ DZIĘKI! POZDR! Dodano po 4 No i kolejna przeszkoda.... Chcę ten programik dodać do mojego głównego programu i chcę żeby dzałał on w pętli tylko wtedy gdy powiedzmy pind.0=0 niestety nie udaje mi się przerobić go tak aby odliczał czas i pokazał komunikat nie raz,...
Zapakować czy na miejscu ? ;) A poszukać nie łaska ? ;) : http://www.elektroda.pl/rtvforum/topic19... http://www.elektroda.pl/rtvforum/topic17... Sio do czytania... ;)
Witam. Mam panowie taki problem. Coś mi nie pasowało z czasem odliczanym przez atmege w przerwaniu timer1 [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 16000000 $baud = 9600 Config Timer1 = Timer , Prescale = 1024 On Timer1 Czas1us Enable Interrupts Load Timer1 = 15625 Enable Timer1 Dim Zmienna As Double Do Loop End Czas1us: Print "###" Load Timer1...
Witam. Napisałem taką prostą funkcję, ale nie działa tak jak bym tego chciał. Parametrem wprowadzanym do funkcji jest liczba (w moim przypadku typu byte) Funkcja ma zwracać wynik w formie zegara czasu tzn. zmienna byte = 75, funkcja zwraca string 01:15 Wszystko działa dobrze ale tylko do 9sekundy, później zaczyna mi to opóźniać, tzn. wynik jest wyświetlany...
[quote="kisoft"]Witam jestem początkujący w temacie bascom potrzebuję rozwiązać problem związany z błędnym odliczaniem zaprogramowanego czasu. Program przerobiony z działającego zegara ( samo odliczanie działa dobrze), tylko chcę żeby w 20 -stej sekundzie wyjście PIND.2 zostało załączone i w 45-tej sekundzie wyłączone. Teraz działa przypadkowo w 20...
Witam. To tej pory nie stosowałem zbyt często timerów do generowania przerwań celem generowania odcinków czasu. Być może dlatego żyłem w słodkiej nieświadomości pewnych komplikacji będących nie bez wpływu na dokładność odmierzanych odcinków czasu. Do tej pory wydawało mi się, że dla danego rezonatora kwarcowego wystarczy: 1. Obliczyć czas trwania pojedynczego...
Witam! Biorę się z przerobienie programu zegarka na lampie vfd którego autorem jest ivanek89.Chce dorobić do tego budzik ,timer odliczający w dół no i może coś jeszcze :D . Oto moje pytania: -jak obsłużyć przerwanie int1 (połączone z int pcf'a) -jak napisać procedurę odliczajaca czas (jakoś nie mogę sobie dać z tym rady) Na timer pomysł miałem tak:...
Koledzy znając życie to pewnie problem wynika z mojej niewiedzy. Mam podprogram Który ma mi zliczyć czasu załączenia pompy. W tym celu wykorzystałem sobie przerwanie które generuje mi przepełnienie co 500ms. W warunku Flagi 500ms jest zmienna (kala(n))która jest zwiększana co 500ms jeśli pompa jest załączona. Załączam sobie pompę np na 3,5s czyli zmienna...
Cześć. Zaczynam programować i potrzebuję obliczyć lub policzyć ile trwa jedna pętla(Do-Loop) w moim programie(wiem tyle, że trzeba wykorzystać Timer tylko nie umiem się nim obsługiwać:cry:). Proszę o przykłady i także o brak wypowiedzi typu zajrzyj do help-a(bo patrzyłem).
Pisze programik w bascomie (51'), który między innymi ma zliczać czas od włączenia układu. T0 i T1 będą wykorzystane do liczenia impulsów (ale to dopiero później) Wymyśliłem sobie, że czas będzie mierzony na podstawie licznika w głownej pętli programu tzn: Do Debounce P3.0 , 0 , Przycisk , Sub Gosub Opcja Incr Czas Waitms 50 Wczas = Czas * 20 Loop No,...
Witam Chcialbym miec mozliwosc wygenerowania 2 przerwan, Jedno na oko co minute , a drugie srednio co godzine. Jak sie do tego dobrac w baskomie, Moze ktos ma gotowy kod Pozdrawiam
Witam chcę aby po wybraniu podprogramu trwał on określony czas np 2 godziny no max 2,5 pózniej kończył pracę i wracał do głównego programu Jak to zrobic próbowałem coś kompinowc z timerem ale raczej niedam rady może ma ktoś prosty programik aby możnabyło po upływie danego czasu wyłączac np jakiś podprogram
zawsze tak robilem gdy chcialem przyciskami dodawac/odejmowac godziny, sekundy lub minuty: on timer1 1sekunda do If Pinb.1 = 0 Then Waitms 45 If Pinb.1 = 0 Then Incr Minuty If Minuty = 60 Then Minuty = 0 End If End If loop 1sekunda: Counter1 = Counter1 + costam Incr Sekundy If Sekundy = 60 Then Sekundy = 0 Incr Minuty If Minuty = 60 Then Minuty...
Witam. Mam taki oto problem.. piszę w bascomie program, którym potrzebuję dosc precyzyjnie odmierzac czas za pomoca timera, ale jak patrze na efekty to czas odliczany nijak się ma do tego co mi pokazuje zegarek.. zakladam ze moj zegarek chodzi dobrze :) (bo chodzi dobrze).. wiec raczej problem jest z mikrokontrolerem i moim pisaniem.... Podaje kod ów...
Popełniłem taki oto kod jak poniżej. W założeniu ma to być zegarek stawiany pilotem, oraz z dwoma DS18B20. Założyłem sobie, że nie użyję żadnego Wait, ani Gosub. Mam jednak jeden problem z odświeżaniem czasu na LCD. Niby dwukropki migają co sekundę, ale sekundy nie są wyświetlane poprawnie. Przez pewien czas jest niby dobrze, ale czasem jakby pomija...
Witam poszukuje porady jeżeli chodzi o Bascoma pisze programik który ma mieć funkcje odliczania czasu dokładnego(chodzi mi typowo o sekundy) jak musiałaby wyglądać procedura timera dla odliczenia np 20 sekund. kwarc 160000 hz Z góry dziękuje
Witam , żeby zrozumieć o co mi chodzi zamieszczam krótki programik: Config Timer1 = Timer , Prescale = 64 Timer1 = 0 Start Timer1 Do If Pind.5 = 0 Then xxxxx Loop Until Timer1 = 15067 Stop Timer1 Program będzię "zapętlony" , do chwili kiedy timer1=15067 ile to bedzie trwać w przeliczeniu na sekundy , czy na milisekundy.??? Jak obliczyć czas trwania...
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 . [syntax=basic4gl] 'Timer0 do odmierzenia 1s $regfile =...
Jak zaprogramowac timer w bascomie 8051 aby generowal przerwanie po 1s, w jakim trybie powninien pracowac timer(y) i czy trzeba tworzyc jakies petle czasowe? Za pomoc z gory dziekuje :D
Mam taki fragment kodu: Config Portb = Output Portb.0 = 1 Config Portd = Output Config Portc = Output Config Porta = Input Declare Sub Kolor 'podprogram - nazwa Enable Interrupts ' zezwolenie na obsługę przerwań Config Timer0 = Timer , Prescale = 1024 Enable Timer0 On Timer0 Kolor Timer0 = 1 Do 'program Loop Kolor: 'poczatek podprogramu If Portb.0...
Witam. Mam spory problem wynikający zapewne z małej pomyłki. Rozumiem, że zrozumienie kodu napisanego przez kogoś innego jest bardzo trudne, ale niestety ja sam już nie daje sobie rady z błędem. Mianowicie chodzi o to, że po wprowadzeniu z klawiatury Czasu oraz Kodu, zanim zacznie się odliczanie mija czas około 2 minut, gdzie powinno wykonać się to...
Witam serdecznie. Szukałem już chyba wszędzie, próbowałem kilkunastu innych programów i problem ciągle zostaje nie rozwiązany. Otóż piszę program do sterownika pieca. Posiada on 3 czujniki DS18B20, 3 przekaźniki i 1 triak do sterowania pompki kolektorów. Wszystko działa bez zarzutu. Problem pojawia się dopiero po włączeniu przerwania od INT0 (regulacja...
podziękuj redakcjii edw bo listingi są ich. zakłądam ze urzywasz bascom avr inne listingi do pobrania ze strony edw są to programy testowe do oślej łączki z kursu avr 'C018b Prosty zegar z budzikiem Dim Sekundy As Byte , Minuty As Byte , Godziny As Byte , Uniwers As Byte Dim Sekjed As Byte , Sekdzies As Byte , Minjed As Byte , Mindzies As Byte Dim Godzjed...
Buforuj otrzymane znaki i przetwarzaj w procedurze pętli głównej programu. Oczywiście wiąże się to z wywaleniem wszelkiej maści form kodu blokującego procesor i oparciem odliczania czasu o Timer.
W tym wypadku powinien być Gosub Obrot i nie trzeba go deklarować. Dodam tylko że przy timer0=10 timer będzie odliczał od 10 do 255 a komenda load timer0, 10 spowoduje odliczenie 10 ticków czyli od 245 do 255.
Jeśli chcesz to zrobić, tak jak mówisz, to musisz czas odliczać za pomocą Timera, ponieważ "Wait" blokuje Ci procesor.
Witajcie. jestem nowy i nie bardzo wiem jak to zrobic, na wejsciu PINC.0 pojawia sie stan HI wysoki zaczyna sie odliczanie czasu ktore jest ustawiane za pomaca ADC na ktorym jest potenciometr 10 Kohm miedzy Vcc a masa. po uplywie ustawionego czasu na wyjsciu PORT D.6 pojawia sie stan wysoki oto moje wypoziny ktore i tak nie dzialaja. $regfile "m8def.dat"...
Instrukcja Wait nie stopuje procesora. Procesor odlicza czas poprzez zmianę wartości rejestrów a więc działa. A skoro działa to powinien także odczytać informację, że nastąpiła sygnalizacja od przepełnienia Timera. Spróbuj zastosować tą instrukcję. Tylko nie wywołuj jej w obsłudze przerwania a w pętli głównej. Bo gdybyś wywołał jej obsługę w przerwaniu...
Zastosować timer do odliczania czasu.
Zacznij od przerwania timera - w nim sprawdzaj stan przycisku, odliczaj czas, włączaj i wyłączaj odbiornik.
W helpie BASCOMA jest wyraźnie napisane, że funkcja GETRC5 korzysta z TIMERA 0, wiec odliczanie czasu zrealizuj na innym timerze, tak najprościej i najszybciej.
Timer będzie odliczał np. sekundy tak jak Waitms 1000, tylko dokładniej. Dobra rada: Odinstaluj BASCOM i zacznij się uczyć C dlatego: http://mikrokontrolery.blogspot.com/2011... Kurs C: http://mikrokontrolery.blogspot.com/2011... Kurs AVR w C: http://mikrokontrolery.blogspot.com/2011...
Witam Piszę program w BASCOMie dla układu attiny2313. Niestety nie mam tego uC, ale posiadam kilka AT89C2051 i programator BlowIt. Czy po za zmianą nazw wyprowadzeń i nazwy procesorka, trzeba bedzie coś jeszcze zmieniać przy przekładaniu programu z bascomAVR na bascom 51? Program to timer odliczający czas i wyświetlający czas na multipleksowanych 4...
Witam. Najpierw wysyłasz rozkaz pomiaru temperatury, później z pomocą timera lub nawet zmiennej zwiększanej w pętli odliczasz czas pomiaru lub większy (mikroprocesor w międzyczasie normalnie wykonuje program). Po tym odczytujesz wynik pomiaru z DS1820, co nie trwa zbyt długo. Pozdrawiam. EDIT: Uzupełniłem posta
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...
Do przeładowania Timer'a1 używaj: Int_timer1: Load Timer1 , 62500 [...] Return Mam jeszcze jedną regułę z przeszłości aby nie używać obsługi pamięci EEPROM w obsłudze przerwań (starsze wersje BASCOM'a przy rozbudowanych programach powodowały błędne działanie programu). Stosuję to do dziś dnia i nie mam zamiaru sprawdzać to w nowszych wersjach...
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?...
Zrób to tak: [syntax=basic4gl] $regfile = "m8def.dat" $crystal = 4000000 Config Timer0 = Timer , Prescale = 256 'onfiguracja timera, przescaler 256 On Timer0 Odmierz_1s 'włączamy timer0 Dim Licz_8ms As Byte 'definiujemy zmienną pomocniczą Dim Sekundy As Byte Enable Interrupts 'włączamy zezwolenie na przerwanie Enable Timer0 Load Timer0 = 125 'ładujemy...
To Ci będzie sterować kolejno czterema diodami na pinach od B0 do B3. Zalecam wnikliwą analizę, zanim zalejesz mnie pytaniami :) Timery zawsze rób na odliczanie w dół do 0, w przeciwnym wypadku po wpisaniu nowej wartości w trakcie odliczania możesz mieć niezły kwas - pomyśl dlaczego :) Pozdrawiam [syntax=basic4gl]$regfile "m8def.dat" $crystal = 8000000...
witam wszystkich mam problem z niedziałającymi przerwaniami napisałem program który dobrze funkcjonował pod wersją bascoma 1.11.7.1 . ściągnołem najnowszą 1.11.8.3 bo w tej poprzedniej nie mogłem wysterować LCD w trybie 8 bitów . okazało się że programy wykorzystujące timery nie działają . co się zmieniło w obsłudze timerów ? może podeśle ktoś działający...
Witam Chcę zrobić sterowanie fazowe 8 żarówkami, lecz brakuje mi pomysłu jak to zrobić. Z jednym kanałem jest sprawa prosta. Po wykryciu zera ładuje do timera zadaną wartość i w przerwaniu Timera załączam triaka. Jak to zrealizować dla 8 kanałów ? W sensie jak odliczać 8 wartości jednym timerem? Pozdrawiam
Zastawia mnie po co ciągle robisz warunek w warunku jak np. tu If Pinb.4 = 0 Then Waitms 1 Incr Setki If Setki = 10 Then Setki = 0 Incr Tys If Tys = 7 Then Tys = 0 End If End If End If Jak już mówiłem wcześniej, jeżeli zaprzęgnąłeś timer to wykorzystaj go do odliczania sekundy wtedy pętla główna zostaje do twojej dyspozycji i bez problemu tam umieścisz...
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)...
Jak masz ustawiony Int RC osc . to się nie dziw, że źle liczy czas. Daj kwarc, ustaw CKSEL=1110 albo CKSEL=1111 (Ext Crystal/Resonator High Freq). SUT (Start Up Timer) wybierz jakiś dłuższy czas dla startu.
Witam! Jestem początkującym programistą i chciałbym zrobić sobie zegarek na LCD. Napisałem kod w BASCOM z wykorzystaniem TIMERA1 i wewnętrznego oscylatora, ale on się śpieszy. Nie mogę wcale ustawić aby dokładnie odliczał jedną sekundę. Czytałem w internecie, że do tego trzeba wykorzystać TIMER2 i zewnętrzny kwarc zegarkowy 32,768kHz, ale ja mam problem...
kolega juz napisał ze stosował klika kwarców po za tym do doliczania czasu w bascom słuzy clock a nie odlicza sie czas za pomocą timerów (duzo bardziej niedokładny pomiar)
Aby ten program, który napisałem zadziałał, trzeba urchomić dwa Timery. Timer0 do odliczania 100 milisekund a Timer1 do odliczania 1 sekundy. Albo tylko 1 timer cyklicznie co 100 ms i liczymy do 10... ;)
Wracajac do tematu czy moglbym prosic przynajmniej o pseudo kod obslugi przykladowo drgania w przyciskach , wysterowania przekaznika np przez 2s oraz komunikacji 1wire jednym timerem (atmega8 ma az 2 timery wiec pewnie szybko skoncza sie jego mozliwosci chcac napisac kod bez zatrzymywania) Cały dowcip polega na tym że z tego 8 bitowego timera możesz...
A żeby odliczał Ci ładnie 5 minut dobierz odpowiedni prescale i ustaw odpowiednią wartość timera na początku odliczania. Jak to wszystko policzyć znajdziesz na forum.
Problem rozwiązany, odliczanie zrobiłem za pomocą komendy "incr" , timerów i przerwań/
Przy kwarcu 12MHz dźwiek minutnika z buzera jest bardzo niskotonowy, parametry polecenia sound też nie regulują częstotliwości, przy 11,59200MHz jest oki. Dodano po 1 Proszę o sugestie/pomoc... Dodano po 4 Konfiguracja timer0: Config Timer0 = Timer , Gate = Internal , Mode = 2 Load Timer0 , 39150 Enable Timer0 Enable Interrupts Reset Odliczanie On Timer0...
z tego co wiem to delay to komenda to odliczania czasu w mikrosekundach, a do dokładnego odliczania czasu należy używać funkcji Timer.
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ć...
Z tego co wiem to bascomowe procedury LCD odliczają opóźnienie potrzebne wyświetlaczowi przy pomocy tego timera. Spróbuj zmienić timer albo poszukać w helpie bascoma.
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...
Witam. Napisałem program do migania diodami i mam trzy pytania: 1.Czy da się ustawić cały port w stan spoczynku (coś w stylu PORTD = 0)? 2.Czy po każdej komendzie IF trzeba pisać END IF, czy da się to jakoś ominąć? 3.Czy poniższy kod jest poprawny, czy będzie działał? 1. Tak, możesz tak pozostawic. Bascom akceptuje kilka form ustawienia poziomu pinów...
Już działa!!! ;) ,a przynajmniej osiągnąłem zamierzony efekt. [syntax=basic4gl]$regfile = "attiny2313.dat" 'wybór procesora attiny2313 $crystal = 8000000 Config Pinb.1 = Output 'buzzer mający piknąć 3 razy po odmierzeniu czasu nop Buzzer Alias Pinb.1 Dim Sekundy As Byte Dim Minuty As Byte Sekundy = 0 Minuty = 0 Buzzer = 1 Config Timer1 = Timer , Prescale...
[syntax=basic4gl]Config Timer0 = Timer , Prescale = 1024 Enable Timer0 : On Timer0 Przerwanie0 Dim Tmp As Word Tmp = 0 Dim Ptimer1 As Word Ptimer1 = 0 Do If Klawisz = 0 Then If Ptimer1 = 0 Then Ptimer1 = 100 End If If Ptimer1 < 95 And Klawisz = 0 Then Tmp = 1 End If End If If Tmp = 1 And Ptimer1 < 85 And Ptimer1 > 70 Then If Klawisz = 1 Then...
Ok coś tam rozumiem ale mam jeszcze taki problem albo prośbę bo nie wiem jak ustawić rejestry w attiny13 Tccr0a Tccr0b Admux Adcsra Adcsrb jakbym chciał pwm 8 bitowy (attiny13) z max częstotliwością tj chyba FAST PWM na pwm0a i pwm0b czyli 9600000/256=37500Hz przy działającym ADC. Reszta ustawień zostaje tak jak jest. To już będzie wszystko. Zacznij...
Zmieniłem na timer1, teraz mam krzaki na lcd :D I na nic nie reaguje. Dodano po 4 krzaków już nie ma(nie zmieniłem timera w jednym miejscu), ale dalej nie odlicza
Witam, Poniżej zamieszczam kod - przedstawia on sterowanie multipleksowe 7-seg ............. Moje pytanie brzmi dlaczego ................ ...........Skasowałem pętle DO-LOOP ? Twój listing praktycznie nie ma programu ( głównego ). Wszystko co się dzieje jest kontrolowane przez timer0 i to tylko w jego przerwaniu, gdy tymczasem timer powinien byc wykorzystywany...
Użyj wejścia ICP - wtedy zbocze zgłasza przerwanie i jednocześnie zatrzaskiwana jest zawartość timera. Odejmując dwie takie wartości masz długość impulsu, musisz jedynie zmieniać zbocze, na które reaguje ICP.
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...
odliczanie czasu timer bascom odliczanie czasu odliczanie czasu bascom
schemat przedwzmacniacz audio aktywna barwa dźwięku compaq dźwięk
bateria parkside styki urmet cyfral
Zacienienie paneli fotowoltaicznych - dioda blokująca czy inne rozwiązania? Jak wyłączyć lodówkę Samsung na godzinę?