jeżeli mogę sie dołączyć do tej dyskusji to chciałbym zaznaczyć, że podany przez Cobbera sposób najlepiej zrealizować za pomocą licznika T2, ze względu na możliwość ustawienia tego licznika w trybie autoładowania na całych 16 bitach; w pozostałych (T0 i T1) ta metoda będzie niedokładna - do okresu między przerwaniami trzeba będzie doliczyć czas wykonywania...
Kolego to jeszcze powiem Ci tak morze rozwiązanie prymitywne ale mniejsze prawdopodobieństwo przepalenia. Weź zwykły kabelek i polutuj go punktowo z końcami przerwanej ścieżki (za skutki powstałe w wyniku lutowania nie odpowiadam:D ) Spróbuj delikatnie zlutować.
Będzie działać. Ten układ ma po prostu mniejszy prąd-600mA a nie 2A. W zasadzie sprawdź program "po kawałku". Zakomentuj przerwanie INT0 i wartości overflow wstaw na stałe. Takie jakie sądzisz że powinny być. Sprawdź dla kilku wartości. Albo na czas pomiaru z ADC zablokuj przerwania. Albo pomiar z ADC robić co jakiś czas- ostatecznie dżojstikiem nie...
Od razu mówię, że tego nie kompilowałem a pora jest późna, więc mogą być drobne błędy. Generalnie jednak wygląda to tak: #include <avr/io.h> #include <avr/interrupt.h> volatile char a;//tak deklarujemy zmienne, które są używane i w kodzie //obsługi przerwania i w "standardowym" kodzie int main(void) { TCNT0 = 0; //wyzeruj...
Tak wygląda kod po poprawkach: #define F_CPU 4000000UL /* 4 MHz */ #include <avr/io.h> #include <avr/interrupt.h> int8_t licznik = 0; ISR (TIMER0_OVF_vect) { ++licznik; if (licznik == 100) { PORTA ^= _BV(PA0); licznik = 0; } } int main (void) { DDRA = 0xFF; PORTA &= ~_BV(PA0); PORTA |= _BV(PA1); PORTA &= ~_BV(PA2); //kofiguracja...
Ja wiem jak chcę to zrobić, ale najwyraźniej brakuje mi jakiejś wiedzy z zakresu timerów. Pobawiłem się właśnie tymi przerwaniami i coś jest nie tak. Ustawiając przerwania od OCR1A jest wszystko ok a wystarczy, że zmienię na przerwanie od OCR1B (bit OCIE1B) przy takiej samej wartosci OCR1B jak OCR1A i przy takim samym preskalerze wchodzi do przerwania...
Witam Jestem początkujący jeśli chodzi o mikrokontrolery. Jakiś czas temu zaczął mnie nurtować jeden problem. Robię projekt, który robi za termometr i zegarek oraz ma klawiaturkę 4 przyciskową do obsługi interfejsu. Później ma być jeszcze dodany czytnik kart microSD. Czujnik temperatury/wilgoci ma obsługę w postaci 1wire i wykonuje pomiar co 10sek jak...
Z pomocą manuala od St do mikroprocesora z rodziny stm8l15x napisałem taki program, który miał zapalać diodę po przekręceniu się licznika. Jednak do przerwania w ogóle nie wchodzę. Co mam nie tak, bo nie potrafię znaleźć. stm8/ #include "mapping.inc" #include "stm8l152c6.inc" segment 'rom' main.l rim ld A,#%11111111 port_init ld PE_DDR,A ld PE_CR1,A...
Tak wiec plik glowny wyglada to nastepujaco #include <at89c5131.h> #include "zmienne.h" #include "funkcje_lib.h" extern GET_KEY(); BYTE Tablica[10]; //Tablica[0] sekundy //Tablica[1] minuty //Tablica[2] godziny //Tablica[3] dni void RTC_INIT() { RCAP2H =(0-10000)>>8; // licznik zlicza impulsy RCAP2L = (0-10000); // opoznienie 10ms - sprawdzone...
Dokładnie tak jak pisze Fredy. Z pewnością po zastosowaniu jego rad twój problem zostanie zlikwidowany. Nie mniej jednak ogólna strategia programowania mikrokontrolerów (mikroprocesorów) mówi, że program obsługi przerwania powinien wykonać się maksymalnie szybko. Jeżeli twój program nie robi wiele więcej Twoje rozwiązanie z poprawkami zaproponowanymi...
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...
Mam program, tak jak poniżej, nie reaguje na przerwanie z int0 i int1. Program ma sterować silnikami od drzwi garażowych '--------------------Sterownik bramy by Peter507------------------------------' Enable Interrupts Enable Int0 Enable Int1 On Int0 Przerwanie On Int1 Przerwanie1 Dim Licznik As Byte , Licznik1 As Byte , Stan_bramy As Byte , Opcja1...
Witam męczę się już od dawna z przerwaniem od timera 0. Wymyśliłem sobie że po przepełnieniu licznika 0 ma nastąpić przerwanie. Licznik 0 liczy od 0-255 chciałem miec kontrolę na częstotliwością wywoływania przerwania więc gdy przerwanie jest wykonywane wpisuję od razu do licznika konkretną liczbę tak by miał on mniej do zliczania. Problem polega na...
Witam, W mikrokontrolerze AtMega16 mam do portu PC.3 podlaczony przycisk, chcialbym od niego odebrac przerwanie. Jednak nie wiem jak ustawić rejestr maski TIMSK? Mam taki przykaldowy programik: #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> #define D1_ON PORTC &= 0x02 //0xBF #define D2_ON PORTC &= 0x03...
Masz to zupełnie źle rozwiązane. Oczekiwanie w przerwaniu to jest kardynalny błąd! Jeśli chcesz to tak zrobić, to powinieneś mieć bufor z możliwością sprawdzenia ile jeszcze zostało do wysłania - np licznik pozostalych znaków. W przerwaniu sprawdzasz licznik - jeśli większy od zera, to zmniejszasz, wysyłasz, przesuwasz index tablicy (czy jak to tam...
Wystarczy 1 timer. W przerwaniu do licznika (lub rejestru compare) oprócz tego co masz zrobić ładujesz kolejno wartości z tablicy czasów za ile ma wystąpić następne przerwanie. Albert
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..........
Niestety... Zawsze jednak możesz testować w programie stan PINA.0 np. w przerwaniach z licznika. Albo wymienić układ na ATMega162 i skorzystać z przerwania PCINT0.
Witam Wszystkich Mam taki oto problem. Piszę w asemblerze program obsługujący interfejs UART (mk:atmega32) oraz wysyłający odebrane dane na wyświetlacz złożony z 10 matryc (5x8) LED. Napisałem program który mi odbiera dane (w procedurze przerwania) i umieszcza odebrany znak w buforze UART. Następnie w innym przerwaniu pochodzącym od licznika2 wykonuję...
Witam. Tworzę mały projekcik i natrafiłem na pewną zagwózdkę. Na początku wprowadzenie co układ ma robić i jak działać. Układ składa się z części analogowej, tzn. dwóch detektorów tonu (LM567) odpowiedzialnych za detekcję "bitów" łącza fizycznego. Chodzi o to, że rozpoznają "swoją" częstotliwość i gdy stwierdzą zgodność z obwodem czasowym, na swoim...
Witam Piszę program, który ma mierzyć długość impulsu podawanego z zew. źródła jakim jest odbiornik RC, częstotliwość impulsów to 50Hz, a ich długość mieści sie w przedziale 1ms-2ms. To mój pierwszy program na AVR w którym obsługuje przerwania zew. i mam pewien problem, program już napisałem, sprawdziłem go na symulatorze i wydaje się działać poprawnie,...
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...
Jestem początkującym z programowaniu w C.Opiszę problem : Zbudowałem licznik zwojów do nawijarki na ATMEGA 8 . Licznik liczy zwoje przy pomocy optobariery szczelinowej i tarczy z dziurką(czyli zliczanie gdy na wejściu stan niski) liczy w przód i w tył(przy odwijaniu). Jedno wejście ATMEGi zlicza impulsy (PULSELOW) , drugie to wejście sterujące aby zmieniać...
Zasymulowałem działanie tego programu w AVR Studio i mam małą zagrychę. Nie wiem czy to wina AVR Studio (raczej nie), ale przerwanie nie działa tak jak powinno :D zmieniam stan (załóżmy diody) na pinie 7. - Gdy stan ma sie zmienic z "1" na "0" to po wywołaniu przerwania tak się dzieje, ale gdy ma się zmienic z "0" na "1" to przy kolejnym przerwaniu...
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...
Proszę o pomoc w zaprogramowanie przerwania pochodzącego od licznika T0 do krótkiego programiku który napisałem.Prośba maja jest aby licznik zliczył 10s (startując równo z odliczaniem do dziesięciu które widac na wyświetlaczu siedmiosegmentowym) i włączył przerwanie które wykona program według pokazanego kodu.Są to moje początki dlatego proszę o wyrozumiałość....
Zkopiowałem sobie taki kawałek kodu: #include <avr/io.h> #include <avr/interrupt.h> #define TIMER0_INIT 175 char i; // procedura obsługi przerwania od timera TC0 SIGNAL (SIG_OVERFLOW0) { TCNT0 = TIMER0_INIT; // załadowanie do licznika wartosci poczštkowej PORTB ^= (1<<PB1); // zmiana stanu na wyjściu } //...
Witam ! Zwracam sie z prosba o rade w sprawie obslugi przerwań. Jestem na ukonczeniu projektu termometru na AT89S52 w ktorym mają działac dwa przerwania - wewnetrzne od timera ktory zapisuje wyniki 10 kolejnych pomiarow do pamieci wewnetrzej u-kontrolera oraz zewnetrzne od przycisku - microswitcha ktory powoduje wypisanie zapisanych wynikow z pamieci...
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...
prosze oto kod mam problem z ogarnięciem dlaczego nie zlicza mi sygnałów z int0 #include <avr/io.h> // dostęp do rejestrów #include <avr/interrupt.h> // funkcje sei(), cli() #include <avr/signal.h> // definicje SIGNAL, INTERRUPT #include <util/delay.h> #include <stdlib.h> #include <stdio.h> #include...
Witam. Mam pewien problem z programem. Generalnie układ posiada 3 przyciski. Kontaktron - generuje przerwania (nie sugerować się nazwą, testuję to na zwykłym switchu) P_zeruj - Przycisk od zerowania wyniku P_mierz - Jeśli jest w stanie 1 to przerwania są włączone jeśli nie to wyłączone. I tu pojawia się problem. Jeśli P_mierz ustawię w stan 0, to przy...
Witam Potrzebuje pomocy przy stworzeniu algorytmu do sterowania Triakiem wykorzystując do tego licznik mikrokontrolera 8051. Narazie wygląda to tak ze wykrywam zero napięcia sinusoidalnego 230V 50Hz czyli okres mam 20ms (dokladnie wykrywam początek sinusoidy i tylko początek bo mam transoptor prosto pod nap 230v przez rezystor podpięte bo tak życzy...
Witam napisałem prosty kalkulator w c++, obliczający przerwania dla zaokrąglonych czasów, Mi się przydał do zegarka i stopera może i Wam się przyda Program napisany pod Linux, skompilowana wersja na Windowsie nie działa Pozdrawiam Brak zdjęć, proszę to poprawić, regulamin wewnętrzny pkt. 2 (joy_pl)
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...
Witam wszystkich! Mam taki mały problemi z licznikami, mianowicie. Zrobilem prosty pomiar prędkości obrotowej poprzez pomiar czasu jednego obrotu. Sygnał doprowadzony jest do INT0 (pin3.2 - ustawiono że działa na zbocze ) co powoduje uruchomienie licznika T0, który co 1ms generuje przerwanie i zwieksza zawartosc o 1 licznika programowego. Wylaczenie...
Też użyłem s'ki + esp8266 i wynik wrzuca tutaj i u mnie też widać jak lodówka chodzi Możesz coś więcej powiedzieć? Co i jak z tym ESP8266. Ska ma wyjście impulsowe 1000imp/kWh w Lua napisałem skrypt który używa jednego wejścia jak przerwania, każde przerwanie inkrementuje licznik, dodatkowo uruchomiony jest timer na 60sekund który wysyła przez net...
Witam Wszystkich. Mam taki oto problem z Passatem B5FL 2003r. 1.9 TDI AWX 131KM. Zakupiłem go po małym wypadku, pęknięte wzmocnienie i wystrzelone czołowe poduszki. Samochód nie ma siły mniej więcej do 2 tysięcy obrotów, więc postanowiłem podpiąć go pod komputer, niestety bez rezultatu. Łączy się z wszystkimi modułami prócz silnika. Na początku odpinałem...
Niby proste, ale jak ma się mało do czynienia z STM32 to zaczyna byc jednak mylące Mam takich parę pytań bo sie lekko zamieszałem, a nie do końca wiem gdzie to może być napisane? 1. Które z przerwań, wyjątków są związane z rdzeniem, a które za tzw. zewnętrzne? 2. Które przerwania "przechodzą" przez NVIC? Każde z ustawianym priorytetem. Z tego co rozumiem...
Witajcie, potrzebuję pomocy padły mi zegary co dalej? krótko opiszę co zrobiłem, zakupiłem vag commandera , po podłączeniu go do auta postanowiłem ściągnąć i zapisać sobie eeprom oraz pin, w trakcje z czytywania połaczenie zostało przerwane i licznik padł,teraz przekręcając stacyjkę kontrolki się świecą ,prędkościomierz i obrotomierz nie działa temperatura...
Witajcie, potrzebuję pomocy padły mi zegary co dalej? krótko opiszę co zrobiłem, zakupiłem vag commandera , po podłączeniu go do auta postanowiłem ściągnąć i zapisać sobie eeprom oraz pin, w trakcje z czytywania połaczenie zostało przerwane i licznik padł,teraz przekręcając stacyjkę kontrolki się świecą ,prędkościomierz i obrotomierz nie działa temperatura...
Witam przy skrzyni biegów powinien być impulsator i od niego jest poprowadzony przewód do wiąchy i dalej do licznika ,trzeba zobaczyć czy nie jest przerwany.Powodzenia
Witam. Mam pytanie jak obliczyć czas przerwania od licznika T0 w mikrokontrolerze Atmega8. Gdy preskaler=1, licznik zaczyna liczyć od 0, oraz mikrokontroler działa na wewnętrznym oscylatorze (1MHz)??
taki sam mam i naszczescie dziala ,pewnie kabelek przerwany masz
To raczej nie wina wyświetlacza. Był trochę zaśniedziały w środku czy wilgoć i powstała w tego wyniku śniedź nie ,,zeżarła" w którymś miejscu ścieżki, być może brak zasilania segmentów jest spowodowany przerwaną ścieżką.
Witajcie moi drodzy W tym temacie poznamy podstawy przerwań i timerów w PIC18F2550 . Na początek będzie krótki wstęp teoretyczny, a potem wszystko przerobimy dokładnie na praktycznych przykładach. Do lektury tematu przyda się ogólna wiedza na temat przerwań i programowania w C, choćby taka z Arduino. Temat oczywiście nie zastąpi w pełni czytania noty...
Witam, Mam problem z przerwaniem. Chcę zrobić coś takiego, że po naciśnięciu przycisku zeruje się odliczanie. On Int0 Przerwanie Enable Int0 Config Int0 = Falling Enable Interrupts Dim I As Integer I = 0 Do Cls Lcd I Waitms 500 Incr I Loop Przerwanie: I = 0 Return W tym momencie działa to tak. Int0 (z procka) podpinam do GND . Gdy przerwę obwód...
Dzień dobry Koledzy. Piszę kod w C#.NETMF dla STM32F429I-DISC1. Próbuję zrealizować takie działanie w którym wykorzystuję metody klasy UIElement. Jedna z metod obsługuje zdarzenie dotknięcia panelu dotykowego. Druga z metod ("Invalidate();") pozwala aktualizować treść wyświetlacza. Do tego mam timer który co sekundę generuje przerwanie inkrementujące...
Witam. Chcę uruchomić licznik po wykryciu spadku napięcia na komparatorze analogowym. Nie wiem czy dobrze kombinuję :) Łączę z kanałem systemu zdarzeń komparator analogowy. EVSYS_CH0MUX=EVSYS_CHMUX_ACA_CH0_gc; I tutaj nie rozumiem troszkę. W generowaniu przerwań można określić które zbocze wyjścia komparatora ma generować przerwanie. Jak to jest z systemem...
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...
A wyłączanie nośnej. Jak ma tylko nie wychodzić na zewnątrz to trzeba wpisać: reset Tccr.0 com00 Wtedy PortB.3 jest normalnym wyjściem. A jak trzeba zatrzymać licznik: reset Tccr0.cs00 Wtedy nośnej nie ma ale wyjście PortB.3 jest dalej zajęte. Ja zresetujemy oba bity to Timer nie chodzi i wyjście jest dostępne.
Witam, stworzyłem na płytce stykowej układ, gdzie podłączyłem przyciski, LCD hd47780, rtc ds1307 i buzzer. Korzystam z bibliotek do wyświetlacza od "radzia", TWI od p. Mirka oraz ze znalezionej na tym forum biblioteki do RTC. Napisałem szybki program, który wyświetla godzinę w formie hh:mm:ss na ostatnich polach pierwszej linii. Dodatkowo dodałem przerwanie,...
No nie to żebym od razu się domagał:) po prostu myślałem, że się ktoś zainteresuje i jak nie będzie widział tutaj potrzebnych informacji to powie mi jakich (a nie od razu zmiesza z błotem:) bo ja nie wiem co jest potrzebne żeby zdiagnozować ten błąd. Po kolei. Do tego nie robisz wcięć, przez co program jest nieczytelny. Szukałem jak wygląda na tym forum...
Witam Napisałem poniższy prosty program który po 6 zmianach stanu na nóżce int0 (PB2) wykonuje przerwanie. include "tn15def.inc" .def acc = r16 ;nadanie rejestrowi r16 nazwy symbolicznej .def licz1 = r20 .def licz2 = r21 .def licz3 = r22 .org 0x00 rjmp pocz .org 0x06 rjmp timer0 .org 0x0B ; -- POCZĄTKOWE USTAWIENIA SPRZĘTOWE -- pocz: ldi...
A może jednak jakiś schemat, chociaż blokowy ? Wejścia przerwań dobrze jest podciągnąć przez rezystorek np. 10k do jakiegoś stanu ustalonego np. do Vcc albo GND. Ja spotkałem się z takim przypadkiem, ze w modyfikowanej maszynie przewód był pociągnięty od czujnika do szafy przekaźników i gdzieś tam zaplątany powracał jakimś innym dziwnym kabelkiem do...
tak korzystam z Keil uVision3. Ustawiłem stos FIQ taki sam jak dla IRQ i teraz działa jak należy. Ale po tym co napisaliści to musze jeszcze zmienić __irq na __fiq. Po wpisaniu stosu nadal nie chce sie skompilować dla __fiq. To jest moja konfiguracja: void timer_konfiguruj(){ // KONFIGURACJA TIMERA 0 T0TCR=0x02;// kasowanie licznika oraz...
To co masz teraz (tak sądzę) jest dokładnie tym, co się stosuje na codzień. Nie da się tego zrobić inaczej w oparciu o przerwanie. Hmm... A jak spróbuje uruchomić Timer0, włączyć generowanie przerwania od przepełnienia się licznika Timera0 i w tym przerwaniu Timera0 zrobić obsługę konwersji, odczytu z przetwornika ADC i zapisu wartości do kolejko FIFO?...
Witam, walczę z GPS i mam problem z Select Case: [syntax=basic4gl]Przerwanie_uart_rx: If Run <> 0 Then Run = Udr Xor 36 'jeśli w udr jest asc("$"), to run=0 If Run = 0 Then Cntr = 0 Cntr2 = 0 'licznik=0 po wczytaniu "$" Zmienna = "" End If Else Select Case Cntr Case 0 To 4 Tudr = Lookup(cntr , Gsv) 'odczyt GGA Run = Udr Xor Tudr 'powrot do znaku...
tak zgoda ale chcę liczyć ilość bajtów danej transmisji. Ramki mają od 2 do 6 bajtów. Poprzednio projekt ten zrealizowałem na Atmedze, W przerwaniach od SPI zliczałem ilość bajtów natomiast przerwanie od zmiany stanu linii SS zerowało licznik bajtów.
Witam. Mam problem z obsługą przerwań (PIC12f675). Napisałem procedury zgodnie z manualem i przykładami ale kompilator wywala mi błąd: Executing: "C:\Program Files\HI-TECH Software\PICC\STD\9.60\bin\picc.exe" -oodbierz.cof -modbierz.map odbierz.obj delay.obj rs232.obj --chip=12F675 -P -q -g --asmlist "--errformat=Error W programie są zdefiniowane trzy...
olo_3 -> to jest cały kod? ten który tu pokazałeś????? po pierwsze - gdzie masz pętlę główną po części inicjalizacyjnej programu ??? DO ... LOOP - chyba że ślepy jestem czy jak? (jeśli rzeczywiście jej nie masz to nie dziw się, że twój program wariuje bo po z tego co widać po inicjalizacji odrazu program leci do obsługi przrwania i się zapętla na śmierć)...
AVE... Jakiego PICa konkretnie chcesz użyć? Zasada pomiaru jest dość prosta: najpierw ustawia się któryś z timerów, by odmierzał 40 sekund i po odmierzeniu wywołał przerwanie. Potem tworzy się pętlę, która w nieskończoność sprawdza stan wybranego przez Ciebie pinu. Gdy jest tam logiczna jedynka, to dodajesz 1 do zmiennej. Gdy timer skończy zliczać czas,...
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...
Witam, Mam taki mały problem. Otóż posiadam Lagunę 1.8 16V z 2001 roku (nr vin, gdyby ktoś potrzebował VF1BG0M0524263013). Miałem problem z "battery charger fault". Poczytałem jednak, że wystarczy przelutowanie lutów w liczniku. Tak zrobiłem, jednak podczas powtórnego montażu przerwałem taśmę wyświetlacza od licznika :( . Postanowiłem zamówić nowy licznik...
Dzień Dobry Chciałem zapoznać się z konfiguracją przerwań zewnętrznych. I mam pewien problem. Wydaje mi się, że rejestry skonfigurowałem dobrze. Założenie jest takie, żeby wygenerować sygnał prostokątny na pinie następnie podać ten sygnał na pin który będzie odpowiedzialny za przerwanie zewnętrzne. W przerwaniu chciałbym zmieniać stan diody. Przykład...
Siła wielu współczesnych urządzeń tkwi w ich oprogramowaniu. Dotyczy to zwłaszcza sterowników przemysłowych, przekaźników programowalnych i komputerów jednopłytkowych. Korzystając z dostępnych na rynku komponentów elektronicznych nie jest trudno zbudować jakiś sterownik programowalny lub przekaźnik. Znacznie trudniej jest wykonać interfejs użytkownika...
Odniosłem sie do tego że OT przerwanie ustawił co 1ms i zlicza w nim do 20ms. Wiem, też to zauważyłem, pisałem bardziej ogólnie, ale masz racje, niepotrzebnie 'młóci' to przerwanie co 1 ms chyba że jeszcze coś będzie odmierzał. To raz a dwa to w pętli głównej bym odliczał te 20ms i od razu czytał klawiaturę a nie w przerwaniu, tam niech sobie tylko...
Witam Od niedawna programuję w asm dla PIC w środowisku MPLAB. Opanowałem już jak się wywołuje przerwania za pomocą przepełnienia licznika, lecz mam mały problem z rejestrem TMR0. Proszę, aby ktoś wytłumaczył mi jak się go używa i jak obliczyć częstotliwość, z którą wywoływane jest przerwanie. Może lepiej zilustruje mój problem to: Przyjmując, że osc...
Mam pytanie odnośnie naprawy licznika. Usterka polega na częściowym zniknięciu cyferek na wyświetlaczu (segment pixeli) co jak wiadomo jest znacznym utrudnieniem w odczytaniu wskazań. Jest to licznik do mercedesa W202 potocznie C-klasy. Słyszałem, że problemem tkwi w taśmie łączącej wyświetlacz z płytą licznika. Czy przyczyną jest przerwanie taśmy czy...
cześć chłopcy i dziewczęta :) Od jakowegoś czasu próbuje rozgryźć przerwania w procku ADUc7026 korzystając z IAR System , Wigglera i H-Jtaga. Wszystko skonfigurowane wg opisu na stronie: (EN).pdf W związku, ze korzystam z ARMa z firmy Analog Device nie mam możliwości flashowania pamięci wiec ożywając plik startowy dostępny z examplow IARa programuje...
Witam. Napisałem kod, który po doliczeniu licznika Timer0 do 250 wygeneruje przerwanie. Niestety nie mogę skompilować tego programu ponieważ kompilator zgłasza następujące błędy: test.c:25: error: static declaration of '__vector_11' follows non-static declaration test.c:24: error: previous declaration of '__vector_11' was here #include <stdlib.h>...
Skąd wziąłeś te 228 wpisywane do TCNT0? Mi wychodzi jak w pysk strzelił 28. A i to w sumie nie jest poprawna wartość bo 28 cykli trwa okres przebiegu 36kHz, pojedynczy stan okresu trwa połowę z tego(przy założeniu wypełnienia 50%). Hint - użyj trybu CTC. Programowo przepisując w przerwaniu rejestr licznika tak dużej częstotliwości przy tak małym kwarcu...
Ja rozumię jak działa watchdog. Hmm. Konstruktorzy wychodząc naprzeciw najnowszym trendom w konstruowaniu mikrokontrolerów, wbudowali do procesorów AVR układ Watchdog. Jest to specjalny licznik, zliczający impulsy zegarowe 1MHz. Gdy nastąpi przepełnienie tego licznika, generowany jest sygnał RESET by wyzerować procesor. Do programisty zatem należy...
Witam :) Zaczynam przygodę z AVR i ostatnio napotkałem następujący problem. Mam taki oto fragment programu na ATmegę128, potrzebuję obsłużyć przerwanie. Problemem jest to, że po uruchomieniu programu i wywołaniu przerwania po jego wykonaniu program nie wraca do "Main", a zaczyna od linii "jmp Reset" jednocześnie przestawiając licznik cykli o ponad 65k...
Zrób sobie jakaś sygnalizacje na pinie zgłoszeniowym, ledka czy coś będziesz wiedzial czy przerwanie przyszło czy nie. Albo jakiś licznik wejść w przerwanie. od czegoś trzeba zacząć zobaczyć po czyjej stronie jest wina.
Witam, Piszę programik na ATTINY10, gdzie każdy bajt RAMu jest cenny. Program po inicjalizacji odblokowuje przerwania i przechodzi do nieskończonej pętli while, gdzie wywołuję tylko instrukcję sleep_cpu(). Kod asemblera z pliku .lss: [syntax=asm] while(1) { sleep_cpu(); aa:88 95 sleep ac:fe cf rjmp.-4 ; 0xaa <main+0x58>[/syntax] Program nie posiada...
Coś się w tym algorytmie nie trzyma kupy. Wciśnięcie przycisku zajmuje człowiekowi czas rzędu 1-10 sekundy (ok, przy trzymaniu palca na guziku daje się zejść do 1/40). Przez 1/40 sekundy przy 8 MHz próbkowaniu można zarejestrować 200 tysięcy próbek, a bufor mamy na kilka tysięcy. No to co my tu udajemy? Jakie użyteczne dane można złapać w parę kB pamięci...
Witam, pisze program w którym wykorzystuję 16 bitowy Timer1 z Atmegi 328. Najpierw konfiguruję go tak: [syntax=vbnet]Config Timer1 = Timer , Prescale = 64 'Kwarc 18.43MHz, 1/18430000 * 64 = 3.473us Enable Timer1 On Timer1 Impulsuj 'ISR[/syntax] a potem mam procedurę przerwania której zadaniem testowym jest wygenerować przebieg prostokątny: [syntax=vbnet]'---------------------ISR....
Otwórz sobie pdfa od procesora zajrzyj w sekcje Timer2, poczytaj, przejdź do opisu rejestrów i poustawiaj jak uważasz. Ogólnie dla liczników wybierasz prescaler czyli podział między zegarem (16Mhz dla Arduino) a wejściem licznika. Timer2 jest 8bitowy ma 256 wartości, więc masz kolejny podział. Jak potrzebujesz precyzyjnie to są tryby gdzie możesz zrobić...
Witam. Używam przerwania INT1i TIMERA1 do odmierzania czau trwania stanu wysokiego na wejściu INT1 przez zliczanie odcinków czasu 400us podczas trwania stanu wysokiego na wejściu INT1. '****timer1******** Config Timer1 = Timer , Prescale = 64 On Timer1 Pomiar_czasu Load Timer1 , 50 Enable Timer1 Stop Timer1 '*****wtrysk***** On Int1 Wtrysk Config Int1...
Elektronika cyfrowa rozróżnia tylko 2 stany: 0 i 1. W standardzie TTL 1 logiczna to napięcie bliskie 5V, zaś 0 logiczne to napięcie bliskie masy. Między tymi napięciami (które są akceptowane z pewnym marginesem) jest obszar wzbroniony, którego napięcia mogą być rozpoznane zarówno jako 0 jak i 1 (w dużej mierze losowo). Zaś napięcie zmieniające się...
U mnie był przypadek nie związany z 400 V. Ale z zamianą fazowego [L] z N. I jak mnie uratowało uziemione N. Stało się to przy wymianie licznika. W mieszkaniu jest N przewód dodatkowo uziemiony. Do tego uziemienia jest podłączenie odgromnika do linii telefonicznej. Możliwe że pracownik zrobiłby zamianę N z L, gdyby nie instalacja telefoniczna. Dokonywał...
Problem dotyczy wykorzystania wejścia licznika w trybie Input Capture wraz z DMA. Celem jest pomiar częstotliwości sygnału i jego wypełnienia. Na samym początku dodam, że jest jedno ograniczenie, które związane jest z wykorzystaniem pojedynczego wejścia licznika. Oczywiście, można skonfigurować tryb PWM Input, ale niestety w tym przypadku będą wykorzystane...
Witam. Co wy na to ? Bardzo fajne, raz wklepać a potem używać, ale mam pytanko, co robi kompilator kiedy z tego dzielenia wychodzą części ułamkowe? Część ułamkowa jest obcinana, bo i tak nie da się jej wpisać w 8-bitowy rejestr licznika. Chcąc osiągnąć jeszcze większą dokładność, można próbować na mniejszej skali preskalera (np. 256) i/lub większej...
Witam Przerwanie tak obrazowo tłumacząc: Czytasz książkę, nagle dzwoni telefon. Odbierasz telefon, rozmawiasz. Po zakończeniu rozmowy wracasz do lektury. Procesor wykonuje jakiś kod, dzwonek tel. to jest zgłoszenie przerwania - więc wykonuje kawałek innego kodu - rozmowa tel. Po wykonaniu przerwania wraca do wykonywania kodu. Przy czym wznawia wykonywanie...
Witam, Symulacja przesyłania/odbioru przez SPI działa w debugerze AVR Studio 4 gdy nie jest czynna obsługa przerwania przepełnienia licznika1 ISR(TIMER1_COMPA_vect), ale po przepełnieniu licznika zerują się wszystkie zmienne. Jeżeli obsługa przerwania jest aktywna (nawet pusta) to symulacja interface SPI nie działa. Brak wtedy sygnału zegarowego na...
Jestem w trakcie tworzenia licznika rowerowego z funkcją alarmu przeciwkradzieżowego. W cały układzie mam akcelerometr, który wykrywa większe zmiany przyspieszenia. Chciał bym żeby to wykrywanie odbywało się podczas wyłączonego licznika. Powerdown mode odpada ponieważ wyłączone jest praktycznie wszystko i nie miał bym jak wykryć większych przyspieszeń....
Co do Twojego pierwszego problemu to prawdę mówiąc nie wiem, ale zwróć uwagę na to że po zakończeniu obsługi przerwania zawartośc R16 i R17 jest zamieniona: ... .org 0x0012 rjmp t1Ovf ... t1Ovf: push r16 push r17 in R16, PORTC ldi R17, 0b00000011 eor R16, R17 out PORTC, R16 pop r16 ; R17 pop r17 ; R16 reti ... Może to wina własnie tego. Co do Towjego...
a w miejscu obecnego licznika założą Ci puszkę łączeniową. "Założą" czyli kto założy? Dostawca? Nie wprowadzaj w bład - w rozwiązaniu jakie proponujesz, jak i w każdym innym, dostawca nie będzie ingerował w instalację odbiorcy i nie będzie w niej zakładał żadnych puszek w miejscu licznika. Jeśli zostanie zabrany licznik, to zostanie przerwana ciągłość...
Przewód z czujnika idzie przez skrzynkę na podszybiu po stronie kierowcy do licznika. Należało by sprawdzić ciągłość tego przewodu (żarówką 21W). Może być zaśniedziały w tej skrzynce na złączach lub złamany na silniku (przewody lubią robić się sztywne pod maską). Złącze niebieskie licznika, pin nr 10, tutaj masz podłączony czujnik ciśnienia oleju.
Dało by radę podać ścieżkę co dokładnie trzeba by zmienić w liczniku ?? Gdybym ja to robił dla siebie to zaryzykował bym w DB w kalkulatorze licznika wejście w naprawę/wymiana części lub coś w tym stylu. Przecież chyba jest w DB jakaś procedura wymiany/naprawy/kalibracji licznika? Ewentualnie jeśli znasz vin dawcy lub vin auta z takim licznikiem, to...
Poniższy licznik został początkowo stworzony do obsługi naświetlarki. Czas może być ustawiony w zakresie od 1 do 90 minut poprzez przyciski góra/dół. Przyciskiem on/off rozpoczyna odliczanie. naciśnięcie go ponownie powoduje przerwanie procesu w dowolnym momencie. Po przekroczeniu czasu odliczania urządzenie uruchamia sygnał dźwiękowy. Naciskając przycisk...
Liczniki częstotliwości to popularne i proste w budowie urządzenia. Poniższy projekt oparty jest na mikrokontrolerze AT90s8515 i liczniku częstotliwości Lattice ispLSI2032. Podczas gdy mikrokontroler zajmuje się komunikacją i wyświetlaniem danych, ispLSI2032 zlicza nadchodzące impulsy i skaluje je dopasowując do 36bitowego licznika. Po zakończeniu...
Też miałem takie zdarzenie, iskrzyło zdrowo i odmówili założenia licznika. Wykonałem połączenie rur; tej przed licznikiem i tej za licznikiem, napisałem oświadczenie, że wykonano połączenie wyrównawcze i założyli licznik. A powód był taki, Bardzo słabe "zero" na przyłączu kablowym, tak słabe, że podejrzewam, że zerowa żyła była wręcz przerwana. Teraz...
Witam, mam problem z wyżej wymienionym licznikiem, otóż samo urządzenie działa, ale po włożeniu do podstawki nie zlicza nic. Kontaktron jest sprawny na 99,9%, zwiera prawidłowo gdy magnes jest obok, z tego wynika, że przewody nie są przerwane, bo mierzyłem miernikiem na stykach podstawki licznika. Bateria jest nowa, na stykach licznika jest 2.27V. Sam...
W moim przypadku segment = cyfra. Czy kolega może skopiować linka.Domyślam się , że w przerwaniu jest np prosty licznika.
dopadł mnie ponownie problem z licznikiem.... trochę innego gatunku niż poprzednio ale wkurzający. Licznik odcina zasilanie tzn "miga" ale tak jak by ktoś go włączał i wyłączał Początkowo myślałem że to jakiś luz na wtyczce, ale tutaj jest wsio ok. Później obstawiłem dławik za bezpiecznikiem - ale wydaje się być ok. Naciskanie płytki w okolicach rezystorów...
Witam, Uruchomiłem sobie Timer jako licznik zewnętrznych impulsów pochodzących z wejście pinu GPIO. Licznik działa prawidłowo, ale chciałem policzyć też ilość przepełnień tego licznika. Niby wszystko działa, ale zawsze na starcie, zaraz po uruchomieniu Timera występuje przerwanie od przepełnienia. Tak jakby jakaś flaga byla ustawiona. Potem już wszystko...
Częstotliwośc wynosi 255xczas jednokrotnego przepełnienia licznika.
Instrukcje wykonywane będą zgodnie z głównym zegarem (8MHz). Preskaler dotyczy tylko licznika.
Jeżeli do OCR wpiszesz wartość niższą niż bieżąca wartość CNT to porównanie zostanie pominięte. W tym celu timer albo powinien mieć buforowanie rejestru, tak, że nowa wartość OCR jest wpisywana gdy CNT jest równe zero, lub musisz to zaimplementować sam, uaktualniając OCR w chwili przepełnienia licznika.
Cześć, dziękuję wszystkim za odpowiedzi. Generalnie problem rozwiązany, aczkolwiek muszę jeszcze zobaczyć do kodu asemblera bo wydaje mi się, że poprzedni kompilator coś nachrzanił i dlatego był taki cyrk, a w sumie ciekawy jestem. Korzystałem wcześniej z kompilatora dołączonego do CodeBlocks, jednak po tym co działo się w opisywanym wątku zmieniłem...
Witam Postanowiłem przetestować wszystkie przerwaniaw ATMEGA32. Program ma działać następująco: naciskam klawisz podpięty pod INT0 (podciągnięty rezystorem 1kom do Vcc) i licznik zlicza mi to naciśnięcie. Naciskam drugi klawisz podpięty pod INT1 (podciągnięty rezystorem 1kom do Vcc) i licznik zlicza mi to naciśnięcie. Teraz jeśli nacisnę klawisz podpięty...
Zmodyfikowałem przerwanie do takiej postaci: ISR(INT1_vect) //przerwanie od złącza PD3 (INT1) { if( ((PIND&0x08)==0)&... ) //jeśli został zwarty pin... { TCCR1B |= _BV(CS10); //start timera (przerwanie przez zrównanie) znacznik=1; //oznacz że rozpoczeło się liczenie...
Pin P2.0 generuje zbocza, a P3.3 ma je wychwytywać i generować przerwanie. Oczywiście P3.3 skonfigurowany jako CT16B0_CAP0 oraz ustawiony LPC_IOCON->CT16B0_CAP0_LOC dla P3.3. Pętla główna się kreci bo widzę, że zmienna i jest inkrementowana natomiast zmienne licznik, licznik2, przerwanie zawsze mają wartość 0 zatem program nigdy nie skacze do przerwania....
Ostateczeni zrobiłem to w ten sposób: //ustawienie przerwania cli ldi r16,(1<<CS11) ;ustawienie preskalera na 8 out TCCR0,r16 ldi r16,(1<<TOIE0);ustawienie przerwania gdy licznik taki sam jak A out TIMSK,r16 ldir16, 0xff out TCNT0, r16 sei // nop bo prescaler i trzeba poczekac kilka cyklow w zaleznosci od niego nop nop nop...
Witam wszystkich!!! Mam programik na którym próbuje zrozumieć przerwania zewnętrzne i nie moge pojąć :D . #include <REG420.H> #include <stdio.h> #define OKRES (-46080) unsigned char volatile tim = 0; unsigned char volatile licznik0 = 0, licznik1 = 0, licznik2 = 0; void main(void) { ET0=1; //zezwolenie dla przerwań od...
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...
Żeby zrobić za pomocą Timera - to nie możesz używać trybu PowerDown tylko Sleep - żeby właśnie Timery mogły działać to po pierwsze. W taki trybie jednak będziesz miał nieco większy pobór prądu niż w pełnym PowerDown. Więc wszystko zależy na ile ma wystarczać bateria o ile jest to coś zasilane z baterii. Bez PowerDown'a na pewno będzie to sporo krótszy...
Poniższy program dla wersji ATMega32 usiłuję przerobić na wersję dla ATMega644p /która posiadam/. Program ma za pomocą przerwań realizować opóźnienia. Niestety robi się to wszystko skomplikowane ponieważ jak wiadomo szczególnie system przerwań i timerów jest dużo bardzie rozbudowany niż na niższych modelach procesorów. Jeśli ktoś jest w stanie mi pomóc...
W mim projekcie używałem przerwań IRQ z timera0 i wszystko ładnie działało. Jako, że tych przerwań jest naprawdę sporo, procesor traci dużo czasu na wywołanie przerwania, dlatego postanowiłem zrobić przerwania FIQ. Moim przewodnikiem jest książka luciana bryndza. przerwanie wygląda tak: void FiqTimerHandler(void) __attribute__ ((interrupt("FIQ"&...
Mam nastepujacy problem, probuje wywolac przerwanie zewnetrzne od przycisku ktore uruchomi mi licznik w celu eliminacji drgan stykow. Wszystko dziala dla przycisku podpietego do wyprowadzenia A0 ale dla przycisku podpietego do wyprowadzenia C13 juz nie dziala. Przy debagowaniu widze ze ciagle wchodzi mi w obsluge tego przerwania mimo ze przycisk nie...
Witam! Mam na początku pytanie: Co jest pierwsze przy pojawieniu się impulsu na ICP, przerwanie od niego czy przepisanie zawartości licznika do rejestru ICR1? Planuję zrobić licznik czasu trwania impulsu i wymyśliłem coś takiego (na razie schematycznie): [syntax=c] ISR(przerwanie od przepelnienia licznika) { wartosc = 0; marker = 0; } ISR(przerwanie...
Witam, prosiłbym bym o pomoc, żeby ktoś wytłumaczył, albo podał przykład jak skonfigurować przerwania zewnętrzne w tym mikrokontrolerze bo walczę z tym i nic mi nie wychodzi i zaczynam podejrzewać, że to procek jest zepsuty, albo tej sztuki jeszcze nie opanowałem :D na początku pisałem własne kody, ale po nieudanych próbach w końcu wkleiłem gotowca,...
Poniżej wrzucam kod odnośnie przerwań. Używam 4: 1) Od konwersji ADC 2) Od przyjścia znaku na USART 3) Od przerwań zewnętrznych 4) Od przepełnienia timera do update zmieannych Po krótce ma on działać tak: jeżeli pojawi się coś na USART to przerwij i sprawdź co to za znak. Zrób odpowiednią funkcję. Jeżeli jest to jeden ze specjalnych znaków to przychodzi...
witam, mam podobny problem, nie wiem co robię źle, chcę zapalić diodę podłączoną do PB0 za pomocą przerwania od przycisku podłączonego do PC7 lub 8. po wgraniu kodu przerwanie od SYSTICK ładnie działa, zapala i gasi na zmianę diodę na PB1, natomiast dioda na PB0 swieci się cały czas i nie ma żadnej reakcji na naciskanie przycisku.... poniżej kod.
Witam, Przerabiam książkę STM32 Aplikacje i ćwiczenia w języku C Pana Marka Galewskiego. Dotarłem do ćwiczenia 12c, w którym do sterowania diodami mają być użyte TIM1 oraz TIM2. TIM1 może generować przerwanie ogólne oraz przerwanie z kanału Compare. Dzięki temu łatwo możemy sterować dwoma diodami. Natomiast TIM2 może generować tylko przerwanie ogólne...
Witajcie moi drodzy Zapraszam na kolejną część mojego tutoriala PIC18F2550 i kompilatora SDCC . W tej części zademonstruję jak używać wyświetlacza 7-segmentowego z PIC18F2550 . Kod obsługi wyświetlacza będzie oczywiście napisany w oparciu o przerwania i timery . Cały proces powstawania układu na płytce stykowej oraz programu na PICa przedstawię krok...
nie mierz częstotliwości, tylko OKRES! V=o/t V - prędkość w m/s t - okres jaki upłynął pomiędzy dwoma następującymi po sobie impulsami z czujnika o - obwód koła w metrach Tak działają fabryczne liczniki, dzięki temu mierzą już bardzo małe prędkości. dodatkowo przejechany dystans otrzymasz dodając z każdym impulsem obwód koła do całkowitego dystansu...
Witam. Przerwań timerów dawno już nie używałem, ktoś zechciałby przypomnieć, w jaki sposób wyliczono w poniższym programie wartość Timer1, równą 64566? Fragment programu do sterowania fazowego (włączanie triaka na pewien okres czasu), autorstwa Kamila Kozłowskiego: $crystal = 10000000 (...) Inttim1: 'co ok 97us Portd.0 = Onofflmgl.0 'zapalanie/gaszenie...
Witam. Próbuje napisać zegarek na PICu. Używam oscylatora 4 MHz. Nie wiem jak zrobic odliczanie jednej sekundy. Pisałam o tym na innym forum i otrzymałam taka odpowiedź: "Jeśli używasz kwarcu 4 MHz to ustaw preskaler na dzielenie przez 64. W takim przypadku do licznika/timer'a będą przychodziły impulsy o częstotliwości 15625 Hz (1000000 / 64 = 15625)....
To jest fragment kodu, którego używałem , żęby zrobić obsługę licznik, ale nie działa w symulacji $sim $regfile = "m8def.dat" 'Informacja dla kompilatora. $crystal = 8000000 'Też dla kompilatora,zastosujemy kwarc zewnętrzny 10MHz. Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E =...
Witam, mam pewien mały problem z komparatorem analogowym w procesorze Attiny2312 a mianowicie program nie przechodzi do obsługi przerwania które wg mnie powinno powstać kiedy następuje zmiana sygnału wyjściowego.Do wejścia AIN0 jest doprowadzony sygnał z potencjometru a do wejścia AIN1 sygnał z PWM poprzez układ uśredniający RC (PB3).Oto listing. #define...
Witam ,napisałem sobie następujący program który ma pełnić funkcję prowizorycznego zegarka. W obsłudze przerwania timer inkrementuję sobie sekundy , ale gdy chce wyświetlić je w main ciągle wyświetla zero na led. Natomiast gdy ostatnią linijkę kodu zamieszczę w obsłudze przerwania działa ok . W związku z tym moje pytanie jak zrobić, żeby przekazywać...
Witam! Mam taki dość nietypowy problem. Kontroler ma reagować na jedno z trzech przerwań: TIMERa 0 i dwóch zewnętrznych (czujki ruchu). Te przerwania zewnętrzne zliczają liczbę reakcji czujek, natomiast TIMER 0 ma odmierzać czas i dzięki niemu co kilka sekund mają być wyświetlane statystyki. Bez TIMERa 0 wszystko działa ok, ale statystyki lecą cały...
Dzięki za zainteresowanie tematem. Rzeczywiście mogłem lepiej opisać problem na samym początku. Już naprawiam błąd. System wygląda w ten sposób, że Atmega128 taktowana sygnałem o częstotliwości 14.745600 MHz (F_CPU = 14745600) podłączona jest bezpośrednio do 3 osiowego drivera silników krokowych TB6560. Konkretnie mówiąc pin 3 portu D podłączony jest...
Zalozenia ktore podales sa niezbyt precyzyjne. Podejrzewam, ze do sterowania serwomechanizmami sygnaly PWM wcale nie musza na siebie zachodzic a z faktu, ze maksymalne wypelnienie PWM wynosi zaledwie 10% wynika iz moglbys wystawic nawet 10 PWM-ow. Podsumowujac idea jest taka: w pierwszych 2ms (w okresie 20ms) obslugujesz 1-szy PWM (na pozostale PWM-y...
Witam, mam napisany spory program, w którym są min przerwanie FIQ i wszystko działa pięknie. Niestety pojawiła się konieczność obsługi odmierzania czasu co 0,125 ms. Początkowo miałem obsługę przerwania wrzucona do FIQ razem z przerwaniami zewnętrznymi. Ale żeby FIQ wykonywało się możliwie najszybciej chciałem przerwania z timera0 ustawić jako IRQ....
Witam! To mój pierwszy post, więc proszę o wyrozumiałość. Skonstruowałem licznik impulsów - częstościomierz, w oparciu o projekt AVT5025 (Mikroprocesorowy wykrywacz metali). Sonda wykrywacza umieszczona będzie przy bramie wjazdowej na parking i jeśli pojawi się nad nią samochód to na danym pinie mikrokontrolera pojawi się stan wysoki. Układ ma po prostu...
Witam, Probuje potestować przerwania IRQ dla TImera. Podbralem sobie przyklady Bryndzy i po malych przerobkach nie za bardzo o dziala. Po samych ustawianiach Timera wchodzac do petli while flaga T0IR jest ustawiana, czyli funkcjonalnie jako tak śmiaga. Ale niestety nie działa jeśli probuje czy zostalo to zhandlowane jako IRQ ( iniclajlizacja parametrow...
Chciałbym zaprezentować prosty licznik Geigera, jaki ostatnio wykonałem. Urządzenie oparte jest o powszechnie znaną radziecką tubę STS-5. Lampa ta jest ciekawa, ponieważ jest stosunkowo czuła. Jako element sterujący zastosowałem mój ulubiony mikrokontroler rodziny 8051 typu AT89C2051 z typowym rezonatorem kwarcowym 12MHz. Oprogramowanie zostało napisane...
Co do eliminacji drgań. Można też tak: wciśnięto klawisz, wykonujesz akcje z nim związaną i kasujesz jakiś licznik i teraz choćby program odczytał kolejne wciśnięcie klawisza (drgania) to ignorujesz to przez czas drgań styków. Brzmi zawile, ale jest banalne: [syntax=c]if ((!(PINB & col)) && (licznik > 20 )) //warunek czy klawisz jest wciśnięty, tzn...
Przepraszam ze nie odpisałem ale nie miałem zupełnie czasu. Wymyśliłem coś takiego (program ma dzialac na Atmega99PA czestotliwość zegara to ok 100kHz: [syntax=c] #include <avr/interrupt.h> . . . /*przerwania*/ volatile unsigned int licznik=0; uint8_t przerwanie=1; ISR (INT0_vect) { if (przerwanie==1) { TCNT1=0; EICRA=_BV(ISC01)|_BV(ISC00); /*Reakcja...
Robię mały projekcik, w którym potrzebuję 4 kanałów PWM. Chciałem to rozwiązać programowo, niestety nie udaje mi się ożywić mojego timera, a konkretniej przerwanie (zarówno overflow jak i compare) nigdy się nie wykonują. Umieściłem w funkcji obsługującej to instrukcję gaszenia diody, lecz program nigdy tam nie doszedł. Nie mam pojęcia co robię źle,...
Mam ustawiony timer w Input Capture Ustawienie timera z przepełnieniem licznika IC_Timers 40000 (po prostu potrzebowałem równy czas też dla odmierzania zegarka i innych bajerów do odmierzania czasu ) przerwanie co 20ms. Od lewej okres, czas stanu wysokiego, aktualny timer ICR1, poprzedni timer ICR1. Po obrazku widać ze mam problem kiedy występuje przerwanie...
Witam, Program ma na celu zmierzyć amplitude impulsu PWM, wypełnienie i częstotliwość. O ile z pomiarem wypełnienia i częstotliwośći nie mam problemu, to pomiar amplitudy nie do końca działa. Szczegóły: PWM 1 kHz. 5 < D < 95 % Na zboczu narastającym sygnału PWM uruchamiany jest TIM3 który trigeruje co 10 us pomiar ADC, które poprzez DMA zapisuje...
drodzy panowie, może panie :-) Sprawa jest taka, mam układ nad którym już od kilku tygodni ślęczę, coś w rodzaju komputera pokładowego do pojazdu jednoścladowego hehe. Generalnie wszystko jest ok z wyjątkiem... Zastopowałem się przy liczniku kilometrów. przerwanie INT0 zlicza ilosc obrotów koła (jedna linia programu) przerwanie INT1 jest przerwanie...
Podczas pisania programu dla mikrokontrolera AT90S2313 napotkalem na dosc osobliwy problem z przerwaniami zewnetrznymi. Mianowicie przerwanie wywoluje odbiornik podczerwieni (przez przerzutnik Schmitta) sterowany oczywiscie dioda IRED. Dzialanie tego systemu mozna porownac do bariery podczernieni. Problem lezy po stronie programowej. Po odblokowaniu...
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...
Witam, pisze programy w asemblerze na mikrokontrolery AVR. Chciałbym po zgłoszeniu przerwania przejść do procedury jego obsługi ale juz nie wracać i aby program mógł dalej działać prawidłowo. Wiem, że po przejściu do procedury obsługi przerwania zerowany jest znacznik I w SREG, mam pytanie czy wystarczy poprostu ustawic flage piszac SEI w procedurze...
-jak można za pomocą takiego licznika wyliczyć :) sobie 1 sekundę. np jeśli użyłbyś sobie kwarcu zegatkowego 32,768kHz to jeśli chciałbyś za pomocą Timera0 uzyskać przerwanie (czyli przepełnienie licznika) co 1 sekundę to obliczasz to tak: 32768(częstotliwość twojego rezonatora) podzielić przez 1024 (to wartość preskalera jaką możesz ustawić dla tego...
Problem rozwiązany!!:D Wystarczyło zmienić parametr gate z external na internal (sterowanie pracą programową) W trybie external licznik startował programowo jednak przytrzymanie lini INT0 do masy powodowało sprzętowe zatrzymanie licznika. [/img]
Mamy pomysły. Użyjesz sprzętu który ma oba interface sprzętowe. Zdeklarujesz sobie bufory do wysyłania/odbierania jako bajtowe o odpowiedniej pojemności. Do tego liczniki danych w buforze. Program ma działać samoczynnie - ma odebrać dane do bufora po rs i wysłać dane samoczynnie z bufora po i2c po wyzwoleniu oczywiście. I2C zaraz po pierwszym przerwaniu...
Nie trzeba wylaczac przerwania od nadajnika , wystarczy jakas zmienna (np licznik wyslan) ktory po wyzerowaniu juz nic nie robi w przerwaniu ( po ostatnim wyslaniu jeszcze tylko raz pojawi sie przerwanie ) tak przynajmniej mi sie wydaje bo procek nie zapchal sie przerwaniami . przerwania od pustego bufora nie wykorzystuje bo wysylanie wyzwalam zapisem...
Do arturt134 Wyłączenie przerwania na czas odpowiadający pracy powiązanej z przerwaniem( oczywiście nie globalne wyłączenie przerwań, co byłoby po prostu odsuniętym przerwaniem bez zagnieżdżeń) jest dobrym rozwiązaniem. I skanowanie klawiatury zamiast przerwań też jest dobre. Ale nie mogę się zgodzić co do uniwersalności Twojego rozwiązania. Jest przejrzyste...
nie jestem specem w "c" ale wartosc wpisywana do rejestru licznika T1 ((to chyba ten ktory u Ciebie ciągle odlicza) - powinna być wpisywana odrazu po wejsciu do podprogramu obsługi przerwania a nie na jego koncu. (tym bardziej ze program wykonuje sie rozną liczbę cykil). pamietaj o tym , ze mikrokontroler ma stale adresy wektorów przerwan. Tego nie...
Witam Wiecie może czy i jak obsłużyć wejście izolowane a konkretnie przerwanie od INT1. Chce podłączyć swój układ przez wej. izolowane , a program w DSMie żeby wykrywał przerwania generowane przez sygnał z mojego układu. (np. żeby na każde przerwanie gasił lub zapalał diode testową) Czy możliwe jest tez np. przy pomocy licznika odpytującego co określony...
mam sobie oto taki kod DMEQU P3.1 PPEQU P3.3 PBEQU P3.0 ZBEQU 30H ;zmienne odpowiedzialne za częstotliwość migania diodek ZPEQU 31H ZDEQU 32H ORG 000H ; PO RESECIE JMP MAIN ORG 003H JMP INT ORG 00BH JMP ODT0 ORG 01BH JMP ODT1 MAIN:MOV ZD, #1 MOV ZB, #1 MOV ZP, #1 SETB DM SETB PP SETB PB SETB EX0 ;PRZERWANIA OGOLNE+T1+T0+INT0 SETB ET1 SETB ET0 SETB...
To Ci powinno ruszyć, napisałem kiedys pod Keila uVision3 V3.63. Dziala z Makieta Olimex'u LPC-2378-STK-A: // (LPC2378) mandaryn 2009 #include <lpc23xx.h> int flaga=0; // 0 -> dioda OFF, 1 -> dioda ON __irq void przerwanie (void) { if(flaga==0) // Gdy dioda wylaczona { FIO2SET|=0x00000001; // Wlaczenie diody...
Witam. Na początek dodam ze używam pakietu IAR i Wigglera oraz procesor LPC2103. Wykonałem odpowiednie ustawienia Timer0 (kod poniżej) i mimo, że T0TC odlicza w dol to program nie wchodzi do funkcji obsługującej przerwanie "irq_T0_Handler()". Czy ktokolwiek wie co robię źle? #include <NXP/iolpc2101.h> #include <stdio.h> #include <intrinsics.h>...
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,...