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...
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
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....
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. Chcę za pomocą Timera1 odmierzyć czas w przybliżeniu 1 s (dokładność do 0,1 s). Wprowadzam następującą konfiguracje: ldi Temp, 0x29 ;załadowanie do r16 wartości ldi R20, 0x29 ;załadowanie do r17 wartości out TCNT1H, Temp ;wpisanie do rejestru TCNT1L wartości out TCNT1L, R20 ;wpisanie do rejestru TCNT1H wartości out TCCR1A,r29 ;wpisanie do rejestru...
https://obrazki.elektroda.pl/1570592100_... Witajcie, zapraszam na relację z konstrukcji zegara na PIC18F2550 napisaną w formie tutoriala, wszystko krok po kroku. Pokażę tu jak i z czego tworzyłem prosty projekt DIY na prośbę jednego z czytelników. Wykorzystamy tu wyświetlacze 7-segmentowe, rejestr przesuwny, obsłużymy przyciski a...
http://obrazki.elektroda.pl/8875559300_1... Chciałbym przedstawić mój projekt na konkurs świąteczny bazujący na płytce Nucleo 64 z mikrokontrolerem STM32 na modelu STM32F411RET6 WiFi komunikujący się z telefonem z systemem Android do coraz bardziej popularnych diod WSRGB2811 zamontowanych na świątecznej choince. Dokładnie to łańcuch...
Poza brakiem volatile nie bardzo rozumiem sens kasowania flagi cron_chk poza warunkiem? Jeśli cron_chk się ustawi akurat wtedy gdy będzie procesor wykonywał inną funkcję niż ten warunek to skasujesz ją i nie wyśle ci nic na RSa. I jeszcze jedno - jaka jest pewność że terminal ci nie wprowadza opóźnień i błędów czasowych ? Zamiast takiego testu co 1...
Która atmega? W atmega8 możesz użyć: Timer0 - odmierzanie czasu Timer1 - zliczanie impulsów Timer2 - PWM
Napisałem taką procedurkę (bez użycia przerwań). Jeśli chcesz użyć do tego celu przerwanie to daj znać. W tym przykładzie 4000000/64/6250=10 Hz czyli 100 ms $crystal = 4000000 $regfile = "2313def.dat" Config Timer1 = Timer , Prescale = 64 Declare Sub Czekaj100 Czekaj100 End Sub Czekaj100 Timer1 = 0 Start Timer1 While Timer1 < 6250 Wend Stop Timer1...
To może i ja dodam od siebie taki mały projekt - miernik pojemności ogniw Li-Ion, oparty też o ten uC PIC16F1459. Może komuś też się przyda. Kod jeszcze rozwijam, tak że sugestie mile widziane :) Aha, w projekcie tym jest ważne stabilne zasilanie, najlepiej równo 5,00 V (aby mieć jak najdokładniejszy wynik pomiaru - czyli nie zasilać z USB bo często...
Witam. Fajny pomysł, trzymaj tak dalej! Nic tak nie daje satysfakcji konstruktorowi jak działające urządzenie będące jego własnym pomysłem. Nie wiem czy będziesz rozwijał projekt, ale pewnie tak bo "zawsze można coś poprawić i ulepszyć". Jeśli tak będzie to dobrze by było dodać na płytce złącze programatora aby programować mikrokontroler bezpośrednio...
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ć.
Sprawdź na symulatorze w którym momencie się rozjeżdżają wartości badanej zmiennej i timera1 Możliwe, że ta pętla się wykonuje więcej razy, bo warunek stopu przeskakuje. Timer jest zwiększany asynchronicznie w stosunku do programu i program może przeoczyć moment gdy Timer=konkretna wartość, bo sprawdza Timer1 w przypadkowych momentach a nie po każdej...
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ść...
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...
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...
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....
$regfile = "m16def.dat" $crystal = 8000000 Config Pinb.0 = Input Config Pinb.2 = Input P1 Alias Pinb.0 P2 Alias Pinb.2 Set Portb.0 Set Portb.2 Config Timer1 = Timer , Prescale = 256 On Timer1 1_sekunda Enable Timer1 Enable Interrupts Counter1 = 34286 Declare Sub Alarm Declare Sub Sys_off Dim Sekundy As Byte Dim Flaga1 As Bit Dim Flaga2 As...
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...
Witam, Opiszę może krótko sytuację: mam atmega16, na timer1 mam ustawiony tryb pracy pwm, używam kilku pinów na PORTD i PORTA do sterowania mostkamiH. Potrzebuję odmierzanie czasu 10ms i chciałem to zrealizować przy pomocy przepełnienie od timera0 lub timera2. Niestety kiedy chcę obsługiwać przerwanie od przepełnienia T0 lub T2, to całkowicie psuje...
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...
A po co włączasz przerwania skoro nie napisałeś procedur ich obsługi? I dlaczego najpierw ładujesz część młodszą do OCR a potem starszą, a nie na odwrót jak to zalecają? I dlaczego dziwisz się, że kod potem nie działa?
Napisałem kod dla zegara cyfrowego w Bascom. Ogólnie działa jak należy. Mam tylko problem przede wszystkim z budzikiem. Chcę aby podczas alarmu naciśnięcie przycisku 1(PORTD.0) wyłączało alarm(chodzi o sam dźwięk). Program nie reaguje. Nie mam pojęcia czy jest to wina tego, że nie nadąża z wykonaniem polecenia (za długie przerwania?) 2) Aktywowanie...
Skoro się spieszy to zmierz ten swój rezonator. Napisz krótki programik, w którym użyj np timer1 w trybie normalnym, przerwanie OVF, preskaler 1024 i nie ustawiaj TCNT1. W ten sposób przerwania bedą wywoływane co 65536*1024 takty (ok 8s dla 8Mhz). Wyłącz wszystkie pozostałe przerwania, wyswietlanie na lcd umieść bezpośrednio w ciele przerwania a nie...
Witam. Dzięki za odzew. Zacząłem poruszać się tym tropem i chciałbym to skończyć w ten sposób, czyli T0- zlicza impulsy, T1-odmierza czas. I teraz jest taki pomysł. Rejestry T0 to TH0, TL0, W tej chwili T0 jest ustawiony w tryb pracy 2. Jednakże myślałem o czymś takim: T0 ustawić w tryb pracy 1 TH0 i TL0 - wartości początkowe ustawić na zero. W przerwaniu...
Mam problem z TIMER2 - odmierzanie czasu , najlepiej 1s. Wartość b będzie zmieniała się - tylko co jaki odstep czasu. Może ktoś poratować? Albo ma może jakiś swój przykładowy programik na Timer2 z wywoływanym przerwaniem? Radzio // Testowanie timera 2 #define F_CPU 8000000UL #include <avr/io.h> // dostęp do rejestrów #include <avr/interrupt.h>...
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...
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...
Po namyśle dochodzę do wniosku, że trochę trzeba zmienić koncepcję, a i tak nie wszystko się załatwi. Pomysł jest taki: 1) zegar i wszystkie sprawy jego bez zmian i cykl maszyny 1 us. 2) ponieważ impulsy mają być nie częściej niż co 1 ms to czasu trochę jest 3) do odmierzania okresu między impulsami użyj timera2 ustawionego jako licznik w trybie auto-reload...
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.
Tak jak myślałem. Za pierwszym razem ładujesz 65536-wartość jaką Timer ma zliczyć. A za drugim razem wartość jaką Timer ma zliczyć. W pierwszym przypadku wpisz: Load Timer1 = 49911 I będzie dobrze.
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,...
tak jesli timer1 jest tylko do odliczania tej jednej sekundy i do niczego innego go nie potrzebujesz
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...
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...
90s8515 i ASM Chcialem zeobic cos takiego ze raz timer1 uzywac do odmierzenia czasy, raz do odbiornika RC5 Wymyslilem ze pewnie by trzeba zmieniac wartosc w pamieci flash pod adresem timera.. ale przeciez nie mozna za czesto zmieniac tej komorki bo sie skonczy ilosc cykli w flashu... Czyli jak zrobic by timer dzialal raz do jednej rzeczy a potem do...
Witam serdecznie, mam pytanie odnośnie kwarcu, tworze coś na zasadzie stopera używam wewnętrznego kwarcu 8Mhz i Atmega8, niestety atmega coś spieszy o parę sekund na minutę, zauważyłem że wiele osób do tego typu projektów używa zewnętrznego kwarcu 32Mhz. Czy stosowanie zewnętrznego kwarcu w tego typu projektach jest konieczne? Czy da się w jakiś sposób...
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=...
Timer1 używam do odmierzania czasu po to by, ładować baterię telefonu. Aliasy mogę wstawić, choć ja nie przepadam za nimi.
(at)marco47 Nie rozumiem twojego pytania. (at)janbernat Timer1 służy do odmierzania 1 sek. Po tym czasie następuje przerwanie, w którym liczba zliczonych impulsów (przez timer0) przepisywana jest do zmiennej wynik.
a jesli powiem ze tak tez próbowałem tylko ze odczyt z kodów z rc5 trwa z przerwą 600ms która musi byc pomiedzy odczytem a konwersją temperatury z ds1820 :( Jakoś nie widzę problemu. Przecież Int0 ma wyższy priorytet niż DS. Jerśli istnieją jakieś konflikty to należy zablokować przerwanie Int0 na czas inicjacji DS'a i odczytu temperatury. W trakcie...
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...
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..
Witam. W pewnie działającym u kolegi kodzie, podczas kompilacji wyrzucane są błędy. Oto fragment kodu i błędów:[syntax=vbnet]$regfile = 89c4051.dat $large $crystal = 11059200 'Konfigurujemy Timery: Timer0 jako liczący impulsy WEG a Timer1 jako odmierzający czas 1s Config Timer0 = Counter , Gate = Internal , Mode = 1 Config Timer1 = Timer , Gate = Internal...
Hm... dobry pomysł, niestety wszystkie piny mam już zajęte. Cały czas planowałem wykorzystać timer1 do tego celu ale niestety tylko on mógł zapewnić odpowiednie generowanie sygnału dla silnika krokowego.
Ja dorzucę jeszcze jedno - jakby nie napisał ISR to odmierzanie przerw przez delay w pętli głównej już nigdy nie będzie działało prawidłowo - odliczany czas powiększy się o czas realizacji wszystkich przerwań. To można ominąć w prosty sposób wywalając te delaye i robiąc opóźnienia na timerze.
ale żeś mnie zjechał.. przyznaję się.. mój błąd.. dopiero zaczynam.. napisałem to pierwszego dnia zabawy z bascomem.. to jest mój program przez który się uczę obsługi pilota, wyświetlacza itd... z tąd moje podstawowe błędy.. do tej pory pisałem programy na PC z tąd moja niewiedza o tempie wykonywania instrukcji.. wiedziałem, że jest wolniejsza ale z...
[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...
odmierzanie czasu timer1 odmierzanie czasu odmierzanie czasu stm32
kolor oznaczenie kabel domofon uchwyty lodówka samsung tylny światła focus
samsung ue550 skuter elekryczny
Citroen C3 Picasso 1.4: Podłączenie czujnika wałka rozrządu Naprawa podświetlenia Blaupunkt BA32H4142LEB 32" LED