Wystarczy wpisać warunek w dodatku prosty If I = 100 then stop timer1 I=0 timer1= 0 start timer1 end if a tutaj Kasowanie: stop timer1 I=0 Timer1 = 0 start timer1 Return W ogóle nie bierzesz pod uwagę z jaką częstotliwością będzie liczył licznik chyba potrzebujesz jakiś konkretny czas...
Timer0 jest 8-bitowy czyli pomiesci liczbę z zakresu 0-255, Timer1 jest 16-bitowy czyli pomiesci liczbę z zakresu 0 - 65535. Zapewne autorowi chodziło o to aby zrobić to na timerze 8-bitowym, ale Twoje obliczenia tez są dobre tylko dla Licznika/Timera1
Jeśli by to nie przeszkadzało to możesz podpiąć kwarc zegarkowy, wtedy na 8 bitowych licznikach na pewno zliczysz sekundę:)
robisz sobie zmienna 1bajtową i na przerwaniu od timera (kiedy sie przepełni) inkrementujesz ją( zwiekszasz o 1). Wtedy łaczna ilosc zliczonych impulsów wyniesie zmienna1*256+timer. Piszesz sobie najpierw procedurke ktora wyswietli pojedyncza cyfre, nastepnie piszesz procedurke ktora wyswietli całą cztero cyfrową liczbe. Wyswietlanie robisz w petli...
Można też skorzystać z Watchdoga i co jakiś czas po prostu nie zresetować jego licznika.
Funkcje wait (waitms) w BASCOM nie blokują i nie resetują watchdoga. Wyłączanie watchdoga w czasie odczekania może prowadzić do sytuacji, gdy wchodzące w tym czasie zakłócenie zablokuje nam na stałe procesor. Dlatego lepiej wstawić pętelkę z resetowaniem watchdoga i zostawić watchdog włączony: for i=1 to 3 reset watdog wait 1 next
Przeorganizowałem twój kod z pierwszego postu bo w tym z dzieleniem i modulo to może działać ślamazarnie. Jeśli ci pasuje oczywiście. Licznik obsługuj w przerwaniu timera. A zmieniaj tylko wartość zmiennej za pomocą przycisków. To musisz sobie dopisać. Gdyby obliczenia w przerwaniu były za długie, przenieść je do głównej pętli, ale tutaj zawsze będzie...
A może wyłumaczyć mi ktoś tak jaśniej niż whelpie bascoma ;) co to jest ten prescaler i co on dzieli. Może tak po kolei jak twój program widnieje: 1. Jeżeli PORTB jest przeznaczony do obsługi LCD to nie konfiguruj go w ogóle w stylu jaki podałeś w pierwszym poście. Config Portb = &B11111111 : Portb = &B11111111 ===> źle!!! Może to powodowac zakłócenia...
...na tych przerwaniach to albo ie umię zrobić albo nida sie tego zrobić... Polecam notę aplikacyjną AN-115 na stronie firmowej Bascoma http://www.mcselec.com/an_115.htm. Opisane jest dokładnie to czego szukasz. Tak jak pisałem wcześniej: możesz zrobić to samo bez przerwań - sprawdzając stan portu w pętli. Jak się uprzesz, to można także czterokrotnie...
Witam mam prosty program. Timer zlicza naciśnięcia przycisku. Problem polega na tym że po jednokrotnym naciśnięciu wartość zwiększa się o jakąś ilość (nie zawsze o 1). Jak temu zaradzić? np. żeby zmiana stanu licznika była możliwa tylko co określony odcinek czasu. [syntax=basic4gl]Config Pinb.0 = Input Set Portb.0 Config Timer0 = Counter , Edge = Falling...
Witam, napisałem prosty program obsługujący układ rtc PCF8583, wszystko działa niby poprawnie jednak gdy licznik sekund dochodzi do 59 i zwiększają się minuty przez 4 sekundy wyświatlacz LCD pokazuje krzaki w postaci FF i jakiś cyfr, po 4 sekundach odliczanie powraca do zamierzonego wyglądu. Czy jest ktoś w stanie mi pomóc ? Pozdrawiam https://filmy.elektroda.pl/83_1632655619...
Jeśli móglbym tu swoje 4grosze dołożyć... Piszę jako w miarę aktywny użytkownik elektrody z jakijś tam dorobkiem (w końcu liczniki z boku coś tam mogą sugerować) i wielu mnie tu zapewne zna jako zatwardziałego bascomowca i ...faktycznie tak było. Większość prezentowanych tu projektów jest w bascom tylko, że... z perspektywy czasu żałuję zbyt później...
[syntax=basic4gl] $crystal = 4000000 Config Portb = &B11111111 Portb = &B11111111 Config Portd = &B1111100 Portd = &B1111111 Config Timer0 = Timer , Prescale = 64 Enable Timer0 Enable Interrupts On Timer0 Co1ms Dim Liczba As Single Dim Ktorywysw As Bit Dim Lol As Byte Dim Jednostki As Byte Dim Dziesiatki As Byte Dim Pomoc As Bit Dim Aaa As Word Dim...
Źle, w skrócie powinno być tak: jeśli wiatr_ena = 0 wtedy poczekaj 25 ms (eliminacja drgań styków) jeśli wiatr_ena = 0 wtedy pętla wyjście z pętli kiedy wiatr_ena=1 (czekanie na PUSZCZENIE przycisku koniec petli reszta Twoich instrukcji warunkowych endif endif
Jeśli nie potrzebny ci dokładny czas to zrób to na liczniku.
Impulsy pobieram przy liczniku z kabelka który wg "Sam naprawiam ..." pochodzi od czujnika drogi umieszczonego przy skrzyni. Do zliczania impulsów wykorzystałem timer0 (oczywiście znalazłem przykład), który liczył i podbijał mi zmienną. Zrobiłem 10 km i sprawdziłem wynik. Było 5150 więc podzieliłem aby zamienić na m i wyszło 5,15 Nic mi się nie zgadza...
Ok po kolei, wywalam wszystko z programu, zostawiam tylko...... zmienna impulsy jest zwiększana o kilkanaście a nie tylko o jeden ............ Licz: If Scisk = 1 And Ok = 1 Then Incr Impulsy Elseif Scisk = 0 And Ok = 1 Then Decr Impulsy End If Return Kontaktron (Reed switch) generalnie jest stosowany jako proxy switch, czyli w ukladach statycznych....
Witam, to jest podchwytliwe pytanie? [syntax=vbnet]suma_ok_nok = licznik_ok + licznik_nok procentowo_ok = licznik_ok * 100 procentowo_ok = procentowo_ok / suma_ok_nok [/syntax] Pozdrawiam.
Witam Po ustawieniu czasu musisz go pomnożyć przez 0.03 (30%). Poźniej dajesz warunek IF Stan licznika = Wynik mnożenia then port 1.7 = 1. Pozdrawiam
Poi pierwsze. Do BASCOM-a jest pomoc - także po polsku, której to zresztą jestem autorem. Wersję on-line (beta) znajdziesz na mojej stronie WWW. Jak one działają? Zliczają impusy. Albo z prescalera, albo z zewnątrz. Patrz nota katalogowa. W którą stronę zliczają? Zwykle liczą w górę. W trybach PWM liczą też w obie strony. Patrz nota katalogowa. Jak...
Bo fusing robi stringa proszę szanownego kolegi:) To nie tędy droga...PS może nie zaokrąglanie a histereza?:)
Wszystkie zmienne programu są przechowywane w RAM. Kod inkrementacji czasu jest błędny - instrukcje If powinny być skaskadowane - nie ma sensu sprawdzać, czy minuty doliczyły do 60, jeśli wcześniej nie zwiększałeś licznika minut.
A po przepełnieniu co się dzieje ze zmienną err? Mam ją ręcznie zresetować? Po przepełnieniu licznika on się zeruje automatycznie?
D la AVR - ów sa dostępne komendy getRC5 i sendRC5. W czasie działania funkcji używany jest licznik TIMER0 i związane z nim przerwanie. Polecam lekture helpa dla bascom basic avr. Help jest dostepny na forum i na stronie www.edw.com.pl Nie wiem czy są takie układy, ale zawsze można coś wykombinować podłączając MAX232 i jakiś procek który zajął by się...
Jdno pytanie czy ponizsza konfiguracja bedzie prawidłowa : Chodzi o to aby licznik zliczał impulsy wewnętrzne z kwarcu przez czas jaki na int0 bedzie stan wysoki. w momencie pojawiania sie zbocza opadającego aby program przchodził do obsługi przerwania : Fragmenty w bascom : config timer0 = timer , gate = external , mode =1 set Tcon.0 - reakcja na zbocze...
Z przerwaniem INT0 sobie poradziłem bez problemu (zlicza i to nawet szybko:), ale przykład z Timerem a'la Counter'em wogóle nie gada. Nie wiem dlaczego. Timer ustawiłem na Internal. Impulsy podawałem na P3.2 i P3.4 ale nic nie dało. próbowałem też włączać i wyłączać przerwanie INT0 razem z Timer0 ale nic się nie zmieniło. Może to już nie istotne, bo...
Zrób tak: 1 licznik do odmierzania czasu, przerwanie co np 25ms 2 licznik do zliczania impulsów Jeżeli nastąpiło przerwanie np 25ms, to zlicz liczbę impulsów. W taki sposób masz dokładniejsze odmierzanie czasu, funkcja wait do tego się nie nadaje. Przeanalizuj sobie ten temat: http://www.elektroda.pl/rtvforum/topic16... a potem dodaj to co napisałeś...
Bascom zawsze używa metody obliczeniowej, która należy do zmiennej wynikowej. Oznacza, że w tym przypadku Bascom wykonuje obliczenia na bajtach. Wartość obliczeniowa2 jest typu Word. Czyli (1) = Liczba_ok / 100 zmienna Liczba_ok traktowana jest jako byte. Jedynym sposobem na konwersję jednego typu na inny jest po prostu przypisanie go w ten...
Na procu jest uruchomiony miernik częstotliwości (stacjonarny). Wykorzystane są dwa 16bitowe timery, uruchomiona jest komunikacja po rs232, zegar czasu na PCF8583 z podtrzymywaniem bateryjnym. Nie bardzo wiem jak to wszystko przełożyć na BASCOM AVR. Na początek spróbuj uruchomić przerwania oraz timer0 w trybie normalnego licznika - tak aby liczył z...
........ chce wykorzystać wewnętrzny kwarc 8Mhz po trzecie czytając helpa jesli dobrze rozumiem to timer1 jest 16bitowy a timer0 jest 8 bitowy emarcus - gdybym chciał wykorzystać twój pomysł to gdybym zostawil timer1 jako counter a jako timer wykorzystał timer0 ktory by zliczał czas w jakim sa zbierane impulsy - jeśli o to ci chodziło i jeśli jest...
Zjadłeś przedrostki &B przy wartościach bitowych jaki już z niepohamowaną determinacją chcesz takiego zapisu używać.
Żeby zrobić za pomocą Timera - to nie możesz używać trybu PowerDown tylko Sleep - żeby właśnie Timery mogły działać to po pierwsze. W taki trybie jednak będziesz miał nieco większy pobór prądu niż w pełnym PowerDown. Więc wszystko zależy na ile ma wystarczać bateria o ile jest to coś zasilane z baterii. Bez PowerDown'a na pewno będzie to sporo krótszy...
Lcd "<- " ; Liczba_krokow ; " "
Dla kwarcu 4MHz jest to prescaler 64 i początkowa wartość licznika: 193 Dla kwarcu 8MHz prescaler to: 64 i początkowa wartość licznika: 131 To pokazuje kalkulator. Chciałoby się zakrzyknąć : a nie mówiłem :-P Aby wpisać do Timer2 początkową wartość, to używamy poleceń: TCNT2=początkowa_wartosc Timer2= początkowa_wartosc Counter2=początkowa_wartosc...
No jak za każdym razem do licznika wpisujesz zero to jakim cudem ma być spełniony ten warunek timer1= A?
... po czym zobaczyć jak wygląda licznik cykli lub czas wykonania zadania . Nie polemizujemy z czasem wykonywania operacji, tylko z faktem użycia tego argumentu w tym konkretnym projekcie, w którym (patrząc na posty autora) mikrokontroler będzie się nudził przez 99,99% czasu.
Dzięki, a ja tyle się z tym namęczyłem. Potrzebuję użyć tej zmiennej do wyświetlenia co 100 wyniku - bo jak użyłem do tego timera0 to co jakiś czas w nierównomiernych odstępach czasu zawieszała się atmega.
Timer0 włączam na początku przy konfiguracji '********** Konfiguracja Timer0 Config Timer0 = Timer , Prescale = 1024 Enable Timer0 On Timer0 Czas w programie głównym '************ sterowanie czasem jasnością podświetlania LCD If Flaga_lcd = 0 Then Ocr2 = 80 End If If Enter = 0 Then Ocr2 = 200 Flaga_lcd = 1 End If później mam program Timer0 Czas:...
Witam ja bym zmienił kwarc na 12Mhz to będzie rozdzielczość co 1us i wtedy timer ustaw na 50ms (50000) i masz równy czas . Nie wiem jak jest w bascomie ale asemblerze instrukcją ORL THL,#wartość można skorygować wartość licznika żeby odmierzał równy czas.
No to kawa na ławę. Instrukcja Getrc5 w czasie działania używa jest licznika TIMER0 i związanego z nim przerwania. Licznik ten jest służy do generacji wymaganych opóźnień podczas próbkowania sygnału. TIMER0 może być dalej używany przez program, lecz należy się liczyć z wynikłymi opóźnieniami, gdy wykonywana będzie funkcja GETRC5(). Jest tylko jeden...
Witam Proszę o pomoc. Potrzebuję wykonać okład mierzący bardzo krótkie odcinki czasu. START podanie impulsu na któryś pin, STOP podanie drugiego impulsu na kolejną nóżkę. Procesor Atmega32 język Bascom. Jaki najmniejszy odcinek czasu mogę zmierzyć ? Jak wygląda procedura pomiaru czasu miedzy Start a Stop? Bardzo proszę o podanie fragmentu kodu. A czy...
Algorytm w skrócie: 1. pętla czekająca na mignięcie 2. jeśli pojawił się sygnał, wyzeruj licznik, wykonaj pętlę zliczającą czas 3. jeśli czas = 0,5 sekundy to zwiększ licznik, wróć do pętli 4. jeśli czas = 3 sekundy to wartość licznika zapisz jako pierwszą cyfrę kodu błędu, wyzeruj licznik i wróć do pętli 5. jeśli czas = 6 sekund to znaczy że jest koniec...
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?...
Ponieważ tzw. casting w BASCOMie jest nieco zbyt prosto zrobiony to proponuję zrezygnować z: Dim Xl As Word Dim Xh As Word A w przerwaniu pobierać zawartość z rejestru ICR za pomocą specjalnie generowanej dla tego celu zmiennej typu Word: Capture1 . Pętlę Do..Loop zamieniłbm na sprzętowe porównywanie i kasowanie licznika przez CTC. Niech takimi rzeczami...
(at)dondu No i niestety sama próba uśpienia kończy się tylko uspaniem uc. Procesor nie chce się wybudzać od przepełnienia Timera2. Aby mikrokontroler wybudził się z power save musi mieć podłączony zewnętrzny kwarc 32,768kHz, a timer2 ustawiony do pracy w trybie asynchronicznym. Szczegóły podałem Ci w linkach. Przeanalizuj kod programu szczególnie w...
"Liczniki też wolał bym zarezerwować dla innych celów - choć by odliczania czasu całej sekwencji i PWM,u" To może zrobić to tak: Jedna pętla do...loop-a w niej cztery+1(dla 1ms) liczniki programowe- nie jest to eleganckie bo trzeba cierpliwie obliczać czas pętli i kłopotliwa modyfikacja-ale realizowalne. Zwłaszcza jak chcesz zachować liczniki dla PWM.
Bo kontaktrony w licznikach rowerowych są jakieś szybsze. Robiłem kiedyś eksperymenty z rowerem i faktycznie zwykłe kontaktrony "rurkowe" nie nadążały się przełączać. Pierwszy z brzegu kontaktron KA-02 ze sklepu na literę T przy napięciu 5V i i prądzie 100mA ma częstotliwość przełączania 125Hz. Czas załączania do oporu 1Ohma wynosi ok 2,5 ms Czas odpuszczenia...
Zupełnie inaczej. Obsługa przerwania, która tylko ustawia znaczniki, zupełnie nie ma sensu. W przerwaniu timera zgłaszanym np. 50 (20..100) razy na sekundę, czy poprzednio przycisk był zwolniony, a teraz jest wciśnięty. Jeśli tak - ustaw znacznik do ew. wykorzystania w ew. pętli zdarzeń (to dość nieszczęśliwe rozwiązanie, ale w Bascom i u początkujących...
Cóż, opis działania rejestru przesuwnego jest w notach katalogowych i mówisz, że wiesz, jak to zrobić. Poszukaj o multipleksowaniu wyświetlaczy LED - w przypadku "zwykłych" diod zasada będzie ta sama.
Witam wspólnotę chciałbym zaznaczyć że z wykształcenia jestem mechanikiem, a z programowaniem nie miałem wcześniej styczności. Przeczytałem książeczkę która mowiła o programowaniu w jezyku bascom, i stworzyłem taki o to kod programu. [syntax=basic4gl] $regfile = "m8def.dat" $crystal = 8000000 Config Timer0 = Timer , Prescale = 256 'licznik do odmierzania...
Zamiast dawać tyle ifów możesz dać jeden Select case - zobacz w Helpie jak on działa.
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, już wcześniej na podstawie tego fragmentu kodu, który podałeś mówiłem, że program ten wykorzystuje płynne sterowanie jasnością tylko ty tam wstawiłeś stałą o wartości 70. Mówiłem też, że skoro nie wiadomo jakie jest taktowanie procka to ciężko powiedzieć co z czego wynika. Ale teraz widać jak na dłoni potwierdzenie tego co pisałem, jest to typowe...
Potrzebuję pomocy, jak zrealizować przechwytywanie zawartości licznika do rejestru CAPTURE1 wywoływanego zboczem opadającym FALLING. Chcę mierzyć czasu trwania zbocza, następnie obliczając go uzyskać ilość obrotów/min. Sygnał podaję na port ICP. Jestem początkującym w BASCOM, dlatego też prosiłbym o wskazówki już w kodzie, łatwiej mi się wtedy zrozumieć...
Hej Czas powinien byc liczony timerami po to one sa. EDIT Oki czyli widzę to tak: Timer 1 mode=1 'liczy swoje Timer0 mode=3 'dwa liczniki 8-bitowe TL0-impulsy,TH0-zegar No dobra i co teraz? Przejrzałem helpa i forum i o mode=3 zbyt wiele nie znalazłem ;) Na mode=1 nie ma problemów. Jak startuje counter, a jak timer pod T0? Jak odczytuje ich wartości?...
To nie kwestia taktowania. A sposobu w jaki piszesz program. Instrukcji typu wait należy unikać. Przecież procesor w czasie tych twoich ponad 2secund nic nie robi tylko czeka. A to marnotrawstwo. Jak już powiedziałem zapoznaj się z licznikami timerami.
to zatrzymanie timera przed załadowaniem wartości jakby pomogło (przynajmniej nie zachowuje się dziwnie) teraz miga w równych odstępach ... Home Lcd "P=" ; P ; "us" Lowerline Lcd "I=" ; I ; "us " ; Licznik If Licznik = P Then Portd.2 = 0 End If If Licznik >= C Then Portd.2 = 1 Licznik = 0 End If ... Dobra odczepiam się od portów :) I już mówię dlaczego...
hmmm no ja to robiłem wtedy w Bascomie mniej więcej tak: ustawiałem sobie tak któryś Timer, żeby przerwanie wykonywało się powiedzmy 64 albo 128 czy ze 200 razy w ciągu czasu trwania jednej połówki czyli w trakcie ok 10ms tak? Gdy pojawiło się przerwanie INTx to odpalałem ten Timer, który zaczynał tykać i wykonywać przerwanie tyle razy ile ustalonych...
Programu się wstydzę, bo jest bardzo "prostacki", i pewnie zagmatwany :) Wydaje mi się że te resety wynikały z tego, że przerwanie od T0 (które może się pojawiać nawet co ok 0,3s) "nakładało" się z przerwaniem od T2, chociaż takie coś chyba nie powinno mieć miejsca:) A może do odmierzania 0,5s użyć DS1307? Bo mam przygotowaną płytkę pod niego, gdybym...
Czym większa częstotliwość sygnału tym mniejszy dzielnik dla licznika to jedno . Rozdzielczość pomiaru jest proporcjonalna do stosunku częstotliwości taktowania mikrokontrolera a odwrotnie proporcjonalna do częstotliwości przebiegu. Jednym słowem żeby się trzymać cały czas w jakimś zakresie dokładności i rozdzielczości w pomiarze trzeba zmieniać częstotliwość...
Dziękuję za szybką odpowiedz, oczywiście była to wina if'ów za co serdecznie dziękuję olelek klikam pomógł. Teraz mam jeszcze jedno pytanie a mianowicie jak najlepiej napisać kod, który zliczałby impulsy w czasie np 2 sekund, jeśli po odliczeniu tego czasu licznik wyniesie L = 3 to dioda się uruchamia, i dokładnie w drugą stronę, kolejne 3 sygnały w...
No super to wygląda. Oby gdzieś poza ekranem nie było inaczej. Teraz możesz w głównej pętli dodać jakieś wyświetlanie informacji na wyświetlaczu sprawdzając jednocześnie, czy wykres na oscyloskopie się nie zmienił (obsługa wyświetlacza nie ma wpływu na przerwania). Jeśli nadal działa dobrze, to w procedurze obsługi przerwania możesz dodać zwiększanie...
na symulatorze nie masz co patrzeć. One są do niczego. Ok sprawdzę zaraz. Dodano po 18 ok sprawdziłem. Działa bez problemu. Sprawdzałem na płycie testowej a sygnał brałem z Timera2 skonfigurowanego jako PWM. Zmieniałem różnie Prescaler od 1 do 1024 i działało bez problemu.
Czas zmierzony. Na 4 godziny Atmega spieszyła się aż 8 sekund. Wynika to zapewne z tego, że kwarc jest ok 2 cm od nóżek - niestety innej możliwości nie ma. Trzeba dołożyć kondensatory. Czy ktoś wie dlaczego nie chce mi się zerować wartość sekund co te 60 sekund? Bo tak to licznik zlicza te sekundy idąc w tysiące :/.
W Bascomie nie odmierzysz 1s dokładnie (a jak program dosyc rozbudowany tym bardziej) Jeśli nie użyjesz przerwania i licznika (co prawda nie pisze w BAscom ale tak sie domyslam). Jeśli nie masz juz wolnych liczników to możesz tylko poradzić sobie pisząc w innym języku (najlepiej ASM) W przeciwnym wypadku marne Twe trudy Pozdrawiam
Bez tego nie odmierzysz dokładnie 10Hz, co najwyżej przybliżone, ale w BASCOMIE nigdy nie wiadomo co i ile trwa... Później tylko w przerwaniu : Set PORT Czekasz krótki odstępik czasu Clear PORT Czekasz taki sam odstęp czasu Suma odstępów nie może być większa niż 0.1s z wiadomych przyczyn
ma to sluzyc do pomiaru czasu otwarcia wtryskiwaczy, chodzi o to ze chcialem zeby zbocze narastajace wlaczylo zlicznie impulsow a zbocze opadajace przestalo zliczac, drugi timer mierzy sobie czas ktory potrzebny mi jest do okreslenia ile itrwa czas otwarcia wtryskiwaczy i jaka jest predkosc samochodu....
"single"-zajmuje cztery bajty - a Ty wykorzystujesz jeden. Więc nie single a byte-chyba że naprawdę trzeba. Dla pcf8574 można ustawić 8 adresów sprzętowo-jak mię pamięć nie myli-ściągnij datasheet. A0-A3 do + lub gnd.(to adresy) Jest jeszcze pcf8574A-jeszcze 8 adresów. Urządzenie peryferyjne-to nie jak ja to rozumiem-tylko jak jest. Peryferia w procesorze-przetworniki...
Spróbuj zamiast Timebase zrobić Load Timer0, 31250 ................ Timer/Counter0 (TCNT0) jest 8-bitowy rejestr. Jak więc chcesz do niego wpisac liczbę większa niż 255? (!) Nie jest tu istotne czy stosujesz wpis zmiennej 'timebase' czy tez liczbę const. skutek jest ten sam. Popatrz na mechanizm wpisu wartości do Timera0: Timer0= A '-znaczy to samo...
Robisz prosty błąd w składni. Poczytaj w helpie o Load. Nie tak: [syntax=basic4gl]Load Timer1 = jakas_wartosc[/syntax] tylko tak: [syntax=basic4gl]Load Timer1 , jakas_wartosc[/syntax] Z tego co pamiętam można również tak. przykładowo: [syntax=basic4gl]Timer0 = 249[/syntax] co jest równoważne: [syntax=basic4gl]Load Timer0 , 6[/syntax] Ale to sobie musisz...
Const odlicz=65436 rem dla zegara 12MHz odliczy tylko 100 impulsow (100us) dim licznik as word dim koniec as bit Config Timer1 = Timer , Mode = 1 , Gate = Internal On Timer1 etykieta Counter1 = odlicz do start timer1 bitwait koniec,set reset koniec rem petla powtarza sie co 100 us loop etykieta: licznik = counter1 rem To ma eliminowac czas od momentu...
Ciąg "Timer0" faktycznie nie zmienia koloru, ale jest to tylko błąd kosmetyczny. Po kompilacji nie ma żadnych błędów, zaktualizuj sobie program do jakiejś nowszej wersji. A jeśli będą jakieś problemy, to polecam ręczny wpis do rejestrów licznika, z takimi "rzadziej spotykanymi" prockami zwykle są jakieś kwiatki :)
E.. Problem jest bardziej złożony. Chodzi o to, że kwarc taktujący jest wykorzystywany do zliczania odcinków czasu przez licznik T0, który jest używany do dekodowania kodu RC5, Jeżeli teraz coś się nie zgadza to nie można zsynchronizować się z sygnałem z pilota i zdekodować poprawnie kodu. RS232 to osobne urządzenie i nie ma związku z pilotem. Tak naprawdę...
Witam , Uruchomiłem już pomiar na ADC , mam pomiar napięcia i natężenia, na wyświetlaczy wyświetla mi moc pobieraną. Pomiary wykonywane są 50 razy i wyświetlana jest średnia tych pomiarów. Moje pytanie jest następujące chciałbym sumować pobraną moc zrobić taki licznik kilowatigodzin z funkcją resetu i czasem w jakim została energia wyprodukowana, czy...
...może i nie jest to trudne, ale ja dopiero raczkuje w bascomie :) Stara śpiewka o raczkowaniu :| Liczyć chyba umiesz :?: Przy wciśniętym przycisku(S1=0) ,jedna pętla w Twoim kodzie , to nie mniej niż 150ms , co dla 256 kroków PWM-a , daje czas ponad 38 sekund na przejście całego zakresu - zdecydowanie za długo.Poza tym , Twój kod zmienia tylko stan...
1 - doprowadź sygnały z czujników do trzech wejść jednego z portów 2- każdy z tych sygnałów doprowadź do wejścia przerwania INT0 ( odseparowane diodami lub przez transoptory np. CNY-17 ) Każde pojawienie się impulsu na jednym z wejść wyzwoli przerwanie INT0 W obsłudze przerwania sprawdzasz stan wejść i porównujesz z poprzednim stanem W zależności od...
Uzyj kolego bramek TTL oraz liczników a procka do odczytu ich stanu i ew. wyzwalania nie będziesz mieć takich dylematów.
Wpisywanie $CRYSTAL bez rzeczywistej zmiany taktowania procesora będzie powodować, że wszelkie opóźnienia i obliczenia kompilatora dotyczące liczników nie będą zgodne ze stanem faktycznym. GETRC5() korzysta aktywnie z licznika TIMER0. Tak manewruje wartością wpisaną do rejestru licznika oraz preskalerem by otrzymać jednakowe odcinki czasu zliczane później...
Myślałem raczej o czymś takim: [syntax=basic4gl]Do Readeeprom Tablica(licznik) , Licznik Incr Licznik Loop Until licznik >12 [/syntax] :)
Szczegóły masz na schemacie. Po uruchomieniu nadajnik wysyła dane licznika. Bascom ver. 2.0.7.5
Szybko zajrzałem do noty PCF8583 i tam jest napisane, ze kiedy nie używasz funkcji alarmu to stan na pinie INT zmienia się na przeciwny co 500ms. Tak wiec impuls jest na tyle długi ze spokojnie można go traktować jak zwykły przycisk naciskany co sekundę. [syntax=vbnet]$regfile = "m32def.dat" $Crystal=8000000 $hwstack = 64 $swstack=32 $framesize = 128...
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.
Witam, chciałbym prosić pierwszy raz od 16 lat w zasadzie o gotowca. Lub szkic programu żebym mógł sobie go sam napisać. Chcę dokonać przeróbki licznika https://sansan.cc/en/productsinfo.aspx?P... Chcę w nim zrobić: 1. W momencie dotarcia do "umownego" czerwonego pola czyli powiedzmy zapalenia przez licznik diody LED 6000 obr. Atmega...
a instrukcje start timer1 i stop timer1? to tak najprościej, bo wogóle to to można zrobić na timerze0, przerwaniu i jednym liczniku programowym...
Przydał by się kod programu... Jeżeli wyłączasz timer to po jego ponownym włączeniu zaczynasz pewnie liczyć od 0 pomimo, że nie udało się doliczyć do potrzebnej wartości licznika. Ale to tylko przypuszczenia...
Przede wszystkim musisz zacząć kolego od poznania timerów. Do odmierzenia czasu używamy timerów ponieważ zlicza nam czas w tle działania procesora. Używając polecenia wait zatrzymujesz kompletnie uC na ten czas. Konfiguracja dla AtMega8 8Mhz u mnie wygląda tak: Config Timer1 = Timer , Prescale = 256 ''''konfiguracja timera On Timer1 1s ''''przy przerwaniu...
Dzięki za przykład i zainteresowanie. Poradziłam sobie na prostych działaniach. Pierwszy poziom menu to jedności, drugi dziesiątki itd... Klikam MENU, wybieram funkcję, klikam OK. OK mnoży wartość x10, BACK dzieli wartość /10 Potem select case i wykonaj to co w case. MENU zeruje licznik. Pozdrawiam.
Czas wciśnięcia nie jest istotny bo załatwia się to programowo tzn. jak załatwić to programowo poprzez zastosowanie opóźnienia? A ten Timer to mam wykorzystać jako licznik wchodzących osób na schody czy do odmierzenia czasu jako timer?
Tak, tyle mam. Gdybym mniał mniejszy, to bym mniejszą wartość wpisał :) No tak ale lepiej upewnic sie 2x bo czasem jednak mozna cos przeoczyc...
witam Czy da się zrobić jakimś sposobem pomiar przebiegu prostokątnego mając do dyspozycji tylko 1 timer? nie zależy mi specjalnie na precyzji a jedynie na porównaniu wartości zmieniających się do zapisanej. jakbym miał dwa timery to jednym przerwanie co pewien czas i odczyt licznika z drugiego, a tu?
Czyli nic nie zrozumiałeś z linkowanego programu. A szkoda... Zasada działania (podobnie jak dla wielu innych programów), to wykonywanie krytycznych sekcji w przerwaniach. Pętla główna może być zupełnie pusta. W programie głównym: 1. Zdefiniuj sobie 8 zmiennych (Parametr_x), które będą odpowiadały wartościom włączenia każdego z kanałów. Np. 100,47,198......
http://obrazki.elektroda.net/63_12895772... Witam. W tym dziale jestem pierwszy raz, więc nie wiem czy składnie przedstawię swoją konstrukcję. Teraz nakreślę ją ogólnie ale jeżeli temat będzie miał zainteresowanych to go rozszerzę. Ponieważ miałem w swoim ciągniku (URSUS C330) problem z licznikiem obrotów i motogodzin postanowiłem pobawić...
impulsy mozesz liczyć na innym pozostałym liczniku, tylko należy mu ustawić jako źródlo impulsy zewnętrzne to rozwiązanie jest sprzętowe, tylko wymaga wybrania licznika o odpowiednim zakresie no i od czasu zerowanie aby przygotować go na kolejne zliczanie.
Liczenie impulsów samo w sobie jest bezsensowne.. jak już to liczy sie impulsy przez określony czas albo podczas jakiegoś warunku itp, możliwości jest tak dużo że bascom niezostał w to wyposażony (bynajmniej ja tyle wiem). impulsy najłatwiej można zliczać za pomocą zewnętrznego przerwania, przez czas działania timera, timer uruhomić, uruhomić przerwanie,...
MADMAX1978 --> hehe ciekawy temat ;) dla grupy para-militarnej . No ale jeśli to tylko zabawa czy tam gra to żaden problem. Tak jak koledzy mówili możesz użyć dowolnego procka nawet ATmega8 jednak tak prostą rzecz spokojnie da się zrobić na jeszcze mniejszym procku - wystarczy np ATtiny2313 Niestety obawiam się, że sama wiedza jaki to procek - nie wystarczy...
Nie,ma liczyć litry tak jak dystrybutor. Dodano po 2 Nie wiem w jaki sposób dodawać litry do zmiennej po przekroczeniu określonej liczby impulsów z przepływomierza. To co znalazłem to liczone wszystkie w czasie, a tu chyba chodzi o przepełnienie licznika.
Witam Czy można jakoś ustawić symulator Bascom żeby działał w czasie takim jak napisane jest to w programie? W programie mam ustawione zwiększanie licznika co sekundę, a w symulatorze trwa to około 4, 5 sekund. Po wgraniu do mikrokontrolera wszystko jest w porządku. Pozdrawiam.
Nie używałem "Noise Cancel" więc nie wiem czy ma wpływ - ale usuń Timer1 = 54477 W bascomie single może płatać figle zamień na typ LONG ( profilaktycznie ) Częstotliwość = 1000000/Licznik Dla 1 Hz powinieneś otrzymać wynik 1000 Wprowadź zmienną Policzone typu bit. w pętli głównej Do policzone = 0 wait 2 f= 1000000 / f lcd f loop w przerwaniu Licz: if...
Jak nie radzisz sobie na razie z tym timerem to przynajmniej nie nadużywaj bezpodstawnie Wait. To co Ci zaproponuję nie zwalnia Cię od ogarnięcia timerów! Ustal sobie jakie dopuszczasz maksymalne opóźnienie pętli i użyj go tylko raz np. 10ms. Za rozwiązanie, może nie do końca eleganckie, zaraz zbiorę burę od fachowców ale w wielu przypadkach to naprawdę...
Mnie zastanawia jedna rzecz, skoro korzystasz z przerwań to po jakiego grzyba tam input? Zobacz jak mozna to rozwiazac: Odebrano: Disable Urxc ' wylaczenie przerwania na czas trwania aktualnego 'Jesli licznik znakow jest mniejszy od maksymalnego rozmiaru bufora to... If Licz_znaki < Max_znakow Then '...zwieksz licznik znakow, do buforu transmisji...
bascom licznik czasu licznik czasu pracy bascom bascom obsługa czasu
zakodować kanał junkers cerapur podłączyć sterownik wyłączniki bezpieczeństwa podłączenie
jacuzzi dmuchane jacuzzi dmuchane
Nokia Lumia 520 nie uruchamia się - brak reakcji na ładowarkę Mrugające kontrolki na ładowarce po podłączeniu baterii