Wrong datatype of mask form bitfield set
Python version: 3.13.0 Command line to execute: handleReg.register_1_bf.reg1_arr1 = 1
{
"name": "register_1",
"description": "Register 1",
"bitfields": [
{
"name": "Reg1_arr1",
"description": "Register 1, Array 1",
"reset": 0,
"width": 24,
"lsb": 0,
"access": "rw",
"hardware": "o"
},
{
"name": "Reg1_arr2",
"description": "Register 1, Array 2",
"reset": 0,
"width": 8,
"lsb": 24,
"access": "rw",
"hardware": "o"
}
]
}
}
Problem in the regs.py file: the setter of a bitfield does not work. It seems that the "~" operator generates the wrong datatype. This bitinversion creates a signed int and the mask needs a unsigned.
_@reg1_arr1.setter
def reg1_arr1(self, val):
rdata = self._rmap._if.read(self._rmap.REGISTER_1_ADDR)
rdata = rdata & (~(self._rmap.REGISTER_1_REG1_ARR1_MSK << self._rmap.REGISTER_1_REG1_ARR1_POS))_
Quick fix:
_@reg1_arr1.setter
def reg1_arr1(self, val):
rdata = self._rmap._if.read(self._rmap.REGISTER_1_ADDR)
rdata = rdata & (~(self._rmap.REGISTER_1_REG1_ARR1_MSK << self._rmap.REGISTER_1_REG1_ARR1_POS) & 0xffffffff)_
this generates again a unsigned
Edited by Janik Witzig