Support

If you have a problem or need to report a bug please email : support@dsprobotics.com

There are 3 sections to this support area:

DOWNLOADS: access to product manuals, support files and drivers

HELP & INFORMATION: tutorials and example files for learning or finding pre-made modules for your projects

USER FORUMS: meet with other users and exchange ideas, you can also get help and assistance here

NEW REGISTRATIONS - please contact us if you wish to register on the forum

Timer Bug

For general discussion related FlowStone

Re: Timer Bug

Postby HughBanton » Tue Aug 10, 2021 9:49 am

In this instance, in the line "levelOut = 0 + (levelIn > threshold & 1);", you don't need the '0'.

Declared streamins, streamouts and floats are all treated as variables, and are initialised to 0 unless you specify otherwise, as you have done here with "float _F_1=1".

In ASM watch out that you don't send a previously uninitialised xmm register to a streamout. It's OK here because of "movaps xmm0,levelIn;", which ensures that xmm0 always gets a value, 0 or otherise, before the cmmps comparison.

So:

streamin levelIn; //<------ DSP code
streamin threshold;
streamout levelOut;
levelOut = levelIn > threshold & 1;

streamin levelIn, threshold; //<------ ASM converted
streamout levelOut;
float _F_1=1;
movaps xmm0,levelIn;
cmpps xmm0,threshold,6;
andps xmm0,_F_1;
movaps levelOut,xmm0;

Every prune helps!

H
User avatar
HughBanton
 
Posts: 265
Joined: Sat Apr 12, 2008 3:10 pm
Location: Evesham, Worcestershire

Previous

Return to General

Who is online

Users browsing this forum: No registered users and 36 guests