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...
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...
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...
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.
Witam, Czy da się jakoś magicznie zrobić, żeby licznik w trybie CTC nie kasował się przy dojściu do zadanej wartości, tylko liczył dalej sobie... Chodzi mi o to, ze zrobiłem na rejestrze przesuwnym taktowanym przez CTC sterowanie 8 serwami modelarskimi, a teraz chce jeszcze zrobić odczyt PPM 8 kanałów odbiornika (po kolejki przez multiplexer 74151)...
3. Wykorzystać odpowiedni do tego celu timer z funkcją Input Capture (ICP). W AVR-ach jest to Timer1, który posiada pin ICP1.
Nie wiem czy wiesz co będzie wynikiem jeśli weźmiemy dwie zmienne szesnastobitowe bez znaku i odejmiemy większą od mniejszej? Wynik nadal będzie dodatni jednak pomniejszony o poprzednią wartość tej mniejszej zmiennej. Tak więc proponuję rozważyć taki temat: Timerx w momencie pierwszego odczytu w INTx ma 65530. Nie zerujemy Tmerx . Timerx w momencie...
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...
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...
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 ,...
PD6. Sorry . Już zmieniam więc. Generalnie najłatwiej by było gdyby licznik startował po otrzymaniu 1 impulsu z hallotronu i stopował się po otrzymaniu drugiego impulsu. Czas ktory by był zliczony oraz obwód koła po którym kręci się czujnik dałby mi prędkość obrotową.... Do tego służy ' Capture ' - np. Timer1. Sygnał Input do ICP1 e marcus
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ą...
Witam, Bawię się STM32F0Discovey i chciałem sobie w ramach testu skonfigurować bez użucia bibliotek od ST Input capture na Timer1 Chanel1. Chciałbym,aby mierzyło mi na PA8, więc skonfigurowałęm tą nóżkę jako Alternate function mode. Jako sygnał podłączyłem PC8 (połączyłem kabelkiem PA8 z PC8). Gdy to zrobiłem, to dioda niebieska przestaje pulsować....
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...
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...
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...
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...
Niestety ja tu nic nie poradzę bo nie bawiłem sie w bascomie w capture. 1) Sygnał do licznika może pochodzić z nóżki albo z wewnętrznego komparatora. Więc trzeba jakoś wybrać nóżkę i ustawić ja na input. 2) Najpierw skonfiguruj swój timer tak jak niżej, bo to musi być COUNTER a nie TIMER: Config Timer1 = Counter , Edge = Falling , Capture Edge = Falling...
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...
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...
Witam. Chciałbym zmierzyć czas pomiędzy dwoma impulsami (stanami wysokimi) występującymi na pinie ICP1. Używam do tego celu timera1 oraz kodu znalezionego w internecie, zmodyfikowanego na własne potrzeby: [syntax=c]#include <avr/io.h> #include <stdio.h> #include <avr/interrupt.h> #include <util/delay.h> #include "HD44780.h" volatile...
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]...
Wydaję mi się, że łatwiej od manchestera będzie zdekodować kod w którym 1 i 0 mają różny czas trwania. A to jak długa będzie ramka danych zależy już tylko od Ciebie :) Można to zrobić na AVR np tak: [syntax=c]#define F_TIMER (F_CPU / 64) // timer prescaler #define MSEC (F_TIMER / 1000) SIGNAL(TIMER1_CAPT_vect) { unsigned int dpulse = ICR1; // read timer...
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 -...
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...
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...
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...
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źć,...
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...
Zrobiłem sobie propeller clock na i działa prawie dobrze :) Problem w tym że co jakieś 50 obrotów zegarek przestaje działać na kolejne 50 obrotów. Wiąże się to z funkcją zliczania czasu obrotu i przeliczanie na 60 pozycji na tarczy zegara. Stop Timer1 Timer1 = 0 Start Timer1 Incr Y If Y = 50 Then X = Capture1 X = X / 60 Y = 0 End If Compare1a = X Pozycja...
uC zasilany z 5V. Po dłuższej przerwie (pauza na zaliczenie sesji) wziąłem się znowu za ten projekt. I tak... przegooglowałem neta i ze strony http://winavr.scienceprog.com/avr-gcc-tu... zapożyczyłem kod obsługujący timer input capture. Przerobiłem go pod potrzeby ATmega32, ale też do końca nie wiem czy poprawnie....
Proponuję użyć dowolnego uC z dwoma licznikami, ale niekoniecznie atmega8 ;) Pierwszy pracuje w trybie pomiaru częstotliwości lub pomiaru czasu (Input Capture). Drugi pracuje jako generator przebiegu wyjściowego, pędzony np. z zegara systemowego. Wartość zmierzona przez pierwszy licznik jest argumentem funkcji modyfikującej częstotliwość i/lub wypełnienie...
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...
Jest możliwość pomiaru czasu wtrysku na przerwaniach w AVR'ach. Trzeba podpiąć sygnał z wtryskiwacza (oczywiście przez układ dopasowujący) jednocześnie na wejście przerwania zewnętrznego (np. INT0) i wejście ICP (input capture). Potem trzeba skonfigurować zewnętrzne przerwanie aby reagowało na zbocze opadające (początek czasu wtrysku), licznik T1 ma...
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...
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 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...
Wydaje mi się, że to ciągle problem z mierzeniem czasu. Tzn. nie wykrywa któregoś ze zbocz i różnica nie jest liczona, jednak nie potrafię tego znaleźć. Dodałem też wyświetlanie na diodach, które są na płycie i też się nic nie dzieje. Obecnie kod wygląda tak: [syntax=cpp] #define__AVR_AT90CAN128__1 #define OSCSPEED 8000000 /* in Hz */ #ifndef F_CPU...
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...
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...
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 ,...
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...
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ć...
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,...
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ę...
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...
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...
Cześć. Od około dwóch tygodni pracuję nad układem, którego głównym zadaniem jest jak najdokładniejszy pomiar czasu propagacji fali ultradźwiękowej między dwoma membranami piezoelektrycznymi. Układ jest zbudowany zgodnie ze schematem blokowym przedstawionym poniżej: http://obrazki.elektroda.pl/4225526900_1... Mikrokontroler to Atmega328...
Podłącze się pod temat: Postanowiłem pobawić się trochę dalmierzem opartym na SRF05 i korzystając z innego rozwiązania przekodowałem (ze zrozumieniem) program, który ma za zadanie pokazywać odległość od przedmiotu. Istotą mojego problemu jest to, że atmega32 idzie w maliny i nie bardzo wiem dlaczego... pomiary wykonują się, ale czasami procek wiesza...
//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...
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ę...
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...
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)...
Z tego co zauważyłem, mikrokontroler taktujesz częstotliwością 1MHz. Przy preskalerze 1024 częstotliwość taktowania timera będzie równa 1000000Hz/1024=976,5625Hz. Z tego wniosek, że w ciągu 1 sekundy timer zlicza 976,5625 impulsów. Biorąc pod uwagę, że timer jest 16-bitowy przepełni się 1 raz na (65536/976,5625) 67,108864 sekund. Jeśli nie musisz schodzić...
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...
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...
(...) 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...
Dodam moj przepis na ładną tablicę wektorów (przykład dotyczy ATtiny2313) : .cseg ;—————R...
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?
Spróbowałem zrobić coś w ten deseń. Oczywiście nie działa :). [syntax=c]#include <avr/io.h> #include <avr/interrupt.h> #include <avr/delay.h> #define PORT_ON(port,pin) port |= (1<<pin) #define PORT_OFF(port,pin) port &= ~(1<<pin) #define ICP PINB0 int wyzwalanie = 0; //zmiana zbocza unsigned int TIM16_ReadTCNT1( void...
Witam, problem rozwiązany Oto działający kod: [syntax=c]#define F_CPU 8000000UL /* Częstotliwość kwarcu */ #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> volatile uint16_t licznik = 600; //czas trwania sygnału volatile uint8_t stan = 1; //1-czekamy na zbocze opadające, 0-czekamy na zbocze narastające int main()...
Pozwolę sobie odświeżyć temat dopiero teraz gdyż wcześniej nie miałem czasu:( Oprócz przerwania od przechwycenia licznika dodałem jeszcze przerwanie od przepełnienia: Do funkcji licznik dodałem: TIMSK |= (1<<TOIE1); oraz procedura obsługi przerwania: cykl1 i cykl2 ktore sa przekazane do powyższej funkcji jako argument Oto całość: cykl przekazując...
Przykładowy pełny program poniżej. Kompiluj najlepiej w CodeVisionAVR, nie będzie niespodzianek. Program można znaleźć pod adresem zawartym w ramce (wersja free). Dołączam też pliki .C .cof .hex .map i dla dociekliwych .asm i .lst Pozdr tOMmy /***************************************... This program was produced by the CodeWizardAVR V1.23.8a Standard...
Witam to mój pierwszy post na tym forum, stąd możecie mi wierzyć jak bardzo jestem zrozpaczony:) jeśli temat jest w złym miejscu to prosiłym moderatora o przeniesiegnie i z góry przepraszam:) zwykle staram się rozwiazywać wszystkie problemy sam ale tym razem mam coś czego nie jestem w stanie zrozumieć. Pracuję chwilę nad programem którego działanie...
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)...
Już wiem. W pliku m8def.inc są takie wpisy: .equINT0addr=$001; External Interrupt0 Vector Address .equINT1addr=$002; External Interrupt1 Vector Address .equOC2addr =$003; Output Compare2 Interrupt Vector Address .equOVF2addr=$004; Overflow2 Interrupt Vector Address .equICP1addr=$005; Input Capture1 Interrupt Vector Address .equOC1Aaddr=$006; Output...
Pozwoliłem sobie uczytelnić kod dla pokazania jak można sobie ułatwić pisanie kodu - zmieniamy w jednym miejscu, a zmiany są uwzględniane w całym kodzie... Daje to bezbolesną możliwość dowolnego przepięcia linii sygnałowych pod inne wyprowadzenia µC przy minimalnych zmianach w kodzie (podobnie jak w językach wyższego poziomu). #include <m16def.inc>...
http://obrazki.elektroda.pl/7218266900_1... Chronograf jest urządzeniem służącym do pomiaru prędkości obiektu. W najprostszej formie pomiar polega na wykorzystaniu dwu czujników, które będą „śledzić” obiekt, urządzenia do pomiaru czasu i interfejsu wyświetlającego wynik pomiaru. W niniejszym artykule zostanie przedstawiony...
Łap. Napisałem przy kubku kawy i najdłużej to organizowałem się do zdjęć :D To prosty kodzik i zawsze można coś poprawić. Niemniej, co widać na fotach, mierzy częstotliwość, wypełnienie oraz pokazuje czasy stanów Hi/Lo ;) Może się komuś przyda :P http://obrazki.elektroda.pl/4849788600_1... http://obrazki.elektroda.pl/2015178300_1...
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ć):...
Witam, Jestem w trakcie budowy komputera pokładowego na procesorze AtMega8 oraz na wyświetlaczu LCD LS020. Program który tworzę ma zrealizować podstawowe funkcję komputera pokładowego, takie rzeczy jak menu i możliwość nastawienia parametrów odpuszczam a jedynie chcę prawidłowo obsłużyć wejścia i pomiary sygnałów. W trakcie pisania programu natknąłem...
A oto prosta funkcja (kompiluje się w najnowszym AVRStudio) :D : #include <ATmega8535.h> .include "m8535def.inc" ; Prohibits use of non-implemented instructions (ATmega8535) #define XTAL 11059200 #define USART_BAUD 19200 #define _UBBR(_X,_X_BAUD) ((_X/(16*_X_BAUD))-1... #message "_UBBR =="...
...nie odrzucam sposobu mierzenia prędkości poprzez pomiar czasu pomiędzy kolejnymi impulsami. Lecz nie bardzo mam pomysł jak to zrealizować programowo. Będe wdzięczny za podpowiedzi. W sumie to jest bardzo proste, wykorzystaj do tego jakiś timer z dość dużą częstotliwością (czym większa tym dokładniejszy pomiar). Zerujesz go w momencie przyjścia impulsu,...
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....
Witam Do pomiar prędkości obrotowej wentylatora z PC chciałem użyć sygnału z czujnika halla, całość podłączone jak na schemacie poniżej do wejścia atmegi 16 ICP1. Chciałem użyć również wbudowanej funkcji timera 1 do pomiaru okresu. I teraz co nie działa... Pomiar jest mało dokładny i strasznie skacze - przy pomiarze prędkości obrotowej max (7200) wynik...
Witam, mam kilka pytań dotyczących asemblera pod avr i nie tylko. Dlaczego nie mogę się odwoływać do rejestrów poniżej 15 np r1 przez instrukcję ldi? Czy ustawienie pinu jako wejście z pull-up'em oznacza że jego stan początkowy równy jest 1? Ze wszystkich pinów mogę korzystać normalnie jeśli w odpowiednich rejestrach nie ustawie bitów odpowiedzialnych...
Witam Pracuje obecnie nad projektem odbiornika sygnały DMX512. Sprawa wygląda następująco: -Sygnał danych czytany jest z urządzenia zwane Kwamatik USB2DMX, obsługiwane przez program Q Light Controller. „Po drodze” do uC trafia jeszcze na driver RS485 a potem na PIN RX UART1 oraz PIN PB9 skonfigurowanego jako wejścia dla Timera 11 pracującego...
Witam! Skonstruowałem sobie urządzenie, które ma służyć do optymalnego ustawienia sterownika kotła. Mierzy temperatury na zewnątrz i wewnątrz, liczy ich średnie, minima i maksima, jest podłączone do sterownika kotła pod przekaźnik (przez transoptor) i zlicza ilość załączeń podajnika w różnych trybach pracy i sumaryczny czas. Od dłuższego czasu walczę...
https://obrazki.elektroda.pl/4950580000_... Witajcie moi drodzy W tym temacie poznamy podstawy przerwań i timerów w PIC18F2550 . Na początek będzie krótki wstęp teoretyczny, a potem wszystko przerobimy dokładnie na praktycznych przykładach. Do lektury tematu przyda się ogólna wiedza na temat przerwań i programowania w C, choćby taka...
RDS sam zrobiłem , miałem tylko HEX i kod w asemblerze [code][syntax=avrasm] ;***************************************... ;** RDS decoder with 2x16 LCD for ATtiny2313-10 (main procedure) ;** by Michael Wolf ;** ;** contact: michael(at)mictronics.de ;** homepage: www.mictronics.de ;** ;** Released under GNU GENERAL PUBLIC...
Odcinek bonusowy do poprzedniego: http://obrazki.elektroda.pl/1555884900_1... W wersji produkcyjnej warto zadbać o odpowiednie obwody zasilania i resetu mikrokontrolera. Odbiornik wykorzystuje fotodiodę oraz wzmacniacz operacyjny LM358: http://obrazki.elektroda.pl/7895306600_1... Sygnały wyjściowe podawane są na wejścia...
Witam, sprzedaję nagromadzone w trakcie mojej kariery zawodowej podzespoły elektroniczne. Mam do sprzedania 2 mikrokontrolery firmy microchip w obudowie PLCC68. CENA z przesyłką 10zł Układy nowe nie używane. CECHY: • High current sink/source 25 mA/25 mA • Up to 47 I/O pins with individual direction control • Three external interrupt...
po długich bojach napisałem coś takiego: #include <avr/io.h> #include <avr/interrupts.h> #include <avr/delay.h> #define ICP PORTB0 uint16_t overflows, tstart1, tstart2; uint32_t counts; void init(void); int main(void) { init(); while(1){}; } void init(void) { DDRB=(0xFF|=(1));...
Oto kod Kod: '4x4 Line Follower 'Chibots line following Contest 2003 'Wright Hobbies, LLC Copyright 2003 'eddy(at)wrighthobbies.com 'Variables 'Line Detectors Dim Lineflag As Byte Dim I As Byte , X As Byte Dim Adcvalue As Word , Channel As Byte , Progspeed As Byte Dim Progsteer As Byte Dim Lastadc(5) As Word Dim Calhi(5) As Word , Callow(5)...
Mam program, w którym uruchamiam przerwanie z pinu ICP. I wszystko działa jak należy, program jest przetestowany. Postanowiłem połączyć go z programem do obsługi karty pamięci pobranym z //**************************************... // **** MAIN routine FOR Interfacing microSD/SDHC CARD **** //**************************************...
timer1 capture capture input input capture
głośniki avensis miernik uszkodzony pomiar rezystancji obliczanie transformatora impulsowego
obrotomierz cinquecento sporting politechnika gdańska
Swobodny przepływ powietrza w wężu odpływu zmywarki Czy wodomierze z aplikacją można zatrzymać magnesem?