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...
Witam Chciałem zrobić prosty sterownik światła na pilota. Poniższy kod nie daje się skompilować - czy są jakieś przeciwwskazania do pracy Attiny45 + RC5 ? [syntax=basic4gl] $regfile = "attiny45.dat" 'etykietka mikrokontrolera $crystal = 9600000 'standardowy zegar wewnetrzny $hwstack = 16 ' rozmiar stosu sprzętowego $swstack = 16 ' rozmiar stosu programowego...
Witam wszystkich :D Zanim zalozylem ten temat b. duzo szukalem tego co potrzebuje i wiem ze bylo juz pisane na ten temat ale nie znalazlem nic konkretnego wiec pisze . A chodzi mi o to ze potrzebuje napisac program w bascom do attiny 2313 ktory mial by utrzymywac procka w trybie uspienia a gdy wcisne jeden z 2 guzikow to ma sie obudzic wyslac dany kod...
Nie jestem pewien, ale wybudzanie da się chyba tylko stanem nie zboczem... doczytaj w dokumetacji:> Przed uśpieniem(procek wykonuje kod) , INT0 może być ustawione na falling , ale przed wykonaniem instrukcji SLEEP , należy zmienić sposób wyzwalania na LOW LEVEL i ... włączyć przerwania , jeśli usypiamy proca w przerwaniu. Poza tym , bit ISC01 może...
Musisz zaznaczyć cały tekst który chcesz pokazać jako kod, a następnie zaznaczyć napis Code $regfile = "attiny2313.dat" $crystal = 8000000 'kwarc 1MHz $prog &HFC , &HE4 , &H9F , &H00 ' generated. Take care that the chip supports all fuse bytes. Config Timer1 = Timer , Prescale = 64 'timer1 jako licznik 15536 Config Int0 = Rising 'detetor zera...
pier - twój program działa bardzo dobrze, dokładnie tak jak go napisałeś. A że napisałeś go badziewnie to taki masz efekt. Błędy: 1) W przerwaniu INT0 wyskakujesz z niego GOTO do głównego programu, tak nie można. Wyjdź z przerwania komendą RETURN, ale na jego końcu a nie przez podmianę GOSUB. Powinno być: If Sw = 1 Then Powerdown i RETURN na koncu....
Do odczytu stanu portu służy rejestr PIN. Czyli masz źle zrealizowane warunki w funkcji przerwania.
Ach Chorwat.....cały czas jest tak samo... próbowałem ręcznie podciągać i ustawiać wartość pin'u przerwania na 1 i na 0, nawet zmieniłem przerwanie na Int0... myślę, że po prostu Bascom albo Attiny tu wysiada :cry:; chyba czas sie przesiąść na C albo Asm'a...oj będzie ciężko. Pomimo tego wciąż liczę na cud :D, że ktoś wymyśli coś co mi pomoże.
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 i Timery to rozwiązanie idealne i książkowe, na początek, ale tylko do nauki możesz zrobić na Wait'ach, ale nie polecam tej metody bo prowadzi do złych nawyków...
Spróbuj zrobić tak Co4ms: 'procedura obsługi przerwania od Timera T/C0 wykonywana co 4ms Timer0 = 6 'załaduj do Timera0, żeby zliczył 250 (=256-6) impulsów Incr Licznik If Licznik = 6 Then 'zmienna Licznik liczy do 6 aby Licznik = 0 'sprawdzanie stanu przycisku następowało If Pind.0 = 0 Then 'co ok.24ms If Pomoc = 1 Then 'jeśli zmienna Pomoc...
Koledzy, nie wiem jak to jest w Attiny, ale spotkałem się z dwiema rzeczami w innych uC: 1. Timery mają własne przerwania, czyli nie musisz zajmować żadnego innego przerwania, które może Ci się przydać do czegoś innego. 2. Jest coś takiego jak priorytet przerwań, zatem jeden z timerów będzie ważniejszy, jeśli obydwa naraz wygenerują przerwanie.
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...
co do bascoma, to może kolega zumek tu zajrzy wtedy napewno coś poradzi ;) a jak nie to znajdź go i zapytaj na PW pozdr Bascom w tym przypadku nie ma nic do rzeczy , a przyczyna jest prozaiczna ;) Procek idzie spać w przerwaniu , a w takim przypadku WSZYSTKIE przerwania są wyłączone :D Już mi pora , przejść w STANDBY ;) Piotrek
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...
Podejrzewam, że te Waitms w obsłudze przycisków blokują wyświetlanie. Spróbuj je do testu usunąć. Oczywiście przyciski nie będą wtedy działać poprawnie, ale sprawdzisz wyświetlanie. Obsługa wyświetlania powinna być przeniesiona do obsługi przerwania, ale to już większa przeróbka programu. To przygasanie tak bardzo przeszkadza?
Dawno Bascoma nie używałem ale to będzie coś takiego: On int0 czas 'przerwanie zewnetrze (wejście impulsów) do czestotliwosc=1/czas 'obliczenie czestotliwosci z czasu pomiedzy impulasmi loop czas: stop timer0 'zatrzymaj timer czas=timer0 'odczyt z timera timer0=0 'wyzerowanie timera start timer0 'ponowne uruchomienie timera return Oczywiście...
A może wyłumaczyć mi ktoś tak jaśniej niż whelpie bascoma ;) co to jest ten prescaler i co on dzieli. Może tak po kolei jak twój program widnieje: 1. Jeżeli PORTB jest przeznaczony do obsługi LCD to nie konfiguruj go w ogóle w stylu jaki podałeś w pierwszym poście. Config Portb = &B11111111 : Portb = &B11111111 ===> źle!!! Może to powodowac zakłócenia...
Problem nie jest mały. Musisz poczytać o przerwaniach i Timerach. W helpie po polsku napisanym przez Zbigeen i umieszczonym na stronie Bascoma. I zapomnieć na jakiś czas o wait. Bo w takim "liniowym" programie bez przerwań to tego się nie da zrobić.
GETRC5 używa licznika TIMER0. Albo TIMER2 jeśli go układ posiada i tak go skonfigurujesz w CONFIG RC5. Aby ustrzec się dziwnych błędów (z adresami linii poza programem) nie zapomnij o wpisaniu nazwy pinu w CONFIG RC5. Sam kod bazuje na dokumentach ATMELa: http://www.atmel.com/dyn/resources/prod_... I tam można całą procedurę prześledzić....
Lecz zrobiłem sobie testy: Że na wyświetlaczu wyświetlam wartość B, i jak się okazało, jeśli zamienię Config Timer0 = Timer , Prescale = 1 na Config Timer0 = Timer , Prescale = 8 to wartość B zmienia się szybciej! Dlaczego tak się dzieje? Może dlatego że jest jest prescale =1 to przerwanie jest wykonywane co 32us czyli w czasie tego waitams 20 trafia...
Dosyć odważnie sobie poczynasz na mikrokontrolerze mającym 2kB Flash i 128B SRAM :D ale do odważnych świat należy. Odchudziłem Ci trochę kodzik. Obsługa przerwania timera została stuningowana moim programem NoSave Tool. Teraz mikrokontroler nie odkłada na stos większości rejestrów a tylko te potrzebne - w tym przypadku tylko jeden :D Przekłada się to...
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...
Zobacz jak ja to zrobiłem na Mega8 http://obrazki.elektroda.pl/8838731900_1... Program jaki zastosowałem korzysta z przerwania INT0 które po naciśnięciu klawisza wyprowadza procesor ze "śpiączki" , wysyła dane na IR i usypia go ponownie.Dla mnie takie rozwiązanie jest lepsze niż chwilowe zasilanie procesora poprzez diody. Poniżej wklejam...
Akurat ważniejszy jest mały spadek napięcia, żeby stan niski pozostawał niskim również za diodą. Zrobiłem szkic pokazujący o co chodzi w tym różniczkowaniu i ANDowaniu: http://obrazki.elektroda.pl/7732349900_1... Przy zwykłym różniczkowaniu widać, że brakuje szpilki wskazującej początek impulsu pierwszego kanału. Można ją odtworzyć...
Może spróbuj w ten sposób : $crystal = 4000000 Config Pind.5 = Output 'ustawienie wyjścia na pinie który standardowo sygnalizuje przepełnienie timer-a Config Timer0 = Timer , Prescale = 1 'ustawienie timer1 dzielnik 1 On Timer0 Przerwanie_timer1 'wywołanie przerwania po przepełnieniu timera Timer0 = 145 'wartość początkowa od której timer bedzie zliczł...
Funkcja WAITMS nie jest odporna na przerwania. Jeśli masz jakieś to każde wystąpienie przerwania w trakcie WAITMS rozjedzie go. Niezależnie od stabilności tej funkcji, a nie ma powodu, żeby nie była powtarzalna jeśli nie jest przerywane wykonanie przerwaniami, to i tak lepsza praktyką będzie wykorzystanie timera.
Po co stosować tu przerwanie? Kardynalny błąd to stosowanie polceceń opóźnień w przerwaniach. W tym programie problem tkwi w: If Przycisk = 0 Then Waitms 100 If Przycisk = 0 Then Incr Sekwencja If Sekwencja = 0 Then Incr Sekwencja If Sekwencja = 4 Then Sekwencja = 1 End If End If End If End If Popraw na: If Przycisk = 0 Then Waitms 100 If Przycisk =...
Witam Piszę program pod sterownik na attiny2313. Na chwilę obecną jest obsługa wyświetlacza LED 3 cyfry multipleksowanego przerwaniami z timer0. Chciałem wprowadzić attiny w tryb power down. Jak doczytałem tryb powerdown powinien ustawić wszystkie porty w tryb wysokiej impedancji więc spodziewałem się, że gdy wejdzie w ten tryb to wyświetlacz zgaśnie....
To że można go obsługiwać z przerwaniami nie oznacza że jest obsługiwane z przerwaniami. Proponuję zerknąć do biblioteki MMC.LIB. Dodano po 2 Może być: Dim Pixel_buffer(2) As Byte At K Overlay Liczba "2" nic nie zmienia.
Jakie są polecania w bascom do obsługi pcint0 potrzebuje uruchomić to przerwanie w attiny 13. Gdyby ktoś jeszcze wiedział czym sie różni to przerwanie od ont0 to byłbym wdzięczny za podzielenie sie wiedzą.
Słyszałem o przerwaniach, ale trzeba by brać poprawkę na czas potrzebny do obsługi przerwania.Zauważ ze z każdą inkrementacją sekundy błąd stale rośnie. Kiedyś napisałem zegarek w BASCOMie właśnie z użyciem przerwań i po kilku tygodniach widać było wyraźne odchylenia, natomiast w zegarku z użyciem PCF8583 nie ma takiego problemu.
O układ DS3231 lekko zahaczyłem (...) Cenę sprawdziłeś? Dodano po 1 W pętli głównej procesor nie robi nic. ************************************* Do Loop End ************************************* Oznacza to, że czas odmierzasz w przerwaniach. Mam nadzieję, z timer pracuje w trybie CTC. W takiej sytuacji w pętli głównej usypiaj procka. Bascom ma odpowiedni...
Napisz tak: Dim Zmienna As Byte Zmienna = 0 Config Intx = Low Level | Rising | Falling [ | Change ] 'Konfiguracja reakcji na sygnał przerwania 'za x podstaw nr przerwania wybierz jeden ze sposobów pobudzenia kocówki uC Enable Interrupts 'Uruchomienie przerwań globalnych Enable Intx 'Uruchomienie przerwania INTx On Intx Obsluga_przerwania 'wskazanie...
łatwiej się już chyba nie da. Sorki, ale ja bym raczej powiedział, że: "JUŻ GORZEJ SIĘ NIE DA :(" Co to za rozwiązanie gdzie w środku siedzi jeszcze obrzydliwy Wait !!! brrr ale żeby nie być gołosłownym, który tylko krytykuje.... Ok, panowie - widzę, że wasze zmagania spełzają na niczym, pokażę wam więc jak się powinno podchodzić do programowania....
A na jakim to jest procku? ATMEGA czy ATTINY? Dużo zależy od czystości sygnału i jego amplitudy. Zliczanie można zrealizować na przerwaniu INT0 ale wczśniej dobrze aby sygnał przepuścić przez komparator aby ukształtować ładny prostokąc, można też wykorzystać wbudowany w procek komparator analogowy.
Dane odbieraj w przerwaniu. Jak natrafisz na znaki "AT" to rozpoczynaj zliczanie 154 bajtów po czym ustawiaj flagę "Data_ready" czy jakąś taką i znowu czekaj na znaki "AT". A jak chcesz odbierać dane o rożnych długościach to czekaj na znaki "AT" i ustawiaj flagę po ich odebraniu. Tyle że odebranie poprzedniej ramki będzie wymagało pojawienia się początku...
dlatego też proponuję ci jak najwięcej posługiwać się etykietami, zresztą w przypadku zmiennych już to robisz ale warto też robić to w przypadku stałych, np adresów przerwań, adresów pamięci itp... ... skąd brać te nazwy? - zajrzyj sobie do plików typu def (definicje dla danego procka) i tam masz wszystko dokładnie - wystarczy tylko użyć kopiuj wklej,...
Chwile mnie nie było :D Napisałbym to inaczej, ale wracając do pytania z pierwszego postu . Jeśli chcesz by procesor zawsze był tak samo zajęty to każ mu w tych innych Case`ach także nadawać Pulseout tylko na pin Reset. Bascom to przełknie bo ten pin może pracować jako normalny I/O ale jak jest resetem to nic mu się nie stanie jak napiszesz Pulseout...
...a tak z ciekawości zapytam jak długi zadeklarowałeś ten string LINIA ??? skoro jak rozumiem obsługujesz zapewne SMSy. To chyba długość co najmniej 160 hmmm ??... U mnie , zmienna Line ma rozmiar 30B , ponieważ pobieram do niej tylko ... jakby tu powiedzieć ... mnemoniki komend AT i ich parametry , a SMS-a dekoduje "w locie" , w czasie przerwań od...
Musisz przemyśleć algorytm działania programu. Po pierwsze te mrugające diody zrób na przerwaniach z jakiegoś timera. Ustaw przerwanie tak żeby występowało kilka razy na sekundę i zliczaj ilość przerwań do 2 sekund i raz zapalaj raz gaś to bardzo proste do zrobienia. Co do pozostałych to attiny ma 4 kanały PWM a z tego co zrozumiałem to wystarczą ci...
A jakie zastosujesz czujniki do pomiaru tych prędkości? Podejrzewam że te obrotomierze wykorzystywały przerwania tylko na INT0 i INT1 a nie na PCINT7...0. str.62 dokumentacji.
Po pierwsze to po resecie mikrokontrolera piny są ustawione jako wejścia więc nawet nie trzeba tego robić Po drugie to kierunek ustala się za pomocą rejestru DDRx a nie PORTx (to nie Bascom) Po trzecie to musisz doczytać jeszcze o przesunięciach bitowych bo szybko na tym polegniesz w C. To podstawa. Po czwarte to klawisze (słicze) musisz mieć albo podciągnięte...
Jeżeli ktoś by chciał obsługę USART do attiny 2313 bądź atmega32 w *.C, to mam przerobiony pod siebie kod. W C czasami brak poprawnego działania RS'a może być spowodowany tym że wpisze się wektor przerwania od uart'u a nie od uasart'u, rózni sie w nazwie dokładnie tymi wyrazami.
Może odpal jakiś Timer żeby generował przerwanie bardzo często. Powiedzmy co 10us. I w przerwaniu sprawdzaj czy pin ma stan 0 czy 1. Jak 1 to inkrementujesz jakaś zmienną. Jak zmieni się na 0 to zwracasz wynik i zerujesz tą zmienną. Oczywiście w tym samym przerwaniu sprawdzaj tak samo drugi pin. Niestety wymaga to kodu obsługi przerwania w assemblerze...
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...
A cóż to jest "atiny5213"? Piszesz: "o kompilatorach C to można było pomarzyć" a wklejasz kod w Bascomie? O co Ci tak naprawdę chodzi? Jeśli ten procesor to jakiś gorący AVR o którym Google jeszcze nic nie wie to: 1. Da się. Czytaj rejestr PINB. 2. Przerwanie to w Bascomie URXC, a w C to ISR(USART_RXC_vect)
Mimo że port ma 7 wyprowadzeń to zawsze ustawiaj 8 bitów, bo to wciąż port 8-bitowy tylko że z obciętymi nóżkami. Regulację szybkości robi sie łatwo. Dodajesz jakąś zmienną np LICZ i teraz co każde wejście do przerwania timera to zwiększasz tą zmienną o 1. Teraz porównujesz ją z drugą zmienną np SZYBKOSC. Jeśli LICZ > SZYBKOSC to wykonujesz zawartość...
PCINT to specjalne przerwania aktywowane zmianą stanu pinu. Dodatkowo wszystkie przerwania PCINT w tych procesorach wywołują jedno przerwanie, w którym należy programowo określić, który pin je spowodował ważny jest też rejestr PCMSK, który odpowiada za maskowanie nieużywanych przerwań. Polecam lekturę datasheetów tych procesorów w celu dokładnego poznania...
Teraz nie rozumie juz nic. Z tego co bascom robi w powerdown.Wygląda jakby tylko włączał zezwolenie na tryby uśpienia. Czy ja coś źle odczytuje? Czy kolega Zumek mógłby napisać w ASM przejście do ST-BY dla tego Attiny? Bo według mnie było by to tak: $asm !IN R24,mcucr !ORI R24,0x20 !Out mcucr , R24 !IN R24,mcucr !ORI R24,0x50 !Out mcucr , R24 SLEEP...
(...) ' 5 Data 250 ' 6 Data 131 ' 7 Data 251 ' 8 Data 219 ' 9 Wstępna ocena dostępnych informacji W kodzie widzimy dwa liczniki (Liczba_ok i Liczba_nok) zadeklarowane jako zmienne typu Word, a także tablice na cyfry (Cyfra_ok i Cyfra_nok) jako typ Byte. Z punktu widzenia zakresu wartości samych liczników (od 0 do 999) nie powinno to powodować błędów...
W takim razie pozostaje asembler lub c. (Czarno to widze) Takie proste zmiany stanów na portach są bardzo zgrabnie "pisywalne" w asm. Ja się wysypałem dopiero przy przerwaniach i próbach transmisji danych :-) Ale, w tym przypadku, polecam AT902343 . Bascom go programuje wedle oczekiwań.
Tutaj masz instrukcje http://www.elektroda.pl/rtvforum/topic33... Jak "wyskoczą" Ci takie znaki " tutaj kod Dodano po 1 Widziałem już kilka razy tę dziwną konstrukcję programu bo wielu ją powtarza jak włączanie przerwań w przerwaniu by odebrać kod RC5. Wracając do tematu kiedy usypiasz procesor to on dosłownie zatrzymuje się na linii kodu "Powerdown"....
Kombinujecie jak koń pod górę. W helpie Bascoma jest przykład jak obsłużyć klawiaturę bez przerwań i działa bez zarzutu, sprawdzałem.
Bardzo bym sie zdziwil gdyby ten program w jego oryginalnej postaci lub nawet z pozniejszymi poprawkami mogl funkcjoniwac! Po pierwsze: Jest on nie pelny, nie tylko brak jak juz ktoz zauwazyl, deklaracji rodzaju, typu uC i jego cyklu pracy (czestotliwosci). Pomimo faktu ze nie ma w programie pomiarow czasu to ta informacja nie moze byc pominieta. W...
No, coś mi się wydaje, że jednak może nie do końca rozumiesz właśnie to wszystko i stąd takie podajęcie. Co to w ogóle dla ciebie znaczy, że: Bo niby po czym innym program ma poznać czy odczytane dane pasują w tym określonym miejscu ? .... toż twoja próba obsługi tego przerwania - pokazuje, że w 1000% mógłbyś wykorzystać mechanizm z Bytematch Ustawiłbys...
Masz chyba błąd w założeniach konfiguracji Timera. Licznik ustawiony jako Counter po prostu liczy impulsy z zewnątrz- prescale nie powinno być- bo to nie jest Timer tylko Counter. Rejestr Capture też w tym wypadku jest użyty bez powodu- nie ma do niego żadnej obsługi przerwania a i zezwolenie na przerwanie nie jest ustawione. Zezwolenie na obsługę przerwania...
Witam, Na wstępie chciałbym powiedzieć, że zanim zdecydowałem się napisać ten post, używałem szukajki na tym forum i wujka google ale bez pozytywnych rezultatów (przeczytałem bardzo wiele tematów i skopiowałem wiele kodów). Przejrzałem także plik Help w Bascom. Problem polega na tym, że funkcja getrc5 zwraca zawsze wartości adresu = 255 oraz komendy...
-Konfigurujesz Timer na stałą, krótką wartość czasową. -Tworzysz tablicę do której wpisujesz czasy poszczególnych sygnałów. -W procedurze przerwania dekrementujesz pobraną zmienną z Tablicy (w tej procedurze nie rób pętli tylko dec). Gdy zostanie wyzerowana pobierasz następną zmienną. inny sposób: -Konfigurujesz Timer jako czasomierz. -Tworzysz tablicę...
Witam W prockach dopiero raczkuje. Robię obrotomierz do samochodu (choć można zastosować to wszedzie). Oparłem to na atmega16 bo taki akurat teraz mam, ale docelowo ma byc na 2312.Na razie jest wszystko w fazie testowej na biurku, ale założenia są takie: na kole zamachowym umieszczam siakiś czujnik, podaje to na układ formowania impulsu, z którego będę...
(at)airman, bój się Ty Boga... Weź na warsztat i przeanalizuj jeden z moich bardzo prostych programików to może nieco Ci się rozjaśni na temat przerwań, liczników, klawiszy, itp... : [url=http://www.elektroda.pl/rtvforum/to... na Attiny 13
Jak skomunikować dwa mikrokontrolery np: ATtiny2313 przez szynę I2C? Dokładnie chodzi o to aby odbierający po zgloszeniu przerwania odebrał pakiet danych z pierwszego. Najlepiej w Bascomie. Docelowo uklad ma byc taki aby nadawał jeden procesor do wybranego jednego z kilk (kilkunastu) odbierających.
Niestety Jak dam instrukcję ustawienia bufora to już nic nie odbiera (nadawać nadaje). A włączyłeś przerwania :?: Bez bufora(przerwanie RX) , ciężko dogadać się z fonem :( Właśnie zauważyłem że jak zepnę RX z TX uP (wywale printa z głównej pętli i dam wait na 5sek. ) to odbiór też jest na 3 znaki :/ Czy wiesz jak wygląda transmisja asynchroniczna ,...
Program o który mi chodzi miałby działać tak: mierzę napięcie na jednym z pinów, jeśli jest ono mniejsze niż pewna określona wartość to na innym pinie pojawia się bardzo szybki przebieg prostokatny, powiedzmy 600kHz. Napięcie wzrasta- na wyjściu jest 0. Teoretycznie można by to zrealizować za pomoca przerwania: Maksymalna częstotliwość TINY13 to 9,6Mhz....
Przy "zabawie" z przerwaniami trzeba pamiętać , by czas obsługi przerwania był krótszy od czasu pomiędzy przerwaniami. Czyli jeżeli ktoś chce w przerwaniu obsługiwać przeliczenie zmiennej zmiennoprzecinkowej , wyświetlacz itp a następne przerwanie przyjdzie np po 100 mikrosek to niech się nie dziwi , że program "wisi". Problem z BASCOM'em jaki miałem...
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....
Te 6 przycisków połącz z jednej strony do 6 pinów a z drugiej wszystko do INT0 lub INT1. Przed położeniem procka spać pin przerwania ustaw jako wejście i podciągnij, pozostałe 6 pinów jako wyjścia w stanie niskim. Naciśnięcie któregokolwiek przycisku spowoduje wybudzenie procka (wybudzaj stanem niskim lub zboczem opadającym) a po wybudzeniu OD RAZU...
Witam ponownie. Chciałem odświeżyć temat. Mianowicie napisałem kod który będzie zliczał ilość impulsów w czasie 1 sek i zapalał diodę jeśli przekroczy limit. .............. Poniżej kod: Oczywiście, tak ma być z tymi dziwnymi objawami. Po pierwsze; Attiny 13 nie ma 'praktycznej' możliwości pracować przy 1 MHz; możesz skonfigurować go dla: 1.2 MHz; 4.8...
Witam wszystkich wszech wiedzących. Mam taki drobny problem, otóż w zestawie uruchomieniowym zl11avt zaprogramowałem mikrokontroler attiny 2313 żeby na wyświetlaczach led był zegarek z budzikiem. Po zastanowieniu sie zobaczyłem że mam 4 porty wolne i mogę wykorzystać je do czego chce. Chciałbym żeby to był normalny zegarek ale gdy na PD2. (wolnym) pojawi...
1. brak rezystora podciągającego na linii reset. 2. procesor na 3V zadziała, ale musisz sprawdzić konkretny model diody IR LED i jej prąd 3. co to za dziwadła z tymi diodami? Użyj wewnętrznego podciągania, potem switche podepnij przez diody 1n4148 do któregoś przerwania sprzętowego, którym będziesz wybudzał uP ze stanu uśpienia. PS. poszukaj w sieci,...
Cytat z książki Wiązani: "Funkcja oczekuje na odebranie znaku z klawiatury, czyli wstrzymuje działanie programu. Przerwanie pętli oczekiwania może nastąpić przez ustawienie zmiennej Err, na przykład w podprogramie obsługi przerwania". Przyznam, że robiłem coś kiedyś na klawiaturze AT, ale nie kombinowałem z "wstrzymywaniem" programu.
To co napisałeś to pewnie bascom ,ale po pierwsze nie używasz przerwania int0 tylko portu jako wejścia . Żeby używać int0 jako przerwania powinieneś po pierwsze skonfigurować jakie zdarzenie na int0 ma wywołać przerwanie zmiana stanu , poziom .Zezwolić na obsługę przerwania int0 i odblokować globalnie przerwania . po wystąpieniu zdarzenia nastąpi skok...
To pewnie wynika z tego że powstało dużo różnych AVR`ów. Jeśli na początku ktoś korzystał tylko z jednego typu to mógł sobie w IDE ustawić konfigurację dla stosów a nawet wyświetlacza LCD czy I2C. Stąd dla wstecznej kompatybilności dalej tak można zrobić. Na przykład ustawienia dla stosów są tutaj tylko moje są już zmienione bo mogę szybko wkleić to...
Odblokowywałem przerwania w przerwaniu od timera1, ale to także nie dało skutku. Dzisiaj jeszcze może trochę pokombinuje. Jeśli się nie uda to dam jakiś attiny tylko do dekodowania RC5 na małej płytce. Przewidziałem, że mogą być z tym problemy więc mam na płytce miejsce na taki moduł do odbioru RC5.
Narazie odpuszczam tryb powerdown aż nie zrozumiem dokładnie o co chodzi z flagami. ] Teraz diody migają ale całkiem inaczej niż przewiduje program i dzieje się to niezależnie od stanu przerwania int0. Czy jeszcze gdzieś jest błąd? Program jest dość krótki, niemniej jednak jest w nim kilka pdstawowych błędów. Zwróć uwagę na: Int0 masz na wejściu PB1,...
Układ działa tak jak napisany kod, to znaczy (bez urazy) - bez sensu! Co niby miałoby być wyświetlone w tych 2-ch liniach na LCD ? Przestudiuj tą strone (jest to strona polska lecz w j. angielskim). Link do wersji polskiej tej strony nie jest aktywny.... Ponadto w tym tutorialu zastosowano wyświetlenie wyniku na wyświetlaczu 7-segm LED, oraz do obliczeń...
No własnie - jakoś tak sie zastanawiałem nad pracą w przerwaniach - ale jak to sie nazywa - że nie używana umiejętnośc zanika :) Musze zbudować nowy układ na płytce uniwersalnej żeby nie grzebać już w zmontowanym urządzeniu . Robie przysługe kuzynowi bo zbudował wzmacniacz w klasie A , i w dodatku marzy mu sie sterowanie pilotem :D Osobiście zrobiłbym...
Na szybkiego napisałem taki kod, ale na tiny2313 bo tiny13 nie posiadam. $regfile = "attiny2313.dat" $crystal = 4000000 Ddrd = &B1111000 : Portd = &B0111111 Ddrb = &B11111111 : Portb = &B11111111 Dim Temp_on As Byte , Temp_off As Byte , Temp_adr As Byte Dim Adres As Byte , Komenda As Byte , Odebrano As Bit Dim Licz As Byte , S1 As...
Witam! Nie mogę pozbyć się problemu żarzenia diodek w matrycy led. Przesówam na matrycy jakiś tekst w lewo, na kolumnie poprzedzającą aktywną kloumne, zaczynają się żarzyć te diody które świecą na aktywnej kolumnie. Co daje taki bardzo głupi efekt smużenia do przodu:cry: Kod programu opieram w większości o kod z książki Pana Marcina Wiązania. Zakładma...
Znalazłem specjalnie dla Ciebie jeszcze kilka bajtów :D ahahahahaha Bascom stara się być "ignorantoodpornym" czyli jak ktoś może czegoś nie wiedzieć to on to, na wszelki wypadek, robi za niego. W języku C każdą zadeklarowaną zmienną najczęściej inicjuje się jakąś wartością ponieważ po reset nie można być pewnym, że w niej znajduje sie zero lub potrzebna...
Jest niemozliwe poniewaz zastosowale petle Do Loop z ktorych nie ma wyjscia (Loop jest przed Return) Lepiej bedzie jak odczyt klawiatury zrobisz na przerwaniach. I wtedy bedziesz bez problemu mogl wywolywac nieskonczone procedury. Zawsze kiedys przyjdzie przerwanie ktore bedzie moflo sprawdzic klawisz i wywolac inna procedure jesli zajdzie taka potrzeba....
Mruga bo zrobiłeś totalny groch z kapustą w tym kodzie. Dobre - bo takiego pomysłu to jeszcze nie widziałem - żeby procedura obsługi przerwania była jednocześnie ciałem jakiegoś podporogramu z którego na dodatek wywoływane są inne podprogramy a jak do tego dodać jeszcze polecenia Waitms w przerwaniu to na prawdę nie ma o czym mówić - musi tak być -...
Przykładowy program posiada wprawdzie tylko sterowanie diodami w pętli, ale właśnie tam w tej pętli głównej umieszcza się też badanie przycisków (albo czujników). Mój program jest tylko szkieletem-procedurą w przerwaniach, która steruje odpowiednimi portami. Jeśli są potrzebne dodatkowe zmienne sterujące to należy ich sobie po prostu zadeklarować w...
Jako ze nie bardzo czytałem na temat generowania sygnalu VGA czy da sie wygenerowac na tym Attiny obraz o rozdzielczosci 1280x1024 ? Może się da. Metoda jest następująca: - wygenerować prawidłowo sygnały synchronizacji dla 1024 linii - w pozostałym czasie wewnątrz przerwania wygenerować treść obrazu Tak na prawdę to obraz z testera ma rozdzielczość...
Witam ponownie, Mam nadzieję, że tym razem mój program wygląda nieco lepiej. A oto kod: Bez urazy ale to nie jest poprawna droga do programowania µC. Popatrz na gotowy przykład z tej strony: http://www.edn.com/contents/images/51205... Podpowiem ci więcej; skonfiguruj Timer1 z prescalerem 1024. W przerwaniu od INT1 lub INT0 (bez znaczenia) "łapiesz"...
Bo obsługa przerwania też zajmuje trochę czasu- ileś taktów zegara. Bascom jest "bezpieczny" dla użytkownika i odkłada na stos wszystko- a nie tylko to co potrzebne. A potem zdejmuje ze stosu. Ale za to działa wolno. Spróbuj : on timer0 etykieta przerwania nosave. Ale to będzie szybsze i mniej bezpieczne. Albo ASM.
Witam, Z racji ograniczonej ilości portów, zostałem zmuszony do multipleksowania dwóch wyświetlaczy LED 7 segmentowych poprzez rejestr 74HC595. Na początku dla testów napisałem krótki programik. Program działa, lecz ......... Myślę sobie: poczekam parę milisekund po każdej cyfrze. Wstawiłem w pętli głównej waitms 1 i jakie jest moje zdziwienie że po...
Tutaj mam tekst z Helpa Bascoma W czasie działania funkcji używany jest licznik TIMER0 i związane z nim przerwanie. Licznik ten jest służy do generacji wymaganych opóźnień podczas próbkowania sygnału. TIMER0 może być dalej używany przez program, lecz należy się liczyć z wynikłymi opóźnieniami, gdy wykonywana będzie funkcja GETRC5(). Jest tylko...
$regfile = "attiny2313.dat".dat ? tu coś nie tak ;-) Ale to chyba nie powód błędów... Hmm, jak tak patrzę to trochę zastanawiają mnie komendy: Disable Timer1 Enable Timer1 w przerwaniach... Nie analizuję tu całej zasady działania, ale czy nie powinieneś tu używać raczej komend start i stop Timer1 ? Bo wiem na pewno, że tego typu kontrola...
K_o_n_r_a_d , rozumiem. Nie potrzebuję aż tak dużej dokładności na zakres obrotu serwa jaką przypuszczałem. Problem tkwi w uzyskaniu tych 50Hz z zegara 4MHz. Sam preskaler nie jest w stanie tego uzyskać. W jaki sposób to zrealizować? (w tym przykładowym programie opóźnienie "Waitms 5" dałem jako przykładowe - zupełnie przypadkowe). Waitms 5 w żaden...
Zrob to na przerwaniach, tylko musisz za kazdym razem zmieniac tryb wyzwalania lub lepiej ustawic na oba jesli sie da (nie pamietam jakie sa opcje w t2313).
Witam ,napisałem program który ma odmierzyć czas lotu helikoptera (do wyczerpania bateryjki) ,niestety po 2 tygodniach utknąłem na czymś takim: $regfile = "attiny2313.dat" 'wybór procesora attiny2313 $crystal = 8000000 Config Pinb.0 = Output 'dioda sygnalizująca odmierzenie czasu Config Pinb.1 = Output 'buzzer mający piknąć 3 razy po odmierzeniu...
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)...
Napisałem swój pierwszy program z przerwaniami i w zasadzie działa tak jak oczekuje. Jego zamysł jest podobny do pierwszego programu (początek tematu) z tym że nie steruje szybkością migania diody. Problem polega na tym, że (co nie powinno być dziwne) zmienić diodę mogę tylko wtedy gdy się ona pali. Gdy wcisnę przycisk gdy jest zgaszona program się...
Można nawet to zrobić na Timerze 8-bitowym. Po prostu poza generowaniem przebiegu PWM trzeba odpalać przerwanie od Timera. Timer z preskalerem 8 zliczał by do 256 w ciągu 2048us, czyli 2,048ms. A więc miał być około 128 wartości od 1 do 2ms. Przerwania od Timera były by co te 2ms, a więc dość rzadko żeby dało się je obsłużyć. W przerwaniach trzeba zliczać...
Spróbowałem wszystkiego, zamknąłem warunki i zaczął mi zwracać błędy przy kompilacji. Chodzi oto, że program się kompiluje, ale jest problem z zładowaniem go do procesora, Pisząc Bascom Demo miałem na myśli Bascom AVR DEMO. Jak już pisałem to wszystko przez ten Timer0, a konkretnie On Timer0 Co4ms, gdy wykasuje tą linijkę z włączeniem tajmera to program...
Witam, Problem który nie daje mi spokoju na pierwszy rzut oka wygląda banalnie. Postanowiłem użyć czasomierza Timer0 do odmierzania odcinków czasowych za pomocą przerwania od przepełnienia licznika. Program który zamieszczam poniżej powinien pracować w nastepujący sposób: 1. po wciśnięciu przycisku (PB1) dioda LED mruga 1 raz na sekundę 2. przycisk...
...Napisałem taki soft. Ale nie działa... A dlaczego robisz to programowo(przerwanie) :?: Jeśli musisz otrzymać ten przebieg na PINB.3, to wykorzystaj Timer1, a jeśli możesz użyć PINB.2 , to użyj Timer0. Wykorzystaj tryb CTC, to generowanie przebiegu 36kHz, nie zajmie procowi ani jednej instrukcji ;) ... PS Zapomniałeś o "prologu" i "epilogu", które...
Odbiornik RC5 działa. 1 na pilocie wyłącza diodę, 2 włącza $regfile = "attiny2313.dat" $crystal = 1000000 Config Rc5 = Pind.2 Config Pind.2 = Input Config Portb = Output Dim Address As Byte , Command As Byte Enable Interrupts Do Getrc5(address , Command) If Address = 0 Then Command = Command And &B01111111 Select Case Command Case...
$regfile = "attiny13.dat" $crystal = 1200000 'częstotliwość taktowania .............. Czy kod jest poprawny? Mam pewne wątpliwości. Chciałbym aby przerwanie było wykonywane np. co 5 sekund a pętla główna była sprawdzana cały czas. Nie, ten kod nie ma szans na kompilację, a nawet jeśli udałoby ci się go skompilować to jego działanie byłoby...
attiny przerwania bascom przerwania attiny przerwania zewnętrzne
indesit płukanie pomiar iskra urządzenie zaczernienie wydruku
philips senseo sterownik ładowarki akumulatora
YX8018 – schematy, aplikacje, parametry, lampki solarne, boost, LED, Ni-MH, QX5252F Sony STR-11L vs STR-414L – różnice, moc, funkcje, parametry, tuner, wejścia