Re: MCU 89C4051 a používání přerušení

Martin Záruba swz na volny.cz
Sobota Únor 18 13:34:03 CET 2012


Já myslím, že v tom to nebude. Přerušení jdou přece na pevné adresy na
začátku programu. Pokud je obslužná rutina až v druhém 2kB bloku, je pouze
třeba použít skok jmp místo ajmp, ale to pozná překladač. Myslím, že v
rutině přerušení máte nějakou chybu. Buď neukládáte vše, co je použité v
rutině přerušení i v hlavním programu současně nebo to korektně neobnovíte
nebo povolíte přerušení ještě v obslužné rutině a vznikne další, čímž
nakonec přeteče zásobník. Jiné důvody mě nenapadají.

Martin Záruba
----- Original Message ----- 
From: "Jaroslav Rychtařík" <jardarik na gmail.com>
To: "HW-news" <hw-list na list.hw.cz>
Sent: Saturday, February 18, 2012 1:09 PM
Subject: MCU 89C4051 a používání přerušení


Zdravím.

Vrátil jsem se k jednomu starému projektu s 89c2051, abych si ho trochu
vylepšil. Program se vyšplhal přes 2,5 kb proto jsem vyměnil švába za
89c4051 se 4kb. Používám přerušení od časovače a ser. portu. Chová se to
divně, respektive při vyvolání přerušení od seriového portu dojde k
rozsypání celého programu. Pomocí aktivity led, která překlápí  jednou
za celou smyčku programu vidím nějaké problémy, kdy LED změní rychlost
blikání nebo bliká náhodně.

Někde jsem četl, že s přerušením lze kvůli omezené délce skoku programu,
využívat pouze programy do 2048b je to pravda ?

Lze to nějak obejít? Například za cenu, že se sem tam přerušení nevyvolá?

Díky. Jarda R.




_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz
Hw-list na list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list



Další informace o konferenci Hw-list