Commit Graph

474 Commits

Author SHA1 Message Date
paul-1
851c2cd8cb
picow: Add channel setting when starting AP 2022-11-10 17:23:59 +02:00
Bill Sideris
25c0a0aca9
Merge branch 'adafruit:main' into picow-ap 2022-11-10 17:04:21 +02:00
Jeff Epler
7f36a365cf
delay 100us for analog voltage to stabilize
.. otherwise, depending on the prior state of the pin as a digital
input, the value read could be 20% low.
2022-11-08 10:43:14 -06:00
Jeff Epler
09f6919c93
Add ability to read VOLTAGE_MONITOR on Pico W
Because this must be treated like an in-use pin for all other purposes,
unfortunately a special case must be added in shared-bindings.

Multiple AnalogIn objects for VOLTAGE_MONITOR can be created (because
in use tracking isn't working) but this causes no harm.

Testing performed: Read the monitor, then imported wifi. When the
pin state was insufficiently restored, the second step would fail
with debug messages about do_ioctl timeout.

```
import analogio, board
a = analogio.AnalogIn(board.VOLTAGE_MONITOR)
print(a.value)
import wifi
```

Closes: #7020
2022-11-08 09:37:15 -06:00
Jeff Epler
452ebe27ae
socketpool: make socket objects selectable
.. which will lead to them being usable in async contexts, pending
relevant changes in asyncio
2022-11-05 12:05:19 -05:00
Dan Halbert
ded134c346 store wake_alarm in a static object 2022-10-29 16:26:36 -04:00
Dan Halbert
0221cc8df7 Merge remote-tracking branch 'adafruit/main' into alarm-lifetime 2022-10-28 14:11:32 -04:00
Dan Halbert
4e20049c38
Merge pull request #7122 from jepler/picow-ssl-server
pico w: implement sslsocket bind, listen, accept
2022-10-28 09:33:21 -04:00
Dan Halbert
9307b62ad5 wip 2022-10-27 22:42:04 -04:00
Jeff Epler
0cf096dda1
pico w: implement sslsocket bind, listen, accept 2022-10-25 14:46:41 -05:00
Jeff Epler
f997d0053d
Enable, use SOF_REUSEADDR
This is the lwip no-os version of SO_REUSEADDR, which is set on all
listening sockets in the espressif port; do so here as well,
it makes running servers easier. The "address in use" error does
not occur.
2022-10-25 10:09:16 -05:00
Bill Sideris
7a50beb67e
PicoW more ap work 2022-10-22 11:58:44 +03:00
Bill Sideris
8cc536bb7f
PicoW start_ap() 2022-10-21 13:20:16 +03:00
microDev
b33a2b45dc
add coproc alarm 2022-10-20 18:38:20 +05:30
Dan Halbert
7015b7396e
Merge pull request #7089 from jepler/picow-gpio-number
pico w: Disentangle "TOTAL_GPIO_COUNT", it's complicated
2022-10-19 22:42:16 -04:00
Jeff Epler
576a1ac700
pico w: Disentangle "TOTAL_GPIO_COUNT", it's complicated
You might wonder how this fixes a problem with PulseIn, when the
changes aren't to any of those files! PulseIn is implemented in terms of
StateMachine, which had some assumptions about the relation between
the index of a pin object in mcu_pin_global_dict_table and its "pin
number". This was true, until some pins were removed from the
microcontroller module on Pico W.

Closes: #7078
2022-10-19 21:09:50 -05:00
Jeff Epler
8bef4282c0
pico w: implement static configuration methods in wifi.Radio 2022-10-19 20:54:53 -05:00
Dan Halbert
08e1cdb282
Merge pull request #7079 from jepler/picow-2xmss
Pico W grab bag
2022-10-19 15:03:00 -04:00
Jeff Epler
6e350a65cf
Merge pull request #7076 from bill88t/early-wifi
Implement async wifi connection on picow
2022-10-17 19:54:58 -05:00
Jeff Epler
3b7feccd9b
picow: Implement stop_station
Weirdly we have to stop the AP too (which we never started),
or cyw43_tcpip_link_status still reports that STA is connected.
As long as AP mode isn't implemented, this doesn't matter and
we can just do it.
2022-10-17 19:42:10 -05:00
Jeff Epler
57756863ef
picow: depending on memory pressure, may only be able to write 1 MSS
Foamyguy discovered that trying to send >2920 bytes at once consistently
failed. I further discovered that sometimes trying to send >1460 bytes
would fail too.  By "fail", I mean that it would take a very long time
(around 200 * 50ms) before erroneously reporting that all bytes were
written.

In my testing, this change causes larger writes to successfully
send either 2920 or 1460 bytes (possibly after doing some 50ms waits
for a previous packet to clear).

The documentation of socket.send always stated that it COULD send fewer
bytes than requested, but adafruit_httpserver assumed that the number
of requested bytes were always sent, so after this change alone,
adafruit_httpserver will still not work properly.

Closes: #7077 (albeit fixes are needed in adafruit_httpserver too)
2022-10-17 19:42:07 -05:00
Jeff Epler
861b22730e
picow: if initial write fails, write at most 1 TCP MSS of data 2022-10-17 19:28:02 -05:00
Bill Sideris
47c373e67e
Use cyw43_tcpip_link_status instead 2022-10-17 18:33:32 +03:00
Bill Sideris
bce024f59e
Implement async wifi connection on picow 2022-10-17 18:17:14 +03:00
Jeff Epler
47541afc7c
picow: ask at a lower level if the interface is up
Closes: #7072

```
Adafruit CircuitPython 8.0.0-beta.2-9-g5192082e64-dirty on 2022-10-17; Raspberry Pi Pico W with rp2040
>>> import wifi
>>> print(wifi.radio.ipv4_address)
None
>>> import os
>>> wifi.radio.connect(os.getenv('WIFI_SSID'), os.getenv('WIFI_PASSWORD'))
>>> print(wifi.radio.ipv4_address)
10.0.2.94
```
2022-10-17 10:08:50 -05:00
Jeff Epler
d4b1d4d430
Fix GPIO state when initializing CYW43 pin
Closes: #7063
2022-10-15 13:10:22 -05:00
Dan Halbert
062d63ee3a
Merge pull request #7050 from jepler/picow-wirelsess-off-in-deep-sleep
picow: Turn off wifi co-processor regulator when entering deep sleep
2022-10-14 08:17:16 -04:00
Jeff Epler
3b3fe44174
implement hashlib for picow 2022-10-13 20:42:50 -05:00
Jeff Epler
0c5fd55c16
picow: Turn off wifi co-processor regulator when entering deep sleep
This reduces power consumption during true deep sleep.

In my measurements with ppk2 and a program that _irrevocably_ entered
deep sleep (no time alarm or pin alarm), power usage as measured on a
ppk2 decreased from ~10mA to ~1mA.
2022-10-13 20:10:10 -05:00
Georg Bøe
e768b9ebb3 Return correct errno 2022-10-13 21:00:51 +02:00
Jeff Epler
874ddd67bf
Pico W: ssl: factor out do_handshake 2022-10-12 11:38:30 -05:00
Jeff Epler
1641a7c002
Pico W: ssl: Correctly handle errors in send/recv
The prefixed versions raise Python exceptions, the un-prefixed return
negative error values. We don't want to raise an exception from here,
it leaves the SSL stack in an undefined state.
2022-10-12 11:38:30 -05:00
Jeff Epler
7c849fdadb
Pico W: ssl: Raise MemoryError for allocation errors 2022-10-12 11:38:29 -05:00
Jeff Epler
b1f7940297
Pico W: Correctly treat empty cadata= as disabling host checking 2022-10-12 11:38:29 -05:00
Jeff Epler
ca9523b814
Pico w: socket: Correctly return negative error code from recv_into 2022-10-12 11:38:29 -05:00
Jeff Epler
62cbd3bcd8
Pico w: socket: correctly track sockets generated by accept() 2022-10-12 11:38:26 -05:00
Jeff Epler
0c8b261ec9
picow: Add support of self-signed certificates.
## Testing self-signed certificates and `load_verify_locations`

Obtain the badssl "self-signed" certificate in the correct form:

```sh
openssl s_client -servername self-signed.badssl.com -connect untrusted-root.badssl.com:443 < /dev/null | openssl x509 > self-signed.pem
```

Copy it and the script to CIRCUITPY:
```python
import os
import wifi
import socketpool
import ssl
import adafruit_requests

TEXT_URL = "https://self-signed.badssl.com/"
if not wifi.radio.ipv4_address:
    wifi.radio.connect(os.getenv('WIFI_SSID'), os.getenv('WIFI_PASSWORD'))

pool = socketpool.SocketPool(wifi.radio)
context = ssl.create_default_context()
requests = adafruit_requests.Session(pool, context)

print(f"Fetching from {TEXT_URL} without certificate (should fail)")
try:
    response = requests.get(TEXT_URL)
except Exception as e:
    print(f"Failed: {e}")
else:
    print(f"{response.status_code=}, should have failed with exception")

print("Loading server certificate")
with open("/self-signed.pem", "rb") as certfile:
    context.load_verify_locations(cadata=certfile.read())
requests = adafruit_requests.Session(pool, context)

print(f"Fetching from {TEXT_URL} with certificate (should succeed)")
try:
    response = requests.get(TEXT_URL)
except Exception as e:
    print(f"Unexpected exception: {e}")
else:
    print(f"{response.status_code=}, should be 200 OK")
```
2022-10-10 15:53:56 -05:00
Jeff Epler
c98174eea5
Add support for SSL client certificate (load_cert_chain)
Tested with badssl.com:

 1. Get client certificates from https://badssl.com/download/
 2. Convert public portion with `openssl x509 -in badssl.com-client.pem -out CIRCUITPY/cert.pem`
 3. Convert private portion with `openssl rsa -in badssl.com-client.pem -out CIRCUITPY/privkey.pem` and the password `badssl.com`
 4. Put wifi settings in CIRCUITPY/.env
 5. Run the below Python script:

```py
import os
import wifi
import socketpool
import ssl
import adafruit_requests

TEXT_URL = "https://client.badssl.com/"
wifi.radio.connect(os.getenv('WIFI_SSID'), os.getenv('WIFI_PASSWORD'))

pool = socketpool.SocketPool(wifi.radio)
context = ssl.create_default_context()
requests = adafruit_requests.Session(pool, context)

print(f"Fetching from {TEXT_URL} without certificate (should fail)")
response = requests.get(TEXT_URL)
print(f"{response.status_code=}, should be 400 Bad Request")
input("hit enter to continue\r")

print("Loading client certificate")
context.load_cert_chain("/cert.pem", "privkey.pem")
requests = adafruit_requests.Session(pool, context)

print(f"Fetching from {TEXT_URL} with certificate (should succeed)")
response = requests.get(TEXT_URL)
print(f"{response.status_code=}, should be 200 OK")
```
2022-10-10 15:10:53 -05:00
Dan Halbert
de95463deb
Merge pull request #7023 from dhalbert/wifi-scanning-fixes
update esp-idf; allow start/stop channels in wifi scanning
2022-10-10 13:54:54 -04:00
Dan Halbert
747dc7746d handle scan channel bounds but note they do nothing for RP2040 CYW43 2022-10-07 16:22:17 -04:00
Jeff Epler
f882571366
pico w: pins improvements
Closes: #7017

 * Remove the 'GP23' alias for CYW1
 * Remove the 'CYW0' alias for CYW0
 * Switch VBUS_SENSE to CYW2, remove 'GP24' alias

Code that wants to use SMPS_MODE, VBUS_SENSE and LED while being
portable to the W and non-W variants should use those names, not alias
names.

 * Remove A3 / VOLTAGE_MONITOR

Right now this cannot be used. The ability to check the voltage monitor
should be added back in some fashion in the future.
2022-10-07 08:48:36 -05:00
Jeff Epler
2dc283f578
close underlying socket object when closing ssl socket 2022-10-05 15:10:14 -05:00
Jeff Epler
4a9389d347
remove debug message 2022-10-05 14:57:04 -05:00
Jeff Epler
fabfdcf6fe
More ssl work 2022-10-05 14:56:26 -05:00
Jeff Epler
dcb650c513 pico w: add ssl module
Note: at this time, the ssl module on pico_w never verifies the server
certificate. This means it does not actually provide a higher security
level than regular socket / http protocols.
2022-10-05 13:12:43 -04:00
Jeff Epler
d3e85d165e
Set cyw43 power management as needed, default to disabled
.. the value actually needs to be enforced each time the STA or AP
is enabled, because internally there's a call to cyw43_wifi_pm with the
library's defaut power management value, not ours.

Add a getter, though it only returns our idea of what the power
management register is set to, it doesn't read out from the actual
hardware, sadly.
2022-10-01 08:20:34 -05:00
Jeff Epler
afc1c0e3bb
Fix unused variable diagnostics, make it a fatal error 2022-09-30 11:19:22 -05:00
Jeff Epler
37620d4eb0
Fix several classes of compiler diagnostic & make fatal
* -Wno-nested-externs
 * -Wno-strict-prototypes
 * -Wno-double-promotion
 * -Wno-sign-compare
2022-09-30 11:19:22 -05:00
Jeff Epler
2c9c6fc80e
Remove unused static functions 2022-09-30 11:19:21 -05:00
Jeff Epler
0912889106
raspberrypi: statically allocate storage for hostname 2022-09-30 10:05:11 -05:00
Jeff Epler
4de9487820
It turns out you CAN have too many GPIO 2022-09-29 20:10:33 -05:00
Jeff Epler
510bd11f58
Enable reading back value of cyw43 pin
Now, `led.value = not led.value` works as a way to toggle the LED state.

Closes: #6959
2022-09-29 11:06:11 -05:00
Jeff Epler
a3bcfd6911
Add pin_CYW1 for SMPS_MODE 2022-09-29 10:54:06 -05:00
Jeff Epler
74cdf42ece
pico w: implement bind, listen, accept
this works with some simple tcp & udp echo service code
2022-09-29 10:02:20 -05:00
Jeff Epler
56f9f0d136
add tx power get/set 2022-09-29 10:02:19 -05:00
Jeff Epler
71a00157ba
Add hostname setting 2022-09-29 10:02:19 -05:00
Dan Halbert
db065a299f
Merge pull request #6933 from jepler/🥧🐮
Implement a useful subset of `wifi` and `socketpool` modules on 🥧🐮
2022-09-28 18:09:24 -04:00
Jeff Epler
09d4fbc557
Remove FIXME
this was verbatim-copied from micropython
2022-09-28 14:38:13 -05:00
Jeff Epler
6189156a0b
Add missing NotImplementedErrors 2022-09-28 14:38:12 -05:00
Jeff Epler
edf1efd728
Add CYW43 guards to more things 2022-09-28 14:38:12 -05:00
Jeff Epler
4380292848
comment why not actually reset wifi 2022-09-28 14:38:11 -05:00
Jeff Epler
ff7731491e
Implement enough of socketpool to do ntp and non-https requests 2022-09-28 10:06:34 -05:00
Jeff Epler
a7a1bd7880
Implement DNS resolution
```
>>> s = socketpool.SocketPool(wifi.radio)
>>> s.getaddrinfo("google.com", 80)
[(0, 0, 0, '', ('142.250.81.206', 80))]
```
2022-09-28 10:06:33 -05:00
Jeff Epler
6c3cdceb45
Implement scan, connect, ping
My pings go out, and then they come back

```py
import os
import wifi
import ipaddress

wifi.radio.connect(os.getenv('WIFI_SSID'), os.getenv('WIFI_PASSWORD'))
ipv4 = ipaddress.ip_address("8.8.4.4")
print("Ping google.com: %f ms" % (wifi.radio.ping(ipv4)*1000))
```
2022-09-28 10:06:33 -05:00
Jeff Epler
346fff2e7c
cyw43 basic gpio support, hwaddr in boot_out 2022-09-28 10:06:33 -05:00
Dan Halbert
ea15a9118a ringbuf cleanup 2022-09-21 10:03:05 -04:00
Dan Halbert
8a568d18b5
Merge pull request #6757 from latkinso42/adcdma
analogbufio
2022-09-16 08:32:24 -04:00
Dan Halbert
82694b7265 remove extraneous copyrights 2022-09-15 20:31:08 -04:00
Dan Halbert
60f43b1703 allow preserving pin state during deep sleep 2022-09-15 17:35:14 -04:00
latkinso42
c1f57c6ceb Pushing for resolution 2022-09-07 18:53:35 -04:00
latkinso42
25078a24a3 Attempt to fix Build-Docs and Pre-Commit 2022-09-06 18:58:57 -04:00
latkinso42
5498b3ac91 fix to analogbufio BufferedIn.h 2022-09-05 14:22:08 -04:00
latkinso42
a1856ea3e9 Renaming module from adcbuffer to analogbufio 2022-09-05 12:11:49 -04:00
latkinso42
478b40ecf9 Merge branch 'adcdma' of https://github.com/latkinso42/circuitpython into adcdma
Syncing with remote
2022-09-04 16:07:37 -04:00
Lee Atkinson
3cd8259a78
Merge branch 'adafruit:main' into adcdma 2022-09-04 15:59:20 -04:00
latkinso42
d7a1db5b87 Changes per review 2022-09-04 15:57:59 -04:00
Jeff Epler
a3e17189a4
rp2pio: fix occasional bug when not using OUT pins
a NULL first pin object is used to indicate that there are zero
of some kind of pin associated with the StateMachine. However,
mask_and_rotate wasn't checking for zero. It actually read data from
near address 0x0 and (in my case) got a nonzero mask, which then
caused a program with GPIO11 and GPIO12 as input with pull-up and no
out pins to erroneously encounter the error "pull masks conflict with
direction masks"
2022-09-03 20:39:42 -05:00
Lee Atkinson
04af01a672 Pin Validation fixed/readmultiple return fixed 2022-08-27 14:47:12 -04:00
Lee Atkinson
6fd08483e2 Tidying code for PR/ Minor Issues 2022-08-24 17:41:51 -04:00
Lee Atkinson
e23b621d69 Fixing 8 bit and 12 bit conversion 2022-08-22 18:55:55 -04:00
Lee Atkinson
f5655dd48c Fixing Build errors/ DMA Xfer Rate 2022-08-21 11:44:40 -04:00
Lee Atkinson
68671399d1 More formating 2022-08-19 10:51:13 -04:00
Lee Atkinson
d3c3c9eac4 Tidy a few things 2022-08-18 19:10:16 -04:00
Lee Atkinson
f91af513b7 Introduced odule adcbuffer / removed analogio/AnalogFastIn 2022-08-18 16:23:17 -04:00
Lee Atkinson
34b8fbaf14
Merge branch 'adafruit:main' into adcdma 2022-08-18 09:08:10 -04:00
Lee Atkinson
4542c801b0 Tidying up loose endson draft PR 2022-08-14 13:03:33 -04:00
gamblor21
7584363f66 Forgot an include 2022-08-13 17:41:45 -05:00
gamblor21
1ae2a2154e Initial i2ctaret commit 2022-08-13 17:00:43 -05:00
Lee Atkinson
8cd12b2478 Copyright Change 2022-08-12 16:01:58 -04:00
Lee Atkinson
81c7ba899d Copyright Update/Acknowledgements 2022-08-12 13:57:45 -04:00
Lee Atkinson
c3c1e307c4 Sample Rate Enhancements 2022-08-11 17:50:30 -04:00
Lee Atkinson
9e0c580d3d AnalogFastIn 2022-08-10 09:42:24 -04:00
Lee Atkinson
f69939c49c First Commit for AnalogFastIn 2022-08-06 16:22:50 -04:00
Scott Shawcroft
d9f6e99942
Fix RP2040 UART
It couldn't receive more than 32 bytes in while checking in_waiting
because in_waiting didn't turn interrupts back on correctly.

Fixes #6579
2022-07-11 13:36:44 -07:00
Nick Lopez
dce9396fe3 issue adafruit#6538 loose bounds checking on WAIT PIO instruction 2022-07-02 14:32:20 -07:00
Scott Shawcroft
9c20eb58e9
Merge pull request #6450 from mwisslead/rp2040_pulsein_common_hal_construct
Rp2040 pulsein improvements
2022-06-08 08:15:29 -07:00
Scott Shawcroft
9d10a3da66
Conditionalize LTO 2022-05-27 12:59:54 -07:00
Paint Your Dragon
c3f58193ca
Correctly scale analog reading per issue #4794 2022-05-24 08:46:39 -07:00
Michael Wisslead
2b0518233b rp2040 PulseIn improvements 2022-05-23 00:45:06 +00:00
Michael Wisslead
893fc66d16 Use common_hal_rp2pio_statemachine_construct for PulseIn 2022-05-23 00:45:06 +00:00
Dan Halbert
f63b26c534 address jepler's comments and further squeezes 2022-05-20 10:10:55 -04:00
Dan Halbert
a01dec1df9 message consolidation and more use of validators 2022-05-19 15:38:37 -04:00
Dan Halbert
bb46898572
Merge pull request #6361 from mwisslead/rp2040_pulsein_buffer_fix
Fix buffer issue for rp2040 PulseIn
2022-05-08 12:37:17 -04:00
Michael Wisslead
b7882edd01 Fix buffer issue for rp2040 PulseIn 2022-05-07 00:57:10 +00:00
Jeff Epler
b482a732c6
StateMachine: add swap flag
Always use DMA if swap flag is enabled.

Improve docs a bit
2022-05-06 15:22:43 -05:00
Jeff Epler
23c0fc8354
add ability to get, clear txstall flag
This can be used to make sure a PIO has actually finished all data
it was schedule to receive via a 'once' background_write
2022-05-06 15:22:43 -05:00
Jeff Epler
f776749ca3
Key off len, not buf, to decide if anything to DMA 2022-05-06 15:22:43 -05:00
Jeff Epler
1a9034ff7c
rp2pio: Allow background_write(None) to terminate after complete loop 2022-05-06 15:22:42 -05:00
Jeff Epler
a9d929627a
minor comment update 2022-05-05 14:40:49 -05:00
KurtE
1fad381513 [RP2040] Allow any GPIO pin for RS485 direction pin
As I mentioned in issue #6310 while investigating that the Teensy port
did not support RS485_dir pin on normal GPIO pins, I found that it
was not implemented either as well on some other ports.

So was curious to implement it for RP2040 using same approach as I did
for the MIMXRT in the Pull Request #6328

That is I setup the specified pin as a normal GPIO pin in output mode
and then when you do a write operation it sets the GPIO pin logically
high, and when the write completes I set it logically low.

Note: knowing when I can set it low can be tricky, as you need to make
sure the full output has completed otherwise the data will be corrupted.

I am using:         uart_tx_wait_blocking(self->uart);
Which looks like it is supposed to wait until the busy status is no
longer set, which the Reference manual mentioned, but this is leaving
the line logically set longer than I would like.

however I have tried running it with my hacked up version of the
Python Robotis DynamixelSDK and was able to talk to some AX servos.

I did have to change the library slightly for the RP2040, as the
library was erroring out when you did something like uart.read(5)
and it timed out without receiving anything.  The RP2040 returned
None whereas I think the Teensy returned an empty set, which is what
it looks like the PySerial original code expects.

Not sure if anyone is interested in this, but thought i would
put it out as PR and see.
2022-04-30 14:31:08 -07:00
Dan Halbert
63abd9a9cf
Merge pull request #6312 from dhalbert/adjust-neopixel-timings
test and adjust NeoPixel timings on multiple ports
2022-04-26 13:18:47 -04:00
Dan Halbert
3a8fb4e956
Merge pull request #5852 from jepler/floppy
Add floppyio
2022-04-26 11:40:19 -04:00
Dan Halbert
4eeaf41edc test and adjust NeoPixel timings on multiple products 2022-04-25 23:12:24 -04:00
Jeff Epler
989fb828d4
Revamp background writing
Now a 'once' and a 'loop' buffer can be specified.

'once' is useful for things like writing a neopixel strip in the background,
if you can guarantee the buffer contents are stable until the write is complete.

'loop' is useful for periodic things, like pwm & servos.

both together are useful for some special cases of pwm/servo, where a
transitional waveform needs to be played for one repetition and then
a new waveform needs to be played after that.

The API is renamed to reflect that it's a more generic 'background'
operation.
2022-04-23 13:09:36 -05:00
Jeff Epler
ebc426d9e6
Remove debug prints, improve docs 2022-04-19 16:39:04 -05:00
Jeff Epler
b128f180ca
switch to single single dma channel, fix some bugs 2022-04-19 16:33:51 -05:00
Jeff Epler
33d6d55675
the basics work
the sequence has to be a minimum length, 8 entries, but this problem
is not detected. I don't THINK this is an insurmountable problem.
2022-04-19 15:14:50 -05:00
Jeff Epler
33f5598acc
Stub 'continuous write' functionality 2022-04-19 11:35:43 -05:00
Jeff Epler
f7be4345d9
Merge remote-tracking branch 'origin/main' into floppy 2022-04-07 08:37:46 -05:00
Dan Halbert
1a329cfd11
Merge pull request #6029 from jepler/pio-wrap
raspberry: StateMachine: Add support for wrap=, wrap_target=
2022-04-06 11:55:02 -04:00
Jeff Epler
fe98248a3d
Merge remote-tracking branch 'origin/7.2.x' into merge-7.2.x 2022-04-05 08:45:13 -05:00
Dan Halbert
4cccc1a036 handle clearing both RXIC and RTIC interrupts 2022-04-04 23:55:08 -04:00
Radomir Dopieralski
b69a06b2ed Also fix the read pin in the atmel and rp2040 ports 2022-03-06 11:33:07 +01:00
Jeff Epler
a58bf235d8
raspberry: StateMachine: Add support for wrap=, wrap_target= 2022-02-13 16:38:53 -06:00
Dan Halbert
da035fe958
Merge pull request #5990 from sgauche/stm_spi_3wire
Add support for half-duplex SPI to CPy
2022-02-09 13:11:37 -05:00
Scott Gauche
a8d8651873 Canonical C style for half_duplex = true/false 2022-02-08 23:13:22 -05:00
Scott Gauche
89ad767b8f add half_duplex to spi constructs in other ports but raise not implemented errors 2022-02-08 22:25:23 -05:00
root
ce191327e8 RP2040 PDMIn frequency based on sample rate 2022-02-08 10:10:02 -06:00
Dan Halbert
1c17dc9348 ports/raspberrypi/common-hal/busio/SPI.c 2022-02-07 17:07:47 -05:00
Dan Halbert
566f8bed99
Merge pull request #5984 from DavePutz/issue_5967
Correcting order of sideset parameters in function call
2022-02-05 21:58:30 -05:00
root
8c10148b21 Correcting order of sideset parameters in function call 2022-02-05 16:15:12 -06:00
Jeff Epler
07e710b0a0
Merge remote-tracking branch 'origin/main' into floppy 2022-02-04 09:01:36 -06:00
Jeff Epler
749bb99863
bump pico-sdk to 1.3.0 2022-02-02 17:15:33 -06:00
Jeff Epler
bf57f3606a
rp2pio: Add pull up/down support for the "jmp pin"
This is needed so that the floppy flux reader can enable the pull up
on the index pin while using it as a pio jmp pin.

Also fixes a doc bug where the `jmp_pin` was omitted in one spot in the docs.
2022-02-01 10:19:17 -06:00
Dan Halbert
cc410ad6a3 common-hal I2C combined write_read 2022-01-31 22:03:30 -05:00
Scott Shawcroft
13db65566d
ESP NeoPixel fixes
This tweaks the RMT timing to better match the 1/3 and 2/3 of 800khz
guideline for timing. It also ensures a delay of 300 microseconds
with the line low before reset.

Pin reset is now changed to the IDF default which pulls the pin up
rather than CircuitPython's old behavior of floating the pin.

Fixes #5679
2022-01-19 16:29:07 -08:00
Jeff Epler
8e895e1986
Add floppyio for rp2040
Tested on RP2040 Feather with a 3.5" Prodigy diskette, the whole
surface reads 100% across 3+ trials.
2022-01-17 16:34:47 -06:00
Jeff Epler
db5f99c63e
Add a function to get low level register access
The port is free to return NULL for any/all of these, and the caller has
to check.

This will be used in the floppy code, because aside from getting the
registers, it looks like all is independent of MCU.
2022-01-13 15:29:03 -06:00
arturo182
9b825869c5
raspberrypi : Check UART before claiming pins, claim it after
Co-authored-by: Scott Shawcroft <scott@adafruit.com>
2022-01-11 22:02:47 +01:00
arturo182
2251d0f4b0
raspberrypi: Claim UART after checking pins
If, for some reason, you mix up TX and RX when calling `busio.UART` (who would do that ;) ), you get `Invalid pins`. When you go to try again, you'll get `All UART peripherals are in use` because the interface was claimed as busy before pins are verified. This should fix that issue.
2022-01-11 15:13:36 +01:00
Dan Halbert
9d2a32d07e countio: add selectable rise and fall detection, pulls 2021-12-31 16:34:58 -05:00
Dan Halbert
8aafc734a4
Merge pull request #5789 from adafruit/7.1.x
Merge latest changes from 7.1.x
2021-12-28 18:12:29 -05:00
Scott Shawcroft
08d09ac493
Merge pull request #5613 from jepler/issue5418
clear out interrupt when freeing the timer
2021-12-28 10:57:58 -08:00
Jeff Epler
1986d2ee71
clear out interrupt flags when disabling timer too 2021-12-27 16:42:41 -06:00
Scott Shawcroft
827ad327a5
Only ignore warnings if in gcc >= 11 2021-12-22 18:21:18 -08:00
Scott Shawcroft
3e13d4f5b5
Add sideset_enable support to PIO
This allows for UART TX via PIO
2021-12-22 12:00:19 -08:00
Dan Halbert
5fe4c3bec9 fix mistaken use of PWM channel for slice 2021-12-05 21:16:46 -05:00
Dan Halbert
4de6c7cf6f
Merge pull request #5656 from dhalbert/rp2040-i2c-zero-write-bitbang-timeout
Use a longer clock stretching timeout for RP2040 zero-byte I2C writes
2021-12-04 19:40:48 -05:00
foamyguy
fa37ee6484 limit disable interrupts to flash calls 2021-12-04 14:14:23 -06:00
foamyguy
5e7c1328b0 disable interrupts inside of write_page and erase_write_sector 2021-12-04 12:21:51 -06:00