[elektro] PIC18 C + asm
Zoltán Balla
sdrlab at yandex.ru
Tue Apr 8 10:42:39 CEST 2014
Szia!
igen, én is pontosan ezt láttam egyetlen megoldásként, amiben még némi
bizodalmam volt. Természetesen mivel alapvetően a microchip usb
stac-jére épült a program, így van benne C-s IT rutin is bőven, és ahogy
mondod, a fordító azzal kezdi az IT rutint, hogy fsr-eken keresztül
mentegeti a menthetőt )
Ugyan ezt megelőzően a rutinra való ugrás előtt lenne lehetőség a
regiszterek mentésére, de nekem ez már egyáltalán nem tetszett :( Túl
bonyolult és "koszos" megoldásnak tűnik.
Szerencsére hg12345 C-s trükkje segítségével ha nem is tökéletesen, de
megoldható lett -ben is a sebesség problémám, így ki is irtottam a
programból az összes asm betétet. Jobb a békesség...
Zoli
2014.04.07. 23:59 keltezéssel, flaist írta:
> Szia!
> Én is így használtam. Nem egyszerű a dolog.
>
> A C18 az FSR1 és FSR2 regisztert használja C stack-nek.
> (ez nem azonos a szubrutin hívás stack-kel)
>
> A kérdés, használsz-e C18-ban íródott IT rutint.
>
> Ha nem, akkor egyszerűbb a helyzet, csak el kell mentened a FSR1 FSR2
> regiszter az ASM modulokban.
> (az IT rutinokban természetesen mindent amit használsz)
>
> Ha van C18 IT rutin, akkor bonyolultabb a dolog, mert az IT rutin is az FSR1
> pointerrel mutatott területre menti a C-s változókat (REGBx, PRODx, ...
> stb).
> (disasm listben meg lehet nézni)
> És ha az ASM-ben is használod FSR1-2-t, akkor véletlen területre is menthet.
> Én ezért, megfejeltem az C18 IT rutint egy ASM résszel, ami mindig menti /
> beállítja / visszaállítja az FSR1 és FSR2-t egy szabad területre.
>
> FI.
>
>
>
>
> -----Original Message-----
> From: elektro-bounces at tesla.hu [mailto:elektro-bounces at tesla.hu] On Behalf
> Of Zoltán Balla
> Sent: Friday, April 04, 2014 5:12 PM
> To: elektro at tesla.hu
> Subject: [elektro] PIC18 C + asm
>
> Sziasztok
>
> Elméleti jellegű kérdésem lenne.
> Van egy C-s PIC-es programom, melyben a sebességbeli optimalizálás érdekében
> asm betéteket használok. Alapvetően indirekt címzés lehetősége miatt
> használom ezeket az asm betéteket. FSR0 és 1-et érinti ez általában.
> A problémám az, mi van akkor ha pl beüt egy megszakítás, amelyben a fordító
> elegánsan szintén használni szeretné ezeket a regisztereket ?!
> Elmentené őket előzőleg, s a megszakítási rutin végén visszaállítja ?
> Mi van akkor, ha még csak megszakításról sem beszélünk, egyszerűen csak
> előzőleg használja valamelyiket, majd én "belerondítok" az asm betétemmel,
> és amikor folytatná, már rég nem az van benne, amivel dolgoznia kéne ?! Hogy
> kellene ezt szerintetek korrektül megoldani ?
>
> Zoli
>
> -----------------------------------------
> elektro[-flame|-etc]
>
> -----------------------------------------
> elektro[-flame|-etc]
>
>
More information about the Elektro
mailing list