Przerwania typu PCINT działają podczas zmiany stanu pinu, obojętnie czy to jest zbocze narastające czy opadające. Poprostu ma być to zmiana stanu, tak więc jeśli naciśniesz przycisk to przerwanie bedzie generowane dwa razy (w momencie naciśniećia i puszczenia). Natomiast inaczej jest w przypadku przerwań INT0 i INT1 gdzie możesz sobie wybrać kiedy ma...
1. Rozwiązanie z przerwaniem od stanu niskiego akurat tutaj pasuje, ale gdyby np. w pętli głównej miała migać inna dioda to już to nie przejdzie. Wtedy można najpierw skonfigurować wyzwalanie zboczem opadającym (wciśniecie) i narastającym (puszczenie). 2. Dla AT90S2313 rejestr pinx jest tylko do odczytu, a dla Attiny2313 do odczytu i zapisu. Dodane...
Po czym wnioskujesz, że : ... w rzeczywistości działa non stop - niezależnie czy jest stan niski czy wysoki.
Witam. Dla wejść INT0 i INT1 możesz skonfigurować przerwanie dla zbocza narastającego, opadającego, zmiany stanu lub stanu niskiego. Przerwanie PCINT jest wywoływane przez zmianę stanu na wejściach PCINT0 - PCINT7. Dodatkowo można określić które z wejść PCINT ma wywołać przerwanie za pomocą rejestru PCMSK. Pozdrawiam - Daniel
Konfigurujesz WD na 256 i startujesz. Teraz jeśli chcesz by WD wybudził procesor, ale go nie zresetował to MUSISZ włączyć przerwanie od WD. W obsłudze przerwania nie musisz nic robić. Procek wroci w miejsce gdzie użyłeś SLEEP. Teraz jeśli możesz przez tę sekundę kiedy pracuje resetować WD co 200ms to nic nie trzeba robić, ale jesli coś tam dłuzej trwa...
Hmm... Pytasz o tytułową ATtiny2313, czy ATtiny13 ? Ogólnie najpierw ustawiasz WGM na CTC, preskaler, TCCR0A a potem przerwanie OCIE0A. Przecież pisałem, że w CTC Compare-B nie ma znaczenia...
$regfile "attiny2313.dat" $crystal = 1000000 Config Portb.4 = Output Dim I As Byte Config Timer0 = Timer , Prescale = 1024 On Timer0 Przerwanie 'Start Timer0' nie potrzebne Enable Timer0' zezwolenie na przerwanie timera Enable Interrupts Do Loop Przerwanie: Incr I If I > 10 Then Toggle Portb.4 I = 0 End If Return
Mi się wydaje, żeby zrobić to na jednym przerwaniu. Mamy stan 11 Ustawiamy na przerwanie na zboczu opadającym. Kiedy się wykona przerwanie, sprawdzić drugi pin. Jeśli wyjdzie 01 ro znaczy ze obrót był w jedną stronę, jeśli 00 to znaczy, że był w drugą. Teraz trzeba zmienić na przerwanie zboczem narastającym. Jeśli po obrocie mamy 11, to obrót w jedną...
Czyli rozumiem, że jak jednocześnie nastąpią przerwania INT0 i INT1 to du*a ? Przeczytaj jeszcze raz to: W tym przypadku nic się nie stanie - każde przerwanie ma swoją flagę, więc się kolejkują . Chyba, że dojdzie do dwóch przerwań tego samego typu , wtedy informacja się gubi. Tu jest tabelka wektorów przerwań na przykładzie ATMEGA8: http://obrazki.elektroda.pl/6297702500_1...
Czego oczekuje NAZE Ci niestety nie powiem. Poszukaj informacji w manualu. Po wyłączeniu nadajnika dioda przy attiny powinna zgasnąć, bo brak PWM to brak PCINT, a tam jest załączana. Możesz dopisać symulację dodatkowych kanałów i sprawdzić, czy coś to pomoże. Dodaj sobie np. drugi output compare do tego licznika, który już masz. Jak zliczysz 6 wyłączeń...
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...
$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:...
Według mnie to nie jest wina programu tylko konstrukcji. Sprawdź na oscyloskopie jak wygląda sygnał na wyjściu z odbiornika podczerwieni. Czy aby napewno mikroprocek nie wchodzi w przerwanie INT0, albo pod wolny pin podłącz diodę i przy wejściu w INT0 niech się ona zapali. Posprawdzaj też napięcia (jak możesz to na oscyloskopie) jak wygląda zasilanie....
Możliwe, że to na wyrost, ale możesz spróbować: Dim tempW as Word '... Do If Flaga = 1 Then Reset Flaga Cls Locate 1 , 3 tempW=Wynik Lcd tempW ; " " Locate 1 , 8 Lcd "obr/min" End If Loop Rzecz w tym, że nie wiadomo co się dzieje gdy używasz Lcd Wynik. Taki urok Bascoma. Do wyświetlacza wysyłane są połówki bajtów, a jeśli wtedy wystąpi...
np. Nie da się. TImer0 może zliczać tylko z pinu PD4. I to z PinD.4 a nie PortD.4 ;) Można i z PinD.0, ale nawet przerwania żadnego do tego nie ma więc trzeba by programowo. A nawet jak przerwanie by było (mowa o przerwaniach INTx) to Timer tego nie zliczy. Trzeba by programowo zwiększać zawartość licznika Timera0, ale po cholerę. Jeżeli to ma być...
Proszę niech mi ktoś powie czy dobrze myślę: Gdy ustawiam Timer1 w tryb CTC = 4 (WGM13=0, WGM12=1, WGM11=0, WGM10=0) to zapis do OCR1A nie jest buforowany, czyli powinien zmieniać się natychmiast po wpisaniu do niego wartości. Timer1 wciąż zwiększa swoją wartość o 1 i gdy osiągnie ona wartość taką jak w OCR1A to wystąpi przerwanie a Timer1 zostanie...
Witam. Wydaje mi się że w tym przypadku to nie pomoże. Przewód pewnie robi za antenę i sciąga jakieś śmieci. Kolega Tomson pewnie impuls na INT0 traktuje jako wciśnięcie przycisku. W takim przypadku każdy impuls (rzędu pewnie nawet ns) wywoła przerwanie. Cała obsługa powinna wyglądać trochę inaczej. Otóż nawet krótkie wciśnięcie przycisku zwiera jego...
już pisałem co zrobić ale tym razem ty nie doczytałeś chyba, więc: po pierwsze - ustaw wyzwalanie przerwania INT0 zboczem opadającym (falling) po drugie - tuż po wejściu w przerwanie wyłącz je disable INT0 ale zaraz po tym daj Enable Interrupts, żeby mógł działać Timer potem odbierz kod RC5 ustaw swój znacznik Odebrano a resztę przetwarzaj w programie...
"Początkowo program działa poprawnie" to nie dziwne, że na początku działa ci poprawnie a potem leci w przysłowiowe "maliny" nie potrafisz kolego jeszcze dobrze się posługiwać przerwaniami i samą konstrukcją programu - masz tak namieszane że szok w zasadzie czytając sam program to nie wiadomo dokładnie co chciałeś uzyskać pierwsza wskazówka - najpierw...
Panowie umiem w miarę C++ i przecież musi być miejsce wywołania funkcji a ja tego nie widzę. Pozdrawiam Wiesz co to są wektory przerwania, ATtiny2313 ma ich razem z resetem 19. Jeśli jakieś moduł np Timer, UART itp. zgłosi potrzebę obsługi, CPU przerywa wykonywanie programu, zapisuje swój stan na stosie i zaczyna wykonywać program od innego miejsca....
Zadajesz pytania na tak wysokim poziomie abstrakcji, że nie gniewaj się ale na prawdę, jak już ktoś wcześniej wspomniał - na takie problemy to tylko szklana kula i wróżka z certyfikatem państwowym może pomóc. 1. co to znaczy zbyt mała pamięć ? Np w ATtiny2313 w porównaniu do twojego procka ATmega32 to ty masz tej pamięci 2 hektary z hakiem - a jednak...
Witam Jak wielu spotkałem się z problemem problemem kłopotliwej obsługi pilota z RC5. Po poszperaniu w necie wpadłem na http://www.elektroda.pl/rtvforum/topic20... ten temat. Jak się okazało wszystko na tym programie pracowało, ale nie zawsze. Kłopotem było napisanie programu "pod pilota". Oczywiście pochwała dla Sabotaz'a który problem "ruszył"...
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...
W tym ATtiny nie ma pinu PD6, którego sprawdzasz: [syntax=C]if (!(PIND & 0b01000000))//sprawdzenie wyzwalania zewnetrznego[/syntax] Pewnie chodziło Ci o pin PD3 (ten od INT1)? EDIT: Ups, błąd, jest PD6 :) Mógłbyś dodać jakiś schemat albo opisać jak to ma w zamierzeniu działać? W jakim celu blokujesz przerwania?
atom1477, przecież o ile jakieś przerwanie w międzyczasie nie zmienia Portd.5 to kod Nie chodzi o to żeby ustawił w końcu, tylko w momencie kiedy piszesz Pind.5 = 1: No ale Portd.5 zamiast Pind.5 byłoby przejrzyściej. W ogóle przejrzyściej było by stosować ten zapis jeszcze zamiast Set Portd.5. Tysiące razy było. Do rejestru port zapisujemy a z rejestru...
Czekam na sugestie z góry dziękuje za pomoc;) Robisz totalnie złe założenie niestety. Timer sprzętowy działa bardzo dobrze i precyzyjnie. Nie może on przepełniać się w trybie normal wcześniej niż po 256 tyknięciach zegara ;) ... zatem przez złe założenia - jeszcze wyciągasz złe wnioski i nie w tym miejscu co trzeba szukasz błędu. A błąd polega na tym,...
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...
To i tak chyba się skończy obliczeniami możliwości sprzętu. Przy 9.6MHz wychodzi przy praskalerze=64 przerwanie od timera co 1.7 ms a skok timera co 6.7us. Silnik będzie napędzany przez PWM ok. 500Hz- będzie piszczał. Przy preskalerze=1 silnik pewnie wcale nie ruszy bo indukcyjność uzwojeń nie pozwoli na wystarczająco szybkie narastanie prądu. Przy...
Czas otwarcia wtryskiwaczy mierzysz za pomocą 1 timera, ale nie tak od razu. Są dwie metody: pierwsza to podpięcie (przez transoptor) wtryskiwacza do wejścia timera i wejścia przerwania - po wykryciu przerwania (początek stanu niskiego) startujesz timer, przestawiasz stan aktywacji wejścia INT na przeciwny i procek wraca do pętli głównej, po ponownym...
Najbardziej wątpliwe w pracy tego timera jest przeładowywanie wartości w kodzie programu. Licznik w 4ms zwieksza swoją wartość o 250, więc przypisanie wartości "6" jest sensowne, ale jeśli to przypisanie nastąpi później niż po 64 cyklach od wystąpienia przepełnienia, to przerwania będą wywoływane rzadziej.. Polecał bym tryb pracy CTC. ps. zaczynanie...
Witam! Mam dość nietypowy problem z AVR-kami. Ostatnio używałem Timera na ATTiny2313. Ustawiłem preskaler /256, kwarc 8MHz, timer 16bit w trybie porównania i przerwanie. Wartość do porównania była ustawiona na ok. 31250. Ostatecznie powinienem otrzymać przerwanie z częstotliwością ok. 1Hz. To zwiększało licznik i on był wyświetlany. I tu pojawił się...
Benson poległ na pisaniu programu więc wklejam swój. Całkowicie leję na to ze jest Wait 1 w przerwaniu, w takim programie nic złego się nie stanie, a jak mu licznik nie zliczy 15cm drogi to afery też nie będzie. Tym bardziej że jeśli wyłączy zasilanie przed przejechaniem pełnego 1km to go straci. Nie wiadomo czy tablica przejść dla wajchy jest już zanegowana...
Bufor cykliczny - tablica o długości N bajtów. Dwa wskażniki na elementy tegoż. Pierwszy wskażnik do odczytu (wo), drugi do zapisu (wz). Początkowo oba wskażniki ustawione na początek bufora. Zapis: Procedura przerwania po każdym odebranym bajcie zapisuje go w miejscu wskazanym przez wz. Następnie wz jest inkrementowany i jeżeli wskazuje na element...
ł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....
http://obrazki.elektroda.pl/8579801800_1... Zainspirowany podobnym, projektem który zobaczyłem niedawno na elektrodzie, postanowiłem zrobić coś podobnego ale nieco inaczej. Światło pochodzi z 8 diod LED umieszczonych pod poręczą, 3 w dolnej części, 3 w górnej i 2 na półpiętrze. Działa to tak: kiedy wchodzimy na schody, idziemy dajmy...
A mnie się widzi coś innego:) Reaguje przypuszczam na zbocza (nie chce mi sie szukać w pdfie), jak naciskasz raz sie generują zbocza (pewnie jakiś debounce tam masz) i drugi raz jak puszczasz znow sie któreś zbocze łapie.
Ogólnie schematu nie mam bo tej gazety nie kupuje, a nawet jak bym kupował to raczej by mi się nie chciało go szukać :). Najlepiej jak byś go zamieścił. Nawet nie piszesz do którego portu jest ten przycisk podłączony. Skoro piszesz że działa wyzwalanie poziomem, to zrób softwarowe wykrywania zbocza (ustawiasz rejestr że już obsłużyłeś przycisk i w pętli...
http://obrazki.elektroda.pl/9114516200_1... Autorski projekt wyłącznika zdalnie sterowanego za pomocą pilota RC5. Cały układ kontrolowany jest za pomocą mikroprocesora z rodziny AVR, ATtiny2313. Na uwagę zasługuje zasilanie układu bezpośrednio z sieci elektroenergetycznej o napięciu 230V, zrealizowane przez zasilacz bez transformatorowy....
http://obrazki.elektroda.pl/6514394200_1... Chciałem przedstawić prościutkie urządzenie, służące do ułatwienia pomiaru czasu. Na zawodach samochodowych, w których biorę również udział do pomiaru czasu wykorzystywany jest chronometr, do którego należy podłączyć fotokomórkę na linii START i drugą fotokomórkę na linii META. Jednakże nam...
http://obrazki.elektroda.net/74_12536950... Witam Chciałbym przedstawić swój kolejny projekt. Prezentowany układ jest uniwersalnym systemem uruchomieniowym dla procesorów AVR. Zaprojektowałem go wspólnie z kolegą (k.moron(malpa)tlen.pl) w oparciu o wspólne przemyślenia i problemy jakie napotykaliśmy przy budowaniu innych urządzeń. Płytka nie...
https://obrazki.elektroda.pl/7862031300_... Od dłuższego czasu zalegał mi w szufladzie ogromny wyświetlacz ze starego zepsutego radiobudzika. Radiobudzik ten był prawdopodobnie zrobiony na układzie LM8560. Wyświetlacz ma wyprowadzenia zgodne z Lite-ON LTC-637D1P, ale ma większe cyfry i w każdym segmencie ma 2 zielone LED-y. Typowe...
Chyba porypana. Ale spróbuj obliczyć ile zajmuje ustawienie portu (i jak) i jednak częstotliwość zegara/kwarcu. Wyżej zegara nie podskoczysz. ATtiny2313 chodzi do 16MHz. Jak pracujesz na fabrycznych ustawieniach 1MHz to i ASM nie pomoże. I w zasadzie czego spróbowałeś? Jak "nosave" to nie ma opóźnienia w odkładaniu/zdejmowaniu ze stosu. Bo tego nie...
Cześć Mam takie szybkie pytanie, w Attiny2313 na porcie B znajdują się piny od wewnętrznego komparatora i jednocześnie cały port służy jako wejście dla przerwań PCINT. Korzystam z komparatora i kilku wejść PCINT, czy to będzie działać ?? Czy jedno wyklucza drugie ?? Dziękuję za odpowiedzi i zainteresowanie. Pozdrawiam
Wskazówka: Pomyśl jakie są konsekwencje tej linii: [syntax=c]TIMSK=0b10000000; //odblokowanie TC1[/syntax]
Tak na szybko - 8000000/8/28= w przybliżeniu 35714 kHz (czujnik, który podałeś spokojnie to obsłuży). Ustaw zegar na 8000000, Prescaler 8, a Counter odświeżaj wartością 242. Dlaczego 242 ?, bo 256-242=14. Dlaczego wynikiem ma być 14, a nie 28 ? Jeśli w przerwaniu użyjesz Toggle PortX.Y to z urzędu częstotliwość na pinie będziesz miał dwa razy niższą,...
Niestety bez zmian... co do uszkodzonego portu, to wątpię, bo działa na nim ustawianie stanu niskiego i wysokiego. Czy uszkodzenie portu może się objawiać właśnie w taki dziwny sposób, że działa ustawianie stanów wysoki/niski, wejscie/wyjscie, a nie działa przerwanie zewnętrzne?
WinAVR 20090313, widocznie starszej wersji co innego doskwiera:) Proponuje uaktualnić WinAVR [url=http://sourceforge.net/projects/win... Widzę, że jest już nowa wersja z 2010, może tam to będzie działać jak należy, a jeśli nie to tak jak pisałem wyżej pewnie zamiana INT0 na INT1 pomoże.
Wyłącz przed wykonaniem skoku przerwania, inaczej w czasie inicjalizacji danych/przerwań (którą robisz na początku programu) mogłoby zostać wywołane jakieś przerwanie i namieszać
Może pokaż na początek jak jest zrobione zasilane awaryjne. Aby korzystać z przetrwania musisz: - odblokować przerwanie INT0 w rejestrze GIMSK (ustawienie bitu INT0 w stan 0) - skonfigurować kiedy ma być zgłaszane INT0 , bity konfiguracyjne ISC00,ISC01 w rejestrze MCUCR - zainicjować vektor przerwania od INT0 (jeżeli nie robi tego kompilator) - odblokować...
A co byś powiedział na wprowadzanie proca w Standby lub Power Down i wybudzanie przez przerwanie od pin change :?: Piotrek
jak zrobić żeby przerwanie od timmera 0 w atmedze8 było taktowane kwarcem zegarkowym(tzn. podłączam kwarc w miejsce xtal 1,xtal2 i skąd timmer 0 będzie wiedział ze ma być taktowany takim kwarcem) i jak dobrać preskaler itd żeby po zapełnieniu licznika odmierzana była 1s używam programmer's notepad.
Nie dokonuj pomiaru ilości impulsów na 1 sek ! To błędne podejście . Niby logiczne ale błędne . Musisz zmierzyć czas pojedynczego pełnego obrotu i z tej wartości wyliczać prędkość . Oczywiście mogą być różne warianty np. mierzyć czas 5 obrotów itp. Inną kwestią jest uśrednianie i samo przeliczenie na droge/czas. Sygnał z czujnika oczywiście wpiąć w...
Bascomowe RC5 to syf. 1) dopisz na początku SET PORTD.3 dla pewności 2) gdy wchodzisz w przerwanie to bascomowe RC5 nie złapie ci pierwszej ramki, dopiero drugą. Spróbuj po wejściu w przerwanie dodać WAITMS 10 3) poszukaj tu na forum mojego poradnika "odbiór RC5 bez komendy GETRC5" i wklej do siebie.
Witam! Czy wejscie RX uartu należy podciagać do + czy jak, piszą że uart przejmuje kontrolę nad tym pinem procesora. Rozumiem że odbiornik odbierze gdy pierwsze trzy bity będą "0" Aha i mam jakiś problem z przerwaniem SIG_UART_RECV pisze w C. Gdy wywołam przerwanie to proc zachowuje sie tak jakby sie resertował... oczywiście wykonuje instrukcję przerwania...
Attiny2313 ma możliwość sprzętowej generacji PWM a jeżeli nie chcesz używać sprzętowej generacji to pozostaje ci przerwanie od timera i zmiana stanu wyjść w odpowiednich cyklach. Generacja PWM w pętli głównej to nie jest dobre rozwiązanie bo wypełnienie będzie ci pływać w zależności od tego co będzie robił program zaszyty w pamięci uP.
też niedawno zacząłem zabawę z uP ale naskrobałem coś takiego, jeśli źle, to mnie poprawcie. $regfile = "attiny2313def.dat" 'attiny2313 $crystal = 1000000 ' 1MHz Config Portb = Output Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.0 , Rs = Portb.2 Config Lcd = 16 * 2 'wyświetlacz 2 linie po...
Witam. [syntax=basic4gl]Ustaw F_CPU na 8000000 Hz 'Declarujemy zmienną np.Licz Dim Licz As Byte Config timer0 = Timer , Prescale = 256 Enable Interrupts Load Timer0 , 250 '--przerwanie będzie co 8ms On Timer0 Przerwanie 'W przerwaniu: Przerwanie: Load Timer0 , 250 Incr Licz If licz = 125 Then Licz = 0 Toggle Portb.6 '--- zmiana stanu co 1sek End If...
Odłączyłeś od uc (przy samych nogach, poprzez przerwanie ścieżki/podniesienie nogi tak Na jakim kwarcu pracuje uC 4MHz
Włącz przerwanie zewnętrzne, ale nie pisz jego obsługi - skok do nieobsługiwanego wektora zresetuje procesor (mówię oczywiście o avr-gcc). 4\/3!!
próbowałem już z przerwaniami ale coś nie mogłem odczytać z TIMERA wartości na jakiej został zatrzymany przy przyjściu przerwania INT. Bo właściwie to nie wiem jak poczekać na przerwanie tak żeby np. w pierwszym INT kasować TIMER a w następnym odczytywać. A czy można zdefiniować równocześnie przerwanie na zbocze opadające i narastające i kiedy przyjdzie...
I nie rozwiązałem tego problemu. 10Hz przerwanie nie rowziązywało sprawy. Kombinowanie z przeniesieniem/zmiana wlaczenia przerwania timera tez nie pomagało. Dorzuciłem dodatkowe attiny2313 do mierzenia czasu, ktore komunikuje sie przez UART.
Mam Attiny2313, wewnętrzny rezonator 4MHz, Timer1 16 bitowy. Czas jednego cyklu dla rezonatora 4MHz wynosi 0,25us Preskaler ustawiony na 1024 Timer ma zliczać do zadanej wartości, zgłosić przerwanie od doliczenia do pewnej wartości i się wyzerować. Ustawiam wartość do jakiej ma liczyć timer: 62500 62500*1024=64M 64M*0,25us=16s Niestety układ zlicza...
Podejrzewam że program miał kłopoty z synchronizacją z sinusoidą . Tak jak robisz tylko daj wyprostowane obie połówki sieci na nogę procka która generuje przerwanie, ewentualnie jeśli noga generuje przerwanie przy każdej zmianie stanu może być jedna połówka sinusa. Będziesz miał na każdą połówkę jedno przerwanie. I tak jak pisałem to przerwanie uruchamia...
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....
OK. może zadam inne pytanie. Program będzie pełnił rolę centralki alarmowej. Pojawienie się stanu niskiego z kodera na INT1 będzie wyzwalało przerwanie, które będzie powodowało czuwanie centralki(1 część prodramu głównego) lub blokowanie centralki(2 część główna programu). Mogę oczywiście umieścić cały program w przerwaniu i będzie ok. Problem tylko,...
jak sie nie znasz to sie nie wypowiadaj, bezsensu tylko wszystko mieszasz. Przeznaczenie: Konfiguruje pracę programowego interfejsu I2C jako urządzenia podrzędnego (Slave). Ta instrukcja korzysta z biblioteki I2CSLAVE.LIB, która jest rozprowadzana oddzielnie przez MCS Electronics. Składnia: CONFIG I2CSLAVE = adres
Datasheet attiny2313 str. 34 (Power Management and Sleep Modes) - takie same warunki wybudzenia co dla Atmegi Najprościej RESET, inne to przerwanie INT0 jeśli nie chcesz resetować procka. Jaki stan na nóżce podać? - podpowie strona 62 tegoż datasheeta :) (External interrupts)
Witam Od dwóch dni borykam się z pewnym problemem. Mam 2 mikrokontrolery: ATTiny2313 i AT90S2313. W tematach na elektrodzie znalazłem taki oto banalny program, odbierający znaki przez RS232 na przerwaniach, napisany dla AT90S2313: #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> #include <stdlib.h> #define...
http://obrazki.elektroda.net/35_12264129... Witam, Chciałbym przedstawić dzisiaj wprawdzie prosty ale ciekawy projekt, jest to jeden z pierwszych "klocków" pewnego większego projektu, który za jakiś czas jeszcze - mam nadzieję także tu zaprezentować. Poniższy pilot oparty jest na procesorku ATtiny2313 jak widać na fotkach. Obsługuje on w tej...
Pamiętaj o implementacji zabezpieczeń poza procesorem (np. na bramkach) - tak, żeby wykluczyć błędne działanie bramy przy błędzie w programie/zawieszeniu się procesora. I tak: * zadziałanie odpowiedniego wyłącznika krańcowego wyłącza odpowiedni przekaźnik * przerwanie bariery IR wyłącza oba przekaźniki Resztę logiki możesz mieć w programie - oczywiście...
Przeczytaj swój kod! Podciągasz portd.3 (stan wysoki) i chcesz wymusić przerwanie stane też wysokim ( a raczej zboczem rosnącym - rising). To nie ma prawa dobrze działać. zamień na = falling, i zwieraj ten pin z masą układu.
Owszem w konfiguracji Timera głupi błąd, ale ku mojemu zdziwieniu przerwanie działało. W liczeniu czasu chyba się koledze przecinek przestawił. Przerwanie w teorii kompilatora bascom trwa ok 0,16ms. W praktyce: po dodaniu w przerwaniu " toggle portb.0" częstotliwość generowanego przebiegu prostokątnego to 3,289kHz więc przerwanie wykonuje się z częstotliwością...
Dzięki za zainteresowanie. Chciałem wykorzystać przerwanie od USART'a. Na jednym attiny nie da się tego zrobić z powodu czasu -> kilka ms dla każdej cyfry (5cyfr x 4 + spacje) Powodzenia Przyznam że o SPI nie pomyślałem :?:
Dobra, zwracam honor. Pomyliło mi się z Attiny2313 gdzie kiedyś badałem napięcia progowe. Teraz widzę że większość nowych procków (ATMega88, ATMega164, ATTiny25) mają napięcia w okolicach 50% VCC, tylko stara ATMega8 ma takie napięcia jak podałeś. Jednak cytat histerezy nie wyrzuca :D
Jak byś się przeszedł do sklepu po ATtiny2313 albo ATmega8 to program bym Ci w bascomie napisał. Nie mam takiego dinozaura stąd wydaje się że jest ok tylko dziwi mnie fakt że wykorzystujesz przerwanie INT. To będzie do czegoś jeszcze służyć czy tylko sterownie przekaźnikami.
Zrób tak: 1 licznik do odmierzania czasu, przerwanie co np 25ms 2 licznik do zliczania impulsów Jeżeli nastąpiło przerwanie np 25ms, to zlicz liczbę impulsów. W taki sposób masz dokładniejsze odmierzanie czasu, funkcja wait do tego się nie nadaje. Przeanalizuj sobie ten temat: http://www.elektroda.pl/rtvforum/topic16... a potem dodaj to co napisałeś...
jeśli czytałeś uważnie jakiegoś helpa i tam napisano, że np ATmega8 a raczej jej przerwania INT0 i INT1 nie mogą być wyzwalane zboczami to masz rację - jest to błąd ;) dokładny opis na 100% znajdziesz w nocie pdf ;) danego procka i na tym zawsze się opieraj jako najważniejszym źródle informacji. ... jak słusznie zauważyłeś ta nóżka ma dwa alternatywne...
Witajcie mam taki oto kod : [syntax=text] $regfile = "attiny2313.dat" $crystal = 400000 Config Lcdpin = Pin , Db7 = Pb.7 , Db6 = Pb.6 , Db5 = Pb.5 , Db4 = Pb.4 , E = Pd.0 , Rs = Pd.1 'Config Lcd = 16 * 1a Config Lcd = 16 * 2 Config Rc5 = Pind.3 'wejscie int0 do ktorego jest podlaczony odbiornik Config Int0 = Falling 'przerwanie zew. koncowka int0 czyli...
ATtiny2313 nie ma rejestru TIMSK0 tylko TIMSK. Dlatego też program się nie kompiluje. No i nie ma też TIMER2 tak że przerwanie od tego nic nie zrobi. I tu będzie tylko "warning" którego nie wolno lekceważyć na etapie poczatkującego. Bo się skompiluje ale nie będzie działać. Tzw. "przeportowanie" na inny procesor jest dobrym treningiem na początek bo...
Bascom mnie odrzuca, ale o ile się nie mylę to wykorzystujesz przerwanie z przepełnienia timera. Prescaler dajesz 256, timer jest 8-bitowy, więc daje przerwanie raz na 65536 cykli, czyli zaledwie 122Hz. I to jeszcze dzielisz na poszczególne wyświetlacze - musi mrugać. Zwiększ szybkość odświeżania, np. poprzez zmniejszenie prescalera. Dopiero przy ok....
Jest to mój pierwszy program z użyciem timera i nie mam pojęcia dlaczego nie działa, wydaje mi się że wszystko jest ok a jednak po wgraniu do mikrokontrolera nie ma żadnej reakcji. $regfile "attiny2313.dat" $crystal = 1000000 Config Timer0 = Timer , Prescale = 1024 Dim T1 As Byte T1 = 0 Dim T2 As Byte T2 = 0 Dim T3 As Byte T3 = 0 On Timer0...
Ja mialem wyjscie SFH506 podłączone pod portd.0. Czyli w 90S2313 to był int0 a w Attiny chba też To w takim razie attiny2313 nie ma int0 albo int1 pod portd.0 i portd.1 ??? Jak potrzyłem na rysunki porównawcze to różnie tambyło a w końcu 90S2313 i Attimy 2313 podobno nie różniąsię niczym... (jesli chodzi o wyprowadzenia)
Komparator w attiny2313 jest analogowy, ale jego wyjście nie jest wyprowadzone na zewnątrz. ACO można odczytać programowo i może ono również generować przerwanie jak też sterować przechwytywaniem timera. Czy z tego robić PWM ? Teoretycznie można odczytywac stan ACO i ustawiać portx.y, ale zawsze będą opóźnienia. Procesor ma timer z PWM czy on się nie...
No wiem jak działa przerwanie i właśnie chodzi mi o to aby w każdym momencie gdy zostanie wciśnięty przycisk następowała jakaś akcja, w moim przypadku zmiana efektu. Teraz też w sumie działa, ale gdy w ostatnim case zacznie być generowana liczba pseudo losowa przyciśnięcie klawisza, nawet jego przytrzymywanie nic nie powoduje :) Dlatego prosi się aż...
Świeci dziadowsko bo i przerwanie się długo wlecze. [syntax=basic4gl] If Licznik < Czekaj(11) Then Portb = &B00000100 Else Portb = &B00000000 If Licznik < Czekaj(11) Then Portd = &B0010000 Else Portd = &B00000000 A nie lepiej: If Licznik < Czekaj(11) Then Portb = &B00000100 Portd = &B0010000 Else Portb = &B00000000...
Wysylasz czasem cos do układu? I czy to dziwne zachowanie właśnie wtedy nie występuje? Włączyłeś przerwanie obsługi bufora odbiorczego, a nie widze obsługi tego przerwania. Przy takim przerwaniu układ będzie "resetował" się cały czas. Po wystąpieniu przerwania nastąpi skok na początek pamięci gdzie jest adres obsługi przerwania. Ponieważ nic tam nie...
Witam Na wstępie zaznaczam, że AVR-ami zajmuje się dopiero od tygodnia :). Mam problem jak w temacie. Potrzebuję aby timer 1 (16 bitowy) liczył od ustalonej wartości początkowej, a po wystąpieniu przepełnienia wygenerował przerwanie i się zatrzymał. Potrzebuję odliczyć 25ms. Attiny taktowany jest zegarem 16MHz, dzielnik częstotliwości dla timera 1 ustawiłem...
To jest dość ciężko teoretycznie określić. Jeżeli dobrze pamiętam, to samo wejście w przerwanie potrzebuje coś ze 32 bajty. Zobacz w wygenerowanym kodzie, co jest odkładane na stos na poczatku obsługi przerwania. Plus to, co wykorzystujesz na wywołania funkcji i zmienne lokalne - dla najgorszego przypadku. Przy małym programie (jeżeli nie ma dużo funkcji)...
Witam! Skonstrowałem sobie odbiornik DGPS i chciałbym wykonać do niego dekoder. Mam mikrokontroler ATTINY2313. Czas trwania pojedynczego symbolu jest 10 ms, co wynika z szybkości transmisji 100 bit/s. Mam problem z przełożeniem mojego pomysłu na kod w asemblerze. Otóż ze względu na duże prawdopodobieństwo błędów, zakłóceń w odbiorze chciałbym próbkować...
Autorowi tego postu przestawilem moje rozwiązanie i problem który mnie przystawil. Przerwanie które jest rozwiązaniem nie potrafie obsłużyć. A układ z myszki działa nienagannie, wraz z układem detekcji kierunku . W trakcie obrotu tarczy w sekwencji kodu występuje zdarzenie ze na kanale A i B są takie same stany. (kod Grey'a). A kolega 11111olo może...
Nie widzę oświeżania TCNT1, co nie jest zbyt dużym pominięciem, bo będzie działać, ale czas wywoływania można doprecyzować, bo póki co przerwanie wykonuje się co \frac {Xtal}{1024 \cdot 256} . Nie widze definicji zegara (Xtal). Ja bym powiedział , że \frac {Xtal}{1024 \cdot 65536} bo T1 pracuje w trybie 16-bit . Pozdrawiam Piotrek
Po pierwsze, możesz jak najbardziej korzystać z timera (a właściwie to powinieneś, jeżeli chcesz pomniejszyć koszta o zakup zewnętrznego RTC). Po drugie - możesz kalibrować, możesz to robić długo i bezskutecznie. Po drugie i ćwierć - Wewnętrzny oscylator nie za bardzo nadaje się do tego celu. "Nieco" mu się zmienia częstotliwość wraz z temperaturą i...
Wszystko spoko.. tna prawie wszystko.. a właściwie.. to musisz zamienić połączenia na DB9 miejscami 2<->3 albo na MAX232 13 z 14. Poza tym brak kondensatorków, np. 4x 1uF/16V. Co do konfiguracji rejestrów, wszystko jest w dokumentacji. Włącz przerwanie od odbiornika, włącz odbiornik (rejestr UCSRB). Rejestr UCSRC służy do konfiguracji parametrów...
markus_wolff - wszystko się zgadza bo preskaler jest nastawiony na clk/64 - czyli przerwanie timer1 co sekunde jj - dzięki , na pewno dziś poczytam john_t - przecież już doszliśmy z kolegą markus_wolff , że ustawienia bitów w pony prog są dobre ( bo 1 tzn - unprogrammed, co w pony prog daje pustą kratkę w przeciwienstwie do 0 - programmed - czyli haczyk)....
Pomieszałeś dwa sposoby obsługi transmisji - nie można stosować dwóch w tym samym czasie. Proponuję tu obsługę na przerwaniach i do niej się odniosę. 1. Nie widzę wywołania inicjalizacji nadawania USART w main(). Powinno to polegać na włączeniu na stałe TXCIE. UDRIE natomiast włączasz na starcie transmisji i na jej końcu wyłączasz. 2. W przerwaniu od...
... Przypuszczam że dla portów przełączonych jako wejście czas ten może być nieco dłuższy ze względu na duże wartości wewnętrznych oporników podciągających. Teraz już nie sprawdzę jak dokładnie wyglądał wtedy kod, bo tamtej wersji już nie mam, ale generalnie był prosty - inicjalizował stos, UARTa, odczytywał adres z portu i zasypiał w oczekiwaniu na...
chcialem zrobic budzenie procesora za pomoca ktoregos z 4 przyciskow. schemat jest podobny do tego (tylko tutaj jest wykorzystany attiny2313 ja chce atmega32): http://obrazki.elektroda.net/85_12264138... Przed wejsciem w tryb powerdown chcialem wystawic na przyciski stan niski, wtedy bym mial mozliwosc wychodzenia z powerdown za pomoca przerwania...
SUPER!!! działa!!! wielkie dzięki! nie zwróciłem na to uwagi. teraz mam problem ze stabilnością położenia serwa, po mi sie waha w zakresie 1 stopnia mniejwiecej, co zwiazane jest z niedokladnioscią odczytu wartosci timera1 (nie zawsze czyta w tym samym momencie, ale moze jak zwieksze czestotliwosc ukladu na 8, czy nawet wiecej (20) MHz, to powinno być...
Najprostszym sposobem jest skorzystanie z języka wyższego poziomu np.C. Wtedy sytuacja się znacznie upraszcza. Nie mniej jednak tak w asemblerze jak i w C całość należy zrealizować dość podobnie. Pierwszą metodą która sprawdza się gdy nie mamy nic więcej do zrobienia a tylko odmierzenie czasu i nie używamy przerwań albo gdy ich używamy ale na dokładności...
Zamiast ATMega8 proponowałbym uzyć ATMega48 (lub ATMega88). Cena taka sama ale ATMega48 posiada mozliwość generacji przerwania 'pin change' tzn jakakolwiek zmiana stanu portu wywołuje przerwanie - czyli to, o co chodzi. W tym przerwaniu badamy stan portu i wysyłamy na UART. Odpada w ten sposób badanie stanu portu w pętli. Podobną własność ma też ATTiny2313...
attiny2313 przerwanie timer0 attiny2313 timer1 przerwanie serialin przerwanie
grundig beta5 kondensator mniejszy zasilacz emulator renault
zmywark electrolux esl65070r sterownik rolet
Sofar falownik Grid DFP – alarm, brak produkcji, kod częstotliwości, model KTL-X-G3 Saeco HD8911 - Oporność czujnika temperatury