Exemplo n.º 1
0
void check_boot_request (void)
{
  if (digital_read (4, (1<<29)) == 0)
  {
    WDT_Init (WDT_CLKSRC_PCLK, WDT_MODE_RESET);
    WDT_Start (10);
    while (1);
  }
}
Exemplo 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;
}
Exemplo 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;
  
}
Exemplo n.º 4
0
bool digital_read(const unsigned char& mbed_pin)
{
	return digital_read(get_port(mbed_pin), get_pin(mbed_pin));
}