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...
Witam Mam pewien problem z odmierzaniem czasu za pomocą ATmegi. założeniem był prosty licznik czasu pracy urządzenia. Za pomocą timera odliczam określony czas po przepełnieniu timera zwiększam zmienną w pętli tak żeby uzyskać sekundę, następnie kolejna pętla zwiększająca minuty itd. Użyłem Atmega8 częstotliwość taktowania to 8MHz z wewnętrznego źródła....
Procek pracuje na wewnętrznym oscylatorze, ale odmierzanie czasu poleceniami wait i waitms szło mu całkiem przyzwoicie, więc raczej 8MHz jest. ...czy aby ATMega8 nie ma domyślnie ustawionego1MHz??? Nie wiem gdzie jest zadeklarowana, używam BascomAVR. Tu: http://obrazki.elektroda.pl/8600321800_1... ...i tu: http://obrazki.elektroda.pl/9274839800_1...
Kwarc podczas programowania nie musi być podłączony o ile uC korzysta z WEWNĘTRZNEGO generatora ("fusy"dla ATMEGA 8 i podobnych = 0001 lub 0010 lub 0011 lub 0100), Jeżeli przełączono "fusy" na generator ZEWNETRZNY czyli kwarc lub generator podający z zewnątrz gotowy sygnał taktujący to podczas programowania generator/kwarc musi być podłączony. Na kwarcu...
Load Timer 250 pojawił się 2 razy bo pierwszy jest wykonyawny przed wejściem do pętli a następny w pętli. W tym programie jest dodatkowa zmienna Licz_8ms bo Timer0 nie może odmierzyć całej sekundy w jednym przebiegu. Przy użyciu Timer1 i odpowiedniego kwarcu można osiągnąć przerwania co 1 s. Jest to korzystne bo odmierzanie czasu jest nieco dokładniejsze....
Dokładne odmierzanie czasu realizuje się przy wykorzystaniu timera2 z kwarcem zegarkowym na przynależnych mu wejściach... Jak nie chcesz się bawić z takim kwarcem to jest jesze możliwość odmierzania sekundy na timerze 16-bitowym... Przy ustawieniach... 1MHz... prescal 64... wartość początkowa 49911... Pozdrawiam Rafał...
Witam Temat być może pojawia się po raz wtóry, ale poprzednie tematy nie rozwiązały problemu. Chcę wykonać prosty zegarek cyfrowy oparty na uC ATMEGA8(L) oraz wyświetlaczu LCD 2x24. Wszystko chodzi bez zarzutów, gdyby nie fakt złego odliczania czasu przez mój uC. Otóż mój ATMEGA8 pracuje z kwarcem zewnętrznym 8MHz + dwa kondensatory ceramiczne 22pF...
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ł...
Tutorial do avr taki znalazłem: http://avr.elektroda.eu/?q=node/8 Jak byś czegoś w sieci szukał, to raczej unikaj tutoriala z patron.net, uczy złych nawyków i jest nieco nie na czasie. Pomiar częstotliwośći na AVR realizuje się w miarę łatwo, przy wykorzystaniu timerów, jeden timer pracuje jako licznik impulsów z zewnątrz, a drugi odmierza czas, mozna...
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...
http://obrazki.elektroda.pl/8751319800_1... Witam, chciałem zaprezentować termometr pokojowy, który został zbudowany dla rodziców dziewczyny do monitorowania temperatury pieca. Termometr został zbudowany z wykorzystaniem mikrokontrolera Atemga8 w obudowie TQFP32, a za czujnik temperatury służy DS18B20. Płytki pochodzą z innych projektów....
Witam Walczę od jakiegoś czasu z timerem, próbuję odmierzać czas, no i niestety zegar mi się delikatnie "rozjeżdża". Moglibyście Panowie podpowiedzieć mi, gdzie robię błąd. atmega8 z kwarcem 8Mhz. [syntax=c] #include <avr/io.h> #include "lcd_lib.c" #include <avr/interrupt.h> volatile char time_s=0; volatile char time_m=0; volatile char time_h=0;...
Witam, Chciałbym opóźnić załączenia urządzenia o 69800us (wartość zapisana w zmiennej) Jak to zrobić z dokładnością do 0.1ms? Rozwiązanie za pomocą pętli for i delay_us odpada bo wprowadzi to dodatkowe błędy związane z wykonaniem pętli for (3 takty zegara). Podzielenie wartości przez 1000 też nie wiele da bo otrzymam 69ms Proszę o rade:)
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...
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...
Witam. Chciałbym się upewnić czy podchodzę do zagadnienia prawidłowo a mianowicie : Dioda Led ma się zapalać co 1[s] korzystając z przerwań generowanych przez timer 8 bitowy. Podszedłem do tego tak ,że częstotliwość taktowania procesora ( 1[MHz] )podzieliłem preskalerem przez 64 . W wyniku czego 1 przerwanie wykonuje się w ciągu 255/15626 [s]. Oznacza...
Witam. Mam taki oto problem.. piszę w bascomie program, którym potrzebuję dosc precyzyjnie odmierzac czas za pomoca timera, ale jak patrze na efekty to czas odliczany nijak się ma do tego co mi pokazuje zegarek.. zakladam ze moj zegarek chodzi dobrze :) (bo chodzi dobrze).. wiec raczej problem jest z mikrokontrolerem i moim pisaniem.... Podaje kod ów...
Witam Potrzebuje odmierzać czas(jak najdokladniej) od 0.01s do max 1s, w zależności od wartości którą otrzymam z zewnątrz. Problem polega na tym, ze timera 16bitowego nie moge wykorzystać bo jest juz uzywany. Program pisze w C pod Atmege8. F_CPU=8Mhz
Witam, Chce zmierzyć czas pomiędzy dwoma zdarzeniami mianowicie pomiędzy wystawieniem stanu niskiego na wyjściu PD7 a pojawieniem się stanu niskiego na wejściu PB0 (programowo podciągnięte do Vcc). Czas ten jest wynosi ok 70ms dlatego używam licznika 16 bitowego z prescalerem =64. Jeśli chodzi o dokładność tego pomiaru to zależy mi na 0,5ms, przy tak...
Witam Zamierzam jako laik powalczyć z takim projektem jak układ czasowy. Czyli naciskamy przycisk następuje odliczanie np 3 minuty i potem się układ wyłancza się. Proszę o jakieś propozycje programu bo mi najgorzej jest wystartować. A mając jakiś szkic mogę walczyć z układem... Układ chce zrobić na Atmega8 bo tylko do niego mam programator. Pozdrawiam....
Wiatm. Jestem początkujący w tej dziedzinie. Jeste wiele projektów liczących czas (np. http://www.elektroda.pl/rtvforum/topic10... ) do zegarów i nie tylko. Nie znam języka C++, a pierwsze kroki stawiam za pomocą micropascala (znam pascala i delphi). Chciałbym nauczyć się jak liczyć czas, tzn. tak na chłopski rozum jak to się dzieje a z resztą...
Właściwie dwa pytania ale jedno z większym priorytetem ;) Otóż, projektuje odległościomierz. Zamysł jest następujący 1. Załączam tranzystor który steruje napięciem dla nadajnika. 2. Włączam zliczanie czasu 3. Gdy pojawi się sygnał na odbiorniku. Wyłączam naliczenie i prezentuje wynik. Timer skonfigurowałem, żeby przerywał co 1us jednak nie jest to zbyt...
Witam. Chciałbym zmierzyć czas jaki występuje pomiedzy dwoma stanami tzn. Jeżeli zasłaniam transoptor to chciałbym żeby układ zaczął liczyć czas a kończy liczyć kiedy go odsłaniam. Napisałem kod ale nie chce coś działać. Oto ten kod: $regfile = "m8def.dat" $crystal = 1000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Rs = Portb.1 , E = Portd.0...
Witam, Zbudowałem swojego czasu timer odliczający sekundy na Atmega8 ale zauważyłem, że jak zatrzymuje go przyciskiem kilk razy i włączam, to sekunda jest niepełna. Zapewne jest to spowodowane zapisem jego wartości w jakimś rejestrze i chciałbym móc go kasować do końca... mój kod jest dostępny tutaj: http://mikrokontrolery.blogspot.com/2011...
Witam. Jeżeli nie ten dział to przepraszam i proszę o przeniesienie do odpowiedniego działu. Napisałem program do pomiaru czasu trwania stanu niskiego. $regfile = "m8def.dat" $crystal = 16000000 Config Lcd = 16 * 2 Enable Interrupts Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5...
Witam Zrobiłem sobie zegarek na ATmega8. Ustawiłem wewnętrzny "kwarc" na 8Mhz ale sekunda trwa u mnie krócej o kilkanaście ms i po 1 minucie zegarek śpieszy kilka sekund :/ powiedzcie mi co tu jest źle. przecież preskaler jest dobrze ustawiony. #define cbi(add,bit) ((add) &=~(1<<bit)); #define sbi(add,bit)...
Witam wszystkich Mam takie oto zadanie: po wciśnięciu przycisku ma zacząć się odliczanie czasu (od 999 do zera). Wartość na bieżąco wyświetlana na wyświetlaczu 3 seg. ze wspólną anodą . Z obsługą wyświetlacza dam sobie radę, ale z timerów jeszcze nigdy nie korzystałem. Prosiłbym o linka jeśli ktoś widział gdzieś podobny program albo opis konfiguracji...
Witam Od jakiegoś czasy chce zrobić zegarek na atmega8. Do odliczania sekund użyłem unsigned int i=0; void wait(long t) { long cnt = 0; TCCR1A = 0; TCCR1B = 3<<CS10; TCNT1 = 0; TIFR |= (1<<TOV1); while(cnt < t) { if(TIFR & (1<<TOV1)) { cnt += 65536; TIFR |= (1<<TOV1);...
Dorzucam wersję z porządnym debouncingiem. Ten z BASCOMa jest zbyt uproszczony i nie nadaje się do profesjonalnych zastosowań. Po wciśnięciu jednego przycisku naciśnięcia innych przycisków są ignorowane do czasu puszczenia tego pierwszego. Zauważ autorze, że nie ma już nigdzie w kodzie czekania na cokolwiek (brak wywołań funkcji WaitMs()). Wszystko...
Witam, Chciałbym zrobić na Atmega8 odmierzanie czasu co 1s. Chciałbym do tego celu użyć Timer0/Counter0, taktowany zewnętrznie. uC ma wyprowadzenie T0, do którego podłącza się sygnał taktujący. Teraz moje pytanie. W jaki sposób podłączyć tam kwarc 32,768kHz? Prosiłbym o schemat podłączenia.
Która atmega? W atmega8 możesz użyć: Timer0 - odmierzanie czasu Timer1 - zliczanie impulsów Timer2 - PWM
Nawet prosty projekt przynosi dużo satysfakcji :) Drobna uwaga: ATmega8 wykorzystuje wewnętrzny oscylator RC pracujący na częstotliwości ok. 8 MHz. Wiadomo, że oscylator RC nie nadaje się do bycia wzorcem czasu. W projekcie wzorcem jest kwarc 32 kHz podłączony do układu RTC DS1307. Układ ten zapewnia również ciągłe odmierzanie czasu w przypadku utraty...
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...
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ć.
Przy takim trybie pracy timera (zamiast sugerowanego przez piotrva CTC) Twój zegarek będie się zawsze późnił, bo od zgłoszenia przerwania do przeładowania timera zawsze upłynie pewien czas, w dodatku nie zawsze taki sam. To nie jest dobry sposób na dokładne odmierzanie czasu.
dimarco81 nie widze żadnego problemu abyś przerobił mój projekt. Wyprowadzenia generatora masz poprawne, z wyjście generatora podpinasz tylko pod nogę nr 9 megi8 i oczywiście ustawiasz fusebit na zewnętrzny zegar, nogę nr 10 zostawiasz wolną. Nie montujesz już kondesatorków jak w przypadku rezonatora kwarcowego. Nie prościej kupić rezonator za złotówke?...
To prawda, na zewnątrz prezentuje się ok, a ponieważ do środka się nie zagląda więc w czym problem? Ja bym dodał jedną rzecz - podtrzymywanie bateryjne. W piekarniku mam fabryczny zegar bez podtrzymywania i wiem jakie to jest wkurzające jak na chwilę zabraknie zasilania. W takiej obudowie z pewnością jakaś bateria się zmieści. Warto też mu dodać jakiś...
Tak byłoby najlepiej ale układ już polutowany i muszę się ograniczyc do czasowego usypiania na sztywno np. tak: czeka 10s na dane przychodzace z IR jesli nic nie ma to idzie spac na 20s i tak w kółko. Jak zrealizować takie odmierzanie czasu skoro kiedy jest w trybie power-down timery nie działają?
Tak ATmega8 może pracować z wewnętrznym oscylatorem RC lecz zewnętrzny kwarc ma o wiele lepszą dokładność taktowania i z racji tego, że w projekcie zaimplementowałem odmierzanie czasu dlatego został zastosowany zew. kwarc. W załączniku zamieszczam poprawioną wersja softu do wytrawiarki.
To nie kwestia modysfikacji kodu, a właściwego ustawienia fuse bitów, tak aby procesor wykorzystywał zewnętrzny kwarc. Domyśle AVRy mają włączony rezonator wewnętrzny 1MHz. Na forum było mnóstwo wątków na temat ustawiania fuse bitów, jest to też dobrze opisane w manuala uC. Przy okazji - odmierzanie czasu w ten sposób zawsze będzie obarczone błedami...
excray a odmierzanie czasu nie jest zadaniem, gdzie liczniki są przydatne? Co z tego, że to migająca dioda. Autor postanawia sobie mniej lub bardziej utrudnić życie, uczy się dla siebie, nie robi tego na czas. Wydaje mi się, że należy go raczej pochwalić za ambicje i wspierać a nie proponować programowego muła z pustą pętlą...
Problem polega na tym, aby pomierzyć ilość impulsów jaka upływa pomiędzy kolejnymi pomiarami czujnika. Chodzi o to żeby timer1 zliczający impulsy po wykonaniu pomiaru przez czujnika wyświetlał ich ilość, a następnie zliczał kolejne impulsy upływające do wykonania 2 pomiaru itd. Zamiast czasu podawać na monitor zliczone impulsy pomiędzy kolejnymi pomiarami....
teedd -> nie zapytałeś nawet w jaki języku pisze pys1986, a zamieszczasz od razu kod. Poza tym nie wiem dlaczego chcesz zrealizować odmierzanie czasu na przerwaniu INT1 zamiast wykorzystać wbudowany timer? Jest to niepotrzebne komplikowanie zadania i dodawanie uC niepotrzebnej roboty. Na stronce jaką zamieściłem jest przykładowy zegar z kalendarzem...
Witam, Mam problem z poniższym programem. Timer0 odlicza 1ms i generuje przerwanie. W programie obsługi przerwania zmienna "znak" przyjmuje wartość znak=15, a chyba powinna przyjmować wartość znak=34. Dlaczego program nie uwzględnia mi przypisania znak=34, które znajduje się w pętli for? Pozdrawiam Listing programu: [syntax=c].................................
Dziękuję za zainteresowanie tematem !!! Chwilowo wystąpił u mnie brak czasu i przystopowanie projektu ale mam nadzieję że w tym tygodniu będzie już lepiej. Na początku kilka przemyśleń „do użytkownika nsvinc ” odnośnie C+ czy asemblera wiem że jest on dużo dokładniejszy i nie mam co do tego wątpliwości jeżeli chodzi o zagadnienia związane...
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ść...
To chyba tak nie zadziała !!! Do serwa wysyła się co 20 ms impuls o zmiennej szerokości od 1 do 2 ms 1.5 ms to pozycja spoczynkowa. Przy rozdzielczości 8 bitowej na serwo, musisz odmierzać czas z dokładnością 4 µs (256*4µs≈ 1ms) Serwa możesz sterować kolejno, tak, że każde dostanie swój impuls co 20 ms. Czyli pierwszy timer zgłasza...
No to teraz mi "klina" zadaliście... Po wyszukaniu informacji na temat round-robin wogóle nie wiem do czego to w tym projekcie zastosować, nie ma tu wielu wątków. Jedno przerwanie zewnętrzne, odmierzanie czasu i praca przekaźnika. Może nie rozumiem (a właściwie napewno nie rozumiem do czego mogę to zastosować), ale mniejsza z tym. Co do tych zmiennych...
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...
Postępy w projekcie: * soft na PC znajduje się w fazie beta - działa silnik graficzny w wersji z obsługą klawiatury (każdy z torów jest obsługiwany przez osobny klawisz. - działa odmierzanie czasu z dokładnością do setnych sekund. - wyświetlenie czasu po zakończeniu przejazdu. * interfejs dla urządzeń treningowych: - wybrałem rozwiązanie oparte o mikrokontroler...
(...)Od razu zaczynasz od odczytu a przecież zegarek PCF8583 po załączeniu zasilania nie chodzi i ma w rejestrach raczej przypadkowe wartości (o ile sobie dobrze przypominam). (...) Po załączeniu zasilania PCF8583 zaczyna odmierzanie czasu od wartości 00:00:00 (oczywiście pod warunkiem, że oscylator działa poprawnie). (...)Jeśli chcesz sprawdzić, czy...
W swoim programie wykorzystuję m. in. TIMER i przetworniki ADC. Timer działa w trybie CTC, dane z przetwornika pobieram funkcją adc_get(): [syntax=c] int adc_get() { set_sleep_mode(SLEEP_MODE_ADC); cli(); sleep_enable(); sei(); sleep_cpu(); sleep_disable(); return ADC; } [/syntax] Dane z przetwornika są pobierane w pętli głównej, a timer ma za zadanie...
Wzbogaciłem mój program o to żeby odliczał jedną minute(praca jest wyświetlana na dwóch wyśw 7 segm.), oto kod: #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> /* cyfry na wyświetlaczu 0 0b10000001 129 1 0b11010111 215 2 0b01001001 73 3 0b01000011 67 4 0b00010111 23 5 0b00100011 35 6 0b00100001 33 7 0b11000111...
Witam ! Programuje w Bascome, sercem ukladu jest Atmega8. W czym problem, otoz sterowanie wyswietlaczami odbywa sie multipleksowo po przepelnieniu Timera0 natomiast odmierzanie 1sekundy po przepelnieniu Timera1. Nie umiem sie wbic pomiedzy Timery z obsluga klawiaturki z 3 przyciskow ktorymi chcialbym ustawiac czas i budzik. Czy ktos umialby mi pomoc...
Użyj symulatora. To potężne narzędzie. Można nawet zadawać wartości które program odczyta z ADC dla każdego z kanałów z osobna.. To jednak nie wszystko. Ma wbudowany emulator wyświetlacza. To nic że nie chcesz wyświetlać na LCD. Możesz każde swoje obliczenia matematyczne które ma wykonać mikrokontroler wyświetlić w postaci wyniku na tym LCD i już wiesz...
Lepiej zainwestujesz swój czas przepisując program tak, żeby 90% pracy wykonywał w main, później "szedł spać", a budziły go tylko odpowiednie przerwania. W różnych ISR ustawiasz odpowiednie zmienne globalne, a w main() je odczytujesz i reagujesz odpowiednio. I nagle się okaże, że nie potrzeba zagnieżdżania przerwań, system jest prostszy i da się ładnie...
Tutaj jest opis całego zegara: Sercem urządzenia jest mikrokontroler ATMEGA8 pracujący na wewnętrznym rezonatorze kwarcowym o częstotliwości 8MHz. Układ zasilania składa się z transformatora sieciowego TS4/023, mostka Gretza, układu stabilizatora LM7805, oraz kondensatorów filtrujących. Układ DS1307, wraz z rezonatorem kwarcowym 32.768kHz oraz trymerem...
...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...
Wyłącz preskaler, bit CKDIV8
Potrzebuje ale w momencie gdy jest ustawiony do pracy w trybie asynchronicznym.
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.
Bardzo dobry przykład do pokazywania, do czego nie powinno się stosować instrukcji switch oraz jak nie należy programować timera, jeśli chce się, żeby precyzyjne odmierzał czas.
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.
Mamma, mia, co to jest? Program w każdym calu błędny, zarówno pod względem logicznym, funkcjonalnym jak i programistycznym. Zacznij od porządnego multipleksowania, zwiększ rozdzielczość pomiaru tej jednej sekundy, dalej pobieranie TCNT1 następuje hmm, w losowym momencie - masz zupełnie brak synchronizacji z odmierzaniem 1s...
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...
odmierzanie czasu odmierzanie czasu stm32 timer1 odmierzanie czasu
wyświetlacz deski transmisja sygnał analogowy chłodnica klimatyzacji
licznik auris sprężarka inwertorowa
Audi A4 B8 2.0 TDI CGLC – status 0010 w VCDS, interpretacja i typowe usterki Ford Mondeo MK3 TDCi – przerywanie silnika 2500-3500 rpm, biało-szary dym, wtryski Delphi