Program działa i nawet licznik się zatrzymuje tylko jaką mam pewność że jest to 250ms? chodzi mi o to żeby uzyskać jak największą dokładność. Dzięki za ten przykład, spróbuję... Nie wiem dokładnie , do czego Ci to potrzebne ale przykład z przerwaniem , który podałem wcześniej działa z dokładnością do ~2 cykli zegara(500)ns.Czy to niezbyt dokładnie...
Próbuję uruchomić programowy zegar w Bascom na arduino Mega 2560 Kompiluje się bez problemu ale niestety nie działa. Jakiego 'działania ' się tu spodziewasz? -ma poruszac wskazówki, czy też wskazywac czas na dysplay leżącym w szufladzie? - a może przekładac kartki kalendarza? Nie bardzo będziesz mógł uruchomic 'Bascomowy- softwarowy' zegar na Arduino...
Jeśli chodzi o soft, to powstał szkielet programu. Na razie odmierza to czas, i powinno obsługiwać pilot RC5. W polach „A:” – powinien wyświetlić się adres pilota, „C:” – numer przycisku z pilota. W symulacji programowej poszło, ale na razie nie mogę przeprowadzić prób z braku modelu. Ale żeby stworzyć wersje BETA...
Witam, chciałbym przy użyciu Atmega8 i zewnętrznego kwarcu odmierzać i zliczać setne części sekund, sekundę mogę łatwo wyłapać z timera1 według przykładowych obliczeń 4000000MHz / 256 = 15625 65536 - 15625 = 49911 lub 8000000Mhz / 256 = 31250 65536 - 31250 = 34286 Nie mam jednak pomysłu jak....... Z góry dziękuję za pomocne wypowiedzi. Aby odmierzac...
Jeśli by to nie przeszkadzało to możesz podpiąć kwarc zegarkowy, wtedy na 8 bitowych licznikach na pewno zliczysz sekundę:)
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
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...
Witam. Chciałem sobie zrobić prosty zegarek. Napisałem kod, podłączyłem wszystko na mojej płytce testowej i niby działa, ale ... Za szybko odmierza czas. 1 sekunda trwa tutaj dużo krócej. W ciągu 1 minuty w rzeczywistości, naliczy 170 sekund. ATmega ma ustawiony fusebit na wewnętrzny oscylator 8Mhz, do XTAL1 i XTAL2 mam podłączony kwarc zegarkowy. Kod...
' Trzy przyciski kolejno .... (TSA ;) ' wersja bez przerwań i Timera czas_a as integer ' zmienna czasowa A czas_b as integer czas_c as integer we_a alias pinx.1 ' wejście A we_b alias pinx.2 we_c alias pinx.3 wy_a alias Py.1 ' wyjście A wy_b alias Py.2 wy_c alias Py.3 stan_a as bit ' stan układu monostabilnego A: 0 - czeka, 1- liczy stan_b...
Witam od jakiegoś czasu próbuję w Bascom napisać zegarek (lub coś co precyzyjnie odmierza czas), ale niestety nie wychodzi mi to, mógłby mi ktoś pomoc udzielić wskazówki bo już sie powoli gubię
Witam, Za nic w świecie nie mogę dojść do tego, więc skorzystam z wiedzy Szanowny Kolegów z forum. Otóż mam pewną zabaweczkę zrealizowaną na mega32 (projekt jak ukończę to udostępnię na forum) Ustawione mam przerwanie od Timera0, który ładnie odmierza mi 1 sekundę przy zastosowanym kwarcu 8Mhz. Wszystko pięknie ładnie, ale chciałbym zastosować "kwarc...
Zobacz tak. Napisane specjalnie bez tablic żeby było wiadomo o co chodzi. Dla każdego wyjścia/diody/czy tam lampki definiujesz bajty do jego kontroli. Jeden jest odpowiedzialny za stan, drugi za czas z jakim ma migać, jeśli ma migać i trzeci do odmierzania odcinków czasu. Te zmienne czas mogłyby być stałymi, ale pomyśl że podłączając potencjometry możesz...
Z tego co czytałem mozna podawac czas w zakresie 0- 65536 czyli sie miescisz ale zauwazylem kiedys ze poprawnie działa z wartosciami do 255 tzn to był bascom 51 i komenda waitms, spróbuj tak: waitus 250 waitus 250 waitus 250 waitus 250 I powiedz czy teraz prawidłowo odmierza ten czas 1ms. :)
Niewiem jaki to jest uC, ale uczono mnie ze czasy odmierza sie zazwyczaj timerami.. jesli to byloby to ustrojstwo na '51 nalzezaloby przerwanie 10 ms, zrealizowac na liczniku T2, 16 bitowym w trybie przeladowania. Realizujac odmierzanie czasu na przerwaniu, zawsze masz 10ms odstepy czasu bez bez potrzeby korekcji taktow potrzebnych do kolejnego odmierzania...
...Proszę o jakieś podpowiedzi bądź kawałek kodu co ma być dalej, żeby generować te nieszczęsne 40kHz ... To już wszystko :) Na pinie PB1 masz przecudne 40kHz , jeśli faktycznie procek jest popędzany 8MHz. W ramach testu , możesz w pętli głównej napisać: Do Set Tccr1a.com1a0 'dołącz oc1a do pinu Wait 5 'przez 5 sekund fala 40kHz Reset Tccr1a.com1a0...
A mógłbyś kolego napisać jak realizujesz regulację u2008 za pomocą procka ? Co do waszych powyższych rozważań należy pamiętać o działaniu w bascomie funkcji Load TimerX - jest to wartość jaka pozosała do wywołania przerwania czyli dla timera1 np Load timer1 200 oznacza że timer zostanie załadowany wartością 65535 - 200 = 65335 i po 200 mamy przewanie....
Witam wszystkich! Mam pewien problem i nie wiem jak go rozwiązać. Potrzebuję w bascomie program do odmierzania 10 minut. Funkcją wait nie da się dokładnie odmierzyć takiego czasu (błąd na 10 minutach wynosi ok.30s). Jestem początkujący lecz napisałem program odmierzający 10 minut. Problem wygląda następująco: Dlaczego poniższy program nie odmierza mi...
Witam. Sprawdziłem. bascom wersja 2.0.5.0. program się kompliluje i wyświetla "no errors found", ale poprawiłem deflcdchar na wersję bez nawiasów. Bawiąc się na zestawie uruchomieniowym zauważyłem, że pomimo wyłączonego kursora, czasami się on pojawia. Zawsze jest widoczny w przypadku odmierzania czasy pracy gdy odmierza jednostki sekund. Jest na przykład...
Niby tak jak wykasuje je całkiem to czas odmierza ale bardzo krótko daje stan wysoki na ledy i prawie ich nie widać . Chyba mój algorytm jest do bani :(.
Nie podałeś jeszcze jaki masz kwarc ale kiepsko to widzę... Timery 51 są 16bitowe (max), czyli mogą odliczyć najwyżej 65536 cykli maszynowych, ewentualni mogą zliczzać impulsy zewnętrzne ale to wymaga dodatkowego generatora. Zazwyczaj robi się to tak, że przerwanie jest np. co 10ms i czas 1s czy dowolny inny się odmierza przy pomocy licznika programowego.
Witam ponownie, wymęczyłem kod, który poprawnie ustawia czas w dół i w górę oraz odmierza czas w dół, ale po wyświetleniu cyfry 0 gubi kod - gubi go tylko w trakcie odmierzania czasu, bo przy ustawianiu wszystko jest ok. Czy ktoś mógłby zerknąć, w którym miejscu kodu mam błąd? . Po pierwsze, nie potrzebujesz dwóch timerów aby mierzyc ten sam czas;...
Witam! Może zawracam głowę ale siedze już drugi dzień i zwariowałem od natłoku informacji, które czytam i czytam... Potrzebuję zrobić timer który odliczałby czas w zależności od tego ile razy nacisnąłem przycisk... Powiedzmy naciskam 5 razy - zapala diodę i odmierza 5 sekund po czym gasi diodę. Ale jak w czasie odmierzania nacisne jeszcze klawisz to...
Na pewno nie wystarczy zmienić INT2 na ICP1. Czytałem jakiegoś manuala i zrozumiałem to tak. ICP służy do zapisu sygnałów wchodzących na procesor oraz odmierza ich czas trwania bądź momentu w którym wystąpiły. Działa to tak, że Timer1 (16 bitowy) liczy sobie z taką prędkością jaką zadaje mu preskaler. W chwili gdy na wejściu ICP pojawia się zbocze sygnału...
W programie nie uzywam zadnych przerwan, licznikow ani niczego podobnego. Zadanie uC jest kolejne zalaczanie tranzystorow...... w zaleznosci od tego ktore wejscie zostanie pobudzone. Wiem, ze wait nie odmierza dokladnie czasu ale do tej pory jej dokladnosc w zupelnosci wystarczala...... Rozumiem ze komenda wait 1 moze wymusci oczekiwanie np. 1,5 s ale...
Napisałeś, że spodziewasz się ok 13000 obrotów na sekundę. Licznik 16 bit powinien przyjąć Ci to z ponad czterokrotną nadwyżką. Drugi 8bit timer odmierza Ci czas pomiaru - np.: 1/4 sekundy - zależnie od tego jakiego używasz zegara i preskalera timera. Przerwanie timera oznacza że ukończyłeś pomiar ilości impulsów licznikiem. Wtedy zatrzymujesz timer,...
Mój problem związany jest z ATmega16 a dokładniej napisałem w BASCOMIE prosty program do migania diodą led ten sam program działa na 908515 a tu nie chce działać , tzn nie odmierza takich odstępów czasowych jakie mu podałem instukcją "waitms", procek zaczyna działać dopiero wtedy gdy zdefiniuję mu programowo kwarc instukcją $crystal=1000000 czyli 1...
Zmieniłem FuseBity i faktycznie odmierza tak jak powinien. Napisany przeze mnie program niestety nie działa. Co ciekawe napisałem inny w celu sprawdzenia działania instrukcji warunkowych i pętli: [syntax=basic4gl] $regfile = "m8adef.dat" $crystal = 8000000 Config Pind.0 = Output Config Pind.1 = Output Przekaznik1 Alias Portd.0 Przekaznik2 Alias Portd.1...
Witam i odpowiadam. Jak zrealizowałeś zdekodowanie kodu pilota? Program pisałem w Bascomie , a pilot który używam pracuje w RC5 . Bascom ma gotowe komendy do obsługi " dekodowania" RC5 , tak że obsługa pilota była chyba najmniejszym problemem . Kody do odpowiednich przycisków pilota , można znaleźć w sieci , ja użyłem na szybko zrobionego na płytce...
Nie. To poniżej odmierza czas. Nie jest to bardzo dokładne, ale w większości wypadków wystarczy. Pętla o czasie ok. 1ms wykonuje się 60000 razy i wyłącza diodę. Czas można skrócić zmniejszając 59999. Można też wydłużyć, ale raczej zwiększając Waitms 1 bo zmienna Czas ma "pojemność" <= 65535. Waitms 1 Incr Czas If Czas = 59999 Then 'Po czasie 60s...
...Co masz na mysli piszac "chlapniesz"? Chlapanie tutaj na forum czy w swoim kodzie? :) Myślałem o kodzie ;) Hm skoro widzisz jeszce jakies kwiatki, to bede wdzieczny, jesli sie nimi podzielisz ze mna. :) Jasne Dcf_array(1).28 'dla const index Dcf_array(4).4 dla Dcf_array() As Byte Index jest const , a ma być variable. Tzn....
Macie panowie racje. Generalnie to dawno temu zaczlem przygode z bascomem wtedy na 89C4051 ale poleglem i dalem sobie spokoj na wiele lat. Teraz wrocilem do tematu. Zaczalem od prostackich programow gdzie np delay 1sekunda sluzyl mi do mrugania ledami itd. Wstawialem takich delai wiele i mi diodki mrugaly jak cos tam mialem zglosic. Ale zaczalem sie...
Witam O czym mowa Panowie !?!?. Nie widzę żadnego problemu żeby z procka sterować silnikiem AC. Na wejście INT podaje się przerwanie np. przy pomocy transoptora (dobre rozwiązanie bo jest izolacja jeśli transoptor jest bezpośrednio pod napięciem sieci) a timerem odmierza się czas opóźnienia załączenia triaka w zakresie od 0 do 10ms. I to cała filozofia....
$regfile = "attiny2313.dat" $crystal = 10000000 $hwstack = 32 $swstack = 8 $framesize = 16 Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.1 , Rs = Portb.2 'konfiguracja podłączenia LCD Config Lcd = 16 * 2 Config Timer1 = Counter , Edge = Falling , Noise Cancel = 1 , Prescale = 1 Config Timer0 = Timer...
Witam Zakupiłem w Seguro moduł DCF77 na układzie MAS6180B. Wykorzystałem klasyczny kod Bascom ( mam wersje Bascom 1.11.95 ) Config Dcf77 ? Czy sygnał trzeba podawać przez dodatkowy tranzystor ? Np. przez taki układ http://obrazki.elektroda.pl/8336138700_1...
Należy "podpisać" przesyłane zmienne tak by mikrokontroler jednoznacznie wiedział z którą ze swoich zmiennych skojarzyć ma przesłaną wartość i w niej ją zapisać. Wiele urządzeń ma swoje własne sekwencje bajtów po których własnie mikrokontroler jest w stanie określić co nadeszło. Takie sekwencje nazywają się "ramką". Na przykład System NMEA 0183 z odbiorników...
Witam. Zrobiłem sterownik do swojego obrotowego kolektora słonecznego. Bascom, Atmega8, lcd 4X20 znaków-tryb 4 bit. Problem jest następujący: sterownik za pomocą przekaźników steruje siłownikiem z silnikiem DC lewo - prawo. Miałem problem z zakłóceniami, reset procesora, krzaki na LCD. Działo się to przy rozłączaniu przekaźników. Okazało się że trafko...
przerwanie timera wpływa na polecenia z rodziny Wait - powodują one, w zależności od częstości wydłużenie czasu oczekiwania, dlatego trzeba w takim wypadku odmierzać czas używając timera ;-)
Witam Mam oto taki problem jak ww w temacie. Napisałem program na odmierzanie czasu przerwanie co 1 sekundę i ogólnie po wgraniu programu wszystko działa czas leci i jest wszystko OK. Lecz po chwili a dokładnie 9-14 sekundach wyłącza mi się lcd. Nie wiem w czym jest problem:( A o to program $regfile = "m8def.dat" $crystal = 8000000 '$sim Config...
Zacznij od tego: funkcja wait i pokrewne PRZESTAŁY ISTNIEĆ. Do opóźnień i odmierzania czasu użyj timera i ogólnie poczytaj o timerach.
Ogólnie kwarce o wysokich częstotliwościach są niezbyt dokładne - zwykle +-100ppm w dobrym układzie. Na pewno jednak kwarc jest lepszy niż wewnętrzny RC. Robiłem kiedyś testy i na kwarcu 16MHz bez kalibracji udało się osiągnąć dokładność o ile pamiętam 1-2s na godzinę. Ale jak napisał Ci (może nie do końca) przedmówca (at)Milek7: Najlepiej wtedy w przypadku...
Dokładnie tak jak masz napisane, z tym, że konfigurujesz jeden z timerów do dliczania czasu. Przykładów w Bascomie z obsługą timera znajdziesz bez liku.
Kod wydaje sie ok, przy czym moje walki z odmierzaniem czasu mowia ze trzeba brac poprawke na Bascoma /i to duuuza/. Sprawdzilem pod symulatorem (Bascom) i program dziala, w realnym procku pewnie czasy sie rozjada.
poza tym dlaczego nie używasz sprzętowych timerów jako timerów tylko do generowania przerwań? Kolego może źle mnie zrozumiałeś ale do ustawiania flagi używam Timer0 i właśnie mnie dziwi dlaczego mi się te czasy nie zgadzają Jak do wyznaczenia czasu używam tego samego timera. Tak wygląda obsługa przerwania u mnie : Timer może zliczać czas wprost i w...
Instrukcja WAIT Przeznaczenie: Przerywa działanie programu na określony czas. Składnia: WAIT il_sekund Opis: Instrukcja wstrzymuje działanie programu na podaną ilość sekund. Odmierzany czas jest wartością przybliżoną, więc nie należy stosować tej instrukcji do dokładnego odmierzania czasu. Używanie przerwań, może znacznie wydłużyć działanie instrukcji....
Jeśli wyeliminujesz drgania przycisku, to najprościej to zrealizować podając wyjście przycisku na wejście zegarowe jednego timera (bedzie on zliczał ilość wciśnięć), a drugi timer wykorzystać do odmierzania czasów 1s - dokładnie co 1 s należy kasować licznik pierwszego timera. Ot i wszystko.
http://avr.elektroda.eu/?q=node/39 Tutaj masz ladny opis timera. Z tymze 3 minuty zliczylbys na bardzo wolnym timerze 372 827Hz.
Wszystko zależy jak rozwiązano w danym przypadku sposób liczenia interwałów taktowania zegara, ale typowo w elektronicznych układach odmierzających czas są montowane te typowe kwarce 32768 kHz w cylindrycznej oprawce. Owe kwarce znajdziesz w zegarkach czy to wskazówkowych kwarcowych z budzikiem czy też w płytach głównych PC :) Jeżeli przycisk masz na...
Witam Dim Licznik As Byte Config Timer0 = Timer , Mode = 1 , Gate = Internal Enable Interrupts Enable Timer0 On Timer0 1ms Counter0 = 64535 Start Timer0 Do Loop 1ms: Counter0 = 64535 Start Timer0 Incr Licznik Return A wynika to z tad:czestotliwosc kwarcu (w tym przykladzie-najprosciej,moze byc inny)wstepnie dzielona jest pzez 12 (wynika to z budowy...
W skrócie zajrzałem do noty katalogowej i dowiedziałam się, że do MEGA 16 można podłączyć 2 kwarce. Końcówki to XTAL1 i 2 oraz TOSC1 i 2. Należy pamiętać, że z końcówek TOSC1 i 2, do których można podłączyć kwarc zegarkowy można sterować asynchroniczny timer2, który należy zatrudnić do odmierzania czasu. Do XTAL1 i 2 podłaczysz sobie kwarc o wysokiej...
Wspominałeś o książkach, więc w książce Pana Wiązani "Programowanie mikrokontrolerów AVR w j.BASCOM" na str.159 jest przykład odmierzania 1 sekundy.
zegar odmierza odmierza przerwa odmierza atmega
awaria ekspresu philips sprężarka lodówce filtr wartość średni
bateria parkside naprawa udaru makita
TP.SK713PC.825 Mainboard Features and Troubleshooting Amica kuchnia - kod 18702: interpretacja i rozwiązania