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

177 Commits

Author SHA1 Message Date
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