Forum: Mikrocontroller und Digitale Elektronik PiPico Arduino / PlatformIO


von Günter (Gast)


Lesenswert?

Im Moment gibt es von der Arduion-IDE noch keine Unterstützung für den 
RP2040.

Auf GitHub findet man aber schon Teile des Frameworks für PlatformIO:

https://github.com/Wiz-IO/wizio-pico

Schade, dass es vorerst noch ein main-File mit "loop" und "setup", statt 
der *.ino Endung geben muss.

von Sabrina (Gast)


Lesenswert?

Günter schrieb:
> Im Moment gibt es von der Arduion-IDE noch keine Unterstützung für den
> RP2040.
>
> Auf GitHub findet man aber schon Teile des Frameworks für PlatformIO:
>
> https://github.com/Wiz-IO/wizio-pico
>
> Schade, dass es vorerst noch ein main-File mit "loop" und "setup", statt
> der *.ino Endung geben muss.

Gib es einen Grund für deinen Beitrag?

Wenn du mit dem Pico schnell loslegen willst, dann installierte 
Micropython auf "Raspberry pi pico"-Board und Thonny auf dem PC.

Wenn du wie die großen Mädchen arbeiten willst, dann die Pico-SDK (C, 
C++).

von Günter (Gast)


Lesenswert?

>Wenn du wie die großen Mädchen arbeiten willst, dann die Pico-SDK (C,
>C++).

Liebe Sabrina,
was die Softwareentwicklung anbelangt, musst du noch viel lernen: 
Heutzutage macht man alles mit Libraries, weil diese die 
Entwicklungszyklen verkürzen. Im Arduino-System gibt es tausende davon, 
deshalb solltest du dich damit auseinandersetzen.
Grüße,
Günter

von STK500-Besitzer (Gast)


Lesenswert?

Günter schrieb:
> Liebe Sabrina,
> was die Softwareentwicklung anbelangt, musst du noch viel lernen:
> Heutzutage macht man alles mit Libraries, weil diese die
> Entwicklungszyklen verkürzen. Im Arduino-System gibt es tausende davon,
> deshalb solltest du dich damit auseinandersetzen.
> Grüße,
> Günter

Und die Libraries zaubert man aus dem Hut?

von Günter (Gast)


Lesenswert?

>Und die Libraries zaubert man aus dem Hut?
Nein, wenn es sie gibt, kann man sie herunter laden.
Hier gibt es eine Auswahl und Anleitungen:
https://www.arduino.cc/en/reference/libraries

Vielfach ist es aber einfacher, sie auf GitHub zu suchen.
Wenn du genügend Erfahrung hast, kannst du auch selbst eine Library 
schreiben.
Damit sie Arduinostandard konform wird, solltest du dich an die Coding 
Rules hier halten:

https://www.arduino.cc/en/Hacking/LibraryTutorial

von Charly B. (charly)


Lesenswert?

Günter schrieb:
>>Wenn du wie die großen Mädchen arbeiten willst, dann die Pico-SDK (C,
>>C++).
>
> Liebe Sabrina,
> was die Softwareentwicklung anbelangt, musst du noch viel lernen:
> Heutzutage macht man alles mit Libraries, weil diese die
> Entwicklungszyklen verkürzen.
und die Debugzeiten vervielfachen wenn man die Fehler anderer suchen
"darf"

> Grüße,
> Günter
Gruss zurueck!

von STK500-Besitzer (Gast)


Lesenswert?

Günter schrieb:
>>Und die Libraries zaubert man aus dem Hut?
> Nein, wenn es sie gibt, kann man sie herunter laden.
> Hier gibt es eine Auswahl und Anleitungen:
> https://www.arduino.cc/en/reference/libraries
>
> Vielfach ist es aber einfacher, sie auf GitHub zu suchen.
> Wenn du genügend Erfahrung hast, kannst du auch selbst eine Library
> schreiben.
Und die darf ich dir dann zur Verfügung stellen?
> Damit sie Arduinostandard konform wird, solltest du dich an die Coding
> Rules hier halten:
>
> https://www.arduino.cc/en/Hacking/LibraryTutorial

Und ich dachte, das wären Kaninchen aus dem Zauberhut.
Ich bin normalerweise selber ein Klugscheisser und stinkend faul, aber 
es gibt immer jemanden, der das überbietet.

Da wird dann wohl jemand etwas warten müssen, bis sich jemand anders 
erbarmt, die Libraries zu schreiben.
Dann kann der erste Jemand natürlich auch auf den zweiten schimpfen, 
wenn die (Deutsche) Doku fehlt, oder Funktion der Library nicht die 
"Mach, wie ich es will!" erfüllt.

Dass das Entwickeln von Software (nur noch) auf der Verwendung von 
Libraries erfolgt, halte ich für Unfug.

Charly B. schrieb:
> und die Debugzeiten vervielfachen wenn man die Fehler anderer suchen
> "darf"
Jepp. Davor belibt man nicht mal bei professionellen Anbietern 
verschont.

von Günter (Gast)


Lesenswert?

STK500-Besitzer
>Da wird dann wohl jemand etwas warten müssen, bis sich jemand anders
>erbarmt, die Libraries zu schreiben.

Ich weiß, für einen STK500 Besitzer sind diese Dinge etwas schwierig zu 
verstehen. Die Zeit des STK waren ja vor zwanzig Jahren und mittlerweile 
hat sich die Softwarewelt doch etwas weiter entwickelt.
Unter Library  musst du dir hier die Gesammtheit aller Biblibotheken für 
die verschiedener Arduino Varianten vorstellen. Dazu gehört z.B. 
Adafruit GFX, die auf die auf unterlagerte Schnittstellentreiber 
aufsetzt.

https://github.com/adafruit/Adafruit-GFX-Library

Daher müssen für den RP2040 nicht die letzten Hardware-Features 
verfügbar sein und es genügen die einfachen SPI- und I2C Schnittstellen.

von Experte (Gast)


Lesenswert?

Charly B. schrieb:
> und die Debugzeiten vervielfachen wenn man die Fehler anderer suchen
> "darf"

Nicht nur dass dieses "Argument" nun schon geschätzt drölftrillarden mal 
widerlegt wurde; es zeugt auch von einer maßlosen Selbstüberschätzung, 
davon auszugehen man sei als Einzelperson einer Gruppe von Spezialisten 
oder auch einer anderen Einzelperson stets überlegen.

von Günter (Gast)


Lesenswert?

>Auf GitHub findet man aber schon Teile des Frameworks für PlatformIO:
>https://github.com/Wiz-IO/wizio-pico

Wizo scheint den Debugger noch nicht zu unterstützen.

Fals man mit dem SDK debuggen will, braucht man folgende Dinge:

1. das Datenblatt
https://datasheets.raspberrypi.org/pico/getting-started-with-pico.pdf

2. WIN10 Anleitung
https://www.element14.com/community/community/raspberry-pi/blog/2021/02/07/debugging-the-raspberry-pi-pico-on-windows-10

Hoffentlich gibt's bald Support für den pipico in Platformio mit 
Debugger.
Dann bräuchte man das blöde cmake nicht mehr, das nur Ärger macht.

von STK500-Besitzer (Gast)


Lesenswert?

Günter schrieb:
> Ich weiß, für einen STK500 Besitzer sind diese Dinge etwas schwierig zu
> verstehen. Die Zeit des STK waren ja vor zwanzig Jahren und mittlerweile
> hat sich die Softwarewelt doch etwas weiter entwickelt.
Ach? Wirklich?

Egal, ob für einen AVR (auch "damals" gab es schon Libraries z.B. Peter 
Fleurys), einen STM32 oder einen Rapsberry Pi Pico, man braucht zum 
Programmieren eines Prozessors keine Library, sondern das Datenblatt. 
Alles andere ist Luxus / Bequemlichkeit.

> Unter Library  musst du dir hier die Gesammtheit aller Biblibotheken für
> die verschiedener Arduino Varianten vorstellen. Dazu gehört z.B.
> Adafruit GFX, die auf die auf unterlagerte Schnittstellentreiber
> aufsetzt.
Wie schon geschrieben: Klugscheissen kann ich sleber (besser).

> Daher müssen für den RP2040 nicht die letzten Hardware-Features
> verfügbar sein und es genügen die einfachen SPI- und I2C Schnittstellen.

Hä? Das eine ist Software und das andere Hardware.

Langsam wird es endgültig offtopic.

von Günter (Gast)


Lesenswert?

Die Arduino Integration macht auch Fortschritte:

https://github.com/Wiz-IO/wizio-arduino-pico

Schade ist hier, dass Linux noch nicht richtig unterstützt wird.
Aber es sieht so aus, als ob das im werden ist.

von Günter (Gast)


Lesenswert?

Hurra, die Arudino IDE läuft einwandfrei mit dem Pico und dem neuen 
Repostory:

https://github.com/earlephilhower/arduino-pico

Vorgehen:
1. JSON File in Boardmanager kopieren
2. In der Boardverwaltung Raspberry suchen und installieren
3. Beim ersten Anstecken des PiPico den Boottaster drücken
4. Blink Beispiel kompilieren und flashen

Gesamtzeit für alle Schritte: Maximal 5 Minuten vom Download bis zu 
ersten Blinken.

Getestet auf
- Ubuntu 20.4,
- Arduino IDE 1.8.7

Ich bin begeistert über die einwandfreie und schnelle Installation.

Beitrag bei Heise:
https://www.heise.de/tests/Raspberry-Pico-mit-der-Arduino-IDE-programmieren-6001575.html

von Günter (Gast)


Lesenswert?

Hat jemand die EEPROM Emulation schon einmal ausprobiert? Bei meiner 
Framework Version 1.0.3 scheint sie nicht zu funktionieren.

von Einer K. (Gast)


Lesenswert?

Günter schrieb:
> Hat jemand die EEPROM Emulation schon einmal ausprobiert?
Arduino?

Dann:
EEPROM.commit() // schreibt die temporären Daten
oder
EEPROM.end() // schreibt und beendet die Emulation
vergessen.

von Günter (Gast)


Lesenswert?

>EEPROM.commit() // schreibt die temporären Daten

Danke, hab's gerade selber auch gefunden.

Man muss vorher auch noch EEPROM.begin(512) machen, sonst wird auch 
nichts gespeichert. Die 512 beschreibt die Anzahl Bytes. Ich weiß aber 
nicht, wie groß man den Bereich wählen kann. 2048 gehen auf jeden Fall 
auch noch.

Ärgerlich, dass an der Stelle die APIs auseinander driften.

Bei den STMs heißt es wieder anders.

von Einer K. (Gast)


Lesenswert?

Das kann man doch alles herausfinden.
Du selber hast den Quelltext doch hier schon verlinkt!
1
// schnipp
2
void EEPROMClass::begin(size_t size) {
3
    if ((size <= 0) || (size > 4096)) {
4
        size = 4096;
5
    }
6
// schnapp

Günter schrieb:
> Ärgerlich, dass an der Stelle die APIs auseinander driften.
Wenn du nichts besseres zu tun hast, kannst du dich darüber ärgern, wenn 
du möchtest.
Wobei es hier nur den Unterschied, natives EEPROM oder Emulation, gibt.
Die API unterscheidet sich also nur in 3 Methoden.
Der Rest ist bei allen Implementierungen der Arduino EEPROM Lib 
identisch. (?)

von Günter (Gast)


Lesenswert?

Danke.
Weist du, wie man eine 40kHz PWM realisieren kann?

von Einer K. (Gast)


Lesenswert?

Mit dem PiPico?
Nöö...
Keine blasse Ahnung!

Wüsste allerdings schon, wo ich als erstes suchen würde....
Aber die Arbeit nehme ich dir nicht ab.

von Günter (Gast)


Lesenswert?

Die Funktionen sind zwar vorhanden, aber in der API noch nicht 
deklariert.
Ich habe die PWM getestet, sie geht aber nicht bis 40kHZ.

Bei 30kHz läuft sie noch.

Hier meine Umgehungslösung für die fehlenden Deklarationen.
1
/*
2
 * PiPico analogWrite Check
3
 * 
4
 * analog write functions are located in 
5
 * 
6
 * ~/.arduino15/packages/rp2040/hardware/rp2040/1.0.3/cores/rp2040/wiring_analog.cpp
7
 * 
8
 * Early Hill Power Core 1.0.3 from
9
 * https://github.com/earlephilhower/arduino-pico/tree/master/cores/rp2040
10
 * 
11
 */
12
13
extern "C" void analogWriteFreq(uint32_t freq);
14
extern "C" void analogWriteResolution(int res);
15
16
#define PIN 15 
17
void setup()
18
{
19
  analogWriteFreq(30000);
20
  analogWriteResolution(12);
21
  analogWrite(PIN, 2048);
22
}
23
24
void loop()
25
{
26
27
28
}

Arduino Fanboy D. (ufuf)
11.04.2021 21:30

>Aber die Arbeit nehme ich dir nicht ab.
Werd mal nicht überheblich und bleib auf dem Teppich

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.