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.
Dependents: TFC-TEST TFC-RACING-DEMO TFC-RACING-DEMO TFC-RACING-FSLMENTORMATTERS ... more
main.cpp
- Committer:
- emh203
- Date:
- 2013-08-15
- Revision:
- 3:23cce037011f
- Parent:
- 2:ce4a273be708
- Child:
- 4:8a4a3fc59e57
File content as of revision 3:23cce037011f:
#include "mbed.h"
#include "TFC.h"
//This macro is to maintain compatibility with Codewarrior version of the sample. This version uses the MBED libraries for serial port access
Serial PC(USBTX,USBRX);
#define TERMINAL_PRINTF PC.printf
//This ticker code is used to maintain compability with the Codewarrior version of the sample. This code uses an MBED Ticker for background timing.
#define NUM_TFC_TICKERS 4
Ticker TFC_TickerObj;
volatile uint32_t TFC_Ticker[NUM_TFC_TICKERS];
void TFC_TickerUpdate()
{
int i;
for(i=0; i<NUM_TFC_TICKERS; i++)
{
if(TFC_Ticker[i]<0xFFFFFFFF)
{
TFC_Ticker[i]++;
}
}
}
int main()
{
uint32_t i,j,t = 0;
PC.baud(115200);
TFC_TickerObj.attach_us(&TFC_TickerUpdate,2000);
TFC_Init();
for(;;)
{
//TFC_Task must be called in your main loop. This keeps certain processing happy (I.E. Serial port queue check)
// TFC_Task();
//This Demo program will look at the middle 2 switch to select one of 4 demo modes.
//Let's look at the middle 2 switches
switch((TFC_GetDIP_Switch()>>1)&0x03)
{
default:
case 0 :
//Demo mode 0 just tests the switches and LED's
if(TFC_PUSH_BUTTON_0_PRESSED)
TFC_BAT_LED0_ON;
else
TFC_BAT_LED0_OFF;
if(TFC_PUSH_BUTTON_1_PRESSED)
TFC_BAT_LED3_ON;
else
TFC_BAT_LED3_OFF;
if(TFC_GetDIP_Switch()&0x01)
TFC_BAT_LED1_ON;
else
TFC_BAT_LED1_OFF;
if(TFC_GetDIP_Switch()&0x08)
TFC_BAT_LED2_ON;
else
TFC_BAT_LED2_OFF;
break;
case 1:
//Demo mode 1 will just move the servos with the on-board potentiometers
if(TFC_Ticker[0]>=20)
{
TFC_Ticker[0] = 0; //reset the Ticker
//Every 20 mSeconds, update the Servos
TFC_SetServo(0,TFC_ReadPot(0));
TFC_SetServo(1,TFC_ReadPot(1));
}
//Let's put a pattern on the LEDs
if(TFC_Ticker[1] >= 125)
{
TFC_Ticker[1] = 0;
t++;
if(t>4)
{
t=0;
}
TFC_SetBatteryLED_Level(t);
}
TFC_SetMotorPWM(0,0); //Make sure motors are off
TFC_HBRIDGE_DISABLE;
break;
case 2 :
//Demo Mode 2 will use the Pots to make the motors move
TFC_HBRIDGE_ENABLE;
TFC_SetMotorPWM(TFC_ReadPot(0),TFC_ReadPot(1));
//Let's put a pattern on the LEDs
if(TFC_Ticker[1] >= 125)
{
TFC_Ticker[1] = 0;
t++;
if(t>4)
{
t=0;
}
TFC_SetBatteryLED_Level(t);
}
break;
case 3 :
//Demo Mode 3 will be in Freescale Garage Mode. It will beam data from the Camera to the
//Labview Application
//note that there are some issues
if(TFC_Ticker[0]>1000 && TFC_LineScanImageReady>0)
{
TFC_Ticker[0] = 0;
TFC_LineScanImageReady=0;
TERMINAL_PRINTF("\r\n");
TERMINAL_PRINTF("L:");
if(t==0)
t=4;
else
t--;
TFC_SetBatteryLED_Level(t);
for(i=0;i<8;i++)
{
for(j=0;j<16;j++)
{
TERMINAL_PRINTF("%X,",TFC_LineScanImage0[(i*8)+j]);
}
wait_ms(10);
}
for(i=0;i<8;i++)
{
for(j=0;j<16;j++)
{
TERMINAL_PRINTF("%X",TFC_LineScanImage1[(i*8)+j]);
if((i*8)+j==127)
TERMINAL_PRINTF("\r\n",TFC_LineScanImage1[(i*8)+j]);
else
TERMINAL_PRINTF(",",TFC_LineScanImage1[(i*8)+j]);
}
wait_ms(10);
}
}
break;
}
}
}

Freescale Cup with FRDM-KL25Z