Ej, nie przesadzajcie - to było 2 lata temu... Pozatym asm które pokazałeś w zasadniczej części jest identyczne i POPRAWNE: 270: e24ee004 sub lr, lr, #4 274: e92d580f push {r0, r1, r2, r3, fp, ip, lr} [...] 2d0: e8fd980f ldm sp!, {r0, r1, r2, r3, fp, ip, pc}^ 1fc: e24ee004 sub lr, lr, #4 200: e92d500f...
Z załączonego przez Ciebie programu wynika, że cała procedura zawiera się w obsłudze przerwania od T0. Nie wiem natomiast jakie są rzeczywiste adresy tej procedury. Czy jest ona umieszczona pod adresem 000BH (wektor przerw. od T0) - jeżeli tak, to zachodzi na adres procedury obsługi RS'a - 0023H. To może być powodem dziwnego zachowania. Poza tym fizycznie...
Witam, Uruchomiłem podany przykład u mnie na AVR STUDIO 4.19 build 730. Zachowuje się również niepoprawnie ale inaczej: Zmiana PB6 powoduje skok pod adres 0x0002 (word) 0x0004 (byte) Zmiana PA3 powoduje skok pod Adres 0x0004 (word) 0x0008 (byte) Jeżeli zerkniemy w symulatorze do okienka dissasembly do zobaczymy że przerwania zostały podpięte poprawnie...
Chyba źle zadałem pytanie, ponieważ rejestr ADC jest chyba 16bit-owy (składa się z dwóch 8bit-owych: ADCH i ADCL), bardziej chodziło mi o to, czy masz poprawnie skonfigurowany przetwornik ADC - jednocześnie poprawną kolejność bitów znaczących w rejestrze ADC. Możesz spróbować z tymi dwiema implementacjami tej funkcji: uint16 to zmienne całkowite od...
nie wiem czemu przeskakuje do 8 od dołu "reti" po czym dochodzi do pętli głównej i co drugi krok wraca do tego nieszczęsnego "reti" Tam nie powinno być reti, a poza tym jako wektrów przerwań dla ATmega16 musisz używać instrukcji 'jmp', a nie 'rjmp'. Spróbuj zrobić tak: ..... .org 0x00 jmp reset jmp ext_int0 jmp def_vect jmp def_vect jmp def_vect jmp...
mozna funkcji przypisac atrybut przynaleznosci do jakiejs sekcji, a nastepnie sobie taka sekcje zdefiniowac w opcjach linkera. http://www.ohse.de/uwe/articles/gcc-attr... ogolnie zas nie ma raczej potrzeby zeby kod umieszczac pod konkretnymi adresami - prosta droga do klopotow. wektory przerwan umieszczone beda tam gdzie trzeba, wiec o...
Jak się nazywa to zobacz w pliku gdzie masz wektory. Ale nawet jeżeli tak się nazywa to przycisk w takim przerwaniu to zły pomysł. Dlaczego to poszukaj sobie na forum bo temat wraca co kilka dni. Zresztą nie widzę włączenia zegara dla exti. Zresztą wątpię żeby tak się nazywał: np starup z Cube to EXTI0_IRQHandler albo EXTI15_10_IRQHandler
Przerwania procesora działają w procesorach AVR na takiej zasadzie, że (pomijając inne operacje) po wystąpieniu danego przerwania ( podczas obsługi przez procesor ) następuje zapamiętanie rozkazu następnego, który byłby wykonany, gdyby procesor nie przyjął przerwania (jego adresu w pamięci flash) i skok pod jeden z adresów z samego początku pamięci...
Wg mnie źle. Wektory prądów fazowych, powinny zaczynać się w początkach wektorów napięć fazowych, a wektor prądu In, też.
Zmieniasz wektory w rejestrze MCUCR, a odpowiednie bity są w rejestrze GICR. Więc table jest nie tam gdzie trzeba.
W tym wątku liczyłem na konkretną wskazówkę na temat wektorów i C w xpresso Wszystko co potrzeba do uruchomienia przerwań dla Timera16B1 z częstotliwościa 1Hz [syntax=c]LPC_SYSCON->SYSAHBCLKCTRL |= AHBCLKCTRL_CT16B1; LPC_TMR16B1->PR = 50000; LPC_TMR16B1->MR3 += 1000; LPC_TMR16B1->MCR |= ( 1 << 9 ); LPC_TMR16B1->TCR = 1; NVIC_SetPriority(TIMER_16_1_IRQn,...
mnie w całym katalogu AS7 i GCC nie znalazłem źródła gcrt1.s a znalezione w sieci są sprzed kilku lat. Są w źródłach AVR-libc, trzeba je pobrać. To co znalazłeć w necie będzie ok dla Dx. Kod startowy to praktycznie tylko wektory, inicjalizacja stosu (zbędna, bo nowe AVR robią to poprawnie sprzętowo), zerowanie jednego rejestru i ew. kopiowanie zmiennych...
A włączyłeś w Keilu wektory przerwań? "Cofigure Flash Tool" zakładka "C51". Zaznacz "Interrupt vectors at adres".
Witam, Popełniłeś kilka błędów: - aby odblokować przerwania od przepełnienia timera 1 trzeba ustawić bit 2 a nie 5 w rejsestrze TIMSK - wektor przerwania od przepełniania timera 1 to nie 0x12 a 0x24 Dobrze jest przy pisaniu w C korzystać z funkcji dostarczanych wraz z kompilatorem "intrinsic function" takich jak __interrupt_enable, __interrupt_disable,...
oraz jeszcze: 1. stosujesz stare funkcje obsługi przerwań a nowe wektory - stosuj nowe funkcje ISR(): http://nongnu.org/avr-libc/user-manual/g... i wywal nagłówek #include <avr/signal.h> 2. returny w funkcjach ISR() i main() są zbędne. 3. Ostatnia uwaga kol Zaquadnik jest baaaardzo istotna. Nie dość, że czekasz w funkcji...
Problem dla mnie pojawił się ze zrozumieniem wektorów przerwań które obsługują timer1. W dokumentacji jest tabela na stronie 46 W czym problem? Jak korzystasz z przerwania np. Timer/Counter1 Compare Match A czyli przerwanie w momencie gdy zawartość licznika (TCNT1) zgadza się z tym co wpisałeś do OCR1A to jeśli wcześniej w TIMSK ustawisz odpowiedzialny...
Czy moglby ktos tak w miare przystepny sposob opisac zasade wykorzystywania takich wektorow w przerwaniach?? czy jest jakas zasada przydzielania adresu wektora, kanalu? jak rejestr VICIntEnable rozroznia przerwanie IRQ od FIQ? i czy mozna dla jednego timera zrealizowac dwa(lub wiecej) przewrwania MR0 i MR1 jako dwa wektory przerwan VICVectAddr0 i VICVectAddr1?...
A może jakieś konkrety? Na przykład jakieś wektory dla sił? Rysunek jest dość ogólnikowy...
Organizacja pamięci programu (flash) jest w słowach - 2 bajty, stąd kolejne adresy np 101 102 103 tak naprawdę przeskakują co 2 bajty. Wektory przerwań używają rozkazu jmp (nigdy rjmp) rozkaz jmp składa się z 2 słow czyli 4 bajtów. Powyższe nie dotyczy pamięci statycznej RAM - tam jest organizacja 1 bajtowa.
A co na to symulacja programu? Taki program wgraj: .nolist .include "m32def.inc" .list ; ## START ########################################... .cseg ;=======================================... ;= WEKTORY PRZERWAŃ = ;=======================================... .org 0x0000 rjmp reset_vector ; po...
Na przykładzie timera0 ;wektory przerwań .org 0x00 rjmp reset .org 0x09 rjmp przerwanie_timer0 reset: .def acc = r16 .def maska = r17 ;### START TIMER0 in acc, TCCR0 ldi maska, 0b00000111 ; 3 ostatnie bity to ustawienie preskalera or acc, maska out TCCR0, acc in acc, TIMSK ldi maska, 0b01000001 or acc, maska out TIMSK, acc ; odblokowanie przerwania...
( void INT(void) interrupt 0 { instrukcje } To akurat przerwanie dotyczy INT0 a to: // Przekroczenie T0 void Timer_0 (void) interrupt 1 właśnie dotyczy T0 Kolejne numerki za słowem interrupt oznaczają wektory przerwań w '51 Tak przynajmniej jest w kompilatorze Raisonance.
Może zbyt namieszałem. Zasadniczo chodzi po prostu o to jak stworzyć projekt w SW4STM, który nie zawierałby tych wszystkich śmieci z SPL i HAL i dało się pisać na rejestrach. Taki czysty podstawowy projekt pod rejestry z tylko niezbędnymi rzeczami jak w przypadku pisania na AVRy. Ja robię to tak: I. Potrzebne narzędzia: 1. System Workbench for STM32...
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ą...
A więc tak : - na przyszłość podawaj pełne nazwy, łatwiej bedziesz rozumiany. ;) - zajrzałem do pdf-ów od AT90S2313 i ATtiny2313 (trudno zgadnać którego miałeś na myśli) i tak - AT90S2313 (s.18 DOC0839.pdf) ma 11 wektorów przerwania wliczając RESET, a ATtiny2313 ma ich 19 (s.43 - doc2543.pdf). Wyciągając moją słabo działającą szklaną kulę jestem w stanie...
dlaczego instrukcja: LDR PC, IRQ_Addr jest w komentarzu usuniecie komentarza powoduje ze program nie dzialo (nie rozumiem tego fragmentu pliku) Wyjaśnię to o wiele prościej niż kolega wyżej :D Ta instrukcja: LDR PC, [PC, #-0x0FF0] to jest wersja tego czegoś: LDR PC, IRQ_Addr dla procesorów LPCxxxx. Chodzi o to że prawie wszystkie przerwania...
Procesor ten wspiera takiej możliwości sprzętowo (inne np intel x86 albo Motorola CPU32, posiadają tzw wektoryzowalny system obsługi przerwań i jest taka możliwość). Pozostaje rozwiązanie programowe, niestety ono nieco spowalnia działanie programu.
Nie chce mi się patrzyć do noty aby sprawdzić rejestry... Objaw ten już znam: masz dobrze napisane wektory przerywań? Oraz czy przypadkiem nie włączyłeś jakiegoś przerywania i zostawiłeś je bez obsługi?
Z tego co wyczytałem nie można zmienić adresu wektora przerwań jedynie możnawskazać czy jest we FLASHU (czyli bootloader zaczynający się od początku FLASHa) w RAMie (Początek pamięci RAM 0x10000000) czy też jakiś tam bootrom (sprzętowy bootloader we flashu). Nie ma w M0 rejestru SCB->VTOR... chyba. Faktycznie, w ARM Cortex-M0 akurat wektory trzeba...
W pierwszej kolejności proponowałbym zamienić wszystkie INTERRUPT na SIGNAL . Tym bardziej że masz dwa różne wektory przerwań.
No ale elf, *.lst, wszystkie objecty są naprawdę po nic a wielokrotnie zwiększają objętość pliku do ściągnięcia. Poza tym jest super hiper mega mała szansa, że komuś będzie pasowała Twoja binarka do swojej płytki ;)
Witam. Właśnie zaczynam przygodę z ARM stm32, chcę przeportować bibiotekę uart z avr ale mam problemy otóż wyskakuje mi błąd przy kompilacji [syntax=text] subscripted value is neither array nor pointer nor vector[/syntax] Oto program: [syntax=c]/* * uart.c * * Created on: 27.09.2017 * Author: Pawel */ #include "stm32f10x.h" #include "uart.h" volatile...
To jest standardowa instrukcja w ARMach ... po prostu jadro ma tylko 2 wektory przerwania IRQ i FIQ i żeby wykonać odpowiednie przerwanie dokonuje sie tak zwanej wektoryzacji która polega jak zaznaczył Freddie na załadowaniu do PC adresu z rejestru (nie pamiętam nazwy) który jest pod adresem względnym PC-0xFF0. I tyle :)
To znowu ja... staram się teraz zrobić 2 bufory: nadawczy i odbiorczy - nadawanie i odbiór w przerwaniu. Jeśli ktoś ma opanowany ten sposób transmisji to proszę o sugestie i porady. Kod mojego programu zamieszczam niżej. Niestety nie działa tak jakbym chciał - nie wiem jak zainicjiować nadawanie. Gdy ustawie flage TI to jest generowane przerwanie ale...
To masz kopnita wersję avr-libc. Na pewno jest nowsza wersja. http://lists.gnu.org/archive/html/avr-li... Masz rację jest to jakaś nieścisłość ale to nie jest powodem mojego problemu. Nazwa wektora w m16a jest inna ale to samo podstawia co dla m16 UART_UDRE_vect. Dla pewności zmieniłem w makefile na m16 bez "a" i wektory...
Kolego przerwa jak ta widoczna na fotkach lub wewnątrz aparatu wcale nie musi skończyć się tak jak byś sobie życzył. Masz na myśli to, że jest jednak możliwość pojawienia się 400V w tym wydzielonym obwodzie jednofazowym przy przerwie przewodu N? Nie znajduję wytłumaczenia jak mogłoby do tego dojść. W przypadku przerwy N, każde obciążenie w obwodzie...
Tak tutaj wektory: http://www.nongnu.org/avr-libc/user-manu...
Ooo, no szkoda takie coś z łap wypuścić, zarobek w sumie żaden a o działających CA to wiem na pojedyncze sztuki, to kawał historii jest i robi się pomału kultowy ;) Nie jestem sentymantaly tym bardziej, że nie znosiłem Z80 jak i wszystkich tworów INTELA a Z80 wywodzi się z INTEowskiego 8080. Peryferia INTEL też były badziewiarskie. To co 6502/6800...
Kompilator wysyła ostrzeżenie odnośnie wektora przerwań: 'SIG_UART_RECV' appears to be a misspelled signal handler Zmień na nowe wektory i funkcję ISR(): http://www.nongnu.org/avr-libc/user-manu... Przyglądnij się także funkcji usart_inicjuj(): http://mikrokontrolery.blogspot.com/2011...
Witam, Chciałbym uzyskać następujący efekt: Wyświetlać na GPIO8 stan GPIO6. Porty GPIO6 i GPIO8 są ustawione. Do GPIO6 podłączone są SW a do GPIO8 diody. Obsługa GPIO6 ma odbywać się przez przerwanie typu wektoryzowane IRQ. Ja ustawiam przerwanie Vic1.9. Chciałbym w obsłudze przerwania czytać WIU->PR i według tego reagować (wywoływać dalszy kod)...
:) Kto szuka nie (ten) błądzi. Dzięki za cierpliwość. Na chwilę obecną przyjmę to za pewnik. Temat jednak pozostawiam otwarty. Jeśli ktoś z czytelników rozumie mą rozterkę i potrafi mi wyjaśnić dlaczego tak a nie inaczej...to proszę się nie krępować :D PS Szczerze mówiąc dziwi mnie trochę to, że Ciebie jako fana logiki nie zastanawia pozorna bezsensowność...
Nie wydaje mi się że to problem z watchdogiem, przyznam się że do tej pory nie miałem potrzeby korzystania z niego i nigdy go nie uruchamiałem;) Standardowo chyba nie jest włączony watchdog? OK. problem lezal w makefile. Poczatkowo program składał się z kilku plików zrodlowych, teraz przerobilem makefile zeby kompilowal tylko jeden plik i widać popełniłem...
Zawsze obsługa przerwania powoduje skasowanie flagi I, aby pod koniec obsługi flaga została ponownie ustawiona przez instrukcję reti. Jeśli program się przerywa po kilku linijkach, to znaczy posiadasz nie obsłużone wektory przerwań, a to jest błąd w kodzie. Albo wyłącz przerwanie od danego źródła, albo wyłącz przerwania, jeśli z nich nie korzystasz.
Witam, Probuje potestować przerwania IRQ dla TImera. Podbralem sobie przyklady Bryndzy i po malych przerobkach nie za bardzo o dziala. Po samych ustawianiach Timera wchodzac do petli while flaga T0IR jest ustawiana, czyli funkcjonalnie jako tak śmiaga. Ale niestety nie działa jeśli probuje czy zostalo to zhandlowane jako IRQ ( iniclajlizacja parametrow...
Część odpowiedzi juz otrzymałeś na swoje pytanie. Komputerek jak najbardziej moze służyć do prawie wszystkiego - co wiaże się z zastosowaniem dzisiejszych procesorów czy mikrokontrolerów ośmiobitowych. Tyle, że bedzie to przerost formy nad treścią. Jeśli zaś chodzi o walory edukacyjne to jak najbardziej. Cobra była lepsza od CA80 pod względem możliwości...
Kolego jesteś genialny. Wielkie dzięki. Taki drobiazg a ja siedzę nad tym i siedzę. Tyle razy przeglądałem czy są te wektory i nie rzuciło mi się w oczy tak oczywisty błąd.Jeszcze raz dzięki. Ponieważ tego typu problemy zdarzają się nadzwyczaj często, ja przyjąłem sobie zasadę, że NIGDY nie "wpisuję z palca" nazw takich* funkcji, tylko ZAWSZE robię...
:?: Priorytety ustawiane w rejestrze "IP - $B8 " oznaczają, że źródło którego piorytet jest ważniejszy przerwie nawet obsługa przerwania o niższym stopniu i wykonana przerwanie o wyższym piorytecie. Np: normalnie INT0 ma wyższy priorytet od UART, ale gdy BS=1, to UART będzie obsłużony pierwszy. Gdy BX0 i BS =1 to INT0 zostanie obsłużone jako pierwsze...
Zacytuję, / Po naprawie alternatora, po kilku tysiącach zerwał się pasek / , Napinacz tylko napina pasek, ale go nie prowadzi tak jak koła pk, więc nie generuje siły bocznej , Ok zastanawiam się nad tą siłą boczną i wiesz co, ja będę cię łapał za słowa, I od tego zacznijmy, a tak w ogóle rozdmuchałaś temat ,/ No nie,/ /quote="krawcowa1980"]Chyba się...
Masz dwa wektory przerwań na jeden port, piny możesz w dowolny sposób przyporządkować do jednego z dwóch wektorów dla danego portu.
A co pisałem żeby podejrzeć wektory debuggerem !!!!
To nad czym się zastanawiacie intvect jest przecież wyjaśnione (internal vectors = wektory skoków wewnętrzne) czyli tablica przerwań procesora. Np.: .ext0 DC.W it_ret oznacza że jeżeli wystąpi przerwanie wewnętrznego modułu przerwania zewnetrznego EXT0 (.ext0) to procesor wykona skok do etykiety w programie it_ret lub zapewne jest to zakodowana nazwa...
Wektory przerwań ustawione?
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...
No ale ja nie chcę nic wysyłać. Co to znaczy że TX jest empty ? TXE jest ustawiane sprzętowo, więc to oczywiste że jeśli jest empty to będzie. Jeśli dobrze to rozumiem (bardziej na intuicję niż na wiedzę z dokumentacji) to jeśli nie chce nic nadawać to powinienem wyłączyć nadajnik. A możesz mnie nakierować jak to zrobić ?? W AVR były dwa różne wektory...
Tak tez podejzewalem dlatego poczekalem cierpliwie az 16 bitowe TCNT1 sie przepelni, ale zadnego przerwania nie dostalem. Bo zastosowałeś nie ten wektor przerwania: http://www.nongnu.org/avr-libc/user-manu... Od przepełnień są wektory z OVF.
Przerwań się nie liczy. Wektory przerwań nie są wskazywane przez DS - mieszczą się one w pierwszych 1024 bajtach przestrzeni adresowej. Adres procedury obsługi wyjątku x znajduje się pod adresem 4x i zajmuje 4 kolejne bajty.
Pogrzebałem trochę i choć nie rozwiązałem tego, to wydaje mi się, że to nie wina hardwaru. Zdisasemblowałem ELFa i na początku mam tablicę wektorów. Domyślam się, że to wektory przerwań. Pierwszy to skok do miejsca gdzie kończą się wektory. Rozumiem, że to wektor dla reset. Każdy następny to skok do adresu 0x8a, gdzie jest 0000008a <__bad_interrupt>:...
hmmm .. albo źle patrzę albo sam już nie wiem: #define VICProtection_VIC_access 0x1 #define VICProtection_VIC_access_BIT 0 #define VICSWPriorityMask (*(volatile unsigned long *)0xFFFFF024) #define VICSWPriorityMask_OFFSET 0x24 #define VICVectAddr0 (*(volatile unsigned long *)0xFFFFF100) #define VICVectAddr0_OFFSET 0x100...
w kodzie programu jedyne niepokojące jest to, że F_CPU jest deklarowane PO dołączeniu delay.h (ja to deklaruję na poziomie pliku Makefile "-D F_CPU=$(F_CPU)"). Sprawdź też, czy plik jest kompilowany na atmega8, bo jeśli wybierzesz inny, to kompilator nie zaprotestuje, a wektory przerwań mogą się różnić, tudzież wywołanie przerwania bez kodu obsługi...
nsvinc ma oczywiście rację. Zapomniałem o tym, że są wspólne wektory. maksymalny numer przerwania to chyba EXTI4. I przypada ono na piny 12,13,14 i 15 Ten opis pasuje bardziej do rejestrów SYSCFG_EXTICRx. (at)nsvinc - procesor to pewnie jakiś STM32L1xx sądząc po nazwie płytki...
Nie wiem jak wyglądał dokładnie projekty tych testów automatycznych jednak znając już Z80 i mając już reużywalne kody chyba bym się nie przesiadał na 8051 szczególnie, że o ile pamiętam Z80 miał lepsze peryferia. Też uważam, że 8051 to krok wstecz w tym przypadku. 8051 jest wolny, nawet sześciotaktowy (były dostępne po 2000 roku, jeszcze Philipsa i...
juz wywalczyłem - nie zauwazyłem ze że okresliłem wektory przerwań. dziabnąłem sie o dwie komorki.
Nie znam się na języku BASCOM, ale w ASM trzeba zdefinować jeszcze wektory przerwań, czego u Ciebie nie widzę. Innaczej program zapętla się wykonując się od początku do miejsca przerwania. Flagę I w SREG masz ustawioną "Enable Interrupts", więc jedynie to przychodzi mi do głowy.
Na miejscu kolegi nie bagatelizowałbym sprawy obsłużenia przerwania portu równoległego i dokładnie upewniłbym się czy system operacyjny którym dysponujesz obsługuje własnie te przerwanie. Z tego co się orientuję na popularnych PC-tach tylko jakaś stara wersja OS-a używała tego. A chcąc użyć przerwania pod Dos-em należało modyfikować wektory przerwań....
W Altium poszukałem skrypt (ale chyba firmy zewnętrznej) przerabiający bitmapę na obraz a'la fax - czyli kreski określonej szerokości tam gdzie ma być jasny piksel i przerwa gdzie ciemny. Potworni to przymula potem Altiuma, bo liczba elementów jest ogromna, ale do wstawienia na końcu do projektu obrazka już jest OK.
A te wektory w asm są konieczne ? Czy kompilator sam nie potrafi ich wstawić w odpowiednie miejsce ? Czy w "kawałku kodu" procedura główna jest zapętlona, czy wskakuje na przerwanie ?
BoskiDialer -> dokladnie robie tak jak piszesz, ja tylko koledze opisywalem na czym to polega. Problem jest innego typu, jak przenies wektory przerwan do BLS to wiem (3 post tak jak pisales), nie wiem tylko jak poinformowc kompilator zeby wektor od UART_RX umiescil w sekcji .bootloader bo procedurke do obslugi bootloadera pisze np tak: void BOOTLOADER_SECTION...
Jest to przykład z braci Gałków. Jednak nie działa mi z powodu cytuje: Jeśli użytkownik korzysta z przerwań sprzętowych to w programie musi uwzględnić fakt że program zaczyna się od adresu 2000h i wektory przerwań są przesunięte o ten wektor. Co to oznacza jaki jest więc adres timera 0. Czy dobrze użyłem instrukcji LJMP $, czy jednak powinno być SJMP....
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...
Co do stosów, to proponuję wpisywanie wartości podzielnych przez 8. Jeśli nie korzystasz z przerwań i innych dziwnych trybów, to rozmiar pozostałych stosów może być równy zero. Właśnie dziś przeczytałem o tym w innym temacie. Właściwie jak na razie używam tylko wektoryzowanych przerwań, a wielkości stosów abort,irq i undef ustawiłem wg user maual....
Witam! Pytanie raczej do praktyków: wypełniacie nieużywane wektory przerwań poprzez RETI? Zawsze to 40 bajtów więcej a poza czytelnością programu nie widzę sensu chyba że o czymś nie wiem?
Czyli pic18xxKxx. Więc wyszukać trudno nie było. Dla przykładu: PIC18F25K80 od 7.60PLN/100sz w TME Na pokładzie: CAN, ADC12bit, 1K EEPROM. Aaaa.... Czyli te co mają 2 wektory przerwań? Nadaje się i jest to bardzo dobry procesor. Ale nie jest panaceum na wszystko jak niektórzy usiłują sugerować. Nie kolego Albert. To nie jest tak. Jest dokładnie w druga...
Witam, przesymulowałem sobie pierwsze 8 minut działania zegarka. Dokładnie patrzyłem (wartość Stop Watch w symulatorze), kiedy wchodzę do obsługi przerwania. W ciągu tych 8 minut (odpowiada to 12.000 wywołań tego przerwania) błąd był niewidoczny, tzn. symulator nie był w stanie stwierdzić wahań, tj. resztkowe opóźnienie wynosi poniżej 10 ns (najmniejsze...
Witam, zastanawia mnie dlaczego nie mogę używac rcall gdy jestem w procedurze obsługi jakiegoś przerwania (procesor to attiny2313). Podczas symulacji w AVR Studio strzałka jakby zatrzymuje się na tej instrukcji ale program nie wykonuje żadnego skoku. .include "tn2313def.inc" .def acc = r16 ; nadanie rejestrowi r16 nazwy symbolicznej .equ led...
Witam! W twoim watku czegos nie rozumie... w programie oczywiscie wlaczam przerwania EX0 i EX1, ustawiam zbocza przeciwstawne ITx, i podpinam się pod wektory obu przerwan W ksiazce pt. "Mikrokomputery jednoukladowe rodziny MCS-51" Andrzeja Rydzewskiego na str.80 pisze "Przerwania zewnetrzne sa zglaszane opadajacym zboczem lub niskim poziomem sygnalu...
Do tej pory troszkę bawiłem się AT89C2051. Wykonałem pewien układzik który za pomocą Timera0 zliczał impulsy na wejściu T0 podczas 1sekundy którą odmierzałem Timerem1. Jako, że musiałem przeprogramować 51 do innych celów chciałbym go zastąpić Attiny2313 bo mam dwie sztuki. Zacząłem czytać książkę Dolińskiego aby wykonać program ale mam pewne problemy....
Wczoraj uruchomiłem RTC, działa ładnie, choć nie wiem dlaczego na koniec wpisu do rejestru RTC_CNT muszę dwa razy wyzerować bit RTC_CRL_CNF:) W następnej kolejności chcę uruchomić przerwanie od RTC, no i oczywiscie nie działa, inaczej nie pisałbym tu. Jak rozumiem z dokumntacji (tej cześci którą przeczytałem) i opisu przykladów, najpierw powinny być...
Spróbuj zmienić początek programu - wektory przerwań: ;================================ .CSEG .ORG0x0000 jmp RESET .ORGOC1Aaddr jmp TEST ;Przerwanie zgodnego porównania OC1A .org0x0050 ;....... dalsza część programu
No jeśli komutator jest brudny, szczotki zużyte, lub co gorsza jest zwarcie lub przerwa w jednym lub więcej zezwoju, to wtedy silnik może się zatrzymywać w przypadkowych momentach, nie chcieć ruszać, i ma wtedy mniejszą moc... Generalnie to mechanizm jest taki że moment maszyny jest maksymalny gdy pomiędzy wektorem pola stojana a wektorem pola wirnika...
Ja pokazałem przecież tobie też screen z Eclipse i mi dobrze podpowiada wektory dla ATtiny13 ... więc może coś po drodze gdzieś jeszcze źle poustawiałeś ? Jaką masz wersję Eclipse ? bo ja wersję "Juno" i polecam ci ją także. Oczywiście jeśli chcesz symulator w takiej postaci o jakiej piszesz to nic nie stoi na przeszkodzie aby mieć AVRS pod ręką.
Mnie właśnie przydałby się sam scheduler, bo koncepcja działania peryferiów często bardzo zależy od użytego układu i samego projektu. Może powinieneś rozdzielić ten projekt na dwa, jeden to czysty scheduler i drugi projekt to cały system który z kolei jest oparty o ten pierwszy projekt. Zauważ, że im bardziej rozbudowany będzie ten projekt, tym trudniej...
No cóż, wyszedłem z założenia, że jeśli się dostaje tego typu temat do realizacji to należy posiadać pewien zasób wiedzy i umiejętności. W tym wypadku wskazana byłaby wiedza : o konstrukcji i działaniu komputera o językach programowania i pisaniu programów o sygnale akustycznym ze szczególnym uwzględnieniem mowy o metodach przetwarzania cyfrowego sygnału...
Witam! Timer generuje przerwanie periodyczne. W procedurze obsługi testowo chciałem przełączać stan na jednej z linii portu GPIO (prymitywny debug na LED), ale... okazało się, że nie działa. W pierwszej chwili szukałem błędów w inicjalizacji timera, ale później się okazało, że przerwania się generują, tylko ja tego nie widzę, bo nie wykonuje się przełączenie...
Witam, Dzieki za wyczerpujaca odpowiedz, widze ze tez zaglebiasz sie w szczegoly tego ustrojstwa ;]. W tej chwili u mnie juz dziala jak trzeba. Jezeli chodzi o wywolanie funkcji to mialem na mysli wywolanie funkcji juz z mojej funkcji obslugi przerwania. Sprawa wygladala tak, ze mialem mthumb-interwork z tym ze dla samej komendy linkowania gotowych...
Witam . W PIC-ach 18 po wykryciu zdarzenia (przerwania) wykonywany jest skok pod adres wektora 0x08 dla high_priority lub pod 0x18 dla low_priority . Pod który adres wykonany zostanie skok zależy od konfiguracji odpowiednich bitów. Dodatkowo w kodzie należy umieścić pod jakimi adresami znajdują się wektory . Przykładowa obsłóga przerwania . void high_isr(void);...
Cobra 1 jest dość skomplikowana (chodzi o układ wizyjny). Proponował bym 8051 z zewnętrzną pamięcią programu. Potem, dodałbym do tego 8051 jakiś IO np rejestry 74xx574, 240/1,bo historyczny 8255 pewnie ciężko kupić. Kolejny krok, nie lubiany przeze mnie Z-80 (osobiście wolałem 6502/68xx nie mylić z 68k). Teraz pewnie ciężko kupić SIO czy PIO do Z-80,...
Hej, Po kilku dniach przerwy wróciłem do tematu i udało się coś zdziałać. Przyjąłem "standardowe" rozmieszczenie kodu bootloadera i aplikacji w pamięci: - Bootloader od adresu 0x00000000, - Aplikacja za bootloaderem. Moje poprzednie problemy z umieszczeniem kodu pod określonym adresem były spowodowane ograniczeniami kompilatora ale do sedna. Napisałem...
Witam. Tak na szybko analizując kod: Dla Timer0 włączasz dwa przerwania od porównania: http://obrazki.elektroda.pl/6165324400_1...
Do romulus73 - Dziękuję za odpowiedź. Podałeś linijki g -codu / przykładowe / które należy wpisać w program. Mam prośbę - w załączniku jest plik warstwy R, który obecnie wykonuję. Warstwy Z już wykonałem. Teraz robię warstwę R. Musiałem zmienić rozszerzenie pliku z 444R.tap na 444R.doc. / dla elektrody /. Aby otworzyć go w programie Candle trzeba wrócić...
Czyli jeśli w kodzie C inicjuję jedynie wektor powiedzmy ADC_vect, to jedynie w kodzie asemblerowym jedynie .org ADCaddr będzie pozbawione komentarza <__bad_interrupt>. A propos wektorów i tablicy: Czy inicjalizacja tablicy wektorów przerwań jest zależna od typu mikrokontrolera? W literaturze i w poradnikach internetowych widzę, że wszędzie wektory...
Niczym szczególnym się nie różni, poza tym, że wektory obsługi przerwania mogą być trochę inne i ilość instrukcji może być troszkę większa, jeżeli chodzi o asembler. Nie wpływa to jednak na zapis programu, jeżeli zamiast konkretnych adresów używasz nazw symbolicznych definiowanych w plikach nagłówkowych, najczęściej dostarczanych razem z kompilatorem,...
Największy problem jaki tutaj widzę, to przyzwyczajenie Autora do AVR, gdzie port I/O jest tak banalnie prosty, że nie ma czego wybierać. W tej sytuacji zderzenie z konfiguracją portu I/O w Xmega również będzie problemem Zgadzam się w całej rozciągłości. Peryferiom Xmega bliżej do peryferii ARM niż AVR. AVR ma peryferia dość proste, można je porównać...
Witaj, O volatile kolega słyszał? Jeśli nie, to czas poczytać: http://mikrokontrolery.blogspot.com/2011... Stosuj nowe funkcje obsługi przerwań ISR(), tym bardziej, że używasz nowe ich wektory: http://www.nongnu.org/avr-libc/user-manu...
W Unix-ie jest inaczej. Tam system może "zabrać czas" procesora gdy aplikacja tego nie robi bo jest silnie obciążona. Mógłby kolega rozwinąć. Bo średnio to jest zrozumiałe dla mnie. Robiłem multitasking w oparciu o przykład Motorolli dla 68k, więc temat mogę rozwinąć. W prawdziwym systemie wielozadaniowym (Win tak sie nie zachowuje) każdy task dostaje...
Panowie umiem w miarę C++ i przecież musi być miejsce wywołania funkcji a ja tego nie widzę. Pozdrawiam Wiesz co to są wektory przerwania, ATtiny2313 ma ich razem z resetem 19. Jeśli jakieś moduł np Timer, UART itp. zgłosi potrzebę obsługi, CPU przerywa wykonywanie programu, zapisuje swój stan na stosie i zaczyna wykonywać program od innego miejsca....
Po przeczytaniu całej tej dyskusji, przeanalizowaniu, zgodzę się, że najlepiej zacząć od 8-bit (też zaczynałem) ale NIE OD AVR! . Najwięcej można nauczyć się zaczynając od Z-80 (polecam bardzo dobrą literaturę - serie książek MIK, są dostępne legalne kopie na tym forum). Z-80 obsługuje wektoryzowane przerwania, jest przystosowany do pracy z DMA, co...
A wektory aliasowane do Default Handlera są weak? Bo rozumiem, że nie masz debugera?
Witam znowu, ostro walczę z armami i ciągle napotykam na jakieś spore przeszkody, tym razem mam problem z timerem 0, odmierza czas 2 razy dłuższy niż powinien. jako że uart działa mi dobrze odrzucam kłopot z kwarcem i ustawieniami PLL. mam kwarc 14,754600 MHZ pętle PLL konfiguruje na 60 MHz więc tak naprawdę mój procesor taktowany jest 4*f_kwarcu a...
Jak już wcześniej kolega bobbyAIR zauważył aktywne jest przerwanie od odebrania danych/bajtu... RXCIE Ty uaktywniłeś globalne zezwolenie na przerwania... Dokumentację czytałeś ale coś jej nie rozumiesz... Dopisałeś funkcję które mają odbierać dane... Ale one czekają aż dane pojawią się w buforze... Odbieranie danych w przerwaniu z założenia ma przerwać...
Nie ma potrzeby aby vectors był osobno wydzielony. Tak akurat zrobił kol. Freddie, że oddzielił wektory do oddzielnego pliku. W zależności od tego skąd bierzesz te pliki to napotkasz się na różne podejścia w organizacji tych plików. Np Atmel ma rozbiegówkę i wektory przerwań w jednym pliku *.c. Nie ma jakieś potrzeby aby rozbiegówka dla Cortexów była...
excel wektory wektory matlab wektory przerwan
driving force labview filtr transformator jonizator
Słabo świecące tylne światła w Iveco Daily - diagnostyka i naprawa Silnik markizy się przegrzewa - przyczyny i rozwiązania