Cteni EEPROM u T89C51RD2

Jirka Mww jirka.mww na gmail.com
Pondělí Leden 20 21:51:27 CET 2014


Zatim to pořád funguje bez problemu. Ale ten text v návodu k SDCC kap.3.10.
je uzitecny.  Ted jsem si teprve uvedomil, ze v definici  preruseni se
precve pracuje
s deklaraci "using", která definuje registrovou banku. Samozrejme to tam
mam,
kazde preruseni ma svoji banku a banka 0 je pro hlavni program.
Zajimave je, ze v navodu se pise, ze to ma byt takto :
void timer_isr (void) __interrupt (1) __using (1)
a ja tam ty zavorky za interrupt a using nemam - bylo to takto ve stare
verzi,
ale prekladac zadnou chybu nehlasi.
Divam se do kodu v assembleru a zacinam tomu zase rozumet.
To přerušení od SW UARTu mám napsané v assembleru a oznacene jako
__naked . Prestoze tam mam i using 1 , tak to prepnuti registrove banky
ignoruje,
V assembleru tam nic neni, na rozdil od ostatnich preruseni.
Je to hloupe, ze prekladac akceptuje to using 1 a zaroven to naked.
Asi jsem na stope problemu. Zitra to zkusim spravit primo v tom assembleru,
tak
 ze ulozim pouzite registry a nebo prepnu banku sam.

Diky za pomoc, ozvu se zitra, jak to dopadlo.




Dne 20. ledna 2014 18:59 Jan Waclawek <konfera na efton.sk> napsal(a):

> Aha, ale to este stale moze znamenat, ze mate vacsinu toho povodneho
> programu, takze problem stale moze byt niekde inde v tom programe, nie?
>
> Popis preruseni je v manuali sdcc, kap. 3.10; sposob pouzitia registrov v
> kap. 3.10.2. V skratke, ak nepredpisete zmenu registrovej banky (co sa
> robi zapisom do dvoch na to urcenych bitov v PSW), tak sa prerusenie sa
> vykonava v tej istej registrovej banke (nulovej), pricom vsak prekladac
> ulozi vsetky pouzivane registre na stack.
>
> wek
>
>
> ----- Original Message ---------------
> >Ten kód je jednoduchý, v cyklu se ètou byty s EEPROM a posílají v HEX na
> >terminál. Když chyba nastane,
> >posílají se samé nuly, když udìlám HW reset, ( není potøeba vypnutí ) ,
> tak
> >se data zase èotu dobøe.
> >Intervaly mezi "dobøe " a "špatnì" jsou v øádu jednotek hodin.
> >Teï jsem udìlal brutální úpravu.  EECON nastavuji na tvrdo pøi ètení na
> >0x02 a pak zpìt na 0xFC, tak jak je po resetu.
> >Taky jsem zakázal bìhem ètecí procedury všechna pøerušení. Jede to asi pùl
> >hodiny bez problémù, ale to už tady bylo.
> >
> >Díval jsem se do assembleru ( produktu SDCC) a není mi jasné, jakým
> >zpùsobem se pøiøazují registrové banky pro pøerušovací programy.
> >Už jsem to zapomnìl od doby, kdy jsem psal v assembleru.  Pøerušovací
> >rutiny ukládají na stack jen ACC, PSW a datapointer.
> >Pokud  výše popsaná úprava nepomùže, budu to muset nastudovat.  Ta ètecí
> >rutina používá R6 a R7 a pøerušovaví rutiny taky.
> >Ale asi to je jiná banka, pokud si matnì pamatuju.
> >
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>



-- 
Zdravi
Jirka OK1MWW
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20140120/3a301ecf/attachment.html>


Další informace o konferenci Hw-list