µTasker Forum
µTasker Forum => NXPTM M522XX, KINETIS and i.MX RT => Topic started by: fabius on May 15, 2014, 08:09:40 AM
-
Hello,
in my uTasker version (1.4) the preprocessor macro _CONFIG_DRIVE_PORT_OUTPUT_VALUE_FAST_HIGH uses the same bit shifting routine as in _CONFIG_DRIVE_PORT_OUTPUT_VALUE_FAST_LOW function to align the adress bits for the PORTx_GPCHR register. (kinetis.h)
PORT##ref##_GPCLR = (((pins) << 16) | (chars | PORT_MUX_GPIO)) is used in both functions.
Is the function correct or is there a defect in my version ?
I expected a function like PORTx_GPCHR = (((pins) & 0xffff0000) | chars | PORT_MUX_GPIO) there.
Regards
Fabian
-
Fabian
I think that you are using an older version where there was an error in this macro.
There was a correction:
27.11.2013 Correct _CONFIG_DRIVE_PORT_OUTPUT_VALUE_FAST_HIGH() macro {39}
and the two macros now are like this:
#define _CONFIG_DRIVE_PORT_OUTPUT_VALUE_FAST_LOW(ref, pins, value, chars) SIM_SCGC5 |= SIM_SCGC5_PORT##ref; PORT##ref##_GPCLR = (((pins) << 16) | (chars | PORT_MUX_GPIO)); GPIO##ref##_PDOR = ((GPIO##ref##_PDOR & ~((pins) & 0x0000ffff)) | ((value) & 0x0000ffff)); GPIO##ref##_PDDR |= ((pins) & 0x0000ffff); _SIM_PORT_CHANGE // {12}
#define _CONFIG_DRIVE_PORT_OUTPUT_VALUE_FAST_HIGH(ref, pins, value, chars) SIM_SCGC5 |= SIM_SCGC5_PORT##ref; PORT##ref##_GPCHR = (((pins) & 0xffff0000) | (chars | PORT_MUX_GPIO)); GPIO##ref##_PDOR = ((GPIO##ref##_PDOR & ~((pins) & 0xffff0000)) | ((value) & 0xffff0000)); GPIO##ref##_PDDR |= ((pins) & 0xffff0000); _SIM_PORT_CHANGE // {12}{39}
Regards
Mark