[SOLVED] Ozone v3.10g Registers->Peripherals Handling of Write One to Clear bits

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • [SOLVED] Ozone v3.10g Registers->Peripherals Handling of Write One to Clear bits

    Hi,

    I am in the process of creating an SVD file for a ADuCM350 processor.

    One of the registers contains 2 bits that are sticky, they keep their value unless a one is written to them to clear.

    Here is the register.



    ... and the SVD description I have made using CMSIS Schema version 1.1



    So when viewing the register in Peripherals->Register if one of these sticky bits are set and i attempt to write a one to the bit Ozone sees that i made no change to the value and Ozone does not write to the target :(
    So if i want to change this value i need to explicitly write to the register using the Console.

    I was hoping that using the <modifiedWriteValues> element in the SVD would help but maybe i have misinterpreted the meaning of this element in the SVD documentation.

    This is particularly thorny because this register has two of these "sticky" flags and clearing one should not automatically clear the other if they are both set.

    e.g. if this register contains 0x55 then selecting the VCCMPSMFLG value and writing one should write a 1 to that bit only (iow writing 0x55 would also clear the DVDDPSMFLG, prefer to write 0x51 in this example)




    So one potential way to do this would be to write the appropriate value to any other bits that have <modifiedWriteValues> element in the SVD?

    If you look through the specification for this device there are other registers with more than one field with this same behavior.

    Another way this could be handled is via bitbanding but its not clear to me how to describe the necessary addresses to Ozone given the current state of the SVD schema.

    The following app note describes bitbanding for Cortex-M3

    infocenter.arm.com/help/topic/….dai0179b/AppsNote179.pdf

    My work around, if i am debugging and want to fiddle with a peripheral register with (W1C) fields, is to use the console and make the necessary changes to the register instead of using the more convenient Registers window.

    --Duane.
  • Hello Duane,

    Thank you for your inquiry.
    Could you provide the svd file for reference so we can reproduce the reported behaviour?

    Best regards,
    Nino
    Please read the forum rules before posting.

    Keep in mind, this is *not* a support forum.
    Our engineers will try to answer your questions between their projects if possible but this can be delayed by longer periods of time.
    Should you be entitled to support you can contact us via our support system: segger.com/ticket/

    Or you can contact us via e-mail.
  • Hello,

    This should be fixed in the latest Ozone beta. Could you give it a try and report back if it is working as expected?

    Best regards,
    Nino
    Please read the forum rules before posting.

    Keep in mind, this is *not* a support forum.
    Our engineers will try to answer your questions between their projects if possible but this can be delayed by longer periods of time.
    Should you be entitled to support you can contact us via our support system: segger.com/ticket/

    Or you can contact us via e-mail.