Aby móc zmieniać remapowanie musisz włączyć zegar dla AFIO. [syntax=C]RCC_APB2PeriphClockCmd(RCC_APB... ENABLE);[/syntax]
Najprościej podpiąć oscyloskop i zobaczyć co się naprawdę dzieje z sygnałem po podpięciu Timera albo od razu wtórnik na tranzystorze.
W którym miejscu w dokumencie który wcześniej podałem znajdę na którym porcie w mikrokontrolerze jest odpowiedni kanał ADC? W RM0041? W żadnym. Szukaj w datasheet konkretnego układu.
ICP -Funkcja Input Capture
Zainteresuj się funkcją Input Capture Unit - opis oraz przykład dla C: http://mikrokontrolery.blogspot.com/2011...
Nie masz za co przepraszać :) W tym mikrokontrolerze Input Capture może być wyzwalany także przez komparator, a ten ma dwa wejścia. Być może wystarczy to do rozwiązania problemu, który masz.
3 Konfigurujesz Timer w tryb input capture taki sposób aby wyzwalał transfer DMA na którymś tam sobie kanale. Nie prościej właśnie output compare i mieć transfer co ileś tam taktów? 4\/3!!
taaakk... w temacie o PICu koles na pewno pytal jak to zrobic oscyloskopem... anyway: poczytaj w dokumentacji o input capture - jest to uklad stworzony do tego wlasnie celu. daje ci on przerwania. dodatkowo w rozdziale Family Reference Manual poswieconym temu wlasnie ukladowi masz przyklad mierzenia okresu przebiegu: 12.5.1 Code Example for Period Measurement...
Jeśli dobrze rozumiem nazwę "Analog Comparator", to zdecydowanie porównuje on sygnał analogowy. Wyjście komparatora jest wyprowadzone tylko na bit ACO w rejestrze ACSR, na generator przerwań od komparatora oraz opcjonalnie pod Input Capture timera . Wyjście komparatora nie jest wyprowadzone na żaden zewnętrzny pin.
W avr 2313 jest taka opcja wejściowa do licznika jak ICP czyli input capture czyli łapanie impulsów po naszemu. Port wejściowy ma charakter Schmitta a dodatkowo można włączyć cyfrową filtrację zakłóceń. Przy krótkich przewodach być może uda ci się wykorzystać bezposrednio tylko elementy foto. Powodzenia N.
ad 1. Użyj timerów - taktując je zegarem o odpowiedniej częstotliwości licznik timera będzie zliczał czas. ad. 2. Użyj timera :) Tylko w trybie input capture - w tym trybie licznik zlicza impulsy zegara taktującego i jest stopowany zboczem sygnału doprowadzonego do wejścia ICP timera.
Btw - źle liczysz korelację. Wynik splotu (i korelacji) ma długość sumarycznej długości wejść. Twój wynik ma tylko 200 próbek. Okres próbkowania 10ms. W każdym przerwaniu 10ms zezwalam na Input Capture. W ICP: Zapalam diodę RED i czekam na 2 kolejne zbocza rosnące. Wyznaczam okres dla RED. Zapalam diodę IRED i czekam na 2 kolejne zbocza rosnące. Wyznaczam...
Pomiar odcinków czasu dłuższych od okresu timera sprzętowego i w oparciu o przerwania będzie zawsze kłopotliwy z uwagi na nieunikniony hazard związany z kolejnością obsługi przerwań. Na AVR przerwanie ICP ma wyższy priorytet obsługi niż przerwania od przepełnienia. Ale problem wystąpi nie tylko, gdy mierzone zbocze pojawi się dokładnie w momencie przekręcenia...
No więc zgodnie z moimi przypuszczeniami masz tam sygnał cyfrowy, w którym informacja o położeniu jest kodowana jako czas trwania impulsu - 1,5ms położenie neutralne, 1 lub 2ms położenia skrajne. W takim przypadku to co potrzebujesz to: 1. Porzucić pomysły związane z ADC, 2. Zająć się timerem, a dokładniej układem pomiaru czasu trwania impulsu - input...
albo to ma byc jakis superpodchwytliwy problem, albo faktycznie sie pomylil... IC zgodnie z nazwa jest INPUT, wiec za bardzo nie mozna nic na nim wygenerowac. 4\/3!!
Witam, drobna uwaga, sugerowałbym użycie któregoś z pinów ICP (Input Capture Trigger). Precyzyjniejszy pomiar, parę bajtów mniej kodu no i jest bardziej eleganckie. To kiedy uruchomisz timer to już od ciebie zależy, ja bym go uruchomił bezpośrednio przed wysłaniem serii impulsów do modułu. Obliczenia oczywiście banalne znając prędkość dźwięku, pokusiłbym...
AT90PWMx - Produkt w fazie zakończenia produkcji. Nie ma sensu w to inwestować. ATTiny26 - zupełnie bez sensu jeśli idzie o falowniki. Praktycznie żadnego zysku względem mega88. ATXMEGAxx - od biedy może być do nauki. Ale pamiętaj o upierdliwości ADC w trybie single ended (offset), braku synchronizacji pracy liczników z jedną podstawą czasu, pomiar...
Hmm, czy ATmega32 na pewno ma timer3? Rzecz w tym, że mam już gotowy układ, w którym są wykorzystane nóżki procka OCR1A i OCR1B (outputy timera1) - gdybym teraz do PWM wykorzystał inny timer, musiałbym wprowadzać zmiany w układzie, czego chciałbym uniknąć (a do tego timer2 też mam zajęty, a silniki są dwa). Mówisz, że logiczne jest, że praca timera...
A jakby taki pomysł wypalił: Ustawić Timer jako Input Capture reagującego na obydwa zbocza sygnału. DMA skonfigurować na żądania od Timer i jako Circular buffer, Periph -> Memory. Analizować w wątku bufor kołowy z DMA, ślędząc licznik transferu i ładować do innego bufora wykryte stany 1 i 0 na podstawie róźnicy czasu obydwu zbocz. Z innego wątku ściągać...
Witam, w moim sterowniki midi mam 5 przycisków chwilowych których wywołanie wygląda tak aktualnie: [syntax=c] void readValves(){ // Read Valve 1 to 5 switches switchCombination=digitalRead(8) + (digitalRead(9)<<1) + (digitalRead(10)<<2) + (digitalRead(11)<<3) + (digitalRead(12)<<4); [/syntax] Chciałem zrobić tak żeby były na...
co do ponizszego trudno sie zgodzic: " ICP1 coś do komparatora (Input Capture Pin) OC2 coś komparatora OC1B coś do komparatora OC1A coś fo komparatora " zadne z tych pinow to nic do komparatora ICP1 to zewnetrzne wyzwalanie licznika 1 OC1 - to wyjsca licznika 1 zmieniajace stan w trybie porownania zawartosci TCNT i OCR1 (przy zrownaniu tych wartosci,...
Wyciąg z Polskiej wersji dokumentacji atmegi16 (znajdziesz bez problemu odniesienie do 32): ICES1 - Wybór zbocza zdarzenia na pinie ICP1. Bit ten służy do określenia rodzaju zbocza, które będzie interpretowane jako zdarzenie Input Capture na pinie ICP1. ICES1 = 0 - oznacza wybór zbocza opadającego, ICES1= 1 to zbocze narastające. Tutaj masz obrotomierz...
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...
A zegar RCC dla I2C włączasz? BTW to w erracie coś tam o I2C pisali - sprawdzałeś, czy nie odnosi się to do Twojej sytuacji? 4\/3!!
A gdzie masz wybraną funkcję wejścia PA8? (rejestr AFR)
Dzień dobry. Chcę przerobić program służący do pomiaru odległości z czujnika HC-SR04 z std na hal.Problem polega na tym że jeśli mam timer TYLKO z skonfigurowanym kanałem pwm służącym do aktywacji czujnika, czujnik normalnie się aktywuję i zwraca sygnał echo (im większa odległość tym dłuższy stan wysoki, sprawdzałem diodą), po dodaniu (analogicznie...
Jakoś nie bardzo rozumiem jak Ty chcesz wykorzystać timer w trybie Input Capture Event. Ale to może dlatego, że nie używałem jeszcze nigdy tego timera TCB. Bo ja to sobie wyobrażałem tak, że chcesz wykorzystać ZCD do wyzwolenie timera który zacznie liczyć przez 10ms i zmieniać PWM w zależności od tego ile mocy ma być przekazywane. Czyli regulacja fazowa....
Tryb CTC właśnie na tym polega, że timer się zeruje. Czyli nie, to niemożliwe... Nie możesz użyć innego timera do sterowania rejestrem? Ewentualnie, jeżeli używasz stałej i niezbyt malej wartości ograniczenia, to ciągle możesz używać ICP, tylko ze zmniejszoną rozdzielczością.
Dziwi mnie, że prawie nikt o tym nie pamięta, ale do pomiarów np. częstotliwości, współczynnika wypełnienia, czy też precyzyjnego pomiaru czasu pojawienia się zdarzenia bardzo wygodnie jest użyć jednostki input capture dostępnej w większości uC AVR. Wystarczy jedynie skonfigurować timer1 i oprogramować przerwanie input capture.
Napisz sobie - hint input capture
Inna sprawa to że wejście w INTx to kilka taktów i już jest trochę nieaktualne jesli chodzi o Timerx. Nie lepiej połączyć ICPx i czytać Input Capture Register? Witaj Potrzebuję mierzyć na zboczu opadającym i narastającym a z tego co widzę ICP ma do wyboru tylko opadające albo narastające, chyba że jest jakaś możliwość.
Zobacz w nocie katalogowej sekcję Input Capture Unit.
//timer 1 16bit konfiguracja (ICP1) TCNT1=0; //ustawienie poczatkowej wartosci timera 1 TCCR1B |= (1<<ICES1); //pomiar na narastajacym zboczu TIMSK |= (1<<TICIE1) | (1<<TOIE1); //zezwolenie na przerwanie od ICP i od overflow TCCR1B |= (1<<CS12) | (1<<CS10) ; //prescaler 1024...
No ale czemu nie przejrzysz DOKŁADNIE manuala do tego układu? Przecież w nim są szczegółowo opisane tryby pracy takie jak input capture, czy PWM capture (czy może input PWM, nie pamiętam jak on się nazywa) - w tych trybach właśnie masz zmierzony czas impulsu. Zamiast brnąć na ślepo po prostu przejrzyj reference manual, rozdział o timerach i wszystko...
Dziwi mnie trochę że sygnał z wtryskiwacza podpiołeś pod INT0 a nie pod ICP, przecież Input Capture Unit jest wręcz stworzony do tego zadania. Można by też pod Analog Comparator podpiąć i dać jakiś filtr RC gdyby sie okazało że zakłucenia są dość spore. Analog Comparator też może służyć za źródło wyzwalania dla Input Capture Unit. Rzecz do przemyślenia...
No to skoro nic tam nie ma, to znaczy że nie następuje input capture. 4\/3!!
Wykorzystaj tryb input capture w mikrokontrolerze, poradzi sobie z tym doskonale. W aparaturach najczęściej wyjścia są sterowane kolejno - za pomocą diod podepnij wszystkie do jednego wejścia IC, a dodatkowo do różnych nóg mikrokontrolera przed diodami. IC zmierzy czas trwania impulsu, a na podstawie wejść mikrokontrolera będziesz mógł określić którego...
Użyj jednostki input capture do precyzyjnego pomiaru czasu między impulsami. W przerwaniu input capture możesz od razu liczyć i wprowadzać zmiany do wypełnienia PWM'a. PWM oczywiście sprzętowy, nie ma sensu robić go ręcznie. Obie funkcje pracują na liczniku 1, wszystko znajdziesz w dokumentacji. Co do kontroli obrotów, algorytm też może być bardziej...
Brałeś pod uwagę, dedykowany do tego celu: Input Capture Unit ?
Po 1) użyj znaczników [code]... Po 2) funkcje inline _delay_us i _delay_ms muszą być wywoływane z argumentami o wartości znanej w trakcie kompilacji (stałe) - było o tym wielokrotnie na forum. [url=http://www.nongnu.org/avr-libc/user... Po 3) co do inline asm to zobacz [url=http://www.nongnu.org/avr-libc/user...
dlatego najlepsza opcja nazywa sie input capture. 0x41 0x56 0x45!!
Żeby nie zakładać oddzielnego wątku - mam problem z włączeniem przerwania na TIM4. Wszystko niby skonfigurowane - GPIOB.9 jako wyłapanie przerwania: /* TIM 4 intetrupt pin PB.7 channel 4 */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOB, &GPIO_InitStructure); RCC_APB1 dla TIM4...
Znalazłem w końcu ale tam też nic ciekawego nie ma, są problemy z input capture ale tego trybu nie używam. Idiotyczną nawigację na stronie ma STM.
3. Wykorzystać odpowiedni do tego celu timer z funkcją Input Capture (ICP). W AVR-ach jest to Timer1, który posiada pin ICP1.
w datasheecie pisze cos takiego. When the Input Capture module is enabled, the user application must ensure that the I/O pin direction is configured for an input by setting the associated TRIS bit . The pin direction is not set when the Input Capture module is enabled. All other peripherals multiplexed with the input pin must be disabled. niby wszystkie...
Można to zrobić inaczej, dokładniej... Trzeba tylko wykorzystać timer w trybie Input Capture... Acha tylko o jakich czasach mówimy...? us, s, min...? Mogę podesłać kod, ale to jutro bo mam go na innym komputerze...
no moze sobie zrobic jakis multiplekser co bedzie te kanaly przelaczal i badal po kolei na timerze w trybie input capture.
Jak dokładnie działa timer w trybie input capture ? Liczy cały czas od momentu ustawienia bitu TIM_CR1_CEN czy od momentu wykrycie impulsu ?
no chyba żartujesz z tym wywoływanie przerwania milion razy na sekundę. słowo kluczowe którym powinieneś sie zainteresować to "Input Capture"
ADC co prawda nie ma ale komparator jest... Dodatkowo oprócz normalnego przerwania posiada opcję Input Capture powiązaną z timer1... Tak, że jest wszystko co potrzeba...
Do takich celów to wymyślono "input capture" Wystarczy poczytać. I to samo dotyczy i szybszych i wolniejszych procesorów Albert
(at)nowyARM W zupełności się zgadzam. Tyle, że w przypadku atmegi 8 jest jeden problem - brak ICP. Cała rodzina tych procków ma ICP. Od Atmega8 do Atmega32: "PB0 ICP1 (Timer/Counter1 Input Capture Pin)" dla A8.
Od dokładnych pomiarów czasu, a co z tym idzie częstotliwości jest Input Capture Unit: http://mikrokontrolery.blogspot.com/2011... ... i zmień język się na C.
A tak na marginesie to czestotliwosc i ewentualny wspolczynnik wypelnienia sygnalu to najdokladniej sie liczy za pomoca jednostki Input Capture, ktora notabene do tego wlasnie sluzy.
Witam. this sample receives RC5 on the background. it will not block your code like getrc5 ' it requires a 16 bit timer with input capture. you can not use the timer yourself. ' some processors have multiple 16 bit timers. Config Rc5 = Pinb.0 , Timer = 1 , Mode = Background ' ^--- background interrupt mode ' ^--- this must be a 16 bit timer ' ^----...
Czas trwania impulsów to się mierzy przy użyciu układu peryferyjnego - timera i funkcji input capture, na większości ARMów dodatkowo jeszcze DMA, a nie wchodząc w jakieś przerwania. 4\/3!!
zaprzyjaznij sie z datasheetem i znajdz sobie w nim rozdzial p.t. Input Capture gotowy kod mozesz napisac na podstawie tego co tam znajdziesz, powodzenia. 0x41 0x56 0x45!!
Do pomiaru czasu pomiędzy impulsami proponuje zastosować ICP (Timer/Counter1 Input Capture Pin). Po pojawieniu się impulsu z miernika będziesz miał w rejestrze ICR1 (Input Capture Register) wartość licznika Timera1. Możesz obliczyć długość trwania impulsu w taki oto sposób: volatile uint16_t PulseWidth; volatile bool flPrzerwanieICR1=false; ISR(TIMER1_CAPT_vect)...
Niestety nie mogę zmieniać sposobu wyzwalania przerwania na liczniku TC1 ponieważ jest on używany także do drugiego takiego czujnika który działa w oparciu o przerwania input capture. Przeczytaj proszę jeszcze raz co napisałem :)
Witam. Nawiazujac do tego co opisal kol. tos18 chcial bym sie zwrocic z prosba czy byla by mozliwosc aby zrobic jedem GPIO na ESP32 ktory by dalo sie odczytywac jego stan 1/0 za pomoca rejestrow. Aby uzyskac duza szybkosc odczytywania stanu GPIO 25. Obecnie realizuje to za pomoca kodu : ((REG_READ(0x3FF4403C) & BIT(25)) != 0); Wczesniej nalezy zadeklarowac...
Dr.Vee: On użył Timera1 bo to ma być uniwersalna procedura pomiaru czasu. W takim razie najlepiej użyć input capture i nie będzie żadnych opóźnień. Pozdrawiam, Dr.Vee
skorzystaj z pinu ICP1 i Input Capture Timera1, w rejestrze ICR1 bedziesz mial zliczone impulsy miedzy kolejnymi impulsami na pinie ICP1, w obsłudze przerwania Input Capture dodaj zerowanie timera. Dodano po 16 A jak chcesz to zrobic na INT0 to char zmienna=0; int wartosc; ISR(EXT_INT0_vect) { if (zmienna==1) { cbi(TCCR1B,CS11);//wylacz...
Powinieneś ustawić bity WGM13:WGM10 na tryb CTC. Zerowanie licznika wewnątrz obsługi przerwania nie da raczej zbyt precyzyjnego czasu. Poza tym na pewno lepiej do tego typu pomiarów wykorzystywać pin Input Capture (ICP).
Zacytuję: • Bit 6 – ICES1: Input Capture Edge Select This bit selects which edge on the Input Capture Pin (ICP1) that is used to trigger a capture event. When the ICES1 bit is written to zero, a falling (negative) edge is used as trigger, and when the ICES1 bit is written to one, a rising (positive) edge will trigger the capture. Po naszemu:...
A może zastosujesz zmodyfikowaną '51 firmy Silicon Laboratories (dawniej Cygnal) i wykorzystasz wbudowany moduł PCA posiadający co najmniej 3 kanały Input Capture o programowanym aktywnym zboczu? Pomiar może być dokładniejszy niż w przypadku zwykłego C51 (PCA może pracować z wyższą częstotliwością niż standardowo liczniki w C51) i nie musiałbyś kombinować...
Witaj, Za co jest odpowiedzialny Timer0? Za określenie częstotliwości granicznej? Czy masz wolny Timer 1? Jeżeli tak, to moim zdaniem strasznie sobie to komplikujesz. W końcu Twoim zadaniem jest zmierzenie okresu przebiegu o częstotliwości, którą podajesz z generatora, a od tego jest tryb Capture, czyli pomiar długości impulsu. strona 83: Input Capture...
Synchronizację kilku avr'ów na poziomie mikrosekundowym powinno się przeprowadzić bardzo łatwo. Używając timera 16 bitowego oraz naprzemiennie trybów pwm oraz przechwytywania: najpierw jeden układ ustawia, aby timer wygenerował zbocze w momencie kiedy jego timer się przepełni (użycie jakiegoś trybu pwm albo czegokolwiek) - inne procesory przyjmują sygnał...
Witajcie. Pytam na wszelki wypadek. Przeczytałem dokładnie dokumentację t84 w zakresie ACO i TIM1 i zastanawiam się, czy dobrze ją rozumiem (nigdy nie korzystałem z tej funkcjonalności). Potrzebuję wyzwalać Input Capture Timera1 przy pomocy komparatora analogowego i wiem dokładnie, jak ustawić bity w ACO i TIM1. Według dokumentacji, gdy używam ACO do...
cytat z noty katalogowej ATMega8 Input Capture Unit The Timer/Counter incorporates an input capture unit that can capture external events and give them a time-stamp indicating time of occurrence. The external signal indicating an event, or multiple events, can be applied via the ICP1 pin or alternatively, via the analog-comparator unit. The time-stamps...
W timerach STM32 jest coś takiego jak PWM Input Mode który służy do sprzętowego pomiaru wypełnienia i okresu PWM - szczegóły są w np w Reference manual. O ile jednak dobrze pamiętam to jednym timerem sprzętowo można mierzyć tylko jeden sygnał PWM. Na jednym timierze 4 kanały pewnie trzeba będzie mierzyć programowo z wykorzystaniem Input Capture Mode
Panowie ulepiłem taki oto kod [syntax=csharp] #include "Arduino.h" #include <avr/interrupt.h> //zbocze low-high(TCCR1B |= (1<<ICES1); TIFR1 |= (1<<ICF1); zbocze = 1;); //zbocze high-low(TCCR1B &= ~(1<<ICES1); TIFR1 |= (1<<ICF1); zbocze = 0;); volatile uint32_t Aktualny_stan_Licznika =0; volatile uint32_t Ostatni_stan_okresu...
Jak dla mnie to nadal nie jest do końca jasne jak działa ten układ po przeczytaniu opisu. Rozumiem na razie tyle, że bajty wysyła się po SPI i tyle Dalej sygnał zegara ze SPI odpala timer (input capture trigger, zajrzyj do PDFa) generujący impulsy i DMA kopiujące wartość z portu F do licznika timera. Dzięki temu timer przeskakuje cykl jeśli na linii...
Trochę się rozejrzałem. Ale czy było by możliwe zrobienie tego praktycznie bez dodatkowych elementów? Tj. Podpiąć kawałek przewodu do nóżki uc i odbierać? Wiem, że spokojnie można nadawać, nawet w paśmie FM za pomocą attiny czy innego uc. Właśnie z tym odbiorem gorzej, ale może jakoś na ADC albo wejściu input capture i potem jakiś filtr cyfrowy?
Podaj jak wyglądają opcje Audio - 'Audio input' i 'Audio source'
Atmega32 ma rejestr TIFR, czyli usuń "1". [syntax=asm]; Clear interrupts (if any happened). sbi _SFR_IO_ADDR(TIFR), OCF1A[/syntax] ; TIFR - Timer/Counter Interrupt Flag register .equTOV1= 2; Timer/Counter1 Overflow Flag .equOCF1B= 3; Output Compare Flag 1B .equOCF1A= 4; Output Compare Flag 1A .equICF1= 5; Input Capture Flag 1 edit. Jeszcze TIMSK zamiast...
Istnieją już takie karty. Jednak są dość drogie. Poszukaj hasła "Intensity PCI" (bez cudzysłowów) na Google. http://www.bizrate.com/video-editing-cap... http://www.jr.com/avermedia/pe/AVR_MTVHD... http://www.hdtvsupply.com/hdmivideocard1...
Witam. Mam wątpliwości czy dobrze rozumiem zasadę wykorzystania trybu capture, więc proszę o ocenę. Ustawiam sygnał wejściowy do Timer_A na określoną częstotliwość. Następnie definiuje sygnały, których określone zbocze będzie inkrementowało wartość w rejestrze TACCR0 czy TACCR1. W chwili wystąpienia określonego zbocza ( lub obydwu ) nastąpi przyrost...
Witam, zacząłem sobie dziś robić mały projekcik, są to 2 płytki z procesorami atmega32, jedna ma za zadanie naśladować silnik(prowizorycznie) jest generatorem impulsów prostokąt. z wykorzystaniem timera 16bit CTC, jeden kanał to częstotliwość a drugi to szerokość impulsu. Do przeliczania obrotów na minutę wykorzystałem wzorek: x=(F_CPU/(T1_PRESCALER*((float)obroty)/6...
A gdzie(pin) mierzysz ten sygnał , na ICP1 , czy T1 :?: Input Capture , nadaje się raczej do pomiary długości(czasu trwania) impulsu , a nie jego częstotliwości.Jeśli częstotliwość nie przekracza 65kHz , to wystarczy przerwanie T0 , a jeśli więcej to jeszcze od przepełnienia T1.Przerwanie InputCaPture , w tym przypadku jest zbędne. Przemyśl to jeszcze...
Czas/impuls czy impuls/czas to jest tylko kwestia programowa, zależy czego potrzebujemy. Ja do obliczania z tego prędkości musiałem użyć dzielenia wielobajtowego, ale niestety to było jedyne rozwiązanie, gdyż pozostałe dwa liczniki użyłem do załączania pasm w generatorze SRG. Dzielenie wielobajtowe zajmuje strasznie dużo czasu (ok. 700 cykli zegarowych...
Witam, pomijając kod, to Twój pomysł skąd się wziął? Z grubsza to masz 3 możliwości: - zliczasz timerem zmiany na pinie z pominięciem drgań - mierzysz czas między stanami wysokimi za pomocą Input Capture i zliczasz tylko te z minimalnym założonym odstępem - robisz normalną obsługę przycisku (w przerwaniu timera) i liczysz wciśnięcia. Nie używasz do...
Wszystko zależy od zastosowania tego czujnika. Jeśli chcesz liczyć impulsy to podłącz pod wejście timera, obsłuż przerwanie przepełnienia i możesz liczyć. Jeżeli chcesz mierzyć częstotliwość to może się przydać input capture, a jeśli zależy ci na jakiejś specyficznej akcji w momencie przyjścia impulsu z czujnika to użyj przerwania zewnętrznego. Tak...
Do tego sluzy "Input Caputre Unit" ktory jest w wielu AVRach. Podlaczasz badany sygnal do "Input Capture Pin", odpowiednio ustawiasz Timer i AVR przy zmianie stanu na pinie zatrzasnie aktualna wartosc licznika w "Input Caputure Register", ktora mozesz sobie odczytac np. w obsludze przerwania. Jesli chcesz wiecej szczegolow to poczytaj dokumentacje ;)...
Co do czujnika temperatury się nie zgadzam ze moze byc tam podlaczony bo trzeba pamietac ze musi byc podlaczony pod wyjsci uC ICP wiec w tym przypadku do portu B.0 Hmm... czuję się zaintrygowany. A potrafi kolega uzasadnić tą konieczność, abstrahując od tego, że ICP to "Input Capture Pin", czyli wejście ? Light'I
Witam, od jakiegoś czasu staram się wyłapać choćby najprostsze interrupty i włączyć sobie interruptem diody podłączone do atmegi, ale wygląda mi na to, że coś nie tak włączam obsługę interruptów. Oto kod: [syntax=c]/* * SensorTest.c * * Created: 2011-11-03 23:56:52 * Author: Prpht */ #include <avr/io.h> #include <avr/interrupt.h> uint16_t...
Ale czy w trybie ETR generowane jest jakieś przerwanie przy pojawieniu się zbocza/zwiększeniu licznika? Z tego co widzę to nie a ja bym chciał wiedzieć, że pojawiło się zbocze narastające bo na takie zdarzenie muszę odpowiednio zareagować. Impulsy na tym wejściu będą pojawiały się rzadko i nieregularnie nie jestem pewien czy mogę to wykorzystać. Chyba...
Witam ! Tworzę mały sterownik do auta i mam problem. Dotyczy on pomiaru częstotliwości (a właściwie czasu trwania stanu niskiego lub wysokiego) na Atmedze 128, która po dalszych przeliczeniach będzie mierzyć obroty silnika. Sygnał , który będzie mierzony to prostokąt o wypełnieniu 50% i częstotliwości w granicach 15-150Hz. Jak w tytule pomiar ma się...
Obsługa przerwania ma niewiele do rzeczy, bo liczy się tylko powtarzalność. Jeżeli jedno przerwanie da opóźnienie powiedzmy 10 cykli to drugie też a więc różnicy nie będzie. Oczywiście przy dobrze zapisanej obsłudze przerwania (odczytanie wartości Timera na przed wykonaniem fragmentów kodu których czas wykonania może być różny (czyli przed wszelkimi...
Tzn rozumiem o co Ci chodzi, to że umieściłem wyświetlanie w przerwaniu jest błędem i jestem tego świadomy :) Ale jak zauważyłeś zaraz po uruchomieniu przerwania zeruje prescaler timera 0 a co za tym idzie przestaje on zliczać, czyli nie nastąpi przerwanie timer0_overflow. I teraz dalej ... potem zaraz przed uruchomieniem przerwania odpowiedzialnego...
Tryby CTC w ATMega32 są dwa. Ustawiasz WGM12 w rejestrze TCCR1B i wpisujesz wartość końcową do OCR1. Albo wpisujesz WGM12 i WGM13 do TCCR1B i wpisujesz wartość końcową do ICR. A co z obsługą przerwania? Czy dobrze rozumuję, że wystąpi ono odpowiednio Output compare dla 0CR1 i Input capture dla ICR?
Panowie, a możecie mi jeszcze podpowiedzieć co robię źle w programie niżej? Otóż, chodzi mi o to, aby uruchomić timet TCC0, aby chodził sobie w kółko, a nastepnie podając na PIND6 abym zatrzaskiwał wartość tego timera i go wyświetlic potem. Timer skonfigurowałem tak: [syntax=c] TCC0.CTRLB = (1<<TC0_CCAEN_bp) | TC_WGMODE_NORMAL_gc; TCE0.CTRLA =...
a więc przerobiłem kod tak jak umiałem #include <avr/io.h> #include <avr/interrupt.h> void setup() { Serial.begin(115200); } //Counts overflovs volatile uint16_t T1Ovs1, T1Ovs2; //Variables holding three timestamps volatile uint16_t Capt1, Capt2; //capture Flag volatile uint8_t Flag; //Initialize timer void InitTimer1(void)...
Nie musisz zatrzymywać i uruchamiać licznika za każdym razem, może on ciągle chodzić, wystarczy że go będziesz zerował. A tak naprawdę to jeśli chcesz potem generować przebieg dla serwa za pomocą tego samego timera, to nawet zerować go nie możesz.... tylko zapamiętywać jego wartość. Wygodniej się to robi jednak na 16-bitowym timerze, który ma jeszcze...
Witam wszystkich. Potrzebuję mikrokontrolera do obsługi samego odbiornika ultradźwiękowego. Wiem, że potrzebuję czegoś z input capture i ADC ale nie wiem co dalej. Wiem, że można by to zrobić na jakimś Atmega ale zależy mi na dużej precyzji w określeniu czasu odbioru (a raczej różnicy między dwoma sygnałami bo rzecz jasna aktualna godzina mnie nie interesuje)....
Hej, Dzielnik zmieniłem i jest przed diodą. Dodanie kondensatora C6 za diodą powodowało, że przy rozłączeniu zasilania mega nic nie zapisywała i zliczała od zera. Podobnie jak wpisanie polecenia RISING. Odlutowałem C6 i zmieniłem polecenie na FALLING. Zamieniłem dzielnik tak jak był na początku a więc 100K i 18K tak aby comparator wyzwalał się przy...
To może jeszcze inaczej - nie próbowałem tego na trzeszczących stykach, ale myślę że może działać. AVR ma moduł Input Capture Unit. Idea jest taka że sygnał przychodzący z zewnątrz powoduje zatrzaśnięcie licznika i zgłoszenie przerwania. Sygnał wyzwalający przechodzi też przez wewnętrzny filtr, a do tego nie ma opóźnień związanych z wejściem w przerwanie...
E tam, nie jest wcale tak źle. Przy timerach akurat nie ma problemu, bo w manualu do każdego "typu" konfiguracji (licznik, PWM, input capture, ...) jest opis jak krok po kroku to skonfigurować. Zresztą - wystarczy napisać swoją bibliotekę, wtedy przynajmniej działa sensownie (rozmiar i prędkość) i wiadomo jak tego używać oraz co dokładnie robi. W przykładach...
Masz błędny kod. Jak chcesz by program działał jak trzeba to musisz wiedzieć co robi każda linijka. Włączasz przerwanie od przepełnienia timera0, a nie maż funkcji do jego obsługi. Deklarujesz funkcję do obsługi przerwania zewnętrznego, a nie masz funkcji obsługi i nie zezwalasz na to przerwanie. Na moje oko to po uruchomieniu timera procesor się zresetuje...
Zrozumiałe że nie rozumiesz bo nie napisałem wszystkiego :) Zasilam enkoder z 3.3V, nie tak jak rekomendują między 4,5-5,5V. Nie chciałem aby sygnał z enkodera był większy od V zasilania mikrokontrolera, żeby nic nie upalić. Czytałem w Data Sheecie że jest coś o 'five-volt tolerant' port/pin ale nie mogłem zrozumieć dokładnie o co chodzi. Działał mi...
Ale nie o to mi chodziło ;/ to zawsze mój problem dla którego na elektrode udaje się jak już naprawdę wyrwę wszystkie włosy z głowy, będziemy sie sprzeczać o 65535 ale nikt nie był w stanie mi pomóc...a wszyscy tacy mądrzy Bo my nie dajemy ryby tylko wędkę, a koledzy wiele już Ci wędek dali :) Dorzucę więc i ja kolejną tym razem wraz z rybą - pomiar...
input capture stm32 input capture bascom capture input
obliczanie transformatora impulsowego kaseta webasto artefakty karta sprawna
Komputer wyłącza się po wymianie Intel i5-7400 na i5-9400 Jak zbudować generator sinusoidalny na tranzystorach?