Raspberry Pi Pico 2 #15621
Replies: 18 comments 43 replies
-
There are builds available for download even for the RISCV version ?!? https://www.micropython.org/download/RPI_PICO2/ but the link to the repo is invalid. |
Beta Was this translation helpful? Give feedback.
-
See #15619. From a quick look it seems to offer higher clock speeds, hardware FP, and PSRAM support among other goodies. See datasheet. |
Beta Was this translation helpful? Give feedback.
-
@mendenm : The faster more new and better architectures will appear the stronger the paradoxical effects of fragmentation of developer ressources will become. This may be even more of an issue with MP as we seem to have the bottleneck that developments have to go through @dpgeorge 's support/approval. |
Beta Was this translation helpful? Give feedback.
-
They were rationed to one per customer yesterday at the RPi retail store here in Cambridge, UK.
|
Beta Was this translation helpful? Give feedback.
-
Looks like there might be a slight difference in USB CDC handling: a user is reporting a complete loss of enumerated serial port if their code doesn't include an occasional |
Beta Was this translation helpful? Give feedback.
-
Just saw this Video, which is from Circuitpythons perspective, but gives a lot of insights into the RP2350. |
Beta Was this translation helpful? Give feedback.
-
A benchmark for the ARM version: a 1024 point DFT in Arm Thumb assembler from this library, running
Note this cannot be run on Pico 1 or on the Risc V core (the Pico 1 is Arm V6 without hardware FP). For anyone wanting a benchmark which should be adaptable for all targets, see the official pystone test. |
Beta Was this translation helpful? Give feedback.
-
I was thinking this was similar to a mini-supercomputer accelerator box we got for a Vax at Caltech, circa 1984. I think it cost somewhat more than $5. :-)
… On Aug 17, 2024, at 7:26 AM, shariltumin ***@***.***> wrote:
So Pico2 is better than Cray1.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you were mentioned.Message ID: ***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
I'm having difficulty dropping a Pico Pi 2 into a project that's working with the original Pico. For example this WS2812 code doesn't work properly on the Pico 2 - the LEDs flash and flicker, but it works fine on a Pico and Pico W dropped into the project
|
Beta Was this translation helpful? Give feedback.
-
Thanks very much for the kind response. To be honest, I am not the author of that code and didn't cross check those issues - it must be marginal and work almost by accident on the RP2040 in that case if we're that far away from the timing specs. I do have a proper Siglent scope so I can always probe out the signal and also make the change you suggest, and see how that works.
On Sunday, 18 August 2024 at 19:12:06 BST, Norbert ***@***.***> wrote:
Create the StateMachine with the ws2812 program, outputting on pin
sm = rp2.StateMachine(0, ws2812, freq=8_000_000, sideset_base=Pin(PIN_NUM))
8MHZ == 125ns period.
Given the fact that a WS2812 wants to have 850/400ns and 450/800ns, that entire undertaking uses a wrong frequency.
A much better frequency would be 1/50ns ie. 20MHz. Then you'd have 17/8 and 9/16 cycles and control the LED properly.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.Message ID: ***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
Ok, looks like Errata 9 in the processor datasheet might be a real problem here. If I set a pin to input mode with a pulldown e.g Errata 9 states This issue presents under the following conditions, for any GPIO 0 through 47:
and the mitigation states When pull-down behaviour is required, clear the pad input enable in GPIO0.IE (for GPIOs 0 through 47) to However I'm not sure how to apply this mitigation in Micropython - I can switch the pin between IN and OUT mode but once this problem occurs, I can't find a way of resetting the pin behaviour reliably. |
Beta Was this translation helpful? Give feedback.
-
Is there a rough idea of timeline yet for MP support on the RP235x family please? |
Beta Was this translation helpful? Give feedback.
-
I have problem getting RP2350 to pass "tests/ports/rp2/rp2_lightsleep.py" on ARM firmware
I have no such problem with RISC-V firmware.
|
Beta Was this translation helpful? Give feedback.
-
Will do. Switching the logic to use a pull up works in this case so I have done that. Will then work for both versions of the Pico.
Yahoo Mail: Search, organise, conquer
On Sun, 25 Aug 2024 at 12:06, Peter ***@***.***> wrote:
Raise the issue against MicroPython. Identify RP2350 in the title and include a reference to errata 9 in the text along with the repro you've identified above.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.Message ID: ***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
I have been debugging what seems to be a related problem in CircuitPython, and am seeing even stranger behavior that seems more pervasive than RP2350-E9. The "stuck high" behavior seems to be reproducible even without enabling the internal pulldown: Testing on a Pimoroni Tiny 2350: >>> from machine import Pin
>>> gp0 = Pin(0, mode=Pin.IN, pull=None)
>>> gp0.value() # initial value of unconnected pin
0
>>> gp0.value() # attach 1M resistor from pin to 3.3V
1
>>> gp0.value() # remove resistor
1
>>> gp0.value() # jumper pin to ground with 1M resistor
1 A voltmeter on the pin shows a stable 2.3V even after many seconds. The pin appears to be latched to 2.3V, as the erratum describes. Jumpering the pin hard (0 ohms) to ground and then removing the jumper restores the quiescent pin voltage to 0v and I first saw this behavior in CircuitPython and reproduced it in MicroPython as well. I don't see similar "stuck" behavior on RP2040. One consideration: the hard-reset state of the pin has the pull-down set. But I have been modifying the CircuitPython code to clear the pull-downs before the pin is set up for input, and that did not help. |
Beta Was this translation helpful? Give feedback.
-
Just received mine and I have to say: That chip seems to be a complete loss. #!micropython
from machine import Pin, mem32 as M
from time import sleep_ms
RESETS_BASE = const(0x40020000)
def PadReset():
M[RESETS_BASE] |= (1<<9) # PADS_BANK0
M[RESETS_BASE] &= ~(1<<9) # PADS_BANK0
def Show():
print(f'({p.value()}) {p}', end=' ')
PadReset()
for n in range(5):
print(f'{n:2}', end=' ')
p = Pin(0, Pin.IN, Pin.PULL_DOWN)
Show()
p = Pin(0, Pin.IN, None)
Show()
p = Pin(0, Pin.IN, Pin.PULL_UP)
Show()
p = Pin(0, Pin.IN, None)
Show()
print()
sleep_ms(500)
print()
for n in range(5):
print(f'{n:2}', end=' ')
PadReset()
p = Pin(0, Pin.IN, Pin.PULL_DOWN)
Show()
p = Pin(0, Pin.IN, None)
Show()
p = Pin(0, Pin.IN, Pin.PULL_UP)
Show()
p = Pin(0, Pin.IN, None)
Show()
print()
sleep_ms(500) resulting in:
Which shows in the first 5 lines that as soon as a latchup(high) occurs, it stays there. |
Beta Was this translation helpful? Give feedback.
-
Ok, well I have spent many hours now on this. This is what I know
Ok, so now the weird thing. With my touchscreen project the 2350 ADC will always report slightly high values (enough to screw up the tracking logic) for three or four X axis buttons (there are 16 in total) and this does not occur with the 2040. Measuring the input voltage to the ADC at the anomaly point I see 1.25,1.40,1.52.1.69 on the 2040 and 1.25,1.5,1.63,1.79 on the 2350. Before and after this point the voltages converge back to the same values progressively. Now at the point the code has for the 2040, the X+ pin set to logic 1, the X- pin to logic 0 and then Y+ is the ADC input and Y- is set to an input with no pullup i.e completely high impedance. Because of errata 9 we can't do this on the 2350 so instead I reset Y- and X+ so that they should both be high impedance and then - theoretically, from an electrical circuit point of view, we should be in exactly the same configuration as the 2040. BUT. Where is my tracking anomaly coming from? since the project just lets me plug in either board through ribbon cables, so we have an identical environment. The only thing I can think of is that the anomaly occurs around the logic 0 to 1 transition. If my supposedly 'high impedance' Y- pin is not in fact high impedance for specific voltage inputs, then it could source current and thus contribute an error but only for a specific input voltage range. You would need about 500uA across the approx 500 ohm resistance of the touch screen at that point to raise voltages by 0.1V. This would be weird but we already know that E9 has completely screwed up the GPIO behaviour anyway. I will try and see if I can reproduce this with a pot connected to GPIOs which have been configured and then reset with my code on the 2350 to see if in fact they are a high impedance across all analogue input voltages. Otherwise I simply can't see a mechanism for the anomaly I'm seeing, since clearly the ADC itself is accurate, but the input voltage is too high for a limited range of values from the touchscreen. There are no other components connected to its four pins at all, so no other source I can think of for anomalous inputs. |
Beta Was this translation helpful? Give feedback.
-
When looking the state of RP2040 GPIO pins for PR #13509, it seemed to me that After reset the GPIO pins are in a kind of constant current sink mode of about 60µA for voltages above ~2V. At 3.3V that looks indeed like 55k. Below 2V it has more of a resistor characteristic. |
Beta Was this translation helpful? Give feedback.
-
The Raspberry Pi Pico 2 is on its way! The first shipment is scheduled for August 19, 2024.
It's built on the RP2350 microcontroller with a higher core clock speed, double the on-chip SRAM, double the on-board flash memory, and more powerful Arm cores.
I'm pretty sure it'll run MicroPython right away.
Beta Was this translation helpful? Give feedback.
All reactions