/*----------------------------------------------------------------------------- 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 (); } }
/*----------------------------------------------------------------------------- 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; } }