Witajcie moi drodzy W tym temacie poznamy podstawy przerwań i timerów w PIC18F2550 . Na początek będzie krótki wstęp teoretyczny, a potem wszystko przerobimy dokładnie na praktycznych przykładach. Do lektury tematu przyda się ogólna wiedza na temat przerwań i programowania w C, choćby taka z Arduino. Temat oczywiście nie zastąpi w pełni czytania noty...
Hmm. Dobrze napisałeś, że Tobie się wydaje, że obydwa Timery odliczają dobrze, a tak nie jest. Wydaje mi się, że chciałeś uzyskać przerwanie co 8ms ? Więc musisz po każdym przeładowaniu timera go ładować początkowa wartością. Czyli dla timer0 to będzie 6, a dla timera1 to będzie 57536. Ale i tak nie wiem czemu musisz używać dwóch timerów by generować...
Otóż zliczam czas na timerze 2 i co 1 sekundę generuje mi przerwanie obsługiwane w procedurze signal. Jednak gdy jestem w menu które wywoływane jest za pomocą przerwania: ISR_BLOCK, czas nie jest liczony. Jak zrobić by priorytet przerwania Timera2 był większy niż przerwania zewnętrznego. Nie mogę ustawić ISR_NOBLOCK bo zapcham szybko stos. Czy w AVR...
przerwanie powinno być z atrybutem ((interrupt)) oczywiście jest ten atrybut (i tylko ten), jednak nie w definicji tylko deklaracji. Wszystko w Twoim pliku vectors.c. a próby wpisywania wartości 0xFFFE do rejestru SR nie wydają mi się szczególnie mądre. W końcu rejestr ten ma kilka pól które są "reserved" więc nikt nie wie co robią, a poza tym ST pewnie...
Tego nie próbowałem, ale zauważyłem, że ten if w przerwaniu się wogóle nie spełnia :( Po zgłoszeniu przerwania TAIV ma wartość 0x000a zatem jest równy tej stałej lecz rejestr TAIV zostaje dziwnym trafem szybko wyzerowany właśnie przez tą instrukcję: 0x815c: CMP.W #0x000a,&Timer_A3_TAIV 0x8162: JNE (C$L7) 0x8164: BIS.W #4,&Timer_A3_TACTL C$L7: 0x8168:...
Witam, w 131 funkcji serwisowej zaBcz opcje Priorytet timera i bedzie ok, timer wylaczy czuwanie nawet gdy uzytkownik zalaczy czuwanie!! Pzdrw Piotrek
Witam. Próbuje uruchomić program testowy, który polega na tym, że po wysłaniu na RS-a liczby 2 dioda zapala się na okres 1 sekundy i na ten sam czas również gaśnie przez okres 30 s. Wysyłanie na port szeregowy wykonuje za pomocą przerwania z USART. Odmierzanie sekund z przerwania Timera w trybie asynchronicznym(RTC). Program nie działa, bo mam problem...
Jako że niestety, wszystkie przyklady jakie znalazłem o ustawianiu priorytetów przerwań są z wykorzystaniem funkcji bibliotecznych, a to co znalazłem jest baaardzo niepewne i dziwne, więc musze zapytać. Czy takie coś: Dodano po 19 P.S. Jak widzę domyślnie rejestry priorytetów ustawione są na 0000, więc wystarczy np. wpisać 1 na czwarty bit (lub oczywiście...
Możesz sobie edytować czas w timerach wpisując 9999 , Wtedy timer jest nieaktywny. Prościej jednak będzie wyłączyć priorytet Timera ,w tym momencie uzbrajasz z klawiatury, wyjeżdżasz i timer nie rozbroi.
Witam Mam zaprogramowane dwie strefy. Strefa 1 załączana jest przez użytkownika, a strefa 2 ma ustawiony timer strefy i jest uzbrajana codziennie w określonych godzinach. Jest również ustawiony priorytet timera, ponieważ chcę aby po wyłączeniu i ponownym włączeniu czuwania w godzinach pracy timera, timer wyłączył czuwanie o zaprogramowanej godzinie,...
Witam. Posiadam centralę Satel Perfecta 16. Jest ona zaprogramowana w taki sposób: Czuwanie dzienne - ignoruje wejście z czujki ruchu, nie podaje zasilania na wyjście wysokoprądowe zasilające kamerę IP. Czuwanie nocne - ignoruje wejście czujki ruchu, podaje zasilanie na wyjście wysokoprądowe do kamery IP. Czuwanie pełne - kontroluje wejście czujki ruchu,...
Witam serdecznie, mam pytanie czy w centralach DSC istnieje coś takiego jak priorytet harmonogramów (funkcja analogiczna do priorytetu Timerów w centralach Satel)? Chodzi o funkcję, która zapobiegnie automatycznemu rozbrojeniu systemu (jesli będzie zaprogramowane) w przypadku, kiedy uzbrojony on został ręcznie. Jednym słowem to system rozbroi się automatycznie...
Na początku pisałeś że przerwanie nie jest wyzwalane a teraz że jest ale przez "drobną chwilę". Jakie przerwanie działają może któregoś nie kasujesz poprawnie i cały czas wchodzi w jego obsługę a jest na wyższym priorytecie.
Tłumaczą Ci ludzie już drugi dzień. Zwłaszcza kolega Logan . Czy tak trudno przeczytać w Helpie: Instrukcja ON INTERRUPT Przeznaczenie: Wykonuje skok do podprogramu gdy wystąpiło określone przerwanie. Składnia: ON źródło_przerwania nazwa_podprogramu Jeśli trudno to porzuć programowanie - są łatwiejsze profesje.
Timer2 na pewno nie zwalnia. Twój problem może polegać na nieuwzględnieniu priorytetów przerwań. Np: Procesor gubi przerwanie z timera2 podczas obsługi przerwania z timera0. Zazwyczaj ( domyślnie ) w C w czasie obsługi przerwania przerwania zostają wyłączone i na koniec włączone z powrotem ( niejako w tle ). Dokładny mechanizm obsługi przezwań w AVRGCC...
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: ... a obsługę tego przerwania w swoim programie masz w umieszczoną części dla wysokiego priorytetu....
...natomiast drugie występuje naprzemiennie z przerwaniem pierwszym (z niewielkim przesunięciem czasowym) bez względu na to jaką wartość wpiszę do OCR1B Tak niestety będzie. Wartość OCR1B określa stan licznika, przy którym następuje przerwanie, a nie z jaką częstotliwością. O tym, z jaką częstotliwością jest wywoływane przerwanie decyduje wartość,...
...Ale mimo to ciagle zapalona jest dioda - n nie jest inkrementowany. To chyba blad w konfiguracji timera, czy moglby ktos zerknac na to dokladniej? e Przerwanie T2 , ma priorytet niższy niż INT0 - ot cała filozofia ;) Ustaw flagę PT2 w IP , albo lepiej wogóle zrezygnuj z przerwania od T2 , a w przerwaniu INT0 , sprawdzaj flagę TF2 w T2CON. Piotrek
Bardzo bym prosil o podpowiedz co nie gra w tym kodzie, bo juz walcze z tym 3 dzien: #define INT_TWI 1<<19 #define PRZERWANIE_LEVEL4 #define TIMER0_INTERRUPT_LEVEL 0 __irq void timer0_c_irq_handler(void) //przerwanie FIQ { AT91C_BASE_TC0->TC_SR; LCD_wyswietl(wsk_tablica); AT91C_BASE_AIC->AIC_EOICR=1<<AT...
Jeżeli mega ma działać jako SPI slave, to nie uda Ci się współdzielić pinów od SPI z inną funkcją, niestety, bo nie masz kontroli kiedy zewnetrzny host wystawi coś na SPI. Nie wiem z jaka częstotliwością chodzą te serwa, ale może dałoby się PWM przenieść programowo na inny pin. Tzn. sprzętowy PWM wyłączasz dla timera 2, natomiast w jego przerwaniu OC...
Witam! Mam problem z jednoczesnym użyciem Timera1 i funkcji RC5 która jak wiadomo dziął na Timerze0 (kod napisany na ATTINY2313) Jeśli rozdzielę kod na dwa czyli: 1. Wykorzystuje timer1 do sterowania serwem - wszystko działa (bez funkcji pilota na RC5) 2. Jeśli zaprogramuje attiny2313 aby używało tylko funkcji RC5 (pilota) i przy okazji korzystam z...
Tak,zgadza się,po prostu z rozpędu wpisałem Timer3,bo pisałem wcześniej na Atmega128. Poprawiłem nieco kod,ale nadal mam problem z zatrzymaniem stopera. Czy może tryb CTC będzie tutaj lepiej współgrał? [syntax=c] #define F_CPU 16000000uL #include <AVR/io.h> //biblioteka we/wy #include <AVR/interrupt.h> //obsluga przerwan #include <util/delay.h>...
Pomiar odcinków czasu dłuższych od okresu timera sprzętowego i w oparciu o przerwania będzie zawsze kłopotliwy z uwagi na nieunikniony hazard związany z kolejnością obsługi przerwań. Na AVR przerwanie ICP ma wyższy priorytet obsługi niż przerwania od przepełnienia. Ale problem wystąpi nie tylko, gdy mierzone zbocze pojawi się dokładnie w momencie przekręcenia...
"Nowe" czyli od Xmega i nowsze AVR mają mozliwość priorytetu przerwania. Poprzednie miały ustalony. Nie wiem jaki to AVR, ale jeśli ustawisz Timer i przerwanie od niego to jak będzie w przerwaniu to oczywiście zauważy potem flagę przerwania z USART, ale może być za późno, dlatego jeśli nie trzeba, to się przerwań od wszystkiego nie uruchamia. Rzadko...
Witam! Spędziłem już dobre kilka dni na czytaniu specyfikacji, przykładów i różnych wypowiedzi innych ludzi, a problemu wciąż nie mogę rozwiązać. Pracuje na procesorze AT91SAM7S64 z programem CrossStudio i potrzebuje skonfigurować Timer0 tak by zliczał od 0 do rejestru RC w kółko i przy tym generował przerwanie. Z Timerem poradziłem sobie bez większych...
Witam, od kilku dni męczy mnie uciążliwy problem, nie wiem skąd się bierze przepełnienie stosu, skoro wg mnie program powinien działać poprawnie. Kto wie, co może być tego przyczyną? Dziekuje za jakiekolwiek wskazówki Programator - J-LINK SEGGER Środowisko - IAR Procedura obsługi przerwania: __irq void Przerwanie(){ unsigned int dummy;...
W projekcie założyłem sobie dwa przerwania z dwóch timerów. Jedno (nazwijmy je A) wywoływane często i krytyczne czasowo (przerwanie musi być obsłużone jak najszybciej po jego pojawieniu się), trwające tylko kilkanaście cykli. Drugie (B) mniej krytyczne (właściwie w ogóle nie krytyczne), wołane rzadziej, trwające kilkaset cykli. Główna pętla programu...
no tak ale zastanawiam sie czy jest cos jeszcze Dodano po 1 wlasciwie to juz probowalem wszystkiego i jest to samo Dodano po 2 wczesniej tez myslalem ze to moze byc wina priorytetu i to enableIRQ() nic nie robi ale pozniej pozmienialem priorytet na supervisor ale bylo to samo. po sprawdzeniu zawartosci cpsr wyszlo ze bit jest wyzerowany, wiec powinno...
Witam Piszę na atmedze8 w bascomie program do odczytywania danych z odbiornika GPS. GPS jest podłączony RSem do Atmegi, obsługuje go sprzętowy UART. Transmisja jest realizowana z prędkością 4800, megę taktuje zewnętrzny kwarc 7,3728 Mhz (ale na wewnętrzym 4 Mhz też próbowałem). Oto kod obcięty o parę chwilowo nieistotnych rzeczy (definicje zmiennych,...
To Ci powinno ruszyć, napisałem kiedys pod Keila uVision3 V3.63. Dziala z Makieta Olimex'u LPC-2378-STK-A: // (LPC2378) mandaryn 2009 #include <lpc23xx.h> int flaga=0; // 0 -> dioda OFF, 1 -> dioda ON __irq void przerwanie (void) { if(flaga==0) // Gdy dioda wylaczona { FIO2SET|=0x00000001; // Wlaczenie diody...
To może jeszcze inaczej. Chce wykonać dwa podprogramy. Podprogram 1 - FC1 Podprogram 2 - FC2 FC1 wywoływany jest wejściem I0.0 FC2 wywoływany jest wejściem I0.1 Potrzebuję jednak by po wywołaniu FC2 niezwłocznie został wywołany FC1 bez względu na to czy I0.0 zostało zgłoszone. Aktywuję programowo I0.0 i nie martwię się o to czy jednocześnie I0.1 jest...
Poniżej wrzucam kod odnośnie przerwań. Używam 4: 1) Od konwersji ADC 2) Od przyjścia znaku na USART 3) Od przerwań zewnętrznych 4) Od przepełnienia timera do update zmieannych Po krótce ma on działać tak: jeżeli pojawi się coś na USART to przerwij i sprawdź co to za znak. Zrób odpowiednią funkcję. Jeżeli jest to jeden ze specjalnych znaków to przychodzi...
Witam wszystkich!!! Piszę program do wiatromerza(prędkość wiatru) który zlicza impulsy z kontaktronu(ilość obrotów) i zamienia na km/h. I kto mi powie co tu jest źle bo nie ma bata żeby mi to działało :D Mikrokontroler DS89C450. Ogólnie to ma działać tak, że leci sobie Timer 2 i przerwnie od niego jest co 1ms. jesli nie ma przerwania zewnętrznego od...
No tak już chyba zakumałem :D bo przecież to co wykonuję w przerwaniu od timera0 nie musi działać idealnie cały czas, tam krótki przestój nie zaszkodzi. priorytet ma mieć przerwanie generujące sygnał. więc przeniesienie pierwszej obsługi to bętli głównej powinno rozwiązać problem. Dzięki wielkie, to powinno działać :) co kilka głów to nie jedna.
A może wyzwalanie DMA timerem jest po to, aby zapisywać właśnie do timera? jak ktoś będzie generować przebieg o zmiennym okresie, to może mieć w buforze kolejkę kolejnych wartości TOP (nie wiem dokładnie jak działają timery w xmega, nie programowałem ich nigdy) uaktualnianych po każdym przebiegu. Może ktoś będzie generować przebieg o zmiennym wypełnieniu,...
Witam, napisałem prosty program którego zadaniem miało być co 0,5 sekundy posłać 1 znak za pomocą bluetootha BTM-222. Dla testów w procedurze przerwania napisałem miganie diodą. Dla tej procedury wszystko wykonuje się poprawnie: [syntax=c] ISR(TCC1_OVF_vect) { PORTF.OUTTGL = PIN7_bm; } [/syntax] Natomiast dla tej już niestety nie: [syntax=c] ISR(TCC1_OVF_vect)...
1) Strata z dokładnie tego powodu, o którym wspomniał wojekkk . 5) Może przeszkadzać przy publikacji kodu, przenoszeniu na innego kompa, itp. Generalnie obsługa timera powinna mieć wyższy priorytet niż reszta programu, bo od niej zależy dokładność. Nie liczyłbym na to, że wykonanie funkcji obsługi LCD za każdym razem wykona się tak, że nie przeszkodzi...
Wrażliwość jest nieznaczna. Nic się nie stanie, jak najpierw jakiś czas pochodzą na równych priorytetach. Chodzi o to, że mam PWM programowo zrealizowany na przerwaniu od timera - nie mam dojścia niestety do wyjścia timera, żeby sprzętowy PWM wykorzystać. I niestety czasem trochę się ten PWM przycina, chciałem dać najwyższy priorytet temu przerwaniu...
Procesor to konkretnie STM32F439IGT6. Mam taki kod w mainie: A powinno być tak: Najciekawsze wnioski są jednak po dodaniu tych linii: A tu dla wersji która inicjalizuje dopiero po kolejnych kliknięciach w programie: Na rysunku jest po pierwszym kliknięciu, ale kolejne już nic nie zmieniają (poza tym że rusza main i program zaczyna wysyłać dane pomiarowe...
Witam. Mam drobny problem i nie wiem jak go ugryźć. Atmega32 kwarc 16mhz W przerwaniu odczytuję klawiaturę ps2 i w między czasie robię wyświetlanie na matrycy w Timerze z preskalerem 64. I jeszcze mam uruchomione PWM. Jesli wyświetlanie zrobie w pętli głównej i wyłaczę timer to klawiatura czyta się prawidłowo ale jeśli uruchomię timer to wówczas czyta...
Tego jitteru w żaden programowy sposób nie wyeliminujesz. Jego powodem jest to, że wejście w ISR trwa nie zawsze tyle samo - XMEGA wykonuje instrukcje w ciągu 1, 2 lub 3 taktów, a ISR nie przerywa instrukcji, lecz CPU musi ją najpierw dokończyć. Więc w zależności od wykonywanej instrukcji już masz jitter 0-2 taktów. Do tego, jeśli MCU wykonuje inne...
Witam Programuję pracę inżynierską na Arduino Mega, ale nie korzystając z gotowych bibliotek, tylko bazując na rejestrach i ich ustawieniach. Chciałbym wykorzystać wewnętrzne przerwania sześciu timerów oraz 4 przerwania zewnętrzne zboczem. Proszę o informacje, gdzie w nocie katalogowej można znaleźć informacje na temat priorytetów wykonywania przerwań,...
Na początku tak konfiguruje rejestry MOV IE, #10001011B;PRZERWANIA: TIMER T0, INT0 SETB IT0 ;INT0 REAGUJE NA ZBOCZE SETB TR1 SETB PT0 Przerwania od T0 i INT0 zajmują kilka cykli. Krytyczne jest natomiast przerwanie od T1 gdzie multipleksuje wyświetlacz, sprawdzam klawiature i co jakiś czas odczytuje DS18b20. Timer ładowany jest wartoscią D8EFh....
Wektory przerwań mają odpowiednie priorytety ... jeżeli odczyt czasu masz w przerwaniu to przerwanie klawiatury powinno być o mniejszym priorytecie. Jeżeli obsługę odczytu masz w pętli głównej - to zrób własny "kontroler przerwania" :P Po odczytaniu godziny itd. sprawdź czy flaga przerwania jest ustawiona, a jeżeli tak to skocz do procedury obsługi...
Beno99 masz rację. Przeanalizuję to jak tylko będę miał chwilkę czasu aby jeszcze z tym powalczyć. Póki co, strefa z priorytetem timera w połączeniu z pilotem działa bezbłędnie.
1: możesz podać argument _delay_ms(1000) zamiast 4 razy wykonywać _delay_ms(250); 2. W warunkach, dla własnego dobra stosuj nawiasy, by się nie pomylić z priorytetami: [syntax=c]if((czas[0] == 0b00101000) & (czas[1] == 0b01000100))[/syntax] ale czy jesteś pewien, że chcesz użyć &, czy może && ? 3. Dlaczego używasz liczb binarnych?
14:20:25.471> X 14:20:26.405> X 14:20:27.342> X 14:20:28.340> X 14:20:29.276> X 14:20:30.211> X 14:20:31.147> X 14:20:32.084> X 14:20:33.099> X 14:20:34.033> X 14:20:34.969> X 14:20:35.967> X Teraz widać że timer nie dochodzi do 1 sekundy. Ale te wartości markera czasowego pochodzą nie z programu lecz z systemu operacyjnego, tak? Więc włóż je sobie......
Mam problem z kolejkowaniem przerwań i wywłaszczaniem w STM32 Cortex M3. Otóż mam 2 timery, TIM6 oraz TIM12 o tym samym priorytecie (jeśli się wykonują, nie mogą się wywłaszczać, dlatego ten sam priorytet). Czasem używam globalnego wyłączenia przerwań i w tym czasie zgłaszają się oba, z tym że pierwsze ( po włączeniu IRQ) wywołuje o niższym numerze,...
smalski->O priorytecie przerwań w AVR-ach , można powiedziec tak , że im niższy(mniejszy) adres wektora , tym wyższy priorytet posiada dane przerwanie. Celetron-> Żeby zablokować wszystkie przerwania na czas wykonywania przerwania od np.T1 trzeba postąpić jak poniżej: On Timer1 EtykietaT1 , NOSAVE ... EtykietaT1: Disable Interrupts 'co kompilator...
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.
kurcze, trudne zadanie. Mógłbyś podrzucić cały katalog projektu, tzn. bez rzeczy które chciałbyś zachować tylko dla Siebie. Chodzi mi o tą często zwaną 'rozbiegówkę'( nawiasem... świetna polska nazwa) w assemblerze i o 'startup' w 'C'. sam'a tylko na płaskich przerwaniach znam( bez priorytetów przerwań). Czy procesor wchodzi w to przerwanie? tu inicjalizacja...
można programowo sprawdzać w pętli głównej ten licznik i zablokować odpowiednio z wyprzedzeniem inne przerwania. Po odblokowaniu wykonają się kolejno. Ciekawe tylko po co taka procedura bo nie napisał jaki to program, widać lubi aby czytelnicy forum pobawili się w zgadywanki. Pzdr. N. Witam, Jest to dobry pomysł, by na krótko, przed wystąpieniem przerwania...
Jak rozumiem, ta trzecia strefa to ten Twój korytarz. Jeśli w korytarzu wisi czujka i ten szyfrator, pamiętaj o czasie na wejście do strefy III. Ta czujka zewnętrzna nie może być tak sterowana, jak piszesz, bo każdorazowe jej naruszenie będzie wywoływać uzbrojenie/rozbrojenie strefy. Napisz, co jest dla niej priorytetem: czy timer (ma alarmować ZAWSZE...
Witam, od pewnego czasu próbuję wywołać przerwanie generowane przez Timer 0. Przerwanie ma być typu FIQ o najwyższym priorytecie. Częstotliwość licznika to 80Hz (w przerwaniu będzie wywoływana funkcja odświeżająca matrycę). Czy ktoś jest mi w stanie pomóc i napisać jak inicjować rejestry oraz jak obsłużyć przerwanie? pozdrawiam
maciejbilu --> powiem więc ci inaczej - trzeba to całkowicie inaczej napisać i zapewniam cię że nie trzeba wykorzystywać Bitwait. Poczytaj sobie nawet na elektrodzie o wykorzystywaniu tzw FLAG w przerwaniach - to może coś ci się rozjaśni - bo na razie to niestety brniesz w ślepy zaułek - w ogóle nie rozumiejąc podstaw i zasad działania przerwań. Stąd...
Mój problem polega na tym że komunikacja z 2 czujnikami na i2c przebiega poprawnie dopóki nie odpalę przerwań od input capture z timerów. Komunikacja zawiesza się w losowo wybranych momentach, raz po 20 sekundach raz po 10 minutach. Gdy wyłączę przerwania to chodzi bez blednie. Mój procesor to stm32F103rb. Próbowałem już 3 sposobów na odczyt z i2c -...
SIG_INTERRUPT1 jest wyzwalany przez opadające zbocze z transoptora zasilanego z prostownika którym wykrywam przejście przez zero. Miałem problem z pilotem bo mniej wiecej co 2 wcisnięcie przycisku układ reagował. Domyślalem się (błędnie) że podczas dekodowania rc5 dochodzi do przerwania z SIG_INTERRUPT1 co psuje odczyt z pilota (zaburzenie czasu) Sei();...
Czy istnieje u ciebie przerwanie które wymusza dostęp na FSMC, tj. wyświetlacz? Jeśli nie, to nie ma opcji żeby praca FSMC miała wpływ na wykonywanie przerwań...Jeśli tak, to masz błąd w założeniach, bo dostęp do wyświetlacza nie powinien być w ISRrze.... Przerwania się skolejkują wtedy, gdy masz włączonych kilka przerwań i wszystkie wystąpią na raz...
Jeden jest elektromechaniczny z funkcją wyłączenia (0-120min) a drugi elektroniczny z funkcją załączenia. Obydwa sprawne bez ukrytych wad. ceny: elekromechaniczny - 15zł + koszt wysyłki elektroniczny - 15zł + koszt wysyłki Cena za obydwa 40zł z wliczoną przesyłką priorytetową, wpłata na konto, odbiór osobisty, pobranie tylko i wyłącznie po wcześniejszej...
Skoro nie masz problemu z timerem, to po co w ogóle o nim pisać i po co testować program który ma też przerwania od timera? Niemniej jednak na początek brawa za to, że NIE używasz słynnego i popularnego badziewia (; Wg mnie (skoro chodzi o pin zerowy), powinieneś konfigurować rejestr AFIO->EXTICR[0], a nie 1. Problemem jest manual niezgrany z plikiem...
Gdzieś na forum był już podobny temat przerabiany. Instrukcja skoku do przerwania trwa z tego co wiem 4 cykle zegarowe. W trakcie obsługi jednego przerwania inne nie jest obsługiwane. Zostanie wykonane dopiero po zakończeniu obsługi poprzedniego przerwania. Jeżeli co najmniej dwa przerwania wystąpią w tym samym czasie to zostanie obsłużone to z niższą...
No dokładnie tak robię. Tylko że najszybszy i najłatwiejszy sposób na to to wyłączenie przerwania i ponowne jego załączone po czasie przez timer. Mylisz się co do tego, że bardzo szybka obsługa przerwań nie będzie miała na nic wpływu. Problem z Twoimi radami jest taki, że podajesz dużo ogólników i żadnych konkretów. Nie oczekuję gotowego rozwiązania,...
Na podstawie kodu, którego mamy się domyślić mamy się domyślić co zaobserwowałeś i Ci pomóc. Bo dalej nie wiemy, co zaobserwowałeś gdy w kodzie są 2 procedury obsługi Dalej nie wiemy, czy to procesor czy symulator, jaki procesor, nie znamy efektu pracy kompilatora - listingu assemblerowego, dalej nie wiemy, czy OpenTimer4 kompiluje się a nie działa,...
Ne wiem, po co do takiego zadania angażować RTOS, chyba, że docelowo ma być tego duo więcej. Skoro wiesz, co i jak trzeba zaprodramować - po prostu zaprogramuj timer, ADC i DMA, obrabiaj wstępnie próbki w przerwaniu DMA, a resztę przetwarzania zrób przez PendSV (obniż priorytet do najniższego), bez pętli głównej. Wiesz calosc dekodowania i wysylania...
Zależy jakie odcinki czasu chcesz odliczać i z jaką dokładnością. Ogólnie system Windows nie nadaje do odmierzania dokładnych odcinków czasu rzędu kilku ms i mniej. Wynika to z występowania w systemie wielu procesów, które są cyklicznie przełączane. Kiedyś pisałem bibliotekę do programowania mikrokontrolerów poprzez port LPT i tam do odmierzania krótkich...
może dałoby się ustawić timer tak żeby wyzwalał transmisję tylko jednego bajtu na raz, tylko ciężko chyba byłoby zrobić dokładnie 9 takich transmisji. Przy takim rozwiazaniu jak piszesz ze timer wyzwala transmisje pojedynczych bajtow musialbym pozostawic sobie jakis zapas czasu po zakonczeniu kazdej takiej transmisji a to wygeneruje sumarycznie calkiem...
Witam Mam problem z uruchomieniem timera w Atmel Studio 7, program przeznaczony jest dla procesora xmega128a3u Mam załadowane następujące biblioteki: [syntax=c]#define F_CPU 2000000UL #iinclude <util/delay.h> #include nclude <avr/io.h> #<avr/interrupt.h> uint8_t licznik = 0; [/syntax] i poniżej definiuje ustawienia timera [syntax=c]TCC0.PER...
... aby dać napięcie do wentylatora (załączyć go), na którym zadziała timer z wentylatora np. 30 minut i po tym czasie on sam się rozłączy (obwód) powodując, że funkcjonalność automatyczna z higrostatem nadal będzie działać? ... Z opisu działania tego urządzenia wynika jasno, że higrostat ma wyższy priorytet niż układ czasowy. W praktyce oznacza to,...
Witam, chciałbym rozbudować kod znaleziony tutaj: 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 się nie zatrzymuje... Korzystam z ATxmega256A3BU Oto mój kod: [syntax=c] #include <asf.h>...
Czyli pewnie przewody z lamp nie są podłączone do tego bezpiecznika w takim układzie I dlatego spróbuj zaprosić kogoś kto się zna na tym i sprawdzi gdzie są przewody od niedziałających lamp i gdzie jest zasilanie tej działającej lampy. Potem połączy w jeden obwód, podłączy zegar a ty będziesz się cieszył że masz to co chciałeś. Nie będzie tak jak chce....
Witam, mam do zbudowania prosty układ do którego mam kilka pytań. Idea- Mam napełniać dwa zbiorniki woda każdy z nich ma swój czujnik poziomu i automatycznie po spadku poziomu wody ma jej dolać. Czasem będziemy korzystać tylko z jednego zbiornika czasem z drugiego a czasem z dwóch jednocześnie. Jeżeli wody jest mało czy to w jednym czy w drugim napełnianie...
Czy jest możliwe zastosowanie 3 nadajników i jednego odbiornika wszystkie działające na tej samej częstotliwości. Co się stanie jeżeli dwa nadajniki jednocześnie zaczną nadawać? Priorytetem jest 100% (albo nieomal 100% :-) ) odebranie sygnału o przerwaniu bariery świetlnej. Ale równie ważna jest informacja czy poszczególne nadajniki i fotokomórki działają....
myślę że to wszystko wyjaśni Super opis naprawde wielkie dzieki!!! Mam tylko pytanie (moze niedoczytalem bo pozna godzina...): T0 ma wiekszy priorytet niz T1. Jezeli realizujemy przerwanie z T0 to wiem ze przerwanie z T1 zostanie zrealizowane po nim, ale czy w instrukcji przerwania T0 moge wpisac zeby sprawdzal czy T1 sie przepelnil? Innymi slowy:...
Kontrolka Timer dziala na zasadzie porownania czasow od momentu ostatniego odswierzenia petli programu do jej nastepnego. Jezeli ustawisz interval np na 100 milisekund to nie otrzymasz idealnych odstepow miedzy zdarzeniami czyli idalnie co 100 milisekund. Jezeli zdarzenie zostalo wykonane czas zostaje zapamietany, nastepnie wykonywane sa inne funkcje...
witam przegrzebałem już pół internetu i nie mogę znaleźć odpowiedzi dlaczego nie działa mi przerwanie z timera, programuje w eclipse timer inicjuję tak: //--------------------------------------... void TIMER0_Init(int czas_us) //Aktywacja Timera próbkującego { unsigned int val, dummy; pPITC->PITC_PIMR = ~(AT91C_PITC_PITEN...
Dobrze kombinujesz z przerwaniami. Nie musisz nic sprawdzać. Gdy licznik się przepełni flaga TF się ustawi i procesor przejdzie do wykonywania programu pod odpowiednim adresem (jak pisałeś) , o ile oczywiście włączysz sobie przerwanie -Słowo IE bity EA i ET0 lub ET1. Po przejściu pod odpowiedni adres flaga tf zostanie skasowana więc jeśli włączyłeś...
Widziałem w pewnym poscie ostrzeżenia przed or-owaniem, więc pomyślałem, że pisząc całe wartości uniknę problemów. Pokaż linka, sprostujemy (; Przy bardziej zakręconym ORowaniu warto pamiętać o (zwykle zbędnych) nawiasach, żeby nie zastanawiać się niepotrzebnie nad priorytetami - np coś na styl: 0x55 << 3 | 0x12340000 jest równoznaczne temu (0x55...
Brak wywłaszczania stwierdzam po wywołaniu _delay_ms() w procedurze void TIM1_CC_IRQHandler(void). PC wchodzi mi wtedy to pętli, która jest nieskończona bo nie ma dekrementacji zmiennej w przerwaniu SysTick-a. Jak zamiast delay-a dam timer to skutek widoczny jest w pomijaniu ramek modbus-a. Być może wartości, które ustawiasz w polach PreemptionPriority,...
O stosie piszesz herezje, o nakładaniu przerwań też. Czym innym jest odblokowanie zgłaszania przerwań przez 8259A w starym PC (to się robiło na końcu procedury obsługi przerwania), a czym innym wyzerowanie znacznika zdarzenia powodującego przerwanie - to ZAWSZE powinno się robić jak najwcześniej w procedurze obsługi przerwania, żeby nie zgubić kolejnego...
BlueDraco Patrząc na rysunek i fragment zaznaczony na zielono: odnosząc to do mojego przykładu: - Timer ma ustawiony priorytet A (domyślnie) - USART ma ustawiony priorytet B - EXTI1 ma ustawiony priorytet B To dla USART i EXTI1 można ustawić podprorytety? Które będzie obsłużone w pierwszej kolejności?
Oszczędność energii i ATMega8? Żarty :) Jeśli oszczędność energii jest priorytetem to przede wszystkim zmień procesor. Jeśli nie jest, to nie trać czasu na akademickie rozważania. Kodów do RC5 masz w Internecie sporo. Zastanó się też czy jesteż w stanie w ciągu 32 us (to raptem mniej niż 32 instrukcje asemblera) zareagować na zdarzenie - podpowiem ci,...
Witam, Uruchomiłem RS232 przez klase CDC z Twojego tmf kodu: (dzięki działa super) I teraz chciałem zrobić przerwanie TCC0 z f = 1 Hz jednak kod poniżej nie che mrugać diodą LED ;/ Dodano po 4 Gdy przekopiowałem do nowego projektu ten Timer TCC0 i przerwanie wtedy dioda mruga prawidłowo, natomiast problem pojawia się w momencie dodania klasy CDC
michalko12: akurat poparte doświadzczeniem. Miałeś złe założenia przed przystąpieniem do tworzenia programu. Tak jak napisałem wcześniej, przerwanie powinno wykonywać się tyle ile powinno, a nie dowolny okres. Nie ma znaczenia gdzie wykona się zadanie, czy w przerwaniu czy w pętli głównej. Ma się wykonać tak, żeby cały program spełniał swoje zadanie....
1. Wobec tego korzystaj z funkcji opóźnień dostępnych we FreeRTOS. 2. Nic dziwnego, że opóźnienia tak działają - system ma swój timer i procedury obsługi przewań, a one zajmują czas procesora. 3. OneWire tak na pewno nie obsłużysz. Zajrzyj do najnowszej EP - zobaczysz, jak można to zrobić. Na pewno nie z delay(), a przerwanie timera obsługującego 1W...
Dzieki za podpowiedź. To HAL miałby taki narzut czasowy ? Identycznie temat wyglądał z bibliotekami standardowymi. Sprawdzę oczywiście. Ale ta sama funkcja wpuszczona w zwykłego "while" generuje przebieg kilka MHz. Nie bawiłem się priorytetami przerwań bo przy takich zegarach (180MHz) chyba raczej nie ma sensu jesli problem jest przy 400kHz. Program...
Próbuje bezskutecznie uruchomić transfer DMA taktowany zdarzeniem update timera TIM4 ustawionego w tryb PWM. DMA ma pracować w trybie circular i transmitować w kółko tablice tab[1000] na GPIOC. Niestety efektów brak a pomysły mi się wyczerpały. Może ktoś wskaże co pominąłem albo gdzie tkwi błąd. [syntax=c]RCC->APB1ENR|=RCC_APB1ENR_TIM4... RCC->AHB1ENR|=RCC_AHB1ENR_GPIODEN;//...
Tak zgadza się. Wybór AUX a zasilanie OUT musi zależeń od tego, co i ile się ma podpięte. Co do wydajności - dobra uwaga, każdy musi przemyśleć swoje priorytety i świadomie robić to lub nie. Ja wyszedłem z założenia, że jeśli zasilanie padnie podczas nieobecności w domu, to oświetlenie takie mogę wyłączyć z klawiatury (szybkie sterowanie wyjściem sterującym...
Zacznijmy od pytań: 1. Które bity według Ciebie ustawiłeś w TCCR2B : Autor tematu pisał, że stosuje gotową bibliotekę do obsługi jakiegoś panelu dotykowego. Z tego, co zrozumiałem, to przerwanie to znajduje się we "wnętrzu" tej biblioteki. Takie efekty są oczywiście normalne, gdy ktoś mało świadomy tego, co się dzieje w jego programie stosuje gotowe...
Lutowanie jest czasochłonne i niebezpieczne. Niebezpieczeństwo istnieje, ale ktoś na elektrodzie pokazywał jak to rozsądnie lutować, dobry agresywny topnik i gruby grot, lutowanie zajmuje mniej niż 0,5s, autor sposobu utrzymywał że nagrzewanie akumulatora jest mniejsze niż przy zgrzewaniu. Ciekawe, jak wyglądało to u ciebie, że było czasochłonne. I...
Czy zamiast dwóch układów 555 - jednego w roli mostka Shmidta i jednego w roli timera można to zrobić na jednym układzie 555? Nie. Tu jeśli chcesz zachować topologię układu to zastosuj 556 (dwa 555 w jednej obudowie). Jeśli zostanę przy dwóch 555 to użyje tandemu 556 - dziekuje. Nie wiem, co rozumiesz przez "mostek Shmidta" - jest " Tak chodzi o przerzutnik...
Witam, Muszę przygotować na zajęcia projekt stopera z opcją zapamiętywania między czasów. Przygotowując się do projektu przerobiłem poszczególne tematy z książki Gałków. Jednak nadal nie wiele sam potrafię zrobić. Znalazłem przykład stopera, który nie posiada opcji zapamiętywania między czasów. Od 2 dni analizuje kod, ale nadal cały czas gubię się w...
Jest to bardzo specyficzna konstrukcja i prawie na pewno nikomu oprócz mnie nie przyda się w tej konkretnej postaci jaką tu opisuję, ale zawsze pozostają walory edukacyjne, nauczenie się jak coś zrobić albo jak czegoś w żadnym wypadku nie robić :D Urządzenie jest protezą dzięki której omijam niektóre wady chińskiego rejestratora wideo, model CVXR-I273...
Witam mam taki problem, otóż mój STM32F4 bardzo dziwnie się zachowuje. Mój program ma odczytywać z 3 różnych czujników przez I2C dane i przeliczać je. I2C zrealizowane jest na przerwaniach (z najwyższym priorytetem), dodatkowo używam timera 2, by odmierzał czas. Oto kod: [syntax=c]#include "stm32f4xx.h" #include "stm32f4xx_conf.h" #include <stdio.h>...
Teraz mam problem z przerwaniami od końca konwersji ADC1. Działanie układu wygląda tak jakby mikrokontroler nie wchodził w obsługę uchwytu przerwania od przetwornika ADC 1,2. Konfiguracja przetwornika: void init_adc (void) { // Niezależny tryb pracy // Włączenie przerwań od końca przerwań - EOC ADC1->CR1 = ADC_CR1_EOCIE ; //Wybór czasu...
Witam, Sonar działa w ten sposób, że przy wysłaniu impulsu ultradźwiękowego ustawia wyprowadzenie INIT w stan wysoki, przy odebraniu echa wystawia wyprowadzenie ECHO w stan wysoki. Linie te podpięłem do wyprowadzeń uC przez inwerter: INIT do INT0 , ECHO do INT1. Przerwania reagują na zbocze opadające. Gdy odbiorę przerwanie od INT0(sygnal init) wtedy...
Witam. Pisze różne funkcje do obsługi stm32f4 i chcę zrobić uniwersalną funkcję, czyli coś takiego: [syntax=c]uint8_t timerSetIrqFun(uint8_t nrTim, void (*tim_Irq)(void), uint32_t timeMs, uint32_t priority)[/syntax] Wiem że nie muszę tłumaczyć, ale co tam. Funkcja pobiera nr timera, wskaznik na funkcję która będzie wywoływana w przerwaniu Timera, okres...
Nie jest tak, że w wszystkie przerwania mają ten sam priorytet? Nie jest to tak. Generalna zasada jest taka, że w pierwszej kolejności zostaje wykonana procedura obsługi przerwania, które pojawiło się prędzej. Jeśli w czasie wykonywania tej procedury nie włączymy flagi globalnej I a pojawi się nowe przerwanie, będzie musiało czekać na zakończenie obecnej...
Szanowny Tdv Twoje wszechwiedza chyba Ci troszkę z kultury ujmuje. Nie życzę sobię żadnych inwektyw i kalumni z Twojej strony ponieważ nic nie mam do Ciebie więc i Ty pilnuj swego nosa a jak Ci nie pasuje to nie czytaj moich postów. Wracając to tematu kiedyś planowałem programową transmisję i ją zrobiłem i sprawdziłem załącznik PROGR.C Potem przesiadłem...
[syntax=c] #include <stm32f4xx.h> #include <stm32f4xx_rcc.h> #include <stm32f4xx_exti.h> #include <stm32f4xx_tim.h> #include <stm32f4xx_gpio.h> #include <misc.h> GPIO_InitTypeDef display[8], power[4]; int digits[10] = {0x03, 0x9F, 0x25, 0x0D, 0x99, 0x49, 0x41, 0x1F, 0x01, 0x09}; unsigned int time = 0; void SysTick_Handler(){...
Pojęcie Theremin po raz pierwszy pojawiło się około 1920 roku, kiedy rosyjski wynalazca Lew Termen skonstruował swój instrument, którego dźwięki przypominają jęki, wycie, kobiecy głos czy nawet flet i skrzypce. Standardowy Theremin posiada dwie anteny jedną do regulacji tonów a drugą do wzmacniania głośności. Autor zapragnął zbudować podobne urządzenie...
Ustaw timer w tryb multiwibratora Niestety brak wolnych pinów (a nawet jest ich za mało tak że np CS-y układów SPI są multipleksowane). Było pomyśleć w trakcie projektowania. Zawsze warto zostawić trochę pinów jak najbardziej uniwersalnych w rezerwie. Z jaka prędkością przesyłasz dane? Jak nie dużą, to ustaw przerwanie od zbocza opadającego. Jeśli...
Musisz chyba użyć timera ustawionego tak aby przerwanie z niego następowało później niż czas między kolejnymi wysyłanymi paczkami z pilota. Z tego co pamiętam to pilot w standardzie RC5 wysyła przy stale wciśniętym klawiszu kod co jakieś 89ms. Jeśli używasz przerwań do czytania kodu to dajesz mu wyższy priorytet niż timerowi. W timerze zerujesz pin...
Bawię się ostatnio wspomnianym w tytule mikrokontrolerem i natknąłem się na problem z zewnętrznymi przerwaniami, którego nie potrafię obejść. Zaczynając od tego co działa: układ jest sprawny na pewno, jest podłączony, cały czas hula dioda sterowana przez timer z ustawionym przerwaniem na przepełnienie; podłączony jest również PICkit 3 przez icsp. Korzystam...
Tu masz kod stopera z jednym międzyczasem, dodanie kolejnych to nie problem, ale nie chce mi się tego pisać. Program bazuje na przykładowym kodzie załączonym na płycie CD/dyskietce do zestawu DSM-51: STOSEQU60H SEG_ONEQUP1.6 DISPLAYEQU30H LEDSEQUDISPLAY+6 DOTSEQULEDS+1 NEXTEQUDOTS+1 BUFFEREQUNEXT+1 ;Timer 0 przeglądanie wskaźników co ok. 1ms - niższy...
:arrow: Krisek Nie wiem dlaczego upierasz się przy takim autouzbrajaniu, ale: Możesz spróbować z Integrą, w opcjach linii czujek zaprogramować "maksymalny czas braku naruszenia" - dajmy na to 15 minut, zaprogramować tyle wyjść , ile wejść, jako 34-"awaria wejścia", te wyjścia złączyć na jedno funkcją 46-"iloczyn wyjść" - w sumie otrzymasz sygnał "lokal...
Witam, Jest sobie centralka na obiekcie. W niej zdefiniowana 1 partycja z jedną strefą. Strefa jest uzbrajana automatycznie timerem użytkownika strefy. (Timer 0) W opcjach ustawiono: Centrala: - niezerowy czas opóźnienia autouzbrojenia - priorytet timera LCD: - odliczanie autouzbrojenia (LCD) Wszystko działa, ale istnieje potrzeba, by przed uzbrojeniem...
Witam, ja też polecam Satela i do tego centralkę CA-10. Jak moi poprzednicy zauważyli CA-6 wystarczy jednakże w przypadku gdy za pol roku zdecydujesz sie (czy tez klient sie zdecyduje) dozucic jeden czujnik to na CA-6 zabraknie miejsca a w CA-10 zawsze mozesz dokupic expander i rozszerzyć jej możliwości do 16 linii. :) Co do modułu GSM to modul satela...
Witam szymtro opisał to jak najbardziej poprawnie - ja jednak w przerwaniu timera zamiast go kasować dodawał»bym 1 do innego bajtu (tak żeby zrobić licznik 24 bitowy) będzie większy problem z podzieleniem tego itp. ale będzie można zastosować dowolny kwarc. A obroty będą mierzone z większą rozdzielczością(w takim przypadku należało by ustawić priorytet...
a ustawiles wysoki priorytet dla timera obslugujacego faze ???
FS 131 zaznacz Priorytet Timera którego potrzebujesz i zawsze bedzie zał/wył w zadeklarowanym czasie
Tutaj chyba kilka błędów popełniłeś, niepotrzebnie komplikując sprawę. Po co robisz zależności wyjście- wejście i to wejście ustawiasz jako załączenie czuwania. Przecież w parametrach strefy możesz ustawić, żeby była załączana Timerem, który definiujesz w takich godzinach jakie sobie życzysz. Ustawia się tylko czy priorytet ma mieć timer czy kod użytkownika...
Piszesz tak, bo nie masz porównania. Może i nie mam, działam w branży ogólno -instalacyjnej od 15 lat, od 6 lat instalacje grzewcze jest to 1/3 mojej działalności i dotyczy to tylko domów jednorodzinnych i w bardzo wielu stosuje od lat tą własnie metodę. Może Kolego ze sterowaniem PID zetknąłem się juz 25 lat temu w automatyce przemysłowej i doskonale...
Ale taki Z-80 zwykle miał podpięte dużo więcej RAMu, a tutaj mamy 2019 rok i nadal 2kB... Jak już budować coś takiego to na STM32. Są w podobnych cenach a wymieniać ich zalety na AVRami można w nieskończoność... 45$ za AVRa i to nawet nie XMEGA... Śmiech na sali... Ostatnio popularne są płytki z STM32 zwane "Blue Pill". 2$ na ali (wysyłka darmowa),...
HPS 2014 Hybrydowy laboratoryjny zasilacz sieciowy. Parametry użytkowe zasilacza w skrócie: 1. Wykorzystanie tanich i łatwo dostępnych elementów. 2. Wydajność prądowa min 3A (dla niskich napięć może dochodzić do 5A). 3. Rozdzielczość DAC 12bit. (filtrowany PWM 4.9kHz) 4. Rozdzielczość ADC 11bit (12bit przed histerezą, uśrednianie dithering). 5. Zakres...
Mam taki kłopot; korzystam w programie z transmisji z PC do mikrokontrolera vis RS232 (Atmega 2561, sprzętowy uart, 115200 b). W tym celu używam funkcji SERIALIN z opcją BYTEMATCH (znak CR). Bufor o długości 200 znaków. [syntax=vbnet]' port szeregowy do komunikacji z PC oraz modemem GSM Config Com2 = 115200 , Synchrone = 0 , Parity = None , Stopbits...
Zmieniłem trochę w projekcie. Zastosowałem najnowszą wersję FatFS. Plik z konfiguracją funkcji zadeklarowanych diskio.h pobrałem ze [url=]TEJ strony i przerobiłem go by pasował do STM32L. Po testach objawy wyglądają tak: Karty 512MB i 16GB: porgram mniej więcej w 3/4 przypadków zawiesza się po inicjalizacji (f_mount zwraca "FR_OK = 0, /* (0) Succeeded...
Bardzo dziękuję za te informacje. W przyszłości będę to rozbijał na dwie linie(zerowanie i ustawianie bitów rejestru). Tymczasem, po przeczytaniu datasheet, a konkretnie sekcji dotyczącej Timer0 i Timer2, stwierdziłem, że mogę po prostu wpisać jedną liczbę do np. rejestru TCCR0. Np TCCR0 = 0b00001111. To powinno spowodować włączenie pinów 7:4 jako wejścia...
Wydaje mi się że zamiast unsigned long wystarczy unsigned int. Chyba że się pomyliłem w obliczeniach. Po kompilacji masz w AVRStudio taki plik z rozszerzeniem .lss. Zajrzyj do niego i zobacz ile instrukcji zajmuje odsługa przerwania od Timer1 i Timer2. Niektóre z nich trwają jeden cykl maszynowy- 0.125us dla 8MHz- ale inne dwa albo więcej cykli. Można...
Witam , mam nadzieję iż nie zanudziłem bez reszty.. W zestawieniu z moimi "dokonaniami asm." kolega michalko12, jest najbliższy temu co ja kiedyś robiłem . Oto wersja asm z przełącznikiem kompilacji aby kompilować jako samodzielny plik - kto chce ->ten może :D ( ta wersja to 16-timerów, 16-nasto bitowych, każdy cztery tryby konfiguracji, oczywiście...
Co sie stało jasne? Ja mam oscyloskop i nic nie jest jasne. Oscyloskop jest jasny ;) Jaki prąd opto? LEDa? Dostatecznie duży. Jak już pisałem, przebieg wyzwalania jest wzorowy - sygnał na bramce kończy się przed dojściem napięcia do kolejnego zera (triac ma ok 300-400us na zamknięcie - a nawet jeśli prąd nie zdąży wygasnąć po przejsciu przez kolejne...
Witam . Napisałem ( prawie) sobie na ww procesor program w asm i bascomie który ma robić za zamek otwierany kartą . W bascomie wszystko działa w 100 % według założenia jednak w asm mam taki problem że układ sam zmienia swoje taktowanie (ponad 2x) przez co wszystkie funkcje czasowe nie pracują jak powinny . Nie było by w tym nic niezwykłego ( ustawiony...
Witam :) Chciałbym zaprezentować po raz kolejny jeden z swoich projektów. Natchnieniem do budowy tego układu był realny problem. Zaczęło się to od chęci ułatwienia ciut życia mojemu tacie. Często odstawiając samochód późniejszym wieczorem z racji braku oświetlenia ciężko było precyzyjniej ustawić się do wjazdu do garażu. Tym bardziej, że przed wjazdem...
Dobra napisze o moich doświadczeniach i przemyśleniach na temat centralki GENEVO. Na początek informacje, mam zamontowaną Prima64 wersja softu 2.0372PL00, 2 manipulatory PRiMA LCD i moduł PRiMA EXT-Z8. Od razu mówię, że nie jestem instalatorem, po prostu jako człek „trochę „ obeznany w automatyce, programowaniu i elektronice zainstalowałem...
[syntax=c]ISR(TIMER0_OVF_vect) { dualLed_show(buffer); }[/syntax] [syntax=c]void dualLed_show(uint8_t val) { if(val < 100) { OFF_ALL ; static uint8_t i; if(i) { ON_DIG1; show_digit(digits[val / 10]); i = 0; if(dp1) ON_SEG_P; } else { ON_DIG2; show_digit(digits[val % 10]); i = 1; if(dp2) ON_SEG_P; } } }[/syntax] Funkcja show_digit(char*) zapala odpowiednie...
Witam , Wracam do tematu . Zegar skończony i przetestowany . Podziękowania dla autora za pomoc . Kilka krótkich filmów z pracy zegara wykonane telefonem . Jedna z dwóch gier Tetris Na dłuższy film zapraszam do oglądnięcia Dokonane zmiany . W matryc liter dodałem jeszcze jedno zero , gdyż wyświetlanie godziny zero ( północ ) nie bardzo wyglądało . Teraz...
Procesor DS89C430, 12 MHz. Witam, mam taką sytuację: -port szeregowy zero 4800b/s dane do PC -port szeregowy jeden 31250b/s odbiór danych midi -przetwornik analogowo/cyfrowy na porci 4001h generowany przebieg piłokształtny w przerwaniu timera zero, w celach debugowania, by sprawdzić czy procesor wykonuje kod. Otóż po załadowaniu programu do pamięci...
Tak wygląda mój kod nadajnika Wyslij_rfm12 wywołanego przez flagę Flaga_wyslij
To co piszą Koledzy Twoim kodzie to sensowne konkrety. Podzielam ich zdanie na temat potrzeby zmiany koncepcji obsługi przerwania. Do Twojego przykładu idealnie pasują główne założenia "programowania przerwań" a szczególnie ta, że powinno być możliwie krótkie czasowo. Wg mnie, po obejrzeniu kodu, tkwisz mocno głęboko w programowaniu całkowicie liniowym...
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...
Program bez przetwornika ADC. Program działa prawidłowo Dodano po 42 Od kiedy praca dyplomowa jest tajna? Pytam z ciekawości- kiedyś była jawna na całym etapie pisania. Dlaczego w pętli głównej blokujesz przerwania- potem wykonujesz sporo obliczeń- a potem odblokowujesz? A co będzie jak w tym czasie pojawią się dwa przerwania? Jedno pójdzie się kochać....
Witam. Widze, ze wielu fachowcow juz sie podejmowalo tlumaczenia, ale jakos bez rezultatu. Po wciśnięciu jednego z przycisków, uC ma "wpadać" w nieskończoną pętlę. ... chciałbym zmieniać tryb pracy mojego uC bez względu w jaką pętlę wpadł ... ... Dwa switche będą wykonywały dwie różne od siebie nieskończone pętle, które będą trwały do momentu odłączenia...
Sprawdzilem wszystkie pliki i w zadnym niema wykozystanej zmiennej sstatus, zmiienialem jej nazwe aby czegos nieprzeoczyc niestety bez powodzenia. Podaje caly plik main .[syntax=cpp] *---------------------------------------... #include "AT91SAM7X256.h" #include "AT91SAM7X-EK.h" #include "lib_AT91SAM7X256.h"...
Timery i dokładne odmierzanie czasu w różnych miejscach kodu. Zamiast korzystać z kilku timerów, można w różnych blokach kodu konfigurować 1 timer i wstrzykiwać odpowiednią funkcję przerwania. Oczywiście pod warunkiem, że nie będziemy musieli odmierzać czasu dla dwóch bloków jednocześnie. Wygląda na to, że potrzebujesz po prostu callbacka w jednym...
ale nie wiem jak podejsc do przerwan zewnetrznych (przyciski). Przyciski mam podlaczone pod: P3.3 (Int1), P3.5(T1), P3.4 (T0), P3.2 (Int0). Jak to jest mozliwe ze sterujac multiplekserowo wyswietlaczami segmentowymi wysylajac aktywny bit na port P3, moge jednoczesnie zglaszac zewnetrzne przerwania (z przyciskow)?? Możesz. Ale dlaczego przyciski mają...
... tak naprawdę ma to być obrotomierz do motocykla . ... Priorytetem jest bardzo szybka reakcja wyniku .... Zastanów się czy nie warto wykorzystać w tym procesorze Timera pracującego w trybie Capture Mode: Znajdziesz w nim dodatkowo wbudowany układ redukujący szumy sygnału wejściowego oraz detektor zbocza. Poniżej przykład zaczerpnięty stąd: Nie wiem...
Hej, chciałem was poprosić o pomoc w postawieniu FreeRTOS na STM32F407 VG discovery Board. Przeczytałem kilkakrotnie tutorial na stronie Następnie dodaje pliki RTOS'a zgodnie z instrukcją W kolejnym kroku dodaje FreeRTOSConfig.h do katalogu wskazanego kompilatorowi z plikami nagłówkowymi. Oczywiście plik pobieram z tutoriala dokładniej GCC HOME:...
Chociaż na zdjęciu widać mini płytkę z PIC18F1220, to posłuży ona jedynie do praktycznego zaprezentowania obsługi wątków które zaimplementowałem. Obecne możliwości kodu który chce zaprezentować, to działanie równoległe 2 lub trzech wątków, w tym głównej funkcji main która jest pierwszym wątkiem. Całość wymaga kompilatora sdcc (3.6.0) oraz pakietu gputils....
Witam, cel pozostał ten sam, lecz zmienił się kod, tym razem bez Lcd, więc jako zadanie dostałem opisanie krok po kroku otrzymanego kodu oraz przeniesienie kodu z języka Bascom na kod Asemblera i C. Jako, że programowanie nie jest moją mocną stroną, prosiłbym o pomoc (rady, sugestie najlepiej w sposób tzw. łopatologiczny jak można osiągnąć postawiony...
Przecież twój kod się nawet nie powinien kompilować, więc jest faktycznie zły :) Jak sobie wyobrażasz zagnieżdżenie ISR? Mieszasz nowe makra (ISR) ze starymi (SIGNAL). Poza tym ATMega nie ma czegoś takiego jak priorytety przerwań. Przerwanie TIMER1_COMPA_vect nie zostanie przerwane, chyba, że jawnie odblokujesz wszystkie przerwania co zapewne doprowadzi...
Właściwie dwa pytania ale jedno z większym priorytetem ;) Otóż, projektuje odległościomierz. Zamysł jest następujący 1. Załączam tranzystor który steruje napięciem dla nadajnika. 2. Włączam zliczanie czasu 3. Gdy pojawi się sygnał na odbiorniku. Wyłączam naliczenie i prezentuje wynik. Timer skonfigurowałem, żeby przerywał co 1us jednak nie jest to zbyt...
Witaj Na razie układ działa prawidłowo i na pewno jest jakaś zwłoka, którą z czasem będę chciał zniwelować o ile będzie to konieczne, teraz chciałbym się skupić nad programem do opóźnienia z którym mam najwięcej problemów, Masz problemy bo cały program masz napisany pod priorytetem obsługi LCD a nie zamierzonego celu. LCD potrzebujesz tylko aby ustawić...
[syntax=c]//-=-=-=-=-=-=-=-=-=-=-=-=-=-=... // Task FreeRTOS - obsluga interfejsu sieciowego //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=... void vTaskEthernet(void * pvParameters) { /* uIP */ int i; struct uip_eth_addr mac_addr; //MAC Address struct...
Też tak myślałem ale tak się nie dzieje. Najwyższy priorytet ma przerwanie od Timera 0, potem przerwanie od sekund zegara RTC i na koniec dopiero przerwanie od EINT1. Program się uruchamia prawidłowo i zawiesza się tak jak pisałem wcześniej po kilku sekundach. Przerwań od EINT1 wogóle nie uruchamiam. Zapewne masz rację z tym, że adres powrotu jest zamazywany...
Witam. Mam znowu problem z odmierzaniem czasu. A właściwie z jego pomiarem za pomocą symulatora. Napisalem programik, gdzie przerwanie od timera0 ma być co 20ms. Timer1 steruje multipleksowo wyswietlaczami. Ustawiłem wstepnie timer0 aby zliczal te 20ms, poprawilem dzięki symulatorowi i było świetnie. Ale gdy program zaczął się wydłużać czas ten wzrósł...
Tak wyglądają "bity" na kablu. Stan wysoki jest stanem spoczynkowym. Wyobraz sobie, ze bierzesz timer, podlaczasz taki sygnał do procesora, i co zbocze przechwytujesz wartosc z timera a następnie wykonujesz odpowiedni ISR. Każdy odstęp ma przecież swój unikalny czas. W ISRrze wiesz dokładnie, jakie zbocze właśnie nastąpiło. Jesli opadające, to zresetuj...
Witam, mam problem z poprawną konfiguracją modułu Bluetooth. Chodzi o to, że na przetwornik ADC wyzwalany timer1 podaje sygnał z GPIOB i chcę próbkować go wg ustawień timera z częstotliwością co najmniej 500Hz. Dane pobierane są z rejestru ADC przez DMA do zadeklarowanego wcześniej buforADC (unsigned short int buforADC buforTx (unsigned char buforTx[4]={0};)...
Mister Gloves to bezprzewodowy interfejs USB, pozwalający poprzez intuicyjne ruchy ręki i palców sterować komputerem. Rękawica noszona na prawej dłoni umożliwia użytkownikowi kontrolę ruchu kursora, wykonywanie skrótów klawiaturowych oraz symulowanie kliknięć przyciskami myszy, poprzez zginanie palców bądź kciuka. Rękawica lewej ręki umożliwia wprowadzanie...
Ponieważ nie wiem jak wyglądają "Instrukcje do wyswietlania cyfr na segmentach " , mogę tylko zgadywać.Wchodząc w obsługę przerwania od Timera1 , zapomina kolega o możliwości "przerwania wykonywania tego przerwania" przez przerwanie od Timer0 , które ma wyższy priorytet.Acc odłożone na stosie - OK , a co z PSW :?: - jakoś nie widzę żeby kolega pamiętał...
Nie bardzo pomogłeś. Zakłócenia nie są priorytetem. Po co Ci schemat? Nie jest do niczego potrzebny, wszystko w swoim czasie w dziale DIY będzie (włącznie z kodem źródłowym). A cały urządzenie wraz z zasilaczem jest w pudełku tekturowym bo na razie nie mam pieniędzy na blach do obudowy bez sensu jest takie cos pokazywać... Wracając do tematu. Kawałek...
Witam. Mój kod obsługi przerwania: [syntax=c] static void interrupt ISR(void) { if (TMR0IF) { //Kod obsługi przerwania wykonujący się ~2ms TMR0IF = 0; } if (SSPIF) { //Obsługa SPI SSPIF = 0; } } [/syntax] Obsługa z MSSP ma dla mnie większy priorytet niż obsługa od Timera0. Nie mogę jednak zrozumieć zasady działania systemu przerwań w tym uC. Myślałem...