1
0
mirror of https://github.com/arduino/Arduino.git synced 2024-12-13 23:48:46 +01:00
Commit Graph

229 Commits

Author SHA1 Message Date
Matthijs Kooijman
80ea38b1dc Mark SoftwareSerial::tx_pin_write as "always_inline"
Somehow gcc 4.8 doesn't inline this function, even though it is always
called with constant arguments and can be reduced to just a few
instructions when inlined. Adding the always_inline attribute makes gcc
inline it, saving 46 bytes on the Arduino uno.

gcc 4.3 already inlined this function, so there are no space
savings there.
2015-01-26 17:03:25 +01:00
Matthijs Kooijman
416198a03b Simplify SoftwareSerial::write
Before, there was nearly identical code for the inverted and regular
cases. However, simply inverting the byte in the inverted case allows
using the regular code twice, reducing the generated code size by 100
bytes (on an Arduino Uno and gcc 4.3, on gcc 4.8 the reduction is 50
bytes).
2015-01-26 17:03:25 +01:00
Matthijs Kooijman
6685aa999c Use stopListening() in SoftwareSerial::end()
stopListening also disabled the interrupt, if needed, so calling that
function makes more sense. Since stopListening only disables the
interrupt when the current SoftwareSerial is the active object, and that
can only be the case when _rx_delay_stopbit is non-zero, there is no
need to separately check _rx_delay_stopbit anymore.
2015-01-26 17:03:25 +01:00
Matthijs Kooijman
f3aa5f23c4 Fix race condition in SoftwareSerial::overflow()
If an interrupt causing overflow would occur between reading
_buffer_overflow and clearing it, this overflow condition would be
immediately cleared and never be returned by overflow().

By only clearing the overflow flag if an overflow actually occurred,
this problem goes away (worst case overflow() returns false even though
an overflow _just_ occurred, but then the next call to overflow() will
return true).
2015-01-26 17:03:25 +01:00
Matthijs Kooijman
b1de3e6621 Toggle SoftwareSerial interrupts when starting / stopping to listen
This prevents interrupts from triggering when the SoftwareSerial
instance is not even listening.

Additionally, this removes the need to disable interrupts in
SoftwareSerial::listen, since no interrupts are active while it touches
the variables.
2015-01-26 17:03:25 +01:00
Matthijs Kooijman
934393398b Add SoftwareSerial::stopListening()
This allows one to explicitly stop a SoftwareSerial instance from
listening, without having to make another one listening.
2015-01-26 17:03:25 +01:00
Matthijs Kooijman
db1a4ad139 Add SoftwareSerial::setRxIntMsk()
This moves the interrupt mask enabling / disabling code into a separate
method, so we can call it from multiple spots next.
2015-01-26 17:03:25 +01:00
Matthijs Kooijman
1704e7e820 Let SoftwareSerial::end also check against _rx_delay_stopbit
The current check is still always false when the old check was, but
additionally it will not disable the interrupts when they were never
enabled (which shouldn't matter much, but this is more consistent).
2015-01-26 17:03:24 +01:00
Matthijs Kooijman
b1c7a3d05f Let SoftwareSerial::listen() fail on invalid rx baud rates
In this case, SoftwareSerial::begin will not have enabled the
interrupts, so better not allow the SoftwareSerial instance to enter the
listening state either.
2015-01-26 17:03:24 +01:00
Matthijs Kooijman
937cc51c69 Clear SoftwareSerial rx delay if no interrupt register is found
Before enabling interupts, begin would see if the given receive pin
actually has an associated PCINT register. If not, the interrupts would
not be enabled.

Now, the same check is done, but when no register is available, the rx
parameters are not loaded at all (which in turn prevents the interrupt
from being enabled). This allows all code to use the same "is rx
enabled" (which will be added next).
2015-01-26 17:03:24 +01:00
Cristian Maglie
a9735bf91f Fix atomicity issues in SPI::beginTransaction and SPI::endTransaction (Andrew Kroll)
Previously, it could happen that SPI::beginTransaction was
interrupted by an ISR, while it is changing the SPI_AVR_EIMSK
register or interruptSave variable (it seems that there is
a small window after changing SPI_AVR_EIMSK where an interrupt
might still occur). If this happens, interruptSave is overwritten
with an invalid value, permanently disabling the pin interrupts.

To prevent this, disable interrupts globally while changing
these values.
2014-11-25 15:56:11 +01:00
Cristian Maglie
84b6cc27a5 [avr] Made SPI.usingInterrupt() synchronized (Andrew Kroll) 2014-11-25 15:56:11 +01:00
Cristian Maglie
d9537cb7da [avr] Added SPI.notUsingInterrupt() (Andrew Kroll) 2014-11-25 15:56:11 +01:00
Cristian Maglie
8344812ce8 [avr] Made SPI.begin() and SPI.end() synchronized (Andrew Kroll) 2014-11-25 15:49:17 +01:00
Cristian Maglie
53e25d8b55 [avr] Improved SPI speed on 16bit transfer.
From https://github.com/arduino/Arduino/pull/2376#issuecomment-59671152

Quoting Andrew Kroll:

   [..this commit..] introduces a small delay that can prevent the wait
   loop form iterating when running at the maximum speed. This gives
   you a little more speed, even if it seems counter-intuitive. At
   lower speeds, it is unnoticed. Watch the output on an oscilloscope
   when running full SPI speed, and you should see closer back-to-back
   writes.

Quoting Paul Stoffregen:

   I did quite a bit of experimenting with the NOP addition. The one
   that's in my copy gives about a 10% speedup on AVR.
2014-11-25 15:49:17 +01:00
Cristian Maglie
34c40b224f [avr] SPI: removed redundant include 2014-11-14 00:23:11 +01:00
Cristian Maglie
993cc9bbb4 [avr] Small comments and headers fixes in SPI 2014-11-14 00:23:11 +01:00
PaulStoffregen
3d5ef6d5d9 SPI Transactions for AVR 2014-08-01 05:38:27 -07: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
Cristian Maglie
49ec540204 Merge pull request #1912 from Lauszus/issues440
Enable user to change the I2C clock frequency by calling setClock in the Wire library
2014-07-02 15:37:30 +02:00
Cristian Maglie
5d92c1ba8e Merge remote-tracking branch 'arduino/master' into ide-1.5.x
Conflicts:
	build/shared/examples/01.Basics/Blink/Blink.ino
	build/shared/examples/09.USB/Keyboard/KeyboardReprogram/KeyboardReprogram.ino
	build/shared/examples/10.StarterKit/p02_SpaceshipInterface/p02_SpaceshipInterface.ino
	hardware/arduino/cores/arduino/HardwareSerial.cpp
2014-05-23 21:04:47 +02:00
Kristian Lauszus
7fcc8ab08a Enable user to change the I2C clock frequency by calling setClock in the Wire library 2014-03-06 17:23:49 +01:00
Cristian Maglie
d5c828736b Revert "SPI library to new format" 2013-11-21 15:05:36 +01:00
Cristian Maglie
ff24874117 Revert "EEPROM library to the new format"
This reverts commits:
3223d4fdca
77f8dd63ab
2013-11-21 11:22:44 +01:00
Cristian Maglie
7f17170678 Revert "SoftwareSerial library to the new format"
This reverts commit 38c3bbbd3c.
2013-11-15 12:54:59 +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
Fede85
a31857688b Wire library to the 1.5 format 2013-09-10 18:50:42 +02:00
Fede85
c35d4dc131 SpacebrewYun library to the 1.5 format 2013-09-06 18:25:03 +02:00
Fede85
fa22bc358e Temboo library to the 1.5 format 2013-09-06 18:15:14 +02:00
Fede85
81338e245b Bridge library to the 1.5 format 2013-09-06 15:38:07 +02:00
Federico Fissore
4f3b22fd28 Spacebrew keywords 2013-08-28 10:12:33 +02:00
Federico Fissore
7832a997cc spacebrew update 2013-08-28 10:12:33 +02:00
Federico Fissore
8fd9b8f8ee removed .DS_Store folder 2013-08-28 10:12:33 +02:00
Cristian Maglie
ea8c14421a Merge branch 'ide-1.5.x' into dev-ide-1.5.x-discovery
Conflicts:
	app/src/processing/app/Preferences.java
	app/src/processing/app/debug/Uploader.java
2013-08-23 15:59:24 +02:00
Federico Fissore
0c7a75fd64 TemperatureWebPanel: widening refresh interval 2013-07-25 14:31:26 +02:00
Fede85
fd7e9c6d90 WiFi library to the new format 2013-07-19 16:20:34 +02:00
Federico Fissore
0aa42f1914 Bridge: Bridge.begin should wait more before giving up, as other processes may consume linux cpu power 2013-07-19 15:18:55 +02:00
Federico Fissore
8f59bc13c5 SpacebrewYun: added new example 2013-07-18 14:07:39 +02:00
Angelo Scialabba
2ce3a4a8fc Bridge: CRC16 being used as CRC 2013-07-15 16:41:17 +02:00
Federico Fissore
ce8c212a5f updated temboo examples (added ControlBySMS) 2013-07-15 15:22:50 +02:00
Cristian Maglie
008818868c Merge branch 'ide-1.5.x' into dev-ide-1.5.x-discovery
Conflicts:
	app/src/cc/arduino/packages/uploaders/SerialUploader.java
	app/src/processing/app/Editor.java
	app/src/processing/app/Sketch.java
	app/src/processing/app/debug/Uploader.java
2013-07-14 12:01:03 +02:00
Cristian Maglie
65c36f2eb6 Merge branch 'master' into ide-1.5.x 2013-07-14 11:51:50 +02:00
Federico Fissore
de095c0c43 File: implemented File.openNextFile() and File.rewindDirectory() 2013-07-11 18:14:49 +02:00
Federico Fissore
08d9e574c8 FileIO.h: removed wrong function declaration 2013-07-11 13:22:52 +02:00
Federico Fissore
eaffb912f6 Added File.isDirectory() 2013-07-11 13:06:48 +02:00
Federico Fissore
f149dac5a7 updated temboo examples 2013-07-11 11:24:53 +02:00
Cristian Maglie
08e99376ec Updated YunSerialTerminal: added command to shutdown bridge 2013-07-10 20:37:31 +02:00
Cristian Maglie
567af70a44 Bridge: even more reliable startup 2013-07-10 20:24:16 +02:00
Federico Fissore
0e8c5a66cd updated temboo examples 2013-07-10 09:47:18 +02:00
Federico Fissore
915d6d92c7 WifiStatus example:updated sketch description 2013-07-09 20:08:17 +02:00
Federico Fissore
13f7439940 temboo examples updated 2013-07-09 20:07:54 +02:00
Federico Fissore
e6b311b226 updated temboo examples 2013-07-08 15:09:09 +02:00
Federico Fissore
21ccdd0a96 Merge branch 'ide-1.5.x-discovery' into dev-ide-1.5.x-discovery 2013-07-07 17:07:32 +02:00
tigoe
fa7dbd115b #include Bridge.h in HttpClient 2013-07-06 09:12:01 -04:00
tigoe
8343826355 Corrected file structure on TemperatureWebPanel 2013-07-06 09:11:37 -04:00
tigoe
cd9d755bb0 Updated TemperatureWebPanel 2013-07-06 08:20:02 -04:00
tigoe
c777b5c76b Updated TemperatureWebPanel 2013-07-06 08:10:13 -04:00
tigoe
41f1be5fc7 Added TemperatureWebPanel example 2013-07-06 07:48:10 -04:00
Federico Fissore
6293c76bff forgot to include YunClient 2013-07-05 19:14:51 +02:00
Federico Fissore
645a57359e delete OLDYahooWeather example
Updated pretty-wifi-info-lua path in ShellCommands and WifiStatus examples
Tried to make a sense of HttpClient example by making it fetch http://arduino.cc/asciilogo.txt
2013-07-05 15:06:37 +02:00
Federico Fissore
172007b475 renamed two lua scripts 2013-07-05 13:50:00 +02:00
Federico Fissore
6eec8e0922 introducing Temboo library 2013-07-05 11:55:38 +02:00
Cristian Maglie
46a1cf6f06 YunServer: added write() method 2013-07-04 17:39:14 +02:00
Cristian Maglie
34885b019b Refactored YunClient and YunServer classes.
Added YunClient.connect() methods.
2013-07-04 17:15:52 +02:00
Federico Fissore
8c9a06056e BootWatcher removed
BridgeNew is the new Bridge
2013-07-04 16:33:10 +02:00
Fede85
24e63ee6bc Esplora library to new format 2013-07-04 15:54:30 +02:00
Fede85
10a4241ba7 updated Firmata library to version 2.3.5 and moved to the new library format 2013-07-04 13:29:15 +02:00
Fede85
38c3bbbd3c SoftwareSerial library to the new format 2013-07-03 23:18:21 +02:00
Fede85
2919e34ff8 GSM library to the new format and some strings adaptations 2013-07-03 22:55:18 +02:00
Fede85
2371e2ce0d SPI library to the new format and moved Robot_Motor and Robot_Control libraries 2013-07-03 22:00:02 +02:00
Fede85
87d3b4f56b TFT library to new format 2013-07-03 16:25:45 +02:00
Federico Fissore
53aa42351f YunServer: added default port number 5555 2013-07-03 13:43:47 +02:00
Federico Fissore
60d19a0907 requests coming to YunServer do not start with a slash any more 2013-07-03 11:26:30 +02:00
Federico Fissore
5f60509f23 updated temboo examples 2013-07-03 09:03:17 +02:00
Fede85
5d102a5597 modifide comments in Yun examples ShellCommands.ino ConsolePixel.ino 2013-07-02 21:23:59 +02:00
Fede85
2b4346b1f5 modified and added comments to the ConsoleRead.ino example 2013-07-02 16:38:59 +02:00
Fede85
f9989cce62 moved from Console to Serial output in Yun Process example 2013-07-02 15:17:22 +02:00
Fede85
42d7b1d85a modified the WifiStatus example and comments in TimeCheck example 2013-07-01 20:11:14 +02:00
Cristian Maglie
dbd001a776 Added example BridgeNew 2013-07-01 19:12:49 +02:00
Cristian Maglie
6fb6e63e99 YunServer: added method to allow listening on localhost only 2013-07-01 19:12:49 +02:00
Cristian Maglie
ad280d5d8b Bridge: added put(..) method with String variant 2013-07-01 19:12:49 +02:00
Fede85
d4753eed46 typo in Bridge keywords.txt 2013-07-01 17:59:15 +02:00
Fede85
7e039df21f modified the Datalogger example 2013-07-01 17:58:03 +02:00
Fede85
fc880cc566 modified the FileWriteScript example 2013-07-01 16:20:05 +02:00
Fede85
e6af3acdce Added the Keywords.txt file 2013-07-01 11:53:10 +02:00
Federico Fissore
4ae392b0b5 updated and added new Temboo examples 2013-06-28 15:29:39 +02:00
Cristian Maglie
c4753e97b3 Bridge: added YunServer and TunClient class 2013-06-28 09:49:22 +02:00
Cristian Maglie
bb763efe09 Temboo examples moved in their specific folder 2013-06-27 22:40:34 +02:00
Fede85
dc9c791070 Stepper library to the new format 2013-06-27 19:24:16 +02:00
Cristian Maglie
579ff7c7a6 Bridge default speed increased to 250k 2013-06-27 15:44:20 +02:00
Fede85
3b54dfed67 Servo library to the new format 2013-06-27 13:12:07 +02:00
Fede85
77f8dd63ab EEPROM library to the new format 2013-06-27 12:16:14 +02:00
Cristian Maglie
8830751859 Moved Bridge.message* method on their own class. 2013-06-26 22:12:09 +02:00
Cristian Maglie
fdae2dbb6e Removed unused Stream interface from Bridge class 2013-06-26 21:53:22 +02:00
Fede85
9454816162 Ethernet, SD and LiquidCrystal to the new library format 2013-06-26 19:13:04 +02:00
Federico Fissore
8ac5c7c076 included newest Temboo examples 2013-06-26 17:29:57 +02:00
Tom Igoe
20be75fe77 Made ShellCommands example more physical 2013-06-25 14:07:53 -04:00
Tom Igoe
86438fc84b Added ConsolePixel example 2013-06-25 13:57:19 -04:00
Tom Igoe
7b25e85a56 Updated XivelyClient to use Serial instead of Console 2013-06-25 10:42:30 -04:00