Stąd, że porty D2 i D3 są portami dedykowanymi do wprowadzenia zewnętrznych przerwań. Spójrz datasheeta megi8.
Witam. Buduję termohigrometr na atmega8 i czujniku sht11. Urządzenie ładnie mierzy mi już wilgotność i temperaturę a wyniki wyświetla na lcd 2x16. Dodatkowo do mojego urządzenia podpinam jakieś urządzenie zew., które uruchamiane jest (poprzez MOC3010) w momencie spadku wilgotności poniżej pewnego poziomu lub z przycisku. I właśnie z uruchamianiem z...
...Symulator pokazuje 1us a mi sie wydaje ze 10us. W tym wypadku , uwierz symulatorowi ;) Piotrek
O i dzięki schematowi od razu widać błąd: http://obrazki.elektroda.pl/6463515500_1... Przyciski podłącz do GND, a nie Vcc, a w programie włącz pull-up, i ustaw reakcję INT na zbocze opadające. Tylko czy wiesz dlaczego Twój układ nie działał? Osobna sprawa do drgania styków przycisku: http://mikrokontrolery.blogspot.com/2011...
OK, mam nadzieję, że zegar ustawiłeś w opcjach. Ponieważ muszę wyjść, to dam Ci wskazówki, a resztę wymyślisz sam lub koledzy pewnie podpowiedzą. Gdy pierwsze zbocze drgania styku ustawi flagę przerwania i mikrokontroler wejdzie w funkcję jego obsługi, to zaraz na początku automatycznie kasuje (w tym mikrokontrolerze) flagę przerwania. Ty w swoim programie...
W takim przypadku serwa wyłączają się w odpowiednim momencie, ale problem jest gdy maja zostać uruchomione. Często udaje się to dopiero przy trzeciej, czy czwartej próbie Zatem kolega ma jeszcze jakieś błędy w pozostałej części programu. Zmiana stanu zmiennej jazda dokonuje się w jednym miejscu: jazda ^= 1; Brak przesłanek by zmiana 1->0 była dokonywana...
To była moja pierwsza myśl, Disable INT0 umieściłem w pętli głównej na zasadzie [syntax=basic4gl]Do Czas = Czas * 0.22148394241 Predkosc = Fusing(czas , "###.#") Predkosc = Format(predkosc , "00000") Mid(predkosc , 4) = " " Text = Predkosc Disable INT0 gosub sendnap Enable INT0 Loop [/syntax] I działanie to przyniosło efekt w postaci narastania licznika...
Wynika z tego że wewnętrzne oscylatorki są kiepskie. Tak, by być pewnym transmisji należy stosować zewnętrzne kwarce.
Sygnał przerwania może być wywołany z jednego z peryferiów (np wbudowane liczniki, adc, twi itd), albo właśnie przez nóżkę procesora (w wypadku atmega8 bodaj są 2 zewnętrzne przerwania) Co do arduino pewnie musisz użyć biblioteki.
dzięki za pomoc, a teraz o jakiej maksymalnej częstotliwości sygnału prostokątnego w zakresie 0.5V - 4.7V da rade zliczyć Atmega8 bądź to przez przerwanie zewnętrzne z pinu INTx albo przerwania pochodzącego od komparatora ?
Problem teoretycznie rozwiązany. Dokonałem zmiany takiej, że wyjście z LM324 nie powoduje zgłoszenia przerwania w atmedze, tylko atmega ciągle sprawdza stan linii przy pomocy PINx. Jednak z ciekawości jeśli ktoś wie dlaczego, metoda z użyciem przerwania nie zdała egzaminu to proszę o sugestie. Myślałem że te przerwania zewnętrzne są właśnie po to żeby...
Witam! Mam pytanie odnośnie budzenia uP AVR. Z trybu POWER-DOWN da się wyjść m.in. poprzez przerwania INTx. Do ATmega8 chciałbym podłączyć "klawiaturę" zrobioną za pomocą 7 tact-switch'y i kodera 8 na 3 serii '148. Koder ten posiada wyście EO sygnalizujące wystąpienie na którymś z wyjść zmiany stanu (wciśnięcie przycisku). Chciałbym to wyjście podpiąć...
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...
...jakieś pomysły (można to wykonać na interruptach ...czymś jeszcze ..?) No właśnie , przerwania zewnętrzne.Wymyślono je właśnie po to , by sygnalizować procom zdarzenia zewnętrzne , których wystąpienia nie da się przewidzieć w czasie ( i być może przestrzeni :D ).Jeśli chodzi o stronę mechaniczną takiego czytnika , to wystarczy troszkę ruszyć główką.Przypomnę...
Witam. Przeczytałem cały temat od początku do końca i nie znalazłem dużo informacji na temat PIC. Kilka osób (m.in. McRancor) pisało że woli PIC od AVR. A ja mam pytanie czemu?? Weźmy np popularnego ATmega8 i PIC16F84a. Porównując te dwa procki, PIC (wg mnie) wypada słabo. Po pierwsze cena, brana z jednego sklepu: ATmega 5zł, PIC 9zł. Po drugie ten...
Na początek zdecyduj jakie przerwanie ci jest potrzebne... Jeżeli od timera to szukaj opisu przerwania w rozdziale opisującą jego konfiugurację... Po pierwsze trzeba uaktywnić przerwania czyli sei() Przerwania timerów aktywuje się w rejestrze TIMSK... Odpowiednio uart w swoich rejestrach posiada bity odpowiadające za aktywację przerwania od TX, RX itd......
...Ale przenieś choć część swoich Sub do przerwania Timer2, lub 1 i zobacz jaka jest różnica w działaniu programu. Tylko, że ja kompletnie nie widzę takiej potrzeby. Skoro wszystko działa jak należy, program pisany jest modułowo, działanie oparte na programowych timerach, które spokojnie dają radę, przerwania robią to co powinny i jeszcze mam trochę...
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...
ZA namową kolegi poszedłem po min 3 zewnętrzne przerwania przerwania oraz 6 PWM czyli min ATMega 64 lub 128. wybór oczywisty 128 ponieważ takie posiadam. Czy ktoś uruchamiał już 6 PWM ??? Ostatnio na forum była o tym dyskusja, chyba nawet 12 kanałów dało się wyciągnąć.
Piszę ponownie, ponieważ jako, że z układem nie mam już problemu mam problem z napisaniem programu. W swoim rozwiązaniu chciałbym użyć dwóch przerwań od TIMER0 oraz zewnętrzne INT0. Teraz tu moje pytanie czy te dwa przerwania zaimplementowane w ten sposób jak poniżej, nie wpłyną na niedokładność pomiaru i czy jest może na to lepszy sposób. Mój kod:...
Ciekawe, czytałem już te tematy. czy bez tego kwarca 32khz sie nie obejdzie? Jednak nie łapię tych timerów. Generalnie timer służy jako licznik przerwań :), wewnętrznych albo zewnętrznych na pinie TO, zewnętrzne przerwania widziane są z portu TO, a wewnętrzne przerwania generuje prescaler - wewnętrzny przerywacz "sterowany" kwarcem zewnętrznym lub...
Główny uP po wystąpieniu przerwania ma ok 3-4 ms na odczyt 8 wzglednie 7 bitów z magistrali. 3-4ms to jest od cholery czasu. Takiego SPI'a możesz pędzić powiedzmy z zegarem 2MHz to daje Ci ok 10us na przesłanie 16bitów. Nie rozumiem tylko dlaczego nie możesz na bierząco zczytywać wartości częstotliwości i gdy przyjdzie przerwanie zewnętrzne to już...
Pokwapiłem się przetłumaczyć fragment ze strony 65 manuala ATMEGA8 dotyczący przerwań na pinie INT0. Wygląda on następoująco: • Bit 6 – INT0: External Interrupt Request 0 Enable When the INT0 bit is set (one) and the I-bit in the Status Register (SREG) is set (one), the external pin interrupt is enabled. The Interrupt Sense Control0 bits...
Witam pisałem program który miał po pewnym czasie zmuszać mikrokontroler do przejścia w stan uśpienia po czym wybudzanie miało następować w reakcji na zewnętrzne przerwanie na linii PD2. Mikrokontroler wchodzi w uśpienie po zadanym czasie jednak nie chce się potem wybudzić w reakcji na zewnętrzne przerwanie. Byłbym wdzięczny gdyby ktoś rzucił okiem...
Dzięki za pomoc :-) Przy okazji przypomniałeś mi, że po wywołaniu przerwania ich obsługa zostaje zatrzymana. Wprowadziłem Twoje modyfikacje, jednakże nadal układ nie działa. Po naciśnięciu przycisku nic się nie dzieje. Oto poprawiony kod: TIMER1_COMPA_STOP nie należy także zdjąć adresu przerwania ręcznie. Może stos się zapchał?
Dzięki Panowie za pomoc, poradziłem sobie z konfliktem sygnałów. Zastosowałem 2 przerwania zewnętrzne które odczytują wartość licznika, oraz 1 przerwanie od przepełnienia w którym inkrementuję odliczanie sekundy. Pozostało jeszcze wysłać zebrane dane do jakieś pamięci np. karta SD. W razie pytań będę pisał tutaj. #include <avr/io.h> #include <stdlib.h>...
Generalnie mam już przygotowana cały projekt płytki PCB z możliwością wprowadzenia zmian, ale najlepiej jak najmniejszych :) Tak zrób. Tylko daj temu stabilizatorkowi radiator, np. US17-TO220, dostępny w tme. Albo inny dla TO-220. Ok dorzucę radiatorek :) Co do MQ7 - to według normy sygnał zagrożenia daję się np po 120min trwania stanu 30ppm, albo po...
Dokladnie, musisz ustawic stos. U mnie struktura wygladala tak .include "m8def.inc" .org 0x00 rjmp reset RESET: ldi R16,low(RAMEND) out SPL,R16 ldi R16,high(RAMEND) out SPH, R16 main: rjmp main
licznik0 i licznik1 muszą być zadeklarowane jako volatile
Witam, ustawienie rejestru DDR i PORT na 0 daje wejścia pływające (ATmega8 nie ma rezystorów ściągających do masy, tylko podciągające do plusa). Tak jak jest teraz łapiesz kolego zakłócenia. Należałoby albo dodać zewnętrzne rezystory między przyciskami a masą lub zmienić położenie przycisków (między pinem a masą) i włączyć wbudowane rezystory. O volatile...
Witam, W programie przedstawionym poniżej nie zostaje wywołana obsługa przerwania. Próbowałem na innych timerach tez bez skutku. AvrStudio 6, Atmega8a, optymalizacja O2. [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #include "utils.h" #include "display.h" int main(void) { LEDInit( ); Display(0); //Init Timer 0 TCNT0 = 6; TCCR0...
Witam. Próbuję uczyć się C na Atmedze 8 i mam problem z obsługą przerwania. Kod wygląda następująco (z resztą pisany na podstawie kursu z EdW): #include <c:\WinAVR-20090313\avr\include\a... #include <c:\WinAVR-20090313\avr\include\a... #define F_CPU = 1000000 int volatile wyjscia; int indeks; int main (void)...
Po pierwsze - witam na forum (mój pierwszy post tutaj). Włączam obsługę przerwań na początku programu: sei(); GICR =0x40; MCUCR =0x02; zbocze opadające ... ... Na nogę INT0 podpiąłem zwykły przycisk monostabilny (zwiera do masy) z pull-up`em 1KΩ. Jego naciśnięcie powoduje zaświecenie diody na innym wyjściu. (może trywialne, ale dopiero się uczę)...
Witam, Od jakiegoś czasu próbuję włączyć przerwanie sprzętowe w uC ATmega8, robie wszystko zgodnie z datasheetem i nie działa :| Kto mi powie co tu jest nie tak? ; [syntax=c] #include <avr/interrupt.h> // biblioteka do generowania przerwań sprzętowych #define F_CPU 8000000L #include <avr/io.h> #include <util/delay.h> int licznik =...
Buduję prosty sterownik na atmedze 8, chcę obsługiwać klawiaturę w przerwaniach od timera0 ale atmega nie widzi procedury obsługi przerwania i resetuje się. Jeżeli zatrzymam timer albo wyłączę przerwanie timera, albo wyłączę globalnie przerwania to nie resetuje się. Kod procedury obsługi przerwania (funkcje do LCD są w pełni sprawne, nawet gdy ISR jest...
Czesc włąśnie robie robota który skręca po wciśnieciu jednej z dwóch krańcówek które są podłączone z jednej strony pod +5V a z drugiej pod piny int0 i int1 atmega8. No i rzadko kiedy układ reaguje na wciśniećie krańcówki co powoduje rozłączenie obwodu i pojawienie się stanu niskiego. Niewiem czy to wina krańcówek czy może powinienem wpiąc w ten przewód...
Wgrałem do Atmega16 prosty programik obsługi przerwań zewnętrznych (poniżej kod). #include <avr/io.h> #include <avr/interrupt.h> SIGNAL (SIG_INTERRUPT0){ PORTB = 0xFF; } SIGNAL (SIG_INTERRUPT1){ PORTB = 0x00; } int main(void){ DDRB = 0xFF; DDRD = 0x00; PORTD = 0xFF; GIMSK = _BV(INT0)|_BV(INT1);...
Witam, Zmagam się z problemem przerwania w Atmega 8. Bez zagłębiania się w szczegóły mojego projektu, dajcie mi prosze znac czy to normalne zachowanie: 1. Przycisk S1 oraz Impulsator z przyciskiem S2. Impulsatorem "chodzę" sobie po menu i klikam przycisk impulsatora S2, który akurat w tej pętli nic nie robi, przerwania sa wyłączone cli(); ale uruchomione...
Witam Mam problem Wszystko działało na portach PA PC i PD4-7 ale jak podpiąłem cały PD PB do drugiej części matrycy diodowej to przestało działać chyba przez przerwania. Zmieniłem rodzaj przerwania na czasomierz z uwagi ze chyba piny INT0 zmieniały stany. Wszystkie porty mam jako wyjścia a w części matrycy mam błędy zawsze w tym samym miejscu. Jaki...
Witam, Jako początkujący zmierzyłem się z zagadnieniem przerwań i PWM próbując sterować serwomechanizmami podpiętymi do PB1, PB2. Sterowanie ma odbywać się za pomocą potencjometrów, jak w jednym z przykladów Arduino. Początkowo problem rozwiązałem nie wykorzystując przerwań, a jedynie zapisując wartość odczytaną z ADC do tablicy, która następnie wysyłała...
tak , podłączenie jest prawidłowe jedna mała uwaga jeżeli układ ma służyć tylko do separacji to ok , natomiast jeżeli do innych celów to lepiej wykorzystaj dostępne piny z obsługa przerwania zewnętrznego , ustawiając reakcję na opadające zbocze sygnału
Witam! Napotkałem problem przy obsłudze przerwań zewnętrznych (jestem początkujący). Oto mój programik: volatile int przerwanie=0; ISR(INT1_vect) { przerwanie=1; } int main() { LCD_Initalize(); LCD_WriteText("START")... _delay_ms(1500); DDRD &= ~(1<<DDD3); //pin PD3 jako...
Witam Mam problem z przerwaniami w Xmedze. Zarówno przy Timerze jak i UART. Najprościej mówiąc uK nie generuje mi przerwań (podprogramy obsługi przerwań nie są wykonywane). Inicjowałem przerwania w danym "urządzeniu", ustawiałem poziom przerwania, aktywowałem poziomy przerwań i aktywowałem globalnie przerwania. Co trzeba jeszcze zrobić?
Witam, zacząłem zabawę z przerwaniami i jakoś ni mogę sobie poradzić, poniżej mój skromny kod programu który miał za zadanie do 1 sek zapalać diodę podłączoną do PORTB 0, ale coś nie "bangla", czy może mi ktoś wskazać co robię źle? #include <avr/io.h> // dostęp do rejestrów #include <avr/interrupt.h> // funkcje sei(), cli()...
Próbuję zrozumieć działanie przerwań i coś mi to nie wychodzi, chciałem uzyskać efekt że po naciśnięciu przycisku program który jest w pętli nieskonczonej obsługuje przerywanie ale mi to nie wychodzi, o to fragmenty kodu: #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> ENABLE_INT0_FLAGING; waitms(unsigned...
Zastanawia mnie jeszcze dlaczego nie wykorzystano wbudowanego komparatora atmega8 do wykrywania zera. Zwłaszcza że niewykorzystane piny są. Już drugi raz widzę rozwiązanie na wzmacniaczu zbocza i przerwaniu zewnętrznym.
Proszę zauważyć że czas pomiaru nie jest tym samym co częstotliwość pomiarów czy czas powtarzania pomiarów. Przy sygnałach zmiennych trzeba dążyć ,by pomiar był możliwie krótki i do tego służy dzielnik przetwornika . Częstotliwość pomiarów i start konwersji można zainicjować dowolnie wybranym zdarzeniem np przepełnieniem licznika czy przerwaniem zewnętrznym.
Wyrzuciłem z obsługi przerwania pętle opóźnijące: SIGNAL(SIG_INTERUPT1){ if(bit_is_clear(PINC,PC5)){sbi(PORTC,PC5... else cbi(PORTC,PC5); } Niestety nic nie pomaga. Nadal nie działa. Nie działa , bo ... kompilator nie wie ,co to za wektor SIG_INTE R UPT1.Gdybyś napisał SIG_INTE RR UPT1 , to by wiedział :D Piotrek PS Odpowiednikiem powyższych "zabiegów"...
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=...
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.
Do jakich pinów podpina się sygnały z enkoder inkrementalnego do Xmegi ? Czy do któregokolwiek pinu i działają one jak zewnętrzne przerwania w Atmega8?
Po pierwsze do ATmegi 8 wepchnąć RTOS to może być ciężko... chyba, że KaRTOSa. Po drugie moim zdaniem to wystarczy napisać normalną procedurę obsługi przerwania zewnętrznego i tyle.. Program pracuje cały czas, dostaje sygnał z pinu EXT0 i zabiera się za obsługę instrukcji w przerwaniu..
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...
Bo nie tak się używa przerwań zewnętrznych. Można po pojawieniu się przerwania od zbocza narastającego wystartować timer, w przerwaniu zmienić na zbocze opadające i gdy pojawi się zbocze opadające zatrzymać timer, odczytać jego stan do zmiennej volatile wykasować i ponownie ustawić na zbocze narastające. Mozna też wykorzystać oba dostępne przerwania....
Cytat z pomocy BASCOMA AVR: "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."
Nie ma w Atmedze8 JTAG więc nie ma co proponować. Jedyne co musisz zrobicstosując taką małą częstotliwość to dobrze ustawić FUSY iraczej wyłączyc watchdog`a. Wiem o co koledze biega z tym wonym zegarem, sam tak kiedys byłem zmuszony zrobić podczas testowania programu Inną drogą do osiągnięcia podobnego celu jest zajęcie procesora jakims długim przerwaniem...
Obsługę przycisków też zrób w przerwaniu timera, jak radzi BlueDarco - nie ma sensu obsługa przerwania zewnętrznego, bo zniszczy Cię drganie styków...
No dla mnie tym następnym krokiem był przerzutnik T :) Również polecam :) Potem, sugeruje proste przerwania zewnętrzne, timer (tu duze pole do popisu, mozna sobie zrobić na nim mruganie diody, przyciskami sterowac częstotliwość), potem sterować jasnością z PWM. Dalej proponuje pobawić sie wewnętrznym eepromem, przydaje sie w dalszej nauce, potem zewnętrzny...
Witam. Czy byłby ktoś w stanie pomóc mi napisać prosty program, w którym wykorzystuje przerwanie zewnętrzne? Podłączyłem switch z jednej strony do Vcc (takie jest założenie daleszego rozwianięcia zadania) a z drugiej do Portu PD2. Proszę o pomoc oczywiscie z pisania w jezyku C. Może znajdzie się ktoś wyrozumiały, ponieważ większość stron, które przeglądałem...
Dodatkowy wpływ na błąd ma niedokładność częstotliwości generatora kwarcowego. Błąd w sekundach na dobę, wyraża się wzorem: \Delta=86400*(1-\frac{fwzr}{f}) \Delta - błąd w sekundach na dobę (wartość ujemna oznacza spóźnianie się) fwzr - częstotliwość wzorcowa (czyli to co ma być np. 4000000 Hz) f - częstotliwość rzeczywista kwarcu lub generatora kwarcowego...
Niestety za mało znam gcc od podszewki żeby coś poradzić. Wydaje mi się że pliki startup są już w postaci plików OBJ (.o) nie wiem gdzie szukać źródeł. Po pierwsze poruszyłbym ten temat na AVRFreaks. Wygląda że podobna sytuacja była również z innymi ATMEGAmi: https://www.avrfreaks.net/forum/atmega80... Wysłałem zapytanie...
Wystarczy nawet dioda, dzielnik i sprawdzanie obecności impulsów choćby nawet zewnętrznym przerwaniem jeśli jest wolne.
Tego nie widziałem. Znalazłem za to informację że dotyczy to rezonatora pracującego jako generator wytwarzający główny sygnał zegarowy: http://obrazki.elektroda.net/9_123515576... A po drugie, akurat w ATMega8 jest błąd w krzemie i te wewnętrzne kondensatory nie działają (tzn. FuseBit ich nie włącza). Użycie rezonatora jako źródła sygnału dla...
Witm męczę się od dwóch dni z przerwaniem zewnętrznym Atmega8. Programowania dopiero się uczę chciałem wypróbować jak najbardziej łopatologicznie się da, jak działają takowe przerwania. Program działa tak ze cały czas miga na przemian raz jedna raz druga dioda lecz gdy na 4 pinie pojawi sie stan niski zacznie działać przerwanie i na 10s zapali się 3...
atmega8 zewnętrzne przerwania atmega8 przerwania zewnętrzne atmega8 przerwania zewnętrzne bascom
volvo silnika regulacja zbieżność kolor przesunięte kolory projektor
makita migają diody makita migają diody
Lokalizacja bezpiecznika termicznego w DeLonghi Magnifica Regulacja napędu bramy przesuwnej - kluczowe kroki