1
0
mirror of https://github.com/arduino/Arduino.git synced 2024-12-03 14:24:15 +01:00
Commit Graph

454 Commits

Author SHA1 Message Date
Cristian Maglie
00f23d3aad sam: Fixed initialization of UART/USART mode register 2015-01-14 00:08:59 +01:00
Chris
7e9cf6d612 sam: updated UART/USART modes 2015-01-09 20:25:09 +00:00
Cristian Maglie
20ac20f629 Arduino custom type boolean is now mapped to bool type
Fixes #2151
Fixes #2147
2015-01-07 14:56:19 +01:00
Cristian Maglie
5e97168fbc sam: USART modes now fails if used on UART 2015-01-06 15:47:44 +01:00
Cristian Maglie
37ea166e19 sam: refined UART/USART class inheritance
Let Usart inherit all methods from Uart.
2015-01-05 15:35:32 +01:00
Cristian Maglie
16d836108f sam: fix code format and indent in UART/USART class 2015-01-05 15:34:09 +01:00
Collin Kidder
cabfd8ed21 Fixed flush so that it actually is sure to flush all outstanding data. 2015-01-04 13:37:28 -05:00
Collin Kidder
76280e8778 Correct an issue where write could send data out of order. 2014-12-31 08:42:26 -05:00
Collin Kidder
eff20deb27 Add ability to set interrupt priority for UART/USARTs. 2014-12-24 10:36:40 -05:00
Collin Kidder
2fedb00552 Switch all of the transmit interrupt code to UARTClass. Also, turn USARTClass into a stub because it did nothing differently from the UART code anyway. Now all serial ports use transmit interrupts. 2014-12-24 10:20:37 -05:00
Collin Kidder
bb341c6d92 Modifications to make serial transmit interrupt work more reliably. Also, added the availableForWrite function. 2014-12-23 22:37:58 -05:00
Collin Kidder
4eb05c303b Change RingBuffer to have buffer size of 128 and also set its members volatile since they are all accessed and modified in interrupt handlers. 2014-12-23 22:36:35 -05:00
Collin Kidder
065459c18f Implement transmit buffering with interrupts for USART devices 2014-12-21 20:57:08 -05:00
Cristian Maglie
b9e186e45a Upped version to 1.6.0 2014-11-18 14:48:01 +01:00
Cristian Maglie
d1714a9fb8 [sam] Added -MMD flag to tell compiler to produce dependencies files
Now a full rebuild of the sketch is triggered only if needed.
2014-10-22 13:36:14 +02:00
Cristian Maglie
3687289727 Merge pull request #2330 from spiritinlife/ide-1.5.x
Add #include "Print.h" in Server.h    Ide 1.5.x
2014-10-01 13:29:29 +02:00
Cristian Maglie
21939e6f89 [sam] Fixed compile error when using math functions
Fixes #2338
2014-09-30 17:34:25 +02:00
George Chailazopoulos
2c289ace73 Add #include "Print.h" in Server.h 2014-09-26 22:59:02 +03:00
Cristian Maglie
974613a0a2 [sam] Fixed architecture specific macro digitalPinToTimer, added comment to uninplemented portModeRegister
Fix #1833
2014-09-22 00:38:02 +02:00
Cristian Maglie
84518e442c Fixed attribution rights for SAM delayMicroseconds function 2014-09-16 12:31:16 +02:00
Cristian Maglie
8018a26e3d Merge pull request #2299 from cmaglie/ide-1.5.x-spi-updates
Missing SPI Transaction API methods on Due (SAM3X)
2014-09-12 14:07:03 +02:00
Cristian Maglie
69e37647a6 Ported #1397 to SAM. 2014-09-12 12:06:00 +02:00
Cristian Maglie
6a5b82f062 [sam] Implementation of SPI multibyte transfer 2014-09-11 17:50:00 +02:00
Cristian Maglie
5f88564b2b [sam] Simplified formula for SPI speed 2014-09-11 13:57:08 +02:00
Cristian Maglie
848dd39313 [sam] SPI library: added SPI_HAS_EXTENDED_CS_PIN_HANDLING flag
This allows to check if SPI provides extended API to allow automatic
CS pin handling.
2014-09-11 13:57:07 +02:00
Cristian Maglie
11cf45d6d6 Fix indent and small cosmetic changes 2014-09-10 18:22:02 +02:00
Cristian Maglie
37ee800abd Correct implementation of gcc specific internal functions
The following empty stubs has been replaced by the gcc
flag -fno-threadsafe-static:

  int __cxa_guard_acquire(__guard *);
  void __cxa_guard_release (__guard *);
  void __cxa_guard_abort (__guard *);

The following empty stubs has been moved into their specific
module abi.cpp:

  void __cxa_pure_virtual(void) __attribute ((noreturn));
  void __cxa_deleted_virtual(void) __attribute ((noreturn));

Fix #107
2014-09-06 12:42:25 +02:00
Cristian Maglie
07e3e83424 Added new/delete stubs for Arduino Due
Fix #1485
A better implementation may be desirable as discussed in #108
2014-09-06 10:26:59 +02:00
Cristian Maglie
b7b9da7710 Updated version to 1.5.8 2014-09-05 10:11:47 +02:00
PaulStoffregen
daa7e7dcc9 Fix interrupt masking on Arduino Due 2014-08-01 16:44:47 -07:00
PaulStoffregen
ef06410d16 Add SPI_HAS_TRANSACTION symbol for Arduino Due 2014-08-01 13:00:29 -07:00
PaulStoffregen
abb37e202f SPI Transactions for Arduino Due 2014-08-01 05:57:13 -07:00
Cristian Maglie
6200ec2039 Merge pull request #2194 from Fede85/ide-1.5.x_lib-description
Ide 1.5.x lib description
2014-07-21 12:16:20 +02:00
Fede85
dd77375fe9 missing paragraph field in library.properties 2014-07-18 20:08:01 +02:00
Fede85
b02e85ceb2 modified sentences in library.properties files 2014-07-18 19:41:34 +02:00
Matt Robinson
61a3558946 Cast empty string to char* to fix compiler warning
Stream::find(char *target) passes an empty terminator string to
Stream::findUntil(char *target, char *terminator) which caused a compiler
warning with the updated toolchain, so cast it to a char*.
2014-07-17 16:51:35 +01:00
Cristian Maglie
75ec6a1b31 Due: Wire.setClock can be called at any time
See #2157
2014-07-06 00:36:22 +02:00
Kristian Lauszus
9d20959b6a Implemented setClock for the Due as well
This allows users to change the I2C clock frequency
2014-07-02 19:47:23 +02:00
Cristian Maglie
c2c122b079 Merge branch 'master' into matthijskooijman-ide-1.5.x-timer-variant
Conflicts:
	app/src/processing/app/debug/Compiler.java
	hardware/arduino/sam/cores/arduino/main.cpp
2014-07-01 18:34:46 +02:00
Cristian Maglie
c2e5f67ea6 Updated arm gcc to version 4.8.3-2014q1 2014-06-25 11:59:47 +02:00
Cristian Maglie
4df2c8982a Updated arm gcc to 4.8.3 2014-06-25 11:57:49 +02:00
Cristian Maglie
3a4381955e Updated arm gcc to 4.7.4 2014-06-25 11:56:50 +02:00
Cristian Maglie
7f9e9b1cc2 Merge branch 'master' into HEAD 2014-06-13 10:29:12 +02:00
Chris
e079baa18d Fix for Due Wire library
Fix reading and use of TWI status register.
Also, update endTransmission to be compatible with original & give more
useful return.
2014-05-23 12:06:43 +02:00
Cristian Maglie
abbebed7dd Removed 'USB_MANUFACTURER' constant redefinition for known VIDs.
See #1877
2014-04-20 20:49:04 +02:00
Cristian Maglie
b673b72cfb Merge branch 'ide-1.5.x-warnings' of github.com:matthijskooijman/Arduino into ide-1.5.x 2014-04-20 19:36:29 +02:00
Cristian Maglie
f0738fdf9f Merge branch 'ide-1.5.x_serial_config' of github.com:bluesign2k/Arduino into ide-1.5.x 2014-04-10 21:55:29 +02:00
Cristian Maglie
b0e29179a5 Added extra flags support through platform.local.txt on sam
See #1985
2014-04-10 21:47:09 +02:00
Chris
d02fde6e37 Add config options to due Serial1, 2, and 3
Adds ability to set length, parity and stop bit configuration to
hardware serial ports using USART module (Serial1, Serial2, and Serial
3) on Due to allow compatibility with avr devices.
2014-04-07 21:55:23 +01:00
Cristian Maglie
2659b47587 Update revision log. Upped version to 1.5.6 2014-02-19 18:14:31 +01:00
Matthijs Kooijman
5c6ee6127c Remove const specifier from channelToTC array in analogWrite on SAM
Members of this array are later passed to functions that accept
non-const pointers. These functions probably don't modify their
arguments, so a better solution would be to update those functions to
accept const pointers. However, they look like third-party code, so that
would require changing the code again on every update. Removing const
here fixes at least the compiler warning for now.

This helps towards #1792.
2014-02-19 16:09:31 +01:00
Matthijs Kooijman
4b3db72a46 Fix two signedness warnings
This helps towards #1792
2014-02-19 16:09:30 +01:00
Matthijs Kooijman
1c6a57e15d Include stdio.h in dtostrf.c
This makes the declaration of sprintf available, so the function is not
implicitely declared, which triggers two compiler warnings.

This helps towards #1792
2014-02-19 16:09:30 +01:00
Matthijs Kooijman
8e35973ff9 Remove check that is always false
len is an unsigned variable, so it will never be less than 0.

This helps towards #1792.
2014-02-19 16:09:30 +01:00
Matthijs Kooijman
b196a4a9c5 Suppress "unused parameter" warnings
A bunch of functions have parameters they do not use, but which cannot
be removed for API compatibility.

In syscalls_sam3.c, there are a lot of these, so this adds an "UNUSED"
macro which adds the "unused" variable attribute if supported (GCC
specific), or is just a noop on other compilers.

In CDC.cpp, there's only three of these variables, so this commit just
forces a dummy evaluation of them to suppress the warnings.

This helps towards #1792.
2014-02-19 16:09:30 +01:00
Matthijs Kooijman
4cf21dcdd1 Don't store peeked characters in a char variable
peekNextDigit() returns an int, so it can return -1 in addition to all
256 possible bytes. By putting the result in a signe char, all bytes
over 128 will be interpreted as "no bytes available". Furthermore, it
seems that on SAM "char" is unsigned by default, causing the
"if (c < 0)" line a bit further down to always be false.

Using an int is more appropriate.

A different fix for this issue was suggested in #1399. This fix helps
towards #1728.
2014-02-19 16:09:30 +01:00
Matthijs Kooijman
3035239a4e Use a union in IPAddress for uint8_t[] <-> uint32_t conversion
Previously, pointer casting was used, but this resulted in strict-aliasing warnings:

IPAddress.h: In member function ‘IPAddress::operator uint32_t() const’:
IPAddress.h:46:61: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
     operator uint32_t() const { return *((uint32_t*)_address); };
                                                             ^
IPAddress.h: In member function ‘bool IPAddress::operator==(const IPAddress&) const’:
IPAddress.h:47:81: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
     bool operator==(const IPAddress& addr) const { return (*((uint32_t*)_address)) == (*((uint32_t*)addr._address)); };
                                                                                 ^
IPAddress.h:47:114: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
     bool operator==(const IPAddress& addr) const { return (*((uint32_t*)_address)) == (*((uint32_t*)addr._address)); };

Converting between unrelated types like this is commonly done using a union,
which do not break the strict-aliasing rules. Using that union, inside
IPAddress there is now an attribute _address.bytes for the raw byte
arra, or _address.dword for the uint32_t version.

Since we now have easy access to the uint32_t version, this also removes
two memcpy invocations that can just become assignments.

This patch does not change the generated code in any way, the compiler
already optimized away the memcpy calls and the previous casts mean
exactly the same.

This is a different implementation of a part of #1399 and it helps
toward fixing #1728.
2014-02-19 16:09:29 +01:00
Cristian Maglie
9fcf005638 [sam] Removed workaround in banzai() subroutine after 8120558af5
See #1876
2014-02-18 22:32:55 +01:00
Matthijs Kooijman
8120558af5 Fix loops in the SAM banzai() reset function
The code used to say:

  while (EFC0->EEFC_FSR & EEFC_FSR_FRDY == 0);

This triggered a compiler warning, which is why I looked at this line
more closely:

	warning: suggest parentheses around comparison in operand of '&'

As the warning indicates, because the == operator has higher precedence
than the & operator, the compiler is interpreting this line as:

  while (EFC0->EEFC_FSR & (EEFC_FSR_FRDY == 0));

Since EEFC_FSR_FRDY is defined as 1, (EEFC_FSR_FRDY == 0) is always
false (== 0) and this reduces to:

  while (EFC0->EEFC_FSR & 0);

Which reduces to:

  while (0);

So effectively this line is a no-op.

This commit adds parenthesis to restore the intended behaviour.
2014-02-18 22:32:25 +01:00
Cristian Maglie
0a126d75bb [sam] itoa() and related function are now available for the sketch 2014-02-18 22:32:24 +01:00
Cristian Maglie
bab0062998 Temboo library is now vanilla 2014-02-18 22:32:24 +01:00
Matthijs Kooijman
5b83043290 Include stdint.h from IPAddress.h on SAM
This happened for AVR in 34885b01, this commit makes the SAM version
identical again.
2014-02-18 21:10:35 +01:00
Kevin Chang
c92206909d SAM Wire: fixed NACK/timeout behavior of requestFrom() and available()
"readed" is no longer incremented in requestFrom() if
TWI_WaitByteReceived() gets a NACK or times out. This corrects the
behavior (return values) of requestFrom() and available() to match the
Arduino reference. Fixes arduino/Arduino#1311
2014-02-17 20:16:31 -08:00
Cristian Maglie
8504bca280 Merge branch 'ide-1.5.x' of github.com:dpslwk/Arduino into dpslwk-ide-1.5.x 2014-02-14 15:35:47 +01:00
Cristian Maglie
79f5a34954 Revert "Changed pins definition in variants from constants to #defines."
This reverts commit e2b15c852b.
2014-02-13 17:37:00 +01:00
Cristian Maglie
397046a844 Added license for Arduino.h, binary.h and main.cpp
See #1847
2014-02-10 12:55:16 +01:00
Cristian Maglie
9eb0c1495c Added license for Client, IPAddressm and Server
See #1847
2014-02-10 12:55:16 +01:00
Jimmy Hedman
fb324358ee Compile with -x assembler-with-cpp instead of -assembler-with-cpp.
- Newer avr-gcc doesn't use -assembler-with-cpp, but
  uses -x assembler-with-cpp. This works with older compilers as well.
2014-01-21 21:57:35 +01:00
dpslwk
8364134ada Wire library, move hard references IRQn to defines in variant.h 2014-01-17 20:44:19 +00:00
Matthijs Kooijman
dde1a7541f Make some operators in IPAddress const
These functions do not modify the IPAddress object, but were not marked
as const. This meant that you could not do:

void set_ip(const IPAddress& ip) {
	uint32_t copy = ip;
}

Since calling operator uint32_t() on ip would discard the constness of
the reference.
2014-01-15 16:20:48 +01:00
Federico Fissore
dfe77f388d Removed = char from #define. See https://github.com/arduino/Arduino/issues/1792#issuecomment-31650586 2014-01-06 18:20:37 +01:00
Federico Fissore
9fce7f1839 Added new EULER constant. Fixes #1792 2014-01-06 09:48:34 +01:00
Cristian Maglie
673847c8b6 Improved portability of String class (maniacbug) 2014-01-01 17:22:40 +01:00
Cristian Maglie
e2d373ed61 sam: Added digitalPinHasPWM(..) method
Fixes #1342
2013-12-31 20:58:10 +01:00
Cristian Maglie
90ab663146 sam: moved "variant" methods into proper place 2013-12-31 20:57:14 +01:00
Cristian Maglie
c50821ba10 Fixed value of NUM_DIGITAL_PINS for Arduino Due 2013-12-31 20:55:43 +01:00
Matthijs Kooijman
98777e816f Use PGM_P instead of prog_char
On later versions of avr-libc, prog_char is deprecated. In 0acebeeff4
the one occurence of prog_char was replaced by "char PROGMEM", which is
not entirely correct (PROGMEM is supposed to be an attribute on a
variable, not on a type, even though this is how things work in older
libc versions). However, in 1130fede3a a few new occurences of
prog_char are introduced, which break compilation on newer libc versions
again.

This commit changes all these pointer types to use the PGM_P macro from
<avr/pgmspace.h>. This macro is just "const char *" in newer libc
versions and "const prog_char *" in older versions, so it should always
work.

References #795
2013-12-31 20:01:40 +01:00
Cristian Maglie
0b72c88b42 Merge pull request #1762 from matthijskooijman/ide-1.5.x-write-char
Support both char* and uint8* in Stream and Print
2013-12-30 10:58:03 -08:00
Cristian Maglie
825d8c8455 sam: Optimized delayMicroseconds() (Rob Tillaart)
See #1121
2013-12-30 12:17:50 +01:00
Matthijs Kooijman
2ea12d0220 Remove unneeded casts in Print::write(const String&)
Now that Print::write(const char*) is also available, these casts are no
longer needed.
2013-12-24 13:22:43 +01:00
Matthijs Kooijman
f304abe35f Add uint8_t* versions of methods in Stream
The new functions just call their char* equivalents, but this allows
reading bytes into a buffer of uint8_t as well as chars.
2013-12-24 13:22:42 +01:00
Matthijs Kooijman
250386802f Add Print::write(const char *, size_t)
The new function just calls Print::write(const uint8_t *, size_t), but
this allows writing out a buffer of chars (without having to learn about
casts).
2013-12-24 13:22:42 +01:00
Cristian Maglie
660c7d86fd Optimized Print::print(String&) (part 2) 2013-12-23 12:04:15 +01:00
Cristian Maglie
b530742603 [sam] Fixed regression in analogRead() (fails to read multiple channels) (Mark Tillotson)
See #1740 #1634

http://forum.arduino.cc/index.php?topic=203322.msg1509907#msg1509907
2013-12-18 15:46:42 +01:00
Cristian Maglie
a1c4809105 [sam] Fixed regression in analogRead() (fails to read multiple channels)
Fixes #1740
2013-12-16 11:07:45 +01:00
Cristian Maglie
2e7b645571 [sam] Fixed wrap-around bug in delay() (Mark Tillotson)
Fixes #1736
2013-12-14 00:33:57 +01:00
Cristian Maglie
e2b15c852b Changed pins definition in variants from constants to #defines. 2013-12-13 15:13:18 +01:00
Cristian Maglie
43f9f15358 Upped version to 1.5.5 2013-11-28 10:53:50 +01:00
Cristian Maglie
d5c828736b Revert "SPI library to new format" 2013-11-21 15:05:36 +01:00
Cristian Maglie
71bb7f7ae3 Fixed vid/pid definition for arduino_due_x_dbg in boards.txt. (Luca Baldini)
http://forum.arduino.cc/index.php?topic=197003
2013-11-15 14:01:36 +01:00
Cristian Maglie
9a9652d506 Revert "Wire library to the 1.5 format"
This reverts commit a31857688b.
2013-11-15 12:54:59 +01:00
Cristian Maglie
3ba9480972 Merge pull request #1634 from cmaglie/adc-fix
Improved ADC speed on Arduino Due
2013-11-12 00:57:28 -08:00
Cristian Maglie
56572fa0de Added SERIAL metadata into variant files. 2013-11-11 13:41:04 +01:00
Cristian Maglie
8e3da56624 Added LED_BUILTIN definition to Arduino Due 2013-11-03 18:29:34 +01:00
Cristian Maglie
8f1e3fd703 Using NOT_AN_INTERRUPT defined constant 2013-10-31 12:44:24 +01:00
Cristian Maglie
35d477297d Added pinToInterrupt() variant macro (Paul Stoffregen) 2013-10-31 12:43:41 +01:00
Cristian Maglie
1fc54f5003 [sam] Improved analogRead speed.
See #1418
2013-10-21 12:38:37 +02:00
Fede85
02550de1e9 Merge remote-tracking branch 'origin/ide-1.5.x' into ide-1.5.x 2013-10-10 20:59:01 +02:00
Cristian Maglie
40dce96f11 Fixed adc_init() function.
See #1418
2013-10-09 15:54:47 +02:00
Cristian Maglie
a21d92e5c8 [sam] Added empty Serial::begin() with options for CDC-ACM
See #1563
2013-09-30 16:27:07 +02:00