Każde przerwanie (a więc i niemaskowalne) jest typem sytuacji wyjątkowej (ale nie zawsze odwrotnie).
PCINT to specjalne przerwania aktywowane zmianą stanu pinu. Dodatkowo wszystkie przerwania PCINT w tych procesorach wywołują jedno przerwanie, w którym należy programowo określić, który pin je spowodował ważny jest też rejestr PCMSK, który odpowiada za maskowanie nieużywanych przerwań. Polecam lekturę datasheetów tych procesorów w celu dokładnego poznania...
1. z tego co piszesz to przerwanie o najwyższym piriorytecie będzie występowało z częstotliwością 4kHz. Zakładając że będziesz miał zegar 8MHz to na obsługe przerwania (zapisanie 8 bajtów) i obsługe innych przerwań będziesz miał: 8MHz/4kHz = 2000 cykli zegarowych co w przypadku procesorów typu RISC daje jakieś 1500 instrukcji. A to jest całkiem sporo....
Witam, Uruchom normalnie Timer w trybie PWM. Teraz dodadkowo potrzebne Ci będa dwa przerwania tego timera: CTC i Timer Overflow. W przerwaniu CTC ustawiaj pin a w przerwaniu OVF go zeruj lub odwrotnie jeśli chcesz tryb invert PWM. Nie zapomnij o od maskowaniu przerwań i ustawieniu globalnej flagi zezwalającej na przerwania oraz nie przesadź z częstotliwością...
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 ?
Da się jakos maskować przerwania Int0,1 w tych kontrolerach???
Jest takie "coś" w STM32 jak RCC - czy w wielowątkowej aplikacji do włączania/wyłączania zegarów i resetowania peryferiów prościej użyć bit-bandingu, czy może z jakiegoś perwersyjnego powodu trzeba się koniecznie bawić w maskowanie przerwań? Generalnie nie wiem w czym problem - bit-banding zajmuje mniej kodu, wykonuje się z porównywalną prędkością,...
A gdybyś posłużył się pinem IRQ? W CONFIG masz maskowanie przerwań - ustaw tylko na RX (domyślnie są wszystkie, czyli mniemam, że na każde zdarzenie reaguje) i "tylko" kwestia synchronizacji nadajnika z odbiornikiem i odczytu czasu, kiedy IRQ nastąpiło.
Jeżeli chcesz używać funkcji z API FreeRTOS w przerwaniach to portENTER_CRITICAL() powinien maskować to przerwanie. To, które przerwania są maskowane określa definicja: configMAX_SYSCALL_INTERRUPT_PRIORITY Znajduje się ona w pliku FreeRTOSConfig.h.
Jedno i drugie - działa za każdym razem. Nowe wersje OpenOCD wprowadziły maskowanie przerwań podczas "single step" - może po prostu o to Ci chodzi? Opcja ta (można ją wyłaczyć działa tak, że podczas klikania "step" w debuggerze w zasadzie nigdy nie zostanie wykonane żadne przerwanie. Ma to pewne wady jak i pewne zalety (np. bez tej opcji debuggowanie...
Cześć Sebastian, Biling to jakby z definicji wykaz połączeń zrealizowanych (czyli takich które doszły do skutku). Prokurator najczęściej pyta o połączenia zrealizowane w określonym przedziale czasu (np. w przeciągu konkretnego dnia). Jeśli pytanie nie zostało postawione bardziej szczegółowo to i odpowiedź jest standardowa. Czasem jest też tak (to zależy...
Oj przeczuwam kłopoty, piszesz że przesiadasz się z małego AtMega na AtMega128, a tam niektóe rejestry mają zmienione nazwy lub wręcz niektóre bity są w innych/nowych rejestrach. dla AtMega8..32 działa coś takiego #define GLOBAL_INT_ENA()asm("se... #define GLOBAL_INT_DIS()asm("cl... #define INT0_ENA()...
Zostaje do omówienia pin INT od PCF8574. Na tym pinie pojawi się zbocze opadające gdy zmieni się coś na wejściu PCF8574. Nie ma możliwości maskowania przerwań dla poszczególnych pinów PCF8574, a przerwanie jest wyzwalane na każdą zmianę stanu (zarówno rosnące, jak i opadające zbocze) na pinach PCF8574. Lepiej chyba użyć MCP23017 do tego celu. Dodano...
Doczytałem dokumentację i muszę przyznać, że masz absolutną rację Andrzeju. Pozornie nie ma zagnieżdżonych przerwań: normally interrupts will remain disabled inside the handler until the handler exits Można jednak sobie poradzić z ręcznym priorytetowaniem. W obsłudze dowolnego przerwania można maskować tylko te przerwania, które faktycznie mogą być...
a przejrzał kolega chociaż raz przykład odbioru RC5 z helpa Bascoma ??? oczywiście tam nie jest on w przerwaniu ale to nic. Za to są takie rzeczy jak: - maskowanie tooglebitu - sprawdzanie czy adres jest np = 0 - co oznacza pilota TV albo przynajmniej jakiś warunek czy adres < 255 - bo inaczej to będzie taki klops właśnie jaki u ciebie występuje...
a jakby tak użyć gotowego scalaczka arbitrażu przerwań ?? Programowalny sterownik przerwań 8259- PIC Układ jest przeznaczony do : 1.Przeprowadzenia arbitrażu pomiędzy zgłoszeniami przerwań z ośmiu różnych źródeł; 2.Maskowanie wybranych zgłoszeń przerwań 3.Generacja żądania przerwania dla systemu mikroprocesorowego itd oraz http://www.google.pl/search?hl=pl&ie=UTF...
Bardzo przepraszam ale z głupia frant zapytam: czy nie lepiej zrobić to wszystko zgodnie z zasadami sztuki ? Mam na myśli "macanie" wszystkich mechanicznych elementów w przerwaniu zegarowym, maskowaniu drgań, itp, itd.
No tak jeśli przerwanie będzie symetryczne to nie obejdzie się bez sumowania, chyba że będziesz wiedział jaka jest różnica w asymetrii. Ale wydaje mi się że to za dużo kombinacji. A może maskować co drugie przerwanie przychodzące z proc audio wtedy mierzył by czas 1 okresu bez potrzeby sumowania. ATmega 128 obsługuje takie maskowanie, pewnie inne ATmegi...
W momencie zaistnienia jakiegoś zdarzenia wywołującego przerwanie zostaje ustawiona jego flaga. Jeśli przerwanie to nie jest zamaskowane i globalna flaga zezwolenia na przerwania jest ustawiona, to mikrokontroler skacze do odpowiedniej procedury obsługi przerwania i globalna flaga zezwalająca na przerwania zostaje automatycznie wyłączona do czasu zakończenia...
Jak napisał pawel129 masz do dyspozycji priorytet przerwań i ich indywidualne maskowanie. Mieszając tym praktycznie do woli i według życzenia da się obsługiwać przerwania (byle krótko i treściwie). Sytuacje wyjątkowe są możliwe, ale naprawdę rzadkie i na razie nie ma sobie nimi co zawracać głowy.
Owszem CooCox pozwala szybko rozpocząć zabawę z ARM-ami, ale ma też swoje wady. Niedawno postanowiłem przetestować to środowisko i szybko zraziła mnie wada serwera GDB, którą openOCD miało w wersjach starszych niż 0.5.0 (ponad 2 lata temu). Brak automatycznego maskowania przerwań podczas debugowania skutecznie utrudnia śledzenie krokowe programu - nadejście...
Witam wszystkich. Jestem zielony w sterownikach PLC, toteż proszę o pomoc doświadczonych kolegów. Próbuję rozgryźć program, który jest zaszyty w moim FATEK'u (układ działa poprawnie) Ne wejściu X1 jest enkoder. Zastosowano konfigurację HSC4, licznik softwarowy,U/D, zlicz w górę X0. W programie głównym jest znacznik (?) M1982 - maskowanie, który jest...
Jedno mnie dziwi - nigdy nie miałem takich problemów. To, że timery czy inne peryferia sobie pracują, gdy rdzeń jest halt to nie powinno nikomu przeszkadzać, skoro stepowany rdzen w ogóle nie skacze pod wektory ISRów...? Gdy używam Ride7 to nie mam tego problemu, ale gdy przekroczyłem limit 32kB przesiadłem się na Eclipse+OpenOCD. No i niestety w trakcie...
Pomyślałem , że już najwyższy czas aby zając się przerwaniami . Aby wszystko działało zgodnie z oczekiwaniami potrzebne są drobne modyfikacje w sprzęcie . Z oczywistych przyczyn wykorzystałem przerwanie maskowane INT , wyzwalane jest impulsami wygaszania pionowego z grafiki . Z80 reaguje na niski poziom na INT więc po przyjęciu przerwania musi zostać...
A jak to zapisać w C? Czy poprostu jak mam funkcje main i w niej deklaruje tak: int main(void) { TIMSK=1<<TOIE0; //w rejestrze maskowania przerwań(TIMSK) wpisz 1 na miejsce bitu TOIE0 (zezwolenie na przerwanie od układu timera0 spowodowane przepełnieniem) TCNT0=9; //wpisz wartośc poszątkową do licznika timera0 TCCR0=2;...
Domniemam.... Rdzeń ma fizycznie własny mały kontroler przerwań z 16 liniami, sa to te systemowe, które maja własną grupę rejestrów SHP. Do jednej z linii przyczepiony jest NVIC prawdopodobnie na którejś pozycji "reserved". NVIC ma własne rejestry i własne reguły rządzenia przerwaniami. Rdzeń wystawia priorytet akurat wykonywanego przerwania do NVICa,...
(at)ElektrodaBot Ta wersja wygląda najlepiej. Zweryfikuj jej użycie pod kątem pracy w środowisku ESP-IDF/FreeRTOS, w tym ISR. Bezpośrednia odpowiedź Funkcja `atomic_swap_relaxed()` (zamiana za pomocą `exchange + store`) jest: • poprawna i wystarczająco szybka w zwykłych wątkach FreeRTOS na ESP32 (dla typów ≤ 32 bit), • niewskazana do uruchamiania bezpośrednio...
Ahh juz rozumiem. Faktycznie synchronizacja moze byc potrzebna bo faktycznie moga sobie te dwie funkcje wejsc w droge jesli przerwanie przerwie dzialanie "normalnie" wywolujacej sie funkcji akurat w tym momencie jak ta bedzie zmieniala wspoldzielona zmienna. W kazdym razie chyba bedziesz musial maskowac przerwania na czas wykonywania synchronizowanego...
Piszesz, że masz proc ATMEGA128. W standardowych plikach nagłówkowych dla tego układu nie ma zadeklarowanego rejestru GICR dlatego dostajesz taki błąd. Prawdopodobnie używasz kodu pod jakąś młodszą atmegę. W 128 do maskowania zewnętrznych przerwań użyj rejestru EIMSK. Masz jeszcze inny błąd w kodzie. Kompilator nic nie mówi ponieważ sygnatury są ok....
Dokładnie. te _delay_ms(x); to już gwoździe do trumny tego programu. Po pierwsze wszystko do przerwania, a po drugie musisz stosować maskowanie bitów, tak aby zmiana kombinacji 4-rech pierwszych (I silnik) nie wpływała na zmianę kombinacji kolejnych 4-rech (II silnik).
Znaczy się "t0isr" na "FIQ_Handler"? tak Acha. Bo wcześniej w ogóle wywalałem deklarację funkcji, uznając że jest ona w pliku z wektorami. Zmieniałem tylko nazwę w samej funkcji, ale deklaracji nie zmieniałem tylko ją całkowicie wywalałem :D Czy działa sprawdzę jutro, bo teraz już nie mam dostępu do płytki. Więc pytanie o priorytety przerwań: Po co...
fantom napisał: Nie kumam. Po pierwsze w zadnym z trybow USB nie przesyla sie pojedynczych bitow. Tak ale koledze chodziło o to żeby w każdym pakiecie USB ustawiać lub kasować pojedyńcze linie danych na wyjściu układu FT245 i dzięki temu uzyskać interfejs 1Wire. Ale obawim się że to jest nie do zrobienia do 1Wire wymaga bardzo szybkich linii danych...
1. Odbiór Rc5 w przerwaniu w Bascomie stwarza spore problemy 2. Maskować trzeba komendę, niekoniecznie adres. 3. Pindo sterowania diodą nie skonfigurowany jako wyjście, to samo Portb 4. Nie wiemy jaki masz schemat, jakie ustawienie fusebitów.
Styki są mechaniczne i pewnie przy ruchu tarczy są szczególnie narażone na dodatkowe drgania. Jak je najlepiej wyeliminować? Wystarczy zwykły kondensator, czy lepiej coś bardziej wyszukanego i co? I czy ktoś robił eksperymenty jakie parametry kondensatorka lub innych elementów najlepiej pasują do takiej klasycznej tarczy? Programowy debouncing. Czy...
Nie podoba mi się twoje rozwiązanie. Ja bym to zrobił tak - timer odmierzający takty w rytm podstawowego okresu PWM (czyli przerwania np. 1kHz). Teraz zamiast tych porównań z licznikami, wrzuć wartość licznika do rejestru compare register. Dzięki temu masz przerwanie po przepełnieniu timera (nowy okres) - w tym przerwaniu inicjujesz wysyłkę danych po...
Włączenie przerwania polega na ustawieniu bitu w rejestrze maskującym czy flagowym ?
Po namyśle stwierdzałem, że chyba zrobię odwrotnie. Będę wyzwalać przerwanie zboczem opadającym. Linia będzie cały czas na + z poprzez wbudowany rezystor pullup w procesorze. Dzięki temu uniknę zakłóceń. Włączenie przycisku będzie skutkowało zwarciem do masy. No i teraz szukam takiego układu. Przecież to niczego nie zmienia, opadających zboczy też...
Mam przerwanie od odbioru po UARCIE, w którym mam instrukcje NVIC_SystemLPConfig(NVIC_LP_SLEEPONEXIT, ENABLE) i ta instrukcją usypiam procesor (wiem że się usypia, ponieważ w pętli głównej migam diodą, która przestaje migać). Faktem jest to, że przerwanie o wyższym priorytecie budzi procesor, w przerwaniu które budzi procesor, należy użyć jeszcze instrukcji...
Witaj Kolego. Z zegarkami RTC philipsa to jest tak: 1. dobrze popatrz czy podłączyłeś przez diodę bateryjkę czy Ci jej nie rozładowuje. 2. Sam napisałeś procedurę I2C czy skopiowałeś od kogoś - dlaczego pytam - otóż jeśli masz jakieś przerwania i masz źle skonfigurowane te nóżki to w momencie kiedy Ty nie zdążysz ich przekonfigurować (mam na myśli SDA)...
Witam ponownie, znalazłem wcześniej na elektrodzie program zegarka na LCD 2x16, który niestety nie działał prawidłowo (migały niezrozumiałe znaki na lcd). W celach edukacyjnych postanowiłem przerobić procedury obsługi wyświetlacza, co dało efekt końcowy jaki teraz mam czyli działający program zegara na LCD, ale jest jeden problem. Zegar odmierza 1 sek...
Zależy w czym będziesz pisał w bascomie jest to np. if PINB.1=0 then ..... i możesz bity czytać.W C już trzeba odczytywać cały bajt i maskować w razie potrzeby.
- cli - sprawdzenie flagi - jeżeli jest ustawiona to skopiowanie sobie danych i wyczyszczenie flagi - sei - ewentualne operacje na skopiowanych danych To powinno działać dobrze? Myślę, że tak. Jest tylko jedno małe 'ale'. Jeśli przerwanie A pojawi się pomiędzy cli a sei, to zostanie o pewien czas odroczone. Nie wiem ile tam masz instrukcji, ale jeżeli...
Stworzyłeś falę nośną ale to ci wiele nie da. Zrób dokładnie tak jest napisane z tym czasem 889us taki zrób okres licznika ale nie steruj nim wyprowadzenia. Wykorzystaj to odmierzanie czasu w funkcji aby kolejno wystawiać stany takie jakie potrzebujesz. Moja koncepcja to w funkcji wysyłania ramki pętla for na początek bez przerwań dla pokazania idei:...
czyli flaga INTF1 ustawia się niezależnie od tego, czy jest zezwolenie na fladze INT1. To jest standard. Zawsze możesz programowo sprawdzać czy dane zdarzenie miało miejsce bez wywoływania sprzętowego przerwania. Są też inne rozwiązania gdzie są dodatkowe flagi za rejestrem maskującym.
Mistrz MK jak zwykle popłynął. Dlaczego mnie to nie dziwi... Sam pomysł, by wykonywać operacje na elementach wektora w czasie, gdy mogą one być modyfikowane, wygląda podejrzanie. Blokowanie przerwań na czas tych operacji - to tylko maskowanie błędu koncepcji. Jeśli wiesz, że operacje na wektorze będą wykonywane w czasie, gdy procedura przerwania go...
Dla operacji na porcie wyjściowym może, ma to sens, w końcu są te rejestry a w przypadku wejścia? Testowanie pojedynczego pinu? Bit-band góruje. I tu BlueDraco skoro widzisz w takich operacjach problem to jaki sens ma stosowanie maskowanego dostępu do portów z M0? Najwidoczniej w przypadku zerowania jednego z pinów, zamaskowane powinny się ustawić?...
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...
Przy każdym najdzikszym zastosowaniu / zaprogramowaniu, na wyjscie / odbiór / open dren / trzeci stan i co wszyscy święci wymyślili ? ? Tak, zapis do portu jednocześnie zmienia stan wszystkich pinów. Jeśli dany pin nie zmienia stanu to zapis nie generuje żadnych glitchy. Masz błąd powinno być PORTB = (PINB & (~MASKA)) | (zmienna & M... Nie, tamten...
Brak schematu (inicjowanie portów), brak kodu, brak wróżki na forum. Za to jest Kamyczek, co chce przyciski w przerwaniu portu obsługiwać... Kamyczku, sto razy pisaliśmy, że tego NIE należy robić. Wszystko kolego zależy od aplikacji i tego co jest ważniejsze . Twoim zdaniem lepiej skanować porty i zajmować czas mikrokontrolera na bezsensowne sprawdzanie...
W poprzedniej wypowiedzi dokonałem poprawek w przykładowym kodzie. Tak, to już jest kiedy Elektrodę traktuje się jako przerywnik przy pracy. Kwestią otwartą jest nadal testowanie wybranego bitu, lub bitów. 1. Jak to wykonywać poprawnie testowanie jednego bitu ? Zależy to od danej sytuacji. W trakcie testowania pojedynczego bitu w PINx z pominięciem...
Do jnkOle - możesz mi powiedzieć czym różni się Twoja procedura odczytu RSa od mojej, która wygląda tak: http://pl.wikipedia.org/wiki/Bufor_cykli... Krótko mówiąc - rx0_index w końcu zrówna się z rx0_buffer_size, i co dalej ? Procedura odbioru przesuwająca całą tablice o jeden element w lewo będzie troszeczkę nieefektywna, A u mnie poprzez proste...
Czyli są to niemalże tak samo funkcyjnie przerwania jak INTy z tym że różnica polega na tym że nie można ustalać sobie czy ma być reakcja na zborze rosnące, opadające czy na stan niski? Dobrze rozumiem? Jeszcze odnośnie pierwszej częsci pytania: W każdym Datasheet znajdziesz rozdział: "Typical Characteristics", w którym są wyrażnie i dostatecznie omówione...
To że systemy operacyjne, bibioteki i API odcisnęły na Tobie piętno- to jeszcze nic. Wyobraź sobie że masz komputer z wykasowanym BIOS. To jest właśnie mały mikroprocesor. Ile tysięcy stron dokumentacji musiał byś przeczytać aby taki komputer uruchomić. A tu- tylko 600. Jeszcze jedno- w podręcznikach do C na "prawdziwe" komputery dość po macoszemu opisują...
Pin Change Interrupt masz zarówno jak pin przechodzi ze stanu wysokiego w niski jak i z powrotem, kiedy pin powraca z niskiego w wysoki. Mając trzy wentylatory każdy może losowo wyzwolić przerwanie stanem niskim jak i powracając w stan wysoki. Soft niby odsiewa te powroty w stan wysoki. Tylko powiedz po co on testuje te trzy warunki? Napisz obsługę...
Nie ma możliwości w sensie, że nie chcemy kuć ścian by wymienić kabel na skrętkę - kabla w ścianie nawet nie da się ruszyć czy wyciągnąć jakkolwiek, zostały zabetonowane. Szansa na wymianę kabli w ścianach jest w ogólności zerowa. Nie tędy droga - ciągnie się nowe kable, przykładowo, pod listwami przypodłogowymi, cokołami, maskowane listwami elektroinstalacyjnymi...
(at)ElektrodaBot napisz kod i2c dla mikrokontrolera PIC16F1526 i układu scalonego PCA9685 do sterowania serwomotorem. Wstępna ocena dostępnych informacji Dwie przykładowe odpowiedzi offline zawierają już solidny sterownik bare-metal dla: - funkcji master I²C na module MSSP PIC16F1526 - Podstawowa konfiguracja PCA9685 do pracy z serwomechanizmem 50...
Wygląda na to, że oprócz ewidentnych błędów w założeniach (I2C na 10 m) masz jeszcze sporo błędów w oprogramowaniu, które próbujesz maskować dorzucając kondensatory (częściowo skutecznie) i bramki (całkiem bez sensu). Zacznij sprawdzać stan wejść w przerwaniu timera, przejrzyj obsługę I2C - jest wysoce prawdopodobne, że to w niej właśnie, wskutek błędnej...
Nie spodziewałem się aż tak szybkich odpowiedzi. :) 1. dwa serwa modelarskie mają tylko otrzymywać wartości, nie muszę z nich nic zwracać. Skorzystałem z dedykowanej funkcji servos i zajmuje to timer0 , w książce M.Wiązania było zalecenie aby wykorzystać kwarc min 10MHz.. A sygnał generowany do serw musi być bardzo stabilny aby nie wykonywały nieprzewidzianych...
Po pierwsze nie: TCCR0B |= (1<<CS00) | (1<<CS01); a : TCCR0B =(TCCR0B&0xf8) | (1<<CS00) | (1<<CS01); Kolego zastanów się na drugi raz zanim udzielisz odpowiedzi bo niestety ale bzdury piszesz na maxa i na dodatek nikt tego nie zauważa. Nie znasz i nie umiesz się w C posługiwać operatorami dwuskładnikowymi ??? toż operacja:...
timera powinien ustawiać flagi (np stan=port_z_czujnikami) i koniec przerwania (żadnego wyłączania przerwań i innych śmieci). Drugi timer odlicza sekundy (czy tam inne dt dla kolejnych diod), led_port(i)=schody(i) (środkowe 6 bitów, więc trzeba przesunąć i maskować); + flaga wejścia Generalnie ta idea jest bezsensowna. Zauważ że absolutnie zupełnie...
Witam, sprzętowe maskowanie drgań styków wymaga zastosowania odpowiednio dobranego dolnoprzepustowego filtru RC. Wskazane jest również użycie bramki z histerezą dla uniknięcia niezdefiniowanych poziomów logicznych na wejściu procesora. Znacznie łatwiej oraz bez żadnych dodatkowych kosztów można zrobić to programowo. Najbardziej elegancko można zrobić...
Dzięki wielkie! Dodanie volatile przed deklarację zmiennej oczywiście pomogło. Czy to jest błąd kompilatora GCC? W jakich sytuacjach należy używać volatile? Tu masz bez zbędnych ozdobników: http://mikrokontrolery.blogspot.com/2011... Nie jest to błąd kompilatora, i powiedzmy sobie szczerze - na tym etapie raczej starają się...
Jeśli chodzi o zmianę stanu wyprowadzenia zgadza się masz rejestr BSRR. Chociaż i tak wygodniej to robić np. tak: Zdefinjować sobie dany pin: [syntax=c]#define GPIOB_8_bb *((volatile unsigned long*) BITBAND_PERI(&GPIOB->ODR,8))[/syntax] I korzystać z niego w ten sposób: [syntax=c]GPIOB_8_bb = 1; GPIOB_8_bb = 0;[/syntax] Pyzatym jeśli sprawdzasz jakieś...
A więc: 1. PORTA=0xF0; dramat (tu i wszystkie tego typu kwiatuszki), używaj zamiast tego przesunięć bitowych i operacji logicznych... 2. Cała funkcja wyświetlaj - kolejny dramat... raz notacja segmentów, dwa takie rzeczy robi się za pomocą tablicy z kodami znaków... 3. funckja licz2tab - miliony niepotrzebnych obliczeń - takie rzeczy robimy w pętli,...
Nie pomaga, wciąż wywołuje się wielokrotnie. Maskujesz minuty i sekundy, więc trudno innego zachowania sie spodziewać.
Panowie, ale tak naprawdę co tu ma atomowość do rzeczy skoro dioda ma być toglowana w przerwaniu gdy inne przerwania są przecież wyłączone. To wtedy nie jest istotne czy będzie przestawiana przez sbi, cbi czy też poprzez ładowanie rejestru i maskowanie któregoś tam bitu. To jedno. A drugie: Ponieważ mam pod ręką identyczną płytę testową co autor postu...
Jeśli chcesz koniecznie korzystać z darmowych narzędzi, to polecam eclipse i gcc, najlepiej jak ściągniesz cały toolchain yagarto. Ale możesz bez problemu skorzystać z darmowych wersji komercyjnych narzędzi. Moimi faworytami są IAR oraz Crossworks. Niektóre wersje mają ograniczenie do ilości generowanego kodu, a inne mają ograniczenie czasowe, ale warto...
franek.bmw mógłbyś pochwalić się wynikami tego akcelerometru. Nie wiem czy przy jego obsłudze poczyniłem jakiś błąd, ale szumy, które otrzymuje sięgają 20mg, bez znaczenia jest tryb, który wybieram low-noise/low-power. Odczyt działa poprawnie, zewnętrzne przerwanie, oraz automatyczny reset przerwania odbywają się prawidłowo najpierw wysyłam adres 0x02...
Hmmmm.... Kod wydaje się być OK. Sprawdź jeszcze dokłądnie czy uaktywniłeś odpowiednie przerwania (sprawdź wszystkjie bity maskujące). Nie pamiętam dokładnie co w którym rejestrze siedzi, bo AVRkami bawię się ostatnio mało. Pozdrawiam :)
Witajcie, Potrzebuję wygenerować zdarzenia periodyczne z RTC, ale muszą się one pokrywać z pełnymi godzinami. Czyli np. jeśli interwał określę na 10 min, to przerwanie nie może się zacząć 12:55 ale o 12:00, 12:10 ... 12:50 itd. Potrzebne interwały w zakresie godziny to: uint8_t interval[]={0,1,2,3,4,5,6,1... Z opisu...
Witam. O ile się orientuję to w momencie wywołania procedury obsługi przerwania SFR page jest sprzętowo przełączana na tą, w której znajdują się rejestry odpowiedzialne za konfigurację hardwar'u, który jest źródłem przerwania. To się chyba sprawdza bo, jak napisałem, przerwania od timera 3 przychodzą i to z oczekiwaną częstotliwością (wstawiłem w procedurę...
Ja bym dodał jeszcze o bardzo przydatnym narzędziu zwanym bitband. Jak funkcja z tej biblioteki zwraca jakąś wartość (powiedzmy status flagi), to robi odczyt, maskowanie i zwrot. Nie powiem już o zmianie pojedynczego bitu w rejestrze. Czytelniej i mniej linijek zajmie zdefiniowanie sobie dostępu do określonych bitów: [url=http://infocenter.arm.com/help/inde...
Mam problem z obsługą odbioru danych przez UART w przerwaniu. Dotąd korzystałem z funkcji SPL niewykorzystujące przerwania do transmisji danych przez UART. Mój kod poniżej, wpisując przez terminal (putty) na klawiaturze cyfry od 1 do 8 mikrokontroler wysyła na terminal m,gp� , a przecież powinien wypluć właśnie przesłane znaki. W czym jest problem...
Czyli mając procesor taktowany kwarcem 8MHz, ma on jakby 8000000 kroków(cykli, taktów) w których wykonuje rozkazy? Tak jak już wspomniano do rzeczownika cykl/takt warto dodać dla uściślenia jakiś przymiotnik. Taktowanie 8 MHz oznacza 8 mln cykli zegarowych na sekundę. Ile tu będzie cykli maszynowych zależy od konkretnego MCU. Niemniej naprawdę dla...
Wszystko zamieściłem w 1 pliku żeby było pod ręką. Nie wiem dlaczego przy wyświetlaniu cyfr 0 i 7 nie zaświeca mi się SEG_A, przy pozostałych cyfrach nie ma z tym problemu. Co do wyświetlania temperatury to powinno być już chyba dobrze, tylko jutro muszę to sprawdzić na LM35 bo na potencjometrze to co chwila skacze mi napięcie. [syntax=c]/* * main2.c...
Te operacje muszą być wykonywane atomowo, ponieważ to są trzy różne operacje odczyt rejestru - modyfikacja - zapis do rejestru. Nie powinno cię dziwić, że jeśli między tymi operacjami wystąpi przerwanie, w którym modyfikowane są ODR bitbandingiem i nie tylko to cała operacja z przerwania zostanie anulowana. Nie do końca rozumiem to co napisałeś. Jak...
Co do DSB(). W przykładach stosowałeś go ale nie wszędzie. A należy go stosować zawsze po włączeniu zegara, jeśli natychmiast dokonujesz zapisu pod włączane peryferium. W każdym rdzeniu Cortexa. Ja stosuje zawsze po włączeniu przez to nigdy o tym nie zapominam - taki nawyk. Tak samo należy go zastosować np po wyczyszczeniu flagi jeśli od razu masz zamiar...
Tak to czytam, i czytam, i skojarzył mi się jeden cytat z mądrej książki, którą ostatnio czytałem :) Parafrazując: "... Doświadczony projektant tym się różni od świeżo upieczonego, że wie co się sprawdza, a co nie". Jeżeli koniecznie upierasz się przy takim rozwiazaniu transmisji (bo to jest b. złe rozwiązanie), to spróbowałbym zmienić trochę sposób...
Problem rozwiazany: tkwil w podzielniku przez 2 (smod = 1) dla zaintersowanych podaje pelna konfiguracje: PCON &= 0x7F;//SMOD =0 //rejest SCON SM0=0; SM1=1; // Tryb1; trans. szeregowa, asynch, 8bit SM2 = 0;// bez maskowania (nie robimy komunikacji wieloprocesorowej) REN = 0; // odbiornik nieaktywny (czy tak miało być?) TB8 = 0; // (bit8-tx) nieistotne...
oke, dowiedziałem się co nieco na ten temat, więc transmisja będzie przebiegała po dwóch dedykowanych końcówkach, które wchodzą w skład portu P3 procesora. Są to: RXD - (P3.0) wejście szeregowe ('Receive data') TXD-(P3.1) wyjście szeregowe ('Transmit data') Konfiguracja portu szeregowego: SM0, SM1 – ustawienie trybu pracy portu szeregowego SM2...
raz na jakiś czas na odczycie zamiast normalnej temp. np 25 stC pokazuje mi się wartość -127stC. Spie.... biblioteki Arduino. Gdy brak czujnika pokazują -127, gdy zwarta magistrala 0 stopni. Gdy są błędy odczytu, zachowują się różnie. Najlepiej napisać własną bibliotekę (przerobić jakąś w miarę dobrze działającą) i KONIECZNIE SPRAWDZAĆ CRC . Tak uchronisz...
Kolego mirekk36, nie ma to jak zachęta ( zwłaszcza jak ktoś w wieku 38 lat zaczyna się tego uczyć ) . Wiem, że jesteś propagatorem C ( kupiłem nawet książkę, którą polecasz, ale jeszcze nie przyszła na nią pora ) i pewnie w C można to zrobić łatwiej, szybciej i krótszym kodem. Poświęciłem kilka wieczorów na tego PCF8583 i zarówno kopiując kod np. Kolegi...
Witam! Czy ma ktoś pomysł w jaki sposób wykonać maskowanie sygnałów wyjściowych OCx z TIM1 zewnętrznym sygnałem w STM32F303RE? Chodzi o to, by maskowanie nie "zakłócało" pracy licznika, ale wyłączało wyjścia na czas trwania impulsu zewnętrznego, czyli robiło swojego rodzaju operację AND na wszystkich wyjściach i sygnale ETR... No i żeby nie musiał się...
Proszę podpowiedz mi jeszcze jedną sprawę. Zaglądnąłem do erraty bo podobno to dobry zwyczaj czytać te dokumenty i tam jest takie coś napisane: 1.1.4 Cortex-M3 may freeze for SLEEPONEXIT single instruction ISR Description If the Cortex-M3 SLEEPONEXIT functionality is used and the concerned interrupt service routine (ISR) contains only a single instruction,...
SIG_INTERRUPT1 i SIG_INTERRUPT0 oznaczaja u Ciebie przerwania zewnetrzne... kazde z nich przypisane jest do jakiegos pinu procesoraq... i w zaleznosci od ustawien tych przerwan odpowiednio reaguja na to co dzieje sie na tym pinie... jesli chcesz wiecej przyciskow a ni masz tylu przerwan zewnetrznych to musisz wszystkie przycicski DODATKOWO podlaczyn...
Chodzi o sterownik umożliwiający wykonywanie zadania tak, by przez jakiś czas (i to duży - nawet setki godzin) miało sprzęt wyłącznie dla siebie (ewentualnie jeden rdzeń procesora, gdyby dało się zrobić tak, żeby nic nie zaburzało jego działania). Chodzi o zastosowanie komputera do zbierania danych w czasie rzeczywistym - i to takim bardzo rzeczywistym,...
Napotkałem następujący problem jeśli uruchomię bootloader, wgram program i każę go uruchomić to nie zadziała prawidłowo. Natomiast jeśli po wgraniu zresetuję wszystko zasilaniem to jest ok. Procesor LPC2138/01, kwarc 12MHz. Wgrywanie bootloaderem bezproblemowe po zwarciu P0.14. Inne objawy "po uruchomieniu z bootloadera", UART wysyła dane 4x szybciej,...
(at)qazpylades Jakie masz ustawienia PRIMASK oraz jaki jest priorytet Twojego przerwania? Instrukcja cpsid i niekoniecznie maskuje Twoje przerwanie.
//--------------------------------------... .EQU UND_STACK_SIZE, 8*4 .EQU SVC_STACK_SIZE, 256*4 .EQU ABT_STACK_SIZE, 8*4 .EQU FIQ_STACK_SIZE, 8*4 .EQU IRQ_STACK_SIZE, 64*4 .EQU USR_STACK_SIZE, 1024*4 //--------------------------------------... .EQU Mode_USR, 0x10 .EQU Mode_FIQ,...
Witajcie, od dwóch dni próbuję ogarnąć przerwania EXTI. Już na to patrzeć nie umie... Gdy naciskam przycisk wszystko się zacina. Działanie programu (docelowe jakie ma być): dioda mruga co sekundę, po wciśnięciu przycisku gaśnie, po ponownym wciśnięciu zaczyna mrugać i tak w kółko. Działa: mruga, po wciśnięciu zostaje w stanie w jakim była podczas wciskania...
Witam, Możesz dać przyciski w przerwania. obsługa przycisków na zewnętrznych przerwaniach jest zdecydowanie słabym pomysłem. Moim zdaniem powinieneś postąpić następująco. W płytce Twojego nadajnika musisz znaleźć dwa wolne piny i podłączyć do nich przyciski do masy , w setup te piny muszą być ustawione jako INPUT_PULLUP . W głównej pętli Twojego nadajnika...
(at)grko Tu akturat możesz nie do końca mieć rację. Co prawda wpyw tej optymalizacji na całkowite obciążenie MCU jest pomijalny, lecz tu chodzi o wyrobienie się z czasem odpowiedzi. Stan musi być wystawiony przez slave 1-wire w overdrive o ile pamiętam w ciągu 1 us. Tak więc w tym przypadku oznacza to zgodność z protokołem lub jej brak. Nie mniej,...
:) akurat ten zegarek jest taki prowizoryczny bo mam wyswietlacz 3 cyfrowy i pojawia sie problem z wyswietleniem godz wiekszej niz 9 a to ze godz ma 59 min to czyste przeoczenie, w każym razie nie o to chodzi :P Anody wyświetlacza mam podłączone do PORTD a katody odpowiednio do PB0 PB1 i PB2. Poniżej funkcja inicjalizujaca wyswietlacz LED: [syntax=c]...
w base+1 (gdzie base=0x378 dla lpt1 lub 0x278 dla lpt2) bity oznaczają kolejno: bit 7 - pin 11 zanegowany bit 6 - pin 10 bit 5 - pin 12 bit 4 - pin 13 bit 3 - pin 15 bity 2-0 - nieużywane (w SPP.. w EPP czy ECP występuje tu bit wystąpienia przerwania czy tym podobny..) dla uproszczenia wszystkich sprawdzeń przy odczycie można obliczyć port[base+1] xor...
1. czy da sie wylaczyc sygnal 1 Hz na wyjsciu INT układu (żeby nie wywoływał przerwania co sekunde tylko wtedy kiedy nastąpi alarm ?) 2. jaką wartość powinienem wysłać do procka, żeby ustawił odpowiednio rok i dzień miesiąca, w moim rozumieniu jest tak: -chcę ustawić rok 02 i dzień miesiąca 25: -rok jest w zmiennej year a dzień miesiąca w zmiennej day:...
Poszczególne bity tego rejestru pozwalają ci "zamaskować" określone przerwania Wyjaśnienie terminu maska bitowa znajdziesz np na Wikipedii [url=http://en.wikipedia.org/wiki/Mask_%...
Dzień dobry, teraz mam problem z innym laptopem (praktycznie takie same objawy). Model to Compal Hel81, w trakcie aktualizacji BIOS laptop sam się wyłączył i teraz mam czarny ekran kiedy go włączam. Ale zauważyłem że laptop zachowuję się jakby RAMu nie widział. (at)ElektrodaBot Bezpośrednia odpowiedź na pytanie Istnieje duże prawdopodobieństwo, że...
Witam Dzisiaj znalazłem fajną stronkę gdzie był umieszczony super fajny ściemniacz sterowany pilotem i ręcznie na Tiny12 ( http://republika.pl/rejestr/strony/avr_r... ). I tu mam pare pytań: 1. Potrzebuje 2 takich układów w jednej puszce więc żeby mi się to zmieściło wymyśliłem że uwspólnie odbiornik podczerwieni, zasilanie, tranzystor odp....
http://obrazki.elektroda.pl/5385398300_1... Zaprezentować dziś chcę projekt lampki RGB który wykonałem na pracę zaliczeniową z systemów wbudowanych. Moim zdaniem osiągnięty efekt jest zadowalający więc może ktoś będzie zainteresowany wykonaniem urządzenia według mojego projektu. Jako, że jest to pierwszy zrealizowany przeze mnie projekt...
Tak jak wczesniej obiecalem, udostepnie chetnie moj dzialajacy core procesora XMB32 , ktory jest klonem procesora MicroBlaze zrobionego przez firme Xilinx i dostepnego za niecalkiem male pieniadze. XMB32 powstal z nastepujacych powodow: 1). Wrodzona niechec autora do placenia za cos co mozna samemu zrobic, 2). Potrzeba posiadania "mikro"kontrolera o...
maskowanie kamer maskowanie przerwa maskowanie czujki
lexmark napełnianie kosztorysy elektryczne kabel monitor 120hz
Koszt wymiany uszczelki pompy wakuum Peugeot 207 SW Piec gazowy gaśnie przy odkręcaniu ciepłej wody - przyczyny i rozwiązania