This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

ASM RPT



Hi,


For fast averaging on a Delfino I'm using the repeated ADD instruction in Assembly,

RPT #249 \n|| ADD ACC,*XAR4++

but is it possible to increment XAR4 with more then just one without losing the RPT instruction?

  • Hi,

    This made me remember old days, this is the line my predecessors used to use:

    asm(" RPT #49 \n || ADD ACC,*XAR2++");      // summarize all values (50)

    but is it possible to increment XAR4 with more then just one without losing the RPT instruction?

    Do you mean to say *XAR4+x , where x is the value more than one?

    Regards,

    Gautam

  • Hi Gautam,

    Haha yes I just ran into another post also using this for averaging ADC results.

    Indeed, I would like to increment the address register XAR4 with more than one because of a data structure with 2 address offsets. But I don't want to lose the "RPT #n ||"  because of its speed. Is this possible in any way?

    asm(" RPT #49 \n || ADD ACC,*XAR2+2");


    Best regards,

    Tjarco

  • Tjarco, logically speaking this implementation should work if its a 32bit controller. I forgot to ask you; which mcu are you using?

    Check this out:

    Regards,

    Gautam

  • Hi Gautam,

    Thanks for your reply. I'm using a F28334.

    Well, according to your table the incrementation could only be 1d or 2d, depending on the 16 or 32 bit operation.

    But thats nasty because I read in values using DMA from a 32bit Xintf and stored to RAM.The upper 16 bits and the lower 16 bits are read simultaneous but are from a different source and have no relation. Therefore I would like to "skip" 16bit registers by incrementing with two, instead of one. But thats only possible in 32bit operation mode, as far as I can tell, but that I'm adding all data.

    Best regards,

    Tjarco