aboutsummaryrefslogtreecommitdiff
path: root/libraries
AgeCommit message (Collapse)Author
2015-01-26Mark SoftwareSerial::tx_pin_write as "always_inline"Matthijs Kooijman
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-26Simplify SoftwareSerial::writeMatthijs Kooijman
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-26Use stopListening() in SoftwareSerial::end()Matthijs Kooijman
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-26Fix race condition in SoftwareSerial::overflow()Matthijs Kooijman
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-26Toggle SoftwareSerial interrupts when starting / stopping to listenMatthijs Kooijman
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-26Add SoftwareSerial::stopListening()Matthijs Kooijman
This allows one to explicitly stop a SoftwareSerial instance from listening, without having to make another one listening.
2015-01-26Add SoftwareSerial::setRxIntMsk()Matthijs Kooijman
This moves the interrupt mask enabling / disabling code into a separate method, so we can call it from multiple spots next.
2015-01-26Let SoftwareSerial::end also check against _rx_delay_stopbitMatthijs Kooijman
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-26Let SoftwareSerial::listen() fail on invalid rx baud ratesMatthijs Kooijman
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-26Clear SoftwareSerial rx delay if no interrupt register is foundMatthijs Kooijman
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).
2014-11-25Fix atomicity issues in SPI::beginTransaction and SPI::endTransaction ↵Cristian Maglie
(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[avr] Made SPI.usingInterrupt() synchronized (Andrew Kroll)Cristian Maglie
2014-11-25[avr] Added SPI.notUsingInterrupt() (Andrew Kroll)Cristian Maglie
2014-11-25[avr] Made SPI.begin() and SPI.end() synchronized (Andrew Kroll)Cristian Maglie
2014-11-25[avr] Improved SPI speed on 16bit transfer.Cristian Maglie
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-14[avr] SPI: removed redundant includeCristian Maglie
2014-11-14[avr] Small comments and headers fixes in SPICristian Maglie
2014-08-01SPI Transactions for AVRPaulStoffregen
2014-07-18missing paragraph field in library.propertiesFede85
2014-07-18modified sentences in library.properties filesFede85
2014-07-02Merge pull request #1912 from Lauszus/issues440Cristian Maglie
Enable user to change the I2C clock frequency by calling setClock in the Wire library
2014-05-23Merge remote-tracking branch 'arduino/master' into ide-1.5.xCristian Maglie
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-03-06Enable user to change the I2C clock frequency by calling setClock in the ↵Kristian Lauszus
Wire library
2013-11-21Revert "SPI library to new format"Cristian Maglie
2013-11-21Revert "EEPROM library to the new format"Cristian Maglie
This reverts commits: 3223d4fdca32ec03de4a3a2a0c22f2d40de5f374 77f8dd63ab102ab5d2929ac4edd5c00ae9d70493
2013-11-15Revert "SoftwareSerial library to the new format"Cristian Maglie
This reverts commit 38c3bbbd3c83eda057d4857635fbd78a4785c3a4.
2013-11-15Revert "Wire library to the 1.5 format"Cristian Maglie
This reverts commit a31857688bdc270ed65307755ff3b73ef4867982.
2013-09-10Wire library to the 1.5 formatFede85
2013-09-06SpacebrewYun library to the 1.5 formatFede85
2013-09-06Temboo library to the 1.5 formatFede85
2013-09-06Bridge library to the 1.5 formatFede85
2013-08-28Spacebrew keywordsFederico Fissore
2013-08-28spacebrew updateFederico Fissore
2013-08-28removed .DS_Store folderFederico Fissore
2013-08-23Merge branch 'ide-1.5.x' into dev-ide-1.5.x-discoveryCristian Maglie
Conflicts: app/src/processing/app/Preferences.java app/src/processing/app/debug/Uploader.java
2013-07-25TemperatureWebPanel: widening refresh intervalFederico Fissore
2013-07-19WiFi library to the new formatFede85
2013-07-19Bridge: Bridge.begin should wait more before giving up, as other processes ↵Federico Fissore
may consume linux cpu power
2013-07-18SpacebrewYun: added new exampleFederico Fissore
2013-07-15Bridge: CRC16 being used as CRCAngelo Scialabba
2013-07-15updated temboo examples (added ControlBySMS)Federico Fissore
2013-07-14Merge branch 'ide-1.5.x' into dev-ide-1.5.x-discoveryCristian Maglie
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-14Merge branch 'master' into ide-1.5.xCristian Maglie
2013-07-11File: implemented File.openNextFile() and File.rewindDirectory()Federico Fissore
2013-07-11FileIO.h: removed wrong function declarationFederico Fissore
2013-07-11Added File.isDirectory()Federico Fissore
2013-07-11updated temboo examplesFederico Fissore
2013-07-10Updated YunSerialTerminal: added command to shutdown bridgeCristian Maglie
2013-07-10Bridge: even more reliable startupCristian Maglie
2013-07-10updated temboo examplesFederico Fissore