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...
Masz zaimplementowane wektory przerwan ? [syntax=c] void SVC_Handler(void) { extern void vPortSVCHandler(void); vPortSVCHandler(); } void PendSV_Handler(void) { extern void xPortPendSVHandler(void); xPortPendSVHandler(); } [/syntax]
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,...
może Timer2.initialize Nie można tak, nie ma klasy Timer2. Poza tym od razu radzę zrezygnować z biblioteki TimerOne przy używaniu więcej niż jednego timera. Zamiast tego samemu można napisać konfiguracje timerów i wektory ich przerwań. Oto kod demonstrujący jak to zrobić. Powinno migać diodą i niezależnie wysyłać napis. Twoim zadaniem jest teraz dobrać...
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ą...
poczatek ramu jest wykorzystywany przez bootloader. flash magic - zgodnie z nazwa - sluzy do programowania FLASHa, a nie RAMu. najprawdopodobniej masz w kodzie wlaczone tez remapowanie wektora przerwan na poczatek ramu (czyli od 0x4000000), a ze nic tam nie ma (bo twoj wektor przerwan zaczyna sie na 0x40000200), to program robi jakas blizej niezdefiniowana...
Praktycznie to masz tylko dwa wektory przerwan pod ktore mozesz podłączyć lub dokonfigurować układy procesora.
w ARMach taka sama porazka z tymi przerwaniami... sa tylko dwa wektory przerwan na caly procesor no! tragedia! Polecam Cortex-M3 ;) Wektorów w pierony a nawet wiecej.
hmm... kwestia jest do przemyslenia, trzeba kombinowac. aby skompilowac program do innych adresow musisz zmienic opcje linkera, tyle ze wtedy schrzania sie tez wektory przerwan <: moja propozycja jest taka, aby bootloader skladal sie tylko z wektora przerwan oraz kodu ktory moze byc umieszczony gdziekolwiek. aplikacja musi byc kompilowana do pracy...
Pisales kiedys bootloader? Jest on (a szczegolnie SPM) w sekcji bootloadera? Wektory przerwan sa w ktorej sekcji? Blokujesz przerwania na czas programowania? Pokaz program, bo bez tego to wrozenie z fusow. Jak przetwarzasz hex na dane do programowania? Czy nie lepiej przesylac obraz binarny FLASH, zamiast bawic sie w interpretacje hexa?
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...
Czekaj, spokojnie, powoli...:] Wiem ze mam DWA wektory przerwan....Ale: Moze "pytania w pigulce": -Gdzie konfiguruje się w jakim trybie procesor ma wejsc do tego przerwania -Jak sie maja adresy wektorow przerwan do MMU? -Jak sie je przemapowywuje? -JAK SIE JE WLACZA?? (wystarczy ustawic bit w rejestrze z manuala??) No to ok, ustawie odpowiednie bity,...
Dziwne ze Twoj program nie dziala. Pierwsze kilka adresow w pamieci programu to wektory przerwan (dokladne informacje w dataszicie), takze dobrze jest instrukcje umieszczac dopiero w nastepnych komorkach (tak jak w programie kolegi kaczepa). Nie powinno miec to jednak wplywu dopoki nie uzywasz przerwan. Jesli chodzi o stos (SPH i SPL) to jest on dopiero...
Witam najpierw kawalek kodu :) TCCR1A=0x00; TCCR1B=0x01; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; TIMSK=0x04; // przerwanie interrupt [TIM1_OVF] void timer1_ovf_isr(void) { // Place your code here lcd_full(); delay_ms(100); lcd_cls(); } wektory...
bcc na pewno generuje ten typ binarki dla linkera? Oznacza to mniej-wiecej tyle, ze program nie zaczyna sie od adresu 100h. Ogolnie, piszac .comy w asmie nalezalo pamietac, by na samym poczatku programu napiasc org 100h, co oznaczalo zacznij program od adresu 100h. Wczesniej byl Program Segment Prefix, ktory zawieral dane na temat programu, a takze...
mnie rowniez wlasnie wystapil podobny problem, z AT89S52 wykorzystuje fizycznie wejscia INT0 oraz INT1, na oba wejscia idzie ten sam sygnal , impulsy prostokatne w programie oczywiscie wlaczam przerwania EX0 i EX1, ustawiam zbocza przeciwstawne ITx, i podpinam sie pod wektory obu przerwan w tle odpalam timer2 wraz z obsluga przerwania natomiast w petli...
Tak na prawde nie potrzeba tutaj Chinol-a bo AVR-y nigdy nie mialy super zabezpieczenia, choc i tak Atmel troche je poprawil w stosunku do pierwszych wersji. Jednak jak mowie nie ma co popadac w paranoje, kolega produkuje pewien uklad (popularny i czesto uzywany w swiecie tuningu samochodowego). Uklad rozwalilem w parenascie minut - lacznie z napisaniem...
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...
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...
plik startup S jest w assemblerze tylko i wylacznie dlatego, ze musisz ustawic na procku odpowiedni tryb i zainicjalizowac stos. absolutnie minimalny startup to (poza wektorami przerwan) ustawienie stosu. cala reszte w teorii mozna zrobic w C, ale... po co? gotowych plikow startup sa setki i tyle, wiec po co kombinowac i pisac je w C na sile? sztuka...
Poniżej masz wczesną wersję programu dla procesora U2 z zestawu [url=http://ep.com.pl/files/1903.pdf]AVT... [syntax=asm] ;***************************************... ;* Program syntezera DDS ;* ;* fout = freqHML(24bit) * 16MHz/takt(9) / 2^(8+8+8) ;***************************************...
a ja jednak chwilowo odstąpiłem od temaru JTAG - zaprojektowałem sobie płytkę do "starter kitu" na F241 - będę próbował przez RSa. z tego co analizowałem - nie ptrzeba kasować całego flasha i segment z bootloaderem zostawić w spokoju - tylko musze sprawdzić jak te dranie określiły tam wszystkie wektory przerwan.wszystkie algorytmy przesledziłem - nie...
ani inicjalizacja stosu, ani wszystkich rejestrow przerwan nie jest potrzebna. konieczny jest tylko wektor resetu. 0x41 0x56 0x45!!
nie programowalem armow ale czy dobrze ustawiles wektory przerwan(jezeli takie sa).jaki kod dales w obsludze przerwan?
Jak chesz napisać pierwszy program to skorzystaj z jakis przykladow, których pełno w sieci. Inicjalizacja stosu, wektorów przerwan itp realizuje tzw rozbiegówka - zawiera ją każdy przykładowy kod.
A jak wymusic uruchomienie procesora z RAM bez manipulowania pinami BOOTx ? (bo upgrade bedzie głownie zdalny). I co powinienem zainicjowac aby poprawnie dzialaly procedury C bez uzywania zadnych bibliotek (np. stos itp) A co do trzeciej opcji (nie uzywanie pierwszych stron flasha): jak to zrobic aby linker umiescil tablice wektora przerwan pod innym...
Pierwszy raz widzę assemplera od AVR więc mogę się mylić, ale czy nie brakuje ci ORG'a? ;----------WEKTORY PRZERWAN------------------------------ .CSEG .ORG 0; wektor przerwania inicjalizacji rjmp Reset; skok do procedury inicjalizacji .ORG OC1Aaddr rjmp zwieksz ;----------SEGMENT PROGRAMU------------------------------ .ORG Coś tam Cośtam <- tu dopisałem....
Z tego co zdazylem sie zorientowac to nie ma mozliwosci zapisania pierwszych 4 lub 2 stron (w zaleznosci od wielkosci ich wielkosci). Wiec musialem zrobic maly bootloader i upgrade robic od 4 strony. Co wiazalo sie z 2 rzeczami (korzystam z bibliotek STMa): Ustawieniem wektora przerwan tam gdzie startuje moja aplikacja. NVIC_SetVectorTable( NVIC_VectTab_FLASH,...
Napisales ze "OTP mozna programowac wielokrotnie" a wedlug mnie to oznacza co innego niz programowanie za kazdym razem innych komorek pamieci w OTP.Jest natomiast rysa na tym pieknym teoretycznym wywodzie: nie da sie przeprogramowac wektora przerwan.
Moze sobie zdizasembluj kod w Keil-u i zobacz czy skok do obslugi przerwania jest tam gdzie powinien byc.To nie jest wina kompilatora, moze uzyles zlego numeru wektora przerwan.
Jasne, rozumiem wszystko, ale czy przypadkiem instrukcja : NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x2000); nie ustawia odpowiednio wektora przerwan i nie informuje o tym procesora? Dzięki za zainteresowanie tematem, będe wdzięczny za kolejne sugestie. Pozdrawiam
Jak przerwanie pierwsze jest wykonywane i w tym czasie wystapi drugie, to flaga drugiego bedzie ustawiona dopoki nie skonczy sie pierwsze, czyli jak sie pierwsze skonczy to zacznie sie drugie. A w AVRach jest wektor przerwan, ale ustala on kolejnosc tylko wtedy, jak wystapia przerwania w jednym cyklu zegarowym.
odczytaj pamiec tak jak kazda inna lokacje. a tak w ogole to nie wiem jak u ciebie, ale na LPC sie nie da debuggowac tak, zebym mogl zobaczyc ze procek skoczyl do wektora przerwan i jeszcze zebym sobie krokowo mogl pracowac. probowales po prostu sprawdzic czy przerwanie dziala bez JTAGa? 4\/3!!
skoro raczkujemy to nie nalezy od razu uczyc sie kustykac. o ile pamietam to sa tam Timery, nawet 2 - czasowki wypada na nich zrobic, chociazby dlatego ze timery poprostu sa, a program i tak "nic" nie robi. w dobrym tonie jest uzywanie sprzetu, bo do tego sluzy, inaczej wystarczylaby jedna petla w calym programie... no i na wektor przerwan to wchodzi...
pisze program w assemblerze i nie moge skonfigurawac timera0 do pracy w trybie CTC robie tak: -mam w wektorze przerwan instrukcje skoku do procedury -mam dzialajaca procedure -ustawiam stos -ustawiam wartosc TCNT0 -ustawiam wartosc OCR0 -wpisuje do TCCR0 wartosc 0x0D ( ctc + prescaler 1024) -ustawiam TIMSK na 0x02 -odblokowuje przerwania poleceniem...
Witam, Mam taki problem z tym prockiem Atmela, ze potrzebuje ustalic ktore przerwania maja wiekszy priorytet od innych (tzn moga przerwac je w trakcie wykonywania). W dokumentacji znalazlem jedynie informacje o tym ze w przypadku wystapienia dwoch przerwan na raz wykonane zostanie to ktore znajduje sie wyzej w wektorze przerwan. Chcialbym sie dowiedziec...
.org 0x0000 rjmp Reset ;wektor przerwan od resetu .org 0x0016 rjmp Timer0 ;wektor przerwań od przepełnienia T0 .org 0x0012 rjmp Timer1 ;wektor przerwań od przepełnienia T1 Reset: ldi Temp, LOW(RAMEND) out SPL, Temp ldi Temp, HIGH(RAMEND) out SPH, Temp Spójrz jeszcze raz na wyżej wybrany fragment - widzisz błąd? Przypatrz się dobrze......
Rozumiem ze programujesz za pomocą SAM-BA. Na pewno po kompilacji otrzymujesz plik bin, a nie przypadkiem hex?? Zauwazylem ponadto ze w tym przykladzie z tej strony ktora podales sa biblioteki dla SAM7S64,a ty uzywasz SAM7S256. W zasadzie nie ma prawie zadnych roznic poza tymi bibliotekami, ale moze to jakas przyczyna. W opcjach kompilacji wybrales...
To ja podniose temat: chodzi o uszczegółowienie logiki działania procesora przy zapisie do wewnetrznego flash. Jesli wykonuje zapis do flash to kontroler wstrzymuje dzialanie programu na czas zapisu/kasowania - to oczywiste. I jesli przychodzi przerwanie a obsluga jest w RAM (tak jak i wektor przerwan) to przerwanie wykonuje sie - to tez oczywiste....
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...
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...
1. program musi byc wpisany do ROMu, co pociaga za soba koniecznosc uzycia odpowiedniego skryptu linkera. 2. pobaw sie zworkami - moze twoj program wcale nie 'ulatuje' tylko po prostu sie nie odpala, bo bootloader cos namieszal. zworki ktore cie interesuja to te od debuggowania (JTAG) i ta od programowania przez RS-232 (IAP/ISP). 3. program aby poprawnie...
int n wywoluje przerwanie i jest to uprzywilejowany rozkaz, zarezerwowany tylko dla systemu. Gdyby nawet nie byl uprzywilejowany, to int n pobiera adres funkcji z wektora przerwan, ktory jest umieszczony w niedostepnym miejscu dla szarego programisty. To tyle na temat int. Mozesz go uzywac na win98/ME, ale nie na XP. 2. Nie uzywaj assemblera o takiej...
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
WITAM na wstepie chcialbym zaznzczyc ze jestem poczatkujacy mam program napisany w asm i potrzebuje "przetlumaczyc" go na język C++... jest to rozruch silnika... zwracam sie do ludzi znajacych oydwa jezyki Ja troszke znam C++ ale nie znam asemblera .... wiec proszę o pomoc... potrzebuje także dopisać do tego programu ŁAGODNY rozruch tzn. silnik sie...
Z tego co widzę, nie włączyłeś przerwania od ADC. Nie widzę ustawienia bitu ADIE w rejestrze ADCSRA.
No dobra, dodałem w pliku startup taki fragment kodu: [syntax=armasm]movs r1, #0 b LoopCopyDataInit1 CopyDataInit1: ldr r3, =_siccmram ldr r3, [r3, r1] str r3, [r0, r1] adds r1, r1, #4 LoopCopyDataInit1: ldr r0, =_sccmram ldr r3, =_eccmram adds r2, r0, r1 cmp r2, r3 bcc CopyDataInit1[/syntax] Przy deklaracji każdej funkcji w pliku nagłówkowym main oraz...
A spróbuj tego kodu : .include "m128def.inc" ;wektory przerwan .org $0000 rjmp reset ;***************************************... #define LED_PORT PORTD .def Accu = r16 ;***************************************... reset: ldi Accu, high(RAMEND) out SPH, Accu ldi Accu, low(RAMEND)...
W twoim main brak jest na koncu petli i procesor sie resetuje. Po drugie jeli korzystasz z przerwan to musisz zdeklarowac ile bajtow jest do wyslania np. w sposob w jaki pokazalem w swoim kodzie. NAQ tym to polega wskazujesz skad wyslac dane(bufor), w jakiej ilosci i procesor zajmuje sie czyms innym np. kolejnymi obliczeniami nie martwiac sie o obsluge...
czestotliwosc przerwan priorytet przerwan przycisk przerwan
bezpiecznik podgrzewania sieć dreambox creative bateria
toshiba 17mb171 toshiba 17mb171
Schemat elektryczny modułu haka AC UN-32/1 – podłączenie, kolory przewodów, opis wyprowadzeń Iskrzenie podczas wirowania pralki - przyczyny i rozwiązania