...Co bym nie robił... wynik zawsze jest ten sam... Nic dziwnego, bo Bascom ignoruje polecenie Load Timer2 = 178 Zmień na Load Timer2 , 178 'lub Timer2= 256 - 178 i sprawdź :-P
' 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...
http://obrazki.elektroda.pl/8267947700_1... Ponad 20 lat temu jako amator hobbysta budowałem proste układy elektroniczne. Studia i styczność z informatyką spowodowały, że porzuciłem hobby pod nazwą "składanie elektroniki" na rzecz "składanie programów komputerowych". W bieżącym roku (2011) dzięki uprzejmości kolegi Jacka.M, który okazał...
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...
http://obrazki.elektroda.pl/8305155600_1... Witam! Jest to moja pierwsza konstrukcja na forum, więc może się przedstawię. Mam na imię Sebastian, jestem uczniem 2 klasy LO w Kielcach. Projekt, który dziś prezentuję to minutnik pracujący w dwóch trybach (o tym za chwilę). Powstał z potrzeby odmierzania i sygnalizowania danego czasu na...
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ę:)
Teraz myślę nad jakimś fajnym menu do ustawiania czasu. 3 przyciski, pierwszym wybieramy czy ustawiamy godziny, minuty, albo sekundy, a pozostałe 2 przyciski - w górę/dół. Jak to rozwiązać? Ponieważ jest to tylko prosty chronometr (nie stopper) należałby zastanowic się co jest priorytetem w ustawianiu i pomiarze czasu przez ten 'zegarek'. Wszak ta...
Na upartego dało by się z wyjść 4017 dołączać różne rezystory do 555, ale odmierzanie czasów, liczonych w minutach, na obwodzie RC, to nie jest dobry pomysł. Inny pomysł to układ z wieloma wyjściami, o stałym czasie załączenia gdzie, czas świecenia LEDa ustalało by się ilością wyjść do niego podłączonych Ale to są rozwiązania "na upartego" mają wady...
http://obrazki.elektroda.pl/8980517500_1... Witam. Dzisiaj po długiej przerwie chciałbym zaprezentować prosty układ który wykonałem już jakiś czas temu (w sumie w innym celu), ale postanowiłem go minimalnie zmodyfikować sprzętowo (dorobienie taśmy ze złączem) i w 100% programowo. Ale od początku... Od czasu przeprowadzenia się do własnego...
Jeśli chodzi o błędy to jeśli się usunie fragment o który się tutaj pytam to program w miarę poprawnie działa czyli aż tak "koślawy" to on nie jest... Moze troche spokojniej; Uzywasz zmiennej dla ktorej nie deklarujesz jej istnienia i wielkosci: dodaj gdzies na poczatku (w części gdzie masz konfiguracje ukladu) Dim Tim As Word oraz dopisz brakujaca...
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
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...
Dodałbym, że Bascom odpowiedzialny jest jeszcze za koklusz i gradobicie. 1. M8 musi być ustawiony na pracę z kwarcu zegarkowego - FUSY. Powoduje to napędzanie M8 z generatora wewnętrznego RC 2. Trzeba skonfigurować Timer2, który jest zdolny do asynchronicznego taktowania z kwarcu 32768Hz - polecam helpa Config Timer2. 3. W przerwaniu od timera2 należy...
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...
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.
Ta pętla nie jest konieczna. Dodałem ją żeby przyciski działały cały czas. Bo jak byś napisał Waitms 1000 to przez całe 1000ms przyciski by nie działały. A tak w pętli co raz masz sprawdzenie przycisków i odmierzanie czasu 10ms. Czyli łączenie te 1000ms i tak uzyskasz a przy okazji przyciski będą normalnie działały.
witam odbiornik podczerwieni mam TSOP 1736 jezeli chodzi o progamik ktory powoduje miganie diody Led to dioda miga 30 razy na 30 sekund wiec odmierzanie czasu jest ok. rezonator mam wybrany :Crystal oscillator, fast rising power (1011), na forum wyczytalem ze tak powinienem ustawic
to może wykorzystasz częsc programu która odpowiada za odmierzanie jednej sekundy np dla zwykłego zegarka pozostaje tylko przelicznie dla danego kwarcu. projektów zegarków troche jest. tak sobie mysle ze problem z pomiarem tzn że silniczki maja taką samą prekdkość może byc zbyt krótki czas pomiaru czyli jedna sekunda w czasie której np dla wartości...
Przerwań nie moge wyłaczyć gdyż w oparciu o nie realizuje odmierzanie czasu potrzebne po to by co 0,5ms zapisać liczbę zliczonych obrotów do wewnętrznej pamięci mikrrokontolera. Rozumiem że pracując w BASCOM AVR nie ma raczej alternatywnych rozwiązań(oprócz wstawek asemblerowych), które przyśpieszyły by prace tego modułu? Przy kwarcu 8MHz cykl maszynowy...
no to w czym grzebał jak nie w fusach? Odpowiedź dotyczyła reszty ustawień (Brown-Out itp). Na koniec; rezystory podciągające na liniach SCL i SDA są? Nie, w oryginalnym projekcie (ZL11AVR, ZL2AVR) również ich nie ma. ...czy aby ATMega8 nie ma domyślnie ustawionego1MHz??? Pewnie ma, bo pierwszy program nie odliczał czasu tak jak powinien. Wtedy chciałem...
Po pierwsze masz nieczytelny schemat z błędami. Jak nie zabezpieczysz tranzystorów sterujących przekaźnikami za pomocą diod to spalisz je? Wejście czujnika z stacyjki też bym zabezpieczył diodami, tak na wszelki wypadek. Żeby napisać program dobrze wiedzieć, jakim zegarem taktujesz procesor. Ja bym proponował jakiś mały, np. 4MHz, bo nie ma sensu tu...
Super dzieki, faktycznie teraz troszke lepiej :-) Dobrze rozumiem? I teraz stosując taka wersję: Poprawiłeś tylko 'syntax' , czyli sposób wpisywania wartośc początkowej do rejestu timera. Rachunek zliczania czasu masz jednak błędny !!!! Prz tym taktowaniu (4 MHz) nie masz żadnej możliwości odmierzenia 100ms przez Timer2; nawet przy zastosowaniu maxymalnego...
bez konieczności zliczania przepełnień. Podobnie, odmierzanie czasu 1 sec. stosując Timer1 również nie wymagałoby zliczania przepełnień. Gdybym chciał jednak mierzyć załóżmy do 1kHz to wymaga aby zliczać przepełnienia? Dodano po 30 w złym obliczeniu 1 sek wartość wynosiła 61630, przy prawidłowym obliczeniu wynosi 34 286 uwzględniając czas 1sek, częstotliwość...
Mozemy pomoc w pisaniu, ale z helpem Bascoma powienienes dac rade, obslyga lcd ->gotwa funkcja -klawisze dasz rade, zmieniasz jedynie zmienne - odmierzanie czasu sporbuj na timer1 co np sekunde bedzie zwiekszal Ci zmienna Czas, w petli gl musisz kontrolowac by wartosc nie przekroczyla zakresu - prostym if'em sprawdzasz wartosc tej zmiennej Czas z czasem...
Pomocy, programik nie działa. Zrobiłem projekt sterownika do pompy przy piecu i fajnie działa (zresztą jest na forum). Ale skończyły mi się procesory z zapasów i kupiłem nowe. O tych z TME pisałem ale wczoraj byłem na giełdzie i zrobiłem zakup. Wszyscy mieli takie same jak z TME (co padały po 2-3 programowaniach) ale jeden miał tanio z demontarzu sprawne....
Na początku witam wszystkich. Mam pytanie dotyczące możliwości zaprogramowania układu logicznego np: AT89C2051 24PU Atmel. Mam pomysł na pewien projekt niestety nie mam pojęcia jak go zrealizować i tutaj proszę o pomoc. Napisałem program w języku FBD (znam tylko ten wiem ze mogę go zamienić na LD bądź STL np: w step 7) realizujący pewną funkcje logiczną....
Wysyłanie i odbieranie RC5 jest w Bascom kodowane automatycznie. Manchesterem swoje dane musisz więc zakodować sam. Poniżej masz wersję którą mam jeszcze w planie dopracować więc nie myśl o niej jak o finalnej. na pewno można coś poprawić. Po skopiowaniu ten kod powinien znajdować się w tym samym folderze co Twój kod. [syntax=basic4gl]$nocompile ' send_by_air...
Witam. Jestem w trakcie budowy wzmacniacza na el84 i z racji, ze mam nowiutkie wyświetlacze OLED 4*20 chciałem je wykorzystać do uatrakcyjnienia wzmacniacza. Planuję prosty sterownik który po włączeniu włącza żarzenie, z opóźnieniem anodowe. Gdy się włączy wyświetla czas pracy wzmacniacza. Wyłączenie polega na odłączeniu napięcia anodowego i z opóźnieniem...
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...
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 ;-)
...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...
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 Nie ma potrzeby az tak komplikowac tak wyjatkowo proste zadanje jak odmierzene czasu 1 sek. Po pierwsze: system ci sie blokuje juz po kilku sekundach...
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.
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...
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.
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....
Tyle że kolega chciał w Bascomie :). Polecam help do bascoma. Konfigurujesz timer, uruchamiasz go i gdy zliczy pewną ilość impulsów wywołuje przerwanie.
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...
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.
Zamiast przerwania od Timera0 odmierzaj czas Timerem1.
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...
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..
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,...
Po dodaniu rezystorów podciągających działa już wyświetlacz i dioda:) Jednak dalej układ nie odmierza czasu
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...
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ę
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.
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ć...
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...
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.
W dodatku jest jeszcze problem z odmierzaniem czasu (...) Albo czy kolega odpowiednio ustawił taktowanie procesora w bitach konfiguracyjnych...
A timerem 2 możesz odmierzać czas.
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ć.
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ść...
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...
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.
Tak,oczywiście ze zamiast waitms muszą by warunki żeby procesor mógł odmierzać czas . Natomiast zawsze nie rozumiałem sensu flag .
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
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 *************************************...
Więc funkcja debounce i timera do odmierzania czasu wykorzystaj.
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.
A to Ci niespodzianka. Bo ja właśnie Waitus używam do precyzyjnego odmierzania czasu i to co do cyklu procesora.
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,...
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...
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. :)
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...
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.
Nie prościej impulsy zliczać za pomocą INTx, w czasie 1s odmierzanej Timerem ? Pomerdało mi się, że Autor chce mierzyć RPM.
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...
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.
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...
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?
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... ;-)
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
mam taki problem a mianowicie zrobiłem taki układzik, w którym po naciśnięciu przycisku ma się załączyć przekaźnik na 30 sekund i wszystko działa ale chciałbym, żeby po ponownym naciśnięciu tego przycisku przed upływem tych 30 sekund odmierzanie czasu zaczynało się od nowa i nie wiem jak to zrobić? prosiłbym o jakieś łopatologiczne rady, gdyż jestem...
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.
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...
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...
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...
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...
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...
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...
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ś...
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.
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....
Wait 1 mi odmierza ze 3,5 sekundy. Serio. Trzeba to zrobić na tych przewaniach. I ma być w miarę dokładny.
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
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 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.
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 :(.
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...
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)
To dobrze własnie widać róznice między danymi producenta a rzeczywistością. Bez tych kondestatorów PCF8583 źle odmierzał czas a to własnie było na tych zaleceniach producenta. Wsatawiłem kondestator i problem zniknął.
Witam. Mam problem z przerwaniami w atmega8. Wcześniej nie potrzebowałem przerwań więc to zagadnienie mnie nie interesowało. Potrzebuję wywołać przerwanie zewnętrzne int0 które uruchomi timer1, a ten zacznie odmierzać czas. Proszę o pomoc. Pierwsza zasadnicza uwaga to nie zauważyłem w programie konfiguracji interruptu0- coś np. takiego: config INT0=...
Fusy mam na 8Mhz, czas odmierza dobrze, czestotliwosc takze. Sprawdzalem miernikiem oraz na 40min testow spieszy sie o jakies 2-3s ( -+ czas reakcji na stoperze).
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.
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.
odmierzanie czasu odmierzanie czasu stm32 timer1 odmierzanie czasu
ariva obrazu dwufunkcyjny ustawić oprogramowanie tablet
17mb170 schemat 17mb170 schemat
Ciśnienie wtrysku Peugeot Partner 1.9 D DW8 Ciśnienie wtrysku Peugeot Partner 1.9 DW8B