Esempio n. 1
0
/*-----------------------------------------------------------------------------
 Function Name  : adc_KeyRead
 Description    : 
 Input          : ADC_Val - 6byte
 Output         : None
 Return         : None
 Comments	 	: ..
-----------------------------------------------------------------------------*/
void adc_KeyRead(unsigned char Lines)
//void adc_KeyRead(void)
{
	unsigned char i,value;
	unsigned int j;

  	/* Start ADC1 Software Conversion */ 
  	ADC_SoftwareStartConv(ADC3);
	
	while (DMA_GetITStatus(DMA2_Stream1,DMA_IT_TCIF1) == RESET);
	//if (DMA_GetITStatus(DMA1_IT_TC1) == RESET) return;
	DMA_ClearFlag(DMA2_Stream1,DMA_IT_TCIF1);

	memset(&key.KeyScan,0,sizeof(key.KeyScan));
	
	/* scan ADC : 4 Line , ? Key */
	//--------------------------------------------------------
	for (i=0;i<Lines;i++) {
		value = 0;
			//--------------------------------------------------------
#ifdef TEMPERATURE_2299STEP_ENABLE
			//20131029 add temp [71..86..99..Max99]
			//Temperature range [22..99/5STEP]
			//20131024 : add SMPS Heat Sink sensor [ 31..99 ]
			//20131204 : adjust temp table [ 21..95 ]
			//20131209 : adjust temp table [ 21..99 ]
			//20131211 : adjust temp table [ 21..99 ]
		for(j=0;j<(79);j++) {
			if ( ADC_Val[i] < ConvertTableTemp2199_11A[j][0] ) {
				value = ( ConvertTableTemp2199_11A[j][1] - 1 );		//[21..99]
				current_ADC_Val[i] = ADC_Val[i];				//16bit ADC value saving
				key.KeyScan[i] = value;			//saving
				break;
			  }
		}
#endif
	}
#ifdef UART1_DEBUG_x
	rs232_printf("ADC v=>%d %d %d %d %d %d\n",ADC_Val[0],ADC_Val[1],ADC_Val[2],ADC_Val[3],ADC_Val[4],ADC_Val[5],ADC_Val[6],ADC_Val[7]);
	rs232_printf("ADC k=>%d %d %d %d %d %d\n",key.KeyScan[0],key.KeyScan[1],key.KeyScan[2],key.KeyScan[3],key.KeyScan[4],key.KeyScan[5],key.KeyScan[6],key.KeyScan[7]);
#endif
#ifdef UART1_DEBUG_x
	rs232_printf("ADC v=>%d %d\n",ADC_Val[4],ADC_Val[5],ADC_Val[6],ADC_Val[7]);
	rs232_printf("ADC k=>%d %d\n",key.KeyScan[4],key.KeyScan[5],key.KeyScan[6],key.KeyScan[7]);
#endif
}
static
void thread_handler2 (void* data) {
  while (1) {
    rs232_print_p (RS232_PORT_1, PSTR ("Thread 2. Data: "));
    rs232_printf (RS232_PORT_1, "0x%x, %d\n", data, *(uint8_t*)data );
    mt_yield ();
  }
}
Esempio n. 3
0
/*-----------------------------------------------------------------------------
ROUTINE NAME : adc_KeyMake
INPUT        :
OUTPUT       :
DESCRIPTION  : chattering & get key data
COMMENTS     : 
    //Trim
	key.KeyScan[0] = 0..96
	key.KeyScan[1] = 0..96
	key.KeyScan[2] = 0..96
	key.KeyScan[3] = 0..96
    //Temp
	key.KeyScan[4] = 22..86
	key.KeyScan[5] = 22..86
	key.KeyScan[6] = 22..100
	key.KeyScan[7] = 22..100
-----------------------------------------------------------------------------*/
void adc_KeyMake(unsigned char Lines)
{
	unsigned char i;
	byte result = SUCCESS;
	
	i = Lines;		//0..4
	switch(key.KeyMode[i]) {
		case KM_READY:
			key.KeyImsi[i] = key.KeyScan[i];
			key.KeyData[i] = key.KeyScan[i];
			key.KeyHoldTime[i] = TIME10MSTO30MS;
			key.KeyMode[i] = KM_HOLD;
			break;
		case KM_HOLD:
			if (key.KeyImsi[i] != key.KeyScan[i]) {
				result = FAILED;
			}
			if (result == SUCCESS) {
				if (--key.KeyHoldTime[i] <= 0) {
					key.KeyBuf[i] = key.KeyImsi[i];
					key.KeyOk[i] = ON;
					key.KeyMode[i] = KM_KEYOFF;
					
#ifdef UART1_DEBUG_x
					rs232_printf("keyData %d : =>%x\n",i, key.KeyData[i]);
					//debug((_MN_"Input front key data is [%d]\n",key.KeyData));
#endif
				}
			} else {
				//Fail ! change mode : KM_READY
				adc_KeyRestart(i);
			}
			break;
		case KM_KEYOFF:
			if (key.KeyScan[i] != key.KeyImsi[i]) {
				result = FAILED;
			}
			if (result == SUCCESS) {
			} else {
				//Fail ! change mode : KM_READY
				adc_KeyRestart(i);
			}
			break;
		default:
			//Fail ! change mode : KM_READY
			adc_KeyRestart(i);
			break;
	}
}