Commit Graph

353 Commits

Author SHA1 Message Date
Marcel Kottmann
259ff80d60 use libbase64 macro to calculate base64 length (#2007) 2018-11-19 17:01:38 +01:00
Jeroen88
233d31bed2 Added baudrate detection to esp32-hal-uart and HardwareSerial (#1961)
* Added baudrate detection to esp32-hal-uart and HardwareSerial

* Solved compiler warning for uartResizeRxBuffer()

* Add unit to header variable name (timeout_ms)

* Reverting accidentally changed files to master

* Add small delay after baudrate detection
2018-11-19 16:51:55 +01:00
Terry J Myers
1bc1e8c602 Update WString.cpp (#1936) 2018-11-19 16:45:09 +01:00
Terry J Myers
2132d9f809 Update WString.h (#1935) 2018-11-19 16:44:53 +01:00
Mark D
f12df4c719 allow component projects to compile with CONFIG_DISABLE_HAL_LOCKS (#1880) 2018-11-19 16:39:42 +01:00
chuck todd
e5ea089a7f Reduce resource requirements, Share Interrupt (#1877)
#1869 exposed a resource exhaustion issue. The current HAL layer for I2C support is designed to use a shared interrupt, But, during debugging to solve the interrupt overloading condition identified in #1588, and the generation of pr #1717, the interrupt allocation parameters were changed.  This change was unnecessary, the code will work successfully with shared interrupts.  So, there is no need to assign a private interrupt for each I2C peripheral.
2018-09-21 08:40:01 +02:00
Me No Dev
96822d783f
Update IDF to 3.2-3276a13 and esptool.py to 2.5.0 (#1878)
* TX Flow Control and Code cleanup

* Use semaphore instead of delay

TX functionality is done.

* Use single buffer and empty queue on exit

* Fix compile issues because of LwIP code relocation

* Add temporary header to fix Azure not compiling

* Fix AsyncUDP early init

* AsyncUDP Multicast fixes

* Add source mac address and rework multicast

* Allow redefinition of default pins for Serials 1 and 2

* Update IDF to 3276a13

* Update esptool.py to 2.5.0

* Fix sketches

* Fix log level in BluetoothSetial
2018-09-21 08:39:36 +02:00
david-cermak
4e96bffe0e Initial version of rmt driver (#1525)
* rmt driver initial version

* supporting conti mode plus interrupts

* using conitnous mode for sending more data

* working continous mode

* rmt driver cleanup after conti mode

* initial version of rmt driver

* adding a simple example

* adding channel and block locks

* modified of rmt interface for simpler/easier usage

* adding header sentinels, split interface to common and additional settings

* Fixes per code review + support for rx callback mode

* renamed internal structures and enums, fixed formatting

* cmake support for rmt

* refactored tx-conti interrupts to function to make it more readable

* added Tx and Rx examples

* added license headers

* minor updates per review

* used struct access, renamed defines, corrected diagram
2018-09-17 23:19:27 +02:00
hreintke
ea61563c69 Functional interrupt (#1728)
* Initial

* Implementation

* Add to CMakelist.txt

* Add example

* Add IRAM_ATTR
2018-09-17 23:13:58 +02:00
hreintke
5be3078b76 InterruptArg should take voidFuncPtrArg as argument (#1776) 2018-09-17 23:10:13 +02:00
Junxiao Shi
1e4bf14a3e cores: replace max, min, round macros with imports from std (#1783)
fixes #1734
2018-09-17 21:33:01 +02:00
Baruch Nissenbaum
a6a9a518a7 _uart_isr use wr_addr != rd_addr as test for internal queue not empty (#1849) 2018-09-17 21:19:51 +02:00
Adam Coddington
ce61074802 Add functionality allowing rxBuffer of HardwareSerial to be changed in size via HardwareSerial::setRxBufferSize. (#1855) 2018-09-17 21:16:18 +02:00
me-no-dev
80c110ece7 Add more methods to access memory properties 2018-08-18 17:10:35 +02:00
me-no-dev
65511b23d3 Add separate method to get free PSRAM and report only internal in getFreeHeap 2018-08-18 16:34:41 +02:00
chuck todd
9db207afbe Improve bus recovery (#1767)
If the esp32 is reset during a i2c read cycle the slave device may be in control of the SDA line.  

If the SDA line is held low, the esp32 cannot issue a START or STOP to recover the bus. 

The previous code did not correctly configure the SCL output pin, and it cycled SCL 9 times with SDA Low.  Since the slave device was in a READ cycle, it just continued outputting the bits of the current byte.  When the ACK/NAK bit space occurred, The low output value of SDA was interpreted as ACK so the slave device continued with the next byte.  It never terminated the READ cycle. 

This new code will correctly recover from an interrupted READ
2018-08-18 08:50:59 +02:00
chuck todd
b05430cfd9 Wire ReSTART fix, with others (#1717)
* ReSTART fix, Sequencing fix

pr #1665 introduce a problem with ReSTART, when solving this problem I found an interaction between the TxFifo refill, RxFifo empty and CMD[] fill.  during certain sequences a dataqueue command would be skipped, this skipping resulted in a mismatch between the contents of the TxFifo and the i2c command sequence.  The problem manifested as an ACK error. 
In addition to this required bug fix I propose:
* `Wire.begin()` be changed from a `void` to a `bool` this will allow the reset functionality of `Wire.begin()` to be reported.  Currently `Wire.begin()` attempts to reset the i2c Peripheral, but cannot report success/failure.
* `Wire.busy()` be added. this `bool` function returns the hardware status of the bus. This status can be use in multi-master environments for application level interleaving of commands, also in single master environment, it can be used to detect a 'hung' bus.  With the functional change to `Wire.begin()` this allows app level recover of a hung bus.
* `Wire.lastError()` value updated for all errors, previously when interleaving `Wire.endTransmission(false)` and `Wire.readTransmission(false)`, the 128 byte `Wire.write()` buffer was exhausted without generating and error(very exotic). I discovered this error when I created a sequence of directed reads to a EEPROM. Each directed read used 2 bytes of the 128 byte `write()` buffer, so after 64 consecutive ReSTART writes with ReSTART reads, `Wire()`  had no room to record the directed address bytes.  It generated just a NAK check without setting the EEPROMs internal register address.  The succeeding ReSTART read succeeded at incorrect address.
* Changes to the HAL layer:
** added `i2cGetStatus()` which returns the i2c peripheral status word, used to detect bus_busy currently
** added `i2cDebug()` programmatic control of debug buffer output
** changed `i2cAddQueue()` to allow data_only queue element this will allow a i2c transaction to use multiple data pointers.
** removed direct access to DumpInts(), DumpI2c() from app, use i2cDebug() to set trigger points 
 
*

* Update esp32-hal-i2c.c

* Update Wire.cpp

* ReSTART, Sequencing

pr #1665 introduce a problem with ReSTART, when solving this problem I found an interaction between the TxFifo refill, RxFifo empty and CMD[] fill.  during certain sequences a dataqueue command would be skipped, this skipping resulted in a mismatch between the contents of the TxFifo and the i2c command sequence.  The problem manifested as an ACK error. 
In addition to this required bug fix I propose:
* `Wire.begin()` be changed from a `void` to a `bool` this will allow the reset functionality of `Wire.begin()` to be reported.  Currently `Wire.begin()` attempts to reset the i2c Peripheral, but cannot report success/failure.
* `Wire.busy()` be added. this `bool` function returns the hardware status of the bus. This status can be use in multi-master environments for application level interleaving of commands, also in single master environment, it can be used to detect a 'hung' bus.  With the functional change to `Wire.begin()` this allows app level recover of a hung bus.
* `Wire.lastError()` value updated for all errors, previously when interleaving `Wire.endTransmission(false)` and `Wire.readTransmission(false)`, the 128 byte `Wire.write()` buffer was exhausted without generating and error(very exotic). I discovered this error when I created a sequence of directed reads to a EEPROM. Each directed read used 2 bytes of the 128 byte `write()` buffer, so after 64 consecutive ReSTART writes with ReSTART reads, `Wire()`  had no room to record the directed address bytes.  It generated just a NAK check without setting the EEPROMs internal register address.  The succeeding ReSTART read succeeded at incorrect address.
* Changes to the HAL layer:
** added `i2cGetStatus()` which returns the i2c peripheral status word, used to detect bus_busy currently
** added `i2cDebug()` programmatic control of debug buffer output
** changed `i2cAddQueue()` to allow data_only queue element this will allow a i2c transaction to use multiple data pointers.
** removed direct access to DumpInts(), DumpI2c() from app, use i2cDebug() to set trigger points 
 
*

* Forgot DebugFlags Return

@andriyadi found this, total brain fade on my part.
2018-08-14 11:51:15 +02:00
me-no-dev
f9a382ab9f fix some compilation error and warnings in i2c 2018-07-24 22:06:50 +02:00
chuck todd
8d7fb58672 Fix for spurious interrupts during I2C communications (#1665)
This version no longer needs an interrupt for each byte transferred. It only needs interrupts for START, STOP, FIFO empty/Full or error conditions.  This dramatically reduces the interrupt overhead.  I think the prior version was causing an interrupt overload condition where the ISR was not able to process every interrupt as they happened.
2018-07-24 19:43:45 +02:00
chuck todd
28a410dd50 Spurious Interrupts Temporary fix 20180711 (#1625)
the 'eject' ERROR is and indication of an interrupt triggering without an source.  I am working to eliminate these serviceable interrupt.  This update increase stability on a HelTek Wifi Lora 32 board. with a SSD1306 OLED.  This update fixes a glaring error in the interrupt allocation code, the Interrupt mask was wrong.  I also dynamically adjust the FiFo thresholds based on Bus clockrate. The change to FiFo thresholds has reduced the number for 'eject' events.  I also change 'eject' from and ERROR to DEBUG.  An 'eject' event does not compromise i2c transmissions. It happens after a transaction has completed. 

Chuck.
2018-07-12 15:18:26 +02:00
Bert Melis
c77aed4ac4 Allow using argument with attachInterrupt (#1535)
* Allow using argument with attachInterrupt

* formatting

replace tabs with spaces

* fix bug more then 1 interrupt

* leftover

* add example

* make attachInterruptArg public

* update example

* leftover
2018-07-07 11:26:58 +02:00
me-no-dev
5e46c9bae6 Add Wrover Support and Option to enable SPIRAM 2018-07-03 23:03:50 +02:00
me-no-dev
4e5cbdaa7f Add declarations for all Serial, SPI and Wire buses 2018-07-03 20:41:03 +02:00
chemicstry
12ca9e8b52 Port UART reset fix from ESP-IDF (#1408) 2018-07-03 17:54:08 +02:00
chuck todd
6411ac4e3c Remove confusing Debug output. (#1574)
If Core Debug Level is at DEBUG, a confusing debug message will be emitted if the I2C transaction takes longer complete than the  calculated minimum time.  This original debug message was just to prove that this new i2c code could correctly handle SCL stretching or interrupt latency issues. This delay is not a problem, or an error.  Usually it is caused by a higher priory interrupt starving the i2c ISR.  Usually WiFi is the culprit.  As long of this delay is within the configured timeout (by default 50ms, or can be set with Wire.setTimeOut(milliseconds);) no problem will occur and the transaction will successfully complete.
Chuck.
2018-07-02 18:22:05 +02:00
Me No Dev
184bb069f2
Fix io16 io17 and PSRAM support (#1564)
* Add PSRAM init and malloc funtions

* Rebuild IDF libs
2018-06-30 23:06:50 +02:00
Me No Dev
a59eafbc9d
Update IDF to aaf1239 (#1539)
* fix sdmmc config

* Fix warnings in EEPROM

from @Curclamas

* remove leftover TAG in EEPROM

* Initial add of @stickbreaker i2c

* Add log_n

* fix warnings when log is off

* i2c code clean up and reorganization

* add flags to interrupt allocator

* fix sdmmc config

* Fix warnings in EEPROM

from @Curclamas

* remove leftover TAG in EEPROM

* fix errors with latest IDF

* fix debug optimization (#1365)

incorrect optimization for debugging tick markers.

* Fix some missing BT header

* Change BTSerial log calls

* Update BLE lib

* Arduino-ESP32 release management scripted (#1515)

* Calculate an absolute path for a custom partitions table (#1452)

* * Arduino-ESP32 release management scripted
(ready-to-merge)

* * secure env for espressif/arduino-esp32

* * build tests enabled
* gitter webhook enabled

* * gitter room link fixed
* better comment

* * filepaths fixed

* BT Serial adjustments

* * don't run sketch builds & tests for tagged builds

* Return false from WiFi.hostByName() if hostname is not resolved

* Free BT Memory when BT is not used

* WIFI_MODE_NULL is not supported anymore

* Select some key examples to build with PlatformIO to save some time

* Update BLE lib

* Fixed BLE lib

* Major WiFi overhaul

- auto reconnect on connection loss now works
- moved to event groups
- some code clean up and procedure optimizations
- new methods to get a more elaborate system ststus

* Add cmake tests to travis

* Add initial AsyncUDP

* Add NetBIOS lib and fix CMake includes

* Add Initial WebServer

* Fix WebServer and examples

* travis not quiting on build fail

* Try different travis build

* Update IDF to aaf1239

* Fix WPS Example

* fix script permission and add some fail tests to sketch builder

* Add missing space in WiFiClient::write(Stream &stream)
2018-06-27 09:01:06 +02:00
lbernstone
33392af315 Missing include gpio.h in esp32-hal-dac.h (#1512) 2018-06-19 11:33:17 +03:00
Ivan Grokhotkov
93c45af256 Use esp_timer_get_time as time source for micros and mills (#1424)
esp_timer_get_time returns monotonic time in microseconds, as a 64-bit
number. It can be called from tasks and interrupts, does not use any
critical sections/mutexes, and is thread safe.
2018-05-22 16:12:30 +02:00
mmone
dd639c4a02 Fix wrong range of duty cycle (#1353)
The esp-idf expects duty values for the the sigma delta modulator in the range of -128 to 127
The arduino framework is supposed to use the range 0-255 thus the offset caclulation was wrong.
2018-05-14 13:18:03 +02:00
Tim P
6bf7619ccc std::functioanl for WFIF event + Minor fix (#1366)
* add missing bits from esp8266 to help porting other libs

* Clean Up of Wifi event

* Exampl of Wifi Events
2018-05-14 13:05:49 +02:00
Craig Leres
c92b617397 Convert the few remaining cr/lf files to use lf for eol. (#1316)
If you develop on windows and need cr/lf files, see this:

    https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration#_formatting_and_whitespace

    Git can handle this by auto-converting CRLF line endings into LF
    when you add a file to the index, and vice versa when it checks out
    code onto your filesystem. You can turn on this functionality with
    the core.autocrlf setting. If you're on a Windows machine, set it
    to true - this converts LF endings into CRLF when you check out code:

    $ git config --global core.autocrlf true
2018-04-16 16:34:39 +02:00
chuck todd
1cf42702dd Add Hardware Reset when Initing I2C peripheral (#1201)
This change uses the `_RST` bit of the i2c peripheral to force the hardware into power on reset state.  The prior code assumed the peripheral was already in a reset, it just cleared the reset bit.  

Chuck.
2018-04-06 19:13:59 +03:00
mtabu
aa1288aa6e HardwareSerial - availableForWrite() support (#1226)
* HardwareSerial - availableForWrite() support

* fix indentation errors (tab vs space)
2018-04-06 19:07:46 +03:00
George Talusan
149190fe11 fix Arduino component build when CONFIG_ARDUHAL_ESP_LOG is turned off (#1228) 2018-04-06 19:06:53 +03:00
KEDARUMA FANTASTIC
c01e5563c8 serial global instance fix (#1243) 2018-04-06 19:02:59 +03:00
me-no-dev
835268c326 fix thread storage 2018-03-04 21:23:18 +01:00
chuck todd
7141e3e29d micros() returning inconsistend values when call from different tasks (#1165)
The cycle count that micros() is using to report timing is a PER Task value.  When micros() or delayMicroseconds() is called from different Tasks, the lastCycleCount value may have no relationship to the current Task specific cycleCount. If the current cycleCount is less than the saved lastCycleCount a rollover condition is assumed. This erroneous conditions results in incorrect delays and reported microseconds.  This fix creates thread local storage so that each Task will have accurate microsecond reporting and delays.  The reported microseconds are not real time, they are microseconds of the current Task execution.
2018-03-04 21:17:34 +01:00
Bernardo Ramos
0f9595e31e Fixes SPI mode setting (Issue #1094) (#1096)
Fixes #1094
2018-03-04 20:56:33 +01:00
Tom Ferrin
da46d0b264 FIX: getEfuseMac can return random data (#1059)
esp_efuse_mac_get_default() only stores into the bottom 6 bytes of it's 8-byte argument, so must initialize this arg to zero to avoid trash on the stack.
2018-03-04 20:35:14 +01:00
Kristian Sloth Lauszus
78acedd2cf Workaround strict-aliasing warnings and added missing pgm_read_ptr define (#996)
See: https://travis-ci.org/felis/USB_Host_Shield_2.0/jobs/328511332 and 8a02ea67f5 (diff-6e1ff9551639ac89d99617863bf84e10)
2018-01-18 01:02:20 +02:00
Me No Dev
600f4c4130
Update IDF to 1c3dd23
* Update mDNS and LEDC

* update toolchain

* Update IDF to 1c3dd23

* Advertise the board variant for Arduino OTA

* Add generic variant definition for mDNS
2018-01-18 00:56:58 +02:00
张雷
80a7d6084b fix enable ADC on pin37,38 (#822) 2017-11-10 13:27:00 +02:00
copercini
3dc30dce81 Add compatibility macros with esp8266 (#783) 2017-10-30 10:27:26 +01:00
Me No Dev
55289a45af Update IDF to 9274814 (#767)
* Update IDF to 9274814

* Fix error in i2c and Arduino
2017-10-24 00:21:00 +02:00
Jason K
11565343e6 Merge branch 'master' into master 2017-10-23 14:40:33 -04:00
chuck todd
a695187de8 Correct 10bit Device address handling.
The existing code did not follow protocol with 10bit addressed devices.  Per _Philps/NXP Semiconductors UM10204 I2C-bus specification and user manual Rev. 6 4April2014_ pg.15 3.1.11 10-bit addressing:
~The first seven bits of the first byte are the combination of 1111 0xx of which the last two bits (xx) are the two Most-Significant Bits (MSB) of the 10-bit address; the eighth bit of the first byte is the R/!W! bit the determines the direction of the message~
2017-10-21 13:14:14 -06:00
Jason K
1270f40066 Add initial handling for long I2C reads. 2017-10-21 08:26:46 -04:00
chuck todd
7eff707ba6 Fix Early return when Address NAK is received (#750)
The i2cWrite() function was returning to the app before the i2c transaction had completed.  This caused the next Wire() call to return a I2C_ERROR_BUSY.
2017-10-21 08:40:53 +02:00
me-no-dev
409c75da04 Implement ESP_LOGx override option
Usable for library developers who write code not dependent on Arduino.
Adding 3 lines to the includes will permit their debug messages to be
visible in Arduino IDE or when enabled under IDF
2017-10-14 00:06:55 +03:00
Ewald Wasscher
e6a5b68e40 Added argument to HardwareSerial.begin to specify whether the logic levels of the UART rx and tx lines should be inverted (#719) 2017-10-13 11:46:56 +03:00
me-no-dev
0fa25c09ef Fix possible leak in String
Fixes: https://github.com/espressif/arduino-esp32/issues/710
2017-10-12 06:52:35 +03:00
chuck todd
2f0cfa92cd Update pgmspace.h (#707)
Fix redefines of strXXX, original was using strnXXX with length set to 0x7fffffff.  This caused problems with strcpy and strcat. The destination buffer was NULL'd to 0x7fffffff which killed the app.
2017-10-09 06:38:42 +03:00
Testato
8dc0c86457 Chip revision fix (#704)
* Chip revision fix

https://www.esp32.com/viewtopic.php?f=2&t=1358&sid=f77cd62ec254317f3bbb30d8ab75ca2a&start=10

* using of esp_chip_info instead of register reading
2017-10-08 14:48:50 +03:00
copercini
171032b701 Print an error when serial number is invalid (#691)
* Print error when serial number is invalid

* Move to the first check, change end by return
2017-10-04 11:12:21 +08:00
Luc
d208a36836 Use correct sign of offset for TZ variable (#685)
Use UTC instead of CDT for consistency
2017-10-01 10:19:00 +08:00
me-no-dev
28be506ce3 uncomment I2C debug so it can be used 2017-09-29 21:24:06 +08:00
Jason K
0cd62852da I2c reset functionality (#678)
* Addition of a i2cReset method and timeout handling for the case where the i2c hardware FSM (state machine) gets stuck in a busy state.

* Use newly added i2cReset function within the wire library.
2017-09-29 21:17:13 +08:00
me-no-dev
af35773d65 OK Really change timer allocator 2017-09-28 18:38:07 +08:00
me-no-dev
17ece1bccd Revert Timer Interrupt setup 2017-09-28 18:22:35 +08:00
me-no-dev
6d98555658 Change timer interrupt allocator 2017-09-28 16:45:08 +08:00
me-no-dev
f9b2d42a61 Change Touch interrupt allocator 2017-09-28 16:44:47 +08:00
me-no-dev
7991161f06 Change Pin Interrupt Allocator 2017-09-28 12:27:10 +08:00
me-no-dev
db77195404 Fix Serial 2017-09-27 13:50:05 +08:00
me-no-dev
d27d297195 Update IDF to c4e65d6 2017-09-22 17:28:54 +08:00
me-no-dev
e2bd93c092 Fix UART0 not able to read/available 2017-09-22 14:17:25 +08:00
me-no-dev
c66a020e80 Add guards to not compile BT code if not enabled 2017-09-21 19:08:18 +08:00
Luc
4092fc409e Add baudRate function (#651)
usefull for ESP8266 compatibility
2017-09-21 17:00:12 +08:00
me-no-dev
db79c2ee95 Add api to get CPU temperature
Fixes: https://github.com/espressif/arduino-esp32/issues/563
Fixes: https://github.com/espressif/arduino-esp32/issues/625
Source:
https://github.com/pcbreflux/espressif/blob/master/esp32/arduino/sketchb
ook/ESP32_int_temp_sensor/ESP32_int_temp_sensor.ino
2017-09-18 17:47:06 +08:00
me-no-dev
ab0ea2f6da Fix missing method from SPI HAL
Fixes: https://github.com/espressif/arduino-esp32/issues/640
2017-09-18 12:14:41 +08:00
me-no-dev
9fc3f1ebdd Fix wrong SPI peripheral enabled
Related: https://github.com/espressif/arduino-esp32/issues/634
2017-09-13 17:21:34 +03:00
me-no-dev
39fb8c3044 Fix header deprecation 2017-09-12 09:42:14 +03:00
me-no-dev
59a6800cdf Enable clocks for UART1 and 2
Recent change in IDF disables those clocks at boot. This change should
help with that.

Fixes: https://github.com/espressif/esp-idf/issues/975
2017-09-10 20:24:41 +03:00
Mark D
234c855c9b add configTzTime() to setup sntp using TZ environment variable (#608) 2017-09-05 11:15:55 +03:00
me-no-dev
6707d4d331 Optimize timer drift
Fixes: https://github.com/espressif/arduino-esp32/issues/227
2017-08-26 00:01:02 +03:00
me-no-dev
77b03472c6 Set uart queue to NULL after free
Fixes: https://github.com/espressif/arduino-esp32/issues/435
2017-08-17 19:04:20 +03:00
Pranav Cherukupalli
41e36a72f3 uartEnd: Unlock mutex before detaching rx and tx (#554)
* uartEnd: Unlock mutex before detaching rx and tx

This should solve the device freezing issue when Serial.end() is called

* Unlock UART MUTEX only for detaching Rx and Tx

* Thanks to @me-no-dev for pointing it out that
   uart->dev->conf0.val can be inside mutex lock
2017-08-04 12:00:51 +03:00
me-no-dev
a1bef8b5c3 improve Serial repeated begin/baud change 2017-08-02 00:32:42 +03:00
me-no-dev
4495659ac5 Increase the memory for loop task 2017-08-02 00:08:56 +03:00
Claude Heintz
23acb4d17b Two Stop Bit Workaround (#461)
* Update esp32-hal-uart.c

* Two Stop Bit Workaround

see https://github.com/espressif/esp-idf/blob/master/components/driver/uart.c  lines 118-127
2017-06-22 19:40:31 +02:00
me-no-dev
c2f83f48e0 Revert "Fix enable Update partition"
This reverts commit 63e1daa5ea67ce0f9b89b789e4bb26672f64d32e.
2017-06-03 20:11:41 +03:00
me-no-dev
2e5743eaa1 Fix enable Update partition 2017-06-03 20:11:41 +03:00
me-no-dev
7db8f70956 change return type of micros() and millis()
Fixes: https://github.com/espressif/arduino-esp32/issues/384
2017-05-22 15:47:12 +03:00
me-no-dev
d36e9bbfa9 Change deprecated esp_efuse_read_mac method 2017-05-15 21:35:25 +03:00
me-no-dev
4b47402afd Use static buffer for log_printf 2017-05-15 20:53:45 +03:00
me-no-dev
befebb7242 Change DPORT access macros 2017-05-15 20:53:09 +03:00
me-no-dev
450df7e3f8 fix libb64
Implements: https://github.com/esp8266/Arduino/pull/2883
Fixes: https://github.com/espressif/arduino-esp32/issues/313
Fixes: https://github.com/espressif/arduino-esp32/issues/344
2017-05-06 18:56:25 +03:00
me-no-dev
673f453da0 BT define the hal methods even if BT is disabled (but return false) 2017-05-06 18:50:20 +03:00
me-no-dev
768e57f285 Fix BT enabled check 2017-05-06 18:40:23 +03:00
me-no-dev
b879f80017 Allow Arduino to be run without BT support in IDF
Fixes: https://github.com/espressif/arduino-esp32/issues/343
2017-05-06 18:27:03 +03:00
WEMOS Electronics
a38ffe58fe Add ESP.getChipId() function to get ESP32's ChipID. (#322)
* Add ESP.getChipId() function to get ESP32's ChipID.

* change getChipId() to getEfuseMac()
2017-05-05 09:59:54 +03:00
Severin Smith
cc73f17add SPI_MODE2 and SPI_MODE3 configurations inverted (#345)
It appears that the configurations for `ck_out_edge` were inverted for `SPI_MODE2` and `SPI_MODE3`. You can check the technical reference manual on page 76, table 23 "Clock Polarity and Phase, and Corresponding SPI Register Values for SPI Master".

I've check with my oscilloscope that the current configuration is wrong and this fix corrects the issue.
2017-05-05 09:59:18 +03:00
me-no-dev
aad4b336d6 Add default config for BT init and offsets for partition table 2017-04-22 16:33:07 +03:00
me-no-dev
ee14bc2cc6 Mute leftover debug from WiFi 2017-04-13 09:13:45 +03:00
me-no-dev
fd81fd0ac3 Fix BT init compilation error
Fixes: https://github.com/espressif/arduino-esp32/issues/309
2017-04-12 20:53:21 +03:00
me-no-dev
b465858563 Check and format NVS partition if size has changed 2017-04-04 01:27:26 +03:00
me-no-dev
90322ae7eb Make I2C work reliably with interrupts
Thanks @marcmerlin and @MartyMacGyver
2017-03-26 00:27:27 +02:00
me-no-dev
dda89947a7 Fix writePixels 2017-03-22 02:26:18 +02:00
me-no-dev
9388d8358e Return true for boolean test on Serial
Fixes: https://github.com/espressif/arduino-esp32/issues/270
2017-03-20 11:26:34 +02:00
me-no-dev
786425509e Track microseconds overflow
Closes: https://github.com/espressif/arduino-esp32/pull/267
2017-03-20 11:21:56 +02:00
me-no-dev
eb46978a8d Add Arduino SAM compatible analogReadResolution and Non-Blocking ADC api
connected to: https://github.com/espressif/arduino-esp32/issues/220 and
https://github.com/espressif/arduino-esp32/issues/161
2017-03-03 15:53:20 +02:00
me-no-dev
1058e89dc3 Fix wrong bitmask returned for pins above 31 2017-03-03 14:42:14 +02:00
me-no-dev
5f2b00228c IDF add some defaults and allow Arduino to run in single-core mode 2017-02-28 23:36:05 +02:00
Martin Sloup
00c1a65612 Improvements in EspClass (#222)
* Improvements in EspClass

- fixed not working functions for flash chip size, speed and mode
- added function to retrieve chip revision from eFuse
- flashRead / flashWrite supports encrypted flash

* Rename getCpuRevision function to getChipRevision

* Revert: flashRead / flashWrite supports encrypted flash

Reading and writing to encrypted flash has to be aligned to 16-bytes. Also NAND way of writing (i.e. flipping 1s to 0s) will not work with spi_flash_write_encrypted. Note: spi_flash_read_encrypted will always try to decrypt data, even if it wasn't encrypted in the first place.
2017-02-23 02:23:27 +02:00
me-no-dev
1d759380a6 Major IDF and Arduino Update
WiFi and BlueTooth can now be started and stopped at will.
basic functions added to esp32-hal to start and stop the BT radio
SimpleBLE class added to show the most basic functionality
Example to show how to switch between BT, WiFi or Both
2017-02-23 01:11:57 +02:00
me-no-dev
e873d577f7 Restructure Arduino.h a bit to help eclipse code indexer 2017-02-20 15:06:22 +02:00
me-no-dev
d0232d126a SPI implement transaction locking
Use transactions to skip mutex locks for reads and writes
2017-02-14 04:15:38 +02:00
me-no-dev
9bd5de11a7 add hook for bluetooth to Arduino INIT 2017-02-14 04:15:38 +02:00
Martin Sloup
43cc3dc815 Fix for implicit declaration of function nvs_flash_init error (#204) 2017-02-13 01:56:47 +02:00
me-no-dev
4a90aeebc9 fix ESP:: getCpuFreqMHz 2017-02-11 23:36:16 +02:00
me-no-dev
450ea0d211 Update ESP class 2017-02-11 23:34:43 +02:00
me-no-dev
09f5f7266b move yield to function
fixes: https://github.com/espressif/arduino-esp32/issues/193
2017-02-11 00:25:15 +02:00
Me No Dev
fb8fe671d6 New partitions (#192)
* Add new partition scheme

* Init NVS early, so it can be used without BT or WiFi
2017-02-10 14:11:24 +02:00
me-no-dev
7a7b697ff9 Add ESP::deepSleep(us)
fixes: https://github.com/espressif/arduino-esp32/issues/51
2017-02-08 20:32:49 +02:00
Martin Sloup
67128fcb2c Fixes implementation of __FlashStringHelper (#183)
Previous __FlashStringHelper implementation was defines as a char which brought problem in case the method with char* parameter used overloading with __FlashStringHelper* parameter (they was identical). Now __FlashStringHelper is defined as a class and all casts between char* and __FlashStringHelper* are made with reinterpret_cast sugar.
2017-02-08 19:57:26 +02:00
Me No Dev
d02c1c786e Update IDF, fix SS definition, add custom partitions and debug level selection (#174)
* Add build time partitions compilation

* Fix wrong definition of SS pin

* Add support for core debug level selection

* update idf libs
2017-02-06 15:17:11 +02:00
me-no-dev
de017a8a1b Optimize SPI transfers to take one lock and do not return until completed 2017-02-01 02:14:36 +02:00
me-no-dev
6a1e7c1e99 Fix cbuf not being able to hold the full length
fixes: https://github.com/espressif/arduino-esp32/issues/145
2017-01-24 17:57:44 +02:00
me-no-dev
5f203e1a98 Add ESP::getSdkVersion
fixes: https://github.com/espressif/arduino-esp32/issues/146
2017-01-24 11:44:26 +02:00
me-no-dev
c8140f8288 add configTime, getLocalTime and support for time in Print
example:
```cpp
//done once on WiFi init
configTime(-7200, 3600, "pool.ntp.org");
//get local time
struct tm timeinfo;
if(!getLocalTime(&timeinfo)){
    Serial.println("Failed to obtain time");
    return;
}
//print time
Serial.println(&timeinfo);
//print time with different format
Serial.println(&timeinfo, "%A, %B %d %Y %H:%M:%S");
```
fixes: https://github.com/espressif/arduino-esp32/issues/29
2017-01-24 04:07:27 +02:00
sorscode
13f3ac569b Enable pulseIn() (#140)
* Add files via upload

enable pulseIn()

* Remove optimistic_yield
2017-01-20 21:49:17 +02:00
me-no-dev
9e6e3249b6 update windows toolchain and platform.txt 2017-01-19 03:24:21 +02:00
me-no-dev
35316de8d3 revert toolchain for windows 2017-01-17 12:45:03 +02:00
Angus Gratton
ce5df79674 SDK headers: Use new esp-idf signal name VSPICLK_OUT_IDX (#130) 2017-01-16 12:12:13 +02:00
me-no-dev
6edf8a7795 fix renamed method names for SigmaDelta 2017-01-09 21:55:37 +02:00
me-no-dev
a4305284d0 LEDC Driver Update
- Add double precision to LEDC frequency
- Add method for writing frequencies (Tones)
- Add method for writing notes (8 channels polyphony anyone?)
2017-01-09 18:05:30 +02:00
me-no-dev
8e948096d4 Rename sd->sigmadelta in HAL
Change is to not be mistaken with SD Card
2017-01-09 17:57:17 +02:00
me-no-dev
7cef2e2954 Add initial IPv6 Support 2017-01-06 00:54:50 +02:00
me-no-dev
8b96b1a5f4 update IDF libs and esptool.py
adds autoreset after firmware upload
2017-01-05 13:54:40 +02:00
me-no-dev
668c3811b8 Wire: wait while bus is busy if ack failed 2016-12-15 01:41:54 +02:00
me-no-dev
b86fb30b1d cleanup read commands 2016-12-14 23:31:28 +02:00
me-no-dev
04e0902ca6 Wire: if we are reading only one byte, do not send empty read command 2016-12-14 18:43:32 +02:00
me-no-dev
917a4fd6f0 allow setting internal pull resistors for any mode and enable them for I2C 2016-12-14 13:11:10 +02:00
me-no-dev
c19fc061b0 Hopefully fix I2C/Wire
Tested with (all at the same time):
- MPU9250
- HTU21
- TMP102
- BMP180
- AM2320
- SSD1306
2016-12-14 02:41:22 +02:00
me-no-dev
e92634a92b Add analogSetAttenuation and analogSetPinAttenuation 2016-12-14 02:29:54 +02:00
me-no-dev
a6c02bc710 Add some missing defines
fixes: https://github.com/espressif/arduino-esp32/issues/76
fixes: https://github.com/espressif/arduino-esp32/issues/5
fixes: https://github.com/espressif/arduino-esp32/issues/91
2016-12-12 02:12:18 +02:00
Victor Tseng
54b1b8b1d3 const correctness (#89)
make IPAddress.toString() const method, it doesn't modify anything
within the class.
2016-12-12 01:32:55 +02:00
me-no-dev
8e7d00b9a8 i2c revert to old fifo write 2016-12-09 18:07:59 +02:00
me-no-dev
4e458fd6fb Initial Timers driver
Implementation for Timers 0-4 (no locks yet)
2016-12-09 17:47:30 +02:00
me-no-dev
f5d6828c5a Adjust interrupt numbers for GPIO and Touch 2016-12-09 13:22:56 +02:00
Me No Dev
d1025b6b5d Update esp32-hal-i2c.c
wait for data to be latched and increase timeout in attempt to fix clock stretch issues
Connected issues:
http://esp32.com/viewtopic.php?f=19&t=632&p=2832#p2801
https://github.com/espressif/arduino-esp32/issues/81
https://github.com/espressif/arduino-esp32/issues/53
https://github.com/espressif/arduino-esp32/issues/11
2016-12-09 12:51:36 +02:00
me-no-dev
758553a786 Add analogRead, touchRead, dacWrite and updated esp-idf 2016-12-08 23:43:41 +02:00
me-no-dev
48abb79ed3 Remove autostart define overwrite
Fixes issue where switch will not properly trigger if Arduino is used
in IDF as component.
See
https://github.com/espressif/arduino-esp32/issues/83#issuecomment-265326
071
2016-12-07 11:06:33 +02:00
me-no-dev
ba04076f16 Move definitions to not conflict with C includes 2016-12-05 22:53:04 +02:00
me-no-dev
6dc34077c4 Add correct definitions for word
fixes: https://github.com/espressif/arduino-esp32/issues/76
2016-12-05 22:50:51 +02:00
me-no-dev
e77ec634a9 Fix deprecation warnings in ESP.cpp 2016-12-02 14:30:04 +02:00
me-no-dev
49f35ff070 use esp_random in WMath.cpp 2016-12-02 13:42:31 +02:00
me-no-dev
6db0ee1304 Optimize GPIO and account for micros overflow in delayMicroseconds 2016-12-02 13:03:51 +02:00
me-no-dev
8904f52c39 Allow phy to be initialized only if WiFi/BLE is used/enabled
fixes: https://github.com/espressif/arduino-esp32/issues/72
2016-12-01 13:23:17 +02:00
me-no-dev
1d1aeecde2 simplify WiFi boot procedure to prepare for on-demand stack load
currently ```esp_wifi_init``` have to be called in ```app_main``` or
WiFi will fail to boot. When possible to boot later, code will be moved
into ```_esp_wifi_start``` to be executed when necessary
2016-11-28 00:50:21 +02:00
me-no-dev
f4c2135a30 RTC pins have pull up/down elsewhere
use driver/gpio for now.

fixes: https://github.com/espressif/arduino-esp32/issues/66
2016-11-26 12:04:36 +02:00
Me No Dev
be2a26b3ff set SCL to OUTPUT_OPEN_DRAIN
fixes: https://github.com/espressif/arduino-esp32/issues/69
2016-11-25 11:25:50 +02:00
Drake Youngkun Min
d8b2290313 Add 'fromString(const char*)', 'fromString(const String)' to IPAddress class (#68) 2016-11-24 09:46:11 +02:00
me-no-dev
5703b769f2 pull sdkconfig early so IDF does not warn about redefinition 2016-11-18 15:14:02 +02:00
me-no-dev
c30012ab78 Add Kconfig for IDF and option to disable HAL mutexes
IDF Options:
- Autostart Arduino (implements app_main)
- Disable HAL locks
- Set HAL debug level
- Auto-connect STA if configured (else will connect after WiFi.begin())
2016-11-18 15:07:25 +02:00
me-no-dev
7abb15ca62 reset i2c cmd buffer before read/write
related to [issue
53](https://github.com/espressif/arduino-esp32/issues/53)
2016-11-17 00:46:56 +02:00
me-no-dev
6d097cd4b5 Add definitions for yield() and optimistic_yield()
Fixes: https://github.com/espressif/arduino-esp32/issues/54
2016-11-16 17:36:52 +02:00
me-no-dev
56cd8f63f0 Add HardwareSerial::write(const char *)
fixes: https://github.com/espressif/arduino-esp32/issues/55
2016-11-16 17:30:13 +02:00
me-no-dev
47babd2098 shave off some time when sending multiple bytes through SPI 2016-11-14 13:08:30 +02:00
me-no-dev
f0b7959425 add default pins for UART1 and UART2
NOTE: UART1's default pins can be used only when SPI Flash is DIO

thanks @ladyada
2016-11-13 17:01:44 +02:00
me-no-dev
2cc1a6a1da add shiftIn shiftOut
thanks @ladyada
2016-11-13 16:53:56 +02:00
me-no-dev
bfe6e5ae77 optimize log facility for multi threading
- Shorten filenames
- Add log_printf with mutex locking to play nice with Serial and two
cores
2016-11-13 13:40:31 +02:00
me-no-dev
a5d52ac4f7 Do not include file that does not exist 2016-11-13 13:26:49 +02:00
me-no-dev
2515a3cfed Make compiler not complain about 2 random prototypes
Issue is when Arduino.h is included in C file
2016-11-13 13:23:44 +02:00
me-no-dev
fb8f1244b7 wrong count checked for uartWrite 2016-10-29 14:34:18 +03:00
volca
261bc5ae85 Add from original Arduino.h (#26) 2016-10-27 15:43:27 +03:00
me-no-dev
6465d4fa8e Make Arduino.h safe to include from C files 2016-10-26 04:07:52 +03:00
me-no-dev
a92f20edb2 include stdlib_noniso in Arduino.h 2016-10-26 02:13:00 +03:00
me-no-dev
29feaaa2d0 add some missing Arduino defines 2016-10-26 02:00:39 +03:00
me-no-dev
d7aed639ef Add noniso.c implementation from ESP8266 2016-10-26 00:21:06 +03:00
me-no-dev
50c2ea529b add ledc and sigma-delta api 2016-10-20 00:31:03 +03:00
me-no-dev
9f9fb41253 Merge branch 'i2c-thread-safe'
* i2c-thread-safe:
  remove unnecessary locks
  return proper errors
  implement thread-safe i2c
2016-10-17 15:41:45 +03:00
me-no-dev
9a9ef063ee Merge branch 'spi-thread-safe'
* spi-thread-safe:
  remove unnecessary locks
  implement thread-safe spi
2016-10-17 15:41:15 +03:00
me-no-dev
6327bbd3e9 do not lock for ets_printf 2016-10-17 15:34:55 +03:00
me-no-dev
988bcbf08f Merge branch 'master' into i2c-thread-safe 2016-10-14 03:24:21 +03:00
me-no-dev
9116cc4311 remove unnecessary locks 2016-10-14 03:24:20 +03:00
me-no-dev
7de6da591a Merge branch 'master' into spi-thread-safe 2016-10-14 03:16:09 +03:00
me-no-dev
cdee64cb07 remove unnecessary locks 2016-10-14 03:16:02 +03:00
me-no-dev
242bca9451 Implement thread-safe uart 2016-10-14 03:07:21 +03:00
me-no-dev
17c8ceb1b9 UART rework
many possible problems fixed in preparation for thread-safe
2016-10-14 03:02:40 +03:00
me-no-dev
d4dd33d2df implement thread-safe spi 2016-10-11 15:51:09 +03:00
me-no-dev
f9f895797a return proper errors 2016-10-11 15:11:51 +03:00
me-no-dev
9ec4389889 implement thread-safe i2c 2016-10-11 14:20:02 +03:00
me-no-dev
50b060ab32 really fix attachInterrupt to work on either core 2016-10-11 12:29:06 +03:00
me-no-dev
6125a40f93 fix GPIO attachInterrupt 2016-10-11 12:07:18 +03:00
me-no-dev
5d61d8ddd0 copy va_list in Print::printf 2016-10-11 11:42:47 +03:00
me-no-dev
658f81b792 attach uart isr on the current core 2016-10-11 11:16:43 +03:00
me-no-dev
1cc9f3bfef fix Serial RX
This trick does not fix GPIO interrupts. Different INUM maybe for GPIO
on APP cpu
2016-10-11 03:59:34 +03:00
me-no-dev
e7d2c18742 Do not delete printf buffer if not required 2016-10-10 19:29:25 +03:00
me-no-dev
01961ef5c6 use local buffer for printf if size is equal or less than 64 2016-10-10 17:37:34 +03:00
me-no-dev
3ecb32c4ba Prevent I2C Bus locks and wrong data being sent on retry 2016-10-10 14:54:36 +03:00
me-no-dev
45f5449fbf prevent some devices from locking the SCL line 2016-10-10 14:10:43 +03:00
me-no-dev
f3af437774 I2C SDA should properly register the ACK bit from some slaves 2016-10-10 13:53:55 +03:00
me-no-dev
cc3c55bbb1 fix i2c hal 2016-10-08 17:32:11 +03:00
me-no-dev
2ba4c40aca add more definitions to pgmspace.h to match ESP8266 2016-10-08 00:40:11 +03:00
me-no-dev
063b563079 Print::printf should allocate it's buffer 2016-10-08 00:18:12 +03:00
me-no-dev
bb9ded7ed4 comment out __FlashStringHelper methods in Print 2016-10-07 23:59:24 +03:00
me-no-dev
31773cff31 fix F macro 2016-10-07 23:56:50 +03:00
Me No Dev
7530db5f06 include math.h by default 2016-10-07 23:31:49 +03:00
Me No Dev
ac19ecf3d5 On app cpu (#1)
* move loop task to APP CPU

* Rework WiFi boot so it works when loop is on APP CPU
2016-10-06 18:16:00 +03:00