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!!
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.
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...
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...
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...
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...
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...
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!!
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ć...
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...
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...
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...
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)
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...
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ą.
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ść.
//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...
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...
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...
Napisz sobie - hint input capture
Zobacz w nocie katalogowej sekcję Input Capture Unit.
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.
No to skoro nic tam nie ma, to znaczy że nie następuje input capture. 4\/3!!
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...
Brałeś pod uwagę, dedykowany do tego celu: Input Capture Unit ?
(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.
dlatego najlepsza opcja nazywa sie input capture. 0x41 0x56 0x45!!
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...
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.
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...
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 moze sobie zrobic jakis multiplekser co bedzie te kanaly przelaczal i badal po kolei na timerze w trybie input capture.
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
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...
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 ' ^----...
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...
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!!
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 :)
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!!
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
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).
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...
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ć...
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...
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...
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)...
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ł...
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
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...
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:...
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?
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...
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...
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...
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...
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...
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...
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...
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...
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...
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...
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
Macie jakieś doświadczenia z przetwornicą wysokiego napięcia sterowaną bezpośrednio z uC? Nowe uC Atmela do tego się świetnie nadają. https://sm6vfz.wordpress.com/2020/12/11/... W praktyce da się jeszcze prościej - ATTINY212: [syntax=c]TCA0.SINGLE.PER = 4; // 30us period, for 5V->12V and 120uH TCA0.SINGLE.CTRLA = 0b00000001;...
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?
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...
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...
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ę...
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...
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)....
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 ;)...
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...
1. Proponuję zapomnieć o arduino. 2. Nucleo ma debugger, który Ci się bardzo przyda. 3. Jak mierzyć - najlepiej obydwiema matodami. ADC + CMSIS-DSP -> robisz analizę widmową i znajdujesz największy "bin". Potem mieniasz próbkowanie aby jak najbardziej ten "bin" pasował. Do tego komparator (bo niestety STM32103 to dość stara i prosta konstrukcja - i...
Ż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...
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...
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...
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...
100us na impuls daje przy typowym ARMie (przynajmniej 50MHz) co najmniej 5000 cykli zegara. Nawet jeśli przerwania od zwykłych pinów faktycznie trochę się przyblokują, to jaki będzie max błąd? 100 cykli? Kilka procent najszybszego impulsu. Poza tym definitywnie nie potrzebne Ci 12 timerów, tylko 12 wejść input capture, a tyle ma całkiem sporo ARMów,...
W przerwaniu mam zamiar uruchomić timer1, w którym wykorzystuje Input Capture by zatrzasnąć kolejne zbocze opadające Timer powinien sprawdzić stan pinu za jakiś czas np 30ms. Powinieneś to jeszcze połączyć z wykrywaniem zarówno zbocza opadającego jak i narastającego. Zależnie od tego, które zbocze wywołało przerwanie zwiększasz lub zmniejszasz zmienną...
Wszystkie funkcje arduino-embedded powinny działać. Czyli obsługa i2c, 1wire, spi, uart, operacje na pinach gpio. Dlaczego? Bo chociaż czasem przez różne rejestry to w zasadzie robią to samo więc można wysokopoziomową funkcją "przykryć" różnice sprzętowe. Proste rzeczy jak PWM, input capture itp. też powinno się dać, natomiast liczników jest całe mnóstwo...
Przy tak niskiej częstotliwości impulsów lepiej nie zliczać impulsy w czasie, lecz użyć zewnętrznego przebiegu do bramkowania licznika, który zlicza impulsy ze swojego zegara o dużej częstotliwości. Dzięki temu dostaniesz informację o liczbie taktów zegara referencyjnego przypadających na okres sygnału zewnętrznego. Umożliwia to dokonanie pomiaru w...
capture input bascom capture input stm32 input capture
pianka klimatyzacja niski ciśnienie oleju silnika cewka pompa
zderzak naprawa zderzak naprawa
Ekspres Philips LatteGo - świecą wszystkie diody, brak kawy Renault Master: Znaczenie komunikatu VERBRUIK 910.8 L