mirror of
https://github.com/arduino/Arduino.git
synced 2025-02-21 15:54:39 +01:00
Merged latest changes in AVR arduino core
This commit is contained in:
parent
b95a015284
commit
289b836046
@ -141,16 +141,22 @@ void Serial_::end(void)
|
|||||||
void Serial_::accept(void)
|
void Serial_::accept(void)
|
||||||
{
|
{
|
||||||
ring_buffer *buffer = &cdc_rx_buffer;
|
ring_buffer *buffer = &cdc_rx_buffer;
|
||||||
int c = USB_Recv(CDC_RX);
|
|
||||||
int i = (unsigned int)(buffer->head+1) % SERIAL_BUFFER_SIZE;
|
int i = (unsigned int)(buffer->head+1) % SERIAL_BUFFER_SIZE;
|
||||||
|
|
||||||
// if we should be storing the received character into the location
|
// if we should be storing the received character into the location
|
||||||
// just before the tail (meaning that the head would advance to the
|
// just before the tail (meaning that the head would advance to the
|
||||||
// current location of the tail), we're about to overflow the buffer
|
// current location of the tail), we're about to overflow the buffer
|
||||||
// and so we don't write the character or advance the head.
|
// and so we don't write the character or advance the head.
|
||||||
if (i != buffer->tail) {
|
|
||||||
|
// while we have room to store a byte
|
||||||
|
while (i != buffer->tail) {
|
||||||
|
int c = USB_Recv(CDC_RX);
|
||||||
|
if (c == -1)
|
||||||
|
break; // no more data
|
||||||
buffer->buffer[buffer->head] = c;
|
buffer->buffer[buffer->head] = c;
|
||||||
buffer->head = i;
|
buffer->head = i;
|
||||||
|
|
||||||
|
i = (unsigned int)(buffer->head+1) % SERIAL_BUFFER_SIZE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -228,6 +228,8 @@ size_t Print::printFloat(double number, uint8_t digits)
|
|||||||
|
|
||||||
if (isnan(number)) return print("nan");
|
if (isnan(number)) return print("nan");
|
||||||
if (isinf(number)) return print("inf");
|
if (isinf(number)) return print("inf");
|
||||||
|
if (number > 4294967040.0) return print ("ovf"); // constant determined empirically
|
||||||
|
if (number <-4294967040.0) return print ("ovf"); // constant determined empirically
|
||||||
|
|
||||||
// Handle negative numbers
|
// Handle negative numbers
|
||||||
if (number < 0.0)
|
if (number < 0.0)
|
||||||
|
@ -29,6 +29,7 @@ Version Modified By Date Comments
|
|||||||
09/11/25 Fixed timer0 from being excluded
|
09/11/25 Fixed timer0 from being excluded
|
||||||
0006 D Mellis 09/12/29 Replaced objects with functions
|
0006 D Mellis 09/12/29 Replaced objects with functions
|
||||||
0007 M Sproul 10/08/29 Changed #ifdefs from cpu to register
|
0007 M Sproul 10/08/29 Changed #ifdefs from cpu to register
|
||||||
|
0008 S Kanemoto 12/06/22 Fixed for Leonardo by @maris_HY
|
||||||
*************************************************/
|
*************************************************/
|
||||||
|
|
||||||
#include <avr/interrupt.h>
|
#include <avr/interrupt.h>
|
||||||
@ -85,10 +86,10 @@ volatile uint8_t timer5_pin_mask;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
// MLS: This does not make sense, the 3 options are the same
|
|
||||||
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
|
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
|
||||||
|
|
||||||
#define AVAILABLE_TONE_PINS 1
|
#define AVAILABLE_TONE_PINS 1
|
||||||
|
#define USE_TIMER2
|
||||||
|
|
||||||
const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 3, 4, 5, 1, 0 */ };
|
const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 3, 4, 5, 1, 0 */ };
|
||||||
static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255, 255, 255, 255, 255 */ };
|
static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255, 255, 255, 255, 255 */ };
|
||||||
@ -96,13 +97,23 @@ static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255, 255, 255, 255, 25
|
|||||||
#elif defined(__AVR_ATmega8__)
|
#elif defined(__AVR_ATmega8__)
|
||||||
|
|
||||||
#define AVAILABLE_TONE_PINS 1
|
#define AVAILABLE_TONE_PINS 1
|
||||||
|
#define USE_TIMER2
|
||||||
|
|
||||||
const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 1 */ };
|
const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 1 */ };
|
||||||
static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255 */ };
|
static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255 */ };
|
||||||
|
|
||||||
|
#elif defined(__AVR_ATmega32U4__)
|
||||||
|
|
||||||
|
#define AVAILABLE_TONE_PINS 1
|
||||||
|
#define USE_TIMER3
|
||||||
|
|
||||||
|
const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 3 /*, 1 */ };
|
||||||
|
static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255 */ };
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
#define AVAILABLE_TONE_PINS 1
|
#define AVAILABLE_TONE_PINS 1
|
||||||
|
#define USE_TIMER2
|
||||||
|
|
||||||
// Leave timer 0 to last.
|
// Leave timer 0 to last.
|
||||||
const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 1, 0 */ };
|
const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 1, 0 */ };
|
||||||
@ -480,8 +491,7 @@ void noTone(uint8_t _pin)
|
|||||||
digitalWrite(_pin, 0);
|
digitalWrite(_pin, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
#ifdef USE_TIMER0
|
||||||
#if !defined(__AVR_ATmega8__)
|
|
||||||
ISR(TIMER0_COMPA_vect)
|
ISR(TIMER0_COMPA_vect)
|
||||||
{
|
{
|
||||||
if (timer0_toggle_count != 0)
|
if (timer0_toggle_count != 0)
|
||||||
@ -501,6 +511,7 @@ ISR(TIMER0_COMPA_vect)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef USE_TIMER1
|
||||||
ISR(TIMER1_COMPA_vect)
|
ISR(TIMER1_COMPA_vect)
|
||||||
{
|
{
|
||||||
if (timer1_toggle_count != 0)
|
if (timer1_toggle_count != 0)
|
||||||
@ -520,6 +531,7 @@ ISR(TIMER1_COMPA_vect)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef USE_TIMER2
|
||||||
ISR(TIMER2_COMPA_vect)
|
ISR(TIMER2_COMPA_vect)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -541,12 +553,10 @@ ISR(TIMER2_COMPA_vect)
|
|||||||
// *timer2_pin_port &= ~(timer2_pin_mask); // keep pin low after stop
|
// *timer2_pin_port &= ~(timer2_pin_mask); // keep pin low after stop
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef USE_TIMER3
|
||||||
//#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
|
|
||||||
#if 0
|
|
||||||
|
|
||||||
ISR(TIMER3_COMPA_vect)
|
ISR(TIMER3_COMPA_vect)
|
||||||
{
|
{
|
||||||
if (timer3_toggle_count != 0)
|
if (timer3_toggle_count != 0)
|
||||||
@ -563,7 +573,10 @@ ISR(TIMER3_COMPA_vect)
|
|||||||
*timer3_pin_port &= ~(timer3_pin_mask); // keep pin low after stop
|
*timer3_pin_port &= ~(timer3_pin_mask); // keep pin low after stop
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef USE_TIMER4
|
||||||
ISR(TIMER4_COMPA_vect)
|
ISR(TIMER4_COMPA_vect)
|
||||||
{
|
{
|
||||||
if (timer4_toggle_count != 0)
|
if (timer4_toggle_count != 0)
|
||||||
@ -580,7 +593,10 @@ ISR(TIMER4_COMPA_vect)
|
|||||||
*timer4_pin_port &= ~(timer4_pin_mask); // keep pin low after stop
|
*timer4_pin_port &= ~(timer4_pin_mask); // keep pin low after stop
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef USE_TIMER5
|
||||||
ISR(TIMER5_COMPA_vect)
|
ISR(TIMER5_COMPA_vect)
|
||||||
{
|
{
|
||||||
if (timer5_toggle_count != 0)
|
if (timer5_toggle_count != 0)
|
||||||
@ -597,5 +613,4 @@ ISR(TIMER5_COMPA_vect)
|
|||||||
*timer5_pin_port &= ~(timer5_pin_mask); // keep pin low after stop
|
*timer5_pin_port &= ~(timer5_pin_mask); // keep pin low after stop
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -35,7 +35,7 @@
|
|||||||
// -std=c++0x
|
// -std=c++0x
|
||||||
|
|
||||||
class __FlashStringHelper;
|
class __FlashStringHelper;
|
||||||
#define F(string_literal) (reinterpret_cast<__FlashStringHelper *>(PSTR(string_literal)))
|
#define F(string_literal) (reinterpret_cast<const __FlashStringHelper *>(PSTR(string_literal)))
|
||||||
|
|
||||||
// An inherited class for holding the result of a concatenation. These
|
// An inherited class for holding the result of a concatenation. These
|
||||||
// result objects are assumed to be writable by subsequent concatenations.
|
// result objects are assumed to be writable by subsequent concatenations.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user