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 >...
Procedura Getrc5 wykorzystuje Timer0. Użyj innego.
W rejetrze GIFR pojawia się flaga żądania obsługi przerwania INTF0. I czeka. Gdy w rejestrze GICR pojawi się ponownie flaga INT0 (czyli w Bascomie enable INT0) przerwanie jest obsłużone i flaga INTF0 jest wtedy kasowana. Flaga INTF0 może byś skasowana ręcznie.
Rejestr EIFR to rejestr FLAGI przerwania, która jest automatycznie zerowana po zakończeniu przerwania. Badanie jej w przerwaniu musi dac wynik pozytywny. Poza tym masz w tym kodzie błąd: reset eifr.0 if eift.0 = 1 then set led chyba powinno być: if eifr.0 = 1 then set led Napisz jak ustawiasz rejestr EICRA Na końcu przerwania zbadaj If EIMSK.0=1 then...
Bascom moze tego nie obslugiwac. I ile recznie mozna wpisac do rejestru wlaczenie tego przerwania, to podanie wektora przerwania pewnie bedzie juz problemem - moze edycja pliku z danymi o ukontrolerze. Przerwania zmiany stanu na PCINT przypisane sa do portów, i dodatkowo mozna zdefiniowac które piny maja byc monitorowane (nie musza byc wszystkie).
Kolega Mad Jaro mierzy czas pomiedzy INT-em i przelicza na obroty. zablokowanie INT spowoduje pływanie obrotów( INT nie liczy impulsow). Kolega xury ma rację odnośnie jednokrotnego użycia szukania czujników. A poza tym zsynchronizuj odczyt 1wire z przerwaniem INT tzn. komunikację z 1wire podziel na max -5 bajtowe odcinki i wykonuj je po przerwaniu INT....
Niech Kolega poczyta co to są drgania styków - to one powodują generowanie przerwania w nieodpowiednich momentach.
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.
Proponuję do wykrywania dźwięku użyć przerwania zewnętrznego to zminimalizuje opóźnienie. Teraz program w pętli czyta ADC i sprawdza stan pinb.1 co nie jest optymalnym rozwiązaniem w tym przypadku.
Ciekawe jest to widać w twoim profilu (Pomógł: 79927) :P ale do rzeczy. Według mnie coś takiego można zrealizować w następujący sposób: - konfigurujesz przerwanie zewnętrzne żeby było wyzwalane przerwanie zboczem opadającym, rosnącym etc. - w tym przerwaniu uruchamiasz timer który zlicza sobie impulsy - jeżeli zliczy określoną ilość impulsów to wykonujesz...
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...
nic to nie dało, jakieś inne sugestie ? Jak skonfigurowałem te porty jako zwykłe wejścia to działało, ale to musi być na przerwaniu.
Wszystko przerwie ;) nawet wait'a - od tego są przerwania jak sama nazwa wskazuje. Tylko podejrzewam, że może w trochę nieprzemyślany sposób dałeś parametr Nosave
To nie program tu jest problemem a dopasowanie sygnału. Poczytaj o wzmacniaczach operacyjnych i komparatorach. W procesorze zbocze możesz wykryć za pomocą przerwania zewnętrznego.
witam. Napisałem o to taki program: [syntax=basic4gl]On Int0 Przerwanie Nosave Enable Int0 Config Int0 = Change Enable Interrupts Config Portd.7 = Output Dim A As Byte Cls Do Locate 1 , 1 Lcd ; A; Loop End Przerwanie: A = A + 1 Toggle Portd.7 Return [/syntax] pin pd.2 mikroklocka podłączony jest do przerwania int PCF8583 lub pod zwykły przycisk zwierany...
Timery lub lepiej alarm w pcf8583/8563 i przerwanie zewnętrzne
Nie wiem czy to może coś mieć do rzeczy ale konfigurujesz przerwanie na porcie Int0 na falling a potem obsługujesz przerwanie od Int1. Przy resecie jak nic nie ustawiasz to przerwania zewnętrzne są aktywne stanem niskim. Jak nie ustawiasz Int1 na falling a potem pozwalasz na przyjmowanie przerwania z Int1 to możliwe, że wciśnięcie guzika powoduje kilkakrotne...
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...
NP: IF A and B and C then coś tam się dzieje end if A B C to klawisze ( piny porty zmienne ) Pozdro! I to powinno dziać się w obsłudze przerwania, jeżeli ma to się rzeczywiście natychmiast stać. Klawiaturę podłącz tak, aby po wciśnięciu dowolnego klawisza generowała określony stan, linię z tym stanem podłącz do pinu zewnętrznego przerwania w kontrolerze,...
Wydaje mi się, że podczas wykonywania komend obsługujących LCD (Locate, Lcd) dzieje się jedna z dwóch rzeczy: a) przerwania zewnętrzne są wyłączane (nie są obsługiwane przerwania, które są zagnieżdżone jedne w drugich), ...............) Tak ma być czy robię coś źle? Jakieś pomysły o co może chodzić i jak podejść do problemu? Pokaż gdzie i jak masz...
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,...
Witam. Mam problem z przerwaniami w atmega8. Wcześniej nie potrzebowałem przerwań więc to zagadnienie mnie nie interesowało. Potrzebuję wywołać przerwanie zewnętrzne int0 które uruchomi timer1, a ten zacznie odmierzać czas. Proszę o pomoc. Pierwsza zasadnicza uwaga to nie zauważyłem w programie konfiguracji interruptu0- coś np. takiego: config INT0=...
"kolega janbernat chyba nie pojął o co chodzi w programie w pierwszym poście. Tam są przerwanie na int0 i int1 , pierwsze to pewnie czujnik optyczny a drugie końcówka compare A połączona z int1, chyba że się mylę." No tak to jest- jak się coś widzi a o czym innym myśli. Głupoty napisałem bo "zafiksowałem" się na przerwaniu od timera- a to normalne przerwanie...
Mozna to zrealizować na dwa sposoby: 1. Za pomocą przerwania zewnętrznego INTx zliczać ilość impulsów. Podobny temat już jest: 2 Zliczać impulsy na wejściu ICR Podobny temat masz poniżej: http://www.elektroda.pl/rtvforum/topic18...
Witam !!! Zainstalowałem specjalnie BASCOM'a i stwierdzam, że trzeba to napisać od nowa. Najlepiej będzie Clk klawiatury wpakować na przerwanie zewnętrzne typu "any change". Kiedy clock wyzwoli przerwanie, sprawdzasz w petli dane i po sprawie. (M.) Witam, masz racje, że trzeba to włożyć do przerwania, ale nie trzeba pisać tego od nowa. Dzisiaj poprawiłem...
Po prostu byk w BASCOMie. Prescaler jest ustawiany jako CS02..CS00 = 110 a to oznacza, że licznik nie zlicza impulsów zegarowych tylko zewnętrzne na T0 z opadającym zboczem.
No właśnie- przerwanie od Timera co 16.384 ms a w przerwaniu tylko inkrementacja jakiejś zmiennej. No ale to Bascom- odkładanie na stos i zdejmowanie zajmie jeszcze kilkadziesiąt instrukcji po 0.0625us przy zegarze 16MHz. Ale nawet wtedy to będzie poniżej 6us. Wystarczy aby obsługa przerwania INT0 była krótsza od 16ms. Zwłaszcza że przerwanie zewnętrzne...
Przy takim programie, na wyświetlaczu pojawiają się albo same krzaki, albo znaki zapytania, a jeżeli uruchomi się, to jest samo 0... Nie zwiększa się zmienna. [syntax=basic4gl]$regfile = "m8515.dat" $crystal = 8000000 Config Portb.1 = Output 'RW LCD Portb.1 = 0 Config Timer0 = Timer , Prescale = 1024 Tccr0 = 4 Enable Interrupts Enable Timer0 on timero...
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......
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...
Można wykorzystać przerwanie zewnętrzne. Jutro przerobię program dla zakresu 87,50-108,5 oraz dorobię obsługę przerwania. Teraz jestem już trochę śpiący ;)
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...
Może jakiś wyłącznik krańcowy. Szyba dochodzi do końca w skutek czego zwiera wyłącznik krańcowy co powoduje wywołanie przerwania zewnętrznego na atmedze i ona wyłącza silnik.
Zawsze jak wchodzisz w przerwanie np.On Timer lub w podprogram sub procesor odkłada zawartość pewnych rejestrów na stos (co zajmuje mu ileś us) a po przerwaniu (lub sub-ie) zdejmuje ze stosu (co znowu zajmuje czas). Rachunkowo wygląda wszystko dobrze w programie-ale tylko gdy procesor chodzi z nieskończoną prędkością. A chodzi ze skończoną. A-w tych...
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...
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...
Możesz sobie podłączyć przycisk pod zewnętrzne przerwanie i w programie przerwania na początku zrobić Disable INT0 , wtedy drgania stuku będą chyba wyeliminowane.
Jak krótki odcinek czasu można zmierzyć zależy od częstotliwości taktowania uC. Procedura może polegać na ustawieniu Timera procka na tryb czasomierza (parametr TIMER0 = TIMER). Uruchamianiem i zatrzymywaniem zliczania Timera zajmują się: Start i Stop (np.: Start Timer0), które uruchomisz konfigurując przerwania zewnętrzne (np.: Config Int0 = Low Level).
Myślałem wstępnie, żeby wykorzystać przerwania zewnętrzne i mierzyć czasy impulsów paczki za pomocą timera? EDIT, mam na myśli przerwanie ICP od timera1, ale jeszcze nie wiem jak to ugryźć ;)
...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...
Temat do zamknięcia - muszę jeszcze wykombinować jak zrobić jedną rzecz bez timera - przerwania zewnętrzne - wykorszystane, a do pętli też nie mogę :P
Sterujesz obrotami przez PWM, czy prawdziwe "średnie napięcie" ? Rozumiem, że ten czujnik halla jest zewnętrzny. Pokaż jak możesz kawałek schematu.
Nie miałem takich problemów wcześniej ale sadzę, że przerwanie zewnętrzne od odbiornika podczerwieni samoczynnie przerwie oczekiwanie na dane w instrukcji input, a po obsłużeniu przerwania wróci do input. Podobnie dzieje się z instrukcją Wait.
Nie mam ustawiony wewnętrzny 8MHz ale docelowe w projekcie chcę użyć zewnętrznego 11.058MHz. Myślałem że instruknja: CONFIG Clock = Soft, Gosub = Sectic powoduje że obojętnie co jest ustawione to Bascom automatycznie odlicza 1s i po niej skacze do instrukcji Sectic. Dokładnie chodzi mi o przerwanie które będzie wykonane po upływie 1s. Chcę przez to...
Ja bym sugerował podpiąć przycisk pod przerwanie zewnętrzne. Jeden timer byłby puszczany i zatrzymywany w przerwaniu do pomiaru czasu, a drugi do multipleksowania wyświetlania.
Witam, Proszę bardzo, rzeczywisty projekt mojego autorstwa. Projekt dostępny na elektrodzie w dziale projektów DIY. http://www.elektroda.pl/rtvforum/topic18... Kody źródłowe dostępne dla ATMEGA16 i następujących kompilatorów: (w nawiasach wynik kompilacji) IAR .......... (4852 bajty) AVRGCC .... (5808 bajtów) BASCOM ... (92% czyli ok 15kB) Myślę...
PCF8583 ma na wyjściu INT chyba Open Collector to znaczy że tylko zwiera do masy ... Interesujesz się elektroniką? Chodzi o to że PCF potrafi na tym wyjściu tylko zwierać do masy..ale musi mieć co zwierać.. więc albo musisz dodać tam zewnętrzny rezystor podciągający linię tak by normalnie panowało tam 5V a PCF na moment zewrze linię do masy...albo mozesz...
Jednakże nie mam pojęcia jak wygląda obsługa przerwań zewnętrznych na Bascomie. Może pomoże Tobie jakiś Help, który jest podobno zintegrowany z programem po polsku. Pozdrawiam. ENABLE INTERRUPTS 'Włączenie globalne przerwań ENABLE INT0 'Właczenie przerwania INT0 ON INT0 podprogram: 'Przypisanie podprogramu który zostanie wywołany po stwierdzeniu przerwania....
W tamik razie masz ustawiony port jako co innego, albo chcesz użyć go do wybudzenia z któregoś z trybów powersave, bo w ATMEGA32 masz INT0 i INT1 i w obydwu możesz ustawić warunki generowania przerwania, sprawdzałem u siebie i mi bascom nie pokazuje takich błędów, a mam wersje 1.11.7.3
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
Jak jest z dokładnością zegarka RTC w Atmega8? Słyszałem plotki, że nie chodzi to zbyt idealnie. Potrzebuję zrobić zegar do zliczania tylko dni i zastanawiam się czy jest sens stosować zewnętrzny układ RTC. Układ musi mieć podtrzymanie zegara z baterii/kondensatora w przypadku zaniku zasilania. Śmiało możesz użyć np. Timer1 w trybie CTC jako generatora...
Mój problem polega na tym, że jak dodamy po Reset Portc.5 a przed Loop polecenie Wait 1 czy np. Waitms 1000 program odczytuje błędne dane jednak zawsze dla każdej z kart takie same. Czy to może mieć z wiązek z użytym przerywaniem? Chodzi o to aby odczytywał jeden raz ID karty i ciągłym przyłożeniu, a nie jak jest teraz że co 100ms bo tak moduł przesyła....
------------------------ Mam jeszcze takie pytanie do użytkownika janbernat bo z tego co wyczytałem w innym temacie: ... Do Kod_kl = Getatkbd() 'odczytanie danej z klawiatury If Kod_kl <> 0 Then Gosub Klawiatura Printbin 144; '144 End If Toggle Portb.2 Loop ... Więc moje pytanie jest bardzo ważne - czy ta pętla działa, czy też mogę zapomnieć...
Witam serdecznie, W bascomie, w chwili wystąpienia zewnętrznego przerwania na jednym z pinów obsługujących takie zdarzenia, program skacze do podprogramu obsługującego przerwanie, po czym wraca do miejsca w którym aktualnie wykonywał się program w chwili jego wystąpienia. Czytałem że można przestawić (wykasować) bity odpowiadające za zapamiętanie w...
Nie wiem o jakie przerwania Ci chodzi zewnętrzne czy wewnętrzne. Uwaga dotyczy przerwań zewnętrznych. Jeżeli ustalisz priorytet dla INT0 a będzie ono reagowało na stan a nie na zbocze to procek nie zauważy przerwania INT1 do czasu wystąpienia stanu wysokiego na INT0. Sposób reakcji ustala się komendą Set (opadające zbocze) lub Reset (niski stan) Tcon.0...
Rozwiązuj problem modułowo,trzeba napisać najpierw najważniejsza cześć czyli obsługa przerwania zewnętrznego.Pin INT0 należy ściągnąć rezystorem stosownie do ustawionego trybu ,jeśli ma wykrywać zbocze opadające to rezystorem do zasilania,jeśli narastające to rezystorem do masy.Wewnętrzny pullup różnie się zachowuje w tej sytuacji. Robi się to tak:...
Kolego, zacznij pisać programy poprawnie, bo na głupie odczytanie przycisku zużywasz pełną moc procesora, o poborze prądu nie wspominając. Wykorzystaj Timery, przerwania zewnętrzne i usypianie procesora, i pochwal się jak program działa. Wszyscy skorzystają, Ty najbardziej.
jak chcesz takie duze czestotliwości mieżyć to musisz użyć timera żeby liczył zewnętrzne impulsy, wtedy drógim timerem wyzwalasz przerwanie co określony czas (im dłuższy tym lepszy bo pomiar dokładniejszy) liczysz ile było ilmpusów z zewnątrz w okreslonym czasie. wydaje mi się że tą metodą dało by sie mieżyć nawet do 100Mhz ale jest jedno zalożenie...
Nie znam za grosz bascoma... Ale ogólnie to tak... Pogonił bym go z wewnętrznej PLL (64MHz) na 16MHz... To samo z zegarem timera... Dzięki temu częstotliwość dla PWM będzie jako taka... W zasadzie to sprowadza się to do zrealizowania timera 12-bit... W C łatwiej mi pokazać o co chodzi niż pisać esej... ISR (TIM1_OVF_vect) { if(timer_compare==timer_counter)...
Nie możesz "przekierować" pinu. Przypisanie przerwania zewnętrznego jest hardwareowe. Generalnie wszystko zależeć będzie od tego jak masz skonstruowaną główną funkcję. Jeżeli stosujesz w niej co rusz jakieś opóźnienia to będzie lipa, ale jeżeli cała główna funkcja wykonuje się szybko, bez zbędnych opóźnień to wtedy bez problemu w głównej pętli analizujesz...
Kolega czytał helpa ? W trybie Power Down, zewnętrzny oscylator zostaje zatrzymany. Użytkownik może przywrócić działanie procesora tylko za pomocą: układu WATCHDOG, zewnętrznego sygnału reset lub za pomocą zewnętrznego sygnału przerwania. (c) Zbigniew Gibek, 2002-2005 (c) MCS Electronics, 1999-2005
Nie bawiłem się ATtiny2313, ale jeśli ma PWM to da się zrobić jakieś odtwarzanie dźwięku z próbek. Robiłem takie coś na ATmega128. Puszczasz generator PWM na najwyższej częstotliwości i jakiś timer do generowania przerwania okresowo. Timer determinuje częstotliwość prókowania. Podczas każdego przerwania timera wpisujesz nową próbkę do rejestru generatora...
Witam, zwraca się z ogromną prośbą do wtajemniczonych w programowaniu w Bascomie. Otóż piszę program do mierzenia obrotów wirnika silnike elektrycznego i wykombinowałem sobie, że to będzie działać tak, że co obrót wygenerowane zostanie przerwanie zewnętrzne a właściwie przepełniony zostanie T2 bo będzie mu brakowalo zawsze tylko 1 do przerwania, a w...
No dobrze BIGJack , napisz swój programik jak najlepiej potrafisz i pytaj dalej o dręczące Cię wyrywki programiku, pomogę :) Aha co do wejścia czujki, to lepiej napisz to na przerwaniu zewnętrznym INT0 (PIND.2), lub INT1 (PIND.3) Nieee nie musisz robić opóźnień na Timerze, lecz jest to wskazane ze względu na późniejsze przyzwyczajenie, a przede wszystkim...
Zrób sprawdzanie portów do których podpięte są przyciski w pętli głównej, albo w podprogramie obsługi przerwania Timera0 - po wyświetleniu cyferek na wyświetlaczach. Zawsze pozostaje jeszcze Timer2 :D, ale jak zapuścisz przerwania z 3 timerów i do tego jakieś zewnętrzne int to mogą być problemy...
W realu wyświetla sie 0 i nic wiecej. Zgodnie z moimi wyliczeniami 8000000 -taktowanie kwarcu dzielone przez 256 -Timer0 jest 8bitowy, dzielone jeszcze przez 256 - prescaler, zliczone raz na 122 razy daje ok 1s. Czy licze coś nie tak? Zresztą nie chodzi mi o czas a o samo działanie timera bo pilnie potrzebuje go do projektu. Przerwania zewnętrzne mi...
Witam, w dobrym kierunku idziesz, ale to ci nie zadziała bo jak? skoro na początku programu tylko raz ustawiasz piny klawiszy jako wejścia oraz pin przerwania INT0 też jako wejście. Więc co ma tutaj wymuszać stan niski na wejściu INT0? nic!. Aby ten sposób zadziałał - musisz jeszcze pomyśleć o zmianie kierunków portów wtedy gdy trzeba. Generalnie założenie...
Pozmieniałem program tak, aby pozostały tylko podprogramy od timera i od przerwań zewnętrznych, resztę wrzuciłem do pętli głównej. Program już nie wykonuje niepoprawnych skoków, ale niestety problem pozostał ten sam
Jak z 9-ciu czujników zsumujesz sygnał i podasz na zewnętrzne przerwanie INT0 , to nie będziesz musiał bez przerwy sprawdzać stanu tych czujników. Jak przyjdzie zewnętrzne przerwanie z któregokolwiek , to zrobisz stop , a później możesz sprawdzić z którego to przyszło.
Przestawiałeś Fuse bity na zewnętrzny kwarc 4MHz? Domyślnie masz 8MHz z dzielnikiem przez 8 czyli 1MHz.
A po co tak teoretyzować - wystarczy zajrzeć do PDF'a scalonego odbiornika TFMS czy TSOP żeby zobaczyć jak należy postąpić nie tylko z linią sygnału wyjściowego ale też jak podać zasilanie. Ludziom nie chce się tam zajrzeć a potem zdziwienie, że nawet jak działa - to jednak jakieś błędy się wkradają, czasem jakieś zakłócenia itp (jak tam już zajrzysz...
1. Włączasz przerwanie przed skonfigurowaniem procedury obsługi przerwania. 2. Całkowicie niepotrzebnie wyłączasz i włączasz przerwanie w obsłudze przerwania. 3. Nie zauważyłem, żebyś włączył podciąganie linii, po której jest zgłaszana przerwanie. Czy masz tam zewnętrzny rezystor podciągający? Jeśli nie - to to jest źródło problemu.
Skoro moje wywody są bez podstawy ... to dlaczego :?: Dziwne, że ten program nawet komplacji nie przeszedł a zgodnie z helpem działa jak należy. Bo kolega , który go tu wrzucił , powinien był załączyć kompletny projekt , a nie tylko samo źródło.Kod , który u niego się kompilował prawidłowo , u Ciebie nie musi , bo masz inaczej niż On ustawione środowisko...
Witaj. Nie ma znaczenia w jakim języku powinien być program. Istotny jest fakt, na co na co ma zareagować. Kliknięcie to pojęcie względne. Nikt z Nas nie ma pojęcia, co ono oznacza. Może na przykład być zdarzeniem na klask dłoni, klikniecie lewym przyciskiem myszki PC itp. Prosimy o więcej szczegółów. Attiny13 posiada przerwania zewnętrzne i oczywiście...
Witam Niech mi ktoś powie dlaczego nie działa mi impulsator pod prockiem ATmega16. Wyprowadzanie A podłączone mam pod przerwanie procesora a drugie sprawdzam w momencie przerwania. Niby wszystko logiczne: jak na kanale B mam 1 to kręcę w jedną stronę a jak 0 to w drugą. Ale jakoś mi to nie chce działać. Kanały już nawet podciągnąłem do plusa zasilania...
R_gora alias PinX.x `wejscie przycisku góra 0 = naciśnięty R_dol alias PinX.x `wejscie przycisku dół 0 = naciśnięty R_stop alias PinX.x `wejscie przycisku stop 0 = naciśnięty Kran_gora alias pinX.x `wejscie krańcówki góra Kran_dol alias pinX.x `wejscie krańcówki dół Roleta alias PortX.x `wyjście Start / Stop 1=Start 0=Stop Kierunek alias portX.x `wyjście...
Te impulsy wejściowe i wyjście ma być na tym samym pinie ? PD.0? Jeśli nie to ustawiamy przerwanie na INT0 i w obsłudze przerwania zwiększamy zmienną. Jeśli zmienna osiągnie dziesięć ustawiamy wyjscie na stan wysoki. Jednocześnie timer zlicza czas pomiędzy impulsami i jeśeli jest większy niż 60 sekund ustawia wyjście na stan niski. Podumowując: Przerwanie...
Witam Zacząłem pisanie programów na AVR w C (Atmel AVRStudio 4) i natrafiłem na problem z obsługą przerwań zewnętrznych, a mianowicie procesor nie obsługuje przerwań zewnętrznych. Użyty kod poniżej [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> unsigned char stan0 = 0; unsigned char stan1 = 0; unsigned char licznik1 = 0; unsigned...
...nóżkę int0 pcf8583 (7) trzeba podłączyć do PD.2 w uC przez układ RC, ponieważ pcf8583 daje przebieg o częstotliwości 1Hz, wypełnienie 50%... a nie chcemy, żeby przerwanie było wywoływane co chwile przez te pół sekundy... :P W takim przypadku , ustawiamy wyzwalanie zewnętrznego przerwania na jedno ze zboczy (opadające lub narastające) , a układem...
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 .
Właściwie to co chcesz w tych przerwaniach robić, bo jak tylko czytać przyciski to troszkę dziwne posunięcie. Możesz sobie skierować sygnał przez diody jak na schemacie z linka na pin od przerwania zewnętrznego i w momencie wciśnięcia przycisku w przerwaniach aktywujesz znacznik, który badany jest już w pętli głównej i jeśli przyjmie on stan zezwolenia...
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...
Rezonatory kwarcowe są dość dokładne: +/- 50ppm, a w kwarcach zegarkowych około +/- 20ppm. Nie potrzebujesz chyba jakiegoś wzorca czasu z dokładnością zegarów atomowych, więc powinien wystarczyć zewnętrzny kwarc.
Kwarc dajesz np. 12 MHz Robisz sobie pętelkę pomiarową wywoływaną z Timera np. co 200 µs sprawdzającą dane wejście pomiarowe. Jeżeli wejście jest =0 to nie zliczasz jeżeli = 1 to zwiększasz zmienną WYNIK o 1 (zmienna 16 bitowa) zakres będzie do jakichś 6.4 sekundy. W pętli sprawdzasz także czy zmienna nie przekroczyła 25000 (5 sekund). Jeżeli...
Możesz zrobić tak: W tabelce zdefiniowana długość poszczególnych elementów (piknięć i przerw). W timerze zdefiniowana maszyna stanów - na podstawie jej stanu aktualnego (wartości timer'a) wybierasz określony "punkt programu" - czyli przerwę lub "piknięcie". Co się tyczy przycisków, to możesz zdefiniować albo przerwanie zewnętrzne, albo w przerwaniu...
Witam! Czy istnieje procedura odczytu sygnału z pilota SONY będąca odpowiednikiem GetRC5 (dla pilotów RC5)? Przeglądałem elektrode, suport na www firmy MCS ale wszystko co znalazłem to dosyć rozbudowane procedury. Poszukuje też materiałów na temat sposobu kodowania IR SONY i ewentualnych innych przykładów procedur odczytu w bascomie. (Procek to ATMEGA8...
$regfile = "attiny2313.dat" $crystal = 4000000 Config Pind.2 = Input Config Portd.0 = Output Config Portd.1 = Output Config Portd.3 = Output Set Portd.2 Przycisk Alias Pind.2 Dim Sekwencja As Byte Declare Sub Pierwsza Declare Sub Druga Declare Sub Trzecia Enable Interrupts Enable Int0 On Int0 Przycisk_przerwanie Do Loop End Przycisk_przerwanie:...
Zastanawia mnie ocena tego postu przez innych użytkowników Mnie też zastanawia za co mnie zminusowali... Czyżby, zgodnie z sondażami, większość Polaków miało problem z czytaniem ze zrozumieniem? W sensie czy wykorzystujesz jakieś sprzętowe peryferia typu przerwania zewnętrzne/ timer Dobre pytanie. Niekoniecznie mógł wykorzystać UART, więc chyba kręci...
Ok, tylko co jeżeli chciałbym żeby był np taki efekt: dioda świeci 4 sekundy na zielono, pozniej 4 sekundy na czerwono i powiedzmy 4 sekundy na żółto, jeżeli czas świecenia zrealizuję za pomocą funkcji Wait , to nici z obsługi przycisku w petli głównej, jeżeli bym to zrobił przerwaniem zewnętrznym wówczas program najpierw obsługuje przerwanie i sterowanie...
Przeczytałem to co jest wyżej napisane i... nie rozumiem co chcesz zrobić :) Co to znaczy: Potrzeba mi zapamiętać max. 4 liczby które będą następować po sobie dość szybko jednak Atmega potrafi je zdekodować bo jak dobrze się przypatrzę to liczby się zmieniają dobrze, i więc właśnie niech ktoś podpowie, co dopisać by procesor zapamiętał liczby i ustawił...
Zewnętrzne przerwanie nie ma nic wspólnego z WAITKEY. WAITKEY czeka do czasu aż coś odbierze. Jakie błędy przy INKEY? Coś źle zrobiłeś.
W podstawowej wersji 8051 masz tylko dwa przerwania zewnętrzne P3.2 i P3.3. Jeśli je włączysz programowo to tylko te piny reagują na sygnał przerwania czyli podanie na piny zera. Pozostałe piny portu zachowują się normalnie.
Ok. Jednak naciśnięcie przycisku bez wywołania reakcji (potwierdzenia) jest co nieco denerwujące. Przydałaby się jakaś dioda led albo sygnał dźwiękowy. Podpowiem, że w tym przypadku prosiłoby się też użycie przerwań zewnętrznych. W końcu płacąc za procesor płacimy za cały sprzęt.
Tak na oko wydaje się być OK, skoro przerwania przychodzą to oznacza że odbiera pakiety. Na początek zmnień wartość Dcrval na &H48 i zobacz co się stanie. Dalej zmień wartość Imrval na &H1F (aby uaktywnić raportowanie o błędach). Następnie spróbuj odczytywać także wartosć rejestu RSR o adresie &H0C (tak jak RCR tylko do odczytu) i daj znać o efektach....
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
Umieść kod programu, to może ktoś pomoże. Ja akurat z Bascomem nie miałem doczynienia. Pozdrawiam Adam P.S. Na tym pinie masz również przerwanie zewnętrzne INT5, może to jest przyczyna.
Bo niestety muszę zegarek rozbierać No niestety w tym trybie nie uzyskasz stabilnej sekundy, tym bardziej, ze Bascom w obsłudze przerwania może robić zbędne bzdury i jeszcze nie raz ten zegarek będziesz rozbierał. Do konstrukcji czasomierza najbardziej się nadaje asynchroniczny licznik Timer2 w trybie CTC, taktowany specjalnym rezonatorem kwarcowym...
Szkoda że na '51, bo na AVR było by łatwiej. Można to zrobić tak: Procki '51 mają wejścia zewnętrznego przerwania wyzwalanego stanem niskim, lub zboczem opadającym. Ciebie interesuje to drugie (bo zboczemn narastającym się nie da jak w AVR). Nie wiem jak wygląda konfiguracja przerwań w BASCOMie, zobacz w dokumentacji, ale podejrzewam że coś w rodzaju:...
Ano właśnie nie wyobrażam sobie jak to zrobić prockiem bez zewnętrznego źródła przerwania. A co do schematu to wszystko jest jak w notach przykazane. A skoro już procek czai się na przerwanie z RTC to przy okazji może czaić się i na to z klawiatury. Tutaj chyba nawet uA żadnych nie oszczędzę. (at)Niveasoft, jednak będę się upierał że jak na język wysokopoziomowy...
Możesz użyć procesora który ma obsługę tylu przerwań ile masz kół pasowych. Zdaje się że ATtiny2313 ma możliwość obsługi do 8 zewnętrznych przerwań zatem on by się pewnie nadał, tyle że ma 2kB flash'a i może ci się program w bascomie nie zmieścić
bascom przerwania zewnętrzne przerwania zewnętrzne przerwania zewnętrzne atmega16
kineskop telewizor panasonic smilo programowanie projekt rozdzielnicy jednofazowej
Moment dokręcania panewek głównych wału korbowego BMW N63B44B Tryb serwisowy pralka Samsung EcoBubble - jak wejść?