Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed SDFileSystem
main.cpp
- Committer:
- plus_kamiya
- Date:
- 2010-09-27
- Revision:
- 0:4da1d4eae011
File content as of revision 0:4da1d4eae011:
// Example to set up an interrupt based on the LPC TIMER0 match register, sford
#include "mbed.h"
#include "SDFileSystem.h"
#define VERSION "LED Master version 0.0"
void timer0_init(void);
void timer1_init(void);
void flipT0();
void flipT1();
#define FOLDER "/sd/"
//#define FOLDER "/local/"
#define STX 0x02
#define ETX 0x03
#define CR 0x0A
#define LF 0x0D
#define I2C_Hz 2500000 //I2C CLOCK
#define SPI_Hz 2500000 //SPI CLOCK
#define BAUD_RATE 19200 //RS-232C BaudRate
#define NAME_SIZE 20 //FileName Length
#define FILES_MAX 20 //FileList MAX
#define DATA_SIZE 12 //I2C DataSize
#define CMD_SIZE 3 //I2C CommandSize
#define PMT_SIZE 4 //I2C ParametersSize
#define W_DOT 256 //Display W_DotSize
#define H_DOT 32 //Display H_DotSize
#define SP_DOT 0 //Display SP_DotSize
#define RX_SIZE 2048 //Comm ReceiveSize
#define FILEHEADERSIZE 14 //Bitmap FileHeaderSize
#define INFOHEADERSIZE 40 //Bitmap InfoHeaderSize
#define HEADERSIZE (FILEHEADERSIZE+INFOHEADERSIZE) //BitmapHeaderSize
InterruptIn inp1(p21);
DigitalOut led1(LED1);
DigitalOut led2(LED2);
DigitalOut led3(LED3);
DigitalOut led4(LED4);
DigitalOut out1(p22);
DigitalOut out2(p23);
Serial uart(p13, p14); // tx, rx
SPI spi(p5, p6, p7); // mosi, miso, sck
I2C i2c0(p9, p10); // sda, scl
I2C i2c1(p28, p27); // sda, scl
SDFileSystem sd(p5, p6, p7, p8, "sd"); // mosi, miso, sclk, cs, name
LocalFileSystem local("local");
static unsigned short Luminance0[DATA_SIZE] = {0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
static unsigned short Luminance1[DATA_SIZE] = {0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00};
static unsigned short Luminance2[DATA_SIZE] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF};
static unsigned short Luminance3[DATA_SIZE] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00};
static unsigned short Luminance4[DATA_SIZE] = {0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF};
static unsigned short Luminance5[DATA_SIZE] = {0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
static unsigned short Luminance6[DATA_SIZE] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
static unsigned short Luminance7[DATA_SIZE] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
static unsigned short tflag;
static int offlineCnt;
static int offlineColor;
static int offlineChange; //Display Offline
static unsigned short offlineMode;
static unsigned short imageflag;
static int rxCnt; //Receive Count
static int rxFlag; //1:Data Receive Complete 2:Data Transfer 3:Disylay Start
static int rxDataFlag; //RGB Receive Flag
static int rxTime; //Receive TimeOver
static int cmd; //1:Still Image 2:Left Flow 3:Right Flow 4:Down Flow 5:Up Flow
static int imageNo;
static int fileCnt; //FileList Count
static char files[FILES_MAX][NAME_SIZE];
static unsigned char rxData;
static unsigned char rxCmd[CMD_SIZE+1];
static unsigned char rxPmt[PMT_SIZE];
static unsigned char rxStrR[RX_SIZE];
static unsigned char rxStrG[RX_SIZE];
static unsigned char rxStrB[RX_SIZE];
static unsigned long rxLEDR[W_DOT];
static unsigned long rxLEDG[W_DOT];
static unsigned long rxLEDB[W_DOT];
static unsigned long imgLEDR[W_DOT];
static unsigned long imgLEDG[W_DOT];
static unsigned long imgLEDB[W_DOT];
static unsigned short i2cdata[DATA_SIZE];
static unsigned short i2cdata2[DATA_SIZE];
static int rotIndex; //Rotational Position
static int rotCntX; //Rotational CountX(WScroll)
static int rotCntY; //Rotational CountY(HScroll)
static int rotY; //Rotational YPosition
static int rotSpeed; //Rotational Flow Speed
static int rotStop; //Rotational Stop Count
static unsigned long nowCount; //100usec Count
void timer0_init(void)
{
// power up TIMER0 (PCONP[1])
LPC_SC->PCONP |= 1 << 1;
// reset and set TIMER0 to timer mode
LPC_TIM0->TCR = 0x2;
LPC_TIM0->CTCR = 0x0;
// set no prescaler
LPC_TIM0->PR = 0;
// calculate period (1 interrupt every second)
uint32_t period = SystemCoreClock / 4;
// set match register and enable interrupt
LPC_TIM0->MR0 = period;
LPC_TIM0->MCR |= 1 << 0; // interrupt on match
LPC_TIM0->MCR |= 1 << 1; // reset on match
// enable the vector in the interrupt controller
NVIC_SetVector(TIMER0_IRQn, (uint32_t)&flipT0);
NVIC_EnableIRQ(TIMER0_IRQn);
// start the timer
LPC_TIM0->TCR = 1;
}
void timer1_init(void)
{
// power up TIMER1 (PCONP[1])
LPC_SC->PCONP |= 1 << 0x16;
// reset and set TIMER1 to timer mode
LPC_TIM1->TCR = 0x2;
LPC_TIM1->CTCR = 0x0;
// set no prescaler
LPC_TIM1->PR = 0;
// calculate period (1 interrupt every second)
uint32_t period = SystemCoreClock / 4;
// set match register and enable interrupt
LPC_TIM1->MR0 = period / 2;
LPC_TIM1->MCR |= 1 << 0; // interrupt on match
LPC_TIM1->MCR |= 1 << 1; // reset on match
// enable the vector in the interrupt controller
NVIC_SetVector(TIMER1_IRQn, (uint32_t)&flipT1);
NVIC_EnableIRQ(TIMER1_IRQn);
// start the timer
LPC_TIM1->TCR = 1;
}
//**********************************************************************
//Timer0 Init
//**********************************************************************
void flipT0()
{
// do something!
led1 = !led1;
// clear the TIMER0 interrupt
LPC_TIM0->IR = 1;
}
//**********************************************************************
//Timer0 Init
//**********************************************************************
void flipT1()
{
// do something!
led2 = !led2;
// clear the TIMER2 interrupt
LPC_TIM1->IR = 1;
}
int main()
{
volatile int i;
volatile int j;
int res;
unsigned long rdata;
unsigned long gdata;
unsigned long bdata;
char tmp[255];
char filename[99];
printf("[%s]\r\n", VERSION);
nowCount = 0;
fileCnt = 0;
rxCnt = -1;
rxFlag = 0;
rxDataFlag = 0;
tflag = 1;
cmd = 0x00;
rotIndex = 0;
rotCntX = 0;
rotCntY = 0;
rotY = 0;
rotSpeed = 40;
rotStop = 1;
offlineCnt = 0;
offlineColor = 0;
for (i = 0; i < RX_SIZE; i++) {
rxStrR[i] = 0;
rxStrG[i] = 0;
rxStrB[i] = 0;
}
for (i = 0; i < W_DOT; i++) {
rxLEDR[i] = 0;
rxLEDG[i] = 0;
rxLEDB[i] = 0;
}
timer0_init();
timer1_init();
// hang around!
while(1) {
led4 = 1;
wait(0.2);
led4 = 0;
wait(0.2);
}
}