Tu masz kod który korzysta z przerwań i co 1 sekundę ustawią zmienną s1_flag na 1. Musisz pamiętać, aby ją w funkcji głównej zerować, bo tak cały czas będzie ona usttawiona na 1. Ten kod jest tylko poglądowy, ma ci tylko przybliżyć co i jak z przerwaniami. [syntax=c]int main(void){ volatile uint8_t s1_flag, /********** KONFIGURACJA TIMERA2 do wygenerowania...
A gdzie instrukcja CONFIG TIMER1 = COUNTER?
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.
Co tutaj przekombinowałem? Atmega32. Tryb Licznika. Celem było zapalenie i gaszenie diod co sekundę. Preskaler = 256. Przerwanie tak wyliczone aby wykonywało się co sekundę. Timer 16bitowy [syntax=c] #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> ISR (TIMER1_OVF_vect) { PORTC ^= ~0xFF; //zmiana stanu portu C...
Prototyp zrobiłem na pomiarze napięcia (ADC) na fotodiodzie - to chodziło, dopóki nie zacząłem testu na dworze.... Fotodioda łapała podczerwień z... no właśnie, skąd? Nie wiem. To oczywiste. Światło z otoczenia również zawiera podczerwień, więc pojawiają się zakłócenia. Po odłączeniu fotodiody i dotykaniu kabelkiem do + na wyświetlaczu także pokazywały...
A jak programowo rozwiązać taką kwestję: Zasilanie sieciowe -> timer1 zlicza impulsy 100Hz i generuje przerwanie, na jakis port dajemy Vcc do detekcji sieci Brak sieci -> przerwanie generuje timer2, z odpowiednio dopasowanym prescalerem i wartością w pisaną do counter2?
Witam. Mój wtrysk w samochodzie jest załanczany poprzez mase. Jak skonfigurować Timer żeby zliczał czas załączenia masy. Z tego co pamiętam to gdy podamy mase na Timer1 to zlicza impulsy dopóki nie wystąpi stan wysoki. Jak skonfigurować w bascomie żeby tak pracował???
Muszę użyć układ dwóch timerów ponieważ w docelowym układzie zakres czasowy Timera1 będzie za mały. Czy procesor zliczy na T1 impulsy generowane na OC2 ? Obawiam się sytuacji, że przy wspólnym CLK gdzieś mi się zbocza miną pomiędzy OC2 a T1 i układ nie zatrybi... Oczywiście że zbocza te mogą się minąć, ale to jest bez znaczenia. Podczas synchronizacji...
Daj jakiś schemat. Bo już nic z tego nie rozumiem. Co ma wyzwolić opóźnienie? Bo Timer1= counter zlicza impulsy z PD.5. Czy na tę końcówkę podajesz impulsy jakieś?
Oczywiście :) Timer0 jest 8bitowy czyli zlicza do 256 :) Timer1 jest 16 bitowy i zlicza do 65536 :D Może to sprawa pojemności licznika?
Witam Procesor jak w temacie. Podłączyłem sygnał zmienny (fala prostokątna) do obu nóżek PortB0 (T0) i PortB1 (T1). I okazuje się że licznik T1 działa (zlicza impulsy) zaś licznik T0 stoi. Czego może to być przyczyna? Spalona końcówka czy coś trzeba jeszcze ustawić? W dokumentacji jest, że na tej nóżce jest XCK od USART'a. Może mam to włączone? Ręce...
O właśnie teraz pomyślałem o zewnętrznych przerwaniach, że tak można by to zrobić. Natomiast nie rozumiem co rozumiesz przez stwierdzenie, że tryb PWM skraca cykl zliczania do 256 (czy ileś tam)? Specyfikacja procka stwierdza że dla Fast PWM "The minimum resolution allowed is 2-bit (ICR1 or OCR1A set to 0x0003), and the maximum resolution is 16-bit...
Ja zawsze wpisuję Timer1 = var i to jest wartość początkowa licznika , a wpisując instrukcję load , podajesz ilość impulsów do zliczenia , a nie wartość początkową timera, kompilator sam wylicza wartość początkową.( chyba ). Timery zliczają w górę.
margas4542 zaopatrz się w program TimerCycles ze tej strony: http://www.wkretak.pl/downloads.php?cat_... Dzięki temu obliczysz liczbę cykli czyli to co zapisuję się do rejestru OCR1A. Jeśli chodzi o timery to po pierwsze preskaler(czyli część obwodu timera który dzieli impuls zegarowy tj. zmienia rozdzielczość timera) jest ustawiony na 1 mówi o tym...
Czytam i sam się pogubiłem hehe . Czy tu chodzi o względne przesunięcie (tmf) czy bezwzględne (satanistik). Parę miesięcy temu robiłem sterowanie PID dla servo Xmega w bascom . [youtube]https://www.youtube.com/watch?v... Nie obyło się bez problemu , który polegał na zliczaniu bezwzględnym więcej niż 65535 impulsów . Mój wpis z innego...
No właśnie zmieniłem CLKDIV8 na 1 czyli nie zaprogramowane i wreszcie zaczęło działać ale nadal przy ustawieniach TIMERA jakie podałem w programie nie odlicza mi 1s ale około 3s natomiast przy takich ustawieniach: zegar 12MHz prescaler=1, Load Timer1 = 65000 i zliczaniu 200 Dla Timera1 przy taktowaniu 12MHz aby uzyskac 1sec. bez kombinowania zliczania...
No wlasnie, tylko czemu zmiana na wyswietlaczu nastepuje co 1 sekunde?. Jak nie ustawiam load timer to czas miedzy zmianami jest ten sam. Rozumiem ze timer1 jest 16bitowy zlicza do 65536. Ile nie ustawie load timer1 = 250 czy 65100 to zmiany nastepuja w podobnych odstepach czasu. A ja potrzebuje uzyskac rowno 100ms na przerwaniu
A co Tobie niby nie chodzi w tym proramie? Ja przed chwilą skompilowałem i uruchomiłem w trybie symulacji następujący kod: $regfile = "m8def.DAT" $crystal = 8000000 $baud = 9600 Config Timer1 = Counter , Edge = Falling , Compare A = Disconnect , Clear Timer = 1 Compare1a = 100 On Compare1a C1 Enable Compare1a Enable Interrupts Config Pinb.0...
Konfiguracja timera '51 jest inna : [syntax=basic4gl]Składnia: CONFIG TIMERx = COUNTER | TIMER , GATE = INTERNAL | EXTERNAL , MODE = 0 | 1 | 2 | 3 gdzie: x0 – TIMER0, 1 – TIMER1, Opis: TIMER0 i TIMER1 mogą pracować jako liczniki impulsów zewnętrznych gdy pierwszy parametr jest ustawiony jako COUNTER. Impulsy zliczane muszą być dostarczane...
Tak. Gdybyś chciał wprowadzić przesunięcie o p.cz. to trzeba byłoby wstawić Czestotliwosc = Czestotliwosc +/- Pcz W tym programie Timer1 (16 bitowy) zlicza czas 1s. w jednym przebiegu dla zwiększenia dokładności pomiaru. Impulsy liczone są przez Counter0.
Sygnałem wyjściowym hallotrona jest napięcie. Tak więc przez 1/2 LM358 pracująca jako komparator i zasilona napięciem takim jak procesor. Ważna jest biegunowość napięcia wejściowego.
Mam następujący kod programu. Moje pytanie brzmi: Dlaczego program nigdy nie wchodzi do przerwania, a przynajmniej tak pokazuje VMLab, w którym to symuluję. Czy trzeba jeszcze coś w jakimś rejestrze ustawić. Program ma wchodzić do przerwania w momencie kiedy licznik zrówna się z OCR1A. #include<avr/io.h> #include<avr/interrupt.h> #include<avr/signal.h>...
Która atmega? W atmega8 możesz użyć: Timer0 - odmierzanie czasu Timer1 - zliczanie impulsów Timer2 - PWM
Witam, mam problem z czujnikiem odległości HC-SR04, cały czas na wyświetlaczu mam wartość 0. kod jest następujący: Dodano po 21 Dobra chyba wiem po co zmiana zbocza na końcu przerwania, po prostu czekamy na zobocze opadające aby ponownie wejść w przerwanie i odczytać wyniki, program nadal nie działa ale już wiem jak powinien działać chociaż : )
To w końcu nie rozumiem po co Timer1 odpalać w trybie CTC? W końcu w przerwaniu ICP trzeba liczyć okres sygnału bo przecież tryb CTC ograniczy tylko wartość maksymalną do jakiej zlicza Timer1 i powoduje jego automatyczne wyzerowanie. Poza tym ta wartość wynika z wpisu do odpowiedniego rejestru - jeśli dobrze pamiętam...robiw
Płytkę już polutowałem, silnik zamontowałem tymczasowo w podstawce zrobionej z pudełka na płyty cd a góra służy jako ochrona. Wszystko ładnie się już kręci :). Napisałem też szkielet programu w Bascomie (świetny trening bo dopiero zaczynam) i właściwie działa ale algorytm jest trochę do bani. Bo timer1 (16bit) zlicza cykle zegarowe od przerwania INT0...
Witam! Przyznam że trochę chaotyczny ten fragment kodu. Myślę że mógłbyś bardziej korzystać z makr jakie oferuje środowisko winavr, np. cli() - globalne wyłączenie wszystkich przerwań, sei() - jw. tylko odblokowanie i np. zamiast pisać: TCCR1B = 0x19; może nie krócej ale na pewno czytelniej jest: TCCR1B=_BV(WGM13)|BV(WGM12)|BV(CS10); co oznacza tryb...
Witam. Używam przerwania INT1i TIMERA1 do odmierzania czau trwania stanu wysokiego na wejściu INT1 przez zliczanie odcinków czasu 400us podczas trwania stanu wysokiego na wejściu INT1. '****timer1******** Config Timer1 = Timer , Prescale = 64 On Timer1 Pomiar_czasu Load Timer1 , 50 Enable Timer1 Stop Timer1 '*****wtrysk***** On Int1 Wtrysk Config Int1...
Nie masz nigdzie obsługi przerwania: TIMER1_OVF_vect ......... INT0_vect liczba-- ...... W TIMER1_OVF_vect możesz choćby ustawić flagę. P.S. Drgania kontaktronu wygaszają się w czasie 100us. Przynajmniej tego który sprawdzam właśnie.
DSy potrzebują 750ms na pomiar i konwersję danych, ale po wysłaniu komendy, procek może zająć się czymś innym i odpytać ponownie czujniki po tym czasie. Tak z ciekawości - po co Ci aż taka szybkość pomiaru temperatury, która i tak zmienia się powoli ? Witam. Mam wykonany termometr jednopunktowy na DS18B20 i ATtiny2313. W celu nauki i sprawdzenia działania...
1. Sprawdź jak działa samo serwo po podłączeniu zasilania, a jak po jego odłączeniu. 2. Pokaż schemat. 3. Pokaż kompletny program. 4. Zastanów się, jaki tryb pracy Timer1 włączasz, a w konsekwencji do jakiej wartości zlicza Timer1 i jak to się ma do 1Mhz (którym taktujesz mikrokontroler) oraz standardu sygnału sterującego serwem? http://obrazki.elektroda.pl/3955387700_1...
Chcialabym wobec tego wykozystac timer1. No to do dzieła. Generalnie upierałbym się przy najprostrzym rozwiązaniu czyli: Timer1 zliczający impulscy z kwarca zegarkowego 32.786kHz, Timer przy przepełnieniu budzi procesor co 2 sekundy. Procesor zlicza ilość obudzeń (15 obudzeń to 30 sekund, 7185 obudzeń to 3:59:30 ). Czyli przy obudzeniu 7185 załącza...
Hej Ludzie mam pewien problem.z tego co sie orientuje ustawione liczniki: Config Timer0 = Timer , Mode = 1 , Gate = Internal Config Timer1 = Timer , Mode = 1 , Gate = Internal Start Timer0 Start Timer1 Do Loop powinny zliczac taka sama wartosc.a w symulacji programowej wychodzi, ze jeden zlicza o polowe szybciej niz drugi np: T0=100 to T1=50,T0=10 to...
Musisz przestawić "Option Byte" dla tego pinu na funkcje alternatywną "TIM1_CH1": "AFR0 Alternate function remapping option 0(2) 0: AFR0 remapping option inactive: Default alternate functions(1) 1: Port C5 alternate function = TIM2_CH1; port C6 alternate function = TIM1_CH1; port C7 alternate function = TIM1_CH2." Możesz to zrobić programowo, jak również...
Witam, .......... Czy arduino uno posiada może wbudowany licznik który działa niezależnie od programu? Tak aby przerwaniem co sekunde mógłbym sprawdzać jaka jest wartość w liczniku który liczyłby impulsy? TAK! Arduino posiada ich trzy, funkcjonujące totalnie niezalenie od wykonywanego programu, z pewnymi jednak warunkami lub ograniczeniami. Są to :...
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)....
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...
Pozmieniałem troche program ale nie działa prawidłowo prędkość strasznie skacze od 0 do 240 km/h -bo nie zerujesz co 1 sec. licznika impulsów (Timer0), ponadto ,masz zbyt duży błąd zaniżając zakrses zmienmnej "Licz" - as byte Porównaj: $regfile = "2313def.dat" $crystal = 8000000 Config Lcdbus = 4 Config Lcd = 16 * 2 Config Lcdpin = Pin ,...
Skoro sygnał ma być podawany na INT1 (PD3) to chyba tu jest problem bo podłączony jest tu wyświetlacz No ale jak to? Mówisz tak ja by wyświetlacz podłączył tam się sam. A przecież to Ty go chyba podłączyłeś. Wina więc nie w wyświetlaczu a w tym kto go podłącza :D No i druga sprawa. Nie bardzo rozumiem dlaczego chcesz podłączać sygnał do INT1, skoro...
........ chce wykorzystać wewnętrzny kwarc 8Mhz po trzecie czytając helpa jesli dobrze rozumiem to timer1 jest 16bitowy a timer0 jest 8 bitowy emarcus - gdybym chciał wykorzystać twój pomysł to gdybym zostawil timer1 jako counter a jako timer wykorzystał timer0 ktory by zliczał czas w jakim sa zbierane impulsy - jeśli o to ci chodziło i jeśli jest...
Przepraszam za dłuższą nieobecność. Nie mając nic nowego (i mądrego) nie pisałem. Ale w międzyczasie polutowałem zestaw startowy, a ostatnio napisałem inny program, który umożliwia (w zamyśle) liczenie dokładniej częstotliwości dla "paczki" impulsów, tym razem około 500 Hz. Wiem, że to dosyć skomplikowany tok myślenia, pewnie można to zrobić prościej,...
Przede wszystkim musisz zacząć kolego od poznania timerów. Do odmierzenia czasu używamy timerów ponieważ zlicza nam czas w tle działania procesora. Używając polecenia wait zatrzymujesz kompletnie uC na ten czas. Konfiguracja dla AtMega8 8Mhz u mnie wygląda tak: Config Timer1 = Timer , Prescale = 256 ''''konfiguracja timera On Timer1 1s ''''przy przerwaniu...
Zdaje się wiem: timer1 zlicza 65536 (0xffff) x cykl 1us to daje ok. 65 ms, a transmisja: 48bit x 2 x 400us (lub 1200) przyjmijmy 100 x 400us co daje ok. 40ms - minimum!!! Więc to po prostu nie ma prawa działać! no i poprawiłem, czyli zerowanie timera po pierwszym impulsie - transmisja 40ms 'zmieści się': p1_ok: bsf ir_reg, 1 ;first pulse btfssir_reg,...
Timer- np. Timer1- jako licznik zlicza impulsy zewnętrzne. Podane na odpowiednią końcówkę- T1 w wypadku ATmega8. Nie potrzebuje żadnego preskalera- bo preskaler dzieli impulsy z zegara- a tu nie ma co dzielić. Ustawiamy bity CS10-CS12 na external clock source- falling lub rising. Czy ustawiamy końcówkę T1 jako wejście- nie pamietam. Można ustawić. Ilość...
Dobra. Wziąłem pierwszego lepszego pdf-a ze strony producenta. Są tam dwie końcówki ( T0,T1) . To są timery??? Dodano po 5 Doczytałem się też, że są tam dwa timery - jeden 16 bit ( counter 1) i jeden 8 bit ( counter 2). Czyli, że do 16-bitowego mam odwoływać się timer1 ??? do ilu zlicza 16-bitowy a do ilu 8-bitowy??? czy wiedząc,że jeden ma 8 bitów...
Kosmo Timer1=34285 wyszło z prostej kalkulacj. przy zegarze 8000000 i preskalerze 256, timer uP'a zliczy 8000000/256= 31250 "impulsów". Czyli aby licznik sie przepelnil nalezy zaczasc zliczanie od 65535-31250=34285.
W oparciu o Wasze rady oraz [url=http://www.avrfreaks.net/index.php?... Guide to AVR Timers i przydatną stronę [url=http://www.et06.dk/atmega_timers/]A... Timer/Counter/Prescaler Calculator w wolnym czasie sklepałem taki kawałek kodu: [syntax=c]#include <avr/io.h> #include <avr/interrupt.h>...
Sorki rz eczywiście coś pokreciłem ale pomogłeś mi ;-) nie wiedziałem ze timer0 jest 8 bitowy myślałem że tak jak timer1 16 bitowy, i nie zlicza on do 4884 tylko 4884 razy sie przepełnia czyli po 1,250,304 X 8 taktch przerywa zliczanie :-) czy po równej sekundzie odliczjąc takty na przepaładowanie timera i wykonanie kilku procedur :) dzieki za pomoc
Witam! Wykonałem ten zegarek lecz mam kilka problemów. 1) Wsad drakerus'a zmodyfikowałem tak jak polecił kolega berq na 16MHz: $crystal = 16000000 i Config Timer1 = Timer , Prescale = 256, lecz zegarek 10 sekund zlicza w normalne 3 sekundy. Nie znam się na językach programowania ale zauważyłem że jak zmieniłem jeszcze w tym programie Timer1 = 3036 na...
Witam Czy ktoś ma jakiś pomysł jak programowo zliczać impulsy timerem0 większe od 256 ? Timer1 chciałem wykorzystać jako PWM więc on odpada. Pozostaje timer0 ale on zlicza tylko do 256, a ja potrzebuję zliczyć do 390. Jak to zrobić programowo, żeby jak counter0 się zwiększy o 1, to żeby zwiększył jakąś zmienną o jeden. W ten sposób mógłbym zliczać większą...
Może ten temat troche pomoże jest na innym kwarcu ale zasada ogólnie ta sama http://www.portalnaukowy.republika.pl/ob... Takie rozwiązanie w Bascomie jest najprostsze, tzn pomiar czasu poprzez komendę Wait 1(odczekanie 1 sekundy), odliczenie 1 sekundy podczas, której Timer1 jako licznik zlicza ilość impulsów. Już tak robiłem, ale domyślnie...
[syntax=basic4gl] Dim Przerwa As Byte 'licznik czasu przerwy Dim Pomoc1 As Byte , Pomoc2 As Byte , Wysw As Byte 'zmienne pomocnicze Dim Random As Byte 'zmienna do uzyskania przypadkowości Dim Zliczaj As Bit '1 - zezwolenie zliczania czasu Dim Setne As Byte 'licznik setnych części sekundy Dim Dzies As Byte 'licznik dziesiątych części sekundy Dim Wygasz...
[syntax=basic4gl] Config Timer1 = Timer , Prescale = 8 'Parametr Prescale może być równy:1, 8, 64, 256 lub 1024 [/syntax] Potem w programie możesz sobie odczytywać zawartość tego licznika w następujący sposób (np.): [syntax=basic4gl] Stan = Timer1 'Zmienna Stan typu Word [/syntax] robiw
juz to robie w inny sposob, ale teraz mecze sie nad czyms innym... chce zrobic licznik impulsow zewnetrznych, na timerze 1 ale nie za bardzo chce mi to wyjsc... po prostu program nie chce wejsc mi w przerwanie :( czy moglby mi ktos napisac co powinienem ustawic poza: config Timer1 = timer, prescale = 1 set (pin tam gdzie jest t1) (pin gdfzie...
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...
Nie jestem za biegły w timerach i się ciut pogubiłem. Proszę zatem o podpowiedzi. Próbuję ustalić ile czasu będzie trwał impuls podawany na INT procesora a jednocześnie zmierzyć czas od początku tego impulsu do początku następnego. Jednym uP podaję impulsy na drugi uP. Do Portc.7 = 0 'stan wysoki Waitms 1 Portc.7 = 1 'stan niski Wait 5 Loop Drugim uP...
Witam, posiadam płytkę ZL29ARM i staram sie zrealizowac odczyt predkosci obrotowej przy uzyciu enkodera wobit M590. Kierujac sie dokumentacja "reference manual" podlaczylem enkoder - kanaly A i B na piny numer 6 i 7 na porcie A, uruchomilem Timer3 w trybie enkodera i dziala - zlicza w gore, w dol. Problem polega na tym, ze program powinien udostepnic...
A to jest też proste ;) Okres PWM , jest wprost proporcjonalny do aktualnie ustawionej pojemności licznika(maksymalnej wartości do której licznik zlicza) .Ponieważ Timer1 w ATTiny2313 ma aż 16 trybów pracy , to zależnie od efektu jaki chcemy osiągnąć , trzeba sobie wybrać odpowiedni tryb jego pracy.I w tym miejscu , należy udać się (niestety?) do dokumentacji....
1. W jakim języku piszesz? 2. Kalkuluje się to tak: Masz kwarc 16 000 000 Hz (16 MHz) i dajesz sobie jeden z dopuszczonych prescalerów, np. 64 i wtedy timer zlicza Ci impulsy z częstotliwością 16 000 000 / 64 = 250 000 Hz, czyli jeden impuls timera to 4*10^-6 s lub inaczej aby odmierzyć 1s musisz zliczyć 250 000 impulsów, Jako, że Timer0 jest 8 bitowy...
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<...
Jak jest z dokładnością zegarka RTC w Atmega8? Słyszałem plotki, że nie chodzi to zbyt idealnie. Potrzebuję zrobić zegar do zliczania tylko dni i zastanawiam się czy jest sens stosować zewnętrzny układ RTC. Układ musi mieć podtrzymanie zegara z baterii/kondensatora w przypadku zaniku zasilania. Śmiało możesz użyć np. Timer1 w trybie CTC jako generatora...
hunterhouse W AVR-ach sprzętowo można zatrzasnąć zawartość timera , ale uruchomić zliczanie trzeba programowo.Natomiast w 51-ce można uruchomić i zatrzymać timer sprzętowo.Jeśli na P3.3 jest stan wysoki i flaga GATE timera1 jest ustawiona , to timer zlicza doputy , dopuki stan na P3.3 nie zmieni się na niski.Problem jest tylko z tym , że Charly chce...
ok. Sytuacja taka: Kod nieładny ale tylko dla przykładu. Właśnie doczytałem że DMD używa timera1 dlatego zmieniłem na 3 i działa :) Timer1 ma zliczać tylko impulsy tzn różnice czasu między zboczami opadającymi w przebiegu. Dzięki za pomoc. Ta funkcja była na szybko pisana. Oczywiście docelowo będzie tylko print wywoływany.
Panowie, na szybko zapytałme chatGPT, o kod do obslugi enkodera i zapalenie diody na 1 sekunde ale żeby nie gubic liczenia impulsow. Czy taki kod jest prawidlowy: // Deklaracje zmiennych volatile int impulsy = 0; // Licznik impulsów const int enkoderPinA = 2; // Pin A enkodera podłączony do pinu 2 na Arduino Nano const int enkoderPinB = 3; // Pin B...
Witam! To mój pierwszy post, więc proszę o wyrozumiałość. Skonstruowałem licznik impulsów - częstościomierz, w oparciu o projekt AVT5025 (Mikroprocesorowy wykrywacz metali). Sonda wykrywacza umieszczona będzie przy bramie wjazdowej na parking i jeśli pojawi się nad nią samochód to na danym pinie mikrokontrolera pojawi się stan wysoki. Układ ma po prostu...
Mam prostokąt (PWM) na timer1. Czy zliczać Timer1 czy Timer0? Timer ma być ustawiony na time czy counter. Wydaje mi się że najlepiej byłoby ustawić na zliczanie impulsów czyli counter i po odliczeniu 59 zatrzymać Timer1 na czas 1 lub 2 impulsów. Wszystko OK ale nie udaje mi się to w praktyce. Albo nie generuje nic, albo nie zatrzymuje po odliczeniu....
Zapis LPC_TMR32B1->TCR = 0; //DIS.TIMER na początku programu zbędny ponieważ po restarcie/uruchomieniu licznik nie zlicza. LPC_SYSCON->SYSAHBCLKCTRL |= 0x11; // System AHB clock control enable clock to timer1 32 na pewno nie załącza bloku timera, ewentualnie I2C. Więcej znajdziesz w UM w rozdziale LPC111x/LPC11Cxx System configuration (SYSCON)...
Witam. Zliczam sobie odcinki czasu i nagle program sam od siebie zeruje wynik i zlicza z powrotem od 0. Poniżej zamieszczam część programu odpowiedzialną za zliczanie, może ktoś ma pomysł czemu się tak dzieje? '****timer1******** Config Timer1 = Timer , Prescale = 64 On Timer1 Pomiar_czasu Load Timer1 , 50 Enable Timer Stop Timer1 '*****wtrysk*****...
Koledzy, mam mały problem, gdyż mój pomysł na zliczanie czasu otwarcia wtrysku nie bardzo się sprawdza. W tej chwili robię to tak, że w czasie 0,5s w pętli sprawdzam czy na pinie do którego jest podłączony sygnał wtrysku jest stan wysoki, jeżeli jest, to zwiększam zmienną "wtrysk". Działa to w miarę dobrze, ale jak np. wcisnę przycisk, co wiąże się...
Witam Potrzebuję zbudować licznik który po zliczeniu określonej liczby impulsów wykona jakąs czynność. Jako generator impulsów wykorzystałem kontaktron magnes i filtr RC Początkowo napisałem program obrotościomierza i wszystko działa ok. A Teraz po małych zmianach nic nie zlicza. Wykorzystuję Timer1 $regfile = "m16def.dat" $crystal = 1000000...
Witam. Według mnie zasadniczy problem (poza ciekawym zastosowaniem funkcji Subnumber ;) leży w umieszczeniu wyświetlania z delayami w przerwaniu. Wyświetlanie trwa dłużej niż czas pomiędzy kolejnymi przerwaniami. Najprostszą opcją byłoby przeniesienie wyświetlania do programu głównego na przykład tak: /*wyświetlacz LED dołączony do P0, stan aktywny...
Na AT90S8535 zrobiłem sobie licznik impulsów i elegancko zlicza. Zrbiłem to na dwa sposoby (poniższy kod) z wykorzystaniem jednego timera i bardziej dokładny z wykorzystaniem 2 Timerów. Najgorsze jest to że gdy wsadziłem ATmega8535 na lcd pojawia mi się zero tak jakby counter w ogóle nie zliczał impulsów. Zegar procków (7.372.800 Hz) ten sam. Co jest...
Program zajmuje 50%. Może i jest źle napisany ale działa.. Ja bym to stwirdzenie troche skorygował; Program działa tak jak jest napisany!... bo - "Jest jeszcze jeden problem." Co jakiś czas temperatura podskakuje o 10 stopni a czasami nawet do 200 podskoczyło co spowodowało zbędne załączenie przekaźnika. Z czym jest problem? Popatrz na pracę timera0,...
Koledzy a czy ktos moglby przeltumaczyc ten kod na BASCOMA?? Ccialbym podobny uklad jednak na BASCOMie. Z gory dziekuje Może nie ten kod ale przykładowy program do generowania kodu PWM w Bascomie. Miłej zabawy i pozdrawiam. '************** '* - PWM - * '************** Dim A As Byte 'Zlicza lolejne przerwania Timer1 Dim D As Byte 'Określa % wypelnienia...
Witam, podczas budowania dalmierza ultradźwiękowego natrafiłem na problem którego nie potrafię rozwiązać, a nawet lokalizować jego przyczyny. Sama procedura pomiarowa, tj, generacja fali i odebranie wygląda dobrze. Problemem jest, że np. mierząc wciąż jedną i tą samą odległość dostaję wyniki typu 43cm, 43cm, 38cm, 39cm, 43cm, itd. [syntax=c]#define...
Mam ustawiony timer w Input Capture Ustawienie timera z przepełnieniem licznika IC_Timers 40000 (po prostu potrzebowałem równy czas też dla odmierzania zegarka i innych bajerów do odmierzania czasu ) przerwanie co 20ms. https://obrazki.elektroda.pl/6280175200_... Od lewej okres, czas stanu wysokiego, aktualny timer ICR1, poprzedni timer...
Witam , żeby zrozumieć o co mi chodzi zamieszczam krótki programik: Config Timer1 = Timer , Prescale = 64 Timer1 = 0 Start Timer1 Do If Pind.5 = 0 Then xxxxx Loop Until Timer1 = 15067 Stop Timer1 Program będzię "zapętlony" , do chwili kiedy timer1=15067 ile to bedzie trwać w przeliczeniu na sekundy , czy na milisekundy.??? Jak obliczyć czas trwania...
To mój pierwszy post na tym forum.. :) Zrobiłem zegar DCF na dyplomówkę ATmega32 + 16MHz + 2*16 + U4221B (DCF) + RS232 + RC5 all SMD. W szystko jest na jednej płytce i chodzi oki,odbiornik działa oki nie widzę zakłuceń (mam diodę z ID tego sygnału) teraz to programuję w Bascomie i tak... Nie chodzi mi samo dekodowanie DCF: - wykorzystuję przerwanie...
... wydawało mi się, że w trybie CTC mogę za pomocą OCR1A i OCR1B oddzielnie regulować częstotliwość na wyjściach OC1A i OC1B ... Masz racje , tylko Ci sie wydawało ;) W trybie który ustawiłeś , timer zlicza od zera , do wartości w OCR1A.Jeśli w OCR1A masz 1562 , a do OCR1B zaaplikujesz 3124 , to na wyjściu OC1B nic nie zobaczysz , bo NIGDY nie nastąpi...
Jest latwiejszy sposob, zaczerpniety z ksiazki Marcina Wiazani. Zamiast Timer1 = 36736 powinno byc Timer1 = Timer1 + 36736 To Ci uwzgledni gubione takty. W momencie przepelnienia Timer1 = 0, ale czas nadal biegnie, wiec licznik rowniez zlicza takty zegara. Zanim dojdzie do linijki, w ktorej ustawiasz ponownie wartosc timera, minie kilka-kilkanascie...
Troche to dziwne i nie mam pojecia jaki moze byc tego powod ale na tym liczniku caly czas jest zaladowana wartos 50 impulsow a sam licznik zlicza w dol czyli odejmuje mi ilosc pobranych impulsow od 50.
Już wszystko kapuję. Wstyd się przyznać ale zapomniałem do ilu zlicza 16bitowy Timer... :) Mam jeszcze jedno pytanie. Czy w takiej formie: timer1=0 do if timer1=15625 then 'lista rozkazów timer1=0 end if loop bedę miał bardzo blisko 250ms przy ustawieniu timera jak w listingu z pierwszego postu? Moje obliczenia do tego: 4000000/64/4=15625
Czyli tak: If Pind.3 = 0 Then Pf = 0 Nf = 0 Uf = 0 Timer1 = 0 'Timer= 0- ale dalej zlicza- bo przedtem nie było Stop Timer Przep = 0 Bitwait Pind.3 , Set 'teraz proc. czeka 25ms- a timer dalej liczy te 1MHz Start Timer1 'No ale nie było stop- to dalej liczy- masło maślane Safe = 1 Strt = 0 bitwait pind.0 , set ' dalej liczy przez 25ms Stop Timer1 '...
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...
Witam, wiem że w sieci jest 1*e^6 lub więcej gotowych liczników impulsów, lecz ja chciałbym mieć pełną kontrolę nad moim kodem, a nie kopiować bezmyślnie. Tak więc sprawa tyczy się zliczania impulsów 5V od obrotów i prędkości w motocyklu. Do tego celu chcę wykorzystać układ AVR ATMega 16 lub mniejszy (po przeróbce w kodzie). PYT1: Obrotomierz kręci...
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)...
Czy wie ktoś jak uruchomić Timer1 na ATmega8535 aby zliczał impulsy? Wpisałem ten sam program jaki miałem na AT90S8535 i nic. Cały czas pokazuje mi zero. Pomocy ! $regfile = "m8535.DAT" $crystal = 7372800 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.1 , Db5 = Portc.2 , Db6 = Portc.3 , Db7 = Portc.4 , E = Portc.0 , Rs = Portd.7 Config Timer1...
Witam, buduję obrotomierz do motocykla na bazie uC Atmega8 + LCD16x2. Posiadam obrotomierz elektroniczny w moto, z którego przechwytuje sygnał (chyba?) prostokątny do mojego uC. Trafia on do wyjścia Int0, a timer1 co pół sekundy zlicza impulsy. Mój problem polega na tym, że nie wiem, jaki dobrać rezystor R_gnd, który uziemia mi pin Int0 (likwiduje "floating...
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ć...
Kolego...tak jak pisałem z TIMER1 nie ma problemu! Z TIMER2 jest problem....
Witam, potrzebuje prostego programu który zliczy ile razy na sekundę wciskany jest przycisk. Np na jednym z portów pojawi się 0 kiedy przycisk zostanie wciśnięty, program ma zliczyć ilość impulsów przez sekundę i zwrócić daną do zmiennej. Proszę o pomoc lub podpowiedź. Niestety jestem początkujący i niezbyt rozumiem Liczniki-Czasomierze Timer0 i Timer1....
Witam. Ja narzie doszedłem do czegoś takiego. Po wielu próbach mam na stole model(silnik elektryczny i na nim tarcza kodowa do tego transoptor szczelinowy) i do tego płytka testowa i prosty stroboskop. Aktualnie wszystko działa na 90s2313. Tarcza kodowa ma wycięcia co 45 stopni(8 sztuk) i dodatkowo jedno 10 stopni po GMP. Programik jest napisany w bascomie....
Program jest dość obszerny więc postaram się przedstawić wszystko co jest potrzebne do przeanalizowania. Więc tak: PROGRAM GŁÓWNY: PRZERWANIA TIMERY [syntax=c] /*Definicja funkcji odnoszacych sie do Timera 1*/ #define Timer1_ON TCCR1B |= (1<<CS12) /*Preskaler = 256 */ #define Timer1_OFF TCCR1B &= ~(1<<CS12) void Timer1_Init(void) //Funkcja...
14:20:25.471> X 14:20:26.405> X 14:20:27.342> X 14:20:28.340> X 14:20:29.276> X 14:20:30.211> X 14:20:31.147> X 14:20:32.084> X 14:20:33.099> X 14:20:34.033> X 14:20:34.969> X 14:20:35.967> X Teraz widać że timer nie dochodzi do 1 sekundy. Ale te wartości markera czasowego pochodzą nie z programu lecz z systemu operacyjnego, tak? Więc włóż je sobie......
OCR1A=((częstotliwość procesora)/preskaler)-4 Nie to minus jeden to dlatego ze zlicza od zera. od zera do pieciu jest 6 dlatego minus 1 czyli dla 4 sekund mnożysz przez 4.
chciałbym zliczać impulsy generowane przez transoptor szczelinowy mam taki kod $regfile = "m8def.dat" $crystal = 1000000 Dim Wynik As Long Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portd.6 , Db6 = Portd.7 , Db7 = Portb.0 , E = Portd.3 , Rs = Portd.2 Config Timer1 = Counter , Edge = Rising Do Timer1 = 0 Start Timer1 Wait...
Witam. Udało mi się zrobić miernik czestotliwości na Atmega644p dzieki dwóm timerą pierwszy timer 8- bitowy, drugi 16-bitowy. Pierwszy timer(timer0) ma za zadanie sprawdzac czy nie pojawił się impuls na pinie t0, natomiast timer drugi(timer1)ma za zadanie odmierzac czas. Całość taktuje kwarcem 16 000 000 Mhz. Jednak dokładność tego miernika czestotliwosci...
Witam! Program pisany w Bascomie, jest to prosty programik ktory pokazuje temperature w aucie, przejechany dystans itd. Timer0 wykorzystywany jest jako licznik (zlicza impulsy drogi), przy przepelnieniu licznika wywolywane jest przerwanie. Timer1 wykorzystywany jest jako timer, odmierzam nim 1ms, czyli co 1ms wywolywane jest przerwanie. Problem polega...
Przerobiłem licznik na timer: [syntax=c]while(1){ //---------------------- Krok 1 impuls światła ---------------------------------- licznik = 0; PORTD |= (1<<LED); _delay_ms(100); //mignięcie diody 50ms PORTD &= ~(1<<LED); //_delay_ms(22); //---------------------- Krok 2 pomiar czasu odpowiedzi ------------------------- if (!(PINB &...
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...
zlicza liczba czujnik zlicza bascom zlicza
speed renault zasilacz skwierczy wymiana modułu pralki ariston
silnik kohler teltonika konfiguracja
Powtarzający się alarm dźwiękowy w urządzeniach Amica Migająca czerwona kontrolka w młotowiertarce Milwaukee - jak zresetować?