http://obrazki.elektroda.pl/9341091800_1... Witam, Od dawna wiadomo sporej liczbie osób, że do programowania mikrokontrolerów AVR można wykorzystać sprzętowy programator oparty o prościutki ale jakże popularny układ FT232RL. W podstawowej formie pełni on rolę przejściówki USB/RS232 a przy okazji wystarczy w pełni do zaprogramowania AVR'ków....
Zgadzam się, reset eepromu prawie na pewno pomoże. Mi jak nie pomagało to kilkakrotnie włączałem telka i przy uruchamianiu wyjmowałem baterię, aby przerwać włączanie. Gdy się trochę pobawiłem baterią to soft sam się resetował do factory settings i wszystko grało.
Fredie, Prawie, że poszło. Stary projekt się skompilował, wgrałem działa. Niemniej projekt był oparty na jakichś starych twoich przykładach jeszcze z roku 2009. Chciałem zaktualizować projekt za pomocą twoich najnowszych przykładów, wobec czego wywaliłem podkatalog Setup z plikami hdr_special_registers.h, startup.S, stm32f103ve_rom.ld, vectors.c oraz...
teraz troszeczkę mi się niby rozjaśniło ale jednak to drugie wyrażenie mi nie działa - dziwne! a pierwsze właśnie działa: #define us(num) ((num)*(F_CPU/1000000)/LOOP_CYCLES) i to mnie najbardziej dziwi ;) (może to zależy od jakichś tajemniczych ustawień w makefile - ale to dla mnie czarna magia te "ptaszki" jak narazie - a ponieważ używam eclipse -...
W STM32 domyślnie podczas zatrzymania rdzenia timery pracują, więc podczas twojej pracy krokowej zgłaszane są setki kolejnych przerwań. Aby to zwalczyć należy w rejestrze DBGMCU->CR (w manualu DBGMCU_CR) zapalić stosowny bit dotyczący stosownego timera. Niestety nie zawsze jest to możliwe (bo aplikacja może wymagać aby timer naprawdę stale pracował...
to nic niestety nie zmienia. Dalej nie odpala się przerwanie INT1. nie jest problemem złe ustawienie rejestru MCUCR, tak myślę.
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ś...
Powiedz mi skąd u ciebie wektor przerwania wynosi 10 ? Czy to jakis Egzotyczny procesor czy jak ? Bo dla przerwania Timera 0 dla normalnego uK jest to inna wartość Patrz np Atmel strona http://www.atmel.com/dyn/products/tools_... C51 Timer1 in Mode 1 with Soft Gated Timer (20 KB, updated 06/04) /** * FUNCTION_PURPOSE: timer1 interrupt...
VICVectCntl0 = (1<<4)|(1<<5); Czy w LPC23xx jest w ogóle taki rejestr? Wg mnie takowego rejestru w LPC23xx i LPC24xx NIE MA. Moduł VIC jest generalnie zupełnie różny w LPC21xx/LPC22xx i w nowszych układach - w tym Twoim. W "nowych" rejestry są przypisane na sztywno - Timer0 ma na sztywno kanał 4, a więc i rejestr adresu musi być 4 itd....
No teraz dobrze, ale czy to Ci w ogóle potrzebne? Zerujesz zmienną prze wejściem w pętle ... A wracając o głównego wątku, jeśli masz włączone przerwanie to jego czas dodaje się do tych 1780us, być może wiele razy na bajt (bo częstotliwości oscylatora nie podałeś) i sprawdzasz PD2 w niewłaściwym czasie ... Albert
(at)A.T. Debugowanie nie zadziała Ci z Soft Devicem (to co masz na początku flasha). Stos działa mniej więcej tak w przypadku niespełnienia zależności czasowych (które pojawiają się podczas debugowania przykładowo). Więc jeżeli chcesz debugować to: a) bez Soft Device b) możesz ręcznie wyłączyć przerwanie od SD W obu przypadkach nie będziesz miał oczywiście...
Proszę o pomoc szczególnie freddiego chopina ponieważ jest autorem plików linkera, startup-a i wektora przerwać(vectors.c), które w innych projektach jak dotąd działałają mi niezawodnie. Zajrzyj do skryptu linkera, przeczytaj ze zrozumieniem jego początkowy fragment, ustaw tak jak trzeba i będzie działać. Kluczową sprawą jest przyswojenie sobie tego...
http://www.eclipse.org/downloads/ Które wybrać? ;> Eclipse IDE for C/C++ Developers
No i po co włączasz przerwanie? 4\/3!!
Oprzyj multipleksowanie o timery, a te niech wywołują przerwania.. Tworzysz sobie procedurę przerwania od timera. Następnie w tej procedurze realizujesz funkcję "przełączania" segmentów. Uruchamiasz timer z żądaną częstotliwością + odblokowujesz odpowiednie przerwanie.
Ustawiasz bit zezwolenia na przerwanie TXCIE, a gdzie masz procedurę obsługi tego przerwania? Po odesłaniu znaku flaga TXC zostaje ustawiona i ze względu na brak procedury obsługi tego przerwania program najprawdopodobniej startuje od początku. Nie ustawiaj bitu TXCIE lub napisz dla tego przerwania chociaż pustą procedurę obsługi: [syntax=c] EMPTY_INTERRUPT(USART_TXC_vect);...
w LPC23xx źródła przerwań są na stałe przypięte pod konkretne kanały. W LPC21xx sam ustawiałeś przyporządkowanie źródło - kanał VIC. Tak więc tutaj musisz przerwanie od Timer0 obsługiwać przez VICVectAddr4, VICVectPriority4 itd., a ustawienie wartosci 4 (numer kanalu dla Timer0) w VICVectPriorty0 po prostu ustawia priorytet przerwania WDT (to jest na...
Eee.. zmieniłeś w międzyczasie OSa? Wygląda trochę jakbyś strzelał na oślep, coś nie działa, to sruu wszystko, kopiuj/wklej inny przykład itp. Trochę jakby bez zastanowienia co konkretnie może nie działać... Dodano po 1 Kurka, to odpal sobie DMA, odblokuj przerwanie od Transfer Complete i jesteś pewny, że dane odebrano ;) Z przerwania wepchnij wynik...
Da się to jakoś optymalniej zrobić? Przerwanie czy odczyt ile ono trwa? 4\/3!!
Faktycznie masz rację ustawiłem na 512 i rzeczywiście HardFault nie występuje. Niestety przerwanie EXTI3 nadal nie jest wywoływane :cry:
chciałbym się podpytać z jakiego IDE korzystacie? Jak nie na eclipse to może Visual Studio + VisualGDB. Choć nie jest to darmowa opcja.
To zacznij jak najszybciej używać eclipse, zobaczysz że będzie dużo lepiej ;) zresztą zobacz tutaj: [url=http://mirekk36.blogspot.com/2011/1...
#define F_CPU 1000000 Koledzy uczyli mnie, aby nie definiować tej wartości w kodzie. Jeżeli używasz AVR Studio/Eclipse ustawiaj ją zawsze we właściwościach projektu.
Chyba tutaj dobrze trafiłem z pytaniem. Prośba do wszystkich o jakiś soft z polskim wraz z epromem do w/w telefonu Eclipse MT-450. Na początku wyswietlała się apteczka, potem bawiłem się jakimś softem :( telek zaczął wgrywac a ja mu przerwałem teraz wgrywałem jakiś eclipse_pl_path_l10_4raqa060 ale niemam do niego epromu. Telefon się nie włącza, reaguje...
A ja polecam Eclipse. Z sei() nie ma problemu. Poza tym działa i w Windows i Linux (u mnie na Ubuntu).
nie - bariera jest rozstawiona teraz na powiedzmy około 6 cm od siebie. Wydaje mi się, że jest to problem z timerem, ale wg mojej oceny prawidłowo go zadeklarowałem. Dodam, iż kwarc mam 11.0592MHz. Preskaler 256. Przerwanie timera co 1 sekundę.
Oba taski maja ten sam priorytet ? Sprobuj sprawdzic czy przerwanie od SysTiicka dziala (breakpoint). Mozesz tez sprobowac wrzucic tutaj kod, ktory nie dziala (okrojony najbardziej jak to mozliwe).
adamusx Ma znaczenie i to duże. I nie w kwestiach mechaników to należy rozpatrywać tylko funkcji zdefiniowanych w plikach "startup_stm32f4xx.c", "system_stm32f4xx.c" i "system_stm32f4xx.h". Dla CM4 wygląda to tak: Startup wywołuje funkcję SystemInit(); Ta funkcja przy domyślnych ustawieniach konfiguruje system taktowania uC na 168MHz, ale dla kwarcu...
To już chyba wina złych deskryptorów lub ogólnie złej obsługi USB. Jak wchodzi w przerwanie od USB tzn, że program działa ok, ale coś w obsłudze/deskryptorach pokopałeś.
Cześć i czołem. Od dwóch tygodni walczę na noże z stmem 32f429 i nie bardzo chce cokolwiek działać. Problem jest dość trywialny: nie działają przerwania. Jedynie projekt wygenerowany przy pomocy CubeMX'a potrafi zrobić przerwania, ale znowu nie chce przyjmować klas etc. Zresztą, wolę unikać tego narzędzia, wolę rozumieć co gdzie jest i dlaczego. Próbuję...
Niestety, przerwanie od timera jest co 0.1s to wystarczająco długo by bit U1LSR zgasł. No ale dla próby wywaliłem te while - i skutku spodziewanego to nie odniosło.
wszystko jest w pliku armint No właśnie nie wszystko. Nie ma obsługi przerwań. Przerwanie się zgłasza, procesor chce je obsłużyć, ale nie wie jak więc program się wykrzacza.
Ta biblioteka libc.a pochodzi z pakietu WinArm. Ja bym sprawdził czy tam to chodzi. A co do Eclipse/cygwin to u mnie nie chce wykonywać się przerwanie do procków Philipsa Lpc2000,choć kompiluje sie poprawnie. Pod WinArm'em chodzi, sprawdzane było też w Keilu, tam tez nie ma problemu. Nie wiem czary czy co. A ogólnie to polecam pakiet Yagarto ze stronki...
Mam nadzieję, że to ostatnie pytanie w tym temacie. Przedefiniowałem w config.h wyjście diody na PB14, oraz podłączyłem odpowiednio. Nadal jednak dioda nie miga. Z http://obrazki.elektroda.pl/5101784800_1... Any ideas ? :D
Niestety wciąż to samo :cry: diodka nie miga co 1s. Zaczynam myśleć, że ten kwarc zegarkowy jest uszkodzony. Wystarczy, że zaremuję konfiguracje zegara i program rusza. Tzn to co jest w main{}. Mam jeszcze takie pytanie do Ciebie. Widzę, że nie wybierasz grupy priorytetów. Czy jeśli jest wykorzystywane tylko jedno przerwanie to nie musimy wybierać grup??
Luźne przemyślenia pod rozwagę: -procesor wchodząc do obsługi przerwania stanu ABORT (tryb ARM) podstawia shadow-registers w tym r13 który jest wskaźnikiem stosu używanym w czasie obsługi tego typu wyjątku. W twoim przypadku skoro chcesz wywoływać w procedurze obsługi funkcje do obsługi LCD prawie na pewno trzeba zarezerwować specjalny obszar stosu...
Zrób dwa bufory i operuj na nich w trybach "ping-pong". Jeden wypełniasz w przerwaniu, na drugim sobie coś robisz w programie głównym. Jak skończysz, to go "zwalniasz" i czekasz aż przerwanie "przydzieli" Ci ten drugi, jednocześnie biorąc dla siebie ten pierwszy. 4\/3!!
Nie napisałeś nic o środowisku programowania. Jeśli to jakaś samoróbka Eclipse, stawiam na błędną konfigurację stosu/stosów. żeby poprawnie obsłużyć przycisk w przerwaniu portu, musisz i tak mieć przerwanie timera i wyłączać przerwanie przycisku po jego przyjściu, a potem włączać je w przerwaniu timera - bez sensu - dużo łatwiej i krócej zrobić to w...
Przerwanie jest umieszczane pod 0x04 (sprawdzilem plik *.lst). Czy problemem moze byc brak inicjalizacji plikiem startup.as? Wczesniej pracowalem w srodowisku Eclipse i tam dodawal sie on automatycznie - pod MPLabem chyba nie jest on dodawany - w kazdym razie nie widze tego :( BF
No to chyba czas się przygnać, że ja nie znam się na ARMach i na C ;p Fajne uczucie pomagać komuś w rzeczy na której się nie zna ;p Ja dopiero zaczynam. CodeSourcery/OpenOCD/Eclipse/Wiggler/LPC... http://www.elektroda.pl/rtvforum/topic13...
Witam wszystkich Tak jak w temacie, skonfigurowałem eclipse pod stm32. Używam makefile i linkera od Frediego. Wszystko pięknie działało(miganie diodą, obsługa klawiszy etc) do mementu, gdy postanowiłem przetestować przerwanie zewnętrzne. W tym momencie podczas odpalania program trafia do funkcji _Default_Handler w pliku vectors.c gdzie się zapętla (chyba...
Jeśli chodzi o przerwanie od tim2, to napisałem w poście powyżej nie do końca prawdę. Kod głównego programu jest wykonywany, a gdy zatrzymam procesor, program się zatrzymuje na tym rozkazie ktory mial wykonać. Następnie debugując <Step into (F5)>, procesor zaczyna wykonywać przerwanie TIM2_IRQHandler. I klikając F5 nigdy już nie wyjdę z tego...
Szkoda trochę, że w Practical Guide nie opisali choćby ogólnej metody tworzenia przerwań pod tym OS. Bo nie ma czegos takiego. Jesli twoje przerwanie moze zmienic kontekst (czytaj przelaczyc zadania) to sam musisz o to zadbac. Nie kazde przerwanie musi zmienic kontekst a poniewaz jego zachowanie i odtwarzanie jest czasochlonne wiec nie nalezy tego...
Tryb User powoduje przerwanie pracy programu (wystąpienie wyjątku) procesora przy próbie zapisu pod nieistniejący adres, czy mi się wydaje? Dla mnie osobiście lepszym było by co innego. Niech odczyta krzaki, zapisze na stosie itp, ale niech idzie dalej. Rozumiem że można napisać obsługę wyjątku, ale jak zrobić żeby wyjątek w ogóle nie występował? To...
Co to za płytka? Jak twoja to chyba reset jest źle podłączony. Proponuję najpierw tak zrobić aby odpalać bez błędów i przeróbek, których nota bene nie rozumiesz. Jak już odpalisz płytkę poprawnie to wtedy po raz 1e999 przycisk i przerwanie się nie lubią i nie należy ich tak robić poza przypadkami kiedy __wiesz__ co robisz i jakie co ma skutki
Witam! Proszę o podpowiedź dlaczego w kodzie: unsigned int i, imax, (...) int obsluga_przerwania1() { AT91C_BASE_TC1->TC_SR; i++; if (i > imax) { i = 0; *AT91C_TC1_CCR = 0x2; } AT91C_BASE_AIC->AIC_EOICR = 0x0; } int main() { [konfiguracja tc i aic] while(1) { if (warunek1)...
ta funkcja ma obsługiwać przerwanie pomiędzy przesyłaniem danych a linijka niżej ma przesyłać dane pierwsze pole to wyjście, które wybrałem w cube potem jest miejsce z czego brać dane a jedynka na końcu że po jednym bicie
Mimo że uruchomienie kontrolera LCD i EMC rzuciłem w cholerę (wszystkie projekty które miałem na tym zrobić zrobiłem na … AVRach ;p), to jednak procesor ARM chcę kiedyś uruchomić. Na razie własnymi siłami uruchomiłem UART2. Wysyła poprawne dane do kompa. Teraz próbuję zrobić odbiór i jednocześnie uruchomić przerwania. Napisałem taki kod jak w...
(at)szczywronek LCD_WriteText nie ma żadnych opóźnień od innych przerwań. Funkcja zawiera jedną instrukcję...która pośrednio odnosi się do jeszcze 3 innych funkcji. Jednak żadna z nich nie wykorzystuje przerwań. Tak, posiadam debugger. Działam na openocd+eclipse oraz startupie Freddiego. (at)BlueDraco Dziś podczas kolejnych nieudanych prób ten sam...
Elementem wywołującym pracę układu jest Switch S1 który zwierając port PB1 do masy wywołuję zewnętrzne przerwanie INT0 Uzywanie przerwania do styków butonnów, klawiszy i innych podobnych diabelstw jest najgorszym pomysłem. Temat był na tym forum poruszany setki razy - proponuje włożyć trochę wysiłku i użyć wyszukiwarki.
stm32 przerwać przerwać przerwać przerwać bascom bascom przerwać przerwać
techbite sterowniki odblokować pilot panasonic odkurzacz napraw
Sterownik TECH ST-480: Komunikat "brak 50Hz" - przyczyny i rozwiązania Moment dokręcania świecy żarowej Hyundai Tucson 1.7 CRDi