Commit Graph

647 Commits

Author SHA1 Message Date
jepler
ccf08aa3df nrf: I2SOut: deal more gracefully with errors from the sample 2019-09-08 21:59:07 -05:00
jepler
f38ee42874 nrf: Add i2s audio output
Testing performed: I used a Particle Xenon with a HDA1334 I2S DAC.
I played a variety of mono 16-bit samples at 11025 and 22050Hz nominal
bit rates.  With this setup, all the 11025Hz samples sound good.
I tested play, pause,  and loop functionality.

During some runs with 22050Hz samples, there were glitches.  However,
these may have only occurred during runs where I had set breakpoints
and watchpoints in gdb.

I also tested with a MAX98357A I2S amplifier.  On this device, everything
sounded "scratchy".  I was powering it from 5V and the 5V rail seemed
steady, so I don't have an explanation for this.  However, I haven't
tried it with a SAMD board.
2019-09-08 16:46:35 -05:00
Dan Halbert
7a64af9280 rename bleio module to _bleio 2019-08-29 18:44:27 -04:00
Dan Halbert
b11b7916fd address minor issues: typos, make translate, and sphinx 2019-08-29 17:58:21 -04:00
Dan Halbert
f17059b10b another API rework: less abstraction leakage 2019-08-28 23:15:22 -04:00
Dan Halbert
19c59b41ed bleio: API change to create and connect related objects simulatenously: no orphan bleio objects 2019-08-28 16:15:09 -04:00
Dan Halbert
a72bcab0fd Merge remote-tracking branch 'adafruit/master' into bleio-api-revamp 2019-08-28 16:09:18 -04:00
Dan Halbert
0364f1dc85 remove some debugging prints 2019-08-26 08:17:59 -04:00
Dan Halbert
76446f634b BLE HID WIP: works everywhere except iOS; fixed a bunch of bugs; pretend bonding 2019-08-25 21:38:13 -04:00
Scott Shawcroft
7324b70a7c
Rework based on Dan's review 2019-08-23 15:27:21 -07:00
Scott Shawcroft
2497cbe186
Fix nrf builds 2019-08-22 14:23:33 -07:00
Benny Meisels
d37dd4d758
Updated ParallelBus implementation in nrf port 2019-08-22 14:08:33 -07:00
Dan Halbert
7cc15e56c8 make translate 2019-08-22 15:20:23 -04:00
Dan Halbert
0b7291d767 fix default crystal value; fix include order 2019-08-22 09:01:05 -04:00
Dan Halbert
d94023e9b3 Fix CPBlue LFCLKSRC; CPB has no status neopixel 2019-08-22 01:04:00 -04:00
Dan Halbert
e00696de7f merge from upstream and make translate 2019-08-20 13:06:23 -04:00
Dan Halbert
e3dc5e3a66 Merge remote-tracking branch 'adafruit/master' into run-background-tasks
Restore dependencies indicated by indentation in circuitpy_mpconfig.h.
2019-08-19 12:41:20 -04:00
Jeff Epler
26a05d01dc Merge remote-tracking branch 'origin/master' into nrf-pdm-audioin 2019-08-18 21:30:14 -05:00
Jeff Epler
912fd7759d nrf: PDMIn: Implement
So far, this supports only 16kHz and 16-bit samples with a fixed gain.
This is enough to support the basic functionality of e.g., sensing
ambient audio levels.
2019-08-18 15:58:04 -05:00
Jeff Epler
79f8a85786 nrf: stub out audiobusio.PDMIn, audiobusio.I2SOut 2019-08-18 15:55:57 -05:00
Dan Halbert
e2a4c76a37 make nrf touchio be generic: now available for SAMD51 too 2019-08-18 08:44:10 -04:00
Dan Halbert
630c92392a address review comments; avoid calling common_hal_bleio_device... routines from shared-bindings 2019-08-16 15:18:53 -04:00
Jeff Epler
11dd3a260e nrf: Use RUN_BACKGROUND_TASKS 2019-08-11 08:53:02 -05:00
Dan Halbert
1570ef2dd4 specifying attribute length; fix up value setting 2019-08-07 23:49:09 -04:00
Dan Halbert
d047b73a9c fix newly-introduced bugs; UART client/server working again 2019-08-07 11:10:21 -04:00
Dan Halbert
d74c8b9425 WIP: more Descriptor work; refactor gattc/gatts read/write 2019-08-06 22:55:25 -04:00
Dan Halbert
243334da75 Merge remote-tracking branch 'adafruit/master' into ble-pairing 2019-08-05 23:06:24 -04:00
Scott Shawcroft
b675a27e16
Merge pull request #2000 from jepler/nrf-pwm-audio
Implement PWM audio out for the nrf port
2019-08-05 17:26:27 -07:00
Dan Halbert
b67d04a5b1 Merge remote-tracking branch 'adafruit/master' into ble-pairing 2019-08-05 16:35:44 -04:00
Jeff Epler
77bc1ba03e nrf: PWMAudioOut: Remove the need to wait in "pause"
The original formulation was because I saw the need to avoid a transition
from playing to stopped exactly when a resume was taking place.  However,
@tannewt was concerned about this pause causing trouble, because it could
be relatively lengthy (several ms even in a typical case).

After reflection, I've convinced myself that updating the registers
in this order in resume avoids a window where a "stopped" event can
be missed as long as the shortcut is updated first.

Testing re-performed: pause/resume testing of looped RawSample and
WaveFile audio sources.
2019-08-03 08:19:25 -05:00
Dan Halbert
7ce3776b80 WIP: rework of Characteristic properties; enhance Descriptor; not tested 2019-08-02 17:57:31 -04:00
jepler
34e2bab96a nrf: Implement RUNMODE_BOOTLOADER and RUNMODE_SAFE_MODE 2019-08-01 18:53:07 -05:00
Jeff Epler
76f65ac694 Implement play/pause
.. and also incidentally fix a problem where a RawSample could only
be looped 131070 times.
2019-07-31 20:02:56 -05:00
Dan Halbert
91d791afd0 cleanup adapter.address; add uniquish suffix to BLE device name 2019-07-31 00:30:24 -04:00
Dan Halbert
83129b8c63 BLE: peripheral client pairing (not yet bonding); fix time doc formatting 2019-07-30 14:26:26 -04:00
Jeff Epler
b72352949b PWM audio: Rename AudioOut -> PWMAudioOut, _audioio_ -> _audiopwmio_ 2019-07-29 18:39:00 -04:00
Dan Halbert
28ca05ccdc allow discovery from central or peripheral 2019-07-27 13:22:15 -04:00
Jeff Epler
a183425e00 ports/nrf: Implement audioio.AudioOut using PWM
This implements AudioOut, with known caveats:
 * pause/resume are not yet implemented (this is just a bug)
 * at best, the sample fidelity is 8 bits (this is a hardware limitation)

Testing performed:

My test system is a Particle Xenon with a PAM8302 op-amp
https://www.adafruit.com/product/2130 and 8-ohm speaker.  There's no
analog filtering between the Xenon's PWM pin and the "A+" input of
the amplifier; the "A-" pin is disconnected.  It is powered from
VUSB.

I used pin D4, which is *NOT* listed as a low-speed-only pin, but
the code does NOT switch the pin to high drive.  This is related to
an open issue for general inability to set drive level for pins
being used by a "special function" on nrf:
https://github.com/adafruit/circuitpython/issues/1270

Nothing about the code I've written should limit the usable pins.

All samples I played were 16-bit, generally monophonic at 11025Hz
and 22050Hz from the Debian LibreOffice package.
2019-07-26 07:57:11 -05:00
Jeff Epler
2bc704fe07 ports/nrf: factor out routines for allocating, freeing pwm channels 2019-07-26 07:52:37 -05:00
Scott Shawcroft
8ec2d6ce49
Merge pull request #2007 from hierophect/F4xx-port-setup
Add STM32 Discovery F412ZG and F411RE support
2019-07-24 18:49:48 -07:00
Hierophect
58630a844a Add feature conditionals and clean up 2019-07-22 12:58:28 -04:00
Scott Shawcroft
6797ec6ed3
Add support for grayscale displays that are < 8 bit depth.
This also improves Palette so it stores the original RGB888 colors.

Lastly, it adds I2CDisplay as a display bus to talk over I2C. Particularly
useful for the SSD1306.

Fixes #1828. Fixes #1956
2019-07-19 16:06:11 -07:00
Hierophect
43e8a4110f Add missing files for DigitalIO 2019-07-17 14:18:01 -04:00
Dan Halbert
364ee62d10 Address review comments. 2019-07-16 19:53:36 -04:00
Dan Halbert
1cf8a3e8d8 Merge remote-tracking branch 'adafruit/master' into ble-scanner 2019-07-11 18:42:16 -04:00
Scott Shawcroft
6fad383367
Merge pull request #1925 from C47D/rgb_status
Initial support for RGB led as Status indicator, fixes #1382
2019-07-09 10:31:34 -07:00
Dan Halbert
6a001786a9 merge from master 2019-07-09 08:58:49 -04:00
Dan Halbert
118b26b335 UARTClient now works both directions 2019-07-09 00:21:46 -04:00
Dan Halbert
09ddff8df1 WIP: Need descriptors for Central CCCD discovery; not done yet 2019-07-07 00:07:47 -04:00
Scott Shawcroft
5610e05b8c
Fix up nrf so that it is initialized properly. Also, do not reset
it's pins.
2019-07-06 12:48:16 -07:00
iot49
6e5d70fa19 changed type of receiver_buffer_size to uint16_t 2019-07-03 12:02:01 -07:00
Dan Halbert
bf8a35b2f8 WIP: CharacteristicBuffer for Central; not working: need to set remote Characteristic Service 2019-07-02 22:34:54 -04:00
Dan Halbert
6ea01ea9b0 Central is connecting; characteristics can be read and written 2019-06-29 00:20:06 -04:00
Dan Halbert
140904ec84 getting Scanner to work 2019-06-22 22:10:15 -04:00
Dan Halbert
4881e1ff55 WIP: Central compiles; now will test 2019-06-21 18:04:04 -04:00
Dan Halbert
23bd861c9a nrf: fix neopixel_write pwm buf size calc 2019-06-20 18:02:14 -04:00
Dan Halbert
24ac1fdcab WIP: backup only; not compiled 2019-06-19 21:54:28 -04:00
Dan Halbert
a1b5d800f3 Update copyrights; get ready for Central 2019-06-19 10:42:36 -04:00
Dan Halbert
35b9191857 Don't operate directly on bleio objects in shared-bindings: use common_hal
routines instead. Changes made but not yet tested.
2019-06-18 23:46:20 -04:00
Dan Halbert
bed6d43a76 merge from upstream; WIP redo Address; no more AddressType 2019-06-13 21:55:07 -04:00
Dan Halbert
1905d90eaa Make advertising data buffers long-lived 2019-06-05 20:08:53 -04:00
Dan Halbert
613e12f99f Replace Broadcaster with enhanced Peripheral 2019-06-03 20:40:05 -04:00
Dan Halbert
63ac37946d 1. Remove advertising data construction in C: it's all done in Python now
2. Add scan response capability to advertising.
2019-06-02 23:21:30 -04:00
Dan Halbert
12f1d9d30c fix advertisement length check; add Service.secondary attribute 2019-05-31 18:03:05 -04:00
Dan Halbert
6cec81bcb5 Need to enable ble before scanning 2019-05-23 22:05:16 -04:00
Dan Halbert
1639354e5f Scanner working, but not very first time 2019-05-23 16:07:54 -04:00
Dan Halbert
15b7946fc4 Off-by-one error for usage of MAX_TX_IN_PROGRESS 2019-04-22 22:07:48 -04:00
Nick Moore
9c42a72275 Fix up single-byte access to nvm.ByteArray 2019-04-16 14:53:44 +10:00
Nick Moore
83dad37562 Fixups for adafruit/circuitpython#1042 2019-04-16 14:53:44 +10:00
Nick Moore
02dd32da60 Make some space for NVM adafruit/circuitpython#1042 2019-04-16 14:53:44 +10:00
Nick Moore
66e8ceafad switch nvm.ByteArray to use new nrf_nvm_safe_flash_page_write
adafruit/circuitpython#1610
2019-04-16 14:53:44 +10:00
Nick Moore
d0e5af3b09 Working flash pages for nvm.ByteArray adafruit/circuitpython#1042
import microcontroller

def dump(n = microcontroller.nvm):
    for i in range(0,len(n)):
        print ("%02X " % n[i], end="")
        if i % 16 == 15: print('')

microcontroller.nvm[0:4096] = bytes([1,2,3,4,5,6,7,8]) * 512
microcontroller.nvm[4096:8192] = bytes([16,17,18,19]) * 1024
microcontroller.nvm[4090:4101] = b'thisisatest'
microcontroller.nvm[100:105] = b'hello'
microcontroller.nvm[8000:8007] = b'goodbye'
dump()
2019-04-16 14:53:44 +10:00
Nick Moore
933500c448 nvm.ByteArray reads & writes but no sensible erase yet adafruit/circuitpython#1042 2019-04-16 14:53:44 +10:00
Nick Moore
df89156f2f Start on nRF nvm.ByteArray adafruit/circuitpython#1042 (doesn't do anything yet) 2019-04-16 14:53:44 +10:00
Scott Shawcroft
254d0a53ac
Revert "nrf nvm: touchups to nickzoic PR #1768" 2019-04-15 18:50:33 -07:00
Dan Halbert
864910559b fix subscripting 2019-04-10 21:41:55 -04:00
Nick Moore
18908c21f7 Fixups for adafruit/circuitpython#1042 2019-04-09 12:53:11 +10:00
Nick Moore
fdaff00c78 Make some space for NVM adafruit/circuitpython#1042 2019-04-09 10:56:53 +10:00
Nick Moore
bc92441803 switch nvm.ByteArray to use new nrf_nvm_safe_flash_page_write
adafruit/circuitpython#1610
2019-04-09 10:55:39 +10:00
Nick Moore
8e7fee2246 Working flash pages for nvm.ByteArray adafruit/circuitpython#1042
import microcontroller

def dump(n = microcontroller.nvm):
    for i in range(0,len(n)):
        print ("%02X " % n[i], end="")
        if i % 16 == 15: print('')

microcontroller.nvm[0:4096] = bytes([1,2,3,4,5,6,7,8]) * 512
microcontroller.nvm[4096:8192] = bytes([16,17,18,19]) * 1024
microcontroller.nvm[4090:4101] = b'thisisatest'
microcontroller.nvm[100:105] = b'hello'
microcontroller.nvm[8000:8007] = b'goodbye'
dump()
2019-04-09 10:55:39 +10:00
Nick Moore
492431a694 nvm.ByteArray reads & writes but no sensible erase yet adafruit/circuitpython#1042 2019-04-09 10:54:11 +10:00
Nick Moore
f8e5e2da64 Start on nRF nvm.ByteArray adafruit/circuitpython#1042 (doesn't do anything yet) 2019-04-09 10:54:11 +10:00
Scott Shawcroft
049b9ca094
Remove terse TODOs 2019-04-08 14:46:45 -07:00
Radomir Dopieralski
8323721232 Stop hard-coding SPI frequency in FourWire
Instead remember and use the frequency, polarity and phase that was
set when the bus was first created.
2019-04-06 15:15:29 +02:00
Nick Moore
781d301bb6 Remove unnecessary MP_WEAK declarations 2019-04-02 13:33:22 +11:00
Nick Moore
94bda3bde1 Change nRF RTC implementation to use RTC2 #1046
(to avoid interference with Bluetooth Softdevice. See
https://github.com/adafruit/circuitpython/pull/1534#issuecomment-478776240
with thanks to @bboser for pointing it out)
2019-04-02 13:28:22 +11:00
Nick Moore
6afe23d0b0 There isn't really a good way to calibrate this RTC adafruit/circuitpython#1046 2019-04-02 13:28:03 +11:00
Nick Moore
6206fa9a82 adafruit/circuitpython#1046 handle overflows in the RTC counter 2019-04-02 13:27:45 +11:00
Nick Moore
f846fa109e enable NRFX RTC adafruit/circuitpython#1046 2019-04-02 13:27:28 +11:00
Nick Moore
f88f9fd748 more fake RTC code ... adafruit/circuitpython#1046
(works if MP_WEAK common_hal_rtc_get_time is removed)
2019-04-02 13:27:13 +11:00
Nick Moore
4a5c52fbd6 starting on #1046 rtc for nRF 2019-04-02 13:27:00 +11:00
Dan Halbert
0653bca323
Revert "Circuitpython nickzoic 1046 nrf rtc" 2019-03-29 16:41:29 -04:00
Nick Moore
71622a4515 There isn't really a good way to calibrate this RTC adafruit/circuitpython#1046 2019-03-28 09:50:09 +11:00
Nick Moore
28254def0b adafruit/circuitpython#1046 handle overflows in the RTC counter 2019-03-28 09:50:09 +11:00
Nick Moore
b09d2c3c62 enable NRFX RTC adafruit/circuitpython#1046 2019-03-28 09:50:09 +11:00
Nick Moore
69cf33e6a1 more fake RTC code ... adafruit/circuitpython#1046
(works if MP_WEAK common_hal_rtc_get_time is removed)
2019-03-28 09:50:09 +11:00
Nick Moore
77f307c642 starting on #1046 rtc for nRF 2019-03-28 09:50:09 +11:00
Radomir Dopieralski
f440e41819 Really fix the error messages in bleio, this time 2019-03-25 14:04:50 +01:00
Radomir Dopieralski
bb10a8aaa1 Fix error messages in bleio 2019-03-25 09:19:48 +01:00
Dan Halbert
fe555a4098 Allow NFC pins to be used for other purposes. 2019-03-21 11:22:58 -04:00
Dan Halbert
99da3b9646 Use critical section, not lock, in CharacteristicBuffer; use a root pointer for ble_drv list 2019-02-21 00:19:31 -05:00
Dan Halbert
a345ef28f2 finish Makefile refactoring; nrf builds work 2019-02-15 18:55:10 -05:00
Dan Halbert
ab4194f752 don't allocate DMA buffer as long-lived 2019-02-13 19:49:57 -05:00
Dan Halbert
e92d90ce9c Add second UARTE to busio.UART. Init uarts on startup. 2019-02-12 22:34:05 -05:00
Scott Shawcroft
37b9cd5974
Merge pull request #1521 from nickzoic/circuitpython-nickzoic-1045-nrf-rotaryio
Circuitpython nickzoic 1045 nrf rotaryio
2019-02-07 10:38:20 -08:00
Nick Moore
b9db977a2d Change pin mode to pullup for adafruit/circuitpython#1045 2019-02-07 09:47:56 +11:00
Nick Moore
a7c349bc6e Add quarter-click logic to adafruit/circuitpython#1045 2019-02-05 16:41:33 +11:00
Nick Moore
95454ecde0 useful output from rotaryio adafruit/circuitpython#1045 2019-02-05 16:41:33 +11:00
Nick Moore
21eb7e8e64 GPIOTE handlers for rotaryio.IncrementalEncoder adafruit/circuitpython#1045 2019-02-05 14:15:13 +11:00
Nick Moore
ee21cc163f Start on rotaryio.IncrementalEncoder adafruit/circuitpython#1045 (does nothing yet!) 2019-02-05 14:15:03 +11:00
Scott Shawcroft
ec03887040
Fix hallowing and nrf builds 2019-01-31 11:42:15 -08:00
hathach
164e1e2341 re-init usb hardware when enable/disable SD 2019-01-30 14:13:07 +07:00
Scott Shawcroft
765d877dfa
Merge pull request #1499 from nickzoic/nickzoic/circuitpython-nrf-touchin-1048
Nickzoic/circuitpython nrf touchin 1048
2019-01-28 00:22:34 -08:00
Nick Moore
294b026aca Automatically set a default threshold for touchio.TouchIn channels 2019-01-28 18:22:57 +11:00
Nick Moore
539aaf08b5 speed up measurement loop 2019-01-27 21:54:59 +11:00
Nick Moore
4a093294ac hugely simplified version of the touchio.TouchIn.get_raw_reading code (adafruit/circuitpython#1048) 2019-01-27 15:08:03 +11:00
Dan Halbert
7998a7696d also handle BLE_GATTS_EVT_SYS_ATTR_MISSING: fixes Android: 2019-01-23 22:12:38 -05:00
Dan Halbert
b1f1bb1389 support BLE_GAP_EVT_DATA_LENGTH_UPDATE_REQUEST, sent by newer devices 2019-01-23 21:07:23 -05:00
Dan Halbert
e170e03f8c Merge remote-tracking branch 'adafruit/master' into bleio2 2019-01-21 20:38:26 -05:00
Dan Halbert
28cfd8a513 CharacteristicBuffer: make it be a stream class; add locking 2019-01-19 19:45:35 -05:00
Scott Shawcroft
edc8383e22
Improvements thanks to danh's review 2019-01-18 16:37:06 -08:00
Scott Shawcroft
fddc98858a
fix nonetype handling and nrf never reset 2019-01-17 18:51:40 -08:00
Scott Shawcroft
6404aaf411
Fix up nrf and using board.SPI in FourWire 2019-01-17 18:19:07 -08:00
Scott Shawcroft
760bd8d8a4
share fourwire and make nrf compile 2019-01-17 15:15:59 -08:00
Dan Halbert
50ee5ef24c merge translations; add bleio comments; fix minor sphinx issues in midi 2019-01-10 21:12:17 -05:00
hathach
f366e3feea Merge branch 'master' into nrf52_pulsein 2019-01-09 20:39:35 +07:00
hathach
cfc4c8cbfa
minor clean up 2019-01-09 15:43:54 +07:00
hathach
db82160eef
fix pulsein incorrect compute 2019-01-09 15:15:30 +07:00
Dan Halbert
13d607698e m_tx_in_progress might underflow (check on this) 2019-01-08 16:37:14 -05:00
Dan Halbert
50641c4152 remove debugging printf's 2019-01-08 15:52:21 -05:00
Dan Halbert
f66f55b4ed add CharacteristicBuffer; UART seems to work! 2019-01-07 22:46:20 -05:00
hathach
215008f78c
clean up neopixel write !! 2019-01-08 00:21:31 +07:00
Dan Halbert
a77b2363ef evt handler list bugs; unique evt handler names; remove uuid128_reference 2019-01-03 21:42:42 -05:00
Dan Halbert
8dea6f53bb forgot to store data when reading a gatts value 2019-01-03 14:16:41 -05:00
Dan Halbert
87c6f33bcc Broadcaster now takes whole packet. Also should be scannable 2019-01-01 14:11:59 -05:00
Dan Halbert
b6b5ed9c89 Remove nRF52832 support 2018-12-30 22:49:20 -05:00
Dan Halbert
1dc3957e72 LocalPeripheral is now Peripheral; more work on basic GATTS support; UART not working yet 2018-12-30 22:33:49 -05:00
Dan Halbert
ef39e72c7c free event handlers on reset; fix typo in Broadcaster 2018-12-29 13:55:10 -05:00
Dan Halbert
145e110915 Merge remote-tracking branch 'adafruit/master' into bleio-rev 2018-12-29 00:00:39 -05:00
Dan Halbert
4d1f0ec07b Add Broadcaster. Reset correctly on reload. 2018-12-28 23:34:23 -05:00
hathach
6b0d93cea3
correct i2c max len 2018-12-28 21:14:27 +07:00
hathach
a4ee80832a
fix #1422 correct i2c max xfer len (size in bits) 2018-12-28 16:30:11 +07:00
hathach
3ee766bc01
put received bytes to fifo when error 2018-12-28 01:05:30 +07:00
hathach
d092722ae8
fix #1407 keep receiving in case of error 2018-12-28 00:40:29 +07:00
Dan Halbert
4167bf5b24 wip: advertising works, but not connection 2018-12-27 00:04:04 -05:00
hathach
6752266673 added pulsein using gpiote (gpio interrupt) 2018-12-18 22:05:17 +07:00
Dan Halbert
bfa66861ef Merge remote-tracking branch 'adafruit/master' into bleio-rev 2018-12-13 16:33:15 -05:00
hathach
b37b2fa7e7 overwrite old data if fifo is full 2018-12-13 23:56:06 +07:00
hathach
e136222ae2 use rbuf for busio uart 2018-12-13 23:48:53 +07:00
Nick Moore
1dc4c4757e touchio.TouchIn sensing working on a single pin! adafruit/circuitpython#1048 2018-12-11 14:33:35 +11:00
Nick Moore
901db4797e progress on NRF touchio.TouchIn #1048 2018-12-09 16:48:33 +11:00
Dan Halbert
a7a24096f4 bleio WIP: redo for more immutability; use sd_* routines for internal flash write 2018-12-07 16:52:47 -05:00
Scott Shawcroft
6ef8639971
Rework safe mode and have heap overwrite trigger it.
This creates a common safe mode mechanic that ports can share.
As a result, the nRF52 now has safe mode support as well.

The common safe mode adds a 700ms delay at startup where a reset
during that window will cause a reset into safe mode. This window
is designated by a yellow status pixel and flashing the single led
three times.

A couple NeoPixel fixes are included for the nRF52 as well.

Fixes #1034. Fixes #990. Fixes #615.
2018-12-06 14:24:20 -08:00
Dan Halbert
125901e4e2 Merge remote-tracking branch 'adafruit/master' into bleio-rev 2018-12-06 12:41:38 -05: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
Nick Moore
452a622459 Set up structure for touchio adafruit/circuitpython#1048 (does nothing yet) 2018-12-04 17:12:02 +11:00
Dan Halbert
80db2cec99 UART changes: timeout in secs, write bytes, etc. 2018-12-03 12:04:32 -05:00
Dan Halbert
3164b16196 WIP: debug; add hash and __eq__ to UUID 2018-11-26 21:09:17 -05:00
Dan Halbert
6fb7590280 Merge remote-tracking branch 'adafruit/master' into bleio-rev 2018-11-26 10:16:29 -05:00
Scott Shawcroft
15eeac5d4b
A few fixes for nRF52840 feather QSPI and neopixel 2018-11-23 14:22:07 -08:00
Dan Halbert
1763ffe245 More UUID work; use mp_raise for exceptions 2018-11-20 23:04:58 -05:00
Dan Halbert
31cc71f7fb WIP: bleio revisions 2018-11-20 09:36:45 -05: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
arturo182
4bc24c4f60 bleio: Fix errors after rebase 2018-10-21 17:15:27 +02:00
arturo182
eceb21a017 bleio: Don't register the services until needed
Because of the very specific way nRF requires service registration
(characteristics can be added only to last added service), we would
have to write the Python code in a specific way. With this patch the
user has more freedom.
2018-10-21 16:00:04 +02:00
arturo182
19fab4af5a bleio: Remove deep copy constructor for UUID 2018-10-21 15:59:50 +02:00
arturo182
b5e5805bb4 bleio: Remove redundant struct field 2018-10-21 15:59:46 +02:00
arturo182
c7b42d80b3 bleio: A bit of cleanup 2018-10-21 15:59:42 +02:00
arturo182
17f13ecc2c nrf: Cleanup of the ble driver
Moved the functions to classes that they belong to.
2018-10-21 15:54:13 +02:00
arturo182
77eeecbfd9 nrf: BLE driver cleanup 2018-10-21 15:52:36 +02:00
arturo182
6545aa99a9 nrf: Remove the ble drv specific characteristic struct 2018-10-21 15:51:04 +02:00
arturo182
98aa8c5923 nrf: Remove the ble drv specific service struct 2018-10-21 15:51:01 +02:00
arturo182
3df7dea2cc nrf: Remove the ble drv specific advertisement data struct 2018-10-21 15:50:59 +02:00
arturo182
4b344812bf nrf: Remove the ble drv specific address struct 2018-10-21 15:50:56 +02:00
arturo182
3bd65fbae5 nrf: Move the Peripheral class to bleio as Device
This was the last class from ubluepy and so that module is now gone.
The Device class offers both Peripheral and Central functionality.
See the inline docs for more info.
2018-10-21 15:50:45 +02:00
arturo182
bda734223e nrf: Move the Service class from ubluepy to the shared bleio module 2018-10-21 15:43:51 +02:00
arturo182
cc78249226 nrf: Move the Characteristic class from ubluepy to the shared bleio module 2018-10-21 15:43:48 +02:00
arturo182
1c6bf9a150 bleio: Move the Scanner class to a shared module 2018-10-21 15:43:29 +02:00
arturo182
345334aaf1 bleio: Add a new Address class
Use the new in the Adapter singleton.
2018-10-21 15:43:21 +02:00
arturo182
20b8d5169d nrf: Move the Descriptor class from ubluepy to the shared bleio module 2018-10-21 15:43:13 +02:00
arturo182
f4940c9aec nrf: Move the UUID class from ubluepy to the shared bleio module
Also added a UUIDType enum-like class for determining UUID type.
2018-10-21 15:43:08 +02:00
Dan Halbert
b3c7746a7f fix copyright notice 2018-10-16 11:09:37 -04:00
Dan Halbert
2262efc311 PulseOut working 2018-10-16 11:05:02 -04:00
Dan Halbert
8d58093328
Merge pull request #1259 from dhalbert/nrf-pwmout
Allow variable freq PWMOut; use multiple channels if same freq
2018-10-10 12:27:27 -04: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
Dan Halbert
ca737e6f7c Don't disable tempoarily in deinit(). 2018-10-09 21:23:47 -04:00
Dan Halbert
91a88cf568 Allow variable freq PWMOut; use multiple channels if same freq 2018-10-09 20:52:55 -04:00
ATMakersBill
9f94712ad1 replacing change to input() with separate method to check for USB Serial input 2018-10-09 18:37:52 -04:00
Dan Halbert
6049776b26
Merge branch 'master' into nrf52_uart_io 2018-10-03 13:31:48 -04:00
hathach
b8884ccc8b Merge branch 'master' into nrf52_uart_io 2018-10-03 23:13:56 +07:00
hathach
08cbb03bdd implement common_hal_busio_uart_clear_rx_buffer 2018-10-03 11:39:01 +07:00
hathach
f543c8415d "busio.UART not yet implemented -> not available 2018-10-03 11:30:31 +07:00
Dan Halbert
21d331c8cc round SPI freq down; check max freq 2018-10-02 21:06:40 -04:00
Dan Halbert
aa95526428 nrf: remove error check for SPI baudrate too high; round to nearest baudrate 2018-10-01 18:54:13 -04:00
Dan Halbert
48a3aafdd2 reset I2C and SPI on ctrl-D 2018-09-25 15:12:10 -04:00
hathach
76d6fb03f0 more clean up 2018-09-26 02:12:06 +07:00
hathach
eba80f7a99 update translate string 2018-09-26 02:10:44 +07:00
hathach
52328c88cd remove space 2018-09-26 02:06:32 +07:00
hathach
74cc55b107 change error type to runtime 2018-09-25 17:31:53 +07:00
hathach
dec5c50c45 clean up 2018-09-25 16:22:14 +07:00
hathach
2f0e0bdcaf migrate serial from uart to uarte 2018-09-25 16:14:44 +07:00
hathach
9017c9d29a clean up 2018-09-25 14:29:45 +07:00
hathach
d3e5ba83eb update nrfx to 1.3.0 2018-09-25 13:00:57 +07:00
hathach
d714479924 clean up 2018-09-25 12:48:48 +07:00
hathach
01c1296197 nrf52 uart io rx work reliably 2018-09-25 12:37:31 +07:00
hathach
1782ceab35 uarte malloc if buffer is not in SRAM 2018-09-24 16:18:49 +07:00
hathach
4015023e01 clean up uart io 2018-09-24 16:12:05 +07:00
hathach
7bbd449f06 uarte rx work fine 2018-09-24 15:54:32 +07:00
hathach
fdd3e91753 changing to nrf uarte, tx works fine 2018-09-24 14:56:52 +07:00
hathach
7a1b4ccc9b Merge branch 'master' into nrf52_uart_io 2018-09-24 12:50:48 +07:00
Dan Halbert
2c15d12f2f allow multiple I2C and SPI; improve nrfx_config.h 2018-09-20 20:45:30 -04:00
hathach
816ff05253 clean up 2018-09-21 03:53:35 +07:00
hathach
dddc437ea7 got rx working finally 2018-09-21 03:48:13 +07:00
hathach
fe1a297889 still have issue with initial uart rx 2018-09-21 01:27:52 +07:00
Dan Halbert
2309e60c0d WIP; problem with staticly allocated IRQ handlers 2018-09-19 21:59:04 -04:00
hathach
9c25306877 uart rx got some issue with irq 2018-09-20 02:12:21 +07:00
hathach
c5593ec074 got uart tx work 2018-09-19 17:59:15 +07:00
Dan Halbert
56b7f3ba64 fix translate omission; pca10059 fix in .travis.yml 2018-09-18 16:28:27 -04:00
Dan Halbert
bc510e714f merge 3.0.2 to master 2018-09-18 15:38:12 -04:00
Dan Halbert
6a72084198 fix nrf builds; sphinx 1.8.0 crashing: use lower version 2018-09-12 18:37:03 -04:00
Dan Halbert
e335c74ac6 use open-drain capabilities on GPIO; clean up board init; set correct GPIO voltage 2018-09-09 15:01:28 -04:00
Dan Halbert
100603a60b neopixel_write merge; alphabetize stuff in Makefile 2018-09-05 17:38:59 -04:00
Dan Halbert
4c3b4cacfa Merge remote-tracking branch 'adafruit/master' into nrf-pin-claiming 2018-09-05 13:15:22 -04:00
hathach
ccd87a33b6 use nrf_pwm instead of direct registers 2018-09-05 13:18:36 +07:00
Dan Halbert
b5c03a7085 generalize # of ports; remove atmel neopixel code; remove pin name in mc_pin_obj_t 2018-09-04 16:43:21 -04:00
hathach
f4a98e909c fix nrf52832 build 2 2018-09-04 23:25:08 +07:00
hathach
b9e8e3cd1f fix nrf52832 build 2018-09-04 20:54:36 +07:00
hathach
1fe3ed87eb run background job while waiting for neopixel write seqend 2018-09-04 19:24:45 +07:00
hathach
3ae24d9f9a add neopixel_write implementation, work ok 2018-09-04 18:33:08 +07:00
hathach
e17253071e adding neopixel write 2018-09-04 15:51:49 +07:00
Dan Halbert
4382389e6f fix typos, remove incorrect pca10059 example; add default buses for pca10056; improve board names for pca boards 2018-09-01 00:29:36 -04:00
Dan Halbert
9ea809bef7 add pin claiming to devices 2018-08-31 18:38:05 -04:00
Dan Halbert
585597a252 pin files rework; implement pin claiming; add more boards 2018-08-31 18:05:55 -04:00
Dan Halbert
0e8d146184 wip 2018-08-31 18:05:55 -04:00
ladyada
ded38d30b6 rename pin.h to nrf_pin.h to avoid conflict with Pin.h 2018-08-26 20:37:12 -04:00
Dan Halbert
85df32907f rename nrf boards to feather_nrf52832 and feather_nrf52840_express 2018-08-21 18:45:37 -04:00
Egor Leonenko
18e9f74738
Fix PWM Support on NRF52840
Replace usage of pin number alone with port+pin combination in NRF port of PWMOut
2018-08-17 19:34:03 +12:00
Scott Shawcroft
76e0373576
Fix nrf and unix 2018-08-16 17:41:38 -07:00
hathach
200669216e more clean up 2018-08-01 08:52:07 +07:00
hathach
bac233e99b clean up 2018-08-01 08:47:41 +07:00
hathach
6ddd8583da clean up 2018-08-01 08:20:20 +07:00
hathach
4bece22c92 add hid keyboard LED indicator stub 2018-07-31 23:02:15 +07:00
hathach
05139e2aee all hid devices seems to be ok 2018-07-31 22:54:26 +07:00
hathach
2c85f42330 add usb hid syscontrol 2018-07-31 21:57:00 +07:00
hathach
ef58adacd3 usb hid consumer control works 2018-07-31 21:19:02 +07:00
hathach
fd661c1d57 improve usb hid 2018-07-31 21:06:24 +07:00
hathach
27b2a9fe59 add usb_desc, disable tinyusb stack CFG_TUD_DESC_AUTO 2018-07-31 17:50:32 +07:00
hathach
d15caf0dbd hid keyboard and mouse work well 2018-07-31 16:42:04 +07:00
hathach
368d59796f adding usb_hid
compiled with undefined ref
2018-07-27 17:36:41 +07:00
Dan Halbert
a20ab40ed2 Merge 3.0.0 final bugfixes and changes to master 2018-07-16 09:01:46 -04:00
arturo182
05c1384b67 nrf: Split the ble module into a shared part and the port implementation
This allows other ports to implement these shared bindings.
2018-07-13 16:01:15 +02:00
hathach
10846d316b Merge branch 'master' into nrf52840_usbboot 2018-07-11 21:35:44 +07:00
Dan Halbert
4962468fff
Merge pull request #1011 from arturo182/nrf_cleanup
nrf: More cleanup and porting
2018-07-10 15:44:30 -04:00
arturo182
1163462635 nrf: Remove the old time hal and replace with nRFx 2018-07-10 14:59:10 +02:00
Scott Shawcroft
e875f4e52e
Merge pull request #1002 from arturo182/nrfx_gpio
nrf: Rewrite the DigitalInOut hal using nRFx
2018-07-09 17:54:38 -07:00
hathach
0e819599e7 Merge branch 'master' into nrf52840_usbboot 2018-07-10 02:02:52 +07:00
Scott Shawcroft
fd5634e4aa
Merge pull request #992 from arturo182/nrf_i2c_fix
nrf: Fix I2C transfers with data larger than HW allows
2018-07-08 20:12:09 -07:00
arturo182
388f554ff6 nrf: Rewrite the DigitalInOut hal using nRFx 2018-07-08 17:48:32 +02:00
arturo182
da27253693 nrf: Fix I2C transfers with data larger than HW allows 2018-07-06 21:12:24 +02:00
arturo182
ac74edb4e4 nrf: Fix SPI transfers with data larger than HW allows 2018-07-06 21:10:25 +02:00
hathach
6ef3a0b181 implement filesystem_writable_by_python() 2018-07-06 13:01:07 +07:00
Scott Shawcroft
05a088b369
Merge pull request #972 from arturo182/nrf_i2c
nrf: Rewrite the I2C common-hal using nrfx
2018-07-02 14:33:06 -07:00
Dan Halbert
2a0b857643 implement mp_hal_delay_us() to not need interrupts, and use it 2018-06-29 16:01:46 -04:00
Scott Shawcroft
007155276a
Merge pull request #969 from arturo182/nrf_more_commonhal
nrf: Rewrite more common-hal with nrfx and sync with atsamd port
2018-06-28 14:00:45 -07:00
Scott Shawcroft
ae82a93b56
Merge pull request #967 from arturo182/nrf_os
nrf: Rewrite the os common-hal using nrfx
2018-06-28 13:55:34 -07:00
arturo182
178c089045 nrf: Rewrite the I2C common-hal using nrfx 2018-06-28 22:45:02 +02:00
arturo182
6e6a500801 nrf: Rewrite the os common-hal using nrfx 2018-06-27 21:01:07 +02:00
arturo182
b87bba8a28 nrf: Rewrite more common-hal with nrfx and sync with atsamd port 2018-06-27 20:55:29 +02:00
arturo182
2a12fcd18b nrf: Rewrite the AnalogIn common-hal using nrfx 2018-06-27 20:41:30 +02:00
arturo182
2f1e678d60 nrf: Rewrite the SPI common-hal using nrfx
Use SPIM2 on nRF52832 and SPIM3 on nRF52840. SPIM3 is able to go
up to 32MHz!
2018-06-25 23:46:34 +02:00
arturo182
c2d4d0a10b nrf: Simplify pin generation and definition
This commit cleans up the pin generation code, all the pins and their
AF (only ADC, for now) are specified in nrf52_af.csv and board use their
own csv file to specify which pins are available on that board and if
they have any special names.
2018-06-20 23:26:32 +02:00
jerryneedell
8150150a24
return "false" for stub call
See #918 for discussion
2018-06-10 07:11:44 -04:00
Scott Shawcroft
8195df1b55 Stub out get_paused in nrf builds. 2018-06-08 14:01:54 -07:00
Jerry Needell
d6c26942a5 add timeout keyword to I2C - for bitbangio - ignored for busio 2018-05-13 21:54:44 -04:00
Dan Halbert
5f98953ed8 esp8266 and nrf: raise NotImplementedError 2018-04-10 12:08:41 -04:00
sommersoft
6ee573c7c9
Merge branch 'master' into super_status 2018-03-30 14:27:39 -05:00
Jeff Epler
c0029e1d97 Don't lose half of the processor's serial number
Before this change, `microcontroller.cpu.uid` returned values
where the top 4 bits of each byte were zero, because of
an incorrect bitmask used in this function.
2018-03-25 13:01:04 -05:00
sommersoft
8c9cc6b7c0 nrf: changed Status to Runtime; instituted runtime singleton 2018-03-10 01:07:17 +00:00
Dan Halbert
5f101f3535 Add dummy UART implementation to nrf so it builds with UART turned on. Also add OneWire. 2018-02-21 22:53:17 -05:00
sommersoft
5de8df7997 added Status submodule to ports/nrf/common-hal/supervisor; issue #544 2018-02-19 22:27:16 +00:00
arturo182
8bfdaa89b9 nrf: Remove SAMD mentions carried over while copying files 2018-02-07 22:44:27 +01:00
arturo182
47c8e20e5a nrf: Make sure to not use SD functions when SD not available 2018-02-07 22:41:20 +01:00
Kevin Townsend
9d191f7f9f
Merge pull request #589 from arturo182/nrf_gamepad
nrf: Implement ticks, add gamepad module and example
2018-02-07 22:17:05 +01:00
arturo182
021df5d3d3 nrf: Cleanup AnalogOut and throw an exception in constructor
The nRF MCUs do not support analog output. Throwing an exception
in the constructor will stop users from creating an instance of
the AnalogOut class.

In the future we can ifdef-out the whole class so it is not available
in the module at all.
2018-02-06 21:15:49 +01:00
arturo182
1de2ee6884 nrf: Implement ticks, add gamepad module and example 2018-02-05 20:48:25 +01:00
arturo182
76f5c01798 nrf: Get the port working on pca10056 (nRF52840) 2018-02-05 20:38:41 +01:00
arturo182
6731b47d5a nrf: Implement MCU temperature reading
If softdevice is available and enabled the SD function will be used,
otherwise use MCU registers.
2018-02-02 20:33:21 +01:00
arturo182
d0b451be94 nrf: Use the right SPI registers on nRF52840 2018-02-02 20:31:47 +01:00
Dan Halbert
64831f4e7d add SPI.frequency to nRF 2018-01-30 13:23:00 -05:00
sommersoft
44bc1711aa Added Unique ID Functions/Updated Support Matrix (#527)
shared_bindings/index.rst: updated Support Matrix format as discussed in PR #503 & Issue #448.

shared-bindings/microcontroller/Processor.c & .h: added UID lookup functionality for use with all ports. Fixes #462.
2018-01-18 11:39:11 -08:00
Dan Halbert
19d353ccd9 nrf: fixups for changes from 2.2
1. bidirectional SPI support (@microbuilder please check)
2. slight changes in DigitalIO types
3. placeholders (not implemented yet) for single/double-click bootloader support
2018-01-03 16:50:57 -05:00
microbuilder
ad7cd0399d Added 'mp_raise_NotImplementedError(NULL)' 2017-12-22 11:48:07 +01:00
microbuilder
b9e229f739 Removed old code snippets 2017-12-22 11:47:15 +01:00
microbuilder
ace872bf11 Added 'mp_raise_NotImplementedError(NULL)' 2017-12-22 11:45:51 +01:00
microbuilder
60a23f0fb6 nRF52 update with internal file system support 2017-12-21 13:49:14 +01:00
Kevin Townsend
ce75a21e50 Revert "Supervisor REPL support for ports/nrf/boards/feather52"
This reverts commit 92113dde81.
2017-11-23 13:38:38 +01:00
Kevin Townsend
92113dde81 Supervisor REPL support for ports/nrf/boards/feather52 2017-11-23 09:22:11 +01:00