Commit Graph

217 Commits

Author SHA1 Message Date
Scott Shawcroft 7686f93ef4
Fix crash when getting board.SPI outside the VM
If one of the default pins was already in use it would crash.

The internal API has been refined to allow us to get the value
without causing an init of the singleton.

Fixes #1753
2019-04-05 19:06:37 -07:00
Dan Halbert cdd77b5972 remove CPy-specific EIC handlers from samd-peripherals 2019-04-04 16:04:11 -04:00
Scott Shawcroft ff7e729032
Fix custom pin in use logic for SWD
This should allow you to use SWD pins unless a debugger is attached.
You may have trouble connecting to SWD when CircuitPython has already
begun using them.

Fixes #1633
2019-03-14 11:11:35 -07:00
Dan Halbert 97140e6a62 wrong arg type for PWMOut variable_frequency 2019-03-12 21:28:30 -04:00
Scott Shawcroft 37e10d4a81
Be more careful when initing the board outside the VM. 2019-03-12 11:18:29 -07:00
sommersoft b7b74d1f78 update translations 2019-03-02 18:17:58 -06:00
sommersoft a44bfc2730 Merge branch 'master' of https://github.com/adafruit/circuitpython into new_freq_in 2019-03-01 21:24:30 -06:00
Dan Halbert 3c24e893e9 Fix SYNCBUSY loop typo. 2019-02-28 23:38:26 -05:00
Dan Halbert 808304e827 Use TCC LUPD lock when updating CCB 2019-02-28 19:53:35 -05:00
sommersoft 4d47ce5c60 fixes set_timer_handler call 2019-02-27 19:28:59 -06:00
sommersoft 4a9f05a44f final re-glue; compiles now. 2019-02-25 21:22:52 -06:00
sommersoft f602fa3d9f fix init deps 2019-02-24 18:07:26 -06:00
sommersoft 2437ab9605 update frequencyin interrupt handler 2019-02-22 17:19:09 -06:00
sommersoft a1060747f8 Merge branch 'new_master' into new_freq_in 2019-02-22 23:12:11 +00:00
Scott Shawcroft af863a3780
Merge pull request #1586 from sommersoft/shared_timer_handler
Move shared_timer_handler
2019-02-22 11:04:27 -08:00
sommersoft 55e7c5a41b handle 'set_timer_handler' on this side, vs samd-periphs. 2019-02-19 20:18:21 -06:00
Dan Halbert 9c24c804fb Fix #ifdefs in port.c to call xxx_reset() rroutines properly. Remove most uses of EXPRESS_BOARD. 2019-02-18 22:44:31 -05:00
sommersoft dafc370d22 moves 'shared_timer_handler' back to atmel-samd from samd-peripherals 2019-02-16 19:54:16 -06:00
sommersoft ea9200a042 starting again; initial addition of 'frequencyio.FrequencyIn' 2019-02-16 19:26:24 -06:00
Dan Halbert cf545cd477 WIP: fix issues with remaining atmel-samd builds 2019-02-15 09:52:45 -05:00
Dan Halbert da5008f4d8 Fix atmel UART after ASF4 pruning. 2019-02-13 11:42:09 -05:00
Scott Shawcroft 1a6ad20943
Get space back by using less ASF4 and combining register writes 2019-02-11 17:36:34 -08:00
Scott Shawcroft 69bc5e189b
Rudamentary backlight support 2019-01-31 11:42:14 -08:00
Scott Shawcroft edc8383e22
Improvements thanks to danh's review 2019-01-18 16:37:06 -08:00
Scott Shawcroft 760bd8d8a4
share fourwire and make nrf compile 2019-01-17 15:15:59 -08:00
Scott Shawcroft 2d136d58bf
Fix other builds and hallowing 2019-01-17 14:45:29 -08:00
Scott Shawcroft 84292ad890
External fourwire works and blinka splash after 2019-01-17 00:20:16 -08:00
Scott Shawcroft 05d8885a1a
Rework displays in prep for dynamic support and 8bit parallel. 2019-01-16 12:05:20 -08:00
Scott Shawcroft a14762a16c
Add support for rendering a shape.
Fixes #1171
2019-01-14 17:29:15 -08:00
Scott Shawcroft 19db886645
Support the display on the pyportal.
Also fix #1390, reload during sleep broken.
2019-01-10 17:29:34 -08:00
Scott Shawcroft 7ad2e6ace3
Add stack validity check and raise an error when it happens.
The backtrace cannot be given because it relies on the validity
of the qstr data structures on the heap which may have been
corrupted.

In fact, it still can crash hard when the bytecode itself is
overwritten. To fix, we'd need a way to skip gathering the
backtrace completely.

This also increases the default stack size on M4s so it can
accomodate the stack needed by ASF4s nvm API.
2018-12-04 23:26:04 -08:00
Dan Halbert 63cd9209f1 allow KeyboardInterrupt on UART read; fix nrf UART pin claiming; rename feather 52840 UART pins 2018-12-04 15:05:39 -05:00
Dan Halbert 80db2cec99 UART changes: timeout in secs, write bytes, etc. 2018-12-03 12:04:32 -05:00
Dan Halbert 11de8fdca7 merge 3.x swap of /lib and .frozen; update frozen libs 2018-11-15 15:00:23 -05:00
Scott Shawcroft a3a690dc01
Add pragma to ensure neopixel_write is always -Os 2018-11-13 10:56:00 -08:00
Scott Shawcroft 43f7ca7985
Incorporate feedback:
* Clean up board defines.
* Add flush on eject and stay ejected.
* Swith back to NONE protocol for CDC.
2018-11-09 11:33:56 -08:00
Scott Shawcroft 9d91111b1b
Move atmel-samd to tinyusb and support nRF flash.
This started while adding USB MIDI support (and descriptor support is
in this change.) When seeing that I'd have to implement the MIDI class
logic twice, once for atmel-samd and once for nrf, I decided to refactor
the USB stack so its shared across ports. This has led to a number of
changes that remove items from the ports folder and move them into
supervisor.

Furthermore, we had external SPI flash support for nrf pending so I
factored out the connection between the usb stack and the flash API as
well. This PR also includes the QSPI support for nRF.
2018-11-08 17:25:30 -08:00
ATMakersBill 4f2f571536 Adding the serial_bytes_available() method to the 3.x branch 2018-11-03 14:01:30 -04:00
Scott Shawcroft 4eb1fe18e5
Tweaks from feedback:
* default_value is now quiescent_value
* Use step = -step format for sign switch
* Add note about analogout_reset being empty
2018-10-17 11:31:08 -07:00
Scott Shawcroft c209165d43
Ramp values to and from a default value while active.
This reduces the popping sound on initial playback of an audio
sample.

The M4 DAC has a pop on startup that cannot be prevented. It also
does not allow readback so current values of the DAC are ignored.

Fixes #1090
2018-10-16 16:23:29 -07:00
Scott Shawcroft df80ad8e6e
Merge pull request #1193 from ATMakersBill/master
Add supervisor.runtime.serial_bytes_available so that input() can be used without blocking.
2018-10-09 23:58:43 -07:00
ATMakersBill 9f94712ad1 replacing change to input() with separate method to check for USB Serial input 2018-10-09 18:37:52 -04:00
Scott Shawcroft a9d094ab74
Fix translations 2018-09-21 12:24:04 -04:00
Scott Shawcroft e5274959f2
Merge remote-tracking branch 'adafruit/3.x' into merge_3x 2018-09-21 12:22:26 -04:00
Scott Shawcroft 655f223916
Clock the SAMD21 much faster so it can actually convert at its max
sample rate of 350ksps.

Also added an error check of sample rate.

Fixes #1196
2018-09-18 15:29:46 -07:00
Dan Halbert bc510e714f merge 3.0.2 to master 2018-09-18 15:38:12 -04:00
Dan Halbert 6a046f55c4 UART fixes and enhancements; default board object fix 2018-09-12 17:19:43 -04:00
Paul Kierstead 02b3f62460 When UART timeout of zero is given, make read() return data already available 2018-09-12 13:25:49 -04:00
Dan Halbert c3918bae57 PWMOut was not claming channels on shared TCCs 2018-09-11 19:46:47 -04:00
Scott Shawcroft c2e49dc87f
Merge remote-tracking branch 'adafruit/master' into hallowing 2018-09-06 14:54:55 -07:00
Scott Shawcroft 1683eb913d
Minor tweaks based on feedback 2018-09-06 14:49:49 -07:00
Dan Halbert 4c3b4cacfa Merge remote-tracking branch 'adafruit/master' into nrf-pin-claiming 2018-09-05 13:15:22 -04:00
Paul Kierstead 2d3f1a10bf When UART timeout of zero is given, make read() return data already available 2018-09-01 17:07:30 +00:00
Dan Halbert 9ea809bef7 add pin claiming to devices 2018-08-31 18:38:05 -04:00
Scott Shawcroft 121903b6ee
Tweaks based on feedback 2018-08-31 14:21:48 -07:00
Scott Shawcroft 6697544cdf
Introduce displayio to render graphics to displays.
It's designed to minimize RAM footprint by using Sprites to
represent objects on the screen. The object model also facilitates
partial screen updating which reduces the bandwidth needed to display.

This is all handled in C. Python simply manipulates the objects with
the ability to synchronize to frame timing.
2018-08-31 12:31:52 -07:00
Jerry Needell e8b94d0024 adjust SAMD51 neopixel_write timing 2018-08-24 07:01:50 -04:00
Scott Shawcroft 44de3d49a8
Speed up zero neopixel pulses.
SK6812 on 5v is pickier than WS2812 on 5v.

Hopefully fixes #1083.
2018-08-20 17:04:46 -07:00
Noralf Trønnes eefb6842a0 i2cslave: Fix missing translate() when raising exceptions
The translate() changes where applied after travis had checked the
i2cslave PR so this wasn't caught.
2018-08-18 16:00:06 +02:00
Scott Shawcroft 4a4d84ba42
Merge pull request #1064 from notro/i2cslave
Add busio.I2CSlave
2018-08-17 16:51:45 -07:00
Scott Shawcroft 2cd166b573
Fix esp and samd 2018-08-16 17:41:35 -07:00
Scott Shawcroft de5a9d72dc
Compress all translated strings with Huffman coding.
This saves code space in builds which use link-time optimization.
The optimization drops the untranslated strings and replaces them
with a compressed_string_t struct. It can then be decompressed to
a c string.

Builds without LTO work as well but include both untranslated
strings and compressed strings.

This work could be expanded to include QSTRs and loaded strings if
a compress method is added to C. Its tracked in #531.
2018-08-16 17:40:57 -07:00
Noralf Trønnes 11cbeb87ad ports/atmel-samd: Implement i2cslave.I2CSlave
This adds support for SAMD acting as a I2C slave in polled mode.
2018-08-16 17:20:49 +02:00
Noralf Trønnes b6822b86ac busio/I2C: Split out samd_i2c_get_sercom()
It will be shared with I2CSlave.
2018-08-16 17:06:40 +02:00
Scott Shawcroft 86d2154d71
Change file mode back. 2018-08-09 09:14:14 -07:00
Scott Shawcroft 94c5ceab36
Initial SAMR board revision. 2018-08-09 05:36:46 -07:00
Jeff Epler b0e33f6a11 atmel-samd: UART: allocate rx buffer in long-lived region
This is not strictly needed in order for #1056 to be resolved,
because the "make long-lived" machinery is unaware of this pointer.

However, as UARTs are assumed to be long-lived, this change is
beneficial because it moves the long-lived buffer into the upper
memory area with other long-lived objects, instead of remaining in
the low heap.
2018-08-08 19:21:57 -05:00
Dan Halbert 2e80f37709
Merge pull request #1096 from tannewt/tune_neopixel
Retune neopixel timings on SAMD51. They were too slow.
2018-08-07 21:33:12 -04:00
Scott Shawcroft b0dd645e27
Retune neopixel timings on SAMD51. They were too slow.
Fixes #1083
2018-08-07 16:58:37 -07:00
Scott Shawcroft 933add6cd8
Support internationalisation. 2018-08-07 14:58:57 -07:00
Scott Shawcroft 168aa394db
Move pin struct to the peripherals library.
Its slimmed down by removing the qstr and bit packing TCC info.

The trinket m0 build actually grows by 20 bytes. The arduino zero
build shrinks by 188 bytes.
2018-08-02 13:59:05 -07:00
hathach 533d8dda96 fix samd usb hid typo 2018-08-01 08:40:04 +07:00
Dan Halbert 2809b4f9dd Merge branch 'master' into micropython-25ae98f-merge 2018-07-16 19:36:40 -04:00
Dan Halbert a20ab40ed2 Merge 3.0.0 final bugfixes and changes to master 2018-07-16 09:01:46 -04:00
Dan Halbert e2e01efa84 compiles and runs; hangs on import storage;storage.VfsFat.<tab> 2018-07-13 22:51:10 -04:00
Dan Halbert 8bb363f7c4 must set pull after setting direction with gpio_set_pin routines 2018-07-09 17:18:06 -04:00
Dan Halbert 52a11547cb fix OneWire timing and DigitalInOut.switch_to_input() 2018-06-28 23:32:20 -04:00
Scott Shawcroft a5e03b76a6 Split out the peripherals library in preparation of sharing with MakeCode. 2018-06-15 16:16:21 -07:00
Scott Shawcroft ee817a2fa8 Correct UART reads to return error on timeout.
This causes read to correctly return None instead of b''.

Fixes #874
2018-06-12 14:03:27 -07:00
Dan Halbert 4691b30c02 PDMIn: turn serializer on when starting DMA 2018-06-12 12:35:51 -04:00
Dan Halbert b2d98edb4e
Merge pull request #901 from tannewt/pulseio_too_fast
Prevent freezing USB during high frequency PulseIn.
2018-06-08 17:59:06 -04:00
Scott Shawcroft 8fb34a5846 Use bool not int. 2018-06-08 14:57:20 -07:00
Scott Shawcroft 2fbab8067a Prevent freezing USB during high frequency PulseIn.
We now track the last time the background task ran and bail on the
PulseIn if it starves the background work. In practice, this
happens after the numbers from pulsein are no longer accurate.

This also adjusts interrupt priorities so most are the lowest level
except for the tick and USB interrupts.

Fixes #516 and #876
2018-06-08 12:56:32 -07:00
Dan Halbert 218930d18b Check for PDMIn DMA getting stuck. 2018-06-08 08:23:52 -04:00
Scott Shawcroft 717199018b Adapt for feedback and hack around pIRkey size constraint. 2018-06-01 15:08:52 -07:00
Dan Halbert f386144428 redo state algorithm 2018-06-01 15:08:52 -07:00
Scott Shawcroft 9920f0a5de atmel-samd: Make ticks more atomic.
Always use current_tick when sub millisecond precision is required.
Otherwise getting the ms/us to correspond is tricky.
2018-06-01 15:08:52 -07:00
Scott Shawcroft d0fb6e7a2f atmel-samd: Add rotary encoder support.
Fixes #283
2018-06-01 15:08:48 -07:00
Scott Shawcroft fd71e56891 atmel-samd: Re-org helper peripheral files into their own subdirectory.
Ideally in the future they won't depend on ASF4 or MicroPython.
2018-06-01 15:07:31 -07:00
Scott Shawcroft bf1f0b3d11 Turn off timer on AudioOut deinit.
Thanks to @sommersoft for spotting the error.

Fixes #850
2018-06-01 13:32:45 -07:00
Scott Shawcroft 3607d3ba2c Correctly reset the PTC 2018-05-22 14:20:35 -07:00
Scott Shawcroft 31bcd1c45c Fixup gclk init 2018-05-22 13:56:12 -07:00
Scott Shawcroft 99123a8621 Turn on touchio for M0 boards. M4 will come later once its supported
by FreeTouch.

Fixes #670
2018-05-22 13:49:08 -07:00
Scott Shawcroft 6a8db03ade
Merge pull request #838 from rhooper/master
add supervisor.reload() to soft reboot from code
2018-05-16 17:52:16 -04:00
Scott Shawcroft 99e34e38eb
Merge pull request #829 from jerryneedell/jerryn_i2c
add keyword timeout to I2C -- only used for bitbangioi
2018-05-16 14:52:11 -04:00
Roy Hooper 3fd9900ea7 disable pins on trinket_m0 so that we can free a fair bit of flash - Issue #840 2018-05-15 13:13:59 -04:00
Roy Hooper a0954b9e11 Fix for Issue #770 - Provide a better error message when timers are still available. 2018-05-14 13:52:32 -04:00
Jerry Needell d6c26942a5 add timeout keyword to I2C - for bitbangio - ignored for busio 2018-05-13 21:54:44 -04:00
Dan Halbert 240659da0e PBxx pins were not setting DRVSTR or reporting PULL properly 2018-05-10 23:09:51 -04:00
Scott Shawcroft 50fc90bc5f Add pause/resume control to AudioOut and I2SOut
Fixes #808
2018-05-08 11:53:13 -07:00