Zainteresuj się funkcją Input Capture Unit - opis oraz przykład dla C: http://mikrokontrolery.blogspot.com/2011...
Jaki masz programator? Ściągnij sobie lepiej MkAvrCalculator. Jest to naprawdę bardzo przyjemny programik i nie ma możliwości abyś źle ustawił fusebitów i zablokował procka. W bascomie ustawianie fusebitów jest dość trudne i może przysporzyć sporo kłopotów. Pozdrawiam.
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...
No to już jesteśmy bliżej. Bo oznacza to, że program notuje, że sekundaj różni się od poprzedna skoro pojawia się za ifem. Może jest coś z wyswietlaniem? Bo skoro wskakuje poza if to i zmienia wartośc zmiennej poprzednia.
Witam ,napisałem program który ma odmierzyć czas lotu helikoptera (do wyczerpania bateryjki) ,niestety po 2 tygodniach utknąłem na czymś takim: $regfile = "attiny2313.dat" 'wybór procesora attiny2313 $crystal = 8000000 Config Pinb.0 = Output 'dioda sygnalizująca odmierzenie czasu Config Pinb.1 = Output 'buzzer mający piknąć 3 razy po odmierzeniu...
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...
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...
Tu nie chodzi o aż taka dokładność 20 min na 10h to w tym przypadku nic strasznego tylko o nie ruszanie programu:). na ustawieniach 2 liczy czas 2 min jako 1:38 min pierwsze ustawienia działają tylko na jednym z 5 procesorów jakie mam i jest w miarę dokładnie:) na pozostałych program nie startuje:) Wszytkie są nowe :)
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ć.
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....
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.
Spróbuj na tym: http://www.frank-zhao.com/cache/avrtimer...
Przyciski - DEBOUNCE Odliczanie - CONFIG TIMER i przerwania.
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.
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...
Zastosować timer do odliczania czasu.
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]
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
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...
Rozwiązanie padło wyżej, temat zamykam.
Już z tym też kombinowałem, ale nie wydaje mi się by było to "fachowe" rozwiązanie.. Kazde rozwiazanie z uzyciem 'Wait,' 'waitms' jest NIE-fachowe i bez sensu. Uzywasz calej mocy processora dla glupiej dyrektywy czekania. Malo tego, w tym czasie processor jest zajety wlasnie odliczniem tego czasu i nic wiecej nie moze robic, gdy tymczasem wbudowane...
Operuj cały czas na zliczonych taktach, nie przeliczaj ich na ms. Licz takty i odliczaj takty.
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...
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.
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
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...
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"...
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"...
Kod w C, ale powinieneś łatwo dojść co i jak: [syntax=c] for(uint8_t count=0;count<8;count++) { if(zezwolNaOdliczanie&&(1<<... { if(!OdliczanieMinuty[count]&&!Od... { if(OdliczanieGodziny[count]) { OdliczanieMinuty[count]=60; OdliczanieGodziny[count]--; } } if(!OdliczanieSekundy[count]) { if(OdliczanieMinuty[count])...
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...
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...
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...
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 . . . . . . . . ....
to program, zrobię Ci guziczki pod Gnd, są bardziej niezawodne i bardziej odporne na zakłucenia ;p rozumiem że chcesz odliczać od 0 do 99 czy może 0d 1 do 99?
Waitms + przerwania = pewne kłopoty. Zamień Waity jakimiś pustymi pętlami, albo jeśli chcesz zrobić to w bardziej elegancki sposób to dodaj zmienną zwiększającą się w przerwaniu i na podstawie zliczania tej zmiennej masz dokładne odliczanie zwłoki.
Ale po co od razu WatchDog do tego? Nie lepiej dać TimeOut funkcji Inputbin? A jeszcze lepiej dać jakiś bajt wyróżniający początek ramki i CRC na końcu ramki. Tyle że liczenie CRC musiało by być szybkie żeby procesor nadążył z liczeniem po zgubieniu synchronizacji transmisji (Wtedy musiał by przeliczać cały bufor wielokrotnie przesówając się o jedne...
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)
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.
Zacznij od przerwania timera - w nim sprawdzaj stan przycisku, odliczaj czas, włączaj i wyłączaj odbiornik.
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.
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...
akie kwiatki to tylko w sprytnej wiedzy użytkowników Bascom wyskakują... W rejestrze Watchdog-a, który jest 8-bitowy nie wpiszesz większej liczby niż 255. Można jedynie ustawić konkretne, zaprojektowane z góry przez twórców mikrokontrolera czasy licznika. A gdzie ja napisałem że wpisuję to do rejestru? 2048 to liczba którą Mark Alberts przepisuje do...
Tutaj ma taką sytuację, że do Timer0 jest ladowana wartosc 250, ale licznik stoi w miejscu i nic nie odlicza. Sprawdzalem na kilku wersjach Bascom oraz kilku prockach i ten sam efekt. Proszę o podpowiedz co moze byc nie tak.
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...
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)...
Myślałeś w ogóle jak to zrobić bez tej pętli? Waitms to taka pętla do odliczenia. Jedyny plus jest taki, że Waitms może przerwać każde przerwanie oczywiście przedłużając wykonanie pętli odliczania, ale można to zrobić lepiej.
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...
Problem rozwiązany, odliczanie zrobiłem za pomocą komendy "incr" , timerów i przerwań/
dzieki , dyrektywe crystal=8000000 dałem, jestem na tyle poczatkujący że nie wiem jak przestawić te fuzy, no tak bascom jaK TO SIE ROBI Z POD BASCOM AVR
Mam małe pytanko. Napisałem program w bascomie (prosty zegrek - RTC) z zastosowaniem komendy "config clock". Aby go wykonać musze podpiąc kwarc 32 kHz pod nózki TOSC 1 i TOSC 2 (zegarek wykonuje na atmega 8). I mam pytanie: czy częstotliwość pracy wewnętrznego RC ma wpływ na dokładność RTC? wydawało mi się że nie,ale jak symuluje to w bascomie to sekunda...
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...
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 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
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.
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.
To co to za proc? Z jakim zegarem? To musi działać nawet na kwarcu 1Mhz(avr) i z prędkością 57,6Kb/s. Jak coś to wrzucaj do pamięci ram mikrokontrolera bo może to transmisja po i2c zwalnia(atmega >=8?) - tylko do testów. Spróbuj jeszcze sprawdzić ten drugi sposób z odliczaniem do dwóch znaków i i przetwarzaniem na żywo(po drugim znaku)
Weź sobie załaduj do jakiegoś podprogramu fragment w którym sprawdzane są przyciski, jednocześnie w tym podprogramie odliczaj opóźnienie. (np zrób pętle która będzie miała waitms 1 - ilość wykonań pętli ilość opóźnienia ale równocześnie sprawdzany port przycisku) Zamiast rozkaz waitms wywołuj ten podprogram. To tak najprościej i bez przerwań.
Odlicza czas, po wciśnięciu przycisku na pilocie A:255 C:127.
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
... niestety zadeklarowanie jakiegokolwiek rodzaju zmiennej za wyjątkiem Byte sprawia, że program się nie zatrzymuje. Nie mam pojęcia dlaczego u Ciebie się nie zatrzymuje, bo powinien. Sprawdziłem dla BYTE,INTEGER,WORD i LONG - działa. W ostatnim przypadku(LONG), odliczanie ogranicza się do 2 młodszych bajtów tej zmiennej.
3. Trafo jest zasilane w szczycie ale aby to zrobić wykrywam zero i odliczam zwłoke. Z tego co jeszcze pamiętam z "maszyn elektrycznych" jest to najgorszy moment do załączenia transformatora?
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,
Aby ten program, który napisałem zadziałał, trzeba urchomić dwa Timery. Timer0 do odliczania 100 milisekund a Timer1 do odliczania 1 sekundy. Czy można użyć Timera1 czy planujesz jego użycie do czegoś innego?
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...
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...
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.
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...
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
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?...
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...
Dlaczego nie można przypisać zmiennej do procedury waitus? Jeśli mam taki programik : dim a as integer a=1000 waitus a to program nie odlicza 1000 tylko jakieś gigantyczne (jak na us) watrości jeśli programik wygląda tak : waitus 1000 to wszytko działa tak jak powinno... zarówno na attiny2313 i atmega8535 dzieje sie tak samo... (oczywiscie wszytko jest...
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...
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ć.
Dalej nie rozumiesz! Ciągłe sprawdzanie w przerwaniu jest po to aby mikrokontroler "miał czas" aby sprawdzić inne rzeczy ani przez 5 minut być zajęty tylko odliczaniem jakiegoś opóźnienia. DEBOUNCE wnosi opóźnienie 20ms - czyli dość dużo - i nie jest to najlepsza metoda na sprawdzanie przycisków, ale do tego dojdziesz jak trochę opanujesz Bascom, który...
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,...
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...
"Utul" to jest ten co ty dałeś tylko pozmieniałem porty bo ja na portb.1 i portb.2 mam wyświetlacze a na portd segmenty i oczywiście liczby w tabeli na odlicza mi od 0 do 9 później wyskakuje 11 zamiast 10 i odlicza tak 22,33,44,55,66,77,88,99 i od początku od zera
Ogarnąłem PCINT2, ale dalej jest nie dobrze. Procesor nie chce wstawać lub oled po podpięciu zasilania. Pomaga reset z basoma. Odliczanie nie działa bo auto wyłączenie następuje po około minucie. Pobór prądu po wyłączeniu znowu wzrósł do 690 mikro amper.
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.
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.
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
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...
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
Dziwna sprawa. Po skompilowaniu i wgraniu powyższego programu, na 40 uruchomień całego układu, 38 razy wyświetlacz się dobrze nie zainicjował i pokazywał same krzaki, 1 raz odliczało liczby tak jak miało być, bez napisu "test", 1 raz pokazał się test a potem 0 i nie odliczało. Uszkodzony procesor? Wersja 1.11.9.8 full i demo. Na obu to samo.
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
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
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
Czy ma ktoś może sprawny program Timera( chodzi mi o odliczanie np od 50min w dół do 0 z uwzględnieniem cześci dziesiątych i setnych sekundy) i ma to być zrobione na wyświetlaczach segmentowych... Jeśli ktoś spotkał sie z czymś takim to proszę o wysłanie pliku.. przydałby się też zwykły stoper.. w miare możliwości. Pozdrawiam! Ah no i byłbym zapomniał...
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'...
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".
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...
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. Na wstępie chcę napisać że jestem początkującym, i na razie się uczę. Chcę napisać przykładowy program, co będzie wykonywał jakąś funkcję co 1 sekundę. Chcę do tego też użyć obsługi przerwań (w książkach było o przepełnieniu zegara). Mogę od was poprosić przykład jak zrobić taki timer (z komentarzami objaśniającymi)? Mój zegar ma taktowanie 16mhz,...
Jeśli piszesz w Bascom, to podstawowa obsługa RC5 już tam jest, poczytaj Helpa ...
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...
Czysto informacyjnie - licznik domyślnie liczy w górę, stad odejmowanie wartości CTC(właściwa wartość do odliczenia przez licznik) od 65535. PS: LordBlick czyli w końcu twierdzisz (nie używam CTC),że powinna być wartość 49910? Nie twierdzę nic w tej kwestii, ponieważ obsługa tego przerwania w Bascom nie jest dokładna i nie nadaje się do odliczania sekund...
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...
bascom odliczanie czasu odliczanie minuty bascom odliczanie czasu bascom
micra emulator regulator obrót schemat nokia włącza gaśnie
saeco granaroma meteo internet
CQYP 16 – zamienniki diody IR, parametry, odpowiedniki TSAL6200, SFH4550, CQYP15 Ogrzewanie postojowe do VW Caddy MK2 1.9 SDI 2002 – Webasto, Eberspächer, Autoterm – wybór i montaż