1
0
mirror of https://github.com/arduino/Arduino.git synced 2025-01-05 20:46:08 +01:00
Commit Graph

232 Commits

Author SHA1 Message Date
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
George Chailazopoulos
2c289ace73 Add #include "Print.h" in Server.h 2014-09-26 22:59:02 +03:00
Cristian Maglie
84518e442c Fixed attribution rights for SAM delayMicroseconds function 2014-09-16 12:31:16 +02:00
Cristian Maglie
69e37647a6 Ported #1397 to SAM. 2014-09-12 12:06:00 +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
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
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
7f9e9b1cc2 Merge branch 'master' into HEAD 2014-06-13 10:29:12 +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
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
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
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
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
90ab663146 sam: moved "variant" methods into proper place 2013-12-31 20:57:14 +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
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
8f1e3fd703 Using NOT_AN_INTERRUPT defined constant 2013-10-31 12:44:24 +01:00
Cristian Maglie
1fc54f5003 [sam] Improved analogRead speed.
See #1418
2013-10-21 12:38:37 +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
Cristian Maglie
c86eed942d Fixed String class regression after f80c6c5f35
This should make explicit String-from-integer constructor working again:

   int a = 10;
   String(a, 4);
2013-09-03 18:40:30 +02:00
Cristian Maglie
00210189fe Removed unused flags from String (free 1 byte of SRAM) 2013-08-20 15:15:47 +02:00
Cristian Maglie
f8d32a0659 Parametric USB configuration for Arduino Due (experimental) 2013-07-22 12:29:02 +02:00
Cristian Maglie
8e20bc7b43 String: fixed number of whitespaces in concat() methods 2013-06-28 09:53:25 +02:00
Cristian Maglie
f57a00ea6c String: changed default to 2 decimal digits 2013-06-21 21:23:12 +02:00
Cristian Maglie
a2e7413d22 More efficient dtostrf() emulation on ARM 2013-06-06 23:11:43 +02:00
Cristian Maglie
ba7fb5518f Fixed buffer overflow on String class (Paul Stoffregen) 2013-06-06 20:04:43 +02:00
Cristian Maglie
f80c6c5f35 Merged various bugfix / improvements to String class.
Merge branch 'master' into ide-1.5.x
2013-06-06 19:54:58 +02:00
Cristian Maglie
1130fede3a Added support for Flash string on String class. 2013-06-06 16:33:20 +02:00
Cristian Maglie
b341a7c751 String class: removed deep copy on substring method.
Small code cleanup.
2013-06-06 16:33:20 +02:00
Cristian Maglie
a46259a0cf Merged 1.0.5
Still missing:
- updates to WiFi lib for sam.
- updates to examples of Ehternet and WiFi for sam.

Merge remote-tracking branch 'arduino/master' into ide-1.5.x

Conflicts:
	app/src/processing/app/Base.java
	app/src/processing/app/Editor.java
	app/src/processing/app/helpers/FileUtils.java
	app/src/processing/app/i18n/Resources_fr.po
	app/src/processing/app/i18n/Resources_fr.properties
	build/shared/revisions.txt
	hardware/arduino/avr/libraries/Ethernet/examples/DnsWebClient/DnsWebClient.ino
	hardware/arduino/avr/libraries/WiFi/examples/WifiChatServer/WifiChatServer.ino
	hardware/arduino/avr/libraries/WiFi/examples/WifiPachubeClient/WifiPachubeClient.ino
	hardware/arduino/avr/libraries/WiFi/examples/WifiPachubeClientString/WifiPachubeClientString.ino
	hardware/arduino/avr/libraries/WiFi/examples/WifiTwitterClient/WifiTwitterClient.ino
	hardware/arduino/avr/libraries/WiFi/examples/WifiUdpSendReceiveString/WifiUdpSendReceiveString.ino
	hardware/arduino/avr/libraries/WiFi/examples/WifiWebClient/WifiWebClient.ino
	hardware/arduino/avr/libraries/WiFi/examples/WifiWebClientRepeating/WifiWebClientRepeating.ino
	hardware/arduino/avr/libraries/WiFi/examples/WifiWebServer/WifiWebServer.ino
	libraries/WiFi/examples/WiFiChatServer/WiFiChatServer.ino
	libraries/WiFi/examples/WiFiPachubeClient/WiFiPachubeClient.ino
	libraries/WiFi/examples/WiFiPachubeClientString/WiFiPachubeClientString.ino
	libraries/WiFi/examples/WiFiTwitterClient/WiFiTwitterClient.ino
	libraries/WiFi/examples/WiFiUdpSendReceiveString/WiFiUdpSendReceiveString.ino
	libraries/WiFi/examples/WiFiWebClient/WiFiWebClient.ino
	libraries/WiFi/examples/WiFiWebClientRepeating/WiFiWebClientRepeating.ino
	libraries/WiFi/examples/WiFiWebServer/WiFiWebServer.ino
	libraries/WiFi/examples/WifiChatServer/WifiChatServer.ino
	libraries/WiFi/examples/WifiPachubeClient/WifiPachubeClient.ino
	libraries/WiFi/examples/WifiPachubeClientString/WifiPachubeClientString.ino
	libraries/WiFi/examples/WifiTwitterClient/WifiTwitterClient.ino
	libraries/WiFi/examples/WifiUdpSendReceiveString/WifiUdpSendReceiveString.ino
	libraries/WiFi/examples/WifiWebClient/WifiWebClient.ino
	libraries/WiFi/examples/WifiWebClientRepeating/WifiWebClientRepeating.ino
	libraries/WiFi/examples/WifiWebServer/WifiWebServer.ino
2013-05-11 14:37:25 +02:00
stimmer
00bc1639c4 Changed micros() to work in interrupts 2013-05-03 13:38:48 +02:00
Cristian Maglie
0f5a5259ec Added avr/pgmspace.h compatibility layer for Due Boards
Fixes #1317
2013-03-15 12:39:04 +01:00
Cristian Maglie
7f7637c782 Fixed delayMicrosecond() when interrupts are disabled 2013-02-13 15:41:31 +01:00
Cristian Maglie
6b25f0c0ba Merge pull request #1255 from cmaglie/usbcdc-loopback-fix
Fixed SerialUSB data handshake when host sends a lot of data (PeterVH, stimmer)
2013-02-06 03:30:12 -08:00
Cristian Maglie
5edc110f61 [sam] attachInterrupt() now works also on pins that belongs to PORTD 2013-02-02 17:14:30 +01:00
Cristian Maglie
d66d4c4793 Fixed SerialUSB data handshake when host sends a lot of data (PeterVH, stimmer) 2013-01-29 11:20:20 +01:00
Cristian Maglie
e72eaa858a Fixed CDC_SERIAL_BUFFER_SIZE macros (PeterVH) 2013-01-27 12:49:25 +01:00
Cristian Maglie
95cadfef12 Fixed USBSerial.write() while sending big buffers (Bill Dreschel) 2013-01-25 15:55:35 +01:00
vd
ac2255b6d5 modified analogWrite to wait for end of conversion 2013-01-06 17:53:59 +01:00
Cristian Maglie
70351fc341 Fix BSoD for Windows (louismdavis)
http://arduino.cc/forum/index.php/topic,129869.0.html
2012-11-19 23:44:06 +01:00
Cristian Maglie
65f00a69c7 Fixed weak-symbol issue with system interrupt handlers. 2012-11-19 23:37:19 +01:00
Cristian Maglie
c68a0f5875 Fixed portOutputRegister() and portInputRegister() macros.
http://arduino.cc/forum/index.php/topic,130714.0.html
2012-11-05 16:52:57 +01:00
Cristian Maglie
73649c2f60 Fixed digitalPinToPort and digitalPinToBitMask macros. (thanks to alvesjc) 2012-11-04 23:39:02 +01:00
Cristian Maglie
969e29befb Do not yield during delayMicroseconds 2012-11-03 23:47:32 +01:00
Cristian Maglie
a72cfc3087 Fixed analogWrite() when writing on both DACs. Thanks to smay4finger
for providing the patch.
http://code.google.com/p/arduino/issues/detail?id=1092
http://arduino.cc/forum/index.php/topic,129765.msg980913.html
2012-11-03 20:18:32 +01:00
Cristian Maglie
0f23634230 {attach,detach}Interrupt() on Due selects directly pin number instead of interrupt number. 2012-11-02 19:48:04 +01:00
Cristian Maglie
107c1929bd Added general yield()-hook for cooperative scheduling development 2012-10-31 01:37:37 +01:00
Cristian Maglie
921dfe794f {attach/detach}Interrupt() functions. 2012-10-26 20:17:34 +02:00
Cristian Maglie
43cf5b0ed6 Fixed HID report send (Emulated keyboard is back on MacOS) 2012-10-19 22:54:02 +02:00
Claudio Indellicati
3e9ef44401 Fixed native USB serial port not appearing on Mac OS X 10.6.8. 2012-10-18 21:42:16 +02:00
Cristian Maglie
aba27c43aa Merged upstream arduino branch 2012-10-18 15:50:09 +02:00
Fede85
e92ad6e96e removed the final X in the ip_product string 2012-10-12 18:05:29 +02:00
Fede85
e4fdb9ece3 tuned costant for pulseIn 2012-10-12 16:09:54 +02:00
Cristian Maglie
b2f1bce2ac Fixed pull-up. 2012-10-09 16:43:38 +02:00
Cristian Maglie
681df8b291 Renamed DA0/DA1 to DAC0/DAC1 (part 2...) 2012-10-05 19:32:22 +02:00
Cristian Maglie
2071c00ba0 Assigned Serial to UART and SerialUSB to USB-CDC-ACM 2012-09-28 16:18:22 +02:00
Cristian Maglie
e7141291a5 Workaround for spurious port opening after upload (Arduino Due) 2012-09-25 19:50:35 +02:00
Cristian Maglie
31719589b2 Fixed micros()-not-monothonic bug 2012-09-21 11:50:52 +02:00
Cristian Maglie
d4efbf730e Refactored auto-reset methods. 2012-09-11 23:24:00 +02:00
Jean-Christophe
c5a346a509 Correct HID, the send is now done in one time 2012-09-11 17:26:50 +02:00
Jean-Christophe
49f03a77f5 Add test J/K/packet/SE0_NAK, for usb.org process 2012-09-11 14:21:47 +02:00
Cristian Maglie
d21f734357 Merge branch 'master' into upload-16u2
Conflicts:
	hardware/arduino/sam/cores/arduino/USB/CDC.cpp
	hardware/arduino/sam/cores/arduino/USB/USBCore.cpp
2012-09-10 14:53:49 +02:00
Jean-Christophe
3a61bc4bd3 usbcv chapter 9 tests: passed 2012-09-09 23:46:07 +02:00
Jean-Christophe
22c828def0 update for USB, USB High Speed software, for betatest, need some improvment. USBCV not passed, USB3.0 passed 2012-09-09 23:45:42 +02:00
Jean-Christophe
656b83b1a7 correct CDC transmit, add device qualifier. 2012-09-09 23:42:29 +02:00
Cristian Maglie
9a505d25b2 Added optimized write(buffer,size) method in CDC class 2012-09-09 23:41:44 +02:00
Cristian Maglie
d96264e60f Upload over debug port (part 2) 2012-09-08 00:55:37 +02:00
Cristian Maglie
a267a8a774 First try to support architecture dependent query functions (digitalPinToPort, etc) 2012-08-24 20:53:24 +02:00
Cristian Maglie
cae4d708e5 SPI: added setBitOrder support; added end(pin) method. 2012-08-24 15:23:50 +02:00
Cristian Maglie
bdf3f19c34 Added include in Printable.h for 'size_t' support. 2012-08-24 10:55:33 +02:00
Cristian Maglie
b7fce4207f Fixed USB-CDC buffering. Now serial output performs much better. 2012-08-21 12:50:12 +02:00