aboutsummaryrefslogtreecommitdiff
path: root/AT91SAM7S256/Source/c_input.c
diff options
context:
space:
mode:
Diffstat (limited to 'AT91SAM7S256/Source/c_input.c')
-rw-r--r--AT91SAM7S256/Source/c_input.c56
1 files changed, 22 insertions, 34 deletions
diff --git a/AT91SAM7S256/Source/c_input.c b/AT91SAM7S256/Source/c_input.c
index 2cb9be1..18a14c6 100644
--- a/AT91SAM7S256/Source/c_input.c
+++ b/AT91SAM7S256/Source/c_input.c
@@ -2,11 +2,11 @@
//
// Date init 14.12.2004
//
-// Revision date $Date:: 3/21/09 10:31a $
+// Revision date $Date:: 19-03-10 12:36 $
//
// Filename $Workfile:: c_input.c $
//
-// Version $Revision:: 39 $
+// Version $Revision:: 40 $
//
// Archive $Archive:: /LMS2006/Sys01/Main_V02/Firmware/Source/c_inpu $
//
@@ -88,7 +88,7 @@ void cInputCalcSensorValue(UWORD NewSensorRaw, UWORD *pOldSensorRaw, SWORD
UBYTE *pBoolean, UBYTE *pDebounce, UBYTE *pSampleCnt,
UBYTE *LastAngle, UBYTE *pEdgeCnt, UBYTE Slope,
UBYTE Mode);
-void cInputSetupType(UBYTE Port, UBYTE *pType, UBYTE OldType);
+void cInputSetupType(UBYTE Port, UBYTE newType, UBYTE OldType);
void cInputSetupCustomSensor(UBYTE Port);
void cInputCalcSensorValues(UBYTE No);
UBYTE cInputInitColorSensor(UBYTE Port, UBYTE *pInitStatus);
@@ -185,6 +185,17 @@ void cInputCtrl(void)
VarsInput.ColorStatus &= ~(0x01<<Tmp);
memset(&(VarsInput.VarsColor[Tmp]),0 ,sizeof(VarsInput.VarsColor[Tmp]));
+ VarsInput.InvalidTimer[Tmp] = INVALID_RELOAD_NORMAL;
+ /* If old type is color sensor in color lamp mode then turn off leds */
+ if ((sType == NO_SENSOR) &&
+ (oldType == COLORRED || oldType == COLORGREEN ||
+ oldType == COLORBLUE || oldType == COLORFULL ||
+ oldType == COLOREXIT))
+ {
+ VarsInput.InvalidTimer[Tmp] = INVALID_RELOAD_COLOR;
+ IOMapInput.Inputs[Tmp].SensorType = COLOREXIT;
+ sType = COLOREXIT;
+ }
/* Setup the pins for the new sensortype */
cInputSetupType(Tmp, pType, oldType);
sType = *pType;
@@ -317,11 +328,6 @@ void cInputCalcSensorValues(UBYTE No)
{
case SENSOROFF:
{
-
- /* Make sure that sensor data are invalid while unplugged*/
- VarsInput.InvalidTimer[No] = INVALID_RELOAD_COLOR;
- IOMapInput.Inputs[No].InvalidData = INVALID_DATA;
-
/* Check if sensor has been attached */
if (dInputCheckColorStatus(No))
{
@@ -384,11 +390,6 @@ void cInputCalcSensorValues(UBYTE No)
{
case SENSOROFF:
{
-
- /* Make sure that sensor data are invalid while unplugged */
- VarsInput.InvalidTimer[No] = INVALID_RELOAD_COLOR;
- IOMapInput.Inputs[No].InvalidData = INVALID_DATA;
-
/* Check if sensor has been attached */
if (dInputCheckColorStatus(No))
{
@@ -944,29 +945,10 @@ void cInputCalcFullScale(UWORD *pRawVal, UWORD ZeroPointOffset, UBYTE PctFu
}
-void cInputSetupType(UBYTE Port, UBYTE *pType, UBYTE OldType)
+void cInputSetupType(UBYTE Port, UBYTE newType, UBYTE OldType)
{
- VarsInput.InvalidTimer[Port] = INVALID_RELOAD_NORMAL;
-
- /* If old type is color sensor in color lamp mode then turn off leds */
- switch (OldType)
- {
- case COLORRED:
- case COLORGREEN:
- case COLORBLUE:
- case COLORFULL:
- case COLOREXIT:
- {
- if (NO_SENSOR == *pType)
- {
- VarsInput.InvalidTimer[Port] = INVALID_RELOAD_COLOR;
- *pType = COLOREXIT;
- }
- }
- break;
- }
- switch(*pType)
+ switch(newType)
{
case NO_SENSOR:
case SWITCH:
@@ -1063,6 +1045,8 @@ void cInputSetupType(UBYTE Port, UBYTE *pType, UBYTE OldType)
dInputSetDirInDigi1(Port);
IOMapInput.Colors[Port].CalibrationState = SENSORCAL;
VarsInput.VarsColor[Port].ColorInitState = 0;
+
+ IOMapInput.Inputs[Port].SensorValue = BLACKCOLOR;
}
break;
@@ -1086,6 +1070,10 @@ void cInputSetupCustomSensor(UBYTE Port)
dInputClearDigi0(Port);
}
}
+ else
+ {
+ dInputSetDirInDigi0(Port);
+ }
if ((IOMapInput.Inputs[Port].DigiPinsDir) & 0x02)
{
if ((IOMapInput.Inputs[Port].DigiPinsOut) & 0x02)