// Set return state of digital output-pin, uint8_t readDigitalOutput(uint8_t id) { uint8_t state; uint8_t binaryRead; binaryRead = pfio_read_output(); if( (binaryRead & (1 << (id))) == (1 << (id)) ) state = 1; else state = 0; return state; }
// Set digital output-pin and return state, uint8_t writeDigitalOutput(uint8_t id, uint8_t onOff) { uint8_t state; state = onOff; pfio_digital_write(id, state); uint8_t binaryRead; binaryRead = pfio_read_output(); if( (binaryRead & (1 << (id))) == (1 << (id)) ) state = 1; else state = 0; return state; }
void pfio_digital_write(char pin_number, char value) { char pin_bit_mask = pfio_get_pin_bit_mask(pin_number); char old_pin_values = pfio_read_output(); char new_pin_values; if (value > 0) new_pin_values = old_pin_values | pin_bit_mask; else new_pin_values = old_pin_values & ~pin_bit_mask; #ifdef VERBOSE_MODE printf("digital_write: pin number %d, value %d\n", pin_number, value); printf("pin bit mask: 0x%x\n", pin_bit_mask); printf("old pin values: 0x%x\n", old_pin_values); printf("new pin values: 0x%x\n", new_pin_values); printf("\n"); #endif pfio_write_output(new_pin_values); }