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...
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]
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...
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...
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?...
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.
Praktycznie to masz tylko dwa wektory przerwan pod ktore mozesz podłączyć lub dokonfigurować układy procesora.
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...
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...
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.
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,...
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.
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.
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...
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
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....
ani inicjalizacja stosu, ani wszystkich rejestrow przerwan nie jest potrzebna. konieczny jest tylko wektor resetu. 0x41 0x56 0x45!!
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!!
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?
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.
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...
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...
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,...
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...
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...
.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......
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...
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...
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...
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....
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...
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...
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...
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...
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...
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...
To mam jeszcze jedno pytanko dotyczace wektora przerwan. Otoz mam sobie taki segment: segment 'intvect' DC.W it_ret .spiDC.W it_ret .lt2DC.W it_ret .lt1DC.W it_ret .at2DC.W it_ret .at1DC.W it_ret .avdDC.W it_ret DC.W it_ret .lt0DC.W it_ret .ext3DC.W it_ret .ext2DC.W it_ret .ext1DC.W it_ret .ext0DC.W it_ret .awuDC.W it_ret .softDC.W it_ret .rstDC.W main...
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)...
Linia P0.14 jest zawsze sprawdzana. Poprawny program (poprawny wpis w wektorze przerwan) jest dodatkowym warunkiem URUCHOMIENIA programu (jezeli nie jest on poprawny to procek wchodzi w bootloader niezaleznie od stanu linii P0.14). Mialem podobne watpliwosci jak uruchamialem LPC2101 (to samo tylko mniej pamieci). Dzialalo bardzo niestabilnie, raz mi...
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...
Witam, Przyczyn jest kilka: 1.stosowanie procedury _delay_ms() Ponieważ procedura ta ma atrybut "always_inline" to w momencie gdy jej użyjesz w swoim programie nastąpi wstawienie całego kodu tej procedury w każdym miejscu jej użycia. Czyli użyjesz 20 razy to 20 razy zostanie powielony kod. Usunięcie _dalay_ms zmniejsza kod do ok 1800 bajtów. Ponieważ...
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...
Niestety nie miałem możliwości wcześniej wszystkiego posprawdzać, ale zrobiłem to teraz i wszystko ładnie działa. Dziękuję wszystkim za zainteresowanie, uwagi były pomocne aczkolwiek układ nie działał w dużej mierze przed moją częstą nieuwagę. Poniżej przedstawiam działający kod. Mam nadzieje że się komuś przyda. .include "tn2313def.inc" ;-----definicje---------------------...
Witam, Pisze pod LPCXpresso bootloader na LPC1224/121. Aplikacja główna w main ma wywołanie funkcji: [syntax=c]void CopyInterruptToSRAM (void) { unsigned int * flashPtr, *ramPtr; unsigned int * uLimit = (unsigned int *) 0x200; ramPtr = (unsigned int *) 0x10000000;//load RAM starting at 0x10000000, flashPtr = (unsigned int *) 0x2000;//start of interrupt...
Tak juz wczesniej robilem bo gdy nie wlacza sie preskalera to licznik nie uruchania sie...wiec w przerwaniu po zaswieceniu diody wstawilem TCCR1B = 0; i diody w ogole nie zaswiecily sie. W symulatorze rzeczywiscie tak bedzie ze licznik przeleci to co jest do zrobienia w wektorze przerwan napotykajac powyzsze wyzerowanie i zatrzyma sie. A w rzeczywistosci...
hehe. zakladki da sie wlaczyc (prawym w edytor -> properties/general i 'use tabbed window'). rowniez da sie dokowac okna (klikasz lewym w ikonke w lewym gornym rogu okna -> dockable, niestety nie da sie zadokowac edytora z zakladkami). no ale moze nie rozmywajmy dyskusji do tak malo powaznych rzeczy jak funkcjonalnosc edytora [; nigdy w zyciu...
Witam! Usiłuje zasymulować obsługę magistrali I2C na procku ATmega128 w AVRStudio 4. Prosty kod źródłowy w assemblerze znajduje się w manual'u (str. 212). Problem w tym, że to nie działa. Mam problem z wyzerowaniem bitu TWINT w rejestrze TWCR (zeruje sie go wpisując 1).Poniżej zamieszczam fragment programu - inicjalizacja TWI i wystawienie bitu startu...
Witam. Mam mały problemik z UARTem . Mianowicie wszystko dziala ladnie , wysylanie i odbieranie znakow. Problem powstaje w momencie gdy wlacze przerwanie od zakonczenia nadawania (TXC: USART Transmit Complete ). Wowczas po wyslaniu jakiegokolwiek znaku z mikroprocesora mikroprocesor sie restartuje. Uklad to ATmega16, kwarc 16Mhz, predkosc transmisji...
Witam. Uruchomiłem WDT (będę używał tego skrótu zamiast watchdog) bez resetu, jedynie samo przerwanie. Wszytko "ładnie pięknie" do czasu gdy "wskoczy" do funkcji przerwania. Nie potrafię wyjść z tej funkcji. Flagę przerwania WDINT nie da się softowo wyczyścić (jedynie poprzez reset). Stad też nie wiem co mam zrobić, by wyjść z funkcji przerwania i nadal...
No zbyt trudne to nie było:). Mam pytanie wie ktoś może ile taki przetwornik TYP MPL10 produkcji PZO ma impulsów na obrót? Miał mieć 512 a wychodzi mi że ma 256. Na razie stworzyłem sobie taki programik: .INCLUDE "plik_definicji.txt" ;----------SEGMENT DANYCH-------------------------------- .DSEG .ORG 0x60 ;----------WEKTORY PRZERWAN------------------------------.....
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,...
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...
Ale Bascom przecież łyka instrukcje asm. Napisz mu np coś takiego: OCR4AH=00 OCR4AL=12 Sprawdź może też z małymi literami. Jeśli to nie zadziała to można podać mu to jako wstawkę asm. Być może nie opisali jeszcze tych rejestrów w tym kompilatorze. Też tak zrobiłem, ale mam problem z podziałem 16 bitowej liczby na dwie 8bitowe. Nie wiem czy robię to...
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...
Witam, napisałem obsługę zewnętrznego przerwania, które się wykonuje bezproblemowo, jednak po obsłużeniu przerwania program nie wraca od razu w miejsce z którego przerwanie zostało wywołane. Oto kod: [syntax=asm].INCLUDE "m16def.inc" .DEF acc = r16 // akumulator .EQU SYS_FREQ = 1 .CSEG .MACRO delay1sek // delay 1 sekunda na 1MHz ldi r17, 0x09 9 delay3:ldi...
Jeśli te funkcje zwracają status, to proponuję sprawdzać jaki dokładnie - DATA_EEPROM_Unlock(), DATA_EEPROM_Lock(), a zapewne też przez FLASH_ClearFlag(). nic nie zwracaja, usatwiaja tylko rejestry Dodano po 25 Zapomnialem napisac o jeden ważnej rzeczy, wszystkie opisane problemy wystepują gdy program głowny jest wykonywany z pod adresu 0x8003000,...
podzielę się wnioskami z badania trybu Fast PWM w ATmega 32. Wszystko co tyczy się trybu 5,6,7 zgadza się reguluje się tylko wypełnienie i rodzaj przebiegu (odwrócony i bez odwrócenia; wielkość wypełnienia za pomocą OCR1A lub OCR1B) By regulować częstotliwość(okres) i wypełnienie , trzeba wybrać tryb , w którym TOP-em jest OCR1A lub ICR1 , za wyjątkiem...
Racja. Już dawno nie pisałem w assemblerze. Zastosowałem etykiety do skoków, a później wywołałem funkcje i działa (funkcja zabawa diodami). Przy obsłudze przerwania będę odkładał rejestr SREG na stos. Poniżej poprawiony listing programu. .include "m8def.inc" ;wektory przerwan .org $000 rjmp reset ;***************************************...
Dzieki raz jeszcze ! - wlasnie testuje czy przerwanie jest wogole obslugiwane - ma zapalic led'a Dodano po 1 Niestety nic mi nie chce zadzialac - ale to dopiero moj drugi dzien z zupelnie nieznanym wczesnie uP. Prosze przeanalizowac te moje 'wypociny zamieszczone ponizej: #include <p16F690.inc> __config (_INTRC_OSC_NOCLKOUT & _WDT_OFF...
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
Ale o co konkretnie Ci chodzi ?? Wogole nie wiesz co robia instrukcje czy jak ? Co do programu to jest malo przejrzyscie napisany. Jesli to jest kurs dla poczatkujacych to proponuje poszukac innego. Sam patrzac na to cos z poczatku zglupialem i musialem sie wgapic zeby zrozumiec o co chodzi. Do meritum: Na poczatku sa sa dwie dyrektywy org ktore mowia...
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...
Witam. Jestem w trakcie pisania bootloadera po magistrali CAN dla STM32F103VE. Opieram się głównie na publikacji AN2557 zamieszczonej na stronie ST. Potrafię przesłać aplikację użytkownika po magistrali CAN do uC i zaprogramować pamięć Flash od wybranego adresu w górę. Na wstępnie odblokowuje pamięć Flash (FLASH_Unlock(); ) następnie podgrywam aplikację...
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...
Mam następujący problem: Nie wiem co dzieje się z różnego rodzaju skokami w symulatorze attiny26 w AVRStudio. Mianowicie przy procedurze na przykład: main: call proced rjmp main proced: inc r16 ret wyskakuje błąd, coś z wektorem stosu. Problem jest takze przy obsłudze przerwan. Bądźcie wyrozumiali, po porostu dopiero przerzucam się z 51 na AVR. Może...
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ą...
Podłączyłem port PD5 do masy przez rezystor 4,7. Do portu PD5 podłączony jest SW1. Niestety nadal procesor nie widzi zmiany na wejściu portu. Może coś z programem jest nie tak. Poniżej listing: .include "m8def.inc" ;wektory przerwan .org $000 rjmp reset ;***************************************... reset: ldir16,high(RAMEND)...
nie jestem specem w "c" ale wartosc wpisywana do rejestru licznika T1 ((to chyba ten ktory u Ciebie ciągle odlicza) - powinna być wpisywana odrazu po wejsciu do podprogramu obsługi przerwania a nie na jego koncu. (tym bardziej ze program wykonuje sie rozną liczbę cykil). pamietaj o tym , ze mikrokontroler ma stale adresy wektorów przerwan. Tego nie...
Witam. skopiowałem program do wyświetlania znaków na LED. Dodałem pare znaków. Wyświetlanie kolejnych znaków realizowana jest poprzez przerwanie od przepełnienia licznika T1. Efekt nie jest taki jaki powinien być na wyświetlaczu mam wciąż 1 wyświetlaną cyfrę. Nie wiem co jest nie tak? Poniżej przesyłem listing. Przeanalizujcie i powiedzcie co zmienić....
A dlaczego program zaczyna sie od 2000h ?? Masz jakis system uruchomieniowy z wlasnym BIOS-em ?? Jesli tak i program ladujesz do pamieci RAM i stamtad jest wykonywany to jesli nastapi przerwanie to procek skoczy do BIOS-a i stamtad dopiero skoczy pod odpowiedni adres. Jesli jest przesuniecie o 2000h to skoczy pod adres 200Bh (2000h + 0Bh) UPDATE: Wiec...
tak wyglada przykladowy startup dla LPC, w ktorym nie ma zadnych nadmiarowych rzeczy w zasadzie - samo minimum: /***************************************... * © 2008 Freddie Chopin * * file: startup.s * last update: 19.04.2008 * * processor: LPC2148 * compiler: ARM-ELF-GCC * * description:...
Pamiec programu i RAM moge sie na siebie nakladac gdyz sa uruchamiane innymi sygnalami. Pamiec programu sygnalem PSEN a pamiec danych RD. Do odczytu obu sluza inne instrukcje i wlasnie w zaleznosci ktorej uzyjesz dostaniesz sie do innego rodzaju pamieci, jesli nawet podasz ten sam adres. Zobacz co robia nastepujace instrukcje: movc A,(at)A+DPTR movx...
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...
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...
Zmieniasz wektory w rejestrze MCUCR, a odpowiednie bity są w rejestrze GICR. Więc table jest nie tam gdzie trzeba.
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...
Wlasnie to mialem okazje przetestowac. Z tego Co piszesz to znaczy ze niema obslugi przerwania. Sprawdz nazwe wektora, bo jak jest inna niz w bibliotece to jest to pomijane i nie generuje przerwania. Kompilator GCC tego nie sprawdza a nazwy tych przerwan sa rozne dla roznych typow prockow.
Witam! Mam dziwny problem i od paru godzin nie mogę znaleźć jego przyczyny. Mianowicie nie wiem dlaczego kontroler nie reaguje na zmianę stanu na wejściu PD2. Mam tam podpięty przycisk który ma włączać diodę podpiętą do PD6. Układ działa na 100% pod względem technicznym, ponieważ sprawdziłem go innym programem. Czuję że przyczyna jest gdzieś w napisanym...
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,...
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.
A włączyłeś w Keilu wektory przerwań? "Cofigure Flash Tool" zakładka "C51". Zaznacz "Interrupt vectors at adres".
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ć...
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...
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)...
jak wydaje sie człowiekowi ze powinno działac a nie działa to rózne mu przychodza mysli do głowy. Swoja droga w dalszym ciagu nie osiagnołem celu. Aby rs wygenerował przerwanie musze ustawic: w MCR3 -uaktywnienie OUT2 w IER odblokowanie przerwan (wysłac tam 00000001b) oraz odblokwowac przerwanie w kontorlerze PIC Coś jeszcze? Ramka danych, predkosci,...
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...
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...
w kodzie startowym procesora przerwania musza byc wlaczone. to po pierwsze. po drugie musi byc tam zlokalizowany prawidlowy wektor przerwania IRQ. to dwie rzeczy na poczatek. najprosciej bedzie naprawde jak znajdziesz w necie jakis dzialajacy przyklad z SPI i go przeanalizujesz/przerobisz. powodow niedzialania moze byc mnostwo. a linie SSEL przypnij...
Czy procedury obslugi przerwan karty graficznej nie znajduja sie w jej wlasnym biosie (VGA BIOS), do ktorego sama ustawia sobie wektory? W ktorym segmencie jest ten rom karty? C000 albo E000 tak? http://www.elpin.com/files/vgabios.pdf VGA BIOS Features Standard BIOS functions -- CGA/EGA/VGA functions 00h through 0Fh -- EGA/VGA functions 10h through...
A co na to symulacja programu? Taki program wgraj: .nolist .include "m32def.inc" .list ; ## START ########################################... .cseg ;=======================================... ;= WEKTORY PRZERWAŃ = ;=======================================... .org 0x0000 rjmp reset_vector ; po...
po prostu pod adresem pamieci w ktorym jest wektor przerwania(sprawdzisz w dokumentacji, pewnie jest to 0002 lub 0003h) zrob call do obslugii przerwania, wykonaj co masz wykonac i wroc komenda reti . Sprawdz czy nie musisz odblokowac flagi przerwan(Interrupt Enable) bo inaczej nic nie zadziala. Powodzenia
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.
Niestety po dodaniu tych ustawień nie wgrywa się nowy soft z karty. Bez tych ustawień udaje się wgrać lecz trzeba zresetować zasilanie. Co ciekawe, tylko jeden program udało mi się skompilować który działa po wgraniu, reszta nie chce. W linkerze ustawiam wartość IROM1 na 0x08002000 oraz zmniejszyłem rozmiar dostępnej pamięci z 0x00040000 na 0x0003E000...
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...
Mam wpisaną obsługę przerwań wektorów INT0_vect i INT0_vect, żadne przerwanie nie jest "puste" aby było ciekawiej to kod który podałem jest bardzo prosty i po dołączeniu bibliotek i funkcji obsługujących te wektory przerwań (nawet z "nop" tez tak się zachowuje. Nie mam więcej pomysłów stąd moje wołanie o pomoc:cry:
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 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...
Witam! Mam dokładnie taki sam problem jak kolega 12345adrian . Jakie jest wyjście z tej opresji? Pozdrawiam, Łukasz. P.S. Jak bedzie trzeba to podam kod żródłowy :D Dodano po 3 Oto kod źródłowy: .include "m128def.inc" ;wektory przerwan .org $0000 jmp reset .org $0024 jmp USART0_RXC ; USART0 RX Complete Handler .org $0028 jmp USART0_TXC ; USART0...
czestotliwosc przerwan wektory matlab priorytet przerwan
dioda selenowa przekierowywanie stron skuter elektryczny instalacja
Vaillant atmoMAG MAG – wymiana baterii R20 w starszym piecyku gazowym krok po kroku Skuter 2T po wypadku: spadek mocy, brak rozruchu elektrycznego – diagnoza i typowe usterki