00061 {
00062 static uint8_t taster = 255;
00063 static uint32_t last_down = 0;
00064
00065 uint8_t taster_neu = PINC;
00066 uint8_t diff = taster_neu ^ taster;
00067 diff &= taster_neu;
00068
00069
00070 double timeFromLastDown = us_time_get_difference_d(last_down);
00071 #define ENTPR 1000
00072 #define PRESS_LONG 1000000
00073 if(timeFromLastDown > ENTPR){
00074 if (bit_is_set(diff,0)) taste[0]();
00075 else if(bit_is_set(diff,1)) taste[1]();
00076 else if(bit_is_set(diff,2)) taste[2]();
00077 else if(bit_is_set(diff,3)) taste[3]();
00078 else if(bit_is_set(diff,4)) taste[4]();
00079 else if(bit_is_set(diff,5)) taste[5]();
00080 else if(bit_is_set(diff,6)) taste[6]();
00081 else if(bit_is_set(diff,7)) taste[7]();
00082 }
00083 if(taster != taster_neu) last_down = us_time_get();
00084 timeFromLastDown = us_time_get_difference_d(last_down);
00085 if(timeFromLastDown > PRESS_LONG){
00086 if (bit_is_clear(taster_neu,0) && bit_is_clear(diff,0)) taste_long[0]();
00087 else if(bit_is_clear(taster_neu,1) && bit_is_clear(diff,1)) taste_long[1]();
00088 else if(bit_is_clear(taster_neu,2) && bit_is_clear(diff,2)) taste_long[2]();
00089 else if(bit_is_clear(taster_neu,3) && bit_is_clear(diff,3)) taste_long[3]();
00090 else if(bit_is_clear(taster_neu,4) && bit_is_clear(diff,4)) taste_long[4]();
00091 else if(bit_is_clear(taster_neu,5) && bit_is_clear(diff,5)) taste_long[5]();
00092 else if(bit_is_clear(taster_neu,6) && bit_is_clear(diff,6)) taste_long[6]();
00093 else if(bit_is_clear(taster_neu,7) && bit_is_clear(diff,7)) taste_long[7]();
00094 }
00095 taster = taster_neu;
00096 }