Procesor gdy wchodzi do przerwania zeruje flage globalnego zezwolenia na przerwania I. Jezeli chcesz zeby inne przerwanie moglo byc wykonane w trakcie wykonywania innego wystarczy ze na poczatku wykonywanego przerwania sam recznie ustawisz flage I. W ten sposob mozesz sobie zmniejszyc priorytet niektorych przerwan pozwalajac innym na dzialanie. Pozdro...
asm na pewno jest taki sam (szczegolnie ten ktorego uzywalem, bo to same podstawy), gorzej z timerami na ktorych opieraja sie dluzsze opoznienia (od ms w gore). nigdy nie zajmowalem sie dspic30, wiec... nie wiem jak to tam jest z tymi timerami. najwyzej dostosujesz sobie <: __________________________ modul sklada sie standardowo z pliku c i h. ponizej...
a jesli powiem ze tak tez próbowałem tylko ze odczyt z kodów z rc5 trwa z przerwą 600ms która musi byc pomiedzy odczytem a konwersją temperatury z ds1820 :( Jakoś nie widzę problemu. Przecież Int0 ma wyższy priorytet niż DS. Jerśli istnieją jakieś konflikty to należy zablokować przerwanie Int0 na czas inicjacji DS'a i odczytu temperatury. W trakcie...
Mi to wygląda na jakiś błąd w koncepcji projektu oprogramowania. Zawsze powtarzam, żeby nie ruszać programowo priorytetów przerwań, bo na ogół kończy się to katastrofą. To jak ruszasz priorytety przerwan ? Sprzetowo ?? (at)arcyimperator Jak masz ustawione PriorityGrouping ?
Witam Czy ja dobrze widze, ze mikrokontrolery serii ATmega nie maja ustawianego priorytetu przerwan ? Z manuala wynika, ze po wywolaniu przerwania system przerwan zostaje wylaczony. I zostaje wlaczony dopiero po wykonaniu podprogramu obslugi tego przerwania. Tak to wyglada i w manualu i w Bascomie. Oczywiscie mozna w podprogramie obslugi przerwania...
Tak, masz racje, wewnatrz przerwania robisz normalne call (czy lcall) i wracasz RET (czy return). RETFIE tylko na zakonczenie procedury przerwania. Tak jak piszesz, RETFIE rozni sie od zwyklego RETURN odblokowaniem przerwan (dlatego nie uzywa sie go wewnatrz, zeby nastepne przerwanie nie zostalo wywolane przed zakonczeniem biezacego). Nie pamietam jednak...
Cześć Staram się skonfigurować SysTick'a w taki sposób żeby zgłaszał przerwanie co 1ms ale w ogóle nie jest uruchamiana funkcja obsługi przerwania... Nie wiem co trzeba zrobić. Funkcja konfigurująca SysTick: [syntax=c_loadrunner]int systick_start(uint32_t ticks){ //sprawdzenie czy wartosc zadana nie przekracza 24b if(ticks>SysTick_LOAD_RELOAD_Msk)...
Ja to robiłem na chama-bezczela... Znaczy na pocżątku przerwania od razu WŁĄCZAŁEM przerwania instrukcją sei Razz Wiem że to niezbyt eleganckie ale działało w moim przypadku. Wcale nie nieeleganckie. Jesli jedno z przerwan ma najwyzszy priorytet to mozna to tak spokojnie robić. Poza tym w AVRach nie ma mozliwosci ustawiania priorytetow przeerwan wiec...
Tak dokładnie o to mi chodziło. Spróbowałem to zrobić tak: w pętli głównej jest cały czas zapalana lampka (włączane zasilanie). W przerwaniu od zmiany zbocza sprawdzany jest stan logiczny wyjścia komparatora i gdy jest "1" to ustawiana jest flaga oraz wyłączana lampka a gdy jest "0" to flaga jest kasowana a lampka zapali się dzięki pętli głównej. Niestety...
Witam, Mam taki problem z tym prockiem Atmela, ze potrzebuje ustalic ktore przerwania maja wiekszy priorytet od innych (tzn moga przerwac je w trakcie wykonywania). W dokumentacji znalazlem jedynie informacje o tym ze w przypadku wystapienia dwoch przerwan na raz wykonane zostanie to ktore znajduje sie wyzej w wektorze przerwan. Chcialbym sie dowiedziec...
Zrobiłem kilka testów z STM32F103RB. Układ testowy działał tak SystTick przerwanie co 0.3sek zmienia stan diody. EXTI0_IRQ z Line0 przy opadającym zboczu ma pętlę wstrzymującą na 5 sek. Każemu z przerwań ustawiam priorytet funkcją NVIC_SetPriority() . Dodatkowo mogę zmienić NVIC_PriorityGroupConfig(NVIC_Priori... //Wybor modelu grupowania...
Co do Pana propozycji z poprzedniego postu: sugeruje Pan ze jesli wlaczam obsluge przerwan portu i ustawiam flage TI_0 zeby wyslac znaki przez putchara to program odrazu sie zapetli przez to i bedzie wykonywal ciagle przerwanie ? tak wyglada moj set_RS() void set_RS() { SCON1 = 0x50; /* SCON1: mode 1, 8-bit UART, enable rcvr */ TMOD...
Co oznacz "static" przy dekalracji zmiennych np. static unsigned char zmienna=0; Jest cos takeigo np: #include <sfr51.h> void main () { //ustawienie parametrow przerwania od Timera 0 TMOD=0x01; TR0=1; ET0=1; IP=0x02; //najwyzszy priorytet dla przerwania od Timer'a 0 EA=1;//globalne odblokowanie systemu przerwan P0=0x00; P1=0x00; P2=0x00;...
Witam! Slecze nad programem dla procka AT89c2051 24PC. Pisze w asemblerku i natrafilem na problem. Po zainicjowaniu zmiennych program glowny wykonuje skok na samego siebie: ajmp $ W inicjacji znajduja sie rozkazy, ktore uruchamiaja 2 rodzaje przerwan 1. przerwanie INT0, gdzie dodatkowo wlaczam wysoki priorytet 2. przerwanie dla T0 w trybie 1 jako czasomierz...
Wlasnie mialem napisac ze przydal by sie jakis uklad ksztaltowania impulsu np Schmitt pomiedzy detektorem a procesorem to po pierwsze a po drugie filtrowanie jakie zastosowales w programie jest conajmniej kontrowersyjne (wylaczanie przerwania zeby nie zlapal nastepnego i wlaczanie go innym przerwaniem). Sekcje krytyczne powinny byc jak najkrotsze a...
TIMSK to rejestr zawierajacy maske przerwan od licznikow/timerow. Instrukcja TIMSK=1<<T0IE0 ustawia bit 7 wiec zezwala na przerwania od przepelnienia licznika T0. Druga instrukcja ustawia podciaganie na pinie PD6 w trybie wejscia lub stan wysoki w trybie wyjscia. Priorytet ?? Nie rozumiem. Instrukcje sa wykonywane w takiej kolejnosci w jakiej...
Mam problem ze swoim programem. To moj pierwszy wiekszy projekt w 51. Problem dotyczy sie przerwan. Mam dwa przerwania, jedno z timera0 do obslugi klawiatury co okreslony czas, drugie zewnetrzne int3 (80c535 ma ich wiecej) z rtc. Oto jak ustawilem przerwania i timer przed wejsciem do glownej petli programu: mov tl0, #00h mov th0, #00h ;do tl0, przerwanie...
Zrob tak ustaw timer0 na tryb 16 bitow, w procedurce przerwania tajmera dodaj linie: TL0=x;TH0=y - x i y w zaleznosci od tego jaki masz kwarc tak aby na kalkulatorze wyszlo przerwanie co ok 1ms. dodaj cztery zmienne typu PWM1...PWM4 i cztery pomocnicze np. pomoc1..pomoc4 i robimy tak: w procedurze przerwania tajmera if pomoc1<>0 then incr pomoc1...
Witam, chciałbym mieć przerwanie zewnętrzne na PE0 a cały czas cokolwike bym nie zrobił, przełączył, zmienił itd jest na PA0, moglby ktos rzucic okiem na kod i powiedziec co jest zle... wydaje mi sie ze w tym syscfg jest cos zrabane, albo nie chce sie ustawic etc... swoje wnioski opieram na tym ze PA0..2 normalnie smiga tylko nie mogeprzejsc jakby na...
witam, mam podobny problem, nie wiem co robię źle, chcę zapalić diodę podłączoną do PB0 za pomocą przerwania od przycisku podłączonego do PC7 lub 8. po wgraniu kodu przerwanie od SYSTICK ładnie działa, zapala i gasi na zmianę diodę na PB1, natomiast dioda na PB0 swieci się cały czas i nie ma żadnej reakcji na naciskanie przycisku.... poniżej kod.
Witam, prosiłbym bym o pomoc, żeby ktoś wytłumaczył, albo podał przykład jak skonfigurować przerwania zewnętrzne w tym mikrokontrolerze bo walczę z tym i nic mi nie wychodzi i zaczynam podejrzewać, że to procek jest zepsuty, albo tej sztuki jeszcze nie opanowałem :D na początku pisałem własne kody, ale po nieudanych próbach w końcu wkleiłem gotowca,...
Witam. Mam problem z panelem dotykowym, a dokładniej z sygnałem TIRQ. Wyświetlacz 2,8 '' ze sterownikiem ILI9325 Panel dotykowy ze sterownikiem XPT2046 Dotyk podpięty do SPI na porcie C. Połączenie 1-1 bez pull-up'ow, rezystorów w linii i kondensatorów. pin 2 na porcie C dostaje sygnał o dotknięciu ekranu. Do tej pory potrzebowałem tylko wykrycia dotknięcia...
(at)takow drganie serwa podczas odbioru rc5 to normalna sprawa bo polecenie getrc5 w bascomie powoduje zablokowanie innych przerwan a wiec i obsluge serw. borykalem sie takze z tym problemem az wrzucilem rc5 do 90s2343 ktory po porcie szeregowym wysyla dana i powoduje przerwanie od usart ktore ma nizszy priorytet niz od timeka z ktorego korzysta polecenie...
Kolego zumek cały szacunek dla Twojej wiedzy i doświadczenia ale niestety flagi aktywujące przerwania można ustawiać w każdym momencie. Nie będę cytował tutaj opisów ale każdy symulator to pokaże. Wyłączenie flagi przerwania spowoduje nie przyjęcie ponownego przerwania , a sygnał reti działa prawie tak samo jak ret z tą róźnicą że zeruje przerzutniki...
To ciekawe co piszesz ,biorac pod uwage, ze usb w stm dziala w fs (12mbit),zastanawia mnie wiec co takiego musi robic procek, zeby biblioteka spowolnila jego dzialanie. Jezeli ustwisz priorytet transmisji usb jako mniej wazny od tego, ktory tak pozera zasoby procka, to fakt, jezeli jest tak jak mowisz,ze biblioteki st tak spowalniaja procka, to przy...
Chodzi mi tutaj bardziej o samą nauke obsługi niż do praktyczego zastosowania. Zrobiłem taki program odbierając wynik w przerwaniach (3 przerwania = 1 wynik) ku mojemu zdziwieniu działa w miarę prawidłowo hehe. Lecz niekiedy zdarza się że wynik się rozjedzie o +/- 50 ale najczęściej zachodzi to po przestawieniu napięcia i stosunkowo rzadko. 1. Czy taki...
Część nie związaną z tematem, usunąłem. ________________________________________... Jakby ktoś miał z tym problem, to zamieszczam działający kod: Timer TC0 generuje 100 przerwań na sekundę, dzięki czemu mam 100Hz wyświetlacz. Funkcja obslugi przerwania (plik main.c): __ramfunc void przerwanie (void) { odswiez ();...
Pozwolę sobie odświeżyć temat dopiero teraz gdyż wcześniej nie miałem czasu:( Oprócz przerwania od przechwycenia licznika dodałem jeszcze przerwanie od przepełnienia: Do funkcji licznik dodałem: TIMSK |= (1<<TOIE1); oraz procedura obsługi przerwania: cykl1 i cykl2 ktore sa przekazane do powyższej funkcji jako argument Oto całość: cykl przekazując...
Może więc warto by było napisać co zrobiłeś, że Ci zadziałało, w jakich konkretnych warunkach ten błąd wystąpi (np wersja Windows/Linux, wersja Ecplise) i pomóc innym? Sam walczyłem z Ecplipsem jak jeszcze nie był dla ARMów tak popularny, były z pluginami problemy ale trzeba było je zwalczyć np. zmienić wersje Eplipsa, zainstalować ponownie, poszukać...
Witam Zmagam się z akcelerometrem ADXL345 + STM32F103. Połączenie po SPI. Otrzymuję na wyjściu wartość przyśpieszenia w kodzie U2. Zapisana jest na 13 bitach, w dwóch rejestrach 8 bitowych. Po odebraniu najbardziej znaczące przesuwam << 8 i łączę z mniej znaczącymi. Problem polega na tym, że wciąż otrzymuję wartość dodatnią, mimo że na najbardziej...
Zamykam temat, ponieważ udało się częściowo go rozwiązać. Stwierdzam ,że nie ma wywłaszczenia przez Systick-a w TIM_IRQ ponieważ PC nie wychodzi z delay-a. Natomiast inne przerwania wzajemnie się wywłaszczają. Różnica w działaniu układu jest widoczna po zmianie priorytetu przerwan.
Komentarze do kodu sam pisałeś? Błąd kompilatora: w AIC_Configure_IRQ pierwszy argument to jak napisałeś "numer urządzenia peryferyjnego" a ty podałeś w kodzie wskaźnik do PITC. PIT to nie peryferium tylko część kontrolera systemowego i jego przerwanie jest obsługiwane po SYSTEM_ID. Poza tym w AIC_Configure_IRQ AIC->AIC_IECR = mask;// !!! tutaj powinieneś...
W procesorach AVR nie ma czegos takiego jak priorytety przerwan w doslownym tego slowa znaczeniu, tak jak to np. jest C51. W AVR priorytety obowiazuja tylko w momencie JEDNOCZESNEGO nadejscia przerwan. Sprzetowo przerwanie jest nieprzerywalne. Mozna natomiast to zrobic programowo, wstawiajac w procedure przerwania ktora bedzie miala nizszy "priorytet"...
Aha, w gcc obsługa zagnieżdżonych przerwań jest skopana, jeśli takowe używasz. Niby dlaczego? Ja uzywam WinARMa z SAM7S256 i zagniezdzone przerwania bardzo dobrze dzialaja. Mozna ustawiac priorytety dla konkretnych przerwan i przerwanie o wyzszym przerwie przerwanie o nizszym priorytecie. Wszystko zalezy od tego jakiej rozbiegowki uzywasz.
Na przykładzie Timer0: Ponieważ używasz priorytetów, to musisz zadbać o to aby sprawdzić czy używane przez Ciebie peryferia, mają możliwość przypisania przerwania do LOW lub HIGH priorytetu. W przypadku Timer0 odpowiada za to INTCON2.TMR0IP. Ponieważ ustawiasz: http://obrazki.elektroda.pl/2728693600_1... ... a obsługę tego przerwania...
8O Przy przeliczaniu nie zapomnij, ze przy transnmisji szeregowej bajt to nie 8 bitow tylko dodatkowo bity synchronizacji i korekcyjne: start (1bit), 8 bitow danych, kontrola parzystosci/nieparzystosci (1bit) albo i bez takiej kontroli (0 bitow) i bit stopu (1, 3/2 lub 2 bity). Suma sumarum wychodzi minimum 10 bitow, maksimum 12bitow czyli maksymalnie...
Nawet jeśli wystąpią w tym samym czasie wyższy priorytet ma int0 i jak się wykona to przerwanie powinno się wykonać INT1 . Jeśli chcesz zmniejszyć ryzyko zwiększ częstotliwość zegara .
Witam A jak masz ustawione priorytety przerwań? Przypadkiem przerwanie od DMA nie wywłaszcza Ci przerwania od DCMI? Proponował bym sprawdzić Status Register w przerwaniu DMA, co jest źródłem przerwania, sam ostatnio miałem taki przypadek, że mimo tego, że nie włączałem przerwania od Start Conversion[SC] a jedynie End Conversion[EC] w ADC, kiedy ADC...
Poczytaj w dokumentacji, sprawa jest tam poruszona. SysTick i PendSV mają być na najniższym, a inne przerwania - które używają funkcji RTOSa - nie mogą mieć wyższego priorytetu (niższego numerka) niż configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIO... lub configMAX_SYSCALL_INTERRUPT_PRIORITY. Obstawiam, że jedna z tych wartości nie jest używana i w ogóle jest...
Przede wszystkim PCINT wymaga większego nakładu programowego. Przy włączonych wielu źródłach danego przerwania PCINT trzeba analizować, który pin zgłosił przerwanie i w jaki sposób się to odbyło (które zbocze). PCINT jest niżej w hierarchii przerwań, zatem na obsługę tego przerwania trzeba czasem dłużej poczekać (w zależności od konstrukcji programu)...
Chciałbym zmierzyć jak długo wykonuje się przerwanie od DMA po zakończeniu transmisji z I2S. Myślałem nad uruchomieniem jakiegoś timera, który będzie zliczał mikrosekundy, ale kiedy wykonuje się jedno przerwanie z najwyższym priorytetem to inne są hamowane. Dobrze kombinujesz! Ale trochę przekombinowujesz :). Nie potrzebujesz żadnych dodatkowych przerwań...
Ustawia sie to w HWconfig po kliknięciu na procesor otwierają sie zakładki do ustawiania "rożnych rzeczy". W zakładce Cyclic Interrupts masz ustawianie przerwań czasowych. Sprawdź tylko czy twój procesor na pewno obsługuje dwa przerwania bo wg. mnie 314 obsługuje tylko OB35.
Witam, chciałbym rozbudować kod znaleziony tutaj: http://mikrokontrolery.blogspot.com/2011... Na razie chciałbym dodać obsługę timerów, niestety przerwania nie działają ;/ Sprawdzam działanie przerwań za pomocą JTAGa (Atmel ICE) i stawiam breakpoint'y w funkcjach obsługi tych przerwań, niestety program...
trzymaj plik calego projektu.niechcialo mi sie tam zaglądac i usuwac , wiec to caly kompletny projekt sprzed ladnych paru lat. cala transmisja byla zrealizowana programowo za pomoca INT i timera 1.i nawet nieistotne jest stawianie na wysokim priorytecie przerwan od timera bo jest chyba dana procedurka korygujaca stany timera tak ze zawsze rowne odstepy...
(at)Piotrus_999 Te tajemnicze biblioteki są dostępne w internecie od ponad 10 lat bo sam używałem ich do pracy magisterskiej. Użycie google pozwoli Ci rozwikłać ta zagadkę. (at)Soberro Według mnie masz problem z problem z obsługą przerwań od przycisku. Byćmoże robisz tam coś czego nie powinieneś. Bez kodu nie da się więcej powiedzieć. Powinieneś zrezygnować...
Dokładniej to nie AVRy, tylko ATMega ma jednopoziomowy sytem przerwań, XMEGA (która też należy do AVR) ma 3-poziomowy system przerwań. ATMegi mają też sztywnie przydzielone priorytety przerwań (o ile jest w ogóle sens mówić tu o priorytetach), XMEGA mają kilka schematów priorytetowania. Tak jak piszą koledzy powyżej można zrobić obsługe nieblokującą...
...Dlatego myślałem że mam gdzieś błąd w programie. pozdrawiam Nie zdawaj się nigdy na symulator Bascoma , bo on często fiksuje :) Steruj silnikiem w przerwaniu Timer0 , a problemy z szarpaniem znikną. Również przerwanie Timer2 , jest zbyt częste i zabiera procowi gro czasu. Piotrek
W pewnym sensie mozna zmieniac priorytety. Wystarczy ze w obsludze przerwania o wyzszym priotytecie wykonamy instrukcje "sei" Wtedy zezwolimy na wykonywanie przerwan nawet o nizszym priorytecie. Pozdro Dexter
Witam, Co do zasady w przerwaniach kod powinien być możliwie jak najmniejszy oraz jak najprostszy. Powoduje to szybkom obsługę przerwań. Nie ma co kombinować i się zbytnio zastanawiać. Wymianę danych między przerwaniami można wykonać jednak jest to ryzykowne z dwóch powodów: 1) Priorytety przerwań 2) Błąd w projektowaniu programu np. Jeżeli MB20 jest...
Z 51 mialem stycznosc dwa lata temu, teraz nie pamietam wszystkich rejestrow funkcyjnych i za co one odpowiadaja, ale za etykieta START masz ustawienie przerwania od timera, wpisywana jest wartosc poczatkowa i pewnie ustawiane priorytety przerwan i ich maskowanie. a za mruganie diody co sekunde odpowiedzialny jest rozkaz CPL, ktory zmienia wartosc wyjsc...
czestotliwosc przerwan przycisk przerwan wektory przerwan
procesor obróbki wideo kostek fotel peugeot kanlux bezpiecznik
błędy pobierania plików błędy pobierania plików
Zielona dioda włącza się i wyłącza - przyczyny EFI Shell - Co to jest i jak działa?