Przeczytaj post #4 Z początku też myślałam, że chodzi o generator, ale nie. Chodzi o programowany licznik impulsów z wyjściem przekaźnikowym.
Proszę, gotowy przyklad rozwiązania. Napisałem przy kawie i potestowałem w symulatorku czy się nie pomyliłem gdzieś ;) [syntax=basic4gl]$regfile = "m8def.dat" '$sim 'dla symulatora Config Portd.5 = Input : Set Portd.5 : Czuj_1 Alias Pind.5 Config Portd.6 = Input : Set Portd.6 : Czuj_2 Alias Pind.6 Config Portd.7 = Input : Set Portd.7 : Czuj_3 Alias...
jeśli chcesz koniecznie atmega to nada się każdy choćby atmega 8, licznik ma wyświetlać impulsy na wyświetlaczu LED?
Należy: - zadeklarować zmienną globalną np. LICZNIK i nadać jej wartość zera, - włączyć przerwania od przepełnienia Timer0, - w funkcji przerwania należy zwiększać wartość zmiennej LICZNIK o jeden Aby poznać liczbę impulsów wystarczy pomnożyć LICZNIK*256 i dodać do niego aktualną wartość rejestru licznika timera, czyli jak sądzę counter0 (nie znam BASCOM).
Wystarczyło by wykorzystać licznik tryb CTC z dodatkowym przerwaniem od OCRB. OCRA odpowiada z f OCRB za wypełnienie.
Cały ten układzik ma posłużyć do kontroli maszyny zmęczeniowej , w której ważna jest właśnie ilość wykonanych cykli i częstotliwość z jaką maszyna jest ustawiona. Jezeli to ma sluzyc jako wyniki konkretnych badan "na endurance", to musisz dolozyc staran aby wyniki byly dokladniejsze a moc processor byla bardziej prawidlowo wykorzystana. Wiec tak na...
Witam, chciałbym zbudować licznik impulsów na atmega 8 który by zliczał ile impulsów było w czasie 1 sekundy i wartość tych impulsów wysyłała w postaci binarnej na wyjścia procesora. Dodano po 1 Język w którym bym to chciał to C znalazłem identyczny projekt na forum ale w bascomie a w tym języku się wogóle nie orientuje
Witam Patrz DEBOUNCE pin_portu , stan , etykieta w Help
Nie, zmiana zbocza sygnału powoduje przepisanie wartości licznika timera do rejestru ICP, czyli zamrożenie jego wartości. Dzięki temu precyzyjnie można mierzyć czas pomiędzy zdarzeniami. Zbocze możesz sam wybrać.
Witam, potrzebuję pomocy przy budowie licznika impulsów z mikrokontrolerem, który można zaprogramować za pomocą arduino. Urządzenie ma zliczyć impulsy np. z czujnika zbliżeniowego, lub z przycisku ręcznego. Po uzyskaniu zadanej wcześniej liczby impulsów ma uruchomić przekaźnik.(podać napięcie na cewkę) ............ Potrzebowałbym tak naprawdę program...
0 Hz wymaga nieskończonego czasu oczekiwania na zmianę stanu. I nieskończonej pojemności licznika. Proponuję ograniczenie wymagań do 0.1 Hz czy 0.01 Hz. Wtedy można obliczyć wymaganą pojemność licznika i zakres. Liczniki w 8515 mają 8 lub 16 bitów i prescalery. To określa zakres zmiany częstotliwości. A częstotliwość kwarcu też jest istotna. Od tego...
Ostatecznie możesz zrealizować taki pomiar w oparciu o układy cyfrowe. Budujesz generator o odpowiednio dużej częstotliwości do tego jakiś licznik i układ bramkujący ...a mikrokontroler stosujesz do sterowania tym układem oraz odczytem wartości z licznika i akwizycji na wyświetlacz. Wspomniane mikrokontrolery XMEGA są oczywiście lepszym wyjściem z sytuacji...
Oczywiście, że w tym ukłądzie będzie gubił impulsy. Nie wdając się w szczegóły, na około kasujesz ekran i wyświetlasz ponownie wszystko. Nie zauważyłeś, że napisy mają kiepski kontrast? Zrób tą pętlę tak, aby wyświetlał licznik tylko wtedy gdy się zmieni. Zobaczysz, że a) AVR będzie się nudził, b) przestaniesz gubić impulsy.
Witam; chciałem zrobić sobie licznik impuslów na procesorze Xmega. W ATmega była sprawa prosta, licznik mógł pracować w trybie licznika impulsów zewn. A w Xmega tego nie widzę. Wydaje mi się że można to zrobić na eventach, ale chciałbym sie upewnić, czy rzeczywiście to jedyna droga?
Nie ogarniam tego zapisu i nawiasów klamrowych. Po co po "n=n+1" jest nawias klamrowy ?
http://obrazki.elektroda.pl/5431448900_1... 74HC74 bramkuje sygnał wejściowy tak aby jego impulsy nie były krótsze niż impulsy taktowania licznika 74HC590(już samo to wyfiltrowuje część krótkich szpilek) - blokuje to możliwość wyzwalania przerwania ICR1 z nadmierną częstotliwością. W układzie jak na rysunku 74HC590 zlicza gdy sygnał...
Po upływie 655.35ms następuje przepełnienie licznika, w takiej sytuacji trzeba utworzyć zmienną która będzie zliczać ilość przepełnień. Czyli.......... W takiej sytuacji (.."time out"; => Err=1) - trzeba przyjąc że instrukcja została zakończona i processor już nie powróci do jej kontynuacji, a raczej przystąpi do kolejnej instrukcji przewidzianej programem....
6000 rpm to zaledwie 100 Hz. Nie znam się na lotnictwie, ale wymaganie "Częstotliwość 1 Hz do 1 kHz." z pierwszego postu wydaje mi się przesadzone. Fotorezystor okazać się w sam raz :-) Przy odrobinie szczęścia może wystarczyć dzielnik napięcia 24V z fotorezystorem w dolnej gałęzi do wysterowania gotowego licznika impulsów.
Byłoby dobrze aby układ detekcji przecięcia wiązki formował impuls cyfrowy. Wtedy impuls wyzwoli przerwanie startujące licznik, następny impuls zatrzyma licznik. Taki sposób pozwoli na brak konieczności korzystania z wbudowanego, dość wolnego ADC.
(at)Chivo Zamiast przerwań wykorzystaj możliwość podania sygnału zegarowego na licznik - licznik w M16 ma możliwość zliczania impulsów podanych na wejście T procesora. To nie jest kwestia dokładności, lecz wygody i wykorzystania zasobów procesora. BTW, ściągnij sobie darmowe przykłady do książek z mojej stopki - masz tam pokazany właśnie przykład licznika...
...przy 10000HZ na LCD wyświetla 0666... No to prawie jak liczba szatana :) if(licznik==4) { T1=TCNT1; utoa( T1, bufor1, 10 ); lcd_gotoxy(3,0); lcd_puts(bufor1); TCNT1=0; } Widzę, że dodałeś pozycjonowanie kursora, żeby wynik za każdym razem był wyświetlany w tym samym miejscu wyświetlacza. Trzeba by jeszcze...
No to w takim razie źle zrozumiałem instrukcję. Napisali w niej "możesz za załadować do licznika wartość odpowiadającą ilości impulsów po których licznik sie przepełni " więc załadowałem 1000000 impulsów i czekałem aż się przepełni ale się przepełniał troszkę za szybko moim zdaniem.
Tak, dokładnie i wtedy nie będzie problemu, że Atmega przeoczy, krótki impuls. A przerzutnik można też zrobić na drugim komparatorze z układu podwójnego (patrz aplikacje komparatorów) ...
Enkoder to mechanicznie zwykły przycisk. Ma też wszystkie wady przycisku, czyli np. drgania styków. Wiele enkoderów na jeden "przeskok" generuje 2-4 impulsów i oczywiście czasy trwania poszczególnych faz zależą od szybkości kręcenia. Przejrzyj darmowe przykłady do książek w mojej stopce - masz tam przykłady obsługi enkoderów w oparciu o ATMega i XMEGA.
Przy 6 kHz to można się pokusić o zliczanie programowe - czyli podajesz sygnał na wejścia mogące generować przerwania. Z drugiej strony, skoro stosujesz ATMega32, to może prościej wykorzystać ATXMEGA32, gdzie w zależności od wersji liczników masz nawet 8 (albo 16 8-bitowych) i sobie to ładnie sprzętowo rozwiążesz.
Witam. Mam lcd ks0108b 128x64 i chcę zrobić licznik. Chcę napisać program na atmega 644/16 który będzie zliczał czas między impulsami na int0 po czym 3.6 dzelił przez wynik i mnożył razy obwód koła. Początek programu napisałem, skonfigurowałem port na zbocze opadające ale nie wiem ja liczyć ten okres. Proszę o pomoc w tym programie. [syntax=basic4gl]...
Witam wspólnotę chciałbym zaznaczyć że z wykształcenia jestem mechanikiem, a z programowaniem nie miałem wcześniej styczności. Przeczytałem książeczkę która mowiła o programowaniu w jezyku bascom, i stworzyłem taki o to kod programu. [syntax=basic4gl] $regfile = "m8def.dat" $crystal = 8000000 Config Timer0 = Timer , Prescale = 256 'licznik do odmierzania...
Spróbuj: [syntax=basic4gl]Home upper Lcd Impulsy Lowerline Lcd K [/syntax] A najlpeiej używaj poleceń [syntax=basic4gl]LOCATE y , x [/syntax]
Możesz zrobic tak - zliczać 11059 impulsów w liczniku 16-sto bitowym. Da Ci to częstotliwośći 10000,01 Hz czyli z błędęm w zasadzie do skorygowania kwarcem (kondensatorem, trymerem). Co do RS-a - to błąd całkowicie akceptowalny (dla skorygowanej do 11059000 Hz częstotliwości). P AK
Zacznijmy od pytań: 1. Które bity według Ciebie ustawiłeś w TCCR2B : [syntax=c]TCCR2B = (1CS20) (1CS22); ustawienie prescalera na 1024, jeden impuls licznika to 64us TCCR2B = (1WGM22); wprowadzam timer2 w tryb CTC [/syntax] pomijając już fakt, że ten fragment się nie skompiluje. A może wszystko jest ok, tylko to problem wklejania kodu na forum? 2. Gdzie...
Co do zasady działania zegarek opiera się na licznikach [url=http://www.zsp3technikelektronik.cb... Można zrealizować to tak że pierwszy licznik liczy od 0 do 9 każdy impuls podany co minutę, i co każde przejście przez zero podaje impuls kolejnemu licznikowi, który z kolei liczy...
Moim zdaniem najlepszym rozwiązaniem będzie - "podpiąć impulsy" pod wejście licznikowe i niech zajmuje się liczeniem wewnętrzny licznik. Nie obciążamy wtedy procesora. Drugi licznik (np. cztery razy na sekundę) wylicza obroty i resetuje ten pierwszy licznik. Wadą jest problem z liczeniem powolnych impulsów. Zalety - prosty, szybki, zużywający mało zasobów...
Nie,ma liczyć litry tak jak dystrybutor . Dodano po 2 Nie wiem w jaki sposób dodawac litry do zmiennej po przekroczeniu okreslonej liczby impulsów z przepływomierza to co znalazłem to liczone wszystkie w czasie a tu chyba chodzi o przepełnienie licznika Czas tu nie ma znaczenia! Użyj dowolny timer w charakterze licznika (Counter), i tak jak sugerowano...
Ale skąd mam wiedzieć że licznik dobrze zlicza tzn co 1 mikrosekundę? Skąd mam wiedzieć że udało mi się na podstawie taktowania procesora wyliczyć dokładnie jedną mikrosekundę? Zaletą mikrokontrolerów jest to, że wystarczy być pewnym ustawień rejestrów i zegara, i musi odliczać prawidłowo. Pokaż program. Oczywiście kontrola jest wskazana :)
Powrót do punktu wyjścia: atmega i elementy (np. wyświetlacz i kwarc) z licznika rowerowego lub zegarka, lub kalkulatora ...
Druga sprawa jest jeszcze taka czy sygnal z wiatraka nie bedzie za slaby? Poza tym jak rozwiazac to od strony programowej? Liczysz impulsy w czasie, po czym zerujesz licznik i mierzysz nastepny odcinek czasu. Reasumując wykorzystujesz jeden licznik jako licznik impulsów zewnętrznych z wejścia T0 albo T1, a drugi licznik, zliczający przez preskaler...
Możesz też zliczać czas między impulsami. Znasz czas i drogę (obwód koła) co daje Ci prędkość.
Ktoś pisze bzdury. Ta metoda da kilka procent fcpu. Lepiej zliczyć impulsy w określonym czasie za pomocą timera w trybie licznika. Drugim timerem mierzysz ten czas. Dla niskich częstotliwości lepiej mierzyć okres impulsu za pomocą ICP.
na symulatorze nie masz co patrzeć. One są do niczego. Ok sprawdzę zaraz. Dodano po 18 ok sprawdziłem. Działa bez problemu. Sprawdzałem na płycie testowej a sygnał brałem z Timera2 skonfigurowanego jako PWM. Zmieniałem różnie Prescaler od 1 do 1024 i działało bez problemu.
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...
Tranzystor wymusza stan niski na pinie, prosty program zapalający diodę jak jest przesłona, działa. Oczywiście że jest dany rezystor. Problem polega na tym że jak zewrę do masy pin portd.2 to licznik cały czas liczy a chcę aby tylko raz dodał do zmiennej +1.
Witam Czy są jakieś różnice w budowie wejść tych liczników (w ATMega 162)? T0 to wejscie 8-bitowego licznika, T1 16-bitowego. Oba liczniki steruje impulsami z transoptora i T1 liczy normalnie, a T0 podlicza tylko zwarcia bezpośrednio do masy. Do transoptora (CNY17-4) wejścia liczników są tak podłączone: 5V | Kolektor * Emiter -----------wejście Licznika...
No przecież wystarczy wziąć zmienną np. Integer i w zależności od stanu linii DIR zmniejszać ją lub zwiększać przy każdym impulsie STEP. Gdzie tu jest problem, czy ja czegoś nie rozumiem... ?
kolega ma kompletnie skopane procedury obslugi przerwań, nie wiem czemu nikt dotychczas tobie nie napisał że obsługa przerwania to nie jest miejsce na stosowanie procedury delay(). To także nie jest miejsce na to aby wstawiać tam instrukcje case-select choć to jeszcze od biedy przejdzie. Przerwanie musi byc maksymalnie zwięzłe. Dla wyświetlacza musisz...
Witam Sposobów realizacji jest masa. Najprościej Arduino Nano i kilka linijek programu. Mniejsze sam procesor Atmega lub Attiny, ale trudniej bo trzeba płytkę robić (lub pająka żywicą zalać) CD4017 + CD4002 bez programowania. Aby to wszystko nie padło przy pierwszym włączeniu to należy jeszcze dorobić konwertery poziomów wejściowych i wyjściowych, ale...
dzięki Panowie za pomoc - trochę mi rozjaśniło drgania styków są mi znane - można załatwić sprawę programowo lub sprzętowo jak zrobię to wyjdzie w praniu reasumując: - ustawiam pin timera jako wejście i podciągam go do plusa wewnętrznym rezystorem - konfiguruję timer jako licznik - ustawiam zmienną ( nazwa ) do przechowywania sumy impulsów i ..... powinno...
Twoje 50 Hz (pomijam, że nie da się tak dokładnej częstotliwości ustawić) daje okres = 20 Chyba źle zrozumiałeś kolegę michalko12 . Te "jego" 50Hz to nie częstotliwość przerwań, tylko sygnału sterującego serwem (tak przynajmniej sterowana jest zdecydowana większość serw modelarskich). Okres tego sygnału powinien mieć 20ms, z czego 0,5÷2,4ms trwa stan...
Może wtrącę swoje 3 grosze Wynik jest taki jak przypuszczałeś (at)dondu , zmienna intliczba znacznie odbiega od wartości przechowywanej w licznik . W niektórych przypadkach zwiększa się nawet od 5 do 10 razy przy jednym skoku impulsatora. Z testu wynika że procesor reaguje na każde drgnięcie, uruchamiając kolejne przerwania, ale z powodu nieustabilizowania...
Dokładnie w tej linijce TIMSK | = 1<<TOIE2; //wlacz t2 czyli wysylaj co 5 s stan impulsow Przez ustawienie TOIE2 kasowałaś TOIE0
Wykorzystanie timera do odliczanie czasu impulsów. Tablica z z wszystkimi krokami silnika, zmieniany indeks tablicy po przepełnieniu licznika.
Walcze z licznikiem na Atmega 32 inicjacja wyglada tak : DDRB = 0xff; // DDRB jako wyjscie // t0 JAKO LICZNIK PORTB |= _BV(0); // BEZ PODCIAGNIECIA NIE CHCE LICZYC TCCR0 = _BV(CS01)|_BV(CS02); //_BV(CS00)| cs0 rosnace/~opadajace zbocze TCNT0 = 200; TIMSK |= _BV(TOIE0); // T0 wywoluje przerwanie Caly problem polega...
zliczanie impulsów z dwóch enkoderów Jeżeli to są enkodery inkrementalne z sygnałem A, B i ew. Home, zrezygnuj z megi64/128. Xmegi mają wsparcie sprzętowe do obróbki sygnału z takich enkoderów przez użycie liczników w połączeniu z eventami. Na STM32Fxxx zrobisz to łatwiej i być może szybciej korzystając z gotowców. generowanie dwóch przebiegów PWM...
tzn uklad z ledami jest tylko przykładowy zamiast przycisku będzie sygnał prostokątny , atmega będzie sterować cewkami zapłonowymi , mogłem zrobić to na np liczniku , zależnie od zliczonych impulsów ustawiać odpowiedni port , lecz chodzi tu o duża szybkość , wydaje mi sie ze oczekiwanie petli na przycisk będzie najszybszym rozwiązaniem
Natknąłem się na pewien problem przy budowie tego urządzenia związany z ograniczeniami ze strony procesorów AVR. Maksymalny zakres to dla 90s2313 5 MHz (czestotliwosc rezonatora /2 ). Rozwiązanie z którymś z ATmega też nie jest brane pod uwage... Moje pytanie brzmi czy jest mozliwe w nieskomplikowany sposób poszerzyć zakres częstotliwości do 10 MHz......
dondu pisał o zerowaniu preskalera timera nie zapomnij wyzerować licznika timera.
To o czym piszesz to jest implementacja konkretnego algorytmu którego się trzymasz. Najwidoczniej nie najlepszego, skoro 16MHz nie wystarcza żeby odpowiedzieć na prosty impuls. Jak wrócę do projektu (może jeszcze jutro) to pokażę kluczowy fragment programu w C, rozwinięcie assemblerowe i oscylogramy. Dodano po 9 No i przy okazji jestem prawie pewny,...
Na znanych portalach można znaleźć w cenie około 20zł moduły WMBUS Apatora, które były stosowane do odczytu wodomierzy. Chciałbym je użyć w domowej automatyce z Home Assistant do raportowania stanu licznika energii elektrycznej oraz gazu. Licznik energii ma wyjście OC a licznik gazu ma kontaktron. Rozwiązanie na WMBUS wydaje się raczej niezawodne (zasilanie...
Po co koledze ten CTC? Prescaler ustaw na 128 i wykorzystaj przerwanie przepełnienia licznika. Fint = Fosc / preskaler / 2^ilość_bitów_licznika = 32768Hz / 128 / 256 = 1Hz Przy CTC trzeba pamiętać, że występuje taki jeden mały szczegół jak 1+OCRn , gdyż licznik musi przynajmniej zliczyć jeden impuls. A ty go nie uwzględniłeś: Fint = Fosc / (preskaler...
Witam, mam problem z uruchomieniem programu do zliczania impulsów na T1 przez 1 sekundę. Wyświetla mi ciągle zero. Co źle ustawiłem z Timerami ?? Atmega 32 [syntax=c] #define F_CPU 1000000UL #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <hd44780.h> volatile unsigned char licznik = 0; //liczba...
Ok po kolei, wywalam wszystko z programu, zostawiam tylko...... zmienna impulsy jest zwiększana o kilkanaście a nie tylko o jeden ............ Licz: If Scisk = 1 And Ok = 1 Then Incr Impulsy Elseif Scisk = 0 And Ok = 1 Then Decr Impulsy End If Return Kontaktron (Reed switch) generalnie jest stosowany jako proxy switch, czyli w ukladach statycznych....
Witam mam problem bo chciałem sobie wykonać miernik nawijanych zwoi w nawijarce do transformatorów szukałem, ale nic konkretnego nie znalazłem. Chcę aby był to licznik na 4-5 cyfr, coś w stylu miernika impulsów, krokomierza proszę o wskazanie mi schematu. Założenia -prostota układu -żadnych lcd ani lamp żarowych (koszta) -ostatecznie na atmega 8 Proszę...
Chodzi o to, że po pierwszym przerwaniu TCNT1 będzie miał wartość 0, czyli zliczy potem 65536 impulsów. Zaś do generowania, jak Ty chcesz, przerwań co określony odcinek czasu służy tryb CTC. Wtedy w rejestrze OCR ustawiasz ilość impulsów, które chcesz zliczyć, i wygenerować odpowiednie przerwanie.
Dzięki wszystkim za cenne uwagi. excray - próbowałem z Twoim rozwiązaniem, jednak : w ostatnim wierszu expected declaration or statement at end of input. Pewnie coś jeszcze niżej powinienem zmienić... tmf dziękuję za cenne uwagi. Nie, kompilator nie zgłasza mi ostrzeżeń. Rozumiem, że komórkę można zapisać ograniczoną liczbę razy, tylko ja spodziewałem...
Atmega jest taktowana zewnętrznym kwarcem 12MHz, żeby jeden tick timera trwał ~1us. 1. Czy timer 8-bitowy przyjmujący zewnętrzne impulsy, może je przyjmować w takich samych odstępach czasowych jak 16-bitowy? Niestety na etapie projektowania nie zauważyłem, że żeby użyć 16-bit timera do przyjmowania impulsów zewnętrznych należy użyć nóżki T1, a nie T0,...
Witam Chciałbym usłyszeć Wasze zdanie na jeden temat. Otóż mam urządzonko zbudowane na bazie Atmegi8 - całość zamontowana na maszynie -gra i buczy (dzięki również Waszej pomocy za co bardzo dziękuję). Maszyna ma czujnik podczerwieni, który bada przesuwające się na taśmie przedmioty (czujnik zasilany jest 24 VDC i ma 3 przewody VDC, GND, i SYGN przedmiot...
Można na wspomnianej ATmedze8 a można coś kombinować z NE555 jako generator impulsów i jakiś skrócony licznik Johnsona. Program bez problemu do napisania na kolanie jak i schemat wspomnianego układu.
. Zamierzam zrobić tak by mogli wprowadzić korektę (jeśli będzie potrzebna) i zapisać w eeprom. czy to dobry pomysł? Jakoś tak; $Crystal=12000000 Config Timer1 = Timer , Prescale = 8 On Timer1 Inter_1mS Inter_1mS: Counter1 = Counter1 + Licznik (64036 - wychodzi z obliczeń, że da to 1ms) /tu odliczę sobie 103/ Błednie to rozumujesz, albo błednie podałeś...
To jest przyklad tego jak mozna obsluzyc DS1820 przez mega 8 ale jest tam tez obsluga wyswietlacza w C.Moze sie pryda.Sam to dostalem od jednego kolegi z forum:-) wiec mam nadzieje ze sie nie obrazi...mnie interesowal DS. Pozdrawiam Maciek! #include <avr/io.h> #include <avr/pgmspace.h> #include <stdlib.h> #include <ctype.h> #include...
W przedstawionym kawałku programu OCR1A nie jest ustawiony więc w czasie resetu przyjmuje wartość domyślną czyli zero. W takiej sytuacji na wyjściu PWM, w momencie "przekręcenia" licznika pojawiają się krótkie impulsy o długości trwania jednego tika zegara. To taki "ficzer" timerów AVR. Jeżeli pragniesz zobaczyć ładniejszy przebieg to do rejestru OCR1A...
Witam. Posiadam kilka kompletów tego nadajnika i odbiornika (433MHz) i tak jak kolega wspominał w eterze mega dużo śmieci. Ale... znalazłem rozwiązanie tego problemu śmieci! Zmierzyłem miernikiem częstotliwości wyjście odbiornika podłączonego tylko do zasilania i u mnie były takie wyniki: od około 600Hz nawet do 3kHz sygnały śmieci które zmieniały się...
STM32L031K6: Przy wewnętrznym zegarze 131kHz, w temperaturach -40+55, kod wykonywany z RAM, pobór prądu bez peryferiów 21uA max. Z włączonym licznikiem i RTC to będzie 36uA max. I nie trzeba obniżać napięcia do 1,8V :) Można też zejść do 9uA przy zachowaniu zliczania impulsów i bez wybudzania przez 20s (i więcej). Inna opcja to zliczanie impulsów w...
Wróciłem do rozgrzebanego projektu i aktualnie walczę z obsługą impulsatora. Użyty procesor to ATMEGA 16 z zewnętrznym taktowaniem 16MHz. PD2 (INT0), PD3(INT1) są skonfigurowane jako wejścia z podciągnięciem do 1 i do nich podłączone są piny impulsatora odpowiednio PD2 A i PD3 B (patrz załączony plik pdf). W przerwaniach chciałbym zliczać liczbę opadających...
jeden kondensator mniejszy i równolegle z nim trymer a drugi pozostaje bez zmian zmiana położenia trymera spowosuje lekką zmianę częstotliwości kwarcu i taktowania procesora. licznik w procesorze będzie pobierał impulsy właśnie z oscylatora kwarcowego mówimy o atmega... a może liczniki liczyły Ci źle bo korzystasz z wewnętrznego oscylatora RC, który...
Witam, chciałbym prosić pierwszy raz od 16 lat w zasadzie o gotowca. Lub szkic programu żebym mógł sobie go sam napisać. Chcę dokonać przeróbki licznika https://sansan.cc/en/productsinfo.aspx?P... Chcę w nim zrobić: 1. W momencie dotarcia do "umownego" czerwonego pola czyli powiedzmy zapalenia przez licznik diody LED 6000 obr. Atmega...
Tak, będziesz mógł. Jeśli chcesz liczyć w czasie (a nie chcesz) to mierzony przebieg doprowadzasz do wejścia zegarowego timera, w efekcie każdy impuls powoduje zwiększenie wartości licznika o jeden. Skoro chcesz mierzyć szerokość impulsu to wykorzystujesz wejście ICP timera - timer taktujesz z maksymalną częstotliwością, z kolei impulsy z obrotomierza...
Witaj, No save spokojnie możesz użyć.... pod warunkiem, że nie korzystasz w obsłudze przerwania z instrukcji Bascoma bo jeśli tak to nie odkładając rejestrów na stos, zgubisz ich wartości i w najlepszym przypadku będą się działy różne rzeczy. Ja bym napisał wstawkę w asemblerze odkładając wcześniej na stos używane rejestry w tym SREG. Możesz też użyc...
Tu masz program pod ATtiny2313, jeśli potrafisz programować, to też potrafisz przerobić program na ATMegę: [syntax=basic4gl]' Bardzo prosty zegar bez możliwości ustawiania Dim Sekjed As Byte , Sekdzies As Byte , Minjed As Byte , Mindzies As Byte Dim , Godzjed As Byte , Godzdzies As Byte , Mux As Byte , Migaj As Bit Config Portb = 255 : Portb = &B255...
O tez ciekawie!!! Ja mam tylko koncepcje co do wykrycia Synchro: ATmega po zmianie z 1 na 0 wywoływane jast Int0 wtedy uruchamia się Timer1 i liczy impulsy do pojawienia 1 na tym porcie i zatrzymuje Timer1 sprawdzam czy licznik 62500 przeszedl ponad dwa razy jak tak to nie bylo zmiany z 1 na 0 w 59 sekundzie wtedy powinienem zliczac od nowa Timerem1...
Ja zawsze wpisuję Timer1 = var i to jest wartość początkowa licznika , a wpisując instrukcję load , podajesz ilość impulsów do zliczenia , a nie wartość początkową timera, kompilator sam wylicza wartość początkową.( chyba ). Timery zliczają w górę.
Jeśli wyeliminujesz drgania przycisku, to najprościej to zrealizować podając wyjście przycisku na wejście zegarowe jednego timera (bedzie on zliczał ilość wciśnięć), a drugi timer wykorzystać do odmierzania czasów 1s - dokładnie co 1 s należy kasować licznik pierwszego timera. Ot i wszystko.
Witam, Mam pewien problem, mianowicie chciałbym umieścić encored obrotowy który generował by impulsy z częstotliwością max. 1000/s ale w odległości jakieś 14 metrów od procka(atmega). Czy nie powstanie jakiś problem związany z pojemnością przewodu ? Mam jeszcze jedno pytanie, może przy okazji, jak najlepiej obsługiwać taki encoder w procku. Daje on...
No Dobra program juz prawie napisałem i głowiłem sie nad wersja ze zmiennym PWM+f... ale z tego co mi odpisałes to wnioskuję ze coś tu mi nie gra... A nie możnaby programowo realizować ten restart co 80ms? Moze napisz dokładniej co to ma być a coś doradzimy :) Pozdro No wlasnie o to chodziło by nie restartorwać tego zewnetrznie bo chyba prosciej zaimplementowac...
Wielkie dzięki! Oczywiście masz rację! Oczywiście...Nie ma racji!... (16000000/256 = 62500) Jest to częstotliwość impulsów z prescalera kierowanych do timera0. Timer0 - z konfiguracji pracuje w trybie 'Normal' bez preload, więc interrupt OVF0 będzie generowany po otrzymaniu 256 impulsów (pełny zakres licznika); a zatem częstotliwość wystąpienia interruptów...
A change of the COM1x1:0 bits state will have effect at the first compare match after the bits are written. For non-PWM modes, the action can be forced to have immediate effect by using the FOC1x strobe bits. Być może w tym jest problem. OC1A jest prawdopodobnie inicjowane z wartością 0 do momentu wystąpienia pierwszego "compare match". W trybach "set...
Mam projekt enkodera inkrementalnego który ma dwa pierścienie z polami generującymi sygnał 0 i 1. Między górnym i dolnym pierścieniem jest przesuniecie 90°. Więc tak wyglądają sygnały: http://obrazki.elektroda.pl/7174774200_1... Teraz tak, jedno pole na tarczy zajmuje 2°. Z racji tego że jest przesuniecie 90° mogę uzyskać rozdzielczość...
Dzięki za tak szybkie odpowiedzi :-) Rozumiem, ze zmienne zadeklarowales jako volatile, czy zapomniales o tym?:) Druga sprawa - komplikujesz. Ustaw 16-bitowy timer tak, zeby np. mial impuls co 1us, albo czesciej, w zaleznosci jaka potrzebujesz rozdzielczosc. Tak, zmienne mam jako volatile, ale rzeczywiście nie policzyłem, że counter tak szybko się przepełnia...
Faktycznie, teraz dopiero zauważyłem, że dodałeś (a u mnie zabrakło zapamiętywanie poprzednich wartości). Dodatkowo skopałem inicjalizację zmiennych A0 i B0. Pierwsze uruchomienie (z pomocą zmiennej "init") pozwoli na poprawną inicjalizację zmiennych przechowujących "poprzednie" wartości. Dzięki temu przy starcie programu nie wygeneruje się impuls zmieniający...
A tak mi się skrobnęło... Na weścja A,B,C multipleksera dajesz liczbę 0..7 wyburając nr wentylatora (tzn. odpowiednie wejście X0..X7). I już po sprawie. Mierzysz 8 razy na tym samay liczniku.
nie możesz używać instrukcji load timer= jeśli chcesz w ten sposób to tak:load timer0,250(to daje do odliczenia 250 cykli) lub counter0=6 co też daje tyle samo do odliczenia czyli 250 cykli, to jeden z problemów z Twoim tajmerem Dodano po 3 Zapamiętaj zasadę, instrukcja load timer oblicza sama ilość cykli zliczanych do wystąpienia (tyle ile wpiszesz...
czy taki kod na Atmedze 8 da się zrealizować Zdecydowanie nie przewyższa możliwości obliczeniowych atmegi. Proponuje w pierwszej kolejności przemyslec definicję pierwszego impulsu. Jak kolega to zrobi to znajdzie (bez programowania w pierwszej kolejności) algorytm wykrywania że jest on pierwszy i należy liczyć od poczatku. A jak juz bedzie wiadomo...
Liczniki są osobnymi blokami uC, więc jeśli sygnał wejściowy jest poprawny, to impulsy powinny być zliczone poprawnie. Podany wyżej program to program użyty w moim mierniku częstotliwości okrojony z niepotrzebnych ci rzeczy, które mogłyby zaciemnić jego sens. Działa przy częstotliwości kilku MHz.
Fakt że chyba niepotrzebnie zastanawiam się nad tym poborem prądu. Ogólnie to projektuję na zaliczenie przedmiotu traktującego o programowaniu mikrokontrolerów uniwersalny pilot zdalnego sterowania z możliwością tzw. "uczenia się". To znaczy nie będzie to taki całkiem uniwersalny pilot bo będzie obsługiwał tylko te najbardziej znane standardy no i to...
Na studia mam do wykonania cyfrowy stroik do kamertonów W tym artykule opisano ciekawy pomiar z użyciem transoptora szczelinowego: https://www.elektroda.pl/rtvforum/topic3... Od strony mechanicznej układ wymaga nieco precyzji, ale sam pomiar jest już banalny. Wystarczy prosty licznik impulsów na przerwaniu zewnętrznym, bez analizy widma, transformat...
; ========================================... sterowanie PWM_1 ========================================... ; OC1A pracuje jako PWM (z korekcja fazy 8bit z częstotliwością =f/(2*pre*ICR1L) ; ustawiamy OC1 w tryb PWM z korekcja fazy ldi R16, 255 out ICR1L, R16 ; wpisujemy max wartosc zliczana timera T1 ldi R16, 128 ; wpisujemy wypelnienie dla PWM1A...
Panowie spokojnie. Na razie chcę znać odcinek czasu po między impulsami (czujnik taki jak przy liczniku rowerowym) i jak ten czas zapisać do zmiennej (dajmy na to np. "czas"). Resztę obliczeń, to wiadomo, że jest potrzebny obwód koła. Mikrokontroler jaki mam to ATMEGA 128 taktowana zegarem 16MHz
moze komus udalo sie ominac to sprzetowe odkladanie na stos Nie, nie da się, gdyż jak sam napisałeś jest to zrealizowane sprzętowo. Tak samo jak nie da się ominąć tego, żeby bramka NAND była bramką NAND :lol: Jeśli dobrze rozumiem, impuls przerwania ma powodować wystawienie 8 bitów w zależności od 16-bitowej szyny wejściowej? Czy 16-bitów danych w...
Rzut oka na datasheet, na pierwszej stronie: "Four 16-bit Timer/Counter with Separate Prescaler, Compare- and Capture Mode" Powinieneś więc dać radę zmierzyć nawet cztery takie sygnały i niekoniecznie zaczynające się w tym samym momencie. Trzeba wykorzystać tryb capture liczników. Chyba że chcesz się tak męczyć dalej to jeśli faktycznie oba sygnały...
Witam , posiadam enkoder , dajacy sygnały A i B chce dołaczyc go do uC Atmega, tu jest problem poniewaz procesor ma za zadanie wykonywac pewna czynnosc na wewnetrznym przerwaniu od licznika.... bedzie ona wywoływana z pewna czestotliwoscia i ona ma najwyzszy priorytet. teraz pytanko , jak podlaczyc enkoder do uC aby nie zgubic zadnego impulsu z niego..........
Całkiem błędna sugestia - sygnał pochodzi ze styków, a ATmega nie ma sprzętowego filtrowania wejść timera. Tu sprawdzi się tylko zliczanie programowe w przerwaniu timera. Proponuję na początek częstotliwość ok. 50..100 Hz - powinieneś w ten sposób bezpiecznie ominąć drgania styków. Jeśli styki to ja bym zrobił na przerwaniu INT a w nim: [syntax=c]...
ilmenauer -> już mi się dużo rozjaśniło. Ale podłączenie tych czujników ma być takie jak na schemacie? Próbowałem podłączać ale nie było reakcji. Zasilanie czujnika 5V. Atmega reagowała na pojawienie się "0", tylko chyba miałem włączony pullup, nie pamiętam. Dla obu schematów konfiguracja ma być identyczna? Zbudowałem układzik, w jaki sposób obliczyć...
atmega licznik impuls licznik impuls atmega schemat atmega impuls
wymiana baterii pilocie analogowy linia telefoniczny serwonapęd instrukcja
17mb60 firmware 17mb60 firmware
Oporność głośnika w radiu lampowym Pionier Napięcie na anodzie diody BYP401-200 przy 45V