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...
'LICZNK '$sim $regfile = "89C4051.DAT" $crystal = 11059000 Config Lcd = 16 * 2 Dim A As Byte Dim R As Byte Declare Sub 0 Wej Alias P3.3 Wyj Alias P1.1 Wej = 0 Wyj = 0 A = 100 R = 0 Cls Cursor Off Do P1.1 = 0 Lowerline Lcd "SETKI:" Upperline Locate 1 , 1 Lcd "JEDNOSTKI:" Waitms 500 Bitwait P3.3 , Set Waitms 50 If Wej = 1 Then A = A - 1 End If If A <...
a wiesz czemu niektorzy tak psiocza na bascoma? bo oducza myslenia. procesor jest procesorem i wciaz operuje wg zasad opisanych ... no gdzie? w instrukcji do bascoma czy w datasheecie procka? wydaje sie wam, ze skoro pisze, ze mozna zaladowac dowolna wartosc, to mozna sobie spokojnie wpadkowac tam liczbe 128-bitowa, albo moze lepiej zmiennoprzecinkowa...
Po przepełnieniu licznika on się zeruje automatycznie? W większości trybów licznik zeruje się podczas przepełnienia. Wyjątkiem są niektóre tryby PWM, np. Phase Correct PWM Mode: The phase correct PWM mode is based on a dual-slope operation. The counter counts repeatedly from BOTTOM to MAX and then from MAX to BOTTOM.
Witam chciałbym wykonać prosty stoper w bascomie. Stoper ma odliczać czas po przyciśnięciu: S1 - Start S2 - Stop S3 - Reset Mam już początek, tylko nie wiem jakiej funkcji użyć do samego odliczania i sterowania z przycisków. Chciałbym żeby stoper wyglądał tak jak na zdjęciu z tym że obok Czas było odliczanie. http://obrazki.elektroda.pl/6557276700_1...
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ąć...
Z tym odświerzaniem to wynik eksperymentów, jakie wartości proponujesz?. Co do rs-a to jeszcze nie wybrałem konkretnego falownika, ale myśle że to będzie tylko podstawienie odpowiednich parametrów i będzie ok. A liczyłem warość timera tak: 16000000Hz/256/250=250Hz (256 prescaler) na 5 wyświetlaczy czyli aby odliczać co 4 ms (1/250) to trzeba wpisać...
Tak po załączeniu powinny pojawić się same zera lecz zegarek powinien zacząć odliczać czas. Ds-y nie muszą być podłączone. Czy na pewno ma kolega pilot nadający w RC5 i czy w programie było coś zmieniane?
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?
działa !! :D dzieki, juz otwierałem okno i brałem zamach.... robie prototyp i myslałem ze w bascomie bedzie szybciej, chwilowo nie chce mi się nad asm myslec.... a tutaj znowu okazuje się ze bascom jest do bani! i w dodatku ma helpa zle napisanego.... No może ideałem nie jest ,ale posłusznie wykonał to co mu nakazałeś czyli załadował odpowiednie rejestry...
Dzięki za dobre słowo 8-) Chyba nie do końca zrozumiałeś opis algorytmu :) Mam tak zrobione, że solar szuka najjaśniejszego miejsca na niebie. W momencie kiedy słońce przysłoni chmura, a nie nadszedł jeszcze odliczony czas 15minut od ostatniego ruchu to solar spokojnie czeka. Jeśli doliczy do 15, a słońce jeszcze za chmurami i nieco jaśniej jest z np....
Witam kod wyglądana następującą: [syntax=basic4gl] $regfile = "m32def.dat" $crystal = 8000000 $lib "mcsbyte.lbx" $lib "ds1307clock.lib" Config Lcd = 16 * 2 Config Lcdpin = Pin , Db7 = Pa.0 , Db6 = Pa.1 , Db5 = Pa.2 , Db4 = Pa.3 , E = Pa.4 , Rs = Pa.5 Config Sda = Portd.3 Config Scl = Portd.0 Do I2cstart I2cwbyte 208 I2cwbyte 0 I2cstart I2cwbyte 209...
Facet, zacznij od przejrzenia jakieś dokumentacji do '51. Nie dziwne, że Ci tyle późni bo przerwanie jest u Ciebie generowane co 71,111111 ms, a nie tak jak zdaje się chciałeś co 66,66666ms. Po pierwsze to trzeba ładować każdorazow licznik w obsłudze przerwania, a po drugie to dlaczego chcesz liczyć takie bezsensy jak 66,6666ms? Nie prościej odliczać...
Więc sprawa ma się tak - kupiłem nowego PCFa, kwarc, sprawdzałem nawet z różnymi kondensatorami (33p i 22p) i NIC!!!! Po załączeniu jest ciągle 00:00:00 i data 01/01!!! Ja dotykam do kwarca to czasami doda parę sekund, ale też nie zawsze!!! Co to może być bo już nie mam pomysły!!! Przypomnę że cały układ mam na kabelkach o długości około 5cm, ale to...
Widzę że trafiłem na ludzi chcących pomagać początkującym – jeszcze raz wielkie dzięki. Jak zrobić żeby podczas wprowadzania liczby, aktywne pole było jakoś zaznaczone ( gdzieś widziałem dolne podkreślenie. Ale nie wiem jak to zrobić ). Kolejny problem – zmodyfikowałem funkcję Dostar: która ma odliczać wprowadzoną liczbę do 0 i mam problem...
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...
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.
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....
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.
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.
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...
Zastosować timer do odliczania czasu.
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...
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...
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 ,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...
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.
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...
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]
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...
Jeśli chcesz to zrobić, tak jak mówisz, to musisz czas odliczać za pomocą Timera, ponieważ "Wait" blokuje Ci procesor.
Rozwiązanie padło wyżej, temat zamykam.
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. ...
Owszem, użycie polecenia "step 1" jest bez znaczenia, jest domyślne. Zobacz do hepla baskoma, są bardzo dobrze wytłumaczone prawie wszystkie polecenia z przykładami. Pozdrawiam i życzę sukcesów w programowaniu.
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 :)
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. Potrzebuję pomocy w napisaniu pewnego programu, dokładnie stopera, do części setnych sekundy. nie wiem jak ustawić Timer1 by odliczał mi co 1ms.
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?...
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.
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...
Ustawiasz CTC na bardzo szybki, czas pomiędzy przerwaniami to będzie rozdzielczość regulacji. Reszta to wartości w pamięci(zmienne) odliczające programową syntezę częstotliwości.
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
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...
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...
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"...
Zacznij od przerwania timera - w nim sprawdzaj stan przycisku, odliczaj czas, włączaj i wyłączaj odbiornik.
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...
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ń.
bascom odliczać timer odliczać minuta bascom odliczać wyświetlacz
xiaomi satelita intel e6300 canon pixma zacięty papier
diagnostyka oscyloskopem diagnostyka oscyloskopem
Czy TJA1040 można zamienić na TJA1050? Różnice i kompatybilność Zamienniki dla TJA1040: TJA1050, SN65HVD1040, TCAN1042