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.
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...
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...
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...
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...
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 ,...
... 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...
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ą...
//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...
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;...
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...
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...
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...
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]...
to jak sie jednego pozbyć?:) [syntax=csharp] /* 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... Autor: Dondu Data: 2012.11.25 */ #include...
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...
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...
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...
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...
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 ! 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ę...
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...
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...
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...
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ć...
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...
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...
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ę...
(...) 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...
Właśnie z tymi pinami jest problem, bo na płytce prototypowej DVK90CAN1 mam głównie PORTF wolny (gniazdo J20 ANA CON), a nie mogę pin headów dolutować do niej :( Szukałem różnych sampli i już na starcie coś nie śmiga, bo dałem prosty warunek, że jeżeli na porcie przyjdzie jakiekolwiek echo, to ma zapalić diodę, a dioda ni cholery nie zapala się. Z przerwaniami...
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()...
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...
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...
Dodam moj przepis na ładną tablicę wektorów (przykład dotyczy ATtiny2313) : .cseg ;—————R...
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,...
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)...
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...
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ć...
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...
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...
Preskaler znaczy taki mnożnik (ze max rozdzielczość to us(mikrosekundy) ale stosując ten preskaler można ją zmniejszyć np do sekund)? Jeśli tak to moj problem został rozwiązany. Poniżej zamieszczam kod który znalazłem na stronie #include <avr/io.h> #include <avr/interrupt.h> //Counts overflovs volatile uint16_t T1Ovs1, T1Ovs2; //Variables...
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...
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....
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?
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...
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...
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 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...
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>...
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ć):...
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...
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...
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 =="...
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ę...
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, 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...
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...
...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,...
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 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...
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...
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...
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));...
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 **** //**************************************...
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)...
timer1 capture input capture capture input
pilot beninca kodowanie cruzer blady fonica gramofon
tuner satelitarny spawarka transformatorowa
Numeracja stron nieparzystych w Wordzie: 1, 2, 3... Parametry anteny satelitarnej Polsat w Niemczech: Hot Bird 13°E