Skip to main content
Code formatting.
Source Link
Edgar Bonet
  • 45.2k
  • 4
  • 42
  • 81

I changed 2 Arduino Libraries because i have a 9 bit data protocol, now i want use the amended Libraries on my Arduino mega2560.

At first i have set a 9 bit data mode that can i do when i set the UCSZ12 bit on 1(original code under the following link: https://github.com/arduino/Arduino/blob/master/hardware/arduino/avr/cores/arduino/HardwareSerial.cpp#L103 ):

void HardwareSerial::begin(unsigned long baud, byte config)

...

sbi(*_ucsrb, RXCIE0);

sbi(*_ucsrb, UCSZ12); // chance: set 9-bit data mode on 1

cbi(*_ucsrb, UDRIE0);

...

void HardwareSerial::begin(unsigned long baud, byte config)
  ...
  sbi(*_ucsrb, RXCIE0);
  sbi(*_ucsrb, UCSZ12);  // chance: set 9-bit data mode on 1
  cbi(*_ucsrb, UDRIE0);
  ...

At second i want throw an interrupt when the 9th bit is an 1 that can i do when i change the code like the follow (original code under the following link : https://github.com/arduino/Arduino/blob/master/hardware/arduino/avr/cores/arduino/HardwareSerial_private.h#L101 ):

void HardwareSerial::_rx_complete_irq(void)

if (bit_is_clear(*_ucsra, UPE0)) {

void HardwareSerial::_rx_complete_irq(void)
  if (bit_is_clear(*_ucsra, UPE0)) {
    bool is_address = UCSR0B & _BV(RXB80);
 
    unsigned char c = *_udr;   
         
 if (is_address) {
 
      do_something_with_address(c);
 
      return;
 
    }
  rx_buffer_index_t i = (unsigned int)(_rx_buffer_head + 1) % SERIAL_RX_BUFFER_SIZE;
...

rx_buffer_index_t i = (unsigned int)(_rx_buffer_head + 1) % SERIAL_RX_BUFFER_SIZE;

...

What must i do with the two file´s?

How can i use the changed Libraries?

I changed 2 Arduino Libraries because i have a 9 bit data protocol, now i want use the amended Libraries on my Arduino mega2560.

At first i have set a 9 bit data mode that can i do when i set the UCSZ12 bit on 1(original code under the following link: https://github.com/arduino/Arduino/blob/master/hardware/arduino/avr/cores/arduino/HardwareSerial.cpp#L103 ):

void HardwareSerial::begin(unsigned long baud, byte config)

...

sbi(*_ucsrb, RXCIE0);

sbi(*_ucsrb, UCSZ12); // chance: set 9-bit data mode on 1

cbi(*_ucsrb, UDRIE0);

...

At second i want throw an interrupt when the 9th bit is an 1 that can i do when i change the code like the follow (original code under the following link : https://github.com/arduino/Arduino/blob/master/hardware/arduino/avr/cores/arduino/HardwareSerial_private.h#L101 ):

void HardwareSerial::_rx_complete_irq(void)

if (bit_is_clear(*_ucsra, UPE0)) {

bool is_address = UCSR0B & _BV(RXB80);
 
unsigned char c = *_udr;   
         
 if (is_address) {
 
  do_something_with_address(c);
 
  return;
 
}

rx_buffer_index_t i = (unsigned int)(_rx_buffer_head + 1) % SERIAL_RX_BUFFER_SIZE;

...

What must i do with the two file´s?

How can i use the changed Libraries?

I changed 2 Arduino Libraries because i have a 9 bit data protocol, now i want use the amended Libraries on my Arduino mega2560.

At first i have set a 9 bit data mode that can i do when i set the UCSZ12 bit on 1(original code under the following link: https://github.com/arduino/Arduino/blob/master/hardware/arduino/avr/cores/arduino/HardwareSerial.cpp#L103 ):

void HardwareSerial::begin(unsigned long baud, byte config)
  ...
  sbi(*_ucsrb, RXCIE0);
  sbi(*_ucsrb, UCSZ12);  // chance: set 9-bit data mode on 1
  cbi(*_ucsrb, UDRIE0);
  ...

At second i want throw an interrupt when the 9th bit is an 1 that can i do when i change the code like the follow (original code under the following link : https://github.com/arduino/Arduino/blob/master/hardware/arduino/avr/cores/arduino/HardwareSerial_private.h#L101 ):

void HardwareSerial::_rx_complete_irq(void)
  if (bit_is_clear(*_ucsra, UPE0)) {
    bool is_address = UCSR0B & _BV(RXB80);
    unsigned char c = *_udr;   
    if (is_address) {
      do_something_with_address(c);
      return;
    }
  rx_buffer_index_t i = (unsigned int)(_rx_buffer_head + 1) % SERIAL_RX_BUFFER_SIZE;
...

What must i do with the two file´s?

How can i use the changed Libraries?

Source Link
sniffi
  • 49
  • 1
  • 8

Safe changes in the Arduino Libraries and use them

I changed 2 Arduino Libraries because i have a 9 bit data protocol, now i want use the amended Libraries on my Arduino mega2560.

At first i have set a 9 bit data mode that can i do when i set the UCSZ12 bit on 1(original code under the following link: https://github.com/arduino/Arduino/blob/master/hardware/arduino/avr/cores/arduino/HardwareSerial.cpp#L103 ):

void HardwareSerial::begin(unsigned long baud, byte config)

...

sbi(*_ucsrb, RXCIE0);

sbi(*_ucsrb, UCSZ12); // chance: set 9-bit data mode on 1

cbi(*_ucsrb, UDRIE0);

...

At second i want throw an interrupt when the 9th bit is an 1 that can i do when i change the code like the follow (original code under the following link : https://github.com/arduino/Arduino/blob/master/hardware/arduino/avr/cores/arduino/HardwareSerial_private.h#L101 ):

void HardwareSerial::_rx_complete_irq(void)

if (bit_is_clear(*_ucsra, UPE0)) {

bool is_address = UCSR0B & _BV(RXB80);

unsigned char c = *_udr;   
         
if (is_address) {

  do_something_with_address(c);

  return;

}

rx_buffer_index_t i = (unsigned int)(_rx_buffer_head + 1) % SERIAL_RX_BUFFER_SIZE;

...

What must i do with the two file´s?

How can i use the changed Libraries?