W Bascomie jest do tego specjalna instrukcja Zaglądnij do Helpa na polecenie Pulsein Zauważ że zarówno instrukcja pulsein jak i pulseout mierzy tylko czas trwania impulsu a nie całego cyklu; patrz paniżej diagram: http://obrazki.elektroda.pl/1148630500_1... Zmierzysz tylko L1 albo L2 . Autor potrzebuje zmierzyc czas L (czas pomiędzy...
Może to pomoże: http://www.elektroda.pl/rtvforum/downloa...
Witam. Zapis (składnia) Load Timer1 jest zły. Sprawdź w pomocy Bascoma.
seja4321 Napisałem kilka linii kodu ,jest to jedno z możliwych rozwiązań twojego problemu z przyciskiem . program przetestowałem. Moja rada to testuj program na kilku kilkunastu sekundach. powodzenia. Dodano po 46 Nie rozumiem dlaczego seja4321 został skarcony przez LordBlick, przecież pisze w dziale początkujący? Co do kodu, to jest dziwny, Piszesz...
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...
Chciałem aby po odliczeniu od 0 do 10 licznik zatrzymał się na 10 i cały czas wyświetlał 10 aż do resetu procesora. I prawdopodobnie tak właśnie ten kod działa. Odlicza, resetuje, odlicza, resetuje itd. Swoją drogą kod fatalny - strach pomyśleć, ile linii miałby tak napisany kod, który miałby odliczać do tysiąca...
zasilanie raczej ok L) pisałem ze ustawiając fuse bit ta: cksel=0100 , sut=00 działa tylko na jednym z 5 procesorów tej samej serii jak odczytałem z tego samego sklepu
Więc tak. Odcinek 1 sekundy ma być bardzo dokładny, czy nie musi? Jeżeli procek będzie pędzony z wewnętrznego oscylatora, to czas 1 sekunda nie będzie bardzo dokładny. Musisz zmienić fusebity, aby procek był taktowany z 4MHz, bo teraz jak sam widzisz pracuje na 1MHz.
Ale nie blokuje przerwań. Przycisk przenieś na PD2 lob PD3, ustaw zezwolenie obsługi przerwań i przerwania zewnętrznego, ustaw obsługę tego przerwania np. on INT0 ustaw_flage ustaw_flage: flaga=1 return i wpisz zamiast: "If Pinb.0 = 0 Then" "If Pinb.0 = 0 or flaga=1 Then" P.S. Ale obsługi Timerów powinieneś się tez nauczyć.
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.
Przyciski - DEBOUNCE Odliczanie - CONFIG TIMER i przerwania.
Witam Mam taki kawałek kodu w bascomie Ppp: Portc.0 = 0 For A = 1 To D Wait 1 Next Portc.0 = 1 For A = 1 To E Wait 1 Next Potrzebuję wyświetlić odliczanie czasu od A do D i A do E w odstępach co 1s np od 1-10 1,2,3,4...lub 10,9,8... Niewiem jak się za to zabrać .Jakiej funkcji uzyć aby Bascom pokazał mi upływające sekundy. Dziękuje za pomoc
No na modyfikację nie mam czasu. Zwłaszcza, że już dawno nic nie pisałem. W dodatku ja nie używam wait (i Tobie też odradzam) co wymaga trochę innego podejścia do pisania programu. Mogę jedynie podpowiedzieć, że najlepiej było by skorzystać z przerwań INT0 i INT1 podłączonych pod przyciski. Wtedy przerwanie aktualnego zadania było by możliwe natychmiast....
Rozwiązanie padło wyżej, temat zamykam.
Zastosować timer do odliczania czasu.
Banalne zadanie. A więc włączasz licznik(lepiej TIMER1-większa pojemność), tak, aby odliczał ci te 10sekund. Dajesz zmienną którą zwiększasz np co 1sekunde (zmienna o nazwie sekundy). W czasie odliczania do 10s w pętli głównej zliczasz impulsy przycisku i zwiększasz je w innej zmiennej (np. impulsy). Po 10 sekundach w zmiennej sekundy będzie10s a w...
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"...
Witam. Mam na stole procesor jak w temacie. Problem z jakim się spotkałem obecnie to odliczanie czasu przy pomocy komendy: waitms i waitus . Oto przykład. $crystal = 8000000 $regfile = "m8def.dat" Do Toggle Portb.4 Waitms 1 Toggle Portb.4 Waitms 1 Toggle Portb.1 Waitms 1 Toggle Portb.1 Waitms 1 Toggle Portb.2 Waitms 1 Toggle Portb.2 Waitms...
Szukaj raczej błedu w połączeniu, bo sam program jest OK - przed chwilą wgrałem na Atmega8 (jedynie zmieniałem deklaracje '$regfile' ) w zestawie uruchomieniowym EVBavr04 (Propox) i działa normalnie - czas jest odliczany.. Może gniazdo do obsadzenia kwarcu Ci coś nie łączy, bo jeśli uC nie ma połączenia z kwarcem zew. (zegarkowym) to właśnie "zamraża"...
http://obrazki.elektroda.net/3_122786033... Jest to prosty zegarek zbudowany na ATmega8 i wyświetlaczu VFD , program napisałem w Bascomie , odliczaniem czasu zajmuje się PCF8583 , po zaniku zasilania pcf jest podtrzymywany z kondensatora 0.22F ( czas pracy na kondensatorku około 3 dni) . Czas ustawiam za pomocą pilota RC5 . . . . . . . . ....
mam pewien problem pewnie wyda sie komus bardzo prosty do rozwiazania... ja sobie z nim poradzic nie moge mam generator 1 hz i chce nim odliczac czas w dol a jak dojde do zera to chce wystawic 1 na np p1.1 <bascom8051> impulsy chce podawac na p3.3 czy ktos moze mi pomoc ? czas odlczany chce zczytywac z portu p2 dim czas as integer dim start as...
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)
Ta procedura wykonuje się gdy czas dobiegnie końca, powoduje ona wyświetlenie na wyświetlaczach czasu 00:00 oraz odpowiedniego kodu, aby program nie powrócił do wykonywanie pętli głównej wstawiłem tam pętle nieskończoną.
Nie wiem czy wyjdzie to jako kolejny post lub dodany po czasie :D ..., ale po pierwsze chciałbym byś nie myślał że moje uwagi są złośliwe. Po prostu zapytań o różne aspekty programowania w Bascom jest tak wiele że lepiej jest odpowiedzieć na ogólnodostępnym forum niż musieć sie powtarzać. Jest szansa że jeszcze ktoś to przeczyta :D Zamiast za każdym...
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.
Operuj cały czas na zliczonych taktach, nie przeliczaj ich na ms. Licz takty i odliczaj takty.
Zacznij od przerwania timera - w nim sprawdzaj stan przycisku, odliczaj czas, włączaj i wyłączaj odbiornik.
Dzięki kolego Procesor32 mój problem z odliczaniem czasu został rozwiązany po małej modyfikacji kodu źródłowego, który otrzymałem od Ciebie.
Witam. Mam do zrobienia projekt sterowania sygnalizacją świetlną na skrzyżowaniu z użyciem kontrolera 8051 w programie BASCOM. I mam problem ze zrobieniem odliczania czasu. Licznik odlicza ale jego odliczanie ma mało wspólnego z sekundami. Proszę o jakaś wskazówkę. Poprawiłem tytuł - Regulamin.
Nie mam ustawiony wewnętrzny 8MHz ale docelowe w projekcie chcę użyć zewnętrznego 11.058MHz. Myślałem że instruknja: CONFIG Clock = Soft, Gosub = Sectic powoduje że obojętnie co jest ustawione to Bascom automatycznie odlicza 1s i po niej skacze do instrukcji Sectic. Dokładnie chodzi mi o przerwanie które będzie wykonane po upływie 1s. Chcę przez to...
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...
A zastanowiłeś się choć przez 1 us :-P ile czasu potrzebuje uC, na wykonanie procedury przerwania :?: [syntax=basic4gl]Tim2_int: Counter2 = Counter2 + 248 'co 1us Incr L2 If L2 = 1000 Then '0,001s Incr L1 L2 = 0 End If If L1 = 1000 Then '1s Toggle Portd.1 L1 = 0 End If Return [/syntax]
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.
Witam, tworzę sobie mały licznik w Bascomie, wszystko ładnie mi już odlicza, proszę tylko o małą poradę - w jaki sposób za pomocą dwóch przycisków (+ i -) regulować szybkością odliczania liczby? Teraz posługiwałem się Do For Licznik = 0 To 9 Print Licznik Waitms 500 Next Loop teraz jak wykonać regulowanie czasu przerwy - czyli prędkości odliczania?...
Chyba prościej się nie da: Do If Pinb.0 = 0 And Pind.2 = 1 Then Incr Tim Else Tim = 0 End If If Tim = 1001 Then Tim = 0 If Pind.2 = 1 And Tim = 1000 Then Goto Alarm End If If Pind.2 = 0 Then Goto Sys_off End If Loop End Tylko musisz dopasować Tim=? żebyś miał odpowiedni czas. Ustawienie $crystal wpływa na odliczanie Tim.
Witam, poszukuję łatwego algorytmu do zaaplikowania w Bascom AVR do odliczania ilości lat, miesięcy, dni, godzin, minut i sekund od zadanej daty, do chwili obecnej. Powiedzmy, ze datą startową jest 1 stycznia 2000r godzina 00:00:00. Jak obliczyć ile czasu minęło od tamtej chwili z uwzględnieniem lat przystępnych? Z góry dziękuje za pomoc. P.S. przejrzałem...
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...
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
Odlicza czas, po wciśnięciu przycisku na pilocie A:255 C:127.
da można w pętli albo tak jak napisałem. Jeśli chcesz coś innego robić jeszcze z tym zrobić. Tworzysz flagi odpowiadające sygnałom sterującym. Przerwanie np co 50ms. Jeśli jest sygnał sterujący ustaw flagę, w kolejnym kroku jeśli flaga i odpowiedni sygnał sterujący wykonaj akcje włącz wyłącz silnik. . Inni licznik będzie odliczał czas włączenia silnika,
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
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.
Dokładnie nie wiem jak w tym swoim Bascom-e masz zrealizowaną procedurę obsługi pilota ale powiązane to ściśle z prędkością zegara bo program w ściśle określonych przedziałach czasowy sprawdza stan wyjścia odbiornika RC5. Więc zmiana częstotliwości taktowania bez zmiany tych zależności czasowych spowoduję błędy odczytu. Musisz sobie zmienić wartości...
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)...
O co ci chodzi z tym konwertowaniem na milisekundy czy chcesz wynik wyswietlac jako milisekundy czym moze ma byc odliczany jakis czas zalezny od zmierzonego napięcia? Napisz dokładnie co chcesz zrobić.
89C2051 nie ma wewnętrznego oscylatora, więc bez kwarcu lub generatora nie ruszy. Reset - wystarczy sam kondensator. Rzecz jest na tyle mała i prosta, że warto to napisać w asemblerze. Z drugiej strony, jeśli jesteś nowicjuszem, to masz sporo do nauczenia się - potrzebny Ci będzie timer do odliczania czasu, więc musisz się z nim zaprzyjaźnić. Bascom...
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...
tego nie wiem, ale tak długich opóźnień tą instrukcją nie stosuje się ponieważ procesor zajmuje się tylko tym. poza tym jak wspomniałem nie masz możliwości zmiany czasu. musiałbyś dokładnie trafić na zakończenie odliczania. Mówiąc krotko zła koncepcja programu.
nie wiem jak wygląda reszta programu , ale o ile to mozna czy nie lepiej wykorzystać T0, T1 i w przerwaniu odliczać czas lub incr zmienną wewn
Jeśli piszesz w Bascom, to podstawowa obsługa RC5 już tam jest, poczytaj Helpa ...
To może tak jak ja zaczniesz od tej książki: http://obrazki.elektroda.net/39_12370566... jesli chodzi o język, myśle że bascom jest łatwy dla początkującego, a książka jest własnie oparta o tą atmege
Ten i 90% innych prostych projektów, w których występuje reakcja na guziki, wyświetlanie lub świecenie LED lub odliczanie czasu, robi się tak samo - przerwanie timera używanego jednocześnie do sterowanie LED przez PWM i wszytsko w tym przerwaniu - badanie zdarzeń, zmiany współczynnika wypełnienia itd.
Ok, no powiedzmy, że dociera. Jedno pytanie jeszcze: Masz użyte zmienne Wlacz_zima i Wylacz zima, które trzeba zadeklarować osobno, a czy nie lepiej zadeklarować je w podprogramie, bo zdaje się, że nie są potrzebne poza tym podprogramem? A "zwracana-odliczana" jest wartość zmiennej Zima_lato na podstawie której dodajemy lub odejmujemy godziny np z GPS...
Witam Użycie funkcji "waitms" zawsze spowoduje, że program zostaje zatrzymany na ten czas i nic innego nie realizuje - tak działa ta funkcja. Należy unikać tej funkcji i jej podobnych (wait; waitus). Zamiast tej funkcji należy użyć odliczania czasu przez "Timer".
Pewnie ze ktoś to testował i nawet działa :) a dokładnie to odliczasz sobie czas na timer_ku i jak sie odliczy to odczytujesz dane z ds-a
spowalnianie impulsów niestety nic nie dało, ale po paru przemyśleniach doszedłem do wniosku, że za bardzo zagmatwałem sprawę odliczania czasu, okazało się, że zrobienie tego na waitus rozwiązało sprawę konwerter śmiga aż miło pozdrawiam
Spróbuj na tym: http://www.frank-zhao.com/cache/avrtimer...
proponuję dołożyć gdzieś w obsłudze timera dodatkową zmienną która będzie odliczać do zera jeśli nie zero. W podprogramie obsługi naciśnięcia(pewnie debounce?) wystarczy ustawić w zmienną timera(tą do odliczania) i sprawdzać czy już osiągneła zero: przycisk: przycisk_dlugo=255(czas trzymania) do if przycisk_dlugo=0 then cos tam if p3.7=1 then exit do'...
Po pierwsze to nie napisałeś jaki to procesor, a po drugie nie podałeś czestottliwości zegra, a po trzecie to raczej będzie ciężko robić rzerwanie co godzine... Przerwanie można robić częściej, a czas odliczać w zmiennej i oba te odciki czasu da się załatwić jednym tajmerem. Do czego Ci to w ogóle potrzebne?
No rozpisałeś się bardzo konkretnie. Uzylem m162 bo moja 128 gdzieś zaginęła na poczcie. Mam nadzieję ją dziś odzyskać. Docelowo będzie to oczywiście m128. Czyli bez kwarcu zewnetrznego nie ma co liczyć na działanie procedury clock. Szkoda że nie do czytałem tego bo bym już go sobie zamówił. Zastanawiam się jeszcze ale to merytoryczne pytanie czy do...
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...
Jest to timer mojego projektu na procesorze AT90S2313. Służy do odliczania po 1 sekundzie od ustawionego czasu do zera. Po skończeniu odliczania włącza się przekaźnik. Wyjęcie zwory nad przyciskiem startu powoduje że nie można zatrzymać odliczania. Projekt wykonany w Eagle. Źródło programu w Bascomie
Kolego e marcus , w maszynie drukarskiej lepszym rozwiązaniem jest zliczanie impulsów w zadanym przedziale czasu, tak jak pisałem, kłopoty sprawia raczej wolny przebieg maszyny i jej zatrzymania, co powodowałoby odliczanie czasu do nieskończoności. Pomysl z czujnikiem Halla jest dobry, wystarczy na obwodzie cylindra nakleić odpowiednią ilość magnesów....
Jak już pisałem wcześniej wykorzystaj przerwanie. Użyj wejścia INT0 lub INT1. Ustaw je sobie na narastające zbocze i napisz procedurę obsługi przerwania odliczającą zadany czas. W pętli możesz sobie czytać ADC, a jak przyjdzie przerwanie to program automatycznie skoczy do obsługi przerwania. Daje to mniejsze opóźnienie pomiędzy wykryciem zmiany a zaczęciem...
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...
Przeczytaj te artykuły: http://mikrokontrolery.blogspot.com/2011... http://mikrokontrolery.blogspot.com/2011... Timer2 jest 8 bitowy więc zlicza 256 stanów. Ustawiając preskaler timer2 na maksymalną wartość 1024 z poniższych obliczeń otrzymasz: ilość sekund = 1/(32768 /1024 /256)...
Mega! Dzięki! Wstępnie miałem plan użyć przycisku do wyłączenia alarmu, zatrzymania i wznowienia odliczania, a obroty prawo, lewo jako ustawianie całego czasu w górę i w dół, ale wyjdzie w trakcie użytkowania jak będzie wygodniej :)
Zrobilem jakis czas temu zegar na 89C2051 z kwarcem 12Mhz.....w Bascomie (!!!!) i walil sie tylko ok 0,5 sek na dobe! Program byl bardzo prosty i wykorzystywal do odliczania czasu timer 16-bitowy. Wada: koniecznosc ustawiania czasu po oodlaczeniu zasilania i rzeczywiscie lepiej w tym przypadku zastosowac RTC. Ale wykorzystujac korekcje czasu, jak ktos...
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...
Przede wszystkim nie wiecz czy wykrywasz początek bitu startu, jego środek, czy może prawie koniec. Gdybyć wykrywł zbocze z wykorzystaniem przerwania, to dopiero wtedy mozna mówić o synchronizacji. Poza tym odliczanie czasu poprzed delay nie jest zbyt dokładne. Najlepiej wykorzystać do tego timer, czyli zrobić programowy UART, o którym pisałem w moim...
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...
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...
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,...
Znaczy się chciałem dać Load Timer1 = 58594, wtedy chyba działałoby to przepełnienie o którym mówię? Działałoby, gdybyś zastosował właściwą składnię, tzn. "LoadTimer , 58594" Do przycisków daje Debounce, więc myślę, że starczy Jak najbardziej wystarczy. Ciągłe sprawdzanie w przerwaniu jest po to aby mikrokontroler "miał czas" aby sprawdzić inne rzeczy...
Witam. Jestem początkującym jeśli chodzi o programowanie w BASCOMie i mam następujący problem: Chcę wykonać do mojego urządzenia prosty licznik czasu, tzn. stanem początkowym jest cyfra 5 i oznacza ona czas pozostały do końca pracy w minutach. W zasadzie cały program działa w porządku, timer odlicza od 5 dół, ale chciałbym dodać jedną rzecz. Korzystam...
Witam, dysponuję ogólnie znanym układem ZL2AVR i mam problem z ustawieniem zegara tak by polecenie "waitms 10000" trwalo faktycznie 10 sekund, teraz trwa okolo 9s 200-300ms. Moj program wyglada tak: $regfile = "m8def.dat" $crystal = 8000000 //przy ustawieniu 1000000 jest totalna klapa- trwa okolo 4s Config PORTB.1 = Output Waitms 10000 PORTB.1 = 1 Waitms...
Zacznij od tego aby na przerwaniach od timera, np 1ms liczyć czas przez jaki przycisk jest naciśnięty, niech będzie to zmienna "czasGora". Jeśli zwolniony zerujesz czas. Gdy jest naciśnięty przez 2000ms, ustawiasz flagę "rozjasnianie". W przerwaniu gdy flaga ta jest ustawiona zwiększasz wypełnienie PWM do MAX. Pierwsza część zadania zrealizowana. Następnie...
Witam, zwracam się z prośbą o pomoc. Tworzę program sterujący silnikiem DC. Program składa się z menu głównego w którym są 4 podprogramy 3 z nich działają bezbłędnie. Największy kłopot sprawia mi 4 podprogram a zarazem najważniejszy. podprogram startt ma za zadanie odmierzyć zadany przedział czasowy gdy osiągnie wartość 0 wykonać pewną procedurę i zacząć...
Witam, Miałem podobny problem gdy pisałem zegarek w C. Poniformuj kompilator aby nie optymalizował zmiennych których używasz przy odliczaniu czasu. problem jest wynikiem zbyt rzadkiego odświeżania danych pomiedzy rejestrami i pamięcią RAM. Nie wiem czy taka opcja jest w BASCOMie, poszukaj w helpie. pozdr
Na pinie 3 mam dokładnie 3,28 (bateryjka pastylka CR2032). Obyło się bez kondensatorka. I się okazało ,że zamiast na linię sda dać opornik to ten opornik dałem na linię sqw . Teraz już śliczne odlicza czas. Dzięki za pomoc. Tematu jeszcze nie zamykam , bo niewątpliwie będę miał jeszcze jakieś pytania odnośnie ds'a lub czegoś innego .:)
Jacur: wg mnie to ciekawe rozwiazanie z ta petla. Omija odliczanie czasu konwersji. Zreszta ty czas konwersji dales ok 2s to o wiele za duzo wg mnie. Inna sprawa z ta petla ze nie wiem jak szybko DS po komendzie konwersji zmienia stan lini na niski :/ W reszcie kodu tez nie wiedze nic podejrzanego, chociarz przyznaje sie ze dla mnie bascom to dziwny...
[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...
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ć...
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
Najpierw zamień godziny na minuty potem dodaj do tego minuty. Następnie trzeba sprawdzić czy minutyFull nie są przypadkiem mniejsze od minuty Start ( przypadek 23:00 -> 1:00 ). Wtedy przedział czasowy należy policzyć jako czas do północy + czas po północy. Podzielić uzyskany przedział czasowy na liczbę stopni sterowania PWM. Odliczanie czasu do Full...
Brakuje tam deklaracji częstotliwości zegara np. "$crystal=8000000", program trochę dziwny, ale możesz dopisać jeszcze jakiś licznik wejść w procedurę "zwieksz" żeby wchodził tam np. co 100 taktów. Przy czym to będą BARDZO niedokładnie odliczane sekundy...
https://obrazki.elektroda.pl/5128171500_... https://obrazki.elektroda.pl/1498445100_... https://obrazki.elektroda.pl/5424905700_... Witam. Przed rozpoczęciem opisywania mojej konstrukcji chciałbym ostrzec: OZON W ZBYT DUŻYM STĘŻENIU JEST SZKODLIWY DLA ZDROWIA I MOŻE ZAGRAŻAĆ ŻYCIU ! Wszelkie próby...
(...) timer1 wykorzystałem do multipleksowania wyświetlaczy, timer2 odpowiedzialny jest za odliczanie czasu asynchronicznie a timer0 służy do odbioru komend w RC5. Gdyby użyć jakiś zewnętrzny zegar RTC to by zwolnił ci sie jeden timer2. Zaś jako czujnik oświetlenia można by było użyć którejś z diod LED, wykorzystująć ją jako FOTODIODĘ. Pozdrawiam
Dałeś radę - prawie dobrze i nawet powinien działać... chociaż nie do końca jak byśmy tego chcieli ;) Parę moich poprawek: $crystal = 1000000 Config Pind.0 = Input Config Pinb.1 = Output Config Pinb.2 = Output Portd.0 = 1 Portb.1 = 0 Portb.2 = 0 Dim Dioda As Byte Dim Licznik1 As Byte Licznik1=0 Dioda = 0 '------------ Do Waitms 10 If Dioda > 0 Then...
chlop[ie napisałes to tak że jak sie to czyta to nie wiadomo o co ci chodzi a jak czyta i nie wiadomo o co chodzi to kompilator napewno niezrozumie tego bełkotu 1. porty działaja na napięcie a własciwie na stan logiczny 1 lub 0 , po drugie na końcówce mmoze byc 1 lub 0 a jak ma byc 2 ??? proponuje zobacz na przyklady potem sam cos pisz bo takim bełkotem...
Witam .Chodzi mi po głowie taki oto automat dla zapominalskich ( oparty na tanim mikroprocesorze np.attiny2313 ) jedno krótkie kliknięcie przyciskiem zapala się światło na np.5 min. lub dłuższe przytrzymanie przycisku zapala światło np.na 1h i zawsze drugie kliknięcie przerywa odliczanie czasu i wyłącza światło.Przy tym dłuższym świeceniu zapalałby...
Mam problem jestem początkujący napisałem program który ma za zadanie regulować włączanie wiatraka i czas z jakim ma dmuchać , jednocześnie mierzy temperaturę i nie działa tak jak powinno : Temperatura pokazuję co jakiś czas błędny pomiar np 124 , 32 , 98 procek się resetuje chińskie znaki raz na jakiś czas w programie można było ręcznie zmieniać czas...
Heh, no już się powtarzam... :) W głównej pętli programu jest instrukcja ; Input Rs_data Czyli, że nic mi nie pomoże żadne odliczanie czasu, bo przez 99% czasu program nic nie robi stojąc na instrukcji input, i czekając na dane z rs232. I właśnie dlatego wymyśliłem to przerwanie, żeby - kiedy przyjdzie zapytanie o temperaturę, były te dane już gotowe....
Witam potrzebne jest mi urządzonko zrobione na AVR np 2313. Urządzonko to ma mieć układ czasowy odmierzający czas do 4 min po którym na jednym z portów ma sie pokazać stan wysoki. Odmierzanie czasu ma być zainicjowane stanem niskim na innym porcie . Cykl ten ma sie powtórzyć 3 razy. Jeżeli na porcie inicjującym odliczanie po 3 krotnym pokazaniu sie...
Bardzo dziękuje, działa jak trzeba. Teraz rozumiem, że logiczna kolejność jest najważniejsza - warunek zwiększania Menu_ustaw był nie taki jak trzeba i źle umieszczony. Na razie wyjście z programu zrobiłem na trzecim przycisku, ale trochę szkoda go marnować do tego, można na nim zrobić obsługę czegoś innego - w przypadku, gdy program nie jest trybie...
Każdy kiedyś patrzył na przykłady a nie od razu główkował. Proszę. Baw się dobrze. Przetestowany ;) [syntax=vbnet]'#########################... '# Program włącza jeden z trzech przekaźników w zależności # '# od tego ile razy lub jak długo naciesnieto przycisk # '# Jeden krótki Przekaznik1 na czas 1s # '# Dwa krótkie Przekaznik2...
Ja niestety nie zabrałem sie do złożenia układu(mam jedynie gotowe schematy).Jestem na etapie poznawania AVR-ów. Ale moze takie zachowanie ma zwiazek z tym co napisał GrzesGrz71 :http://www.elektroda.pl/rtvforum/viewto... Mógłby ktoś potwierdzić lub rozwiać wątpliwości. PS Mania23:Ładujesz timer i odliczasz czas za pomocą prascalera;...
Witam po przerwie. Zrobiłem rozbudowany zegar z budzikiem na ATMEGA32, ale jest problem z prawidłowym odliczaniem czasu przez układ zegara. PCF spóźnia się o 2 sek na minute, dużo według mnie. Zegar poprawnie działa, gdy odłączę zasilanie ATMEGI(PCF podtrzymywany przez baterię) lub gdy odłączę przewód łączący wyjście INT w PCF. Przez co mikrokontroler...
Stosując polecenie WAIT, WAITMS, itd , powodujesz że Uc nie robi nic więcej tylko odlicza WAIT. Nie możesz stosować WAIT jeśli chcesz by kontroler sprawdzał coś jeszcze gdy liczy czas. Najprostsze rozwiązanie to zadeklarować jakąś zmienną do liczenia czasu. Wtedy zmienna liczy czas a Uc sprawdza dalej warunki.
Dzięki, widze teraz, że jednak troszke namieszałem ustawiając Timer2 ;) Nie wiem tylko dlaczego Bascom przepuścił moją konfiguracje Timer2. W pierwszej wersji programu, która była bez wykorzystania PWM (poprzez Timer2), program odliczał czas (Timer1), zliczał impulsy na Timer0 i migał diodą. W związku z tym pętla w programie głównym była pusta (Do-Loop)....
bascom odliczanie czasu timer arduino odliczanie czasu odliczanie czasu timer
sprężyna siłownika krups wymiana kostka stacyjki zimnego nawiewu
zgrzewarka transformatorowa renault mascott
Volkswagen Tiguan I 5N – lokalizacja przekaźnika tylnej wycieraczki, BCM J519, bezpiecznik SC29 Końcówka mocy Sony STR – po wymianie triaka nadal pali bezpiecznik, zwarcie tranzystorów, diagnostyka