Port dimensions
Posted: Wed Sep 16, 2015 9:42 am
Is there a function/macro that I can use in order to determine a port's dimension i.e. is a it a 4,8,16 or 32 bit port?
The community of XMOS. The place to be when developing with XMOS technology.
https://www.xcore.com:443/
Code: Select all
((ID & 0xFF0000) >> 16)
Code: Select all
/* gpio ports */
#define XS1_PORT_32A 0x200000
#define XS1_PORT_16A 0x100000
#define XS1_PORT_16B 0x100100
#define XS1_PORT_8A 0x80000
#define XS1_PORT_8B 0x80100
#define XS1_PORT_8C 0x80200
#define XS1_PORT_8D 0x80300
#define XS1_PORT_4A 0x40000
#define XS1_PORT_4B 0x40100
#define XS1_PORT_4C 0x40200
#define XS1_PORT_4D 0x40300
#define XS1_PORT_4E 0x40400
#define XS1_PORT_4F 0x40500
#define XS1_PORT_1A 0x10200
#define XS1_PORT_1B 0x10000
#define XS1_PORT_1C 0x10100
#define XS1_PORT_1D 0x10300
#define XS1_PORT_1E 0x10600
#define XS1_PORT_1F 0x10400
#define XS1_PORT_1G 0x10500
#define XS1_PORT_1H 0x10700
#define XS1_PORT_1I 0x10a00
#define XS1_PORT_1J 0x10800
#define XS1_PORT_1K 0x10900
#define XS1_PORT_1L 0x10b00
#define XS1_PORT_1M 0x10c00
#define XS1_PORT_1N 0x10d00
#define XS1_PORT_1O 0x10e00
#define XS1_PORT_1P 0x10f00
Code: Select all
#include <xs1.h>
#include <stdio.h>
out port ports[5] = {XS1_PORT_1A, XS1_PORT_4E, XS1_PORT_8C, XS1_PORT_16B, XS1_PORT_32A};
int main(void){
port * unsafe p_ptr;
int width;
for (int i=0; i< 5; i++){
unsafe{
p_ptr = (port * unsafe)&ports[i];
width = (((int)*p_ptr & 0xff0000) >> 16);
}
printf("port width of ports[%d] = %d\n", i, width);
}
return 0;
}
Code: Select all
port width of ports[0] = 1
port width of ports[1] = 4
port width of ports[2] = 8
port width of ports[3] = 16
port width of ports[4] = 32