Commit Graph

566 Commits

Author SHA1 Message Date
deadprogram 331a60ce2d sdcard: remove tinyfs example and replace with link to tinyfs repo in docs
Signed-off-by: deadprogram <ron@hybridgroup.com>
2023-05-20 09:38:16 +02:00
Ron Evans de2742f10c Revert "(#501) make IP.String() method return something sensible"
This reverts commit b1c9612158.
2023-05-19 15:11:22 +02:00
deadprogram 422051d822 wifinina: add ResetIsHigh to control the behavior of the RESET pin for boards like the Arduino MKR 1010
Signed-off-by: deadprogram <ron@hybridgroup.com>
2023-05-18 21:25:33 +02:00
deadprogram 66abe9c28b examples/wifinina: improve connectToAP() and other needed minor corrections
Signed-off-by: deadprogram <ron@hybridgroup.com>
2023-05-18 21:25:33 +02:00
deadprogram 5f25a4f6be wifinina: small timing adjustments in Configure() to better ensure device reset
Signed-off-by: deadprogram <ron@hybridgroup.com>
2023-05-18 21:25:33 +02:00
deadprogram 9955e09466 wifinina: only add generated strings when using wifidebug tag
Signed-off-by: deadprogram <ron@hybridgroup.com>
2023-05-14 23:16:40 +02:00
deadprogram bc9177726d wifinina: add generated strings, improved debugging system and messages
Signed-off-by: deadprogram <ron@hybridgroup.com>
2023-05-14 23:16:40 +02:00
Ayke van Laethem aac959eb7b i2csoft: use cycle counting for delays
This should make the software I2C driver more portable, and potentially
usable on chips that aren't yet supported. More importantly, it avoids
some guesswork in the various chip-specific timing code.
2023-05-14 19:35:29 +02:00
Ayke van Laethem 9fdf0d657d delay: add new package for cycle-accurate delays
This is implemented in inline assembly using machine.CPUFrequency() to
know how long a single CPU cycle takes. As long as it is called with a
constant duration, it should be fully inlined and all values can be
const-propagated resulting in very tight inline assembly.

For example, when I convert i2csoft to use this delay function, the
entire delay function compiles to something like this:

    8784:   movs    r6, #100
    8786:   mov     r0, r6
    8788:   nop
    878a:   nop
    878c:   nop
    878e:   nop
    8790:   nop
    8792:   subs    r0, #1
    8794:   bne     0x8788

That means that all the math to calculate the number of cycles is
entirely optimized away (in this case, to 100 loops).

I ran the example on a few boards to see how well it works:

| board                 | 100ms wait | CPU core
|-----------------------|------------|------
| microbit              | 121.6ms    | Cortex-M0 so it has 12% overhead
| circuitplay-express   | 100.1ms    | Cortex-M0+ so it is cycle accurate
| pico                  | 100.2ms    | Cortex-M0+
| pyportal              | 100.3ms    | Cortex-M4
| circuitplay-bluefruit | 125.8ms    | Cortex-M4
| esp8266               | 125.1ms    |

This shows that there is some loop overhead because of conservative
estimates, but note that even though there may be a 25% overhead, the
actual overhead per `delay.Sleep()` call is very small. It should be
good enough for software I2C at least, and can potentially be improved
in the future.
2023-05-14 19:35:29 +02:00
Ayke van Laethem b0c9f259dc st7789: update saved rotation in SetRotation 2023-05-14 15:54:51 +02:00
Ayke van Laethem 53404b3f4b ci: run smoke tests in parallel
This speeds up the smoke tests by over 5x on my laptop, but keeps two
features that I find very important:

 1. A stable output, which is used by tools like sizediff.
 2. An easy to change text file with all the smoke tests.

This means that parsing is a little bit harder, but with the help of
packages like shlex and flag this is actually not very difficult.
2023-05-07 12:30:44 +02:00
Patricio Whittingslow 8ddfa6ac8f add Sensor interface and Measurement type 2023-05-01 21:13:46 +02:00
deadprogram c0ab3596fa docs: remove full list of devices from README, better to keep it on the tinygo.org site
Signed-off-by: deadprogram <ron@hybridgroup.com>
2023-04-30 01:11:18 +02:00
deadprogram 9de76bc145 docs: update LICENSE year
Signed-off-by: deadprogram <ron@hybridgroup.com>
2023-04-30 01:11:18 +02:00
deadprogram ae04d5b0bb build: switch to ghcr.io for docker container
Signed-off-by: deadprogram <ron@hybridgroup.com>
2023-04-30 01:09:18 +02:00
Ayke van Laethem 3c01b7e222 st7789: support the chip select pin
It is needed to control the chip select pin when the st7789 display is
wired together with some other SPI device on the same bus, for example
if it shares the bus with SPI flash.

This required some refactoring of the code to correctly set the CS pin
everywhere. Notably, this removes the public Command, Data, Tx, and Rx
methods which poke into private details of the st7789 driver and are
therefore best hidden in my opinion.
2023-04-30 00:56:47 +02:00
Ayke van Laethem c689c11838 ili9341: st7735: st7789: unify rotation support
* Unify the Rotation type, so that SetRotation can be used in
    interfaces.
  * Add Rotation() method to these displays, so that the current
    rotation can be read.
  * Change SetRotation() so that it can return an error (if the given
    rotation isn't supported).
2023-04-27 19:00:51 +02:00
Ayke van Laethem 59d66d1e73 Makefile: add XTENSA=0 flag to skip Xtensa tests
This can be useful, to quickly run the tests without compile errors
because of missing Xtensa support.
2023-04-27 18:38:44 +02:00
Ayke van Laethem 1eb7072162 Makefile: remove AVR=0 flag
Now that we don't rely on external tools anymore, this isn't necessary
anymore.
2023-04-27 18:38:44 +02:00
Daniel Esteban 5cc21329a6 first implementation of 1-wire protocol (#505)
onewire: initial implementation for protocol and ds18b20 device
2023-04-22 17:55:37 +02:00
Ayke van Laethem d3022e7d6e all: add sleep mode to various SPI displays
The API looks like this and is based on the PCA9685 PWM chip:

    Sleep(sleepEnabled bool) error

It will set the LCD panel to a low power state (not displaying any
image) but memory contents will be preserved.
2023-04-17 08:23:54 +02:00
Ayke van Laethem 5c06b82b27 st7789: avoid heap allocations after the driver is created
Heap allocations can result in significant and unpredictable slowdowns.
For example, they can take over 10ms on the Gopher Badge, which results
in visible tearing (when tearing is otherwise avoided).
2023-04-14 08:34:51 +02:00
Pablo Canseco bf53cb2fd4 [gps] make the date available in addition to the time (#532)
gps: also parse the date from an RMC sentence. Add coverage to unit test so it also asserts on time and date.
2023-04-13 09:52:57 +02:00
Ayke van Laethem 1fd38a8a68 st7789: make it possible to configure gamma
Some displays need other values than the default to look right.
Therefore, add a configuration option to set the gamma table for a
particular LCD panel.
2023-04-09 07:43:29 +02:00
Daniel Esteban 55e100c4fe added DrawRGBBitmap8 (same as ili9341 & st7735) 2023-03-30 00:19:36 +02:00
Ayke van Laethem cba17ef125 st7735: add DrawRGBBitmap8 method to draw raw RGB565 buffers
This is needed for high performance graphics.
Using this API, and using partial updates to the screen (no full screen
refreshes), I've been able to get well over 60fps of updates.
2023-03-28 19:52:27 +02:00
Neil Davis c59b5a909b Add support for ams AS560x on-axis magnetic rotary position sensors 2023-03-21 23:27:48 +01:00
Brian Park b0a971573b ds3231: Document incorrect leap year 2100
The current code interprets the 'century' flag as the year 2100. However the
DS3231 hardware does not incorporate this flag in its leap year calculation, so
will incorrectly consider the year 2100 as a leap year and increment from
2100-02-28 to 2100-02-29 instead of the correct 2100-03-01.

The 'century' bit is not useful for anything as far as I can tell. But instead
of removing the code that uses the 'century' bit, I thought it would be less
intrusive to just document the current behavior.
2023-03-20 22:59:57 +01:00
Olivier Fauchon 94017b5437 sx126x/sx27x: Reduce spi buffer size, add missing select when using channels 2023-03-20 22:38:33 +01:00
Olivier Fauchon 56208a28d5 sx127x/sx126x: Remove heap alloc in interrupt, add non blocking channel send/receive, and other cleanups 2023-03-20 22:38:33 +01:00
Brian Park 0adc7e78aa ds3231: Fix negative temperature conversion
I also verified my interpretation of the DS3231 datasheet and my implementation
of this formula by placing a DS3231 chip in the freezer section of my
refrigerator for an hour or two, then reading the temperature. I got -16C,
which is close enough to the -18C that the freezer was set to.
2023-03-03 09:43:48 +01:00
deadprogram 820298bfe3 all: prepare for release 0.24.0
Signed-off-by: deadprogram <ron@hybridgroup.com>
v0.24.0
2023-02-12 22:30:48 +01:00
deadprogram 46cbacbe03 docs: add sx127x to list of supported devices
Signed-off-by: deadprogram <ron@hybridgroup.com>
2023-02-12 21:33:36 +01:00
deadprogram 9d4847fc6d sx12xx: add README files for some basic explanation
Signed-off-by: deadprogram <ron@hybridgroup.com>
2023-02-12 21:33:36 +01:00
deadprogram 4de0afc224 build: work around for CVE-2022-24765
Signed-off-by: deadprogram <ron@hybridgroup.com>
2023-02-12 08:39:28 +01:00
deadprogram 21fa184b76 build: update to actions/checkout@v3
Signed-off-by: deadprogram <ron@hybridgroup.com>
2023-02-12 08:39:28 +01:00
Olivier Fauchon fae4307190 sx127x: Fix bug in SetTxPower, SetPreambleLength 2023-02-01 09:08:43 +01:00
Olivier Fauchon 7f61bda24c lorawan: Update AU915 RegionSet modulations 2023-02-01 08:53:21 +01:00
deadprogram e613ab1eb3 sx127x: use select for timeout
Signed-off-by: deadprogram <ron@hybridgroup.com>
2023-01-31 23:54:43 +01:00
Olivier Fauchon d57d9b6c74 sx127x: fix typos, provide corrections 2023-01-31 23:54:43 +01:00
Olivier Fauchon 07ba9ec0fd fix bandwidth,tx power in lora/sx126x/lora_continuous example 2023-01-31 23:54:20 +01:00
Olivier Fauchon fa0cf6ec7f lorawan cleanup and optimizations:
- Remove all default loraconf default initialisation in lorawan examples (Region Settings takes care of this now)
- Remove retries while receiving JoinAccept and increase LoraRX to 10s (no need to wait more than 10s)
- Add constants for RegionSetting default frequencies
- Standardize all lora default configurations in lora examples
- Add new AT+LW=NET,(ON|OFF) command in atcmd example
2023-01-31 23:54:13 +01:00
deadprogram 4e687b29c3 mpu6050: add functions to configure clock, and scaling for accelerometer and gyroscope
Signed-off-by: deadprogram <ron@hybridgroup.com>
2023-01-30 10:07:38 +01:00
Olivier Fauchon d283abdb3a lorawan: Fix error in uplink crc 2023-01-29 23:56:19 +01:00
Olivier Fauchon 02d808a6fb lorawan/sx12xx : Code cleanup 2023-01-29 23:56:19 +01:00
Olivier Fauchon d473b9e1dc lorawan/basic-demo: add debug logs at compile time with ldflags 2023-01-29 23:56:19 +01:00
Olivier Fauchon 7cc32dffed lorawan/basic-demo : fix in lorawan debug informations 2023-01-29 23:56:19 +01:00
Olivier Fauchon 58cb44f3f6 sx126x driver: fix in SetBandwidth function 2023-01-29 23:56:19 +01:00
Olivier Fauchon 78cc1afe46 lorawan: Basic implementation of Lorawan Regional Settings and EU868/AU915 regions 2023-01-29 23:56:19 +01:00
deadprogram e6cde8f7ae bmp180: add ReadAltitude() function copied from BMP280 driver
Signed-off-by: deadprogram <ron@hybridgroup.com>
2023-01-27 21:42:08 +01:00