??? ???? ????
Login |
  • Why Register?
  • Download development tools
  • Create and track support tickets
  • Subscribe to resource updates
  • Access latest developer news
Register

XK-1 Tutorial (Simple)

Development Tools:

XK-1
Version 9.9
Publication Date: 2009/11/05
Copyright © 2009 XMOS Ltd. All Rights Reserved.

XK-1 (9.9)
2/12
1

xk1 XMOS XS1-L1
XS1-L1 LEDSPI JTAG
20 XK-1 16 IDC
XK-1
XS1-L1 XCore
400 MIPS 64K
XS1-L1 ( 6)
XMOS XC C
XMOS XC C

XK-1 XC
C
· LED
· LED
· LED
· LED
XC

9.9 XMOS
XMOS
www.xmos.com

XK-1 (9.9)
3/12
2
LEDport<:
XC XK-1 LED
XK-1 LED XK-1 LED
# include <xs1.h>
out port led = XS1_PORT_4F ;
int main () {
led <: 0x1;
while (1)
;
return 0;
}
led xs1.h
XS1_PORT_4F4F (4 ) (F) XK-1 4F
LEDLED
XC

main
led <: 0x1;
<: (0b00000001) (led)
LED LED led
LED
LED
out

XK-1 (XMOS )

LED
LED (0xf) LED

3 LED timer :>
XC LED
www.xmos.com

XK-1 (9.9)
4/12
100 MHz


tmr t:
timer tmr;
int t;
tmr :> t;

t += FLASH_PERIOD ;
tmr when timerafter (t) :> void;
XC
void
LED LED

# include <platform .h>
# define FLASH_PERIOD 20000000
// 200 milliseconds
out port led = XS1_PORT_4F ;
int main(void) {
timer tmr;
int t;
tmr :> t;
while (1) {
led <: 0x1;
t += FLASH_PERIOD ;
tmr when timerafter (t) :> void;
led
<: 0x0;
t += FLASH_PERIOD ;
tmr when timerafter (t) :> void;
}
return 0;
}
XK-1 LED

LED

www.xmos.com

XK-1 (9.9)
5/12
4
LED select
XC select XK-1 LED

select
case break
return
select timeout
select {
case tmrF when timerafter ( timeF ) :> void :
/* respond to timeout ,
* switch LED bezheen on and off */
...
break ;
case tmrC when timerafter ( timeC ) :> void :
/* respond to timeout ,
* change which LED is flashing */
...
break ;
}
select LED
# include <xs1.h>
# define FLASH_PERIOD 10000000
//100 ms
# define CYCLE_PERIOD 50000000
//500 ms
out port led = XS1_PORT_4F ;
int main (void) {
unsigned ledOn = 1;
unsigned ledVal = 1;
timer tmrF , tmrC ;
unsigned timeF , timeC ;
tmrF :> timeF;
tmrC :> timeC;
while (1) {
select {
case tmrF when timerafter ( timeF ) :> void :
ledOn = ! ledOn ;
if ( ledOn ) led <: ledVal ;
www.xmos.com

XK-1 (9.9)
6/12
else led <: 0;
timeF += FLASH_PERIOD ;
break ;
case tmrC when timerafter ( timeC ) :> void :
ledVal <<= 1;
if ( ledVal == 0x10 )
ledVal = 1;
timeC += CYCLE_PERIOD ;
break ;
}
}
return 0;
}
XK-1 LED

www.xmos.com

XK-1 (9.9)
7/12
5
parchanchanend
XC par
XC
par
flashLEDs
buttonListener
channel
par flashLeds LED
buttonListener flashLeds
LED LED
int main ()
{
chan c;
par
{
flashLeds (p_leds , c);
buttonListener ( p_button_0 , c);
}
return 0;
}
XC chan

int main ()
{
chan c;
...
}
par
chanend
void buttonListener (in port button , chanend c)
www.xmos.com

XK-1 (9.9)
8/12
XC led
c
c <: led;


buttonListener pinsneq
0buttonListener led
c led 1

void buttonListener (in port button , chanend c)
{
int led = 1;
while (1)
{
select
{
// wait for button to be pressed
case button when pinseq (0) :> void:
{
c <: led;
led = (led + 1) & 0xF;
// wait for button to be released
button when pinseq (1) :> void;
break;
}
}
}
}
flashLeds ledVal LED

case c :> ledVal :
{
break ;
}
www.xmos.com

XK-1
} (9.9)
9/12
flashLeds 1Hz LED
case t when timerafter (time) :> void:
{
if ( ledOn)
leds <: ledVal ;
else
leds <: 0;
ledOn = ! ledOn ;
time += 50000000;
break ;
}

# include <xs1.h>
out port p_leds = XS1_PORT_4F ;
in port p_button_0 = XS1_PORT_1K ;
in port p_button_1 = XS1_PORT_1L ;
void flashLeds (out port leds , chanend c)
{
timer t;
unsigned int time;
int ledVal = 1;
int ledOn = 1;
int val;
t :> time;
leds <: ledVal ;
while (1)
{
select
{
case t when timerafter (time) :> void:
{
if (ledOn )
leds <: ledVal ;
else
leds <: 0;
ledOn = !ledOn ;
time += 50000000;
www.xmos.com

XK-1 (9.9)
10/12
break;
}
case c :> ledVal :
{
break;
}
}
}
}
void buttonListener (in port button , chanend c)
{
int led = 1;
while (1)
{
select
{
case button when pinseq (0) :> void:
{
c <: led;
led = (led + 1) & 0xF;
button when pinseq (1) :> void;
break;
}
}
}
}
int main ()
{
chan c;
par
{
flashLeds (p_leds , c);
buttonListener ( p_button_0 , c);
}
return 0;
}
XK-1

www.xmos.com

XK-1 (9.9)
11/12
6
XK-1
XK-1 6
0
PORT_LED
PORT_BUT_1, PORT_BUT_2
GPIO HEADERS A, B
PORT_UART_RX
PORT_UART_TX
TDI
TDO
_IN
TDOC
TDOC
XS1-L1
_OUT
TMS
TMS
XSYS
TCK
TCK
XSYS
TRST_N
TRST_N
DEBUG
DEBUG
PORT_SPI_MISO
PORT_SPI_SS
SS_RESET
RST
PORT_SPI_CLK
5V
PSU
1V
PORT_SPI_MOSI
3V3
20MHz
CLOCK
SPI
XTO


XK-1 XK-1
XC Programming XC for XMOS Devices
XMOS
XS1 XS1 XS1 XS1-L

Revision History

Revision Released Formats Supported Tools
Version: 9.9-[Y-M] September 15, 2010 download N/A