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...
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...
Kolego może zacznij od czegoś prostszego bo nieskomplikowane zadanie a tu wydaje się być inaczej. Programowanie to nie tylko znajomość mikrokontorlerów, języków ale przede wszystkim umiejętność samodzielnego rozwiązywania problemów i wiążąca się z tym pomysłowość. Żeby przetestować ten kod wziąłem drugą Atmegę8 i kazałem jej nadawać impuls co 500ms...
OK, rozumie Twoje intencje i z chęcią pomogę, bo minimalizowanie poboru energii to mój "bzik" :) Jednakże zacząłbym od tego, że przy takim zasilaniu gdy ustawisz ten mikrokontroler na kwarcu 32kHz , to zużywać będzie zaledwie 20 μA przy 3V i niewiele więcej przy 5V. Czy to nie wystarczy? Większe straty masz na samym zasilaczu. Co do usypiania -...
czyli jest tak, że dojście licznika do wartości zapisanej w OCR1A powoduje jego wystartowanie od 0, Tylko w trybie CTC(4). natomiast dojście licznika do wartość z OCR1B powoduje zliczanie dalej? Tak. OCR1B nigdy nie stanowi ograniczenia licznika. Masz to dokładnie opisane w tabelce 47 - "Waveform Generation Mode Bit Description".
Witam wszystkich, projekt powstał na przełomie marca/kwietnia tego roku w wyniku zapotrzebowania na pompkę perystaltyczną potrzebną przy realizacji pracy magisterskiej. Nigdy wcześniej nie miałem do czynienia z elektroniką (nie licząc podłączania diod z rezystorem i prostych zasilaczy na LM7812) a tym bardziej z mikrokontrolerami. http://obrazki.elektroda.pl/2272591900_1...
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ść.
Wciąż nie rozumiem skąd to ograniczenie częstotliwości o którym mówisz - mój timer1 jest skonfigurowany na 1MHz (prescaler /8, a zegar główny 8MHz). Ale to bez znaczenia, bo w takim razie jednak wykorzystam ten timer0 i przerwania zewnętrzne (zamiast input capture timera1). A więc serdeczne dzięki za pomoc ;) I chyba niestety się nie przekonam czy compare...
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...
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 właśnie tylko u mnie dość cienko z programowaniem i obawiam się, że może mnie to przerosnąć. Do tej pory udało mi się odpalić wiele rzeczy, ale nie wiedziałem ze z tym będą takie problemy. Dobrze by było jakbyście rzucili też okiem na całość programu, czy jest jakoś w miarę poskładany. Edit: Znalazłem coś takiego: [syntax=vb] //Timer1 Capture //Timer1...
... tak naprawdę ma to być obrotomierz do motocykla . ... Priorytetem jest bardzo szybka reakcja wyniku .... Zastanów się czy nie warto wykorzystać w tym procesorze Timera pracującego w trybie Capture Mode: http://obrazki.elektroda.pl/4130623300_1... Znajdziesz w nim dodatkowo wbudowany układ redukujący szumy sygnału wejściowego oraz...
zatem czestotliwośc sygnalu wejsciowego bedzie w granicach od 15Hz do okolo 150 Hz, sygnal wyjsciowy z ta sama czestotliwościa tylko, że ze zmiennym opóźnieniem, dla niskich obrotów większe opóznienie dla wyższych oprotów mnijsze.Opóżnienie bedzie sie zawierać w zakresie mniej wiecej od 5ms do 0 z rozdzielczoscia okolo 50 us, dlatego jak dosatlem takie...
Takie coś ?? [syntax=vbnet]config timer1 = timer , prescale =64 , capture edge = falling , noise chanel = 1 Dim czas_otwarcia as Word Dim czestotliwosc as word On capture1 wtrysk Enable capture1 Enable interrupts Config pind.6 = input Do Print czestotliwosc Print czas_otwarcia Loop Wtrysk: Czas_otwarcia = capture1 Czestotliwosc = timer1 Timer1 = 0 Return[/syntax]...
Nie bardzo wiem dlaczego wogóle to nie chce wykonać podprogramu po otrzymaniu na noge ICP1 czyli portb.0 opadajacego zbocza. Nic się nie dzieje, co robię nie tak? Mój program: $regfile = "m8def.DAT" $crystal = 8000000 $baud = 9600 Config Portc = Output Set Portc.2 Reset Portc.1 Reset Portc.0 Config Pinb.0 = Input Config Timer1 = Counter ,...
Faktycznie, mój błąd. Postanowiłem jeszcze raz napisać kod od początku: [syntax=c]#include <avr/io.h> #include <stdio.h> #include <avr/interrupt.h> #include <util/delay.h> #include "HD44780.c" volatile unsigned long int okres; volatile unsigned int przepelnienia; volatile unsigned char cykl; volatile unsigned char koniec_pomiaru;...
Moim zdaniem całość nie działa poprawnie, bo używasz Timera1 pracującego w trybie CTC jednocześnie do odmierzania odcinków czasowych wyświetlacza i do pomiaru czasu zatoczenia pełnego koła. W trybie CTC Timer liczy od 0 do wartości Compare1a po czym zostaje wyzerowany, więc ten podprogram w przerwaniu ICP1, który oblicza Ci ile cykli zliczył Timer podczas...
Wcześniej tą zmienną [syntax=c]uint32_t get_counter = 0;[/syntax] miałem zadeklarowaną w funkcji obsługi przerwania [syntax=c]void TIM1_IRQHandler(void)[/syntax] Jak chciałem podczas debuga wybrać "Run to Line" i postawiłem kursor w przerwaniu od timer1 to pojawił się błąd, że to jest nie możliwe. Musi być jakiś sposób sprawdzenia tego, że pomiar wykonany...
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 czy dany kod da się przebić robić tak żeby wynik wyświetlać na wyświetlaczu 7-segmentowym? [syntax=c] OBROTOMIERZ v.1 Obrotomierz przeznaczony do prostych pomiarów prędkości obrotowej. Pokazuje: - czas jednego obrotu, - liczbę obrotów na sekundę (rps), - liczbę obrotów na minutę (rpm). Szczegóły: http://mikrokontrolery.blogspot.com/2011...
Oto mój program (atinny2313, zegar 8 mHz). Dodatkowo obsługa pilota sony: Dim Moc As Word Dim Table As Word Dim Ready As Byte Dim Code As Word Dim Period As Word Dim Command As Long Dim Bitcount As Byte Config Timer0 = Timer , Prescale = 1024 Config Timer1 = Timer , Prescale = 256 , Capture Edge = Rising , Compare A No_output = Disconnect Config Int0...
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...
Witam. Jestem emerytem (64l.) i zaczynam dopiero przygodę z Arduino. Znalazłem ciekawy projekt miernika kondensatorów (w dziale DIY zagranica) i chciałem go wykonać. Jednak przy wgrywaniu programu wyskakuje błąd kompilacji. Czy może z kodem jest co nie tak? Proszę o pomoc. Pozdrawiam. JN W załączeniu podaję kod: [syntax=c] #include #include #include...
Witam, Jak w temacie zaznaczam, że jestem początkujący w C a moje pytanie związane jest z próbą rogryzienia kodu w C a przy okazji zrozumienia do końca funkcji Compare. Znalazłem taki kodzik: #include <avr\io.h> #include <avr\interrupt.h> #include <avr\iom8.h> #define ICP PINB0 //define ovrflow counter uint16_t ov_counter; //define...
Mam problem z połączeniem funkcji chodzi o to zeby wyswietlacz był aktualizowany w pętli while(1), jednak gdy umieszczę ten fragment kodu wynik=7654; LEDDIGITS Dodano po 4 Poniżej daje oryginalne kody obrotomierz: [syntax=c]/* OBROTOMIERZ v.1 Obrotomierz przeznaczony do prostych pomiarów prędkości obrotowej. Pokazuje: - czas jednego obrotu, - liczbę...
Hej, Niezależny eksperyment wykonany a wyniki... zgodne z dokumentacją. Z resztą po co eksperymentować skoro jest dokumentacja producenta. OK. Ale... warunki: Timer1 -> tryb CTC (12), preskaler=8 (1.25MHz (at) f=10MHz), uruchomione wejście ICP z redukcją zakłóceń, capture przy zboczu rosnącym - dla dociekliwych ustawione bity: Icnc1 , Ices1 , Wgm13...
Witam. Kombinuję już od jakiegoś czasu nad włącznikiem RC ale nie typu on/off tylko w zależności od zapotrzebowań, tyle ma być stanów. Na chwilę obecną docelowo mają to być 3 stany off/1/2. Wygrzebałem w googlu kawałek kodu, który jest odpowiedzialny właśnie za pomiar długości trwania stanu wysokiego na wejściu ICP1 (input capture). Jednak za żadne...
Witam Mam problem z ultradźwiękowym miernikiem odległości na atmedze8. Generacja częstotliwości przebiega prawidłowo, na odbiorniku za torem wzmacniaczy otrzymuję widoczny syglał odbity od przeszkody. Błędy pojawiają się przy komparacji sygnału z napięciem referencyjnym. Wynik jest bardzo niedokładny, ponadto od drugiego bądź trzeciego pomiaru procesor...
odwiedziłem ten link już wcześniej, nie mogłem sobie poradzić z "usunięciem" wyświetlacza:/ dobra poczytam, pokombinuje, nauczę się, spróbuje stworzyć i odezwę się w razie pytań a na tę chwile już dużo pomogliście:) :) czyli w tym kodzie wystarczy, że zrozumiem jak zamiast "wynik" zapalać odpowiednie sekwencje diodowe? nie mam pojęcia jak to ugryźć,...
Witam. Potrzebuję W tym liczniku obrotów: [syntax=c]#include <avr/io.h> #include <stdio.h> #include <avr/interrupt.h> #include <util/delay.h> #include "HD44780.h" //tutaj ustaw własne zasady pomiaru #define POMIAR_ILOSC_IMPULSOW_NA_OBROT 4 //ilość inpulsów na jeden obrót #define POMIAR_ILOSC_OBROTOW 10 //ile obrotów ma trwać...
Nie mam jak określić dokladnie częstotliwości, ale mniej więcej z przełożenia czujnika w skrzyni myślę że od 0 do 4000 impulsów na sekundę ( tak orientacyjnie), szerokość impulsu to 1/16 obrotu czujnika. Znalazlem dziś jedyny projekt, z którego mógłbym wziąć podstawę, ponieważ jest to obrotomierz czyli też zliczanie impulsów i podobno działa na takiej...
(...) Więc pytanie- zastosujesz rezonator kwarcowy w tym rozwiązaniu czy będziesz dalej próbował coś działać z generatorem RC? Zdecydowanie kwarc. Czym większa stabilność pomiaru częstotliwości tym większy zasięg wykrywacza. Pozdrawiam Dodano po 3 Dla uzupełnienia tematu działający prototyp: Filmik: http://youtu.be/bQox3S40gTE http://obrazki.elektroda.pl/2340370400_1...
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...
Witam ! Tworzę projekt stacji pogodowej za pomocą ATMEGI16 + LCD 2x16. Tworzę licznik impulsów który zliczałby mi czas pomiędzy zboczami impulsów (prędkość obrotowa wiatru) Znalazłem w sieci program który działa na Atmega8 + 16MHZ kwarc. [url=http://mikrokontrolery.blogspot.com... Chciałbym go przerobić na Atmega16 na...
http://obrazki.elektroda.pl/2708019000_1... Taki będzie mniej więcej schemat, tyle że zamiast przełącznika kontaktron i obok diody LED tranzystor z przekaźnikiem na wyjściu. Dziękuję za zmianę tytułu dzięki temu naprawdę dużo jeszcze znalazłem w internecie :) pozdrawiam Edit: [syntax=text] /* OBROTOMIERZ v.1 Obrotomierz przeznaczony...
Dziekuje za podpowiedz Teraz przerwania dzialaja poprawnie tylko nie moge zinterpretowac zmiennej Capture Jest ustawiony prescaler na 256 Zalozenie bylo takie ze do Rejestru ICR1 w momencie przerwania zostaje wpisane to Co jest w TCNT1 Tylko po zastosowaniu zmiennej capture1 po taktowaniu nozki ICP impulsem ok np 32 ms ,widac jakby ta zmienna sie przepelniala...
Poprawiłem program, sygnał podaje na pind.5, teraz wygląda on tak $crystal = 8000000 $regfile = "m8def.dat" Dim Wynik As Long Dim A As Long Dim B As Long Dim C As Long 'wynik pomiaru Config Pind.5 = Input 'wejscie sygnalu Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 ,...
Faktycznie, usunąłem procedurę ISR, sei(); oraz ustawienia bitów w rejestrach TIMSK i TIFR. Działa również poprawnie a rozumiem że odciąża tak zbędnie procesor ? Mam jeszcze pewien organizacyjny problem, ponieważ w pracy inżynierskiej będę potrzebować kilku timerów. Do wentylatorów potrzebuję dwóch PWMów oraz 2 timerów - liczników do wykonania tachometru...
pubus - Wykorzystałem Twój kod, i liczy nawet. Tylko niestety nie to, co trzeba :D Czyli na timerze 2 generuję przerwania co 10ms, a na INT2 zliczam impulsy ze skrzyni. Timer1 miał liczyć czas wtrysku, czyli sygnał narazie z generatora podłączyłem pod nóżkę PD5 (OC1A). No i nic nie liczyło, ale jeśli sygnał podłączyłem pod wejście zliczania impulsów...
Najdokładniej będzie zmierzyć czas pomiędzy impulsami z enkodera - możesz do tego użyć trybu input capture (ICP) timera1. Przy max. prędkości obrotowej masz ok. 100 zdarzeń na sekundę. Przy min. prędkości możesz zwiększać preskaler timera żeby wykluczyć przepełnienie bez "łapania" impulsu. Jeśli odstępy między impulsami z dekodera nie są identyczne,...
hmm ultradźwiękowych nie da się poznaczyć dodatnich i ujemnych połówek fali ultradźwiękowych troszeczke nie rozumiem po co okreslac to czy to jest dodatnia czy ujemna mozna to zrobic przez rozroznienie czy to jest narastajaca zbocze czy opadajace czyli tak jakbysmy brali wszystko co sie znajduje nad osia OX i sprawdzali zbocza jesli wybierzemy naraztajace...
Dziękuję wam za wszystkie odpowiedzi wiele mi to pomogło jednak ciągle mam problem. Jest lepiej bo coś tam już widać ale jeszcze nie jest ok. Zaznaczam na początku że nie mam należytego sprzętu aby zrobić to jak należy jednak zanim zainwestuję w mikrokontroler taktowany 25 Mhz chcę mieć już jakiś wstęp na sprzęcie który posiadam a posiadam Atmegę16...
Mam prośbę do tych znających lepiej BASCOMA, o przeanalizowanie tego kodu. Program po pewnym czasie wysypuje się. Temperatura co jakiś czas waruje. Podprogramy działają, ale całość nie chce współpracować. Z góry przepraszam za jakość kodu. [syntax=vb]'--------------------KONFIGUR... $regfile = "m16def.dat"...
Jak ktoś już odkopał, to dorzucę dawno napisany własny kod na ATiny2313 (nóżkami pasuje) do tego kita. Chyba trzeba też zmienić 18S20 na 18B20. Program powstał jako próba ratowania tego zestawu po spaleniu oryginalnego uC. Nie wiem dlaczego, ale po miesiącu pracy oryginalny po prostu się ugotował i zaczął głupoty robić. Po zamianie działa już pare lat....
//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...
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...
Napisz sobie - hint input capture Szukam jakiegoś przykładowego programu Znalazłem coś takiego Proszę o pomoc w jego napiasniu TCCR1A = 0; TCCR1B |= (1<<CS11); //Preskaler 8 TCCR1B|=(1<<ICES1); //Rozpoczęcie zboczem narastającym TIMSK |=(1<<TICIE1); //Zezwolenie na przerwanie Input Capture ISR(TIMER1_CAPT_vect)//przerwani...
3. Wykorzystać odpowiedni do tego celu timer z funkcją Input Capture (ICP). W AVR-ach jest to Timer1, który posiada pin ICP1.
Potrzebuję pomocy przy zamianie kodu "RFID Reader", tzn. żeby zamiast wyświetlania kodu karty na LCD uzyskiwać odpowiedni poziom na wyjściu 1z10 i czy jest to możliwe do zrealizowania na atmega8? Chciałbym użyć 8 ostatnich cyfr kodu karty. Posłużyłem się gotowcem, który był już na elektrodzie (dopiero uczę się bascoma i nie wiem jak się do tego zabrać):...
docelowo będzie to obrotomierz To ma zliczać obroty czy częstotliwość? Jaki zakres mierzonych wartości? Licznik możesz przechwytywać sprzętowo Serial.begin(2000000); Jakie arduino?
timer1 capture input capture capture input
porównanie tranzystorów bipolarnych czujnik ciśnienia cyfrowy corolla verso instrukcja
bateria milwaukee bateria parkside
Schemat elektryczny wózka platformowego EP011 DTR dla agregatu prądotwórczego ZE400/16 Andoria