Zainteresuj się funkcją Input Capture Unit - opis oraz przykład dla C: http://mikrokontrolery.blogspot.com/2011...
Witam. Zapis (składnia) Load Timer1 jest zły. Sprawdź w pomocy Bascoma.
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...
Dzięki Wojtek75 pomogło , właśnie zmieniłem i działa
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...
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...
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
Może to pomoże: http://www.elektroda.pl/rtvforum/downloa...
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...
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...
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.
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 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...
(...) 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
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...
Witam. Potrzebuję zrobić urządzenie zasilane bateryjnie, wybudzające się co godzinę, wykonujące operację i ponownie zasypiające. Już wiem, że nie zrobię tego na wybudzającym się co 2s Attiny13 (to maksymalnie długi czas możliwy do uzyskania). Potrzebuję zewnętrzne źródło wybudzania. Może jakiś zegar PCF8583 z zaprogramowanym alarmem co godzinę? A może...
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...
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...
Witam, Poniżej zamieszczam kod - przedstawia on sterowanie multipleksowe 7-seg wyświetlaczem LED - jest to lekko przerobiony kod z popularnej i znanej każdemu książki. To nie jest tak, że to ma być stoper - po prostu chciałem fragment tego kodu wykorzystać do innych celów, ale jest pewien problem. Otóż poniższy kod sprawia, że po uruchomieniu na wyświetlaczu...
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ć.
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.
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....
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...
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]
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.
Spróbuj na tym: http://www.frank-zhao.com/cache/avrtimer...
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...
Ustalasz długość odbieranych danych np. 2 bajty, wstawiasz licznik odliczający do 2 :) i łapiesz jeden bajt, potem drugi, Kasujesz licznik i od nowa :) wysyłasz następne 2 bajty itd. ...
Zastosować timer do odliczania czasu.
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...
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...
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"...
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...
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"...
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...
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, 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ąć...
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
Na początek powiedzmy że podłączysz jeden taki wyświetlacz bezpośrednio do portu P1 przez rezystory a wspólny do plusa. dim odliczacz as byte odliczacz=9 do p1=lookup(dane_wyswietlacza,odliczac... wait 1 if odliczacz>0 then decr odliczacz loop end dane_wyswietlacza: data 121,128,254.....itd w polu data trzeba podać liczby (0..255) odpowiedzialne...
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
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...
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...
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ń.
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...
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...
odliczanie czasu bascom bascom odliczanie czasu timer bascom odliczanie
bezpiecznik tranzystorowy volvo silnika farby usuwanie
bateria parkside gorenie lodówka
Napięcie wtrysku sterującego Audi A4 B5 1.9 TDI Telewizor Philips 14PT1565/58 przepala bezpiecznik 4A