ADSP21161: Fehler mit dm(i0,m0);

Hallo Gemeinde!

Ich verwende eine Zielhardware mit einem ADSP21161N Rev.1.2. Bei dem Einsatz folgender beispielhafter Loop Filter_12_Left: r0 = dm(data_in_lesezeiger); i1 = r0;

r0 = dm(GP2A); r0 = BSET r0 BY 18; i2 = r0;

f1 = dm(gainvalue_in); r3 = 0x0FFF;

m2 = 0x01;

lcntr = (SIZE/2), do _filt_12_l_1 until lce; r0 = dm(i1, 1); r0 = FEXT r0 BY 3:13(SE); f0 = float r0; f0 = f0 * f1; r0 = fix f0; r0 = CLIP r0 BY r3; _filt_12_l_1: dm(i2,m2) = r0;

kommt es beim Befehl r0 = dm(i1, 1); zu einem Fehler. Nach der Ausführung des Befehls ist das i1-Register nicht um 0x01 erhöht, sondern um 0x1F runtergezählt. Tausche ich das Register beispielsweise mit i2 ist alles ok. Der Fehler tritt scheinbar nur in größeren Programmen auf, dann aber auch mehrfach :-( Kennt jemand das Problem und hat -noch besser- eine Lösung??

Gruß Karsten

Reply to
Karsten
Loading thread data ...

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.