Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- size_t SoftwareSerial::write(uint8_t b) {
- if (!m_txValid) return 0;
- if (m_invert) b = ~b;
- if (!m_intTxEnabled)
- // Disable interrupts in order to get a clean transmit
- cli();
- if (m_txEnableValid) digitalWrite(m_txEnablePin, HIGH);
- unsigned long wait = m_bitTime;
- digitalWrite(m_txPin, HIGH);
- unsigned long start = ESP.getCycleCount();
- // Start bit : HIGH if inverted logic, otherwise LOW
- digitalWrite(m_txPin, m_invert);
- //------------------------
- WAIT;
- for (int i = 0; i < 8; i++) {
- digitalWrite(m_txPin, (b & 1) ? HIGH : LOW);
- WAIT;
- b >>= 1;
- }
- // Stop bit : LOW if inverted logic, otherwise HIGH
- digitalWrite(m_txPin, !m_invert);
- //----------------------------
- WAIT;
- if (m_txEnableValid) digitalWrite(m_txEnablePin, LOW);
- if (!m_intTxEnabled)
- sei();
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement