Witam. Zbocze narastające to masz jedno przerwanie w momencie gdy stan zmienia się stan wejścia z niskiego na wysoki a przy stanie wysokim będziesz miał wiele przerwań tak długo jak będziesz miał stan wysoki na tym wejściu.
Dzięki wszystkim za odpowiedzi, na początek spróbuję zmienić bramkę na AND, po wstępnym przeanalizowaniu układu to powinno wystarczyć. Może zadam głupie pytanie, ale czym są owe przyciski NO/NC? Balu, falling/rising edge sprawdzałem, to był pierwszy pomysł który przyszedł mi do głowy, niestety, ku mojemu zdziwieniu nie zadziałał poprawnie (ale nie pytaj...
Jak rozumiem chcesz defakto dzielić częstotliwość przebiegu jeżeli tak to nic prostszego: pętla for inkrementowana stanem wysokim np. i po osiągnięciu określonej ilości powtórzeń zmiana jakiegoś pinu "wynikowego" na stan przeciwny. problem się zacznie jak będziesz chciał podzielić przez liczbę inną niż wielokrotność 2 nie mam pomysłu jak takie dzielenie...
No Dobra program juz prawie napisałem i głowiłem sie nad wersja ze zmiennym PWM+f... ale z tego co mi odpisałes to wnioskuję ze coś tu mi nie gra... A nie możnaby programowo realizować ten restart co 80ms? Moze napisz dokładniej co to ma być a coś doradzimy :) Pozdro No wlasnie o to chodziło by nie restartorwać tego zewnetrznie bo chyba prosciej zaimplementowac...
https://obrazki.elektroda.pl/3496920600_... Jednym z pierwszych projektów, które zrealizowałem mając 9-10 lat było pudełko z kilkoma LEDami, przełącznikami i potencjometrem - taka tam wprawka w lutowanie. Drugim była migająca strzałka LED z kitu bodaj Jabela. Pierwszym, który zepsułem lutownicą transformatorową (której nie polecam)...
Witam Mam problem. Robię układ, który ma wejście na którym jest stan niski lub wysoki. Jeśli jest stan wysoki to uruchom przerwanie ale tylko 1 . Jeśli jest stan niski to tak samo 1 raz. Ale stan może utrzymywać się nawet przez godzinę a przerwanie ma wysyłać instrukcję radiem tylko 1-2 razy i ma wyłączyć transmisję. Dodatkowo jeśli jest stan niski...
Witam. Kilka razy miałem problem z linią MCLR w PIC18 PIC12, jeśli linia była skonfigurowana jako wejście i MCLR podciągnięte do plusa zasilania poprzez rezystor podciągający wewnętrzny to mikrokotroler się resetował po jakimś czasie pracy. Czy ktoś miał podobny problem? Druga sprawa to przerwanie od komparatora w nocie dla PIC18F46K20 jest napisane...
Pin Change Interrupt masz zarówno jak pin przechodzi ze stanu wysokiego w niski jak i z powrotem, kiedy pin powraca z niskiego w wysoki. Mając trzy wentylatory każdy może losowo wyzwolić przerwanie stanem niskim jak i powracając w stan wysoki. Soft niby odsiewa te powroty w stan wysoki. Tylko powiedz po co on testuje te trzy warunki? Napisz obsługę...
Opracowanie jakie znalazłem na temat pamięci układu SPI w internecie nie mego autorstwa dlatego zacytuję: "Zastosowania i funkcje pinów układu są następujące: Linia CS służy do uaktywnienia pamięci przez układ nadrzędny z nią współpracujący (np.mk). Uaktywnienie pamięci dokonuje się poprzez wystawienie na wejście CS niskiego poziomu sygnału....
witam jest proste w asm ale w c też nie powinno być problemu. Przerwania INT0 i INT1 mogą być wyzwalane zmianą stanu napięcia wysokim lub stanem niskim . Odpowiednio ustawić bit w rejestrze MCUCSR. Ustawić bit aktywujący przerwanie w rejestrze GICR. mierzysz czas przez odczyt TIMERa
Procek ma wygenerować TRZY poziomy napięcia? No to potrzebna jest protezka hardwareowa w postaci dwóch rezystorów wymuszających stan pośredni a pomiędzy stanem wysokim i niskim trzeba ustawić pin w stan HiZ. Nie, 2 sygnały (patrz do kodu) przesunięte względem siebie o 90 st. Faktycznie ten wykres ma się nijak, ponieważ odnosi się do napięcia za h bridgem,...
Zmieniłem konfigurację ISC00 i ISC01 na wszystkie możliwe i procesor nie wybudza się - jedynie gdy dam wyzwalanie niskim poziomem. Po włączeniu zasilania, przerwanie można raz wywołać a potem procesor usypia się na stałe. Czy coś robię źle ? Dodano po 9 Chyba już rozumiem kolegę co napisał poprzedniego posta. Ja chcę budzić przerwaniem z INT0 a jak...
Witam, Mam taki problemik z transmisją pomiedzy '51 a '52. podłączone sa bezpośrednio do siebie, wykorzystuje sprzetowego UART'a. Dodatkowo potrzebuje jeszcze dwie linie CTS i RTS, wiec wykorzystałem dwa porty z czego CTS jest na przerwaniu zewnetrznym INT0 Programik pisze w Bascomie. Ma on pracować tak że że '52 wywołuje '51 wysokim stane na swoim...
Witam :D Mam problem z obsługą przerwań. Otóż poniżej zamieszczony program w przypadku normalnej pracy wyświetla na wyświetlaczu "1" w przypadku wykrycia stanu niskiego na porcie INT1 wyświetla "0". Niestety program wykonuje 2 - 3 przejścia pomiedzy stanem niskim --> wysokim --> niskim -->... i następnie przestaje reagować na zmianę stanu portu...
Przerwanie źle działa - reaguje n zmianę stanu jednak tylko raz na kilkanaście zmian. Jeżeli uruchamiam procesor ze stanem wysokim na wejściu INT a INTEDG = 0 (zbocze opadające) to po starcie procedura obsługi przerwania jest wywoływana. Jeżeli jest tam zero to po starcie nie wchodzi do procedury obsługi. Przerwanie kiedy procesor pracuje wywoływane...
Witam Po 1 używaj komentrarzy przy pisaniu kodów, bo Twoje są szczątkowe. Po 2 brakuje Ci czasu a odmierzasz go programowo? Przecież w tym samym momencie mógłbyś obliczać inne rzeczy a ty marnujesz czas na zapętlanie nopów... Po 3 masz 8 serw i 1/50s na ich ustawienie co daje nam aż 25000 instrukcji na ustawienie każdego serwa i nie wyrabiasz się czasowo?...
Aby wejść do drugiego warunku i musi przyjąć wartość co najmniej 256, co jest nie możliwe, bo przy i == 255 program nie wejdzie do pierwszego warunku w którym jest inkrementacja. W drugim warunku z kolei nie osiągnie wartości potrzebnej do wyzerowania i. Czemu nie nie zastosujesz if()...else? Faktycznie, niedopatrzenie. Poprawiłem błędy ale i tak działa...
Witam, Problem, z którym się do Was zwracam jest troszkę zagmatwany ale będę się starał opisać wszystko jasno i klarownie, bo sam nie mam już sił. Jest procesor, atmega88, na etapie budowania poszczególnych modułów docelowego programu. Uruchomiłem całkiem ładnie obsługę RC5 (może nie do końca super ale działa). Później uruchomiłem sprzętowe TWI (M88...
Zerknij na to [syntax=c]/* * Timer0_fast_pwm_adc_irq_1.c * * Program uruchamia licznik Timer0 w trybie modulacji szerokości impulsu, tzw. Fast PWM. * Wyjście modulatora PWM na końcówce (OC0) PORTB.3. * Zostaje uruchomiony przetwornika ADC, pomiar z kanału 0, pomiar 10-bitowy, wyz. ADC z przepełnienia Timer0. * Częstotliwość PWM zależy od prescalera,...
Witam Wszystkich :) Już od dawna miałem chęć zbudować sieć komunikacji pomiędzy mikrokontrolerami RS-485 ful-duplex już nawet kiedyś kupiłem sobie 4 szt. max491 z tym zamiarem ale potem do głowy wpadły mi inne pomysły i jakoś nie wyszło. Nie ukrywam że właśnie ten post zainspirował mnie do powrotu do tego projekciku. :) Komunikację podobnie jak kolega...
Potrzebuje mierzyć czas wypełnienia impulsu, ogólnie to na wejściu mam analogowy sygnał o czasie trwania do 10ms, na wyjściu musze mieć reprezentacje jego czasu w wartości 0-180. Padło na 12f1501 bo ma komparator sterujący timerem1 i wewnętrzy oscylator, czyli mogło by być łatwo. Stanem wysokim na komparatorze chciałbym udpalać timer, zbocze opadające...
WItam Czy ktoś mogłby wyjaśnic rodzaje przerwan z przykładu ponizej ( dla SAM7S i standardowych bibliotek AT91SAM7S256.h, lib_AT91SAM7S256.h) : //* open external PIO interrupt //* define switch SW3 at PIO input for interrupt IRQ loop AT91F_PIO_CfgInput(AT91C_BASE_PIOA, SW3_MASK | SW4_MASK); //======== 1 ========================= // Tu ustawiane...
czy ten fragment kodu BUT1_RD() oznacza np. czytanie z portu wejściowego czy nastąpoiło zwarcie do masy konkretnego wejścia w mC? To zalezy jak sobie ja zaimplementujesz (but1 zadeklarowany na pinie A nr 4) może wyglądać: #define BUT1_RD() ( PINA&(1<<4) ) //przycisk aktywowany stanem wysokim lub #define BUT1_RD() ( (~PINA)&(1<<4))...
OK, spróbowałem uruchomić układ w obu konfiguracjach i w obu nie działa - prawdopodobnie ja coś źle składam, ale zauważyłem, że wszystko działa dobrze bez tego układu :| Tzn. podłączyłem się miernikiem między masą i punktem za kondensatorem C19 (bez dodatkowego układu) i przy oświetlonym fototranzystorze mam ok. 100mV. Przy delikatnym przesłonięciu...
#include <stdint.h> #include <avr/io.h> #include <stdlib.h> #include <avr/interrupt.h> #include "HD44780.h" //w Project->configuration option ustawiamy freqency 16000000 #define LICZBA_KANALOW 4 //cztery kanały- tu można zwiększyć ilość kanałów #define NAPIECIE_AKU_MIN11.0 #define NAPIECIE_AKU_MAX14.0 #define NAPIECIE_SOLAR_MIN...
Fakt, nie było pytania. Tylko sugestia- czy można to zrobić inaczej? Bo w zasadzie robię to dotychczas tak jak to opisał mirekk. Z całej dyskusji dotarło do mnie tylko to że można spróbować zastosować bufor- czy pierścieniowy czy FIFO to tak dokładnie nie zrozumiałem. Jakąś implementację bufora w C ściągnę z netu i będę próbował zrozumieć a potem przerobić...
PCF8563 z tego co wyczytałem ma tylko "open drain" na interrupt a ja już mam ustawione wejście w ESP32 do wybudzenia poprzez stan wysoki na wejściu. Czyli np. do wejścia ESP32 możesz podłączyć rezystor pull-down (10k) oraz użyć tranzystora PNP, który będzie sterowany z wyjścia open-drain PCF8563: https://obrazki.elektroda.pl/6625662900_...
:D Ale nadal mnie nurtuje dlaczego przy takim programie i włączonym wewnętrznym pull-up generuje Ci się przerwanie, pomimo stanu wysokiego na wejściu INT1. Co tam masz podłączone?
Witam, Przykładowo chcesz wykonać pewną operację kiedy np na jakimś wejściu cyfrowym pojawi się stan wysoki. Ustawiasz przerwanie do tego wejścia i tylko kiedy pojawi się stan wysoki na tym wejściu działanie programu w plc jest przerywane, zostaje zapamiętany moment w którym program został przerwany. Następuje wykonanie bloku od przerwania sprzętowego....
Po czym wnioskujesz, że : ... w rzeczywistości działa non stop - niezależnie czy jest stan niski czy wysoki.
(at)minitronik Najprostszy procesor - podajesz na wejście timera te impulsy, programujesz timer tak, że po zliczneiu do 56 generuje przerwanie zmieniające stan wyjścia na niski - do tego służy rejestr compare w timerach. Drugi taki rejestr programujesz na 4 i przerwanie z tego zdarzenia compare wystawia stan wysoki. Ot i cały program. W sumie na dyskretnych...
Czy wszystko będzie ok. trudno wyczuć. Zależy jaki zastosowałeś układ wykrywania przejścia przez zero. Jeżeli stan niski utrzymuje się przez większą część przebiegu i tylko w okolicach zera jest wysoki to dopóki jest stan niski to jest zgłaszane przerwanie. Jeżeli dodać do tego że przerwanie int0 ma najwyższy priorytet poza reset to przerwanie od timera...
(at)ElektrodaBot Jak skonfigurować rejestry MCP23017, aby nasąpiło przerwanie na INTB. Port B bit 0_4 to wejscia klawiszy, normalnie stan wysoki. Stan niski powinien wywołać przerwanie na INTB.
SS musisz wykorzystać, bo tylko stan tego pinu gwarantuje przejście pozostałych linii interfejsu SPI w stan wysokiej impedancji. Przerwanie od SS nie jest potrzebne - niski poziom tego sygnału aktywuje interfejs i powoduje wysłanie SPDR. Po zakończeniu wysyłania bajtu danych możesz otrzymać przerwanie zakończenia transferu SPI w którym to przerwaniu...
Jak INTX ma cały czas stan niski to przerwanie jest cały czas wywoływane, a procesor wykonuje jedną instrukcję pentli głównej na jedną obsługę przerwania - czyli działa tylko że bardzo wolno. A rozwiązanie Twojego problemu jest proste. Gdy przyjdzie przerwanie od INTX w stanie niskim to przełączasz to budzisz procesora i przełączasz to przerwanie na...
Kiedy zgłąszane jest przerwanie ( w tym wypadku polega na odcięciu INT0 od masy) Trzeba było zostawić jak wcześniej, że stan niski powoduje przerwanie (bo jak rozumie to teraz stan wysoki powoduje zgłoszenie przerwania). I chyba masz konfiguracje przerwania złą. nie powinno być: MCUCR &= ~_BV(ISC00); MCUCR &= ~_BV(ISC01); ISC01 ISC00 Description 0...
Musisz chyba użyć timera ustawionego tak aby przerwanie z niego następowało później niż czas między kolejnymi wysyłanymi paczkami z pilota. Z tego co pamiętam to pilot w standardzie RC5 wysyła przy stale wciśniętym klawiszu kod co jakieś 89ms. Jeśli używasz przerwań do czytania kodu to dajesz mu wyższy priorytet niż timerowi. W timerze zerujesz pin...
sam musisz skasować to przerwanie!! Na początek zablokuj to przerwanie w procku a następnie w rejestrach NM7010a (INT_STATUS(x) i INT_REG) na tych pozycjach które pokazują jakie to przerwanie i od czego wpisz 1. Zajrzyj do funkcju API tego modułu na stronie WIZNETU. Są napisane dla '51 ale sporo rzeczy mozna znaleźć! powodzenia!
Ja pomiar czasu (i to nawet precyzyjnie) zrobiłem na timerze i przerwaniu od INT0. INT0 ustawiłem na przerwanie od dowolnej zmiany stanu. W funkcji przerwania sprawdzam czy jest to san wysoki czy niski, i uruchamiam z którymś z nich timer i przerwanie od zrównania licznika z rejestrem. Program leci sobie dalej jak chce i co jakiś czas następuje przerwanie...
a jaki powinien byc stan na tej nóżce po podlaczeniu wewnetrznego pullup?? Wysoki , 1 , ~VCC , czy jak kto woli to nazwać.Wiszący pin "robi za antenę" i trudno przewidzieć jego stan. Piotrek
Jj_Johnys : Wcisniecie przycisku daje ok. 100ms sygnalu? Rozne przyciski maja rozne dlugosci sygnalow? Jak dla mnie to przycisk zwiera w zaleznosci jak dlugo sie go przytrzyma, po za tym przy wciskaniu przycisku nastepuja drgania stykow ktore daja duzo szpilek i napewno nie osiagniesz zadnego konkretnego sygnalu o konkretnej dlugosci. Jesli chodzi...
05018 - 13 Zawór podgrzewania Adblue w stanie otwartym, temperatura wyższa od oczekiwanej. 05019-13 Aktiv Podgrzewanie AdBlue (zawór podgrzewania zbiornika) Kryterium błędu: Zwarcie do plusa (12V) lub minusa, przerwanie. 05527-12 Czujnik temperatury w B996 (czujnik wilgotności przy filtrze powietrza). FMI12 oznacza przerwę w obwodzie lub zwarcie do...
Pytanie do Andrzej__S lepiej, zmienić wywołanie przerwania na stan niski, czy zostawić zbocze opadające ? Kolega snaap skorzystał z wyzwalania stanem niskim ze względu na to, że miał potrzebę wybudzania mikrokontrolera ze stanu uśpienia. Dodatkowo w obsłudze przerwania ustawiał tylko odpowiednią flagę, a resztę operacji wykonywał w głównej pętli programu....
Rezystor od kolektora do Vcc, pin procesora do kolektora. Wartość tego rezystora zależy od wymaganej częstotliwości przełączania, CTR i prądu diody, w efekcie możliwego do uzyskania prądu kolektora. Musisz go tak dobrać, żeby przy zablokowanym tranzystorze był w stanie wymusić poziom wysoki, a przy odblokowanym tranzystor dawał radę wymusić stan niski....
Nie wiem tylko jak zmodyfikować schemat żeby wstawić dwa fotorezystory zajmując przy tym jedno wejście ARDUINO. Niestety nieprecyzyjnie określiłeś warunki Twojego projektu, bo nie określiłeś w jaki logiczny sposób mają te sygnały z dwóch fototranzystorów tworzyć ten jeden sygnał na pin Arduino. Tu masz dwa schematy: https://obrazki.elektroda.pl/1409721900_...
Nie LED nie świeci. Jeśli LED nie świeci, bo jest uszkodzona - miernik będzie działał tylko w trakcie naciskania TEST, Q1 będzie nasycony przez dołączenie do jego Bazy złącza B-E tranzystora Q2, jednak podtrzymanie zasilania przez Q1 nie nastąpi, bo kolektor nasyconego z portu PD6 tranzystora Q3 "wisi" w powietrzu, przez przerwany obwód LED. Dla "spokojności"...
Jeśli dobrze policzyłem przerwanie powinieneś mieć co 0,5 sekundy. 18432000 / (2 * 1024 * 4500) = 2Hz Ponieważ w przerwaniu zmieniasz stan pinu na przeciwny, to na nim powinien być 1Hz. Jeśli fusebit CKDIV8 masz zaprogramowany (fabrycznie ustawiony), to na pinie powinno być 0,125Hz, czyli stan wysoki co 8 sekund. Zakładam oczywiście, że pracując z takim...
Będzie działał, mój post zacząłem pisać 2 minuty przed wysłaniem go, więc trochę się pomieszała kolejność :). Ale może przy dużych obrotach fototranzystor jednak nie zdąży załapać i stąd błąd? Powinien zareagować przy czasach oświetlania diodą rzędu 20 mikrosekund, co raczej jest wystarczające, jednak może warto sprawdzić? Dodano po 1 A co to?:[syntax=c]MCUCR...
Myślę, że mikro-kontroler będzie idealny. ATmega 8 będzie ok choć moim zdaniem trochę nadmiarowa. Ale jak jest w szufladzie ...jak najbardziej. Co do programu..wydaje mi się, że to raczej dość łatwa sprawa. Np. wejścia układu po obniżeniu napięcia do akceptowalnych przez AVR'a można podać na wejścia INT0 i INT1. Zmiana stanu na wejściu INT0 niech spowoduje...
DAC0808 - nie ma kompletnie żadnej filozofii. POdłączasz go do jakiegokolwiek ośmiobitowego portu, ustawiasz kierunek (DDRx = 0xff;) i zapiszujesz wartość (PORTx = wartosc;). PCF8591 - http://elportal.pl/index.php?module=Cont... część szósta, pobierz listingi. ADC0820 - podobnie jak DAC0808 podłączasz do portu ośmiobitowego....
sterowanie stanem wysokim atmega sterowanie stanem wysokim wysokim kontraście
wiadomości prywatny przydomowy oczyszczalnia ściek ciśnienia naczyniu przeponowym termet
nasadka miksująca zelmer suszarka bosch problemy
Renault Midlum 270 DCI DXi7 – ustawienie luzu zaworów, wartości, procedura, momenty dokręcania Renault Midlum 270 dCi DXi7 – numeracja cylindrów i ustawienie zaworów