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...
Nie rozumiem jak przerwanie od licznik 8 bitowe mialoby przeszkadzac w dzialaniu pozostalych przerwan czy calego programu.. Przerwanie np przy 16Mhz bedzie generowane 62500 /preskaler na sek od licznika 8 bitowego, a zajętość (stan CLI) procesora oceniam na ponizej 1 uS co chyba nie wplynie na pozostale zadania procesora.
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...
' 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...
...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...
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...
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...
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 ;-)
A kondensatory jakieś przy tym kwarcu masz?
http://avr.elektroda.eu/?q=node/39 Tutaj masz ladny opis timera. Z tymze 3 minuty zliczylbys na bardzo wolnym timerze 372 827Hz.
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.
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.
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...
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...
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...
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.
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.
Zamiast przerwania od Timera0 odmierzaj czas Timerem1.
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....
Tak, wiem, ale T0 zlicza impulsy drogi, a T1 odmierza czas :)
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.
Po dodaniu rezystorów podciągających działa już wyświetlacz i dioda:) Jednak dalej układ nie odmierza czasu
Zegar na Timer0 ruszył, natomiast PWM jest zrobione na Timer1. Przyczyną nie działania Timer0 to procedura RC5(!!??) Teraz tylko pozostało wyregulować odmierzanie czasu..
Prawie wszystko jest nie tak - oczekiwanie w przerwaniu, brak eliminacji drgań. To nie tak się robi - potrzebujesz przerwania timera zgłaszanego ze stałą częstotliwością, np. 100 Hz, i w nim robisz wszystko - sprawdzasz stan przycisku i odmierzasz czasy impulsów.
Pytanie czy odczyt F_CPU jest prawidłowy (z tego co pojmuję to pochodzi on z ustawień w Eclipse jako 8000000) ??? No bo może to taktowanie nie jest do końca takie jak ustawiam w MKCalculator.. Zdaje się, że poświęciłem kilka zdań w książce skąd bierze się F_CPU, a bierze się z pliku "makefile" który to z kolei jest automatycznie generowany przez ECLIPSE....
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ę
OK, ale jak w bascomie ma wygłądać przykładowy program na odliczenie czasu 100ms????????????? :?
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...
źle myślisz. Przerwanie masz 7372800 / 256 / 200 razy na sekundę, a w każdym wywołaniu obsługi przerwania odliczasz sobie dodając 1, aż odliczysz do 144, co oznacza, że upłynęła sekunda (mniej więcej, bo nie wiem dokładnie, co w Bascomie robi tajemnicze "Load Timer0 = 200").
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.
na paskach LED WS2812B oprogramowanie w Bascomie. A nie udostępniłbyś fragmentów kodu który to obsługuje? Bo o ile kojarzę, to te diody potrzebują precyzyjnego odmierzania czasu przy transmisji danych. Jakoś tak do tej pory spotykałem się z opiniami, że Bascom nie bardzo się do tego nadaje... ;-)
Można jeszcze sprawdzić, czy generator w PCFie pracuje, co sekunda powinien być impuls na wyjściu INT, sprawdź to, i ja też mam kondensator przy samych nóżkach, za diodami, bo był trochę oddalony i wtedy nie odmierzał tak dokładnie.
Załóżmy że chcesz uzyskać 100Hz. Procesor kreci się na przykład 8MHz. Timer napędzany jest sygnałem takim jak procesor, ale można ten sygnał podzielić tak żeby, na przykład co 1024 takty procesora do Timera trafiał jeden takt. Taki podział uzyskuje się za pomoca preskalera. Teraz wiadomo że Timer jest już taktowany wolniej bo co 1024 takty z 8MHz, ale...
Co rozumiesz pod pojęciem impuls, bo może to przybliżyłoby nam, co chcesz osiągnąć ? Najprawdopodobniej będziesz potrzebował obsługiwać przerwania OnCompare1A , w których raz włączysz pin, drugi raz go wyłączysz i ustawisz inne odmierzanie czasu.
Więc funkcja debounce i timera do odmierzania czasu wykorzystaj.
. Jak w bascomie dokładnie odmierzać czas ??? - wymagana dokładność najlepiej rzędu 0.1-0.25 mikrosekundy . P.S. Stosuję zewnętrzny zegar dla mikroprocesora, dokładnie 10 MHz, a więc okres wynosi 0.1 us. Mam też inny precyzyjny rezonator o f=20MHz i wówczas okres cyklu wynosiłby T=0.05 us.
Podaje program z komentarzem. ............ Ps. Nie ładowałem do licznika wartości bo potrzebuje dwóch pełnych przeładowań. W programie jest zupenie nie ważne ile tych przepełnień wystpuje; istotne aby rachunek odmierzanych odcinków czasu był zgodny z zamierzonym. Skoro jesteś zmuszony zliczać przepełnienia (co jest rzeczą absolutnie normalną), więc...
A to Ci niespodzianka. Bo ja właśnie Waitus używam do precyzyjnego odmierzania czasu i to co do cyklu procesora.
A timerem 2 możesz odmierzać czas.
Nie odpisałeś mi na wszystkie pytania??? :sm9: Ja bym zajął się teraz czujnikiem temperatury, przynajmniej główny ekran nie będzie taki pusty i kijowy. Jak ustawianie godzin chodzi to z RTC damy na razie spokój? To najtrudniejszy chyba w programowaniu układ i zostawiłbym go na koniec, lub w ogóle z niego zrezygnujemy? Bo tak na prawdę nie jest on potrzebny,...
już kombinowałem na kilka sposobów i niestety nie mogę sobie do końca tego wyobrazić!! A może zamieścisz w BASCOMie kawałek kodu jak byś to rozwiązał?
Ja tam proponuje ładowanie tajmera poprzez Tlx=coś i thx=coś gdzie x to numer tajmera(0 lub 1) w ten sposób zawsze wiemy co nam się ładuje i gdzie. W szczególności jeżeli zależy nam na szybkim przeładowaniu tajmera np jeżeli tryb 1 to zaraz na początku obsługi tajmera dajemy tlx=coś a dopiero potem thx=coś. W ten sposób ładujemy najpierw tą wartość...
Tak,oczywiście ze zamiast waitms muszą by warunki żeby procesor mógł odmierzać czas . Natomiast zawsze nie rozumiałem sensu flag .
Nie prościej impulsy zliczać za pomocą INTx, w czasie 1s odmierzanej Timerem ? Pomerdało mi się, że Autor chce mierzyć RPM.
Ja wolę przerwania: Dim Sekunda as byte Config Timer1 = Timer , Prescale = 256 On Timer1 Odmierz_1s Enable Interrupts Enable Timer1 do loop end Odmierz_1s: Counter1 = Counter1 + 34286 Incr Sekunda Return Podałem ci "szkielet" programu do odmierzania 1 sekundy za pomocą timera1. Pamiętaj że procek musi go posiadać i musi być taktowany przez oscylator...
Tak się objawiają uszkodzone czujniki. Sprawdź go jeszcze raz w bascomie. Pozatym masz jakieś dziwne te delay'e czemu używasz funkcji owire_delay przecież masz _delay_ms? Trochę wróżąc z kodu wnioskuje że funkcja delay odmierza 0,25us * przekazany argument. Piszesz w komenarzach że niby ta pętla for + funkcja poniżej jej trwa 470ms. Jak nie przestawiałeś...
[quote="lukaskay"] a gdybym czas oczekiwania zwiększył do 15 s wtedy dokładność wzrosła by mi do 4 obr/min mogę użyć komendy: Wait 15 ?? ale wtedy chyba dojdzie do przepełnienia licznika?? quote] Przy twoich parametrach silnika el., oczywiscie ze dojdzie do przepelnienia licznika0. Ponadto uwazam ze stosowanie dyrektywy "Wait" w pomiarach nie jest najlepszym...
Warto wiedzieć, że jeśli pracują przerwania i użyjesz jakiegoś wait w pętli głównej to nigdy nie będzie to "wait" taki o jaki Ci chodziło... przerwania zabierają czas procesorowi i generalnie dłużej mu schodzi ze wszystkim łącznie z odmierzaniem i tak stosunkowo mało dokładnego wait.
O układ DS3231 lekko zahaczyłem za sprawą kolegi mirrek-a. Polecał zastosowanie układu dla podobnych projektów ze względu na najlepsze parametry ze znanych układów zegarkowych. Pomyślę o proponowanym rozwiązaniu uśpienia procka. W pętli głównej procesor nie robi nic. ************************************* Do Loop End *************************************...
Niebardzo wiem jak mialbym to zrobic z poziomu BASCOMu! Rzeczywiscie uC sa nowiutkie dzis je pierwszy raz programowalem. Nie znam sie na tym zbyt dobrze wiec prosze powiedz dokladnie co mam ustawic i gdzie zeby czas byl odmierzany prawidlowo
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. :)
Po pierwsze pozbądź się waitów, po drugie przerwania. Podam hasła do opracowania: Timery - odmierzanie czasu, przerwania, timing zdarzeń Przyciski - podciąganie, odczyt z rejestru PINn
A czy w BASCOMie komenda 'wait 1' przy dyrektywie $crystal=<fosc> nie załatwi wszystkiego ?? A jeśli chodzi o precyzyjne odmierzanie czasu to polecam asembler i obsługe timera w przerwaniu. To jest chyba najdokładniejszy sposób. Pozdrawiam.
Witam. Ja to widzę tak: pytanie podstawowe - Eksport jakiego rodzju danych ? Jeśli odpowiesz sobie, że np. eksportujesz dane o temperaturze w pokoju co 10 minut, to robisz termometr na Mega8 wykorzystując jakiś czujnik temperatury, odmierzasz 10 minut, czytasz temperaturę, posyłasz po RS232. Z drugiej strony masz odpalony programik, który zapisuje dane...
W dodatku jest jeszcze problem z odmierzaniem czasu (...) Albo czy kolega odpowiednio ustawił taktowanie procesora w bitach konfiguracyjnych...
A może by tak zastosować pętlę Do - Loop. Obecnie program przeleci raz i nici z inkrementowania. Dodatkowo bez END pewnie pójdzie gdzieś w maliny. Jeśli podczas oczekiwania procesor nie musi nic robić polecam instrukcję Wait (i podobne) do odmierzania czasu.
No dobrze, ale jaka dokładność ma być. 1 minuta, 1 godzina, 1 sekunda? Jaki używasz zegar do odmierzana czasu, czy to jakiś PCF?
Odkopię temat i coś opracuję przez weekend Z góry dziękuję i cierpliwie czekam. Aha..zapomniałbym o tej różnicy. W jednym kodzie do odmierzenia sekundy wykorzystują funkcję millis() (licza do 1000ms) a w tym Bascom`owym używają Int od RTC (co 1s). Więc te odmierzenie sekundy będzie tu miało znaczenie. U mnie czas już jest w kodzie odmierzany czy nie...
Jakie chcesz odmierzać odcinki tego czasu? Jeśli długie np 1h to atmega bez kwarcu będzie dość niedokładna, jeśli odcinki czasu mają być bardzo długie(12h) i ma je odmierzać bardzo dokładnie będziesz niestety musiał użyć jakiegoś RTC.
aha to źle zrozumiałem. myślałem że jak pilot nadaje to zegar staje. no to w takim układzie podejrzewam że getrc5 używał właśnie do odbioru kodu timera0. Zmień w swoim programie odmierzanie czasu z timera 0 na timer1 i zacznie działać.
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...
Trzeba skracać czas który Timer ma odmierzać. W tym trybie zrobisz to najłatwiej w przerwaniu. Zaraz pod "Obrot:" użyj jednej z komend Load albo Timer= Po prostu teraz Timer liczy od 0 do 255. Jak coś do niego wpiszesz to będzie liczył, na przykład, od 128 do 255 czyli krócej. Dodaj sobie potencjometr do układu i będziesz mógł sterować prędkością w...
Witam potrzebne jest mi urządzonko zrobione na AVR np 2313. Urządzonko to ma mieć układ czasowy odmierzający czas do 4 min po którym na jednym z portów ma sie pokazać stan wysoki. Odmierzanie czasu ma być zainicjowane stanem niskim na innym porcie . Cykl ten ma sie powtórzyć 3 razy. Jeżeli na porcie inicjującym odliczanie po 3 krotnym pokazaniu sie...
Problem w tym ze za pomoca bascoma chyba nie da sie wygeneroawac czegos takiego: http://www.bigmike.it/ircontrol/images/M... (po wygeneraowaniu czekamy 62ms i znowu to samo) Napisalem kod z toggle i nic - zero reakcji ze strony aparatu. podchodząc w ten sposób to szybko okaże ci się, że pisząc ten program np w języku C - też nic nie zadziała...
Te impulsy wejściowe i wyjście ma być na tym samym pinie ? PD.0? Jeśli nie to ustawiamy przerwanie na INT0 i w obsłudze przerwania zwiększamy zmienną. Jeśli zmienna osiągnie dziesięć ustawiamy wyjscie na stan wysoki. Jednocześnie timer zlicza czas pomiędzy impulsami i jeśeli jest większy niż 60 sekund ustawia wyjście na stan niski. Podumowując: Przerwanie...
U mnie wszystko dzała OK. No tylko long to 31 bitów a nie 32 (przynajmniej w basconie) ale to zmartwienie w 2077 (czy coś koło tego). Ja odmierzam czas od 01.01.2000. Pozdrawiam.
Napisałem jakiś czas temu programik obsługi serwa i działa bardzo dobrze. Do odmierzania długości stanu "H" impulsów sterujących używałem tylko 8-bitowego TIMER0, w moim zastosowaniu zamiast odmierzać odstępy 20ms zrobiłem synchronizację kolejnych impulsów do impulsów z odbiornika. Wszystko Full- BASCOM :-) działa dobrze. Przy kwarcu 8Mhz, prescale=64...
Filmik przedstawiający świecenie całej matrycy. Tylko narazie to trochę biednie wygląda, bo zauważyłem, że kilka diod nie styka, będę musiał poprawić je, no i funkcja do odmierzania czasu też jest biedna :P Mam nadzieje że jako zrobie to już na timerze to bedzie lepiej ;) Biednie wygląda, bo każda dioda jest włączona tylko przez 1/20 czasu - żeby uzyskać...
Zrobilem jakis czas temu zegar na 89C2051 z kwarcem 12Mhz.....w Bascomie (!!!!) i walil sie tylko ok 0,5 sek na dobe! Program byl bardzo prosty i wykorzystywal do odliczania czasu timer 16-bitowy. Wada: koniecznosc ustawiania czasu po oodlaczeniu zasilania i rzeczywiscie lepiej w tym przypadku zastosowac RTC. Ale wykorzystujac korekcje czasu, jak ktos...
A czy w programie uzywasz jakichs przerwan? np od licznikow? Naturalnym jest ze czas moze sie wtedy znacznie wydluzyc. Ta instrukcja nie sluzy do odmierzania dokladnego czasu, tylko przyblizona. (zajrzyj do pliku pomocy, jest tam to opisane)
Przeczytaj to: http://www.elektroda.pl/rtvforum/topic22... Powinno Ci nieco rozjaśnić sposób odmierzania czasu przy użyciu uC '51. Jedyny sensowny sposób to ten podany przezemnie wyżej.
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...
po pierwsze jako $crystal podaj 16000000 (Twój kwarc to najprawdopodobniej 16 MHz) - o ile masz ustawione jako zewnętrzny kwarc we fusebitach co do dokładnego odmierzania czasu to jeśli na prawdę tego chcesz to odpuść sobie instrukcje typu wait, które nigdy nie będą dokładne. Polecam poczytać conieco o timerach, które mogą odmierzać czas dużo prościej...
Witam. Na początek napiszę że to ma być mój pierwszy program napisany w tym języku i pierwszy kontakt z mikrokontrolerami. Nie mam pomysłu jak się zabrać za uruchomienie jakiegoś "zegara". Wydaje mi się że wtrącenie w pytaniu „jakiegoś zegara” wprowadza ludzi w błąd. Z dalszej części wynika że raczej potrzebujesz obsługi TIMERA wbudowanego...
Timer to dobry pomysł a w ogóle juz nie wspomne o łatwosci jego obsługi w BASCOM'ie, jeśli nie robiłeś tego jeszcze to nie martw sie przyjdzie Ci to napewno bez problemu. Jeżeli chodzi o dwa kanały no to po prostu wykozystasz dwa timery. Gorzej z odmierzaniem czasu bo timery się skończyły (no chyba że 89c52), w tym przypadku bez problem można by poradzić...
Z tego co pamiętam przy pracy asynchronicznej, procesor jest taktowany wewnętrznym oscylatorem RC i precyzja odmierzania czasu zależy od oscylatora kwarcowego 32768Hz (a nie 32kHz), a nie od częstotliwości oscylatora RC taktującego procesor. Należy pamiętać aby ustawić Fuse na wewnętrzny oscylator RC.
Kawałek kodu, który powinien Ci pomóc z odmierzaniem czasu: Odmierz_1s: Load Timer1 = 12500 Incr Licz_10ms If Licz_10ms = 10 Then Licz_10ms = 0 End If Return Zlicz: Incr Czestotliwosc Return Odmierza 1s, a potem zlicza ilość przerwań na timer0. Przerób na swój kwarc.
Wait 1 mi odmierza ze 3,5 sekundy. Serio. Trzeba to zrobić na tych przewaniach. I ma być w miarę dokładny.
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...
Jeden problem rozwiązany Jak zrobić zmienny waitms... Zerknąć do Help-a i tam przeczytać , że argumentem funkcji Waitms jest Byte , czyli maksymalna wartość to 255. Jeśli dokładność odmierzanego czasu może być PI * OKO , to skorzystać z dobrodziejstwa , jakim jest Subroutine(Arg) lub Gosub To Label .Jeśli chcemy osiągnąć w miarę dużą dokładność , to...
Na temat timerów nie powiem ci za wiele, bo się nie znam. Ja tylko odmierzam około 1sek odcinki w swoim timerze i to mi wystarcza. Nie zagłębiałem się jeszcze bo nie miałem potrzeby takiej.
Chodziło tylko o zamianę Timer1 na Timer0, ale ok mogę pokazać który nie działa... a właściwie który już działa... dobrałem wartości prescale i load całkowicie doświadczalnie... miałem nadzieje że ktoś wyjaśni co i jak z tym przy okazji ale ok... Przy taktowaniu 16 MHz; Versja 0 dla Timer1 masz zalozone: const Timer1Reload = 700 config timer1=timer,...
To nie jest skomplikowane tylko zamiast docinać można wytłumaczyć. Jedna sekunda ma 1000 (słownie tysiąc) milisekund. Herz określa ile razy coś dzieje się na sekundę 1 Herz - coś dzieje się raz na sekundę 50Hz - coś dzieje się 50 x na sekundę Teraz weź 1000ms(czyli sekundę) podziel przez 50 razy czyli 50Hz i wyjdzie Ci 20ms... Potem to już logiczne...
W ISIS DS18B20 nie będzie działał ci szybciej niż chyba 2MHz. Jest to ograniczenie symulatora, poczytaj sobie w HELPIE ISISa. Też walczyłem z tym jakiś czas, potem się wyjaśniło. Przecież to tylko symulator, chociaż i tak chyba najlepszy. Ustaw w ISIS procek i program na 2 MHz i będzie śmigało, potem przy wgraniu do rzeczywistego Uc zwiększysz. Jeśli...
Tak kwarc jest z kondensatorami 22pF. Ten egzemplarz Atmegi potraktowany Powyższymi fusebitami wylądował już w pawlaczu. Fusebity ustawione w obecnym uc to: hfuse=c9 lfuse=ff Z tak ustawionymi fuse bitami układ spieszy "tylko" 12s na godzine. Czy taka precyzja jest standardem przy odmierzaniu czasu w ten sposób, czy może da się z tym coś jeszcze zrobić?
Wie ktos cos moze na temat prawidłowego odmierzania czasu w ATMega8L, jak skonfigurować jeden z wewnętrznych Timerów i jaki oscylator zastosować by uzyskać przerwanie dokładnie co 1s ? Gdzie w programie zadeklarować wybrany rezonator?
Napisz dokładnie co chcesz otrzymać? Jakie jest zadanie bo opisałeś to niejasno. Chcesz odmierzać czas 1 sekundy czy liczyć impulsy zewnętrzne? Jaki zegar dla procka? robiw
Za to mam problem z temperaturą. W pokoju mam 20, może 22 stopnie, a termometry pokazują 25, a przy niektórych włączeniach, nawet 29 stopni. Pomiędzy jednym a drugim 0.2, 0.3 stopnia różnicy. Rezystor podciągający użyłem 3.3K, zamiast 4.7K, ale to chyba nie jest wina tego. Wartośc rezystora podciągającego magistralę 1-wire nie jest krytyczna i to w...
Jeżeli chcesz precyzyjnie odmierzać / wyznaczać częstotliwość powinieneś korzystać z przerwań Timera. Zależy też jakie mają być te impulsy, jakie wypełnienie etc.
A proszę bardzo wersję: Compiler version: 2.0.2.1 Compiler build: 2.0.2.1.0 IDE version: 2.0.2.0 Windows OS: Windows 7 Proffesional SP1 Oryginał legalny nie ma się czego wstydzić. Timera używam tylko jednego z odmierzaniem około 5 sekund. 'konfigurujemy timer wywoływany co jakiś czas (patrz procedura) Config Timer0 = Counter , Prescale = 1024...
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 :(.
tak jest w bascomie i koniec, nic na to nie poradzisz prawdopodobnie czas potrzebny na przeliczenie ile porezeba instrukcji na 1 uS jest porównywalnie duzy z czasem 1uS dlatego było by to bez sensu. jeśli chcesz zrobić programowane PWM to użyj przerwania licznika do odmierzania czasu i całłą obługe zrób w przerwaniu. ja tak czasami robie gdy potrzebuje...
160000 Hz? Raczej 16000000 Hz Jeśli masz procesor który obsługuje Timer2 w trybie asynchronicznym możesz podpiąć do niego kwarc zegarkowy 32768 Hz i odmierzać czas dokładniej, gdyż typowe kwarce typu 16000000Hz mają zwykle małą dokładność i trzeba robić doświadczalnie korekty, bo się rozjeżdżają.
To chyba mi nie pomoże. Jesem początkujący w bascomie 01ale z tego co wiem procesor wyjść INT ma 2 lub 3. A ja mam w planach zrobienie 4 odbiorników więc to chyba wyklucza taki sposób. Chyba że każde wyjście da się ustawić jako int? Przy jednym tylko wejściu wystarczyłoby podłączenie wejścia pod interrupt i w jego subrutynie zablokowanie tego interruptu...
Coś tu chyba nie pasuje ;) W opisie projektu autor napisał : "Na wspólną sondę dodatnią (poziomu i suchobiegu) podawane jest napięcie raz na ok. 1s przez ok. 100ms, o prądzie rzędu kilku mA. " ...a weź podziel 8MHz przez preskaler 64 i interwał timera 500 (Load Timer 500) to wyjdzie Tobie 250Hz... Zmienna typu Word sonda_Hz kręci się w kółko i przepełnia...
Witam. Mam następujący problem chcę zrobić regulator fazowy oświetlenia sterowany z pilota RC5 o ile sterowanie fazowe i obsługa RC5 osobno nie nastręczają problemów o tyle razem pojawia się problem zakłócania pracy regulacji fazowej przez odbiór sygnału z pilota. Da się to jakoś obejść w bascomie ? Opóźnienie od przejścia przez zero sieci do załączenia...
Atmegi mają wewnętrzny układ taktujący 1MHz, do tego trzeba zmienić ustawienia programowania w stk200 (przełączyć fuse na zewnętrzny kwarc). co do zworki - jakaś bzdura, 1wire niewymaga żadnych zworek, 1-wire to kwestja programu, timer służy do odmierzania czasu i niemusi byc połączony z portem. co do i2c- niewiem...
Funkcja wait w Bascom nie jest dokładna i na dobra sprawę nie należy jej stosować do odmierznia czasu. Aby dokładnie odmierzać czs należy posłuzyć się timerami. Jakie dałeś kondensatory do kwarca?
zegar odmierza odmierza przerwa odmierza atmega
turbo diesla benzyny ustawienia fabryczne xiaomi trawienie elektrolityczne
traktorek silnik briggs traktorek silnik briggs
Zmiana hasła do poczty a połączenie z drukarką Kamery z własnym zasilaniem i podglądem na telefon