(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.
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...
dlatego najlepsza opcja nazywa sie input capture. 0x41 0x56 0x45!!
(at)percol, dobry pomysł w mikrokontrolerze bez Input Capture... ATmega8 posiada wejścia ICP dla Timera1... http://www.atmel.com/dyn/resources/prod_... s. 81. Polecam AN: http://www.atmel.com/dyn/resources/prod_... Kod : http://www.atmel.com/dyn/resources/prod_...
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...
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,...
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...
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...
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...
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...
W trybie 9 który masz, OCR1A jest wartością do której będzie zliczał timer, a więc nie będzie się dało sterować wypełnieniem When using OCR1A as TOP value in a PWM mode, the OCR1A Register can not be used for generating a PWM output. Zmień tryb na 8, wtedy licznik będzie zliczał do ICR1 If a fixed TOP value is required, the ICR1 Register can be used...
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...
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)...
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...
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...
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()...
Co do kodu: 1/ nie dołącza się pliku iom8.h. Ten plik jest dołączany przez io.h. Należy przy kompilacji przekazać parametr -mmcu=atmega8 2/ Makro "ICP" korzysta z "PINB0", ale to nie jest bit od zmiennej PINB, żeby można było odczytać. To nie jest nawet maska odpowiedniego bitu. To jest numer bitu w rejestrze PINB, pod którym jest pin 0. PINB0 jest...
Witam, czytając książkę A. Pawluczuka natknąłem się na inicjację wektorów przerwań. Jak wiadomo w książce jest wykorzystywany µC ATmega8515 (niestety ja korzystam z ATmegi32). Przykładowa tablica tutaj: .orgINT0addr ;External Interrupt0 Vector Address reti ; ;---------------------------------------... .orgINT1addr...
A może spróbuj tak: jedne impulsy zliczaj przerwaniem np. INT0, a drugie impulsy przerwaniem InputCapture - wtedy przy wystąpieniu przerwania sprzętowo zapamiętywana jest wartość licznika zrób dwie procedury obsługi przerwań SIGNAL dla INT0 - czyli bez możliwości obsługi innych przerwań w tym czasie - ewentualne 2-gie przerwanie (input capture) zostanie...
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.
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 =="...
Zakres max do 1023 więc unsigned int czyli uint16_t Mam nadzieję że pomogł em Spróbowałem na początek wyświetlić tę zmienną "a" bez dzielenia przez 100 i nawet to nie wychodzi, coś mam chyba zle w tych instrukcjach wyświetlania na LCD spritf.. itd. Oto końcówka kodu: [syntax=c]void main(void) { a=read_adc(0); //wynik=145; //wynik=wynik/10;// Declare...
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...
Witam, proszę o pomoc w dokończeniu kodu do pomiaru temp. Wyświetlacz LCD 2x16 podlaczyłem do portu D atmega8. Czujnik temp. DS18s20 podlaczylem do pinu 2 Port B. Rezustor podciagajcy 4,7k s szyny danych DQ na zasilanie 5V. Wygenerowałem sobie kawałek kodu w codevision. Próbowałem rózne funkcje znalezione w necie ale nie działa wiec proszę o pomoc....
Działajacy przykład: void PWM_init(void) { DDRD = _BV(PD4) | _BV(PD5); // Set up Timer 1. Timer 1 should reset when // it reaches TOP = ICR1 (WGM13:0 = 1110b). On // compare match clear output, at TOP set (COM1A1:0 = 10b). TCCR1A = _BV(COM1A1) | !_BV(COM1A0) // Both PWM outputs set...
...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,...
A w pliku "m8def.inc" stoi: .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 Compare1A Interrupt...
A wiec tak: Gdzie się podziało zainicjowanie licznika podczas wejścia w procedurę przerwania, drogi kolego ? oto ona: // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x40; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00;...
Sluchaj zamiast: SIGNAL (SIG_INPUT_CAPTURE1){ UART_putchar (ICR1H); UART_putchar (ICR1L); PORTD|=_BV(5);//wlacza diode ICR1H = 0x00;//zerujemy rejestr IC ICR1L = 0x00; TIMSK = 0x00;//wylaczamy przerwania ACSR = 0x00;//wylaczamy komparator TCCR1B = 0x00;//wylaczamy timer 1 TCNT1L = 0x00;//zerujemy timer 1 TCNT1H =...
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...
Witam wszystkich :D Niedawno rozpocząłem naukę programowania AVR w języku C i korzystam z programu Code Vision. Mam pewien problem, który być może jest prosty w rozwiązaniu, ale nie wiem za bardzo jak sobie z nim poradzić. Dodam, że przeszukiwałem internet ale bezskutecznie. Problem polega na tym, że po stworzeniu projektu i dodaniu kodu programu, w...
Pracuję właśnie nad takim projektem, aby kontrolować kursor myszki w kompie za pomocą pilota.. Oprogramowałem odbiór/dekodowanie podczerwieni - działa. Oprogramowałem połączenie z PC tej myszki jako urządzenie klasy HID - działa. Niestety dwa w/w działają, ale tylko oddzielnie, tzn.: - testowanie podczerwieni na zasadzie migania diód (odbiór pakietu...
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...
#include <mega8.h> #include <stdio.h> #include <delay.h> #include <math.h> // 1 Wire Bus functions #asm .equ __w1_port=0x15 ;PORTC .equ __w1_bit=5 #endasm #include <1wire.h> unsigned int status=0, error=0; int temperatura=0, temperatura_zadana=0; unsigned char rom_codes[5,9]; unsigned char devices, ii; int ds1820_status=1,...
Witam serdecznie. Mam problem z ds1820. Mianowicie po zaprogramowaniu procka "ustawieniu wewnętrznego oscylatora na 8Mhz" programem przedstawionym poniżej wyświetla mi cały czas że "t1=+85.0`C". Proszę o pomoc. Z góry serdecznie dziękuje. #include <mega8.h> // 1 Wire Bus functions #asm .equ __w1_port=0x12 ;PORTD .equ __w1_bit=3 #endasm #include...
Witam wszystkich czy ktoś mógłby podpowiedzieć jak uzyskać odliczanie czasu w sek na atmedze? w programie CodevisionAVR uzyskuje taki kod w którym niby jest już jakiś wietrzny timer ustawiam go nawet na 8MHz ale nie wiem jak wyprowadzić to odliczanie sekund np na lcd wystarczy żeby ktoś podpowiedział to a dalsza cześć czyli odliczanie minut i godzin...
W tych standardach transmisji jest tak, że impulsów o danej częstotliwości jest określona ilość, więc może dobrym rozwiązaniem było by wykorzystanie Timera 1 (w wypadku np. ATmega8), czy innego który ma OCR, żeby wywołał przerwanie po zliczeniu odpowiedniej ilości impulsów. Inny timer zajmował by się zliczaniem czasu. Po przerwaniu z OCR wartość licznika...
Witam. Jestem w trakcie tworzenia pewnego projektu wymagajacego uzycia graficznego wyswietlacza. Zakupilem sobie JM240128 o matrycy 240x128 puntkow i sterowniku T6963C. Udalo mi sie go obsluzyc, ale napotkalem na pewien problem. Otoz, podczas wyswietlania danych, gdy wyswietlacz sam zwieksza sobie Adress Pointer a ja tylko wysylam mu kolejne bajty,...
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...
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ć...
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...
[syntax=asm]/***************************... Chip type : ATmega8 Program type : Application Clock frequency : 8.000000 MHz Memory model : Small External SRAM size : 0 Data Stack size : 256 ****************************************... #include <stdio.h> //#include <iomega8.h> //#include "delay.h" #include <avr/io.h>...
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...
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ę...
No to coś napisałem na AVRStudio 4.05.0.181 (na kolanie) :) . Co prawda na ATmega8 , ale przeportowanie to pestka(niektóre wektory przerwań do skasowania/zmiany nazwy i "2313def.inc" zamiast "m8def.inc" , prędkość kwarcu Xtal też do poprawki...), raczej tu chyba nie ma rozkazów niezaimplementowanych w AT90S2313 . ;included in next file - line ".device...
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...
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 Mam problem. Zrobiłem układ, który ma przełączać napięcie na cewce silnika Silnik od bramy garażowej. Jedno 0 i dwa wejścia fazowe, od kierunku obrotów. Układ, na sucho, bez podpięcia do silnika działa prawidłowo. Reaguje na przerwania itp. Problem pojawia sie podczas podłączenia fazy do układu. uC działa przez jakąś chwile, potem przestaje reagować...
codevision avr atmega 8515 nadawanie i odbior /***************************************... This program was produced by the CodeWizardAVR V1.23.8a Professional Automatic Program Generator © Copyright 1998-2003 HP InfoTech s.r.l. http://www.hpinfotech.ro e-mail:office(at)hpinfotech.ro Project : Version : Date : 2006-07-02 Author : j Company :...
Wcześniej sprawdzałem czy wchodzi do przerwania z pustą główną pętlą w pragramie - włączałem buzzerka w przerwaniu tylko. Teraz, powinno być tak, że po wejściu do przerwania (w moim przypadku przy wciśniętym klawiszu) buzzerek powinien dzialac, ale i po wyjściu nadal brzęczeć - a tu nic. Po wyjściu z procedury przerwania milknie, czyli gubi gdzieś ustawienie...
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 mam dwa układy RFM12 i atmega8 oba komunikują się ze sobą problem pojawia się gdy chce zmienić linię nSEL podłączoną do pinu SS na np pin PB0 gdzieś czytałem że linia nSEL nie musi być podpięta do tego konkretnego pinu. Pin PB2 (SS/OC1B) chce wykorzystać do sterowania silnikiem . Kiedy w kodzie zmienię definicje SPI_CS z portu PB2 na PB0 modułu...
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 **** //**************************************...
input capture capture input atmega8 capture
sterownik pompy głębinowej system inteligentny podłączyć webasto
prostownik automatyczny schemat prostownik automatyczny schemat
Programowanie modułu 238 CA Haier – tryb serwisowy, flashowanie, wsady, pralki HW-B14 Grzałka Selfa 3 kW z inwerterem Eco Solar Boost 3500 Pro i 7 panelami 420W – jaki prąd?