Spróbuj wgrać ten kod.[syntax=basic4gl] $prog &H00 , &H00 , &H00 , &H00 $regfile = "m32def.dat" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , E = Pinb.4 , Rs = Pinc.7 , Db7 = Pinb.3 , Db6 = Pinb.2 , Db5 = Pinb.1 , Db4 = Pinb.0 Config Pinc.2 = Input 'tego chuba nie używasz? Config Pind.1 = Input Przycisk Alias Pinb.7 'tego chuba nie używasz?...
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.
O co ci chodzi? To chcesz obrotomierz, czy licznik obrotów/impulsów? Masz dostępne opisy obrotomierzy optycznych, które realizują podstawowy pomiar ilości obrotów na minutę. Możesz sobie jedynie wejście przerobić. Na pewno też znajdziesz jakiś licznik impulsów.
Zastanów się co będzie w rejestrze TIMSK po wykonaniu tych dwóch linii Twojego programu: [syntax=c]TIMSK = (1<<TOIE0); //przerwanie na przepełnienie ... TIMSK = (1<<TOIE1); //przerwanie na przepełnienie [/syntax] Nie definiuj F_CPU w kodzie z tych powodów: http://mikrokontrolery.blogspot.com/2011...
Programu się wstydzę, bo jest bardzo "prostacki", i pewnie zagmatwany :) Wydaje mi się że te resety wynikały z tego, że przerwanie od T0 (które może się pojawiać nawet co ok 0,3s) "nakładało" się z przerwaniem od T2, chociaż takie coś chyba nie powinno mieć miejsca:) A może do odmierzania 0,5s użyć DS1307? Bo mam przygotowaną płytkę pod niego, gdybym...
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.
To rozwiązanie chcę użyć do zliczania sygnałów z czujnika. Na chwilę obecną zliczam impulsy na zmiennej i jest taki efekt, że w trakcie zliczania program wykonuje zliczanie i nie mam możliwości przełączać innych wyjść. (zliczanie jest jednym etapem gdzie musi zostać wykonana określona liczba obrotów)
DDRB = 0xff; // DDRB jako wyjscie Dlaczego ustawiasz PORTB jak wYjście, a nie jako wEjście? Spróbuj ustawić jako wejście, może zadziała.
Pytanie pomocnicze brzmi - po co zliczać przerwania w C, skoro od tego ma się sprzętowy licznik?
Wiesz o tym, że licznik sprzętowy z preskalerem 1 jest szybszy od programu jaki masz napisany. Zanim instrukcje się wykonają to licznik zliczy jeszcze parę impulsów. Stąd te wachania.
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 :)
Nie,ma liczyć litry tak jak dystrybutor. Dodano po 2 Nie wiem w jaki sposób dodawać litry do zmiennej po przekroczeniu określonej liczby impulsów z przepływomierza. To co znalazłem to liczone wszystkie w czasie, a tu chyba chodzi o przepełnienie licznika.
W pdf jest napisane wszystko . Może napiszesz czego oczekujesz a co wychodzi . Pewnie w obliczeniach zapomniałeś o samym liczniku i wychodzi 256 razy mniej . Wielu początkujących robi taki błąd , ze zapomina o tym ze aby licznik się przepełnił musi policzyć tyle impulsów ile ma jego pojemność a w niektórych trybach ta wartość się jeszcze zmienia . Napisz...
Może i masz rację. Nie przypuszczałam, że coś takiego się trafi. Bardziej mnie jednak martwą te dwa przerwania, nachodzące na siebie...gdyż nie mogę zliczać impulsów w ogóle po włączeniu licznika T2. Wykrywa zbocze, ale T0 nie włącza się.
1. W jakim języku piszesz? 2. Kalkuluje się to tak: Masz kwarc 16 000 000 Hz (16 MHz) i dajesz sobie jeden z dopuszczonych prescalerów, np. 64 i wtedy timer zlicza Ci impulsy z częstotliwością 16 000 000 / 64 = 250 000 Hz, czyli jeden impuls timera to 4*10^-6 s lub inaczej aby odmierzyć 1s musisz zliczyć 250 000 impulsów, Jako, że Timer0 jest 8 bitowy...
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...
Nie mogę zamienić funkcjonalności gdyż jak pisałem wcześniej timer1 używam do pomiarów impulsów bo tylko tam jest licznik T1. Timer0 posiada wejście do zliczania impulsów. Patrz dokumentacja schemat Timer0. Opisz może dokładniej jak wykorzystujesz Timer0 i Timer1.
Ja obsługę takich enkoderów wykonuje zawsze na jednym przerwaniu. Jeden z impulsów wywołuje przerwanie, w obsłudze przerwania sprawdzam tylko stan drugiego kanału. Jeśli jest wysoki to ++licznik, jeśli jest niski to --licznik.
Maksymalna częstotliwość jaka mnie interesuje jest uzyskiwana przy OCR1A = 19. Generalnie wszystko mi działa i to całkiem przyzwoicie, ale muszę zliczać wygenerowane impulsy. Myślałem już nawet o jakimś zewnętrznym liczniku - w postaci układu TTL którego wyjścia będę sobie odczytywał w pętli głównej. To już oczywiście abstrakcja.
Wartość dla 1 sekundy: OCR1A=((częstotliwość procesora)/preskaler)-1 Wartość dla 4 sekund OCR1A=((częstotliwość procesora)/preskaler)-4 Jedynka w podanym przeze mnie wzorze nie oznacza 1 sekundy. Jeden trzeba odjąć z innych względów. Po prostu licznik nie zaczyna liczyć od 1 tylko od 0, więc odliczanie np. do 5 oznacza (0 1 2 3 4 5), czyli 6 impulsów....
Nie tak źle z dostępnością, układy analoga są w RS-sie. A tak ogólne zapytanie. Robił ktoś miernik mocy 3F? Zrobiłem miernik COP do pomp ciepła, moc odczytuje z impulsów liczników ogólnodostępnych. Dobrze by było jednak użyć własnego układu a już brak mi czasu na tworzenie tego od podstaw.
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...
Taki licznik chce zrobić: https://aki-technical.blogspot.com/2020/... Dodano po 31 Jest też projekt na liczniku i nie wiem które rozwiązanie wybrać pod swój projekt: https://www.engineersgarage.co...uilt-co...
Jak napisac funkcje w AVR dla ATMEGA32 w jezyku C, aby mozliwe było przechwycenie przerwania spowodowanego impulsem zewnetrznym w liczniku TIMER0?? Gdyż dla TIMER 1 ustawia sie bit TICIE1 w rejestrze TIMSK, a dla TIMER0 nie ma tam żadnego takiego bitu?? Jak to zrobić?? A drugie pytanko, czy jest mozliwość uzyskania 1 sekundy na TIMER0??? Dzieki za pomoc!!
Oscyloskopem niestety nie dysponuję. Działanie detektora zera sprawdzałem w ten sposób, że przy co setnym impulsie dodawałem sobie do licznika wartość jeden, i - zgodnie z oczekiwaniami - mniej więcej co sekundę licznik zwiększał się o 1. (wartość licznika wyrzucałem na diody).
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...
TIMER0 - ma przerwanie co 0,2sekundy dla sprawdzenia różnych ustawień w zależności od menu. Takie różne opcje potrzebne w liczniku rowerowym :) TIMER1 - potrzebny do odliczania czasu między impulsami pochodzącymi od kontaktrona odłączonego pod INT0. Próbowałem według Twoich sugestii ustawiać INTy w mainie, ale również nie daje to efektu.
Witam. Z pewnych przyczyn musiałem przejść z pisania oprogramowania w Bascom na C. I pojawił się problem. Mianowicie chodzi o konfigurację Timera1 tak aby był generatorem, którego częstotliwość zmienia się wpisem do rejestru pwm1a. Pwm1a = 312 Config Timer1 = Timer , Prescale = 8 , Compare A = Toggle , Clear Timer = 1 On Compare1a Impuls Enable Interrupts...
Robienie tego na przerwaniach z pinów nie jest dobrym pomysłem. Przy enkoderze właściwie nie interesują cię zbocza sygnału, lepiej zrobić próbkowanie pinu IO co określony czas - zależny od liczby impulsów /s. Przykładowy kod działający na tej zasadzie możesz pobrać za darmo z przykładów z mojej stopki. Łatwo go rozszerzyć o kolejne enkodery. Są też...
Możesz mierzyć czasy "0" i "1" a następnie je porównywać z czego wyjdzie wartość PWM Czy mógłbym prosić o jakieś wyjaśnienie mierzenia czasów "0" i "1"? W jakim trybie powinien pracować timer? Licznika impulsów? Czytałem o timerach na kursie And-Techu oraz w książce o programowaniu uC ale nie mam doświadczenia aby od razu "zobaczyć" rozwiązanie problemu.
Witam, Nie mogę sobie poradzić z konfiguracją licznika 16b (timer1) w procesorze atmega32. Potrzebuję sobie wygenerować impuls o zadanej długości, próbuje użyć do tego celu licznika w trybie CTC z ustawieniem "Clear OC1A/OC1B on compare match (Set output to low level)" a więc zawartość OCR1A będzie regulować długość impulsu. Kod testowy: DDRD |= _BV(5);...
Czy timery pracujące jako liczniki pracują w tle programu głównego? Rozumiem że gdybym takowy uruchomił to po przeładowaniu mógłby on zmieniać wartość zmiennej krok_z automatycznie? Tak myślę że wtedy mógłbym tą zmienną licznikową zmieniać w zależności od czasu, dobrze myślę? Jak wyliczyć czasy pracy i ilość impulsów niezbędnych do obliczenia konkretnego...
Wyślij 2 razy po kolei, najpierw adres 000000xx potem bajt danych. Pomiędzy nimi może być dowolna przerwa na załadowanie bajtu, bo spi jest niesynchroniczne a sterowane zboczem, czas bitu nie gra roli, ważna jest tylko kolejność zdarzeń. Być może na obrazku transmisji masz to równiutko narysowane ale w tekscie to pewno pisze ze czasy nie graja roli....
Witam. Jak w temacie zlecę zaprogramowanie Arduino UNO R3. Sterownik ma obsługiwać licznik/sterownik impulsów. Skład zestawu: Arduino: ARDUINO UNO R3 ATMEGA328 CH340 AVR KLON MODUŁ https://obrazki.elektroda.pl/7110110800_... Ewentualnie: Arduino UNO R3 ATMega328 100% zgodność + kabel USB https://obrazki.elektroda.pl/8336046000_...
Witam. Chciałem przetestować napisany licznik impulsów na generatorze sygnału prostokątnego i mam pytanie dotyczące podłączenia Atmegi do tego cuda.:p. Jak rozumiem, jedno wyjście daje na masę, drugie na pin od zewnętrznego clocka Atmegi + opornik kilka kilo między wyjścia? I druga sprawa - jaką amplitudę powinien posiadać ten przebieg? Taką jak zasilanie...
Musiałbyś dodać zmienną, która będzie służyła do odmierzania czasu bez impulsów, tzw. "timeout". Jeśli przez okres ponad 10 s nie przyjdzie żaden impuls, to n=0. Wbrew pozorom, liczenie timeoutów najłatwiej zrealizować w przerwaniu :) Dodano po 1 fragmenty kodu: inicjalizacja przerwań (akurat dla Atmega32) [syntax=c] TCCR0 |= (1 << CS02); TIMSK...
Proszę pamiętać, że ilość impulsów w lampie GM zależy od napięcia. Ona działać będzie i na 300V jak i 500V tyle, że wynik będzie miał z rzeczywistością tyle wspólnego że szkoda gadać. Licznik GM ma z góry ustalony zakres poprawnej pracy i w ramach tego zakresu regulując napięcie dokonuje się kalibracji. Radiactiveathome.org
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...
To wszystko zależy od tego jaki masz kwarc i jaki ustawisz preskaler. Zakładając że masz kwarc 1MHz i zliczasz bez preskalera to wtedy jeden pełny cykl licznika (65536 impulsów) będzie trwał 65,5 ms. W najgorszym przypadku (czyli wtedy gdy masz kwarc 1MHz, chyba najwolniejszy ze standardowych:) , i preskaler 1024) to jeden impuls zegara trwa ok 1ms,...
Jak dobrze rozumiem to to podciąganie jest w środku drivera... Proponuję Ci zrobić jeden test. Wyzerować liczniki pozycji z Twojego programu i z servodrivera. Wykonać jakiś ruch który spowoduje wywalenie drivera. Następnie sprawdzić ile impulsów nadałeś z procka i ile pokazuje program diagnostyczny tego drivera. Jeśli jest dokładnie tyle samo to nie...
Witam Problem rozwiązany. W programie zmniejszałem wartość rejestru OCR1A o 100. Podczas takiej dekrementacji mogło dochodzić do przypadku jak niżej OCR1A=10000 wartość timer1=9940 jeżeli w tym momencie zmniejszyłem wartość OCR1A do 9900 to licznik liczył dalej do wartości 65536 i następowała przerwa na czas około 1-2 sekund Wystarczyło przed każdą...
Dziękuję za odpowiedź. Czy mógłbyś napisać to samo ale z komentarzem do każdej linii ? Nie wiem, czy dobrze rozumiem idee Timera. Enable Interrupts ---- uruchamia przerwania Enable Timer0 ----- uruchamia Timer0 On Timer0 Przerwanie_co_1s ---- nazwa programu, który obsługuje przepełnienie timer0 Dim T1 as Integer ---- zmienna typu Integer dla pierwszego...
Masz wpisane Config Pina, czy nie chodziło o b? Unikaj stosowania instrukcji waitms, to tylko marnowanie mocy obliczeniowej. Z tego co rozumiem program miał zliczać liczbe impulsów w jakimś tam czasie, tak? Jednak chyba lepiej będzie mierzyć czas między poszczególnymi impulsami. Ogólnie program ma jeszcze kilka niedociągnięć. -Licznik nigdzie nie jest...
Wszystkie przerwania których w tym programie używam podałem w poprzednim poście. Owszem obsługa przerwania nie może być przerwana przez inne przerwanie, ale jego zgłoszenie jest zapamiętane i zostaje obsłużone po zakończeniu obsługi tego pierwszego. Tak mi się przynajmniej wydaje, ale mogę się mylić. W moim programie żadne przerwanie nie trwa tak długo...
Wiedze na temat przerwań czerpałem z poradnika : http://std2.phys.uni.lodz.pl/mikroproces... kolega raz pisze ze load timer0 250 jest nie poprawny a potem pisze że poprawny wiec od czego jest zależne jaki czas jest po jednym przepełnieniu czy to ma 8ms lub 4ms jaki jest poprawny wzór na obliczenie jle ma być przepełnień...
Dla zainteresowanych tak zrealizowałem czujnik prędkości: http://www.fsoautoklub.pl/?action=techni... Coprawda prędkościomierz działał w oparciu o licznik rowerowy ale w zupełności wystarcza do zastosowań mikroprocesorów. W chwili obecnej przykeljone są cztery magnesiki i będę próbował zrealiwować układ na mikroprocesorze. No ale to daaaleka przyszłość....
Witam! Jakiś rok temu zainteresowałem się elektroniką. Zrobiłem kilka układów. Obecnie interesuję się programowaniem mikrokontrolerów. Zakupiłem na allegro zestaw uruchomieniowy EvB 4.3 ( wystarzczy, że wpiszecie w wyszukiwarce i będziecie wiedzieli o co chodzi) - inaczej po prostu płytka uniwersalna. Z tym, że przeważnie do tego zestawu jest dołączany...
Witam. Otóż mam taki problem. Mianowicie chciałem zbudować licznik różnicowy na mikroprocesorze, działającego w ten sposób aby na wyświetlaczu pokazywał różnicę impulsów podawanych do uC. Mam do dyspozycji ATMEGE32 z trzema timerami T0,T1,T2. T1 wykorzystałem na przerwania do obsługi wyświetlacza. Pozostał T0,T2. T0 podłączyłem do kontaktronu. Natomiast...
Dobrze zrozumiałeś program. Sterowanie następuje zewnętrznymi impulsami a dokładnie impulsami z przerwań zewnętrznych. Po ich wywołaniu jak widać zmienia się wartość rejestru OCR0 do którego zlicza licznik w trybie CTC - jest to prędkość sekwencji. W przerwaniu zewnętrznym 2 każde kolejne wciśnięcie przycisku powoduje zmianę sekwencji, krokowe, półkrokowe...
Problem pochodzi od niemożliwości dokładnego zapisu ułamków nie będących potęgami liczby 2 (właściwie 1/2^x) np. dokładnie daje się zapisać liczbę 0.5; 0.25; 0.125 ... (oraz ich sumę). Problem może być rozwiązany przez dodanie pomocniczej (kosztem zwiększenia czasu wykonywania kodu) zmiennej o typie float lub double (lub const float/double), do której...
Spróbuj podłączyć to do pinu INT0, wg mnie pin ICP1 nie powinien ci dawać impulsów z "powietrza". Poniżej fragment dla przerwania od INT0 Też mnie to zastanawia, dlaczego pokazuje wogóle jakieś wartości. Ok tylko wiesz co ja chcę zmierzyć prędkość , a nie ilość obrotów i chcę to zrobić przy pomocy jednego licznika (timer1 16bitowy) bo pozostałe dwa...
Hej, czy to twoje rozwiązanie nie spowoduje tego, ze tak naprawdę pomiędzy impulsami na kolejnych wyjściach rejestru będę miał przerwy wynikające z wpisów w OC1A (zegar będzie przecież liczył mnie tylko do 2ms, ale do 4ms..... pozdrawiam krzysiek Proszę poprawić błędy w pisowni w całym temacie - regulamin p.15
Mam mały problem z liczeniem impulsów pochodzących z TCCR2. Potrzebuje dokładnie 200 impulsów aby wał silnika krokowego obrócił się w prawo o jeden obrót. Jeden 360 stopni obrót wału silnika to 200 kroków po 1.8 stopnia każdy. Poniżej przedstawiam kod w języku C który napisałem do tej pory. Nie jestem jakimś orłem w programowaniu uP. Chciałbym państwa...
Na pierwszy strzał wymieniłbym ten potencjometr montażowy skatowany ogromnym wkrętakiem na dobry osiowy Wymieniony na Telpod 4,7k Czy Twój sterownik ma regulację prądu na silnik? Tak najpierw sprawdzam, czy sterownik prawidłowo steruje. No wydaje mi się, że dobrze steruje dlatego, że obraca się prawidłowo tylko gubi kroki. Nie mogę sprawdzić przebiegu...
W sumie i tak w obszarze pamięci masz magistralę równoległą, więc taka, czy inna konwersja serial-parallel-serial wchodzi w grę. Jeśli nie masz elementu "inteligencji" w postaci procesora, czy kości programowalnej, może należałoby poprzestać na układach równoległych (adc, dac), ale to kwestia ceny. Inna sprawa, że rozwiązując cały problem w klasycznej...
Witam! Mam program, który wykorzystuje liczniki do wysyłania impulsów o danej częstotliwości. Częstotliwością steruję za pomocą zmiennej okres1, która jest mnożnikiem preskalera. Np. preskaler=8 clkio=1000000Mhz okres1=127, czyli co 8*128=1024us zmienia się stan na danym pinie przerwania od przepełnienia licznika (dla timera1a jest to pd5), co znaczy,...
Witam, Przedstawiam a tym artykule jak można na jednym przerwaniu obsłużyć pokazany poniżej impulsator. Może komuś się przyda. http://obrazki.elektroda.pl/6570210900_1... http://obrazki.elektroda.pl/3250862500_1... Wyjście B enkodera może by na innym dowolnym pinie, wymaga jedynie zmian w algorytmie. /* wyjście impulsatora...
Mniej więcej co 2 tygodnie ktoś tu próbuje obsługiwać przycisk na przerwaniu portu i co dwa tygodnie próbujemy takiemu delikwentowi wybić ten nierozsądny pomysł z głowy. Przeszukaj archiwum. Przycisków NIE obsługuje się przy użyciu przerwań portu, a przy użyciu przerwania timera. Jak chodzi o mikrokontolery jestem początkujący. Tego typu obsługa była...
Amplituda impulsów wynosi 4,2-4,3 V, według oscyloskopu Vpp=8,5 V. Okres impulsów jest wybierany w menu programu, mieści się w przedziale 70-280 ms. Up taktóję kwarcem 10 Mhz. Przy nieobciążonych portach nic się nie zmienia. Poniżej wkleiłem fragmenty programu z konfiguracją portów, konfiguracją licznika, podprogramem obsługi przerwania z licznika Config...
Zrobiłem bufor, a raczej zdarłem gotowca z książki Pana Mirka, żeby w tym już nie błądzić. main.c main.c enc.c EFEKT : * Łącze terminal z ATMega32, wysyłam znak zapytania '?' , dostaję odpowiedź np. ':' '/' '/' '#' . Czyli tu musi być dobrze ( proszę nie wnikać w automat liczący impulsy - działa poprawnie). * Łącze terminal z UART0 ATMega128, resetuje...
Witam Chce zbudować czterokanałowy rejestrator .... W związku z tym, że wszystkie cztery wejścia mają mieć te same możliwości pomiarowe , chciałem się do was zwrócić o pomoc. Na wstępie zwróć uwagę że nie masz takej potrzeby, a z drugiej strony byłoby to raczej nie możliwe. Każdy z tych czterch kanałów ma za zadanie pomiar kompletnie innego parametru...
Wyjaśnij jeszcze co to jest stan C, do czego służy i jak go definiujesz/rozpoznajesz, bo nijak tego nie idzie zrozumieć, to po pierwsze. Różnica pomiędzy C a B to ma być długość stanu niskiego pomiędzy jednym stanem wysokim a drugim. Dodano po 29 Dodanie zerowania licznika nic nie pomaga, jest nawet gorzej: --------------------------- HI: 928 LOW:4294875584...
Poczyniłem programik w C do zliczania impulsów z zewn. wejścia T1. Program zlicza impulsy do T1 w czasie ustalanym przez T0. Sterowanie jest tak ustawione że pierwsze odliczanie wpisywane jest do F1, drugie do F2, trzecie do F3 i tak w kółko. Na czas wyświetlania na LCD wyłączyłem przerwania. Wszystko działa ale nie do końca prawidłowo. Problem polega...
Jesteś pewien co do tego PWM? Sterowanie wskazówką w licznikach najczęściej zrealizowane jest w oparciu o specyficzny rodzaj silnika - air core gauge. Tam wychylenie wskazówki uzależnione jest od relacji prądów płynących w dwóch przesuniętych o 90* cewkach. Próba odczytu napięcia/prądu tylko z jednej cewki da błędny wynik. Co do najprostszej implementacji...
Może to co napiszę jest trochę prymitywne ale działa, sprawdziłem :-) No więc można też tak: Start Timer0 Do Loop Until We=1 Timer0=0 Do Loop Until We=0 Wynik=Timer0 We to dowolny pin. Prescaler timera trzeba ustawić tak żeby mierzony impuls zmieścił się w zakresie 0 - Tmax (zależy ile masz bitowy Timer). Nie potrzeba tu żadnych przerwań. Wada jest...
Tak jak napisał kolega wyżej przerwanie OVF wykonuje się w momencie, gdy timer się przepełnia, co w tym przypadku oznacza jego wyzerowanie, czyli wyzerowanie rejestru TCNT2. W zależności od realizowanego programu moment wejścia w przerwanie może być nieco opóźniony w stosunku do momentu przepełnienia się licznika, a w tym czasie timer zlicza impulsy,...
Witam ponownie. Własnie włączyłem wewnetrzny generator RC na 8MHz i juz sterownik sie nie restetuje. Jest natomiest inny problerm. Nie mogę zrobić w miare dokladnego zegara na wewnetrznym oscylatorze RC. Czy może trzeba kalibrować ten generator wewnetrzny za pomocą OSCCAl? Jeśli tak to jak to zrobić, czy można jakoś w PonyProg'u? przedstawiam fargment...
Usiłuję napisać program takiego miernika i podczas analizy konfiguracji timer-ów w różnych tego typu projektach a szczególnie w jednym (ale o tym później) pogubiłem się trochę i pojawiły się wątpliwości. Do testów używam platformy arduino nano (atmega328p, 16MHz, 5V) i na chwilę obecną napisałem coś takiego: [syntax=c]#include <Wire.h> #include...
Witam, mam problem ze sterowanie sygnałem PWM. Program służy do zaczytywania wartości częstotliwości z czujnika TCS3200 . W zależności od koloru jaki wykryje czujnik ma nastąpić zmiana wartości wypełnienia PWMa. W tym momencie dioda, którą mam podłączona pod wyjście OC2 cały czas świeci tak samo, niezależnie od wartości OCR2 . Próbowałem na różne sposoby...
Dobra. Kod prezentuje się następująco: to jest program w którym wszystko działa jak potrzeba: [syntax=cpp]//Data utworzenie: 20-09-2014 #include <avr/io.h> #include <util/delay.h> #include <stdlib.h> #include <avr/pgmspace.h> #include "MYUART/myuart.h" #include "MK_TERMINAL/mk_term.h" #define REF_256 (1<<REFS1)|(1<<REFS0)...
Dodaje dodatkowo ilość impulsów które mogły się pojawić zanim wykonała się ta linijka a po zerowaniu licznika.
proponuje znalezc mikrokontroler, ktory ma 8 PWMow [; PIC24, dsPIC - dla przykladu... wiekszosc ARMow rowniez ma ich sporo. a jesli sie nie da, to trzeba sobie zrobic na jednym timerze 'impuls' ktory bedzie rozdzielczoscia twojego PWMa - np co 100us. w przerwaniu od tego timera obsluzysz ile chcesz serw. przerwanie bedzie mialo swoje liczniki, ktore...
...I bardzo dobrze ;) tylko proszę o informację które potwierdzą moją "herezję". Pozdrawiam Jarek Proszę bardzo ;) • Bit 7 – INTF1: External Interrupt Flag 1 When an edge or logic change on the INT1 pin triggers an interrupt request, INTF1 becomes set (one). If the I-bit in SREG and the INT1 bit in GICR are set (one), the MCU will jump...
Poprawiłem warunek else na następujący [syntax=c] else PORTA&=~(1<<PA2); // Jeśli nie zgaś LED [/syntax] zaś flagi zdeklarowałem następująco [syntax=c] volatile uint8_t flaga1=0; volatile uint8_t flaga=0; [/syntax] co w efekcie dało cały kod następujący [syntax=c] #include <avr/io.h> //dołączenie podstawowej biblioteki #include <util/delay.h>...
Jednak dla Atmegi328 z 16MHz wychodzi, że Timer2 może pracować najwyżej na 61Hz co może być za duże dla serw które lubią 50Hz. Gdyby 61Hz było "najwyżej", to mógł by pracować niżej a więc na 50Hz. Poza tym serwa nie wymagają konkretnie 50Hz. Zdecydowana większość pracuje dobrze od 10Hz do kilkuset Hz. Objaw który opisujesz pasuje raczej do serwa które...
Spróbuj może taki zapis liczenia impulsów w przerwaniu: [syntax=basic4gl]Czas: Timer2 = Timer2 + 6 If Licznik_sd > 0 then Decr Licznik_sd else Licznik_sd=60000 Flaga_sd_save = 1 End If Return[/syntax]
ad 1. Użyj timerów - taktując je zegarem o odpowiedniej częstotliwości licznik timera będzie zliczał czas. ad. 2. Użyj timera :) Tylko w trybie input capture - w tym trybie licznik zlicza impulsy zegara taktującego i jest stopowany zboczem sygnału doprowadzonego do wejścia ICP timera.
Witam, Mam taki problem. Chcę wysyłać do PC informację w formie takiego temp1;temp2;f1;temp3 i coś jeszcze. Jak wysyłam informację to chcę żeby ona była raz wyświetlana powiedzmy co ok 1-2s a nie tak jak na screenach pod kodem. (to jest losowe). Co może być nie tak. Timera2 używam jako odmierzacz czasu a timer0 do pomiaru częstotliwości (na 555) $regfile...
Witam. Procesor ATmega32 Za pomocą przerwań zewnętrznych chciałem sobie zmierzyć szerokość impulsu ECHO w sonarze HC-SR04. Niestety coś w kodzie nie trybi ponieważ dioda informująca o dokonanym pomiarze się nie zapala. Napisałem już obsługe jednego czujnika za pomocą INPUT_CAPTURE i działa, ale niestety w ATmega32 jest tylko jeden pin do obsługi takie...
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...
Ok zrobiłem na początek prostą rzecz: wiązkę podczerwieni której przecięcie zapala diodę po pewnym opóźnieniu liczonym od chwili przecięcia wiązki, przyjąłem 3 s. Niestety moje obliczenia odnośnie opóźnienia nie zgadzają się z tym co jest w rzeczywistości tzn. dioda mająca zapalić się ok. 3 s po przecięciu wiązki zapala się po niecałej sekundzie. Proszę...
(at)deus.ex.machina - oczywiście, że jest układ czasowo-licznikowy, kwestia tego jakie tryby obsługuje i w jaki sposób można wykorzystując go otrzymać 1.8MHz sinusa. Jestem ciekaw tego jak Twoim zdaniem to ma wyglądać, bo ciągle rzucasz ogólnikami a dowodów na "działanie" ciągle brak. Więc zamiast zarzucać adwersarzom dyletanctwo bądź szablonowe myślenie...
Witam. To: Zastosowałem się i wyświetla najprawdopodobniej dobrze, jednak z jednym ale, wyświetla mi: 22,00e, Obecny kodzik: http://obrazki.elektroda.pl/3370140900_1... Już w tej chwili chciałbym koledze bardzo podziękować, za pomoc, ale może uda się rozkminić dlaczego wyświetla bez części po przecinku i to e
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 zlicza czas w jakichś tam odstępach i dodaje do licznika +1. (wyeliminowano przepełnienia timera) . Jeśli jest impuls z halotronu (magnes kręci sie na łyżkach wiatromierza) to znaczy ze wykonano jeden obrót, i wtedy ten czas jaki zleciał do momentu przejechania magnesu, (np 1/50 sekundy) przeliczam na prędkość. Tylko do tego timera używam. Biblioteka...
Witam, jednym z elementów mojego projektu jest regulacja fazowa mocy oddawanej do obciążeń rezystancyjnych (Oświetlenie), mniej indukcyjnych, problem polega na tym, że po wstępnym napisaniu fragmentu kodu już widzę, wyzwalanie triaka jest nieprecyzyjne, teraz moje pytanie dlaczego? Załączam fragment kodu i schemat obwodu triaka i detekcji przejścia...
Witam Chcę napisać program generujący na wyjściu przebieg, który odpowiadać będzie dwóm kołom zębatym umieszczonym na jednej osi w taki sposób, że zęby koła drugiego znajdują się między zębami koła pierwszego. Stosunek wzajemnego położenia kół zmienny. Prędkość (20-150rpm), ilość zębów koła(10-150). Myślę o wykorzystaniu w tym celu Licznika1 w trybie...
Witam, czy ktoś z szanownych kolegów wie może jak poradzić sobie z problemem konieczności zapisania do pamięci stałej informacji o tym w którym dokładnie momencie wykonywania programu zostało w skutek np. awarii odcięte zasilanie, tak aby po ponownym dostarczeniu zasilania program mógł się wykonać dalej od miejsca przerwania go? Chodzi o sytuację w...
http://obrazki.elektroda.pl/9114516200_1... Autorski projekt wyłącznika zdalnie sterowanego za pomocą pilota RC5. Cały układ kontrolowany jest za pomocą mikroprocesora z rodziny AVR, ATtiny2313. Na uwagę zasługuje zasilanie układu bezpośrednio z sieci elektroenergetycznej o napięciu 230V, zrealizowane przez zasilacz bez transformatorowy....
Spróbuję zaprogramować ATMEGĘ8 tak aby na dwóch przykładowych pinach pojawiały się impulsy STEP_UP, STEP_DOWN, wtedy główny MCU (ATMEGA32) będzie musiał w przerwaniu tylko zmniejszyć lub zwiększyć licznik pozycji silnika.Powinno być sporo szybciej.
Co do programu przedstawionego w załączniku. Strasznie marnujesz czas procesora, powinienes w przerwaniu wykonac kilka instrukcji a ty wykonujesz wszystko. Uboczną stroną jest jescze to ze musisz zapisywac wykorzystywane rejestry na stosie i "uziemiasz sobie licznk 0" Proponowałbym taki sposób: czujnik dołaczasz do wejscia into lub int1 ustawiasz na...
Witam, mam mały program napisałem przy użyciu książki Pana Marcina Wiązania oraz przy użyciu elektrody do obsługi matrycy led, lecz mam nieporządany efekt stroboskopowy. Nie widać liter, tekstu, tylko wszystkie diody mrugają. Czy to jest spowodowane zasilaniem czy też błędem programu? Dorzucam dwa programy, przy których pracowałem i schemat, schemat...
Jestem w trakcie projektowania/testowania urządzenia które w uproszczonym schemacie ma wysyłać sygnał ( zapalać diodę ) po określonej w programie liczbie przerwań. Tarcza kodowa średnicy 55mm zrobiona z blaszki nierdzewnej 1mm posiada 10 rowków o szerokości 1mm oddalonych od siebie również o 1mm ( zdjęcie poniżej ) https://obrazki.elektroda.pl/9629815600_...
https://obrazki.elektroda.pl/6692889600_... Od jakiegoś czasu czułem potrzebę sterowania komputerem za pomocą niestandardowej klawiatury. W wielu przypadkach, takich, jak emulatory starych komputerów i sterowanie urządzeniami za pomocą klawiatury, można przypisać funkcję programu do klawisza na klawiaturze. Na przykład komputer ZX...
Witam Proszę o pomoc. Potrzebuję wykonać okład mierzący bardzo krótkie odcinki czasu. START podanie impulsu na któryś pin, STOP podanie drugiego impulsu na kolejną nóżkę. Procesor Atmega32 język Bascom. Jaki najmniejszy odcinek czasu mogę zmierzyć ? Jak wygląda procedura pomiaru czasu miedzy Start a Stop? Bardzo proszę o podanie fragmentu kodu. A czy...
Witam Mam płytkę według schematu poniżej: http://obrazki.elektroda.pl/9010020400_1... dodałem tylko "ręcznie" podłączenie CLKOUT PCF8563 z INT1 i przełączyłem przycisk na inny port. Do tego podłączona jest płytka testowa z MAX7219 i wyświetlaczami 0,36 cala. Całość działa poprawnie z kodem jak poniżej: [syntax=basic4gl] $regfile = "m32def.dat"...
Witam Próbuje napisać program, którego głównym zadaniem będzie zliczanie impulsów i oczywiście odpowiednie reakcje po przekroczeniu zadanych poziomów. Problem w tym, że nie bardzo potrafię sobie poradzić z wykorzystaniem wbudowanego licznika, na elektrodzie jest kilka tematów z tym związanych, ale nie bardzo potrafię to poskładać w całość :| Znalazłem...
Książki do nauki już kupiłem tj. Piotr Górecki Mikrokontrolery dla początkujących oraz Marcin Wiązania Programowanie mikrokontrolerów w języku Bascom, do tego wydrukowałem cały Help. Dodatkowo kupiłem moduł uruchomieniowy AVT 3500 oraz moduł uruchomieniowy dla Atmega16. Zmami opanuję ten cały materiał, chciałbym wykonać na procesorze Atmega16 sterownik...
https://obrazki.elektroda.pl/5452004500_... W temacie: https://obrazki.elektroda.pl/5131004200_... I już widać, że wynik jest raczej mało prawdopodobny, odchyłka 1Hz jest mało prawdopodobna w zestawieniu z danymi za 2015r. Na stronie https://obrazki.elektroda.pl/1500445700_... Efekty pomiarów zostały...
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
licznik atmega32 licznik impulsów licznik impulsów ilość impulsów
telewizor philips podłączyć wieża piła krajzegi transmitancja układu analogowego
piekarnik gorenje elektrolux pralka
Numer przepustnicy w Volkswagenie Passacie B5 - lokalizacja Opis kostek siedzenia BMW 6 Grand Coupe