How is data passed from one domain to the other.
On top of this:

  • Data can be persistent or transient
  • The source of the data may either inform or not inform the receiver that the data is present
  • The receiver can request new data when its ready

In Band and Out of Band

In-band:

  • Control information is communicated in the same way data is transmitted Out-of-band:
  • Control information is transmitted using different techniques than how data is transmitted

An escape char \ is an in-band way to transmitting a control signal when printing printf

An out-of-band way to transmitting control signals is using a clock externally that tells you when your data is valid

Data Persistance

  • Persistent data is accepted at the convenience of the consumer
  • Transient data must be accepted in a time frame

Bouncing

  • Mechanical switches are noisy due to bouncing
  • You can buy debounced switches or implement your own mechanism Software Fixes
  • Wait an amount of time using a delay loop (WHAT??!!!)
    • Empty for loop (declare i volatile)
  • Wait until the signal is stable
#define DELAY 750
uint32_t current_time_x = HAL_GetTick();
volatile static uint32_t last_debounce_time_x = 0;
if ((current_time_x - last_debounce_time_x) > DELAY) {
...
}

Hardware Fixes

  • Wait a fixed amount of time using a delay loop
  • Slow down the signal transitions with a capacitor
  • Use a more expensive switch