c: hi-tech 9,80, interrupt asm

Andrej Jancura aj.hwlist na gmail.com
Pondělí Březen 31 22:49:38 CEST 2014


Pozrite, co som Vam vedel a mohol poradit, to som urobil. Netusim ako Vam
inak pomoct. Zial je to tak a je mi to luto, ze sa problem nepodarilo
vyriesit. Este by som skusil napisat na support a spytal sa tam.

A.

2014-03-31 22:42 GMT+02:00 Miroslav Draxal <evik na volny.cz>:

>
>
> Myslim si, ze operator @ funguje az vo verzii xc8, preto Vam to nejde.
>
> Ne toto funguje už v Hi-tech. Ovšem do adresy 0x10 nějak nekorektně. Buďto
> je to chyba nebo úmysl, který jsem nepochopil.
>
> Jaksi jsem přišel na jeden dosti závažný problém. Pokud bych napsal
> obsluhu přerušení "nesystémově" potom by nejspíš následně nechodilo ICD3.
> Což by při odlaďování byl problém. Opět tedy na začátku. Nemůže to být nic
> nesystémové.
>
>
>
> m.
>
>
>
>
>
> *From:* Hw-list [mailto:hw-list-bounces na list.hw.cz] *On Behalf Of *Andrej
> Jancura
> *Sent:* Monday, March 31, 2014 10:21 PM
>
> *To:* HW-news
> *Subject:* Re: c: hi-tech 9,80, interrupt asm
>
>
>
> Dobry vecer,
>
> skusim to komentovat vo Vasej reakcii, teda v texte a na konci.
>
> A.
>
>
>
> 2014-03-31 21:27 GMT+02:00 Miroslav Draxal <evik na volny.cz>:
>
> Ne neuzavřeli. Jenom pátrám dál. O tom bootloaderovi v examles vím, koukal
> jsem. Problém je v tom, že tohle přesouvání je všechno "systémové". Já chci
> nesystémově podstrčit kompilátoru mnou napsanou obsluhu přerušení.
> Kompiler si udělá "systémově" začátek rutiny přerušení tj, uklidí registry,
> pak předá řízení do
>
> void interrupt low_priority interrupt_low (void)
>
> a po návratu z funkce přerušení zase systémově obnoví registry. Těch
> registrů ukládá a obnovuje cca 13, což je pro mě moc. V přerušení používám
> jenom W reg a potřebuji "fofr". Nemusím ukládat registry.
>
> Takže řešení je:
>
> 1/ buďto nějak systémově přesvědčit kompilátor, aby místo své obsluhy
> přerušení použil mou
>
> 2/ nebo nesystémově použít
>
> Void MeInterrupt(void)@0x08
>
>
>
> Pokud použuji 2/ v hi-tech 9,80 tak to místo na adresu 0x08 přeloží na
> 0x00, což je chyba
>
> Pokud použiji 2/ v xc8, tak se to přeloží OK
>
>
>
> Myslim si, ze operator @ funguje az vo verzii xc8, preto Vam to nejde.
>
>
>
>
>
> Problém je, že 9,80 mám legálně ve verzi PRO, a pokud použiji XC8, tak tam
> jedu ve verzi Lite a už se do pice nevejdu. Ten projekt musí být i nadále
> živý, čili nemohu ho jednorázově přeložit ve zkušební verzi XC8  PRO.
>
>
>
> A na upgrade na XC8 ste neuvazoval?  :)
>
>
>
>
>
> Dnes mě napadlo, že bych využil toho, že funguje
>
> Void MeReset (void)@0x00
>
> #asm
>
> Goto _picInit
>
> Nop
>
> Nop
>
> Goto _MeHigInterrupt
>
> #endasm
>
>
>
> Což funguje, vše se uloží jak má, ale problém je, že zas nevím jak zapsat
> to _picInit. Je to inicializační rutina procesoru, kde se nuluje RAM atd.
> To zase dodá kompiler. Adresa počátku rutiny se mění po rekompilaci
> (přidání dalšího kódu). Nevím jak se na ten pic Init odkázat, aby tomu
> kompiler rozuměl.
>
>
>
> M.
>
>
>
>
>
> Pozrite, myslim, ze zaklad je ten, ze v zdrojaku nenapisete void interrupt
> my_isr() {}. Ked napisete tento riadok, tak prekladac automaticky generuje
> celu rutinu ukladania a obnovy registrov v preruseni, aj ked je prazdna.
> Pak by som sa pozrel ako to generuje ten mnou zmienovany startup . as, ja
> mam toto:
>
> --chip=16f690 -M -P -N31 \
> --warn=0 \
> --mode=pro \
> --opt=all,+asm,+asmfile,9 \
> --addrqual=ignore \
> --runtime=default,+clear,+init,+keep,+osccal,+resetbits,-download,-stackcall,+stackwarn,+clib
> \
> --summary=default,-psect,-class,+mem,-hex \
> --double=24 \
> --float=24 \
> -G \
> --asmlist \
> --output=default,-inhx032 \
>
> rx_tx_debug.c
>
> A pozrite si ako je rieseny ten startup a vas main v C. Potom Vam neostane
> uz nic ine, iba sa vrhnut do toho asembleru a manualu a naprogramovat si tu
> obsluhu sam. Ako som uz pisal, princip som pochopil na 90%, ale prakticky
> mi to nikdy moc nechodilo. Ine riesenie v tych starych verziach kompilatora
> nie je. Snad len to, ze si pozrite este kapitolu o uzivatelskom startup
> file a jeho prilinkovani.
>
> Viacej Vam k tomu naozaj neviem poradit.
>
> A.
>
> _______________________________________________
> 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/20140331/bbcbd4ff/attachment.html>


Další informace o konferenci Hw-list