c: hi-tech 9,80, interrupt asm
Miroslav Draxal
evik na volny.cz
Pondělí Březen 31 10:12:56 CEST 2014
Co používáte za překladač?
Nějak mi nedochází " goto 0x804 & 0x7FF"k čemu je to dobré?
to je přesně ta konstrukce, kterou bych očekával, jenže hi-tech to vyhodí
takhle.
:0 warning: segment "_vectors_text" (0-5) overlaps segment "reset_vec" (0-3)
l.obj: (1343) hexfile data at address 0x0 (0x56) overwritten with 0x80
(warning)
a po disis.. to vypadá takhle
1 0000 EF80 vectors GOTO 0x300
2 0002 F001 NOP
3 0004 0012 RETURN 0
4 0006 FFFF NOP
5 0008 FFFF NOP
6 000A FFFF NOP
7 000C FFFF NOP
8 000E FFFF NOP
9 0010 FFFF NOP
10 0012 FFFF NOP
11 0014 FFFF NOP
12 0016 FFFF NOP
13 0018 CFD8 interrupt_low MOVFF STATUS, 0x6B
14 001A F06B NOP
15 001C CFE8 MOVFF WREG, 0x6C
Prostě místo na adresu 0x08 to plácne na RESET vektor.
From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Hynek Sladky
Sent: Monday, March 31, 2014 7:24 AM
To: HW-news
Subject: Re: c: hi-tech 9,80, interrupt asm
Pro PIC16F182x pouzivam napr. tuto konstrukci:
static void vectors (void) @ 4 {
#asm
movlp 0x08
goto 0x804 & 0x7FF
#endasm
}
Ma to tak pouzite v aplikaci s bootloaderem pro premapovani interruptu.
Treba to pujde pouzit i pro PIC18...
Hynek Sladky
Dne 29.3.2014 20:49, Miroslav Draxal napsal(a):
Dobrý den, založil jsem nové vlákno, ale má návaznost na předchozí vlákno.
Využívám u PICe přerušení s vysokou prioritou pro TMR3. Ovšem kompiler po
provedení přerušení uklízí zbytečně moc registrů.
5940 0009FA CFEA F03B movff fsr0h,??_interrupt_high+3
5941 0009FE CFE1 F03C movff fsr1l,??_interrupt_high+4
5942 000A02 CFE2 F03D movff fsr1h,??_interrupt_high+5
5943 000A06 CFD9 F03E movff fsr2l,??_interrupt_high+6
5944 000A0A CFDA F03F movff fsr2h,??_interrupt_high+7
5945 000A0E CFF3 F040 movff prodl,??_interrupt_high+8
5946 000A12 CFF4 F041 movff prodh,??_interrupt_high+9
5947 000A16 CFF6 F042 movff tblptrl,??_interrupt_high+10
5948 000A1A CFF7 F043 movff tblptrh,??_interrupt_high+11
5949 000A1E CFF8 F044 movff tblptru,??_interrupt_high+12
5950 000A22 CFF5 F045 movff tablat,??_interrupt_high+13
V obsluze přerušení s registry nepracuji, tudíš jejich schovávání je
zbytečné. Úschova a obnova trvá dost dlouho. Rád bych si napsal komplet
obsluhu přerušení v asm(cca 10 řádků). Celý den nad tím sedím a nedostal
jsem se ke kloudným výsledkům.
a/dá se nějak v C podstrčit moje obsluha interuptu? (snad by to mělo jít
přes PSECT???)
or
b/dá se v C vytvořit funkce, která má začátek v ram pevně daný (uložit na
008h goto interruptME)
díky za případné nakopnutí Míra
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20140331/e1f58d62/attachment-0001.html>
Další informace o konferenci Hw-list