Witam. Zapis (składnia) Load Timer1 jest zły. Sprawdź w pomocy Bascoma.
Natomiast jeżeli zamienię OCR1A = 3906,25; wszystko jest ok Jesteś geniuszem jeśli robisz takie sztuczki! Myślę, że ustawienie preskalera na 36,571428571 powinno rozwiązać Twój problem. Albert
Tak się nie robi. Myślę że ten timer się parę razy przepełni zanim obsłuży LCD. Ustaw timer tak aby wywoływał przerwanie przy danej wartości i w tym przerwaniu dodawaj jakąś zmienną o 1 i czyść licznik.
Niestety jeśli zajmiesz główny wątek, to Timer który z pewnością jest w nim zdefiniowany także nie będzie działał... Jeśli chcesz oczekiwać na coś w pętli - zdefiniuj to na osobnym wątku.
:):) I znowu na odwrot:) Jak ustawisz TCCR1B=0xC; Czyli to o co Ci chodzi(tryb CTC) to musisz zostawic makro wywolujace przerwanie takie jakie miales:) SIGNAL(SIG_OUTPUT_COMPARE1A) ale radzilbym zmienic na taka nazwe: ISR(TIMER1_COMPA_vect)
A nie łatwiej jest policzyć DO ilu ma liczyć a nie OD ilu? :) i robić przerwania COMP a nie OVF? Ja tak robię i na kwarcu 4MHz timer1 odlicza sekundy bardzo ładnie. Ale u Ciebie timer1 wydaje się mieć dobrze ustawianą wartość. Przy prescalerze 256 musisz mieć 15625 taktów zegara, aby osiągnąć sekundę. W drugim coś mi nie gra. Odliczasz od 0x0F czyli...
ad 1:Podaj F rezonatora np. 8mhz config timer1 = timer,prescale 256 'konfiguracja timera load timer1 , 31250 'załadowanie timera 1s on timer1 odliczanie 'określenie która procedura ma byc wykonana co 1s enable interrupts 'właczenie przerwań enable timer1 'właczenie timera1 dim twoja_zmienna as long ' twoja pętla do "jakis tam twój program" loop odliczanie:...
Właśnie przed chwilą też uruchomiłem zegar na ATMega8 choć wykorzystujący kwarc 32kHz (tzw. zegarkowy) niezależny od generatora głównego procesora. Jeżeli chcesz pozostać przy swoim pomyśle (równie dobrym) to w BASCOM-mie po kompilacji przejdź do opcji programatora gdzie będziesz miał trzy zakładki FlashROM ,EEPROM i Lock and Fuse Bits. Więc wybierz...
tak jesli timer1 jest tylko do odliczania tej jednej sekundy i do niczego innego go nie potrzebujesz
Mogę oczywiście i tak jest, zobacz foto. To jest marker startu. Ustawiam na nim początek, przyciskam reset w liczniku i naciskam przycisk start. Rusza napęd i zliczanie z enkodera od zera. Licznik zlicza i zatrzymuje na wymiarze, timer1 odlicza 200 ms do ustabilizowania papieru i całkowitego wyhamowania napędu żeby papier w ruchu nie wlazł pod noz i...
Dla powyższego przykładu wartość dla Timera1 powinna być 7999. 1000ms/800ms=1,25Hz *100=125Hz (clock speed 8000000Hz / (prescaler 8 * częstotliwość 125Hz)) - 1 = 7999 lub dla prescalera 256 wartość wpisywana do licznika 24999 da przerwanie co 0,8s EDIT: Ta linijka coś nie pasuje If Ms1 = 80 Then nie powinno być 100 zamiast 80 EDIT2: A, żeby nie było...
marco47 - przepraszam, nie zauważyłem. marek19951 - proste if-then nie załatwi problemu. Jeżeli masz zapał, a widzę , że masz, zacznij od procedury obsługi klawiatury , która nie powoduje opóźnień poprzez martwe pętle ( czyli m.in wait, debounce, bitwait itp). Ja to zrobiłem na przerwaniu programowym z timer1, które odliczało mi okresy 10 ms w połączeniu...
Witam. Potrzebuję pomocy w napisaniu pewnego programu, dokładnie stopera, do części setnych sekundy. nie wiem jak ustawić Timer1 by odliczał mi co 1ms.
Banalne zadanie. A więc włączasz licznik(lepiej TIMER1-większa pojemność), tak, aby odliczał ci te 10sekund. Dajesz zmienną którą zwiększasz np co 1sekunde (zmienna o nazwie sekundy). W czasie odliczania do 10s w pętli głównej zliczasz impulsy przycisku i zwiększasz je w innej zmiennej (np. impulsy). Po 10 sekundach w zmiennej sekundy będzie10s a w...
TimerExplode oraz ShowTime całkowicie nie działają TimerExplode to nie jest komenda! To jest nazwa timera. No dobra, tak nigdzie nie dojdziemy. Niech będzie, że zostaniemy przy jednym timerze który liczy tylko co 1s. Bardzo prosty i zupełnie pozbawiony wodotrysków program: http://obrazki.elektroda.pl/5017639100_1... Zero wodotrysków i kombinowania....
Aby ten program, który napisałem zadziałał, trzeba urchomić dwa Timery. Timer0 do odliczania 100 milisekund a Timer1 do odliczania 1 sekundy. Czy można użyć Timera1 czy planujesz jego użycie do czegoś innego?
4. Jak rozumiem, Timer1 odlicza odcinki czasu, po których chcesz zobaczyć wynik pomiaru więc: [syntax=c]unsigned char flaga = 0; ISR (TIMER1_COMPA_vect) // timer0 overflow interrupt { impulse_count_frozen = impulse_count; impulse_count = 0; flaga = 1; }; ISR (INT0_vect) // int0 interrupt { impulse_count++; } int main(void) { ... sei(); while (1) { if(flaga)...
Masz zdefiniowany timer? Jeśli tak to dodaj coś takiego, a jeśli nie to zdefiniuj i dodaj: [syntax=csharp]if(iloscprob==0) { timer1.Interval =1000; //<-- ustawienie timera na 1s (tą linijkę możesz dać wcześniej w form load) timer1.Start(); } //w funkcji timer tick daj { label2.Text = "Odliczanie"+time; time--; }[/syntax]
Witam mam problem z ustawieniem timera w mojej atmedze. Oto kod: [syntax=c] #include <avr/io.h> #include <avr/pgmspace.h> #include <avr/interrupt.h> #include "LCD/lcd44780.h" volatile int a=1; int main(void) { TCCR1A |= (1<<WGM12); TCCR1B |= (1<<CS12)|(1<<CS10); OCR1AH = (unsigned char) 1800; TIMSK1 |= (1<<OCIE1A);...
Witam! Po miesiącach owocnych doświadczeń z Atmegą8 przyszedł nie lada problem. Otóż chcę na jednym z pinów ustawiać (w zależności od obliczeń) odpowiednią wartość napięcia w granicach 0 do 5V (dokładność 0,1V wystarczająca) ale mam już zajęty Timer1 do odliczania sekund więc pwm odpada bo na Timer0 nie pójdzie - jest jakaś inna możliwość? Pozdrawiam
Witam ,napisałem program który ma odmierzyć czas lotu helikoptera (do wyczerpania bateryjki) ,niestety po 2 tygodniach utknąłem na czymś takim: $regfile = "attiny2313.dat" 'wybór procesora attiny2313 $crystal = 8000000 Config Pinb.0 = Output 'dioda sygnalizująca odmierzenie czasu Config Pinb.1 = Output 'buzzer mający piknąć 3 razy po odmierzeniu...
$crystal = 11059200 Dim Licznik As Long Dim Czestotliwosc As Single Config Int0 = Falling Config Timer1 = Timer , Noise Cancel = 1 , Prescale = 1 On Int0 Licz On Timer1 Przerwanie_co_1ms Enable Interrupts Enable Int0 Enable Timer1 Timer1 = 54477 Do Loop End Przerwanie_co_1ms: Timer1 = Timer1 + 54477 Licznik = Licznik + 1 Return Licz: Stop Timer1...
W jaki sposób Timer1 ma wiedzieć, że ma rozpocząć odliczanie? Kiedy je przerywasz i kiedy wznawiasz? Tutaj nie ma takich instrukcji, a są one konieczne.
Chcę uzyskać możliwość sterowania serw w ilości >8 z możliwie dużą rozdzielczością. Z uzyciem dwóch timerów. Pierwszy służy do odliczenia 20ms. Drugi do odliczania czasu włączenia sygnałów na n kanałach. Po to aby uzyskać rozdzielczość np.1:100 przerwanie z prologiem i epilogiem i wykonanie obliczeń powinno trwać najwyżej 20us. Zegar 8Mhz czyli 0.125us....
Może ten Twój jakiś dziki jest :P więc spróbuj jeszcze przenieść Sub pod pętlę główną jak ja poniżej. U mnie kompilują się wszystkie wersje wiec w załączniku masz skompilowane Hex i Bin do wyboru. Sprawdź też prywatną wiadomość ;) [syntax=vbnet]$regfile = "m8def.dat" $crystal = 1000000 $hwstack = 40 $swstack = 16 $framesize = 32 '********* TUTAJ SOBIE...
TIMER0 - ma przerwanie co 0,2sekundy dla sprawdzenia różnych ustawień w zależności od menu. Takie różne opcje potrzebne w liczniku rowerowym :) TIMER1 - potrzebny do odliczania czasu między impulsami pochodzącymi od kontaktrona odłączonego pod INT0. Próbowałem według Twoich sugestii ustawiać INTy w mainie, ale również nie daje to efektu.
Witam. Napisałem sobie prosty program do sterowania fazowego: $crystal = 8000000 $regfile = "8515def.dat" Detfazy Alias Pinb.1 Config Detfazy = Input Q2 Alias Portc.1 Config Pinc.1 = Output Config Timer1 = Timer , Prescale = 8 Stop Timer1 On Timer1 Irq_t1 ' jeśli nastąpi przerwanie od timera Timer1 wykonaj procedurę Irq_t1 Enable Timer1 Enable...
To zmienia moją koncepcję :( obecnie mam ustawione tak: Timer1=Timer (odlicza mi jedną sekundę) Timer0=Counter (zlicza mi impulsy). Chciałem dodać do tego programu zegar z datą, ale wydaje mi się że sekunda z Timera1 na kwarcu 4Mhz nie jest zbytnio dokładna. Może jakaś podpowiedź jak najprościej przerobić program żeby mieć ten zegarek? (chciałbym użyć...
Ogarnąłem temat mniej/więcej tak: timer1 nabija licznik impulsami (po 10ms) do 60, licznik gdy osiągnie 60 wyłącza timer1 i włącza zmianę kierunku zliczania, znacznik1 dołącza do licznika timer2, który podaje impuls co sekundę przez co mam odliczanie wstecz, znacznik1 gdy wyłączony odłącza timer2 i zmianę kierunku zliczania i dołącza timer1, timer1...
Dzięki Emarcus. Sam też znalazłem parę podobnych przykładów i będę dziś z tym walczył. Jak się uda przedstawię rozwiązanie. Dodano po 4 Problem rozwiązany. Zastosowałem timer1 do odliczania 1 sekundy oraz dwie flagi blokujące i doblokowujące przekaźnik. Jeśli ktoś miałby ochotę zobaczyć kod to proszę o odpowiedź gdyż z braku czasu nie umieszczam go...
1 jest komenda załączenia ale nie ma komendy wyłączenia Jest. działą to tak: po odebraniu kodu KOD1 wykonywane jest [syntax=arduino] digitalWrite(11,LOW); //załączamy przekaźnik na wyjściu 11 timer1.start(); // uruchamiamy timer 1 [/syntax] timer1 zaczyna odliczać czas ustawiony w [syntax=arduino] Ticker timer1(futimer1, 1000,2); //(funkcja wywoływana,czas...
Zobacz do czego Drzasiek użył zmiennej cnt - odlicza ona 4 przerwania, Ty możesz odliczać ile zechcesz. Preskaler także możesz zmieniać - Ty decydujesz. Oczywiście możesz także użyć 16-bitowego timera np. Timer1, o którym piszesz.
Witam kolegów serdecznie tuż przed świętami. Piszę program realizujący pomiar temperatury i zapisujący uzyskane dane do pliku zlokalizowanego na karcie SD. Powoli wtrącam timery zamiast wait(). Mam w sumie trzy problemy. 1) Formatuje uzyskane dane przez zapisem do pliku. Niestety nie wiem jak w stringu zamienić kropkę na przecinek i dopiero taki format...
Wartość dla 1 sekundy: OCR1A=((częstotliwość procesora)/preskaler)-1 Wartość dla 4 sekund OCR1A=((częstotliwość procesora)/preskaler)-4 Jedynka w podanym przeze mnie wzorze nie oznacza 1 sekundy. Jeden trzeba odjąć z innych względów. Po prostu licznik nie zaczyna liczyć od 1 tylko od 0, więc odliczanie np. do 5 oznacza (0 1 2 3 4 5), czyli 6 impulsów....
zmieniłem kod programu: [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include "hd44780.h" #include "stdlib.h" char Buffer[20]; int TCNT0_WART=0; volatile unsigned long imp_curr=0; volatile unsigned long imp_prev=0; uint32_t displ=0; int main(void) { //TCCR0 |=(1<<CS00)|(1<<CS01)|(1<...
Witam mam pewien problem ze sporządzeniem programu do odliczania sekund (docelowo z dokładnością do 0.1s albo lepiej 0.01) z zadanej zmiennej do 0. Problem polega na tym że nie jest powtarzalny po podaniu zmiennej po raz drugi zawiesza się ;/ nie wiem co zrobiłem nie tak – co muszę zmienić w kodzie aby można było powtarzać odliczanie ile razy...
Przedstawię Ci kolego przykład zastosowania Pulsein żebyś miał jaśniej. Myślę że będzie "rzeczowiej". To przykład dla dekodowania transmisji pilotów podczerwieni. Sygnał podłaczony jest do zewnetrznego przerwania INTx i w momencie zmiany na pinie program skacze do tej procedury. Mierzy impuls i poddaje rozwadze jego długość. [syntax=basic4gl]Int_1isr:...
nie słyszałem, ale już buszuję w datasheecie. Pamiętaj że po puszczeniu przycisku wynik musi być wyświetlany. Po wciśnięciu przycisku 2 następuje reset zmiennych. Może jest przerwanie wyzwalane zmianą stanu logicznego na którejś nóżce? Zmieniałoby CS12 na 0 tym samym wyłączając timer1 :)
o ile zastosuje się debouncing sprzętowy Rozwiązałem to tak: [syntax=c]attachInterrupt(digitalPinToIn... czytajPrzyciski, FALLING); void czytajPrzyciski() { if (digitalRead(przycSwiatlo) == LOW) { if (wieczor == true and swieciOgrod == false) { swieciOgrod = true; x[1] = timer1; digitalWrite(swiatloOgrod, HIGH); Serial.println("Świeci...
Chcialbym sie dowiedziec, jak inni radza sobie z zagadnieniem powrotu z jakiejkolwiek strony menu do ekranu glownego, gdy nie jest nacisniety zaden przycisk w ciagu powiedzmy 20sek. Szukam w miare najlepszego rozwiazania. Ja to robie tak: Zaprzagam timer1 do odliczania 1 sek. W jego przerwaniu: zmienna = zmienna + 1 Jesli zmienna osiagnie 20 wtedy ustawiam...
Witam. W pewnym sofcie dla Atmega16 wykorzystałem już: - Timer1 (16 bit) do odliczania 0,0001s odcinków czasu - Timer2 (8 bit) jest wykorzystywany przez odbiornik podczerwieni (instrukcja getrc5) Timer 0 niby jest wolny, ale nie wiem / nie jestem pewien czy nie jest on wykorzystywany przez jakieś używane przeze mnie instrukcje (np. print dla sprzętowego...
Start Timer1 If R = 1 Then Stop Timer1 A = Timer1 End If Locate 1 , 1 Lcd A Wait 1 Ale chyba coś ze sprzętem mam nie tak, bo ciągle A wyświetla że jest zero (nie wchodzi do IFa) Hmm... ok załączasz Timer1 i odliczasz impulsy do czasu wystąpienia impulsu na R(z odbiornika) ale nie uwzględniłeś że ten impuls jest bardzo krótki i może wystąpić podczas...
Witam Postanowiłem zbudować miernik odległości wykorzystujący ultradźwięki. Zakupiłem 2 czujniki w TME http://www.tme.pl/przetwornik-ultradzwie... http://www.tme.pl/dok/b14/100902_bpu-164... Jednego używam do wysłania fali a 2-go do odebrania. Po przejrzeniu postów na Elektrodzie i innych www...
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.
Trudno wlasciwie okreslic, czy jest to caly ciag, czy pojedynczy bajt, bo przez lacze wysylam pakiety z dana z bajtem z A/C, z predkoscia 512 probek/s, jest to odliczane przez timer1 (drugi w kolejnosci) AT, z poczatku myslalem ze to wina tego, ale przeciez u mnie chodzi. Nie jest to wiec pojedynczy bajt, ani caly ciag, bo pomiedzy kolejnymi transmisjami...
Czas odczytu DS jest określony na 750ms, przecież nie mogę wyłączyć przerwań na taki czas... Chodzi Ci o to, że będę sobie sam sekundę odliczał timer1, a potem zwiększał jakąś zmienną która będzie odp za moje sekundy i tak dalej? Trochę zabawy zwłaszcza że każdy mies ma inna liczbę dni itp. Chyba, że coś nie zrozumiałem do końca. Edit: Sprawdzałem teraz...
Witam wszystkich Borykam się z pewnym problemem, otóż próbuje ogarnąć stoper i znalazłem jedno ciekawe rozwiązanie, które spełnia moje oczekiwania w połowie. Zegar rusza, wszystko działa tylko, że potrzebuję aby odliczał mi czas od określonego poniżej. W tym przypadku będzie to 45:00 Poniżej kod: [syntax=vbnet]Private Sub Timer1_Tick(sender As Object,...
Tak przy okazji, to zamień timery miejscami, niech 8 bitowy timer 0 generuje nośną a odliczanie czasu pozostaw 16bitowemu timer1, zrobisz sobie dzielnik przez 8 i masz jedno tyknięcie na 1us. ;) proste I niestety nie mam żadnych doświadczeń z VMLab, bo nie używam żadnych symulatorów niestety ;)
No i nie udało mi się tego zrobić na Timer0- on sie kręci bez przerwy a ja potrzebuję włączyć i wyłączyć timer. Tak że na razie na Timer1- szkoda bo 16 bitów- ale zrobię na Timer2. Spokojnie użyj Timer0, który będzie zgłaszał przerwanie np. co 1ms. W procedurze obsługi tego timera dekrementuj zmienną, jeśli osiągnie 0 to należy zatrzymać dekrementowanie,...
Możesz wykorzystać timer1 i trzy zmienne... sekundy, minuty, godziny... Przy częstotliwości 8MHz prescalerze 256 i warotści początkowej 34286 teoretycznie przepełenienie następuje dokładnie co sekundę...
Sposób jest bardzo prosty ... zmień język na C lub assembler. Też nad tym myślałem ale to proste nie będzie W drugiej kolejności zastanów się nad zewnętrznym flashem, bo jak sądzę tę pamięć zajmują Ci próbki dźwięków, a nie program. Nie ma żadnych próbek dźwiękowych program działa od kilku lat i jest ciągle udoskonalany. Buzzer znajduje się na płytce...
Spróbuj zamiast Load Timer1 , 7909 zastosować Timer1 = 7909 Procedura load nie jest dokładdna i może powodować taki błąd w odliczaniu czasu.
Witam szanownych elektrodowiczów. Mam mały problem z atmegą8 16PU. Mianowicie zrobiłem użądzenie do sterowania załączaniem pomp dyfuzyjnych . Urządzenie działa mniej więcej tak: 1-Ustawienie czasu załączenia się przekaźnika 2-Ustawienie czasu wyłączania się przekaźnika(przeście do głównej pętli) 3-Nieskończona Pętla -odliczenie czasu i włączenia przekaźnika...
Witam. CZy jest ktos kto jest dobrze obeznany w obsludze przerwan z poziomu BASCOMA. Procek Atmega8 Otoz moj problem polega na konflikcie tych dwoch przerwan. Timer1 obsluguje mi odliczanie czasu np 100ms. tzn po nastawionym czasie zalacza sie przekaznik poprzez podanie syg wysokiego na tranzystor.i ustawiana jest flaga zalczenia Timer0 sluzy do podawania...
witam. dziś także juz nerwa złapałem z tym timer0 i wierzyłem ze na elektrodzie będzie jakieś rozwiązanie, ale z tego co czytam nie tylko ja tak mam;/ .wracając do tematu: 1.próbowałeś zmienić port dla 1-wire? 2.jesli problemem jest już zamiana pinów to być może załączenie timer1 pomoże i na nim odliczanie sekundy,przykładowe uruchomienie: Config Timer1...
Witam kolegów, głowię się już ładnych parę dni nad taką kwestią w procku: zrobiłem na Atmedze8 zegarek. Zewnętrzny kwarc 4MHz. Timer1 zajmuje się odliczaniem równych sekund, Timer0 osługą wyświetlania itp. Na czym polega problem? Zegarek spóźnia się, wg moich obliczeń na symulatorze w AVR Studio, o 0,345s na dobę. Nie jest to szok ani porażka, raptem...
Witam chciałem skonfigurować timer1 w ten sposób że: 1.chodzi on cały czas odliczając 0-255 2.Przerwanie wywoływane jest po pierwsze po każdym przepełnieniu (czyli SIG_OVERFLOW1) 3.Przerwanie wywoływane jest w określonym czasie odliczania zapisanym w ICR1 (czyli TIMER1_CAPT_vect) Mój kod inicjujący przerwanie wygląda tak: TCCR1A = (1<<WGM10);...
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. Napisałem coś takiego (oczywiście to część z większego projektu) '$sim $regfile = "m8def.dat" 'informuje kompilator o...
Robię pewien projekt a dokładnie stacje lutownicza na regulacji fazowej i enkoderze i regulator PID. Regulacje zrobiłem enkoder działa regulator PID też. Chciałem dodać też pomiar prądu, ale wpadłem też na pomysł zeby zrobić odliczanie czasu działania urządzenia. Dodałem ten kod programu, przerwanie co 1ms z atrybutem NO_BLOCK. W sumie teraz wykorzystuje...
Z tego co wiem to bascomowe procedury LCD odliczają opóźnienie potrzebne wyświetlaczowi przy pomocy tego timera. Spróbuj zmienić timer albo poszukać w helpie bascoma.
Dzięki, widze teraz, że jednak troszke namieszałem ustawiając Timer2 ;) Nie wiem tylko dlaczego Bascom przepuścił moją konfiguracje Timer2. W pierwszej wersji programu, która była bez wykorzystania PWM (poprzez Timer2), program odliczał czas (Timer1), zliczał impulsy na Timer0 i migał diodą. W związku z tym pętla w programie głównym była pusta (Do-Loop)....
Dzięki działa tylko chodzi mi jeszcze o coś innego jeżeli do kodu Timer1.Interval:=i ; Timer1.OnTimer :=Timer1Timer; Timer1.Enabled:=true; pod np : 1000 czyli jedna sekundę podstawie i wyliczone ze wzoru to nie dziala odliczanie czasu dlaczego??????????
W helpie BASCOMA jest wyraźnie napisane, że funkcja GETRC5 korzysta z TIMERA 0, wiec odliczanie czasu zrealizuj na innym timerze, tak najprościej i najszybciej.
bo widzę że znów wyniki idą stabilnie ale co drugi :) Może puszczę to przez jakiś przerzutnik szmita alboco żeby sygnał wyczyścić Na wejściu w atmedze jest już przerzutnik schmitta. Raczej masz problem z zakłóceniami. Przy 10Hz rozrzut wyników jest na poziomie 20-30us czyli bomba Dokładniej z użyciem micros() to raczej nie będzie. Ta funkcja też korzysta...
ja w swoim "projekcie" timer0 wykorzystuje do pomiaru czasu po między zębami(dwa są na kole) jeżeli timer się przepełnił to program nie realizuje wyprzedzenia i wali iskrą odrazu 0 stopni lepiej zapala silnik zimą do 1000 obrotów tak jak pisałem wczesniej jest stały kąt 10 stopni od 1000 do 1500 obroty są obliczane z dokładnością co 10 bo tam charakterystyka...
Dla zainteresowanych podrzucę kod w bascomie na regulację fazową. Detektor zera podłączony do INT0, anoda diody optotriaka do wyjścia B.7, katoda przez rezystor do masy. Dużą zaletą tego rozwiązania jest praca z wykorzystaniem przerwań, pozostawia bardzo dużo czasu na resztę programu. [syntax=basic4gl] $regfile = "m8def.dat" 'Mój ulubiony układ $crystal...
Cześć Mam program, ktory w czasie 3 sekund (liczone przez Timer1) powinien liczyc impulsy podawane na licznik Timer0 i odpowiednio do tego tyle razy zaswiecic diode. $regfile = "m8def.dat" $crystal = 1000000 Config Pinb.1 = Output Config Timer1 = Timer , Prescale = 64 Config Timer0 = Counter , Edge = Rising On Timer1 Odmierz_3s Dim Licz As...
(...) timer1 wykorzystałem do multipleksowania wyświetlaczy, timer2 odpowiedzialny jest za odliczanie czasu asynchronicznie a timer0 służy do odbioru komend w RC5. Gdyby użyć jakiś zewnętrzny zegar RTC to by zwolnił ci sie jeden timer2. Zaś jako czujnik oświetlenia można by było użyć którejś z diod LED, wykorzystująć ją jako FOTODIODĘ. Pozdrawiam
Witam, zwracam się z prośbą o pomoc. Tworzę program sterujący silnikiem DC. Program składa się z menu głównego w którym są 4 podprogramy 3 z nich działają bezbłędnie. Największy kłopot sprawia mi 4 podprogram a zarazem najważniejszy. podprogram startt ma za zadanie odmierzyć zadany przedział czasowy gdy osiągnie wartość 0 wykonać pewną procedurę i zacząć...
Wystarczy jedno wejście I NTx , które będzie wykrywało ten impuls. Ale jeśli to będzie impuls "z ręki" jakiś klawisz to bez sensu - ze względu na drgania styków a potrzebny minimalny czas np 1ms. Jeśli to będzie impuls z jakiegoś wyjścia cyfrowego to ok. Założenia: - wykorzystamy tylko jedno wejście INTx - wykorzystamy tylko jeden Timer sprzętowy Przygotować...
A zmieniłeś Timer na Timer1? Przecież bez tej zmiany Timer nie jest ładowany i zlicza nie 1000 lecz 65536 cykli. Co daje właśnie około 64-krotne spowolnienie. Zmieniłem i nie pomogło, ale to dobry trop. Zauważyłem ze niezaleznie jaką wartość wysyłam do timera, 10, 1000 czy 10000 zawsze przerwanie występuje po takim samym czasie.Problem jest chyba gdzieś...
Przydał by się jakiś przykład ale pokombinuje . To trochę komplikuje sprawę bo timer1 jest już zajęty ale zobaczymy czy działa lepiej. Docelowo muszę dokonywać pomiaru 2 sygnałów ( sygnałów serw rc). Tylko jeśli ustawię: Config Timer1 = Counter , Edge = Rising , Capture Edge = Rising i po pojawieniu się zbocza zmienię na: Config Timer1 = Counter , Edge...
Wydaje mi się, że najpierw powinno być „uruchomione” odliczanie tych 0,1 sek, wyzwalane pierwszym pikiem z „paczki”. Potem trzeba odczekać te 0,1 sekundy na zanik „szumów” i zacząć zliczanie w czasie 0,9 sek. Ilość zliczonych pików podzielona przez czas da mi częstotliwość. Wynik ma się utrzymywać na wyświetlaczu...
Witam... Temat ten maglowany był tutaj już wieeellee razy.. ale niestety, nie znalazlem rozwiazania na moj problem, wiec go Wam przedstawie. Założenia projektu: PROSTY programowy generator PWM na AtTiny2313 o czest. 50Hz (okres 20 ms) a zmiennym wspołczynniku wypełnienia impulsu dodatniego wahajacym sie od 0.7 do 2.5 ms (chodzi o sterowanie serwomechanizmami)...
Zgadzam się z kolegą. Używanie polecenia wait to tak jakbyś strzelał z działa przeciwpancernego do muchy... Przykładowe skonfigurowanie licznika 16-bitowego w BASCOM tak żeby zliczał do 1s przy częstotliwości taktowania 16MHz: ( wszystkie ustawienia konfiguracyjne oraz deklaracja zmiennych ) Config Timer1 = Timer , Prescale = 256 ' konfiguracja licznika...
Witam. Urzyłem w moim programie Timer1. I od razu wynikł tu problem. Pomimo użycia podobno dokładnego odliczania i tak sekundy są naliczane zbyt wolno (przynajmniej na wyświetlaczu). Wie ktoś z jakiego powodu? Oto istotna część programu: TCCR1B |= ((1 << CS10) | (1 << CS11)); //częstotliwość przez 64 if (TCNT1...
A change of the COM1x1:0 bits state will have effect at the first compare match after the bits are written. For non-PWM modes, the action can be forced to have immediate effect by using the FOC1x strobe bits. Być może w tym jest problem. OC1A jest prawdopodobnie inicjowane z wartością 0 do momentu wystąpienia pierwszego "compare match". W trybach "set...
Tojmak987123 pomyliłeś pojęcia: Szerokości wypełnienia nie mierzy się w Hz tylko w procentach lub jednostkach czasu (np. mikrosekundach). Twój program wywołuje przerwanie Timera0 co (256-194)*64 cykli zegara, Timer1 jest ustawiany 5 razy rzadziej czyli co 19840 cykli zegara tylko tyle możesz nim odmierzyć (a nawet trochę mniej ze względu na czas ustawiania)....
ok czyli taki programik powinien działać? $regfile = "m8def.dat" $crystal = 4000000 Config portd = input Config Portb = Output 'lcd display Const Timer1reload = 62500 ' tyle tikow zegara potrzeba dla 1 sec. Config Timer1 = Timer , Prescale = 64 Dim Czas As Byte load timer1 , Timer1Reload on ovf1 Timer1_isr enable timer1 start timer1 Enable...
Ja uczyłem się na poniższym kodzie: [syntax=basic4gl]'1 second code $regfile = "m8def.dat" ' or "m88def.dat" or "m168def.dat" $crystal = 4000000 $baud = 9600 $hwstack = 32 $swstack = 16 $framesize = 40 Dim Seconds_count As Long ' ========================================... ' Timer1 initialization ' ' Mode: Clear Timer1 on Compare Match (CTC...
Poradziłem sobie z paskiem, ale dalej mam problem z ustawieniem timera. Znalazłem taki oto kod napisany przez kolegę emarcus : $regfile = "m8def.dat" $crystal = 4000000 Config Portd.0 = Input 'przykladowe wejscie ' do wejscia dolaczono przycisk (momentary push ON/OFF) Config Portd.1 = Output 'przykadowe wyjscie Portd.0 = 1 Portd.1...
Proponuję ściągnąć z sieci program do obliczania parametrów timerów np. kalk.exe. I musisz odróżnić Load timer 1, ? od Timer1 = ?. Za pomocą pierwszego wskazujesz ile timer ma odliczyć a za pomocą drugiego od jakiej wartości ma zacząć odliczanie aż do przepełniena.
Witam Mam dziwny problem z konfiguracją timer1 w atmedze644pa w trybie CTC. Kod jest następujący: [syntax=c] #define TIMER1_OCR 10801//10799//10800 // 1 sekunda void timer_init(void) { TCCR0A=(1<<WGM01); TCCR0B=(1<<CS02)|(1<<CS00); OCR0A=TIMER0_OCR; TIMSK0=(1<<OCIE0A); TCCR1B=(1<<CS12)|(1<<CS10)|(...
no, to tak pierwsza przymiarka: $regfile = "M8def.dat" $crystal = 8000000 Config Lcd = 20 * 2 Config Lcdpin = Pin , Db7 = Portc.0 , Db6 = Portc.1 , Db5 = Portc.2 , Db4 = Portc.3 , E = Portc.4 , Rs = Portc.5 Config Timer1 = Timer , Prescale = 1024 Config Int0 = Rising 'Config Pind.2 = Input Enable Interrupts Enable Int0 On Int0 Zliczaj Enable...
Ok już mam, nie chodzi o nazwę przerwania (dziękuję za zgryźliwość ;) ) tylko o to, że chciałem użyć TIM1_CC, a zadziałało TIM1_UP. Ponadto ono się wywołuje od razu po starcie timera (TIM1->CNT==0), a ja w przerwaniu od razu go wyłączam, przez to nie widziałem efektu przerwania. Już sobie poradziłem - w przerwaniu odliczam dwa wywołania i dopiero za...
Tak:) Zrobiłem:) Dzięki za pomoc!! Jeżeli TCNT1 doliczy się do OCR1 na skutek pracy CTC, to nie wywoła tego TCNT1, tylko rejestr OCR1 czyli przerwanie aktywowane bitem OCIE1A w rejestrze TIMSK (str. 112). Właśnie tam w przerwaniu z obsługi flagi OCF1A zostanie wygenerowane przerwanie, bo w końcu ustawiam WGM12 na taki tryb pracy timera. Gdyby był zwykły...
Witam jestem początkujący w temacie bascom potrzebuję rozwiązać problem związany z błędnym odliczaniem zaprogramowanego czasu. Program przerobiony z działającego zegara ( samo odliczanie działa dobrze), tylko chcę żeby w 20 -stej sekundzie wyjście PIND.2 zostało załączone i w 45-tej sekundzie wyłączone. Teraz działa przypadkowo w 20 sekundzie zostaje...
Nie wiem czy dobrze się wyraziłem ale potrzebuje zrobić coś takiego co po spełnieniu warunku z instrukcji if odliczy odpowiednia ilość czasu i wykona inne zadanie oczywiście nie zatrzymując programu który musi być wykonywany bez przerwy. Tak sobie wymyśliłem ,że użyje funkcji clock z parametrem user i programik który będzie wywoływany co sek będzie...
Witam wspólnotę chciałbym zaznaczyć że z wykształcenia jestem mechanikiem, a z programowaniem nie miałem wcześniej styczności. Przeczytałem książeczkę która mowiła o programowaniu w jezyku bascom, i stworzyłem taki o to kod programu. [syntax=basic4gl] $regfile = "m8def.dat" $crystal = 8000000 Config Timer0 = Timer , Prescale = 256 'licznik do odmierzania...
TIMER1 COMPA Timer / Licznik 1 dopasowanie porównania A Masz chyba rację ale jak to jest w szczegółach? Kiedy następuje przerwanie w PWM -korekcja fazy, przy odliczaniu w dół czy górę? Potrzebne mi jest rozróżnienie by PWM był poprawny fazowo. Jednak chyba zdecyduję się na czytanie pinu OC1A/ OC1B.
Timer1 wykorzystujesz do zliczania impulsów (wejście T1) a timer2 w trybie asynchronicznym z kwarcem zegarkowym odlicza czas... Musisz znać obwód koła... Potem to już prosto... Przeliczasz ilość obrotów w danym czasie na drogę i wyliczasz prędkość... Rejestry konfiguracji poszczególnych timer'ów są opisane w dokumentacji...
Proszę bardzo. Napisany w 20 minut więc błąd mógł się wkraść. Timer co minutę daje znać i wtedy odliczane są minuty do włączenia bądź wyłączenia wentylatora. Przyciski są dwa. Kiedy naciśniesz jeden z nich to od razu powinien włączyć się wentylator (można w ten sposób zawsze wymusić start wentylatora). W programie u góry podaje się czasy wyrażone w...
Witam Piszę program (bascom) i nadziałem się na problem z którym nie mogę sobie poradzić. Timer 1 pracuje jako zegar i po spełnieniu warunku , ma załączyć przekaźnik który ma być załączony na czas_pracy i po odliczeniu czasu pracy ma wyłączyć się na czas przerwy i zablokować włączenia przekaźnika na ten czas. Tak w skrócie: kod : $regfile = "m8def.DAT"...
Witam. Próbuję zrobić prosty obrotomierz do samochodu na Attiny2313. Do testów z jednego Attiny2313 zrobiłem prosty "generator" 100Hz Kod: $regfile = "attiny2313.dat" $crystal = 4000000 Config Pinb.0 = Output Config Timer1 = Timer , Prescale = 1 Timer1 = 45536 On Timer1 Czas Enable Timer1 Start Timer1 Enable Interrupts Portb.0 = 0 Do Loop...
Dla czego zegar odlicza czas niedokładnie? co jest źle w tym kodzie? Którą wartość należy poprawić aby zegar liczył dokładnie $regfile = "m32def.dat" $crystal = 16000000 Config Pinb.1 = Input Config Pinb.2 = Input Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5...
Posprzątałem trochę w programie i próbowałem uruchomić tą wersje z mierzeniem czasu miedzy przerwaniami jednak wyświetlało dziwne wartości i nie mógł się zdecydować czy prędkość wynosi 100 czy 900 obr/min taki mniej więcej rozrzut miał więc wróciłem do wersji zliczania impulsów i aktualnie wygląda to tak. [syntax=c]#include <avr/io.h> #include...
1ms to dla moich oczu nic nadzwyczajnego :P a tak powaznie 1 ms to troche pomylone :) co do datasheeta - rozumiem wszystko, jedynie czego nie kumam to jak ma się wartość, od/do której chcę żeby timer odliczał/zliczał do uzyskanego opóźnienia, zakładając że albo korzystam z zegara 8 MHz zewnętrznego albo wewnętrzego ok 32 kHz. kompilator to C (ten z...
Ustawienie bitów WGM13:WGM12:WGM11:WGM10 na 1001 (9) oznacza ustawienie timera w tryb pracy "PWM, Phase and Frequency Correct", w którym rejestr OCR1A służy do ustalenia wartości, przy jakiej wartości licznik ma rozpocząć odliczanie w dół (zmienić kierunek zliczania), a nie do ustawienia wypełnienia. Użyj innego trybu. Nie napisałeś, co chcesz osiągnąć,...
No dobra. Pierwsze kroki. Teoria: http://ep.com.pl/files/3561.pdf Aplikacja do testów: http://www.mcselec.com/index.php?option=... Kod bootloadera: http://avrhelp.mcselec.com/index.html?lo... 1. W urządzeniu na ATmega644p stosuję wewnętrzny oscylator 8MHz i prędkość transmisji po UART 4800 baud (8N1,...
Potrzebuję pomocy w konfiguracji Timer1 (ten mam wolny) ewentulanie modyfikacja obecnej konfiguracji Timer0. Obecna konfiguracja jest dla odliczania odpowiedniego czasu dla ramek RC5 odbieranych przez odbiornik TSOP322 przy taktowaniu procesora z F_CPU=8MHz, w celu oszczędności energii chcę zrobić odbieranie przy częstotliwości 1MHz. Jak widać z obsługi...
timer odlicza zegar odlicza atmega odlicza
toshiba kanały cyfrowe przedwzmacniacz gramofon phono vaillant podtrzymanie
teltonika konfiguracja ddt4all renault
Pomiar różnicowy oscyloskopem przy różnych masach Jak ustawić posuw na tokarce TUC 175?