ADSP21161: Fehler mit dm(i0,m0);

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From German to

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

Site Timeline