138AER_from_chip::AER_from_chip(uint8_t
id, uint8_t reqPin, uint8_t ackPin,
volatile uint8_t dataPins[], uint8_t numDataPins, uint8_t delay,
bool handshakeActiveLow,
bool dataActiveLow, uint8_t type) {
157 attachInterrupt(digitalPinToInterrupt(reqPin),
aer0_ISR, CHANGE);
161 attachInterrupt(digitalPinToInterrupt(reqPin),
aer1_ISR, CHANGE);
165 attachInterrupt(digitalPinToInterrupt(reqPin),
aer2_ISR, CHANGE);
169 attachInterrupt(digitalPinToInterrupt(reqPin),
aer3_ISR, CHANGE);
173 attachInterrupt(digitalPinToInterrupt(reqPin),
aer4_ISR, CHANGE);
177 attachInterrupt(digitalPinToInterrupt(reqPin),
aer5_ISR, CHANGE);
181 attachInterrupt(digitalPinToInterrupt(reqPin),
aer6_ISR, CHANGE);
185 attachInterrupt(digitalPinToInterrupt(reqPin),
aer7_ISR, CHANGE);
199 #if defined(TEENSYDUINO)
212 #if defined(TEENSYDUINO)
276 Wire.setClock(400000);
312 uint8_t count_shift = 0;
313 uint8_t transmission_success = 0;
314 Wire.beginTransmission((uint8_t) 32U);
315 Wire.write((uint8_t) 18U);
317 transmission_success = Wire.endTransmission(
false);
318 if(transmission_success>0){
323 transmission_success = Wire.requestFrom((uint8_t) 32U,2,
true);
324 if(transmission_success != 2){
329 data |= Wire.read()<<8*count_shift;
331 data |= Wire.read()<<8*count_shift;
334 Wire.beginTransmission((uint8_t) 33U);
335 Wire.write((uint8_t) 18U);
336 transmission_success = Wire.endTransmission(
false);
337 if(transmission_success>0){
342 transmission_success = Wire.requestFrom((uint8_t) 33U,2,
true);
343 if(transmission_success != 2){
347 data |= Wire.read()<<8*count_shift;
349 data |= Wire.read()<<8*count_shift;
361 #if defined(TEENSYDUINO)
362 data |= digitalReadFast(
_dataPins[i]) << i;
static volatile AER_from_chip * inst[8]
volatile uint8_t * _dataPins
void ackWrite(bool val) volatile
static volatile uint8_t port[8]
uint32_t getData() volatile
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]
void recordEvent() volatile
static void configure(uint8_t id, uint8_t config, uint8_t data)
static volatile bool active[8]
static volatile uint8_t type[8]
static volatile uint8_t req_delay[8]
static volatile uint8_t req_pin[8]
AER_from_chip(uint8_t id, uint8_t reqPin, uint8_t ackPin, volatile uint8_t dataPins[], uint8_t numDataPins, uint8_t delay=0, bool activeLow=false, bool dataActiveLow=false, uint8_t type=ASYNC_4Phase_Chigh_Dhigh)
static volatile uint8_t ack_pin[8]
volatile unsigned long offset_time
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)
@ IN_CONF_ASYNC_FROM_CHIP6
@ IN_CONF_ASYNC_FROM_CHIP5
@ IN_CONF_ASYNC_FROM_CHIP2
@ IN_CONF_ASYNC_FROM_CHIP0
@ IN_CONF_ASYNC_FROM_CHIP3
@ IN_CONF_ASYNC_FROM_CHIP7
@ IN_CONF_ASYNC_FROM_CHIP1
@ IN_CONF_ASYNC_FROM_CHIP4
@ OUT_ERROR_UNKNOWN_CONFIGURATION
@ OUT_ERROR_PERIPHERAL_INTERFACE_NOT_READY
@ OUT_ERROR_CONFIGURATION_OUT_OF_BOUNDS
@ 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...