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

XK-1 Tutorial (Japan)

Development Tools:

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

XK-1 (9.9)
2/14
1

XK-1 XMOS XS1-L1
XS1-L1 LED SPI JTAG
20 XSYS
XK-1 16 IDC
XK-1
XS1-L1 400 MIPS 64RAM
XCore
XS1-L1 ( 6
)
XMOS C XC
XMOS C XC

XK-1 XC
(C
)
· LED
· LED
· 12 LED
· LED

· LED

· UART "Hello World" PC
·
www.xmos.com

XK-1 (9.9)
3/14




XMOS 9.9

XMOSTools
2
LED: port , <:
XMOS 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;
}
2 led xs1.h
XS1 _PORT _4F
4F F 4F 4
XK-1 4 LED LED

XC

www.xmos.com

XK-1 (9.9)
4/14
main
led <: 0x1;
<: 0b00000001 led
LED HIGH (1)
led LED

LED

out


LED (

XMOSTools)
LED (0xf ) LED

3
LED timer :>
XC 1 LED
MHz


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


t += FLASH_PERIOD ;
tmr when timerafter (t) :> void;
www.xmos.com

XK-1 (9.9)
5/14
(
void XC )
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)
6/14
4
LEDselect
XC select XK-1 LED

select
case
case break return
select

select {
case tmrF when timerafter ( timeF ) :> void :
/* respond to timeout ,
* switch LED between 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 ;
www.xmos.com

XK-1 (9.9)
7/14
unsigned timeF , timeC ;
tmrF :> timeF;
tmrC :> timeC;
while (1) {
select {
case tmrF when timerafter ( timeF ) :> void :
ledOn = ! ledOn ;
if ( ledOn ) led <: ledVal ;
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)
8/14
5
par , chan , chanend
XC par
XC
par
flashLEDs
buttonListener
channel
par flashLeds
LED buttonListener
LED flashLeds LED

int main ()
{
chan c;
par
{
flashLeds (p_leds , c);
buttonListener ( p_button_0 , c);
}
return 0;
}
XC chan

int main ()
{
chan c;
...
}
www.xmos.com

XK-1 (9.9)
9/14
par
chanend


void buttonListener (in port button , chanend c)
XC led c

c <: led;


buttonListener pisneq
0 buttonLis-
tener 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;
}
}
} }
www.xmos.com

XK-1 (9.9)
10/14
flashLeds LED
ledVal
case c :> ledVal :
{
break ;
}
flashLeds 1Hz LED ON/OFF

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;
www.xmos.com

XK-1 (9.9)
11/14
leds <: ledVal ;
while (1)
{
select
{
case t when timerafter (time) :> void:
{
if (ledOn )
leds <: ledVal ;
else
leds <: 0;
ledOn = !ledOn ;
time += 50000000;
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;
www.xmos.com

XK-1 (9.9)
12/14
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)
13/14
6
XK-1
XK-1
Processor 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
FLASH
MEMORY
XK-1
XK-1 Hardware Manual
XC Programming XC for XMOS Devices
XMOSTools
XS1 XS1 Architecture XS1 Instruction Set XS1-L System
Assembly
www.xmos.com

Revision History

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