Ejemplo n.º 1
0
/* Assumes MSB first. */
void shift_out(uint8_t data) {
    for(uint8_t i = 0; i < 8; i++) {
        /* Write bit to data port. */
        if (0 == (data & _BV(7 - i))) {
            digital_write(SHIFT_OUT_DATA, LOW);
        } else {
            digital_write(SHIFT_OUT_DATA, HIGH);
        }

        /* Pulse clock to write next bit. */
        digital_write(SHIFT_OUT_CLOCK, LOW);
        digital_write(SHIFT_OUT_CLOCK, HIGH);
    }
}
Ejemplo n.º 2
0
/* Assumes MSB first. */
uint8_t shift_in(void) {
    uint8_t byte = 0;
    uint8_t pin_value;

    for(int i=0; i<8; i++) {
        pin_value = digital_read(SHIFT_IN_DATA);
        byte |= (pin_value << ((8 - 1) - i));
        /* printf("%d = %d \n", ((8 - 1) - i), pin_value); */

        /* Pulse clock to write next bit. */
        digital_write(SHIFT_IN_CLOCK, LOW);
        digital_write(SHIFT_IN_CLOCK, HIGH);
    }
    return byte;
}
Ejemplo n.º 3
0
int main(void) {    
    
    init();
    uart_init();
    stdout = &uart_output;
    stdin  = &uart_input;
    
    uint8_t i;
    uint8_t register_value;
    uint8_t pin_value;

    while (1) {
        
        /* Read in parallel input by setting SH/LD low. */
        digital_write(&PORT_SHLD, SHLD, 0); 
        //_delay_ms(5);
        
        /* Freeze data by setting SH/LD high. When SH/LD is high data enters */
        /* to reqisters from SER input and shifts one place to the right     */
        /* (Q0 -> Q1 -> Q2, etc.) with each positive-going clock transition. */
        digital_write(&PORT_SHLD, SHLD, 1);
        
        register_value = 0;

        for(i=0; i<8; i++) {
            pin_value = digital_read(PIN_QH, QH);  
            register_value |= (pin_value << ((8 - 1) - i));          

            printf("%d = %d \n", ((8 - 1) - i), pin_value);
            
            /* Pulse clock input (CP) LOW-HIGH to read next bit. */
            digital_write(&PORT_CLK, CLK, 0);
            //_delay_ms(5);
            digital_write(&PORT_CLK, CLK, 1);
        }
        printf("%d \n", register_value);
        
        _delay_ms(2000);
        
    }
    return 0;
  
}
Ejemplo n.º 4
0
int main(void) {    
    
    init();
    
    for(uint16_t i = 0; i < 0xffff; i++) {

        /* Shift high byte first to shift register. */
        shift_out(i >> 8); 
        shift_out(i & 0xff);

        /* Pulse latch to transfer data from shift registers */
        /* to storage registers. */
        digital_write(LATCH, LOW); 
        digital_write(LATCH, HIGH);

        _delay_ms(50);
    }
    return 0;
  
}
Ejemplo n.º 5
0
void io_init(void)
{
  /* Extruder 0 Heater pin */
  pin_mode(EXTRUDER_0_HEATER_PORT, EXTRUDER_0_HEATER_PIN, OUTPUT);
  extruder_heater_off();

  /* Heated Bed 0 Heater pin */
  pin_mode(HEATED_BED_0_HEATER_PORT, HEATED_BED_0_HEATER_PIN, OUTPUT);
  heated_bed_off();

  /* setup I/O pins */
  pin_mode(STEPPERS_RESET_PORT, STEPPERS_RESET_PIN, OUTPUT);
  digital_write(STEPPERS_RESET_PORT, STEPPERS_RESET_PIN, 1); /* Disable reset for all stepper motors */

  pin_mode(X_STEP_PORT, X_STEP_PIN, OUTPUT);
  pin_mode(X_DIR_PORT, X_DIR_PIN, OUTPUT);
  pin_mode(X_ENABLE_PORT, X_ENABLE_PIN, OUTPUT);
  x_enable();
  pin_mode(X_MIN_PORT, X_MIN_PIN, INPUT);

  pin_mode(Y_STEP_PORT, Y_STEP_PIN, OUTPUT);
  pin_mode(Y_DIR_PORT, Y_DIR_PIN, OUTPUT);
  pin_mode(Y_ENABLE_PORT, Y_ENABLE_PIN, OUTPUT);
  y_enable();
  pin_mode(Y_MIN_PORT, Y_MIN_PIN, INPUT);

  pin_mode(Z_STEP_PORT, Z_STEP_PIN, OUTPUT);
  pin_mode(Z_DIR_PORT, Z_DIR_PIN, OUTPUT);
  pin_mode(Z_ENABLE_PORT, Z_ENABLE_PIN, OUTPUT);
  z_enable();
  pin_mode(Z_MIN_PORT, Z_MIN_PIN, INPUT);

  pin_mode(E_STEP_PORT, E_STEP_PIN, OUTPUT);
  pin_mode(E_DIR_PORT, E_DIR_PIN, OUTPUT);
  pin_mode(E_ENABLE_PORT, E_ENABLE_PIN, OUTPUT);
  e_enable();

  pin_mode(EXTRUDER_0_FAN_PORT, EXTRUDER_0_FAN_PIN, OUTPUT);
  extruder_fan_off();

  adc_init();
}
Ejemplo n.º 6
0
void shift_out_latch(void) {
    digital_write(SHIFT_OUT_LATCH, LOW);
    digital_write(SHIFT_OUT_LATCH, HIGH);
}
Ejemplo n.º 7
0
void shift_in_latch(void) {
    digital_write(SHIFT_IN_LATCH, LOW);
    digital_write(SHIFT_IN_LATCH, HIGH);
}
Ejemplo n.º 8
0
void digital_write(const unsigned char& mbed_pin, const bool& mode)
{
	digital_write(get_port(mbed_pin), get_pin(mbed_pin), mode);
	return;
}