View Full Version : IspPod Programming in C
Hi,
How can I program the IsoPod in C using
the Metrowerks tools?
Thanks.
Chris.
nmitech
09-26-02, 04:04 PM
How can I program the IsoPod in C using
the Metrowerks tools?
You need to purchase a JTAG Cable from NMI in order to use with Codewarrior from Metrowerks.
Here is an example program.
/*------------------------------------------------------*
Program Name: leds.c
Application: Chasing leds.
Target Board: IsoPod.
*------------------------------------------------------*/
/* PORTD General Purpose Input/Output (GPIOD) */
#define pdpur (short *)0x0fe0 //; Port D pull-up reg.
#define pddr (short *)0x0fe1 //; Port D data reg.
#define pdddr (short *)0x0fe2 //; Port D data direction reg.
#define pdper (short *)0x0fe3 //; Port D peripheral reg.
#define pdiar (short *)0x0fe4 //; Port D interrupt assert reg.
#define pdienr (short *)0x0fe5 //; Port D interrupt enable reg.
#define pdipolr (short *)0x0fe6 //; Port D interrupt polarity reg.
#define pdipr (short *)0x0fe7 //; Port D interrupt pending reg.
#define pdiesr (short *)0x0fe8 //; Port D interrupt edge sensitive reg.
/* PORTE General Purpose Input/Output (GPIOE) */
#define pepur (short *)0x0ff0 //; Port E pull-up reg.
#define pedr (short *)0x0ff1 //; Port E data reg.
#define peddr (short *)0x0ff2 //; Port E data direction reg.
#define peper (short *)0x0ff3 //; Port E peripheral reg.
#define peiar (short *)0x0ff4 //; Port E interrupt assert reg.
#define peienr (short *)0x0ff5 //; Port E interrupt enable reg.
#define peipolr (short *)0x0ff6 //; Port E interrupt polarity reg.
#define peipr (short *)0x0ff7 //; Port E interrupt pending reg.
#define peiesr (short *)0x0ff8 //; Port E interrupt edge sensitive reg.
/* ---- IsoPod V1 ---- */
#define RED_LED_ON *pddr=*pddr|0x0010
#define RED_LED_OFF *pddr=*pddr&0x00EF
#define YEL_LED_ON *pedr=*pedr|0x0004
#define YEL_LED_OFF *pedr=*pedr&0x00FB
#define GRN_LED_ON *pedr=*pedr|0x0008
#define GRN_LED_OFF *pedr=*pedr&0x00F7
/* ---- IsoPod V2 ---- */
/*
#define RED_LED_ON *pddr=*pddr|0x0001
#define RED_LED_OFF *pddr=*pddr&0x00FE
#define YEL_LED_ON *pddr=*pddr|0x0002
#define YEL_LED_OFF *pddr=*pddr&0x00FD
#define GRN_LED_ON *pddr=*pddr|0x0004
#define GRN_LED_OFF *pddr=*pddr&0x00FB
*/
void init_pd(void);
void init_pe(void);
void delay(void);
// ------ PortD init routine --------
void init_pd( void )
{
*pdiar = 0x0000;
*pdienr = 0x0000;
*pdipolr = 0x0000;
*pdiesr = 0x0000;
*pddr = 0x0000;
*pdddr = 0x00ff;
*pdper = 0x0000;
}
// ------ PortE init routine --------
void init_pe( void )
{
*peiar = 0x0000;
*peienr = 0x0000;
*peipolr = 0x0000;
*peiesr = 0x0000;
*pedr = 0x0000;
*peddr = 0x00ff;
*peper = 0x0000;
}
// ----- Short delay routine ------
void delay( void )
{
int i;
for( i = 0; i < 0xffff; i++ )
{
asm(nop);
asm(nop);
asm(nop);
}
}
// ----- main routine -----
void main(void)
{
init_pd();
init_pe();
while(1)
{
RED_LED_ON;
delay();
RED_LED_OFF;
YEL_LED_ON;
delay();
YEL_LED_OFF;
GRN_LED_ON;
delay();
GRN_LED_OFF;
YEL_LED_ON;
delay();
YEL_LED_OFF;
}
return;
}
/* ----- end of leds program ------ */
vBulletin v3.0.7, Copyright ©2000-2010, Jelsoft Enterprises Ltd.