winIDEA SDK
test_read_write_sfr.py
1# This script is licensed under BSD License, see file LICENSE.txt.
2#
3# (c) TASKING Germany GmbH, 2023
4
5import isystem.connect as ic
6
7
8winidea_id = ''
9
10
11def test_readWriteSFR():
12 connMgr = ic.ConnectionMgr()
13 connMgr.connect(ic.CConnectionConfig().instanceId(winidea_id))
14
15 dataCtrl2 = ic.CDataController2(connMgr)
16
17 print("Determining SFR handle (first SFR register)...")
18 cpuSfrs = dataCtrl2.getCPUSFRs(ic.IConnectEclipse.gcsSFRs)
19 try:
20 sfrs = cpuSfrs.SFRs()
21 sfrGroup = sfrs.at(0)
22 sfrsInGroup = sfrGroup.SFRs()
23 sfr = sfrsInGroup.at(0)
24 handle = sfr.Handle()
25
26 sType = ic.SType()
27 sType.m_byType = ic.SType.tUnsigned
28 sType.m_byBitSize = 32
29
30 print(f"Reading '{sfr.Name()}'...")
31 sfrData = dataCtrl2.readSFR(handle, sType)
32 assert sfrData.isError() is False
33 value = sfrData.getInt()
34 print(f"\tValue: {value}")
35 print(f"\tBit size: {sfrData.getBitSize()}")
36
37 print(f"Writing value '42' to {sfr.Name()} with read-back option...")
38 cVal = ic.CValueType(sType, 42)
39 val = sfrData = dataCtrl2.writeSFR(ic.IConnectEclipse.svWriteThenRead,
40 handle,
41 cVal)
42 assert val.isError() is False
43 print(f"\tRead-back value: {val.getResult()}")
44
45 print(f"Revert back to original value: {value}")
46 cVal = ic.CValueType(sType, value)
47 dataCtrl2.writeSFR(0, handle, cVal)
48 finally:
49 dataCtrl2.release(cpuSfrs)
50
51
52if __name__ == "__main__":
53 test_readWriteSFR()