126AER_to_chip::AER_to_chip(uint8_t
id, uint8_t reqPin, uint8_t ackPin,
volatile uint8_t dataPins[], uint8_t numDataPins, uint8_t delay,
bool activeLow)
130 _dataPins = dataPins;
131 _numDataPins = numDataPins;
133 _activeLow = activeLow;
148 unsigned long t0 = micros();
149 bool handshakeStatus =
true;
158 handshakeStatus =
false;
178 return handshakeStatus;
185bool AER_to_chip::setupPins() {
191 for(
int i = 0; i < _numDataPins; i++) {
203bool AER_to_chip::ackRead()
volatile
205 #if defined(TEENSYDUINO)
206 return digitalReadFast(_ackPin)^_activeLow;
208 return digitalRead(_ackPin)^_activeLow;
217void AER_to_chip::reqWrite(
bool val)
volatile
223 #if defined(TEENSYDUINO)
224 digitalWriteFast(_reqPin, val^_activeLow);
226 digitalWrite(_reqPin, val^_activeLow);
236void AER_to_chip::setData(uint32_t data)
volatile {
237 for (
int i=0; i<_numDataPins; i++) {
238 bool bit = bitRead(data, i)^_activeLow;
239 #if defined(TEENSYDUINO)
240 digitalWriteFast(_dataPins[i], bit);
242 digitalWrite(_dataPins[i], bit);
AER_to_chip(uint8_t id, uint8_t reqPin, uint8_t ackPin, volatile uint8_t dataPins[], uint8_t numDataPins, uint8_t delay=0, bool activeLow=false)
static void send_packet(uint8_t id, uint32_t data, uint8_t header)
static volatile bool data_lowactive[8]
static volatile uint8_t data_width[8]
static volatile bool hs_lowactive[8]
static volatile uint8_t data_pins[8][32]
static volatile AER_to_chip * inst[8]
static void configure(uint8_t id, uint8_t config, uint8_t data)
static volatile bool active[8]
static volatile uint8_t type[8]
bool dataWrite(uint32_t data) volatile
static volatile uint8_t req_delay[8]
static volatile uint8_t req_pin[8]
static volatile uint8_t ack_pin[8]
void error_message(uint8_t error_header, uint8_t source_header, uint32_t value, uint8_t sub_source_header)
void send_data32(uint8_t header, uint32_t value, bool is_confirmation)
void send_config(uint8_t header, uint8_t config_header, uint8_t value)
@ OUT_ERROR_INTERFACE_NOT_ACTIVE
@ OUT_ERROR_UNKNOWN_CONFIGURATION
@ OUT_ERROR_ASYNC_HS_TIMEOUT
@ OUT_ERROR_CONFIGURATION_OUT_OF_BOUNDS
#define AER_HANDSHAKE_TIMEOUT
@ ASYNC_4Phase_Clow_Dhigh
bool reserve_output_pin(uint8_t id, uint8_t from_instruction)
bool reserve_input_pin(uint8_t id, uint8_t from_instruction)
void delay20ns(uint8_t clocks)
kinda accurate for CPU ferquencies from 400MHz-2GHz, below the resolution becomes more coarse as it m...