int ReadPort(int port) { static int count=0; int data = pin_get(BTDO); if (data) data = 0xFF; // assert all bit, to allow recipient to pick favorite. return ~data; // reader seem to want things inverted ? }
Debounce *debounce_init(Pin *pin){ Debounce *debounce = (Stepper * ) malloc( sizeof( Stepper ) ); debounce->pin = pin; debounce->state = pin_get(pin); debounce->last_state = !debounce->state; debounce->time = 0; return debounce; }
static int sff_8431_poll_present(struct nfp_phymod *phy) { struct nfp_phymod_priv *priv = phy->priv; struct sff_8431 *sff = phy->sff.priv; int err; err = pin_get(priv->nfp, &sff->in.present); if (err < 0) return err; return err ? 0 : 1; }
// Called when channel B has changed static void __encChB(const IOPin* io,boolean val, volatile void* data){ QUADRATURE* encoder = (QUADRATURE*)data; boolean chA = pin_get(encoder->channelA); if(val ^ chA){ encoder->encoder.counter--; }else{ encoder->encoder.counter++; } if(encoder->encoder.interpolate){ _encoder_tick(&encoder->encoder); } }
static int sff_8431_status_fault(struct nfp_phymod *phy, u32 *tx_status, u32 *rx_status) { struct sff_8431 *sff = phy->sff.priv; int err; err = pin_get(phy->priv->nfp, &sff->in.tx_fault); if (err < 0) return err; if (tx_status) *tx_status = err; if (rx_status) *rx_status = 0; return 0; }
int main(void) { pin_config_out(g_led); pin_config_out(r_led); pin_config_out(e_heat); pin_config_out(b_heat); pin_config_out(buzzer); pin_low(buzzer); Stepper *stepper_x = stepper_init(x_step,x_dir,motor_enb); Stepper *stepper_y = stepper_init(y_step,y_dir,motor_enb); Stepper *stepper_z = stepper_init(z_step,z_dir,motor_enb); // stepper_start_frame(); Uart *uart = uart_init(); console_init(); thermistor_init(); // console_prompt(); pin_config_in(x_stop); pin_high(r_led); char dir = 1; int count = 0; unsigned int hit = 0; while(1) { // dir = pin_get(EXP2); stepper_dir(stepper_x,dir); stepper_dir(stepper_y,dir); stepper_dir(stepper_z,dir); if(dir == 1) { if(pin_get(x_stop)==0 ) { if(hit < 2) { stepper_step(stepper_x); stepper_step(stepper_y); stepper_step(stepper_z); count++; } } else { hit++; if(hit < 2) { printf("%i\n",count); printf("HIT!\n"); dir = 0; hit = 0; } } } if(dir == 0) { stepper_step(stepper_x); stepper_step(stepper_y); stepper_step(stepper_z); count--; if(count == 0) { dir = 1; } } _delay_us(50); /* count++; if(count == 1000){ pin_toggle(g_led); count = 0; // pin_toggle(stepper_x->direction); // pin_toggle(stepper_y->direction); // pin_toggle(stepper_z->direction); } */ } }
byte btn_get(Btn *btn){ if(btn->mode) return pin_get(btn->pin); else return !pin_get(btn->pin); }
unsigned char ds_pin_get(){ pin_configure_as_input(PORT, PIN); return pin_get( PORT, PIN ); }