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...
Z tego co widzę, nie włączyłeś przerwania od ADC. Nie widzę ustawienia bitu ADIE w rejestrze ADCSRA.
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".
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?...
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...
Pozostaje ustawienie bitów COM. W zależności jak je ustawię mogę wykryć zgodność przy zliczaniu w górę lub w dół, zatem decyduje się na zgodność jak w góre COM1A1, COM1A0 = 11 Tu nie chodzi o zgodność, tylko o ustawianie i zerowanie wyjścia OCx. W jednym trybie jak wystąpi zgodność przy liczeniu w górę to pin OCx=1, a w drugim pin OCx=0, i vice versa...
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.
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 ;)
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ń.
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...
Spróbuj zmienić początek programu - wektory przerwań: ;================================ .CSEG .ORG0x0000 jmp RESET .ORGOC1Aaddr jmp TEST ;Przerwanie zgodnego porównania OC1A .org0x0050 ;....... dalsza część programu
Do obsługi LCD używam biblioteki LiquidCrystal_I2C.h ona używa delay, jak to sprawdzić ??? Skoro piszesz, że używa to chyba sprawdziłeś? Zapomnij o dziwolągach takich jak LCD z interfejsem równoległym przez ekspander I2C i to jeszcze najgorszy z możliwych czyli PCF8574. - Podłącz wyświetlacz bezpośrednio do uC - Użyj LCD z kontrolerem I2C - OSTATECZNIE...
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...
Tak tutaj wektory: http://www.nongnu.org/avr-libc/user-manu...
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....
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...
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...
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, 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)...
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...
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...
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...
:) 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ść...
:?: 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...
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ę...
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 !!!!
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...
DMA w Z80 to znaczna przewaga. DMA ma duże znaczenie w wolnych CPU. Z80 demonem szybkości nie był ale DMA, wektoryzowane przerwania (to akurat 8051 ma) dodawały mu kopa. Nawet gdy CPU jest szybkie, brak DMA daje się odczuć, dlatego wszystkie ARM mają DMA. Jak szybki musiałby być CU aby bez DMA odsłużyć kamerę?
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...
juz wywalczyłem - nie zauwazyłem ze że okresliłem wektory przerwań. dziabnąłem sie o dwie komorki.
Ponieważ pokazałeś fragmenty kodu więc może nie do końca prawidłowo go przeanalizuję. Problem polega na tym, że odczytany w przerwaniu pomiar zapisujesz do tablicy w pętli for kilka razy zanim nastąpi ponowne przerwanie z ADC. //pomiar********************************... for(int x=2; x<157; x++) { bufor[x]=adc;...
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.
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ń....
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 ?
Skoro plik main.cpp jest plikiem C++, a wektory są funkcjami z C, to handler obsługi przerwania musi mieć ozdobnik `extern "C"`. Wstawiaj kod i logi w odpowiednich znacznikach (code/syntax), bo nie da się tego czytać.
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...
Teoretycznie jest mała szansa żeby udalo się zmienić stan na 2 pinach równocześnie , więc najpierw odczyta stan z pierwszego pinu a potem z kolejnego dopiero po tym jak powróci z obsługi przerwania . Tylko to jest realizowane sprzętowo, więc odpowiednie flagi ISR mogą się zmieniać jednoczasowo, lecz sekwencja ISR zostanie wykonana zgodnie z priorytetem...
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ć...
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ą.
Ja osobiście nie mam problemów z przenaszalnością kodu w firmowym asemblerze Atmela, nawet pomiędzy różnymi wersjami rdzenia, gdyż są w nim wbudowane definicje pozwalającej na asemblację warunkową. Przykład - instrukcja lpm , zamiast której używam następujące makro: .macro LpmPlus #if ((__CORE_VERSION__==V2E)|...
Ja na samym początku przerzucam wektory przerwań na początek pamięci RAM. A później wstrzykuję swoją funkcję w miejsce oryginalnego wektora. Po rozmyślaniu na ten temat doszedłem do następujących wniosków. 1. Możliwość dynamicznej rejestracji przerwań (najlepiej w wysoce abstrakcyjny sposób, tak aby funkcje nie musiały być publiczne) byłaby z pewnością...
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,...
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...
W pierwszym programie (post #1) pojawiło się wywołanie procedury: InitUSB; W kolejnej wersji (post #7) wywołujesz HID_Enable((at)readbuff,(at)writebuff); Nie wiem co robią te funkcje i jakich definicji oczekują, ale na pewno szukałbym błędu w organizacji pamięci (obszar musi być dostępny dla USB) i konfiguracji przerwań (wektory, zezwolenia i same funkcje)....
Datasheet mają wspólny. ...i jest w nim rozdział: Comparison Between ATmega48, ATmega88, and ATmega168 . Dodatkowo proponuję zwrócić uwagę na listę instrukcji, bo niektóre są dostępne tylko w ATmega168 (np. JMP). Przykładowo, mam aktualnie ATmegę168, chcę wgrać program z ATmegi88. Biorąc pod uwagę, że wektory przerwań mają inne rozmiary, raczej wątpliwe,...
No właśnie każe promotor, każe... :( Ostatnie pytanie: Czy zamiast reti, które powraca z przerwania ustawiając I, mogę napisać skok do samego przerwania, a na końcu jego obsługi wykonać powrót ze wskaźnikiem I? Widywałem też takie rozwiązania (poradniki w internecie) ale nie bardzo temu ufam. Doczytałem w książce: "W każdym elemencie tabeli wektorów...
Wstępem. Moje wektory przerwań. Stan prawie aktualny. (brak 3 dla najnowszych F0). Kompatybilne z CubeMX
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...
Jak jest aplikacja to oprocz ustawienia predkosci kwarcu i skokiem do programu glownego nic nie robi,. Dosyć odważna teza... Całkowicie błędna niestety. Bootloader przed skokiem do aplikacji powinien wyłączyć WSZYSTKO co włączył/skonfigurował, Ty natomiast nie wyłączasz niczego: - RCC i PLL, - przycisk, - SysTick. Funkcja konfigurująca SysTick włącza...
wektory matlab wektory przerwan matlab wektory
thinkpad opinie sprzedam automat montażowy przetwornica 200hz
suszarka kondensacyjna ładowarka dynamo
Podłączenie DVD Panasonic A7 do amplitunera Technics SA-TX50 Bezpieczniki główne w ładowarce CAT TH63 - lokalizacja i diagnostyka