void WriteByte(unsigned char value) { unsigned char Mask=1; int loop; for(loop=0;loop<8;loop++) { INP_GPIO(DS_PIN); OUT_GPIO(DS_PIN); GPIO_CLR= 1 <<DS_PIN; if((value & Mask)!=0) { DELAY1US INP_GPIO(DS_PIN); DelayMicrosecondsNoSleep(60); } else { DelayMicrosecondsNoSleep(60); INP_GPIO(DS_PIN); DelayMicrosecondsNoSleep(1); } Mask*=2; DelayMicrosecondsNoSleep(60); } usleep(100); }
unsigned char ReadByte(void) { unsigned char Mask=1; int loop; unsigned char data=0; int loop2; for(loop=0;loop<8;loop++) { // set output INP_GPIO(DS_PIN); OUT_GPIO(DS_PIN); // PIN LOW GPIO_CLR= 1<<DS_PIN; DELAY1US // set input INP_GPIO(DS_PIN); // Wait 2 us DelayMicrosecondsNoSleep(2); if(GPIO_READ(DS_PIN)!=0) data |= Mask; Mask*=2; DelayMicrosecondsNoSleep(60); } return data; }
void QEncoder::clockPulse() { m_gpio.bitSet (m_bitClock); DelayMicrosecondsNoSleep(5); m_gpio.bitClear (m_bitClock); DelayMicrosecondsNoSleep(5); }
unsigned char ReadBit(void) { unsigned char rvalue=0; INP_GPIO(DS_PIN); OUT_GPIO(DS_PIN); // PIN LOW GPIO_CLR= 1 << DS_PIN; DELAY1US // set INPUT INP_GPIO(DS_PIN); DelayMicrosecondsNoSleep(2); if(GPIO_READ(DS_PIN)!=0) rvalue=1; DelayMicrosecondsNoSleep(60); return rvalue; }
void WriteBit(unsigned char value) { INP_GPIO(DS_PIN); OUT_GPIO(DS_PIN); GPIO_CLR=1 <<DS_PIN; if(value) { DELAY1US INP_GPIO(DS_PIN); DelayMicrosecondsNoSleep(60); } else { DelayMicrosecondsNoSleep(60); INP_GPIO(DS_PIN); DelayMicrosecondsNoSleep(1); } DelayMicrosecondsNoSleep(60); }
int DoReset(void) { int loop; INP_GPIO(DS_PIN); DelayMicrosecondsNoSleep(10); INP_GPIO(DS_PIN); OUT_GPIO(DS_PIN); // pin low for 480 us GPIO_CLR=1<<DS_PIN; usleep(480); INP_GPIO(DS_PIN); DelayMicrosecondsNoSleep(60); if(GPIO_READ(DS_PIN)==0) { DelayMicrosecondsNoSleep(420); return 1; } return 0; }
/** *On button push send trig signal **/ void btnHandler(void) { //Debounce long prevTime = btn_time.tv_nsec; clock_gettime(CLOCK_MONOTONIC, &btn_time); if ((btn_time.tv_nsec - prevTime) < DEBOUNCE) { return; } //Send trigger pulse printf("BTN pushed\n"); digitalWrite(TRIG, LOW); digitalWrite(TRIG, HIGH); DelayMicrosecondsNoSleep(20); digitalWrite(TRIG, LOW); }