do mierzenia okresu sygnału najlepiej wykorzystać licznik i przerwanie zewnętrzne. Sygnał pomiarowy wzmocnić tak aby uzyskać przebieg prostokątny o stromym nachylaniu zboczy. Następnie podać sygnał na wejście przerwania zewnętrznego (np. detekcja zbocza 1->0). W przerwaniu włączyć licznik, wyjść z przerwania i oczekiwać na następne przerwanie w którym...
...Jednak w jaki sposób poprzez ten timer zrealizować pomiar wypełnienia? Połącz wejście T0 z wejściem przerwania zewnętrznego INTn i wykorzystaj to przerwanie oraz licznik T1 , do pomiaru wypełnienia.Wszystko zależy od tego , jak "szybki" przebieg masz zamiar mierzyć. Piotrek
wykorzystać przerwanie
Chyba najlepiej za pomocą licznika wyzwalanego w zewnętrznym przerwaniu. Kolejne przerwanie zatrzymuje licznik.
To dwa sygnały na timery jako liczniki a trzeci sygnał na przerwanie zewnętrzne. A trzeci timer jako zegar.
Okazało się, że jest kilka wersji ATMEGA32 i akurat włączenie przerwanie licznika TIM0 było w innym miejscu rejestru.
Witam, czy ktoś może podpowiedzieć czy sygnał zewnętrznego przerwania musi być utrzymany w stanie ( np. niskim) do czasu wywołania procedury przerwania czy może zostać zwolniony. przykład dotyczy ATmega128 (kwarc 14MHz) gdzie uruchomione są dwa przerwania od licznika TIMER1 oraz zewnętrzne przerwanie INT1(aktywne zbocze opadające). Sygnał przerwania...
W sumie jeśli pierwszy bajt wyślesz jako 0b01010101 a program rozpozna, że rozpoczęła się transmisja to dałoby się conajmniej dwukrotnie zmierzyć jaki czas trwa stan wysoki i na podstawie tego można już określić jaką prędkością transmisji nadawca się posługuje. Z tym, że trzeba taki bajt synchronizujący wysłać - a nie zawsze będzie to możliwe. Można...
Ja bym proponował na początek przerwanie zewnętrzne INT w którym liczysz impulsy, oraz przerwanie timera w trybie CTC co około 1s w której jak kolega (at)bochnio wspomniał będziesz zerować licznik. Kolejny krok to mniej więcej tak:[syntax=c]if(licznik > 6) POTRB |= (1<<PB0); // ustaw stan wysoki gdy przekroczy wartość else POTRB &= ~(1<<PB0);...
Liczenie impulsów samo w sobie jest bezsensowne.. jak już to liczy sie impulsy przez określony czas albo podczas jakiegoś warunku itp, możliwości jest tak dużo że bascom niezostał w to wyposażony (bynajmniej ja tyle wiem). impulsy najłatwiej można zliczać za pomocą zewnętrznego przerwania, przez czas działania timera, timer uruhomić, uruhomić przerwanie,...
Stosy to dla mnie czarna magia, wiem tylko, że każdy przeskok wymaga zapisania adresu zwrotnego, ale nic poza tym :oops: No przy takim podprogramie to 1 megabajtowy stos to za mało :D, to się chyba nazywa rekurencja: [syntax=basic4gl]Petlapomiarowa: If Impulsy < 15 Then 'Jesli nie ruszono, wyswietlaj dalej napiecie Gosub Pomiaradc If Konwersja >...
Wyprowadzenie PWM na PA0 jest niemożliwe. PWM działa tylko na pinach przypisanych przez producenta ( w LITE1 jest to PA2-PA5). Odnośnie pytania drugiego to PWM jest trybem pracy licznika także i przerwanie jest od licznika a nie ze źródła zewnętrznego. pozdrawiam JG
Pisząc o przerwaniach zewnętrznych jak rozumiem miałeś na myśli to, że pojawiający się sygnal z transoptora wywoła przerwanie. Też o tym myślałem, tylko że potrzebuję jeszcze odmierzyć dokładnie czas po którym ma zostać wyzwolony triak. Chciałem to zrobić właśnie licząc przerwania. Mógłbym też jak myślę i wcześniej pisałem wykorzystać licznik timer'a....
Obsługa przerwania ma być najkrótsza. Najlepsza analogia do życia, to gdy dzwoni telefon, to tylko go odbierzesz, porozmawiasz i koniec, nie będziesz nieruchomo stał, aż zadzwoni następny raz. Podobnie w procesorze są przerwania uzależnione od różnych zdarzeń, zmiany stanu zewnętrznego pinu, opróżnienia bufora transmisji wyjściowej, otrzymania bajtu...
Przerwanie wywoływane przyciskiem, oraz drugie, od timera, które liczy czas. W momencie pojawienia się przerwania zewnętrznego, zapamiętujesz licznik w tablicy, zerujesz go i czekasz na następne.
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...
Proszę zauważyć że czas pomiaru nie jest tym samym co częstotliwość pomiarów czy czas powtarzania pomiarów. Przy sygnałach zmiennych trzeba dążyć ,by pomiar był możliwie krótki i do tego służy dzielnik przetwornika . Częstotliwość pomiarów i start konwersji można zainicjować dowolnie wybranym zdarzeniem np przepełnieniem licznika czy przerwaniem zewnętrznym.
Witam !!! 3. Co to są banki rejestrów jak je zmieniać. - w 8051 sa cztery banki rejestrow (po 8 rejestrow w kazdym banku) zmienia sie je (banki) poprzez odpowiednie ustawienie bitow RS1 i RS0 rejestru statusowego PSW. Bank rejestrow najprosciej mowiac to zbior wlasnie 8 rejestrow w ktorych mozemy przechowywac argumenty (dane ) dla wykonywanych instrukcji...
Zły pomysł, zły kod. Użyj jednego timera w trybie zliczania impulsów zewnętrznych i podłącz wyjście wentylatora do jego wejścia. Drugi timer zaprogramuj na zgłaszanie przerwań co 1 sekundę (timer 0 tego nie potrafi), w procedurze przerwania odczytaj wartość licznika, wyzeruj licznik i wyświetl wartość. Nie jest to idealne rozwiązanie, ale o niebo lepsze...
Chyba trochę skpmplikowałes swoje urządzenie... Licznik T0 już po 2 cyklach włącza przerwanie :!: Ma dodatkowo wyższy priorytet, niż przerwanie zewnętrzne, które uruchamia ten licznik! PRZERW_INT0: SETB TR1 SETB TR0 POP ACC POP ACC MOV A,#jakies_miejsce PUSH ACC MOV A,#00H PUSH ACC RETI Więc rozkazy MOV A, #jakieś miejsce; PUSH ACC leżą na pograniczu...
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...
ale nie wiem jak podejsc do przerwan zewnetrznych (przyciski). Przyciski mam podlaczone pod: P3.3 (Int1), P3.5(T1), P3.4 (T0), P3.2 (Int0). Jak to jest mozliwe ze sterujac multiplekserowo wyswietlaczami segmentowymi wysylajac aktywny bit na port P3, moge jednoczesnie zglaszac zewnetrzne przerwania (z przyciskow)?? Możesz. Ale dlaczego przyciski mają...
witam INT0przerwanie zewnętrzne końcówka INT0 INT1przerwanie zewnętrzne końcówka INT1 TIMER0przerwanie przepełnienia licznika TIMER0 TIMER1przerwanie przepełnienia licznika TIMER1 Gdy używane są przerwania INT0 lub INT1, można określić warunek zgłoszenia tego przerwania. Należy w tym celu użyć instrukcji SET / RESET i ustawić odpowiednie bity w rejestrze...
Schematu nie widzę. Napisałem Ci już jakie tranzystory możesz tam zapakować. Kosztują <0,50PLN/sztukę w TME, więc tanio. W dokumentacji do wyświetlaczy sprawdź maksymalny prąd i na początek ogranicz prąd maksymalny do tej wartości (prawdopodobnie 20-60mA). Program do napisania od nowa. 1. Po co zewnętrzny prescaler, jeżeli licznik TIM0 ma wbudowany...
Mhy, zastanawiam się co tu kolega tworzy ;) Zrobiłem niedawno licznik impulsów (dalej miernik prędkości obrotowej). Kod jest maleńki. Do samych testów użyłem licznika impulsów zewnętrznych oraz jednego timera. Timer ma przerwanie co 50ms. W jego przerwaniu inkrementowana jest zmienna, gdy jej wartość zrówna się z 20 przerwaniami to odczytuje stan licznika...
Pewnie pozostanie Ci tylko allegro lub sklepy internetowe. W moim eks-wojewódzkim mieście też ciężko coś bardziej specjalizowanego kupić. Edit. W temacie uszkodzonego procka. Może przerwanie zewnętrzne na PD5, a w przerwaniu steruj i czytaj licznik T0 ,,na piechotę"?
Zdaje sobie sprawę że powinno się dobierać procesor do zastosowania ale czasem trzeba się dostosować. Co do inkrementowania to nie wyraziłem się jasno chodzi oto ze zegar tyka co 0,5 s i gdy stan licznika startuje od 11 to gdy się przepełni 79999 razy mam prawie idealną sekunde dzięki temu w obsłudze przerwania zewnętrznego wystarczy odczytać stan licznika...
Ja coś podobnego zrobiłem na ATmedze16. Podłączyłem enkoder pod wejścia generujące przerwania zewnętrzne i odpaliłem tajmer, zliczam różnice czasu między przerwaniami. W AT90S2313 masz przerwania zewn z PD2 i PD3. w obsłudze przerwania zewn. robisz: prędkość = (obwód_koła / rozdzielczość_tarczy_enkodera) / różnica_czasu_między_przerwaniami lub pomiar...
Bardzo złe podejście. Trzeba tu zastosować jeden układ licznikowy, jako Timer do odmierzenia czasu 1s i drugi jako licznik zdarzeń zewnętrznych. Przerwanie od Timera, zajmującego się czasem wzorcowym powinno być zgłaszane co 1s. W przerwaniu należy pobrać i zapamiętać w zmiennej globalnej zliczoną liczbę impulsów. Potem trzeba wyzerować licznik. W przerwaniu...
Witam, potrzebuję wykonać prosty projekt na arduino i chciałbym tylko skonsultować pomysł. Potrzebuję zliczać dokładnie ilość impulsów i wysyłać stan licznika dokładnie co 100ms. Chcę podawać impuls na wejście przerwania zewnętrznego (jednego z dwóch) i w przerwaniu inkrementować zmienną licznika. Do tego ustawić drugie przerwanie na timerze które wykona...
Istnieją dwie cyfrowe metody pomiaru częstotliwości: 1. Pomiar ilości impulsów wzorcowych w trakcie trwania okresu sygnału mierzonego. Konkretnie mierzymy imp. wzorcowe w trakcie trwania połowy okresu - zwykle, gdy jest poziom wysoki. W takiej sytuacji jeżeli zmierzysz N imp. wzorcowych w trakcie połowy okresu, to: Tx=2*N*Tw, gdzie Tx okres przebiegu...
8 sekund mi nie wystarczy, usypiam procesor na 15 sekund, ale w finalnym projekcie będzie to 30 s lub nawet minuta. Wtedy należy: - zastosować programowy licznik przerwań, - lub wykorzystać zewnętrzny układ, co zapewne jest nieakceptowalnym rozwiązaniem.
Kilka pytań i spraw, ktore być mogą okazać się pomocne: Z wartości przeładowania T0 (D8EF) i faktu że przerwanie chodzi 100 razy/sek domyślam sie ze używasz kwarcu 12MHz . Jednak jesli ma to byc równo 100Hz to zauważ że podana u ciebie wartosć początkowa jest za mała o 1, bo powinno byc: T0pocz = FFFFh - (Fxtal / 12 / Fto) + 1 = D8F0h (a nie D8EFh)...
No z delay na pewno nie :). Ustaw sobie w przerwaniach timer programowy co 1s, a w pętli głównej możesz zrobić "liczydełko" reagujące na zbocza. W każdym tyknięciu timera w przerwaniach zapisz ile impulsów zliczyło i wyzeruj licznik. To co zapiszesz to w zasadzie gotowy wynik, który co 1s będzie aktualizowany. To chyba najprostsze rozwiązanie. Można...
Po pierwsze pochwal się jakimś listingiem z tego co napisałeś i nie działa , gdzieś mi się już przewinął przed oczami taki projekt na elektrodzie i jak pamiętam autor również próbował wymusić napisanie programu . Między szukaniem pomocy a wyręczaniem się innymi jest cienka granica . Tym bardziej zastanawia mnie to ,że cały układ można przetestować na...
Witam Mam do napisania program do licznika T1 ze zliczaniem impulsów zewnętrznych z obsługą przerwań. Bez NPM tylko jako przerwanie. Proszę o pomoc.
Tak jak w tytule, poniżej kawałek kodu. Wygląda to tak że w pętli głównej jest polecenie "Wait" a INT0 ma przerywać tą pętle, i tu jest pytanie czy przerwie "Wait'a" ?? Dim Licznik As Byte Enable Interrupts On Int0 , Przerwanie , Nosave Licznik = 0 Do If Licznik = 1 Then Pind.0 = 0 Pind.1 = 1 Wait 20 Pind.0 = 1 End If If Licznik = 2 Then Pind.0 = 1...
Powinieneś zrobić to tak: Sygnał doprowadzać do zewnętrznych przerwań INT i gdy nastąpi przerwanie zatrzymać licznik skopiować zawartość licznika, wyzerować licznik i puścić od nowa. a w głównej pętli przeliczasz i wyświetlasz wartość częstotliwości
Faktycznie, nie pomyślałem o tym. Niestety lcd mam podłączony 8-bitowo. W takim razie będę musiał przepiąć optotriak do innego portu. A jakieś pomysły co do tego mrygania żarówki? Możliwe że to triak padł? Dodano po 3 Ok pozbyłem się mrugania, podłączyłem optotriak do PD5 i ładnie mi wyświetla i włącza optotriaka. Pojawił się jednak inny problem. Kod...
Przerwania są zarezerwowane na zjawiska zewnętrzne zachodzące w nieprzewidywalnym czasie.... No raczej nie masz racji . Wewnętrzny licznik też może wystawić przerwanie i to w ściśle przewidywalnym czasie .
Napisałem przecież wcześniej że nie działa obsługa przerwania zewnętrznego. Dopóki uC nie wejdzie w stan uśpienia przerwanie działa i zmienia licznik. I znowu rozpoczyna od 20 aż dojdzie do 0 i sie usypia. Tyle że po tej czynności na przewanie nie reaguje, a powinien. I nie sprawdzam od tak sobie, raczej linijka po linijce. Korzystam też z książki i...
[syntax=c]#include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include <stdlib.h> #define D7 7 //dioda podłączone do pinów portu D unsigned int counter=10110; int main(void) { DDRD = (1 << D7); PORTD=(1 << D7); // tutaj sobie zaświecasz diodę, ale do pojedynczych bitów to używaj "|=" zamiast samego...
Czas otwarcia wtryskiwaczy mierzysz za pomocą 1 timera, ale nie tak od razu. Są dwie metody: pierwsza to podpięcie (przez transoptor) wtryskiwacza do wejścia timera i wejścia przerwania - po wykryciu przerwania (początek stanu niskiego) startujesz timer, przestawiasz stan aktywacji wejścia INT na przeciwny i procek wraca do pętli głównej, po ponownym...
Bez przerwań nie da się zrobić absolutnie niczego, co jest bardziej skomplikowane. Dzięki zastosowaniu przerwań mikrokontroler nie musi stale sprawdzać, czy zaszło jakieś zdarzenie. Ciągłe sprawdzanie czegoś takiego (ang. polling) spowolniłoby program. Ponadto kolejny kłopot to odczytanie danej flagi z układu zewnętrznego (np. przez SPI/I2C) to dodatkowe...
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...
Witam, to co wykorzystuję: -ATmega16 -4 przyciski PA -LCD - PB -Diody - PD dodatkowa sygnalizacja binarna Do tej pory uruchomiłem układ i dowolnie go modyfikowałem - bez przerwań. Teraz chciałbym wprowadzić wielopoziomowe menu z którego będzie można (w dowolnej chwili) zmienić wykonywaną funkcję czy modyfikować zmienne - czyli bez przerwań się nie obejdzie....
Dzięki za odpowiedzi. Rzeczywiście nie zauważyłem, że jedna pętla wpływa na drugą. Podłączyłem jeden silnik do portu D, drugi do portu A i problem się rozwiązał. Wszystko śmiga aż miło. Ostrej krytyki niestety nie rozumiem (może dlatego, że jestem bardzo początkujący w dziedzinie programowania uc). Domyślam się, że chodzi o długi czas wykonywania pętli...
Witam, próbuję skonfigurować licznik TIM2 w STM32L152RE, aby zliczał impulsy z pinu w trybie alternatywnym AF1 na PA0 i generował przerwanie po zliczeniu 10. Stan wysoki na linii w przerwaniu od SysTick. Niestety, TIM2 po zliczeniu impulsów nie generuje przerwania i nie ma żadnej reakcji od niego. Czy ktoś spotkał się z takim problemem? Funkcje do obsługi...
W uzupełnienu do poprzedniej wypowiedzi. Można i tak: Dwa przerwania zewnętrzne: INT0 i INT1. Jedno wykrywa zbocze narastające i włącza licznik, drugie wykrywa zbocze opadające, zatrzymuje licznik i sprawdza czas trwania impulsu. Większą dokładność uzyskałbyś stosując przerwanie INTx i przerwanie przechwycenia ICP.
Najczęściej z enkodera mamy dwa sygnały, A i B... Sygnały te są przesunięte względem siebie... Ja najczęściej robię to tak, że A mam podpięte pod przerwanie zewnętrzne a B pod dowolny pin... I teraz kiedy generowne jest przerwanie w jego obsłudze sprawdzam stan na linii B... Jeżeli np. jest niski to zwiększam licznik o 1 a jeżeli wysoki to zmniejszam...
Hehe... no to następny pomysł - a jak szybko obraca się pętla główna programu? Nie wiem jak masz skonstruowany program, czy w ogóle jest? Dużej precyzji czasów chyba nie potrzeba, nie ma różnicy, moim zdaniem, czy przytrzyma się przycisk 1s czy 1,1s, więc może ten pomysł wsadzić do pętli głównej i bez przerwań. Wtedy w zależności od szybkości pętli...
Mam problem z przerwaniem od Timera0. Chodzi o to by Timer0 zgłaszał przerwanie w trybie pracy z porównaniem. Jest to tryb Clear Timer on Compare Match (CTC). Licznik zlicza zdarzenia zewnętrzne i w momencie zliczenia do zadanej wartości ma zgłosić przerwanie i zacząc liczyć od zera. Aby to osiągnąć do rejestru OCR0 wpisuję wartość do której licznik...
Nie wiem czy dobrze celuję :wink: (bo jakoś te częstotliwości mi pasują do standardów w podczerwieni) ale czy nie lepiej zastosować scalone odbiorniki podczerwieni serii TSOP. A jeżeli nie to można podłączyć to pod licznik który zlicza impulsy z pinu. Trzebaby jeszcze go uruchomić (np: przerwaniem zewnętrznym) oraz drugi licznik który będzie odmierzał...
Witam, podłączyłem do portu INT1 przycisk i chciał bym żeby zbocze narastające wywoływało przerwanie, w którym zwiększam licznik o 1. Ustawiłem na MCUCR jedynki dla ISC11 oraz ISC10 co odpowiada wykrywaniu zbocza narastającego, włączyłem przerwanie na INT1 oraz odblokowałem globalnie przerwania, ale niestety licznik inkrementuje się w kółko gdy na port...
zależy co rozumiesz przez m-bus. Jezeli to cos do liczników energii to nie mam pojecia, jezeli mod-bus to tak. Nie rozumiem po co masz coś wykrywać. Od tego jest sprzęt. Jezeli chcesz programowo to robić to raczej proponuje nie używać przerwań zewnętrznych (bo będziesz dostawać fantomowe sygnały) tylko skanować z częstotliwościa kilka razy większa niż...
Kiedyś napisałem program do odbioru RC5 na '51, poniżej zamieszczam jego kod źródłowy. Program ten odbiera kod i wysyła go na rs-232. Jest całkowicie odporny na piloty pracujące w innych kodach. :) Dodatkowo cały program wisi na przerwaniu zewnętrznym i przerwaniu z licznika, więc program główny sprawdza tylko flagę informującą o odebraniu. Dodatkowo...
Pierwszy i bardzo poważny problem zauważyłem w funkcji TIMER1_COMPA, jest nim linijka rjmp uspij. Gdy się wykona, to przerwania pozostaną zablokowane, oraz kilka bajtów na stosie zostanie uwięzionych - głównie adres powrotu z przerwania. Można temu zaradzić poprzez wstawienie pop + pop + sei przed rjmp. Drugi problem, to karygodna pętla główna - dławienie...
Oj...prawda o programowym UARCIE nie jest do końca taka, jaką przedstawił kolega BoskiDialer . Transmisja nie wymaga blokowania uC, ponieważ można wykorzystać licznik do odmierzania zegara bitowego w transmisji. Transmisja nie musi odbywać się w trybie półdupleksowej. Da się zrobić full-duplex, mało tego, możena zrobić nawet różna prędkości w nadawaniu...
Nawet jeżeli nie generuje jednego tylko więcej, to po jakimś czasie licznik powinien zliczyć do 5, w moim przypadku nic się nie dzieje, przerwanie się nie wywołuje.
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...
Masz błędny kod. Jak chcesz by program działał jak trzeba to musisz wiedzieć co robi każda linijka. Włączasz przerwanie od przepełnienia timera0, a nie maż funkcji do jego obsługi. Deklarujesz funkcję do obsługi przerwania zewnętrznego, a nie masz funkcji obsługi i nie zezwalasz na to przerwanie. Na moje oko to po uruchomieniu timera procesor się zresetuje...
Witam, mam pewien problem z przerwaniami, otóż zastosowałem przerwanie zewnętrzne do zliczania obrotów i przerwanie timera do zliczania czasu w sekundach, ale po włączeniu przerwań timera, zobaczyłem w debuggowaniu że przerwania zewnętrzne zliczają do około 4. Czy jest to możliwe że przerwania się gryzą ze sobą? Proszę uzupełnić tytuł postu- zgodnie...
1.Każdy Timer działa niezależnie- to jest licznik sprzętowy działający jak zewnętrzny układ. To że został "wsadzony" w układ scalony OBOK procesora to tylko żeby użytkownikom było wygodniej. Dlatego nazywa się to "układem peryferyjnym", peryferiami itp. Takich "układów peryferyjnych" w mikroprocesorach jest dużo. Nie tylko liczniki ale też przetworniki...
25 PWM-ów - nie powinno być problemu :] Widzę to tak: 1) za sterowanie odpowiada zmienna 32 bity (z czego 25 wykorzystane). 2) Każdy bit zmiennej to jedna żarówka. Powiedzmy, że bit = 1 oznacza zapaloną żarówkę. 3) zakładamy, że 32 stopnie regulacji wystarczą. 4) Największy problem - przerwanie wywoływane 50*32 razy na sekundę. Najprościej by tu wykorzystać...
Trzeba było wykorzystać elektronikę wbudowaną w zegar do generacji impulsów co sekundę, w celu odmierzania czasu przez procesor. Tak, ale w takiej sytuacji trzeba programowo zliczać te impulsy za pomocą przerwania zewnętrznego. Już samo wejście do przerwania to jakieś dwa cykle maszynowe do tego trzeba kilkunastu cykli na wykonanie licznika. Język...
Witam, .......... Czy arduino uno posiada może wbudowany licznik który działa niezależnie od programu? Tak aby przerwaniem co sekunde mógłbym sprawdzać jaka jest wartość w liczniku który liczyłby impulsy? TAK! Arduino posiada ich trzy, funkcjonujące totalnie niezalenie od wykonywanego programu, z pewnymi jednak warunkami lub ograniczeniami. Są to :...
Po przeczytaniu o "prawdziwych" urządzeniach zacząłem się zastanawiać czy to co dotychczas udało mi się napisać na uC to było w prawdziwych urządzeniach czy tylko takich na niby. Ja stosowałem zazwyczaj metodę polegającą na sprawdzaniu stanu na pinie co pewien okres czasu( przerwanie od licznika) i gdy ten przestał się zmieniać uznawałem, że guzik został...
W zasadzie nie potrzebujesz JP13. To chyba taki ukłon w stronę 8051 z dwoma przerwaniami zewnętrznymi. AVRy mają przerwania PCINT na prawie wszystkich pinach i w momencie jak wciśniesz przycisk i tak możesz wywołać przerwanie. Niemniej w ogóle nie powinieneś robić tego na przerwaniach zewnętrznych (poza wyjątkową sytuacją gdy wprowadzasz uC w głębokie...
$include (REG51.inc); dołączenie definicji rejestrów uK (kompilator RA-51 Raisonance) NAMEOBSLUGA_AT24C64 ;Poniżej definicje stałych użytych w programie FIXEDADDR EQU0A0H;stała częśc adresu pamięci 24C64 USRADDR EQU0;ustawiana przez użytkownika część adresu (wartości 0..7) MEMSIZE EQU2000H;liczba bajtów dla 24C64 PMEMSIZE EQU32;liczba bajtów na stronę...
Czy istnieje możliwość konfiguracji timera w następujący sposób? Ustalana jest stała częstotliwość zegara licznika. Na wejście (TIOA/TIOB) podawany jest mierzony zewnętrzny sygnał. Każde wybrane zbocze tego sygnału powoduje przepisanie chwilowej wartości licznika do rejestru 'capture'. Wyzwalane jest przerwanie, w którym następuje odczyt tej wartości.
Rzeczywiście to pomogło. Zastanawia mnie, dlaczego jak licznik był w trybie normalnym wywoływane było przerwanie... Bo przerwanie jest od porównania. Gdy TCNT1 = OCRA1 to jest wywoływane przerwanie. A wytłumaczysz mi dlaczego OCR1AL ma wynosić 124, a nie 125? Bo tak jest napisane w datasheet. Zresztą zauważ że taka sytuacja jest sensowna. Zwróć uwagę...
Tygrysek1220 0. Mam nadzieję, że nie zrobisz sobie krzywdy. Praca z napięciem sieciowym to nie są żarty. 1. Poszukaj/poczytaj na temat sterowania fazowego i triaków. 2. Zmontuj układ z triakiem i żarówką, z separacją galwaniczną i detektorem przejścia przez zero. 3. Napisz program, który będzie konwertował wartość napięcia wejściowego na punkt włączenia...
a może jakiś zewnętrzny mechaniczny licznik czy inne tego typu rozwiązanie podpiety do maszyny, schowany pod obudową, którego ustawi sie na przerwanie obwodu po osiągnięciu limitu. Pojechałem ..... Pomysł jest ale czy się da ?
Ok, nie zauważyłem, umieść ten kod w znacznikach syntax. Zapisuj te konfiguracje z wykorzystaniem przesunięć bitowych. Nich timer jeśli już zmniejsza wartość licznika ustawionego na ustawiony odcinek czasu. Wykorzystaj tryb CTC do odmierzania czasu. Do wykrywania impulsu wykorzystaj przerwanie zewnętrzne.
(at)tmf - dziękuję za miłe słowa :) Właśnie takie było założenie co do grupy "docelowej". Myślę, że jeszcze długo ATmegi i ATtiny będą punktem startowym dla hobbystów ze względu na nawał informacji w Internecie i mocno zakorzeniony pogląd jakoby wszystko inne było drogie/trudne itd. W sumie chciałem, żeby w poradniku było trochę więcej nawiązań do...
1ms spokojnie przerwanie zewnętrzne Ci zliczy (piny 2, 3) https://www.arduino.cc/reference/en/lang... dalej myślę, że musisz odliczać czas np. licznik 1 i przerwanie powiedzmy co 1 sekundę (konfigurujesz przez rejestry TIMER1), tam sobie liczysz sekundy i za każdym razem (może być w loop() ) przeliczasz...
Witam Zaprojektowałem ściemniacz oparty na procesorze ATMEGA8 sterowany ręcznie (przyciskiem) lub zdalnie za pomocą Modbus'a. Wszystko już prawie działa, a prawie dlatego że: w trakcie ściemniania i rozjaśniania podłączona żarówka potrafi mignąć. Czasami jest ok a czasami mignie, bardzo szybko - np. ściemnia ściemnia mignie i dalej ściemnia i w drugą...
Konfiguracja timera '51 jest inna : [syntax=basic4gl]Składnia: CONFIG TIMERx = COUNTER | TIMER , GATE = INTERNAL | EXTERNAL , MODE = 0 | 1 | 2 | 3 gdzie: x0 – TIMER0, 1 – TIMER1, Opis: TIMER0 i TIMER1 mogą pracować jako liczniki impulsów zewnętrznych gdy pierwszy parametr jest ustawiony jako COUNTER. Impulsy zliczane muszą być dostarczane...
Sygnał przerwania może być wywołany z jednego z peryferiów (np wbudowane liczniki, adc, twi itd), albo właśnie przez nóżkę procesora (w wypadku atmega8 bodaj są 2 zewnętrzne przerwania) Co do arduino pewnie musisz użyć biblioteki.
Dzień dobry, drodzy forumowicze Niedawno zacząłem programować dla dobrego przyjaciela w AVR Studio 7 lub Microchip Studio. Nie mam żadnych problemów z rozwojem jako takim, ale obecnie nie mogę znaleźć żadnych rozwiązań następującego problemu: Celem jest sterowanie oświetleniem modelu za pomocą mikrokontrolera lub Tiny. Model posiada odbiornik, który...
Wszystkie liczniki stoją. ich bity PRESCALE są wyzerowane. Może poprostu symulator nie potrafi tego zasymulować.
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...
Tak próbowałem wyświetlić zmienna licznik jest ciagle 0. Nie mam rezystora zewnętrznego. Tak poprawiłem kod ale nadal jest to samo czyli 0. [syntax=c]#include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <hd44780.h> volatile unsigned char licznik = 0; //liczba przepełnień Timera1 volatile uint16_t reszta...
Witam, Oglądając ostatnio dokumentację megi32, zauważyłem, że do portuC, dokładniej do końcówek PC7 i PC6 można dołączyć zewnętrzny kwarc zegarkowy. W jaki sposób używając tego kwarcu zegarkowego uzyskać przerwanie wywoływane co 1sekundę? Czy trzeba ustawić jakiś prescaler na te 32,768kHz czy nie? Żeby zmienić źródło zegara licznika na zewnętrzne wiem,...
Podłącz debugger, ustaw pułapkę i sprawdź poprawność konfiguracji IO. Oto cały program: https://obrazki.elektroda.pl/5557892600_... Program rozszerzony o licznik: https://obrazki.elektroda.pl/6969730000_... https://obrazki.elektroda.pl/7717592000_...
1 kHz ??? Będzie ciężko - to jest 1ms, czyli sporo mniej niż skan. Chyba trzeba przejść przez zakiś zewnętrzny szybki licznik, ale nawet jak zliczał będzie zewnętrzny licznik, to rozumiem że interesuje cie wykrywanie jakiegoś konkretnego wyniku. Na SIMATICU czegoś takiego nie robiłem. W Mitsubishi robi się to tak, że szybki zewnętrzny licznik zlicza...
Pojawił się kolejny problem z odliczaniem czasu :/ .. Spróbuję uchwycić istotę problemu nie wrzucając całości kodu: 1. Wykożystuje licznik T0 i T1; licznik T1 zlicza impulsy a T0 odmierza czas = 1s, po wystąpieniu 31 przerwania (overflow0) od T0 (tj. 1s) wartośc licznika T1 jest wyświetlana na LCD, na czas obsługi przerwana zatrzymuje oba liczniki aby...
KEYBOARD_KEY_TIMEOV skąd się to bierze? Ogólnie widziałem że używasz real-time do domierzania opźnień. Jak I2C się pogubi to i program stanie. Przesiądź się na arduinową funkcje millis() lub w przerwaniu od jakiegoś timera zrób własne liczniki czasu, niezależne od zewnętrznego zegara. millis() zwraca czas w ms od uruchomienia systemu, w dużej zmiennej....
idea działania multipleksowanego wyświetlacza jest następująca: najpierw wygaszacz wszystkie segmenty (p1 = 255) i tranzystory, potem ustalasz odpowiednią kombinację segmentów (p1 = xxx) a na końcu włączasz odpowiedni tranzystor i tak przy każdej cyfrze najlepiej taką procedurkę zrobić sobie w przerwaniu timera1 przykład.... hmm: (napiszę tak na szybko)...
rozumiem, że gdy przerwanie bedzie miało taką postać: ISR(INT0_vect){ // np. inkrementacja globalnego licznika _delay_ms(1000); } to przy jednym naciśnięciu uzyskam zwiększenie licznika o jeden? Jeszcze jedno pytanie. Czy przy taktowaniu zegara wewnętrznego 1MHz dla mC Atmega16 będzie to delay równy dokładnie jednej sekundzie?
Źle obsługujesz enkoder. Poczytaj o enkoderze kwadraturowym - enkodery nie działają tak jak założyłeś, że na jednym pinie masz impulsy jak kręcisz w jedną stronę, a na drugim, jeśli kręcisz w przeciwną. Używają najczęściej kodu Gray’a - więc zacznij od poprawnej obsługi enkodera. Druga sprawa - wewnętrzne podciąganie zapewnione na portach ma zbyt dużą...
Czyli nic nie zrozumiałeś z linkowanego programu. A szkoda... Zasada działania (podobnie jak dla wielu innych programów), to wykonywanie krytycznych sekcji w przerwaniach. Pętla główna może być zupełnie pusta. W programie głównym: 1. Zdefiniuj sobie 8 zmiennych (Parametr_x), które będą odpowiadały wartościom włączenia każdego z kanałów. Np. 100,47,198......
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, dołączę się do tematu aby nie zaśmiecać forum. Moim problemem jest drganie styków przycisku aby wywołać przerwanie int2. Przyciskiem włączam i wyłączam optotriak MOC3041 który z kolei załącza sterownik lampy sodowej 70W przez triak. Problem jest taki: mimo, że zrobiłem programową obsługę drgań styków to działa ono jedynie bez obciążenia - czyli...
Witam kolegów mam taki problem potrzebuje programu do mierzenia prędkości obrotowej silnika. Idea pomiaru jest znana, wykorzystywany jest do tego transoptor obiciowy. Ale to nie jest celem mojego wywodu. Potrzebuje krótkiego pomiaru obrotów zbudowanego na licznikach. Oscylator zewnętrzny 8MHz. Układ już wykorzystuje globane przerwania pochądzące od...
Fajnym i szybkim sposobem jest podpięcie czujnika do przerwania zewnętrznego. Wykryte w ten sposób zbocza opadające i odpowiedni licznik programowy (to są wolne przebiegi) pozwala jednoznacznie odczytać kod.
Witam, Nic nie przeszkadza w tym, że to bascom. Prescaler jest ustawiony na 64 więc zanim licznik zdąży zwiększyć swoją wartość to uC już załaduje do niego odpowiednią wartość. W Twoim programie jest pare błędzików, które może nie wpływają na dokładność pomiaru, ale są głupie :) konfigurując porty, dla pewności możesz napisać: set ddrb.2 set ddrb.3...
Mam pytanie do wszystkich doświadczonych kolegów. Chciałbym zbudować urządzenie na bazie ATTiny2313 współpracujące z nadajnikiem/odbiornikiem radiowym i komputerem po RS232 jednocześnie (w sensie układowym oczywiście). Z mojej wiedzy (a na razie nie ma jej zbyt wiele) nie jestem w stanie zdeterminować, czy jest to możliwe. Jeśli tak to bardzo proszę...
W tym procesorze "sleep mode" jest to jedyny tryb uśpienia, w którym zegar jest włączony oraz działają peryferia (np. licznik), które mogą wysyłać przerwania, które by wybudzały procesor. Chciałem wprowadzić zewnętrzny zegar o dość małej wartości, aby mikrokontroler w czasie uśpienia pobierał minimalną ilość prądu.
Proponowałbym przyjrzeć się Dallasowi DS89C450. Ma dwa UARTy, 64 kB Flash, 1kB SRAM, 13 źródeł przerwań (w tym 6 zewnętrznych) 16-to bitowe liczniki, 33 MIPS (przy pełnym taktowaniu), bootloader (programowanie przez UART), może pracować od -40C.
zewnętrzne przerwanie zewnętrzne przerwanie atmega atmega przerwanie zewnętrzne
silnik szczotkowy odzyskanie pamięci xperia czujnik oleju vectra
Parametry tranzystora A1860 (2SA1860) - szczegóły techniczne i zastosowania Paski na obrazie kamery: przyczyny i rozwiązania