Hi,
Not sure if this question should be under RX forums or here. I'm seeing errors in the e2 studio IDE regarding assignment of some IO port pins, but not all. For example:
If i write:
PORT6.PDR.BIT.B2 = 1;
this is deemed OK by the editor / builder, but if i write:
PORT6.PDR.BIT.B4 = 1;
i get a syntax error. I am only "allowed", in this case, to use something like:
PORT6.PDR.BYTE |= 0x10;
ie: address it as a whole byte, not a bit field.
Funny thing is, the processor i'm using (RX630 - R5F5630A) does have these pins. I've looked at the iodefine.h for the project and it also has B4 defined, same as B2:
...
struct st_port6 { union { unsigned char BYTE; struct { unsigned char B7:1; unsigned char B6:1; unsigned char B5:1; unsigned char B4:1; unsigned char B3:1; unsigned char B2:1; unsigned char B1:1; unsigned char B0:1; } BIT; } PDR;
It seems to happen randomly, for other ports as well or other bit fields sometimes.
Does anyone have any idea of what might be causing this?
Thanks for any input.
I noticed that when i changed from the default iodefine.h file obtained from one of the code examples for an RX630 starter kit, and replaced it with one generated by the PDG2 generated iodefine, targeted to my board specifically, that some of the IO port syntax errors that used to occur went away. But even with the new iodefine, i am still getting the same behavior.
There appears to be something wrong with the way the IDE / builder / tools interprets them or with the iodefine itself. At least, that's my guess.
Is there an iodefine file which is guaranteed to work with my RX630? If so, where can i download it from? I would like to rebuild my project with a known good iodefine and see if that changes anything.
Hi Michael,
Thank you very much for the new iodefine file. I closed e2 studio and saved the old iodefine under a different name, then put the downloaded iodefine into my project directory, and started e2 studio again.
Once i open the project to the same file as before, I get the same exact problem with the exact same assignments, so at first glance, nothing seems to have changed:
produces the same problem under the editor, being identified as a syntax error, but when i build, the compiler says:
E0520134: Expected a field name ... C/C++ Problem
Which was the same compiler error i've been getting with other similar assignment statements. It doesn't just happen with single bit fields, it also happens with larger fields, depending on...i don't know what. Don't know where to go from here. Any ideas?
Thanks again.
To me this looks like contamination by another header file that's redefining one of the parts of the expression PORT6.PDR.BIT.B4.
Can you run the compiler command in a command prompt, except change the option that tells CCRX.EXE to compile the source file containing that statement to an object file
-output=obj
to the option that tells CCRX.EXE to stop after preprocessing
-output=src
...or move #include "iodefine.h" above your local #includes.