To jest tak: Config Int0 = P3.2 ' Ustawienie przerwania zewnętrznego na pin P3.2 Reset Tcon.0 ' Przerwanie wywoła stan niski Set Tcon.0 ' Przerwanie wywola opadające zbocze (z H do L) To samo z Int1 To tyle pozdrowienia.
Może przybliżę bardziej zastosowanie. Chodzi mi o program sterujący silnikiem krokowym (w założeniu unipolarnym) z progrmów typu mach3, step2cnc, turbocnc. Programy te jak wiadomo podają przez port LPT step i dir. Step czyli krok można wykorzystać jako sterowanie przerywaniem int1 w naszej atmedze. Natomiast dir określa kierunek i przyjmuje stan niski...
Ja już chyba na to odpisywałem, albo deja vu:) Nie Timer nie liczy stanów a zbocza... tak można na takie i takie zbocze liczyć... Ty zapewne chesz liczyć na zbocze opadające...
Witam. Jestem początkujący w programowaniu więc proszę o wyrozumiałość. Potrzebuje program sterowania klapą (otwieranie i zamykanie dwie krańcówki góra dół i silnik lewo prawo). Chce aby jazda w gore lub w dol odbywała się w momencie zmiany stanu pewnej zmiennej zewnętrznej konkretnie zboczem rosnącym. Wyczytałem, że w Bascomie można zrealizować t przerwaniem...
Że jak? Do Loop Load Timer1 , 5 Return Czy to co powyżej (do,loop) to przemyślane działanie czy jakaś opcja debug'ujaca? A - i jak wywnioskowałeś, że nie działa przerwanie?
Ustawiając int na opadające zbocze...
Rzeczywiście, z zaremowaną funkcją bitwait zmienna W przybiera wartości. Nie mam pojęcia dlaczego. Musisz tu zrozumiec mechanizm pomiaru długości trwania impulsu w instrukcji "PULSEIN": patrz 'Bascom help' Pulsein W , Pinc , 0 , 1 W tym konktetnym przypadku pomiar czasu dokonywany jest pomiędzy zboczami, z których pierwsze jest rosnące a drugie opadające....
hmmm takie kombinacje.... przacierz można rejestr odpowiadający za przerwanie ustawaiać w czasie wykonywania programu... raz ustawiasz go na zbocze narastające, a potem w obsłudze przerwania na zbocze opadające.
Tak po pierwsze to przerwanie masz domyślnie wzbudzane stanem niskim, czyli przerwanie wywołuje się W KÓŁKO dopóki na pinie panuje stan niski. Musisz je ustawić tak, by reagowało na zbocze (w Twoim przypadku opadające). Poza tym jak pisał (at)emarcus - cały program jest pisany bez zastosowania się do jakichkolwiek dobrych nawyków, a i jak widzę wiedza...
Witam a może coś takiego rozwiąże problem: dim flaga as bit dim a as byte do if P1.0 = 0 and flaga = 0 then a=a+1 'wartośc zwiekszana tylko podczas opadającego zbocza flaga = 1 end if if P1.0 = 1 then flaga = 0 end if loop Przy wykorzystaniu wejśc P1.0 i P1.1 w układach typu 89C2051, 89C4051 itp. należy pamiętac o podciągnięciu tych wejśc do plusa zasilania...
Widziales kiedys sinusoidę? ma dwa zboCza: narastająCe (rising) i opadająCe (falling) Przerwanie może byC wyzwolone jednym z tyCh dwóCh zboCz. w powyższym kodzie masz na zboCze opadająCe, będzie działaC.
Tak właśnie to wyczytałem, zmieniłem nawet tablice na VOLATILE i też nie pomogło :( Ale teraz mam 202 przerwania w sumie czyli już jakiś postęp, a ma być 256 na obydwu zboczach , 128 na opadającym
. Zamierzam zrobić tak by mogli wprowadzić korektę (jeśli będzie potrzebna) i zapisać w eeprom. czy to dobry pomysł? Jakoś tak; $Crystal=12000000 Config Timer1 = Timer , Prescale = 8 On Timer1 Inter_1mS Inter_1mS: Counter1 = Counter1 + Licznik (64036 - wychodzi z obliczeń, że da to 1ms) /tu odliczę sobie 103/ Błednie to rozumujesz, albo błednie podałeś...
...Jakie jest zatem rozwiązanie tego problemu (jeśli jest)? Bascomowy UART programowy działa jedynie wtedy , kiedy wywołamy funkcję z nim współpracującą. W pozostałych przypadkach ( kiedy działają funkcje/procedury nie związane z programowym UART-em ) , nadchodzące dane są "niewidoczne" dla procka :( Np. jeśli masz w kodzie Wait 1 , a w czasie działania...
pixel7 ale bzdura. Nie wydaje mi się. Bzdura bzdura. Takie coś zareaguje na poziom a nie na zbocze.
Witam. Procek tak się zachowuje bo nie określiłeś czy przerwanie ma być generowane przez zbocze opadające, rosnące czy przez stan niski na końcówce INT. Domyślnie wyzwalane jest stanem niskim więc wykonuje się raz za razem. Instrukcja Config INTx. Przeznaczenie: Konfiguruje sposób wyzwalania przerwania INTx. Składnia: CONFIG INTx = LOW LEVEL | RISING...
Przerwania PCINTx wykonują się przy każdej zmianie stanu logicznego, niema możliwości konfiguracji np. tylko dla zbocz narastającego lub opadającego. Stan zbocza na poszczególnym pinie sprawdzasz w przerwaniu. Attiny13 ma 6 pinów PB.0-PB.5 (PCINT0 do PCINT5) które mogą wywołać przerwanie. I tu jest jedna myląca rzecz :) dla tych pinów jest tylko jeden...
tak :D set ISC01 , procesor będzie reagował na zbocze opadające :) ale w 2051 trzeba rc zastosować...
Reagują na zbocze opadające, narastające i na niski stan... jak sama ich nazwa wskazuje:>
CZy w mikroprocesorach 89C2051 można ustawić przerwanie zewnętrzne aby reagowało na zbocze narastajace bądź opadające pisząc progam w Bascomie. Szukam po necie nic na ten temat nie mogę znaleźć.
http://obrazki.elektroda.pl/8753306600_1... Tak wyglądają "bity" na kablu. Stan wysoki jest stanem spoczynkowym. Wyobraz sobie, ze bierzesz timer, podlaczasz taki sygnał do procesora, i co zbocze przechwytujesz wartosc z timera a następnie wykonujesz odpowiedni ISR. Każdy odstęp ma przecież swój unikalny czas. W ISRrze wiesz dokładnie, jakie...
A i B są poprawne :) Odnośnie jeszcze punku B. Powinieneś mierzyć szerokość impuslu, czyli czas od zbocza narastającego do opadającego. Ponieważ ATMega tego nie potrafi robić całkowicie sprzętowo, więc zostaje punkt A. Szerokość sprzętowo może mierzyć dopiero XMEGA. Można też czasy pomiędzy kolejnymi zboczami opadającymi, ale wtedy trzeba zadbać o to,...
Sygnał przychodzący podłączasz do dwóch wejść: INT0 i ICP1. Rejestry MCUCR i GICR konfigurujesz tak, żeby na zbocze narastające na wejściu INT0 timer startował, a na opadające na INT1 zatrzymywał się...
Po resecie TCON ma wartość 0x00 czyli sygnał niski generuje przerwanie, a w tym przypadku to powinno być zbocze opadające. Dodaj linię set TCON.0 przy konfiguracji przerwań.
Przepraszam ale w pierwszej wypowiedzi popełniłem błąd logiczny - oba przerwania powinny być ustawione na te same zbocze a nie różne. Dlaczego, bo tak jak napisałem wcześniej nie będzie można określić kierunku zmian, zawsze bedzie ta sama kolejność wywoływania przerwań. Obojętnie czy kręcimy w lewo czy w prawo. np. ChA narastanie 0->1 a ChB opadanie...
Jdno pytanie czy ponizsza konfiguracja bedzie prawidłowa : Chodzi o to aby licznik zliczał impulsy wewnętrzne z kwarcu przez czas jaki na int0 bedzie stan wysoki. w momencie pojawiania sie zbocza opadającego aby program przchodził do obsługi przerwania : Fragmenty w bascom : config timer0 = timer , gate = external , mode =1 set Tcon.0 - reakcja na zbocze...
W Bascomie jest do tego specjalna instrukcja Zaglądnij do Helpa na polecenie Pulsein Zauważ że zarówno instrukcja pulsein jak i pulseout mierzy tylko czas trwania impulsu a nie całego cyklu; patrz paniżej diagram: http://obrazki.elektroda.pl/1148630500_1... Zmierzysz tylko L1 albo L2 . Autor potrzebuje zmierzyc czas L (czas pomiędzy...
O ile mnie pamięć nie myli, to SPI ma cztery kabelki. To narastające i opadające zbocze przypomina synchroniczną transmisję szeregową, dlatego głosuję na coś podobnego do I2C, albo właśnie samo I2C. Pozdrawiam.
Język nie jest ważny. Polega to na odpowiednim ustawieniu sygnałów na wejściach LCD czyli sterowania rejestru Port. Jak wrócę z pracy to wstawię tu kod napisany w C dla zwykłego LCD ( z lekkim tłumaczeniem). Może uda się to przerobić na Bascom. Wtedy uzyska się dostęp do czasów. Do tego czasu spróbuj wyssać procedurę inicjacji z noty katalogowej. P.S....
Mam program do zegarka z alarmem...podczas kompilacji w programie Bascom AVR wyskakuje mi bład w tej lini Set Tcon.2 'opadające zbocze int1 dla obslugi timera Enable Interrupts 'odblokowanie przerwań On Int1 Sekunda 'skok do etykiety sekunda gdy wystąpi int1 a brzmi on tak Error:41 Line: 49 Variable can not be used with SET [TCON] Niech ktoś mi pomorze!!!!
Zmień wywoływanie podprogramu Int0 na opadające zbocze a nie na niski poziom(domyślne) i wszystko będzie dobrze. A swoją drogą to co to za mikrokontroler bo nie jesteśmy jasnowidzami?
(at)ElektrodaBot To było podchwytliwe pytanie :) Przedstawiony kod działa poprawnie. Wejścia i wyjścia procesora są właściwie skonfigurowane i transmisja jest poprawna. Wszystkie dane zapisywane i odczytywane są na narastających zboczach sygnału CLK gdy zmiany ich są na opadającym zboczu więc jest ok 100us na ustabilizowanie sygnału. https://obrazki.elektroda.pl/2868912000_...
Wszystko zależy od tego co jest źródłem impulsów. Jeżeli przycisk, to może to być efekt odbijania sie styków. Jeżeli to sygnał z innego urządzenia to może jego wydajność prądowa jest mała i zbocze zbyt wolno opada. A jeżeli sygnał jest dostarczany przez dodatkową rezystancję to może podciągający rezystor jest za mały.
Przerwania rzeczywiście są lepszym pomysłem. Ustaw na zbocze opadające albo narastające w zależności jaki sygnał masz gdy nie ma żadnego obiektu w barierze. Jeżeli coś wjedzie w bariere to wygeneruje zbocze i ty na to zbocze powinieneś się wyzwolić - jeżeli normalnym stanem pracy jest stan wysoki na INT0 to wyzwalasz opadającym jak stan niski to narastającym....
Tak, tylko jeszcze muszą być odpowiednie czasy. Stan niski przez minimum 0.8 us i powrót do stanu wysokiego, oczekiwanie minimum 3ms. [syntax=basic4gl]'----------------------... Step_inner: Reset Direct_sel ' kierunek głowicy, stan niski = do wewnątrz Reset Step_head ' zbocze opadające przez Waitus...
Masz w kodzie taką linię ... Reset Tcon.0 'wyzwalanie narastającym zboczem ... i nie podoba mi się komentarz ;) Powinien brzmieć wyzwalanie niskim poziomem . Więc po pierwsze , ustaw INT0 na zbocze opadające (Set Tcon.0) , a po wtóre , Twój proc nie ma możliwości wyzwalania przerwań zewnętrznych zboczem narastającym :( Piotrek
Naprawdę nikt nie jest w stanie nic pomoc ? Miało by to mniej więcej wyglądać tak: -sygnał podawany na ICP ma postać kwadratową -zbocze opadające powoduje zapis wartości timera do rejestru sprzętowego -odejmując kolejne wartości rejestru od siebie uzyskuję czas jaki upłynął między impulsami -obliczając odpowiednio czas uzyskuję ilość impulsów na minutę
Nie zadeklarowałeś na jakie zbocze reaguje INT, czyli masz domyślne ustawienia procesora (rejestry są ustawione po resecie na domyślne). Jakie dane wystawia Twój odbiornik IR, czy w stanie spoczynku masz stan H czyli +5V? Jeśli tak to przerwanie powinno być tylko na zbocze opadające. Twój odbiornik ma stan wysoki jak nic nie odbiera, każdy wysłany bit...
Nie piszesz czy to ma być liczenie w jednostce czasu ani jakie zbocze Cię interesuje (opadające/narastające)... Jeśli to tylko zwykłe liczenie impulsów to rozwiązanie jest wprost banalne. Najpierw określ jakie zbocze ma liczyć. Odczytujesz stan portu i czekasz na jego zmianę jeśli się zmieni wtedy "INCR coś tam", czekasz na powrót do zbocza i wracasz...
witam mam mały problem napisałem taki program ma byc on na attiny13 :) $regfile = "attiny13.dat" Config Portb.2 = Output Config Int0 = Falling Enable Interrupts Enable Int0 On Int0 Czekaj Set Portb.2 Do Loop End Czekaj: Reset Portb.2 Waitms 5 Set Portb.2 Return Kiedy na wejscie podamy 0 to na wyjsciu ma sie pojawić 0 przez 5ms i po tych 5ms stan wyjscia...
Witam, Zależy mi tylko na tym, żeby Arduino zliczał impulsy z kontraktrona do 5 - 1 impuls- świeci się dioda led 1 - 2 impuls zapala się dioda led 2 - 3 impuls zapala się dioda led 3 - 4 impuls zapala się dioda led 4 - 5 impuls zapala się dioda led 5 i dodatkowo daje sygnał ciągły HIGH na pin SILOWNIKA przez cały 5 po 6 impulsie reset i znowu: - 1...
Zrób to na przerwaniu zewnętrznym na opadające zbocze. Wtedy gdy na pinie załóżmy INT0 pojawi się stan niski obsługujesz przerwanie i robisz co tam potrzeba. Skoro na oscyloskopie widać stan niski to znaczy że układ z transoptorami jest prawidłowy a problem loży po stronie oprogramowania.
2. Odpowiedź na moje 2 pytanie. 3,4. nie chodziło mi o znak w warunku if, a o sprawdzenie stanu klawisza po czasie 3s, który tu jest spełniony (co przeoczyłem) w warunku wyjścia z pętli w korelacji z Licz. 5. przerwanie zostanie wykonane po zwolnieniu klawisza. Moje ostatnie pytanie dotyczyło pracy układu, czy w czasie wykonywania przerwania INT1 kolejne...
Lj = Li / 250 250 to ilość impulsów na 1 l. według producenta Dodano po 5 Cały problem w tym że nie wiem jaki uklad wsadził do tego przepływomierza i co ma na myśli 250imp/l . Próbuje na różne sposoby poprawnie zliczać litry . Brak jakiejkolwiek noty tego przepływomierza z innymi przepływ. niema problemu bo sygnał prostokątny i jak pisze 689 imp/l to...
Sygnał podaję na nóżkę PORTD.6, mam go skonfigurowanego tak: [syntax=basic4gl]Config Portd.6 = Input[/syntax] Timer konfiguruje jako timer, ponieważ chcę mierzyć czas trwania zbocza: -konfiguruję za zbocze opadające -przepisuję wartość timer1 do zmiennej A -przełączam na zbocze narastające -przepisuję wartość timer1 do zmiennej B -od zmiennej B odejmuję...
OK to jeszcze dopytam tak, rozumiem że na początku przerwania zmieniam stan Edge_ na 0, liczy timer i config int0=rising ale co dalej załóżmy że nadejdzie zbocze narastające i co wtedy się dzieje? No tak, zabrakło jeszcze jednej linijki... sory... Powinno być: If Edge_ =0 Then Start Timer1 Config INT0=Rising Else Stop Timer1 Config INT0=Falling End...
Przepraszam że odkrywam wykopaliska, ale postanowiłem przetestować układ zaproponowany przez kolegę Paweł Es.. Idea jest słuszna, ale się nie sprawdza. Do testu wykorzystałem impulsator z myszki i klon analizatora USBee. Jak się okazało impulsator jest tak słabej jakości że wprowadza ogromne drgania styków, dwa górne przebiegi pokazuję co dzieje się...
Ale to pogorszylo sprawe tzn znikla zgodnosc przebiegow rejestrow ze zgodnoscia zbocza opadajacego Ciężko zrozumieć co masz na myśli pisząc o tej zgodności. W każdym razie uczepiłeś się tego zbocza opadającego jak by to miało jakieś znaczenie. A nie ma. Wcześniej pisałeś że dane się rozjechały względem tego zbocza o 3us. Otóż one mają być rozjechane...
chyba jako timer? Tak, jako timer, drobne przejęzyczenie a zmienia całą postać rzeczy... ;) I jeszcze jedno mi się przypomniało, w bascom'ie, przynajmniej w wersji w której ja piszę, nie ma opcji ustawiania reakcji dla przerwania zewnętrznego, trzeba ręcznie ustawić bity w rejestrze MCUCR (cztery ostatnie bity, dokładny opis w dokumentacji). Dla przykładu...
Generalnie, W Bascomie obsługa RC5 pozostawia wiele do życzenia dlatego też Mark w najnowszej wersji ma wprowadzić obsługę RC5 na przerwaniu ICP ("prawdziwie" w tle) według poniższego kodu, który udostępniam i polecam: [syntax=basic4gl] $regfile = "m8def.dat" $crystal = 8000000 Config Timer1 = Timer , Capture Edge = Falling , Prescale = 8 '1 tick= 1...
opadać zbocze zbocze opadać wyzwalać zbocze opadać
konfiguracja ruter laptop domofony breloki iphone gubić zasięg
rigol dho800 naprawa udaru makita
Jak podłączyć silnik odkurzacza MRG 402-42/2? Podłączenie głowicy magnetofonu MDS 432: odczyt i zapis