zase C -Hi-Tech

Ondřej Kozumplík kozond-konf na seznam.cz
Pondělí Únor 4 16:30:59 CET 2013


IMHO u procesoru, kteryma spolecny vektor preruseni pro defakto vsechny
zdroje a je nutne kontrolovat flagy, neni ta rychlost az zas tak to .... :)
ja to mam debordelizovane tim zpusobem, co tu byl uz popsan - v ISR fci
volani funkce obsluhy preruseni danou periferii. Pak samozrejme jeste
vyvstavaji otazky jesli kontrolu flagu dane periferie dat do hlavni ISR
nebo schovat do funkci jednotlivych periferii. Opet to bude mit dopad na
rychlost vykonani preruseni, zalezi jak moc uhledne to kdo chce a kolik je
ochoten obetovat strojoveho casu :)

Ataman
http://www.hysteria-metal.cz


2013/2/4 Milan B. <milan na bastl.sk>

>  On 2/4/2013 3:15 PM, Miroslav Draxal wrote:
>
>  Dobrý den,****
>
> Snažím se deborelizovat projekt, mám ale problém s přerušením. Jak docílit
> toho, abych všechen kód od SPI v jednom souboru včetně přerušení. To stejné
> např. pro TMR2. Pokud to napíši takhle (viz dole) tak to přeloží za sebou,
> ale jako dvě low přerušení, a na to druhé se nedostane. RETFIE je již za
> přerušením od SPI. Koukám do dokumentace, a nějak nemohu najít co s tím.
> Jde to vůbec? Děkuji ve spolek za reakce. Míra****
>
> ** **
>
>
> Snad som pochopil, o co ide...
>
> Nepoznam dany prekladac, tak naznacim vseobecnu cestu:
>
> Kedze su to dve samostatne funkcie, tak su kompletne aj s prologom, a
> epilogom (vratane navratu), tak jednoduche riesenie nie je, kompilator - a
> uz vobec nie linker - nema ako vediet, ze ma nejaky kusok funkcie vynechat.
>
> Taketo "zliepanie" funkcii sa da riesit (ak to prekladac podporuje)  cez
> "naked" funkcie. Treba sa pozriet, ci prekladac podporuje atribut funkcie
> "naked" a ake ma obmedzenia. "naked" funkcia nema prolog a epilog.
>
> Potom je treba zabezpecit, aby linker vsetky taketo "funkcie" zlinkoval do
> jednej sekcie (atribut "section" alebo tak nejako) v definovanom poradi -
> aby boli funkcie za sebou (a vykonavanie prechadzalo z jednej do druhej)
>
> Potom treba na zaciatok takejto sekcie natlacit vstupny bod pre prerusenie
> a prolog - ulozenie registrov a na koniec takejto sekcie epilog - obnovenie
> registrov a navrat z prerusenia - oboje najlepsie v ASM (dalsie dve male
> "naked" funkcie)
>
> Myslim, ze akekolvek riesenie je lepsie ako snaha pozliepat viac funkcii
> do jednej. Napriklad ekvivalentnym riesenim (zlinkuje sa samo) moze byt
> dispecerska tabulka, do ktorej sa pri linkovani funkcii prida smernik na
> funkciu a samotna prerusovacia rutina iba prebehne tuto tabulku a zavola
> vsetky funkcie.
>
> -m-
>
>  SPI.c****
>
> void interrupt low_priority SPIinterrupt (void)****
>
> {****
>
>     if (SSPIE && SSPIF)****
>
>     {****
>
>     ......****
>
>     }****
>
> }****
>
> ** **
>
> a****
>
> ** **
>
> TMR2.c****
>
> void interrupt low_priority TMR2interrupt (void)****
>
> {****
>
>     if (TMR2IE && TMR2IF)****
>
>     {****
>
>      ....****
>
>     }****
>
> }****
>
> --------------------------přeloží to takhle****
>
> 0x0016 - low interrupt vektor****
>
> uloží reg****
>
> SPIinterrupt****
>
> Načte reg****
>
> 0x0090RETFIE<<<<<<<<<<<<<<****
>
> 0x0091uloží reg****
>
> TMR2interrupt****
>
> Načte reg****
>
> 0x0150RETFIE<<<<<<<<<<<<<<<****
>
> ** **
>
>
> __________ Informace od ESET NOD32 Antivirus, verze databaze 7968
> (20130204) __________
>
> Tuto zpravu proveril ESET NOD32 Antivirus.
>
> http://www.eset.cz
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.czHw-list na list.hw.czhttp://list.hw.cz/mailman/listinfo/hw-list
>
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
>
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20130204/4daae592/attachment.htm>


Další informace o konferenci Hw-list