diff options
author | Thomas Schuetz | 2012-09-07 15:14:22 +0000 |
---|---|---|
committer | Thomas Schuetz | 2012-09-07 15:14:22 +0000 |
commit | bfbe68da512aa6a87cddb70aa77baf4b40e7d43f (patch) | |
tree | 92fcb6b0a9bdd84e5971592f5a013919ad809a6a /runtime/org.eclipse.etrice.runtime.c/src/platforms | |
parent | 873d1ba8fc0592de341acec91d254940b8d4f591 (diff) | |
download | org.eclipse.etrice-bfbe68da512aa6a87cddb70aa77baf4b40e7d43f.tar.gz org.eclipse.etrice-bfbe68da512aa6a87cddb70aa77baf4b40e7d43f.tar.xz org.eclipse.etrice-bfbe68da512aa6a87cddb70aa77baf4b40e7d43f.zip |
[runtime.c / generator.c] reorganized structure of runtime / moved and renamed etGlobalFlags.h to project specific config/etRuntimeConfig.h
Diffstat (limited to 'runtime/org.eclipse.etrice.runtime.c/src/platforms')
19 files changed, 877 insertions, 59 deletions
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/MSP430/etDatatypes.h b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_EXP430F5438/etDatatypes.h index a831f66ff..a831f66ff 100644 --- a/runtime/org.eclipse.etrice.runtime.c/src/platforms/MSP430/etDatatypes.h +++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_EXP430F5438/etDatatypes.h diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/MSP430/etLogger.c b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_EXP430F5438/etLogger.c index d43a953ba..d43a953ba 100644 --- a/runtime/org.eclipse.etrice.runtime.c/src/platforms/MSP430/etLogger.c +++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_EXP430F5438/etLogger.c diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/MSP430/etPlatform.c b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_EXP430F5438/etPlatform.c index 1650cd8a4..1650cd8a4 100644 --- a/runtime/org.eclipse.etrice.runtime.c/src/platforms/MSP430/etPlatform.c +++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_EXP430F5438/etPlatform.c diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/MSP430/etTimer.c b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_EXP430F5438/etTimer.c index cdffb9636..cdffb9636 100644 --- a/runtime/org.eclipse.etrice.runtime.c/src/platforms/MSP430/etTimer.c +++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_EXP430F5438/etTimer.c diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/MSP430/info.txt b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_EXP430F5438/info.txt index 71c5f9f3f..71c5f9f3f 100644 --- a/runtime/org.eclipse.etrice.runtime.c/src/platforms/MSP430/info.txt +++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_EXP430F5438/info.txt diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_HWElevator/etDatatypes.h b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_HWElevator/etDatatypes.h new file mode 100644 index 000000000..aa948e6b4 --- /dev/null +++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_HWElevator/etDatatypes.h @@ -0,0 +1,72 @@ +/******************************************************************************* + * Copyright (c) 2011 protos software gmbh (http://www.protos.de). + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * CONTRIBUTORS: + * Thomas Schuetz (initial contribution) + * + *******************************************************************************/ + +#ifndef _ETDATATYPES_H_ +#define _ETDATATYPES_H_ + +/* + * typedefs for platform specific datatypes + * Version for TI MSP 430 + * + * */ + +#include <stdio.h> + +/* unsigned integer datatypes */ +typedef unsigned char uint8; +typedef unsigned short int uint16; +typedef unsigned long uint32; +/* typedef unsigned long long uint64; */ /* not available on this platform */ + +/* signed integer datatypes */ +typedef char int8; +typedef short int int16; +typedef long int32; +/* typedef long long int64; */ /* not available on this platform */ + + +/* float datatypes */ +typedef float float32; +/* typedef double float64; */ /* not available on this platform */ + +/* boolean datatypes and values */ +typedef char bool; /* TODO: bool, Bool, Boolean, and boolean are already defined in some platforms*/ +typedef bool boolean; +#ifndef TRUE + #define TRUE 1 +#endif +#ifndef FALSE + #define FALSE 0 +#endif + +/* + * typedefs for eTrice Runtime and Testing + * + * */ + +typedef int8 etInt8; +typedef int16 etInt16; +typedef int32 etInt32; + +typedef uint8 etUInt8; +typedef uint16 etUInt16; +typedef uint32 etUInt32; + +typedef bool etBool; + +typedef float32 etFloat32; + +typedef FILE* etFileHandle; + +typedef int8 etAddressId; + +#endif /* _DATATYPES_H_ */ diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_HWElevator/etLogger.c b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_HWElevator/etLogger.c new file mode 100644 index 000000000..9b20f31a3 --- /dev/null +++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_HWElevator/etLogger.c @@ -0,0 +1,78 @@ +/******************************************************************************* + * Copyright (c) 2011 protos software gmbh (http://www.protos.de). + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * CONTRIBUTORS: + * Thomas Schuetz (initial contribution) + * + *******************************************************************************/ + +/* + * etLogger.c + * + * Created on: 16.01.2012 + * Author: tschuetz + */ + + +#include "debugging/etLogger.h" + +#include <stdarg.h> + + +void etLogger_logError(const char* message){ + printf("ERROR: %s\n", message); +} + +void etLogger_logWarning(const char* message){ + printf("WARNING: %s\n", message); +} + +void etLogger_logInfo(const char* message){ + printf("INFO: %s\n", message); +} + +void etLogger_logErrorF(const char* format, ... ){ + printf("ERROR: "); + va_list arglist; + va_start( arglist, format ); + vprintf( format, arglist ); + va_end( arglist ); + printf("\n"); +} + +void etLogger_logWarningF(const char* format, ... ){ + printf("WARNING: "); + va_list arglist; + va_start( arglist, format ); + vprintf( format, arglist ); + va_end( arglist ); + printf("\n"); +} + +void etLogger_logInfoF(const char* format, ... ){ + printf("INFO: "); + va_list arglist; + va_start( arglist, format ); + vprintf( format, arglist ); + va_end( arglist ); + printf("\n"); +} + +etFileHandle etLogger_fopen(const char* filename, const char* mode){ + return( fopen(filename, mode) ); +} + +int etLogger_fclose(etFileHandle file){ + return( fclose(file) ); +} + +void etLogger_fprintf(etFileHandle file, const char* format, ... ){ + va_list arglist; + va_start( arglist, format ); + vfprintf(file, format, arglist ); + va_end( arglist ); +} diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_HWElevator/etPlatform.c b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_HWElevator/etPlatform.c new file mode 100644 index 000000000..9c2f2c586 --- /dev/null +++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_HWElevator/etPlatform.c @@ -0,0 +1,291 @@ +/******************************************************************************* + * Copyright (c) 2012 protos software gmbh (http://www.protos.de). + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * CONTRIBUTORS: + * Thomas Schuetz (initial contribution) + * + *******************************************************************************/ + +#include "msp430f5438a.h" +#include "platform/etTimer.h" +#include "hal_pmm.h" +#include "etPlatform.h" + +void enableLatchOutput(void); +void initClockSystem(void); +void initPortsForElevator(void); +void setData(unsigned char data); +void allLedsOff(void); +void genLatchClock(unsigned int mask); +unsigned char getFloorButtons(unsigned char floor); +void initMotor(void); +void initHw(void); +void enableInterrupt(void); + + +const unsigned char _7seg[15]={~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F, ~0xBF,~0x86,~0xDB,~0xCF,~0xE6}; +const unsigned int latchClockFloorLowPattern[6]={0x0410,0x0440,0x0801,0x0804,0x0810,0x0840}; +const unsigned int latchClockFloorHighPattern[6]={0x0420,0x0480,0x0802,0x0808,0x0820,0x880}; +const unsigned int latchClockMotorPattern[12]={0x0201,0x0202,0x0204,0x0208,0x0210,0x0220,0x0240,0x0280,0x0401,0x0402,0x0404,0x0408}; + + +const unsigned int doorPattern1[12]={0x0000,0x0201,0x0303,0x0387,0x03CF,0x03FF,0x03FF,0x03CF,0x0387,0x0303,0x0201,0x0000}; +const unsigned int doorPattern2[12]={0x0000,0x0030,0x0078,0x00FC,0x01FE,0x03FF,0x03FF,0x01FE,0x00FC,0x0078,0x0030,0x0000}; +const unsigned int doorPattern3[12]={0x0000,0x0200,0x0300,0x0380,0x03C0,0x03E0,0x03F0,0x03F8,0x03FC,0x03FE,0x03FF,0x03FF}; + + +volatile unsigned char execute; +unsigned int floorLatchShadow[6]; +unsigned char motorLatchShadow[12]; + + +/* implemenatation for eTrice interfaces*/ + +void etUserEntry(void){ + initHw(); + etTimer_init(); +} + +void etUserPreRun(void){ + enableInterrupt(); +} + +void etUserPostRun(void){ } +void etUserExit(void){ } + + +/* platform specific functions */ + + + +/*****************************************************/ + + +void initHw(void) { +volatile unsigned int i=0; +volatile unsigned char j,m; + + WDTCTL = WDTPW + 0x36; //WDT as Timer; + + SetVCore(PMMCOREV_3); + initClockSystem(); + + initPortsForElevator(); + allLedsOff(); + enableLatchOutput(); + initMotor(); +} + +void enableInterrupt(void){ + SFRIE1|=WDTIE; + _enable_interrupt(); +} +void initPortsForElevator(void){ + P2DIR |= 0x02; + P2OUT &= ~0x02; + + P4OUT = 0x00; + P4DIR = 0xFF; + + P3OUT = 0xC0; + P3DIR = 0xFF; + + P8OUT = 0x00; + P8DIR = 0x00; + P8REN = 0xE0; +} + +void toggleTestLed(void){ + P2OUT ^= 0x02; +} +void enableLatchOutput(void){ + P3OUT &= ~0x80; +} + +void setData(unsigned char data){ + P4OUT = data; + P3OUT &= ~0x01; + P3OUT |= 0x01; +} + +void allLedsOff(void){ +unsigned int i; + P3OUT &= ~0x40; + setData(0xFF); + P4OUT &= ~0xFF; + P3OUT &= ~0x1E; + P3OUT |= 0x1E; + P4OUT |= 0xFF; + P3OUT &= ~0x1E; + P3OUT |= 0x1E; + for(i=0;i<6;i++){ + floorLatchShadow[i]=0; + } +} + +void writeTo7Seg(unsigned char data){ + if (data<=9){ + setData(_7seg[data]); + genLatchClock(0x1001); + } +} + +void genLatchClock(unsigned int mask){ +unsigned char dataLow, dataHigh; + dataLow=mask & 0xFF; + dataHigh=((mask >> 8) & 0xFF); + P4OUT = ~dataLow; + P3OUT &= ~dataHigh; + P3OUT |= dataHigh; + P4OUT = 0xFF; + P3OUT &= ~dataHigh; + P3OUT |= dataHigh; +} + +void updateFloorLatch(floor){ +unsigned char dataLow, dataHigh; + + dataLow=(unsigned char)(floorLatchShadow[floor]); + dataHigh=(unsigned char) (floorLatchShadow[floor]>>8); + + setData(~dataLow); + genLatchClock(latchClockFloorLowPattern[floor]); + + setData(~dataHigh); + genLatchClock(latchClockFloorHighPattern[floor]); +} + +void updateMotorLatch(void){ +unsigned char i; + for(i=0;i<12;i++){ + setData(~motorLatchShadow[i]); + genLatchClock(latchClockMotorPattern[i]); + } +} + +unsigned char getMotorPosition(void){ + + if (motorLatchShadow[10]==0x3C) return 0x80; + if ((motorLatchShadow[7]==0xC0)&(motorLatchShadow[8]==0x03)) return 0x81; + if (motorLatchShadow[5]==0x78) return 0x82; + if ((motorLatchShadow[2]==0xC0)&(motorLatchShadow[3]==0x03)) return 0x83; + if (motorLatchShadow[0]==0x78) return 0x84; + return 0x00; + +} + +void shiftMotorUp(void){ +unsigned char i; + if(motorLatchShadow[0]&0x01)return; + for(i=0;i<11;i++){ + motorLatchShadow[i]>>=1; + if (motorLatchShadow[i+1]&0x01){motorLatchShadow[i]|=0x80;} + } + motorLatchShadow[11] >>=1; + updateMotorLatch(); +} + +void shiftMotorDown(void){ +unsigned char i; + if (motorLatchShadow[11]&0x02)return; + for(i=11;i>0;i--){ + motorLatchShadow[i]<<=1; + if (motorLatchShadow[i-1]&0x80){motorLatchShadow[i]|=0x01;} + } + motorLatchShadow[0] <<=1; + updateMotorLatch(); +} + +void initMotor(void){ +unsigned char i; + for(i=0;i<12;i++){ + motorLatchShadow[i]=0x00; + } + motorLatchShadow[11]=0x03; + motorLatchShadow[10]=0xC0; + updateMotorLatch(); +} + +void writeToButtonLed(unsigned char floor, unsigned char id, unsigned char onOff){ +unsigned int data; + data=id; + data<<=10; + if (floor>5)return; + switch (onOff){ + case ON: + floorLatchShadow[floor] |= data; + break; + case OFF: + floorLatchShadow[floor] &= ~data; + break; + case TOGGLE: + floorLatchShadow[floor]^=data; + break; + default:break; + }; + updateFloorLatch(floor); +} + +void writeToDoor(unsigned char floor, unsigned char data){ + // clear door bits + // avoid array out of bound access + if (data > 11)return; + if(floor > 5)return; + floorLatchShadow[floor] &= ~0x03FF; + // set door bits according data + floorLatchShadow[floor] |= (doorPattern3[data] & 0x3FF); + updateFloorLatch(floor); +} + +unsigned char getButtonStatus(unsigned char floor, unsigned int id){ +unsigned char mask = 0x01; +unsigned char retVal=0; + if ((floor == 0) && (id == DOWN_BUTTON_ID)){return 0;} + if (id == CABINE_DOOR_BUTTON_ID){floor = 0; id=DOWN_BUTTON_ID;} + mask <<= floor; + P8OUT = mask; + P8DIR = mask; + if (P8IN & id) retVal=1; + P8DIR = 0x00; + return retVal; +} + +unsigned char getFloorButtons(unsigned char floor){ +unsigned char mask = 0x01; + mask <<= floor; + P8OUT = mask; + P8DIR = mask; + mask = P8IN & 0xE0; + P8DIR = 0x00; + + return mask; +} + +void initClockSystem(void){ + //Select DCO range 4..60Mhz + UCSCTL1=DCORSEL_6; + //enable XT1 + P7SEL|=0x01; + UCSCTL6=0x01CC; + // wait until Clock is ok + while(UCSCTL7&0x0002){UCSCTL7=0;} + + // DCO => appr. 50Mhz + // SMCLK MCLK => 25Mhz + UCSCTL2 = FLLD_1 + 0x2f8; + + // Loop until XT1,XT2 & DCO fault flag is cleared + do + { + UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG); + // Clear XT2,XT1,DCO fault flags + SFRIFG1 &= ~OFIFG; // Clear fault flags + }while (SFRIFG1&OFIFG); // Test oscillator fault flag + +} + + diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_HWElevator/etPlatform.h b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_HWElevator/etPlatform.h new file mode 100644 index 000000000..40d0048bb --- /dev/null +++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_HWElevator/etPlatform.h @@ -0,0 +1,36 @@ +/* + * etPlatform.h + * + * Created on: 23.06.2012 + * Author: junggtho + */ + +#ifndef ETPLATFORM_H_ +#define ETPLATFORM_H_ + + +#define UP_SWITCH_LED 0x02 +#define DOWN_SWITCH_LED 0x01 +#define CABINE_SWITCH_LED 0x04 + +#define CABINE_BUTTON_ID 0x80 +#define UP_BUTTON_ID 0x40 +#define DOWN_BUTTON_ID 0x20 +#define CABINE_DOOR_BUTTON_ID 0x10 + +#define ON 0x01 +#define OFF 0x02 +#define TOGGLE 0x03 + + +void writeTo7Seg(unsigned char data); +void writeToDoor(unsigned char floor, unsigned char data); +unsigned char getButtonStatus(unsigned char floor, unsigned int id); +void writeToButtonLed(unsigned char floor, unsigned char id, unsigned char onOff); +void shiftMotorDown(void); +void shiftMotorUp(void); +unsigned char getMotorPosition(void); +void toggleTestLed(void); + + +#endif /* ETPLATFORM_H_ */ diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_HWElevator/etTimer.c b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_HWElevator/etTimer.c new file mode 100644 index 000000000..67f193b29 --- /dev/null +++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_F5438_CCS5_HWElevator/etTimer.c @@ -0,0 +1,99 @@ +#include "msp430f5438a.h" +#include "platform/etTimer.h" + +/* global timer */ + +static etTargetTime_t targetTime; +static etTargetTime_t lastTargetTime; +static volatile etBool etTimer_executeFlag = FALSE; + +void etTimer_init(void){ + targetTime.nSec=0; + targetTime.sec=0; + lastTargetTime.nSec=0; + lastTargetTime.sec=0; +} + +etBool etTimer_executeNeeded(void){ + if (etTimer_executeFlag == TRUE){ + etTimer_executeFlag = FALSE; + return TRUE; + } + else { + return FALSE; + } +} + +int isTimeGreaterThanActualTime(const etTargetTime_t *t) { + + _disable_interrupt(); + if (t->sec > targetTime.sec) { + _enable_interrupt(); + return 1; + } + + if (t->sec < targetTime.sec) { + _enable_interrupt(); + return 0; + } + + if (t->nSec > targetTime.nSec) { + _enable_interrupt(); + return 1; + } + else { + _enable_interrupt(); + return 0; + } +} + +uint32 getNSecFromTarget(void){ + etTargetTime_t time; + getTimeFromTarget(&time); + return time.nSec; +} + +uint32 getSecFromTarget(void){ + etTargetTime_t time; + getTimeFromTarget(&time); + return time.sec; +} + + +void getTimeFromTarget(etTargetTime_t *t) { + _disable_interrupt(); + *t = targetTime; + _enable_interrupt(); +} + +#define ET_TIMER_TIME_BASE_NS 15625000L +#define ET_TIMER_TIME_BASE_US ET_TIMER_TIME_BASE_NS / 1000L +#define ET_TIMER_TIME_BASE_MS ET_TIMER_TIME_BASE_US / 1000L + +uint32 getTimeBaseNS(void){ + return ET_TIMER_TIME_BASE_NS; +} + +uint32 getTimeBaseUS(void){ + return ET_TIMER_TIME_BASE_US; +} + +uint32 getTimeBaseMS(void){ + return ET_TIMER_TIME_BASE_MS; +} + + +/* the timer interrupt */ +#pragma INTERRUPT(wdt_isr) +#pragma vector=WDT_VECTOR +void wdt_isr(void) { +// this interrupt will be called every 15,625ms + + etTimer_executeFlag = TRUE; + targetTime.nSec += 15625000L; + + if (targetTime.nSec >= 1000000000L) { + targetTime.nSec -= 1000000000L; + targetTime.sec++; + } +} // end interrupt diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_G2553_CCS5_LaunchPad/etDatatypes.h b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_G2553_CCS5_LaunchPad/etDatatypes.h new file mode 100644 index 000000000..aa948e6b4 --- /dev/null +++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_G2553_CCS5_LaunchPad/etDatatypes.h @@ -0,0 +1,72 @@ +/******************************************************************************* + * Copyright (c) 2011 protos software gmbh (http://www.protos.de). + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * CONTRIBUTORS: + * Thomas Schuetz (initial contribution) + * + *******************************************************************************/ + +#ifndef _ETDATATYPES_H_ +#define _ETDATATYPES_H_ + +/* + * typedefs for platform specific datatypes + * Version for TI MSP 430 + * + * */ + +#include <stdio.h> + +/* unsigned integer datatypes */ +typedef unsigned char uint8; +typedef unsigned short int uint16; +typedef unsigned long uint32; +/* typedef unsigned long long uint64; */ /* not available on this platform */ + +/* signed integer datatypes */ +typedef char int8; +typedef short int int16; +typedef long int32; +/* typedef long long int64; */ /* not available on this platform */ + + +/* float datatypes */ +typedef float float32; +/* typedef double float64; */ /* not available on this platform */ + +/* boolean datatypes and values */ +typedef char bool; /* TODO: bool, Bool, Boolean, and boolean are already defined in some platforms*/ +typedef bool boolean; +#ifndef TRUE + #define TRUE 1 +#endif +#ifndef FALSE + #define FALSE 0 +#endif + +/* + * typedefs for eTrice Runtime and Testing + * + * */ + +typedef int8 etInt8; +typedef int16 etInt16; +typedef int32 etInt32; + +typedef uint8 etUInt8; +typedef uint16 etUInt16; +typedef uint32 etUInt32; + +typedef bool etBool; + +typedef float32 etFloat32; + +typedef FILE* etFileHandle; + +typedef int8 etAddressId; + +#endif /* _DATATYPES_H_ */ diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_G2553_CCS5_LaunchPad/etLogger.c b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_G2553_CCS5_LaunchPad/etLogger.c new file mode 100644 index 000000000..0ed0a557b --- /dev/null +++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_G2553_CCS5_LaunchPad/etLogger.c @@ -0,0 +1,96 @@ +/******************************************************************************* + * Copyright (c) 2011 protos software gmbh (http://www.protos.de). + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * CONTRIBUTORS: + * Thomas Schuetz (initial contribution) + * + *******************************************************************************/ + +/* + * etLogger.c + * + * Created on: 16.01.2012 + * Author: tschuetz + */ + +//#define ET_LOGGER_ACTIVATE 1 +#include "debugging/etLogger.h" + +#include <stdarg.h> + + +void etLogger_logError(const char* message){ +#ifdef ET_LOGGER_ACTIVATE + printf("ERROR: %s\n", message); +#endif +} + +void etLogger_logWarning(const char* message){ +#ifdef ET_LOGGER_ACTIVATE + printf("WARNING: %s\n", message); +#endif +} + +void etLogger_logInfo(const char* message){ +#ifdef ET_LOGGER_ACTIVATE + printf("INFO: %s\n", message); +#endif +} + +void etLogger_logErrorF(const char* format, ... ){ +#ifdef ET_LOGGER_ACTIVATE + printf("ERROR: "); + va_list arglist; + va_start( arglist, format ); + vprintf( format, arglist ); + va_end( arglist ); + printf("\n"); +#endif +} + +void etLogger_logWarningF(const char* format, ... ){ +#ifdef ET_LOGGER_ACTIVATE + printf("WARNING: "); + va_list arglist; + va_start( arglist, format ); + vprintf( format, arglist ); + va_end( arglist ); + printf("\n"); +#endif +} + +void etLogger_logInfoF(const char* format, ... ){ +#ifdef ET_LOGGER_ACTIVATE + printf("INFO: "); + va_list arglist; + va_start( arglist, format ); + vprintf( format, arglist ); + va_end( arglist ); + printf("\n"); +#endif +} + +etFileHandle etLogger_fopen(const char* filename, const char* mode){ +#ifdef ET_LOGGER_ACTIVATE + return( fopen(filename, mode) ); +#endif +} + +int etLogger_fclose(etFileHandle file){ +#ifdef ET_LOGGER_ACTIVATE + return( fclose(file) ); +#endif +} + +void etLogger_fprintf(etFileHandle file, const char* format, ... ){ +#ifdef ET_LOGGER_ACTIVATE + va_list arglist; + va_start( arglist, format ); + vfprintf(file, format, arglist ); + va_end( arglist ); +#endif +} diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/MSP430/etGlobalFlags.h b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_G2553_CCS5_LaunchPad/etPlatform.c index 92df9f69b..08798627a 100644 --- a/runtime/org.eclipse.etrice.runtime.c/src/platforms/MSP430/etGlobalFlags.h +++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_G2553_CCS5_LaunchPad/etPlatform.c @@ -1,28 +1,52 @@ -/*******************************************************************************
- * Copyright (c) 2012 protos software gmbh (http://www.protos.de).
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * CONTRIBUTORS:
- * Thomas Schuetz (initial contribution)
- *
- *******************************************************************************/
-
-#ifndef ETGLOBALFLAGS_H_
-#define ETGLOBALFLAGS_H_
-
-/* flags for debugging */
-//#define ET_MSC_LOGGER_ACTIVATE /* needs ET_LOGGER_ACTIVATE */
-//#define ET_LOGGER_ACTIVATE
-
-#define STRUCT_ALIGN 2
-
-/* timing and scheduling */
-//#define FREQUENCY 100L
-//#define ET_RUNTIME_MAXLOOP 100000
-#define ET_RUNTIME_ENDLESS
-
-
-#endif /* ETGLOBALFLAGS_H_ */
+/******************************************************************************* + * Copyright (c) 2012 protos software gmbh (http://www.protos.de). + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * CONTRIBUTORS: + * Thomas Schuetz (initial contribution) + * + *******************************************************************************/ + +#include "msp430g2553.h" +#include "platform/etTimer.h" + + +/* forward declarations */ + + +/* implemenatation for eTrice interfaces*/ + +void etUserEntry(void){ + //Use WDT as interrupt timer + WDTCTL = WDTPW + 0x16; + + DCOCTL = CALDCO_16MHZ; + BCSCTL1 = CALBC1_16MHZ; + BCSCTL2 = 0x00; + BCSCTL3 = 0x0C; + + P1DIR = 0x01; + + IE1 |= 1; + + etTimer_init(); + + _enable_interrupt(); + + +} + +void etUserPreRun(void){ + _enable_interrupt(); +} + +void etUserPostRun(void){ } +void etUserExit(void){ } + + +/* platform specific functions */ + + diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_G2553_CCS5_LaunchPad/etTimer.c b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_G2553_CCS5_LaunchPad/etTimer.c new file mode 100644 index 000000000..d3fd107ab --- /dev/null +++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_G2553_CCS5_LaunchPad/etTimer.c @@ -0,0 +1,69 @@ +#include "msp430g2553.h" +#include "platform/etTimer.h" + +/* global timer */ + +static etTargetTime_t targetTime; +static etTargetTime_t lastTargetTime; +static volatile etBool etTimer_executeFlag = FALSE; + +void etTimer_init(void){ + targetTime.nSec=0; + targetTime.sec=0; + lastTargetTime.nSec=0; + lastTargetTime.sec=0; +} + +etBool etTimer_executeNeeded(void){ + if (etTimer_executeFlag == TRUE){ + etTimer_executeFlag = FALSE; + return TRUE; + } + else { + return FALSE; + } +} + +uint32 getNSecFromTarget(void){ + etTargetTime_t time; + getTimeFromTarget(&time); + return time.nSec; +} + +uint32 getSecFromTarget(void){ + etTargetTime_t time; + getTimeFromTarget(&time); + return time.sec; +} + + +void getTimeFromTarget(etTargetTime_t *t) { + _disable_interrupt(); + *t = targetTime; + _enable_interrupt(); +} + +/* the timer interrupt */ +#pragma INTERRUPT(wdt_isr) +#pragma vector=WDT_VECTOR + +void wdt_isr(void) { +// this interrupt will be called every 15,625ms + + static unsigned char secCounter = 0; + etTimer_executeFlag = TRUE; + + targetTime.nSec += 15625000L; + + if (targetTime.nSec >= 1000000000L) { + targetTime.nSec -= 1000000000L; + targetTime.sec++; + } + secCounter++; + + if (secCounter >= 64) { + secCounter = 0; +// P1OUT^=0x01; + } + +} // end interrupt diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_G2553_CCS5_LaunchPad/info.txt b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_G2553_CCS5_LaunchPad/info.txt new file mode 100644 index 000000000..b8f84e38c --- /dev/null +++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/ST_MSP430_G2553_CCS5_LaunchPad/info.txt @@ -0,0 +1 @@ +TI-MSP430 diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etDatatypes.h b/runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etDatatypes.h index ef9ba469b..e3ca3c088 100644 --- a/runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etDatatypes.h +++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etDatatypes.h @@ -43,7 +43,7 @@ typedef char* charPtr; /* boolean datatypes and values */
typedef char bool; /* TODO: bool, Bool, Boolean, and boolean are already defined in some platforms*/
-//typedef bool boolean;
+typedef bool boolean;
#ifndef TRUE
#define TRUE 1
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etGlobalFlags.h b/runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etGlobalFlags.h deleted file mode 100644 index bb645b40e..000000000 --- a/runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etGlobalFlags.h +++ /dev/null @@ -1,29 +0,0 @@ -/*******************************************************************************
- * Copyright (c) 2012 protos software gmbh (http://www.protos.de).
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * CONTRIBUTORS:
- * Thomas Schuetz (initial contribution)
- *
- *******************************************************************************/
-
-#ifndef ETGLOBALFLAGS_H_
-#define ETGLOBALFLAGS_H_
-
-/* flags for debugging */
-#define ET_MSC_LOGGER_ACTIVATE /* needs ET_LOGGER_ACTIVATE */
-#define ET_LOGGER_ACTIVATE
-
-
-#define STRUCT_ALIGN 8
-
-/* timing and scheduling */
-#define FREQUENCY 10L
-#define ET_RUNTIME_MAXLOOP 100
-//#define ET_RUNTIME_ENDLESS
-
-
-#endif /* ETGLOBALFLAGS_H_ */
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etTimer.c b/runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etTimer.c index e12f587c3..a0076c25a 100644 --- a/runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etTimer.c +++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/generic/etTimer.c @@ -2,7 +2,7 @@ #include <sys/time.h>
-#include "etGlobalFlags.h"
+#include "etRuntimeConfig.h"
void etTimer_init(void){
}
diff --git a/runtime/org.eclipse.etrice.runtime.c/src/platforms/naming-convention.txt b/runtime/org.eclipse.etrice.runtime.c/src/platforms/naming-convention.txt new file mode 100644 index 000000000..ae52add6e --- /dev/null +++ b/runtime/org.eclipse.etrice.runtime.c/src/platforms/naming-convention.txt @@ -0,0 +1,9 @@ +Naming convention for platforms: +<threading-type>_<processor-family and/or operating-system>_<processor or operating-system derivative>_<compiler>(_<board or application type>) + +<threading-type> : ST(single treaded) MT(multi-threaded) + +Examples: +ST_MSP430_F5438_CCS5_EXP430F5438 : single threaded, processor-family:TI-MSP430, derivative:F5438, compiler: Code Composer Studio 5, board: EXP430F5438 +MT_POSIX_GENERIC_GCC : multi threaded, operation-system: POSIX, derivative: GENERIC, compiler: Gnu C++ Compiler + |