PicoMite - MMBasic auf dem Raspberry Pi Pico

  • Ich habe mal testweise anstatt USB-seriell jetzt die serielle Console COM2 auf GP20/GP21 konfiguriert und ein VGA32 mit GLTerm angehaengt - klappt auch gut. Wobei der Backspace nicht will, aber Cursor-links geht dafuer.
    [EDIT] Mit ANSI-Legacy als Terminal im VGA32 geht Backspace (im Gegensatz zu ANSI) :)




    Einmal editiert, zuletzt von guidol ()

  • Ich habe diese aktuellste Version mal ausprobiert und mir schon in der ersten Spielstunde drei mal die Daten auf meiner SD-Karte zerschossen.

    Mit einem kleinen Testprogramm, das nichts weiter machte als eine Datei zu öffnen, ein paar ASCI Daten zu schreiben, die Datei schließen und dann wieder zu öffnen und zu lesen.


    In den release notes V5.07.03b2 steht

    ... Increases drive level for SDcard output pins (CD, MOSI and CLOCK) which MAY improve SDcard reliability when the SPI bus is loaded with additional devices (LCD and/or touch). ...

    Was das bedeuten soll ist mir nicht klar.


    Vielleicht ist auch etwas beim Einbauen der VGA Bibliotheken nicht so 100% gelungen (ich habe aber die Version ohne VGA genommen)


    Also Vorsicht - werde erstmal wieder downgraden.

  • Als ich das serielle GLTerm auf GP(IO) 20&21 ( OPTION SERIAL CONSOLE GP20, GP21 )

    neu compilieren wollte, ging dies nicht mehr - da FabGL seit dem letzten Compile vor 10 Monaten einige Befehle in andere Classes verschoben hat (Terminal. -> SerialPort.)


    So musste ich mir das aktuelle ANSI-Terminal Example vornehmen um die Aenderungen zu finden ;)


    Hat aber nach ein paar Versuchen geklappt :)

    Gleichzeitig habe ich mal die aktuellste Beta v5.07.05b18 vom Picomite installiert.


  • vom 31.10.2022 gibt es die 5.07.05.RC09, die habe ich heute installiert nachdem ich einen Pico wieder aus einer anderen Idee (RTC fuer den MiST) wieder befreit habe :)


    PicoMite MMBasic Version 5.07.05RC9

    Copyright 2011-2022 Geoff Graham

    Copyright 2016-2022 Peter Mather


    Mein aktueller Init:

    Mein Resettaster ist direkt links neben dem GP26(SDA) = Pin 30 (RUN) in Bruecke zu Pin 28 (GND)


    SPI:

    GP16 (MISO) - GP17 (Card Select CS) - GP18 (Clock - CLK) - GP19 (MOSI)

    I2C:

    GP26 (SDA) - GP27 (SCL)

    Power:

    Pin 28 (GND) - Pin 30 (RUN) - Pin 36 (3.3V OUT) - Pin 38 (GND)


    SDCard und DS3213-RTC beide an 3.3V und GND

  • @MH, Zitat:

    "Ansonsten super einfach zu benutzen - Funktionstasten für EDIT und RUN und der eingebaute terminal-Editor ist ausreichend - in wenigen Minuten konnte ich eine SD-Karte und ein GPS Empfänger sowie eine RTC anschließen und mit BASIC ansteuern. Ohne Bibliotheken zu laden oder etwas neu kompilieren zu müssen. Einfacher als mit MicroPython."


    Ich verwende ebenfalls MMBasic für den Pi PICO und möchte auch ein GPS-Modul anschliessen. Leider finde ich im MMBasic Handbuch unter den unterstützten Sensoren kein GPS-Modul. Könntest du ein entsprechendes Modul angeben das funktioniert? Sehr dankbar wäre ich auch, wenn du beschreibst wie das du es angeschlossen hast und welche OPTIONS angegeben werden müssen. Ein kleines Beispielprogramm für die Abfrage des GPS wäre super.


    Ich bedanke mich herzlich für eine Antwort

    Hans

  • Ha37 :


    Im Prinzip kannst Du jedes 3,3V fähiges NMEA GPS nehmen. Geoff hat ein paar für seinen "Boat Computer MkII" aufgeführt: https://geoffg.net/BoatComputer2.html


    Das EM408 das er früher verwendete ist wohl nicht mehr verfügbar... - Du solltest aber dieses hier verwenden können:

    NEO-6M GPS Module GY-NEO6MV2 Flight Controller For Arduino MWC IMU APM2 | eBay
    (Hope you could understand. Am 11.12.21 hat der Verkäufer die folgenden Angaben hinzugefügt Power: 3-5v. The battery Model is MS621FE,Need to welding. You can…
    www.ebay.de


    Bin zur Zeit dabei mir einen kleinen PicoMite Schlepptop aufzubauen...


    :)Franky

  • Hallo zusammen,


    es ist zwar schon was her, seit dieser Thread geöffnet wurde.

    Vielleicht kann mir jemand helfen.

    Ich habe mir den PicoMite selbst zusammengebaut und alles funktioniert soweit.

    Na ja, bis auf eine kleine Sache: Der Zugriff auf die SD-Karte ist ein Glücksspiel.

    Ich bekomme sehr oft die Fehlermeldungen:

    - SD Card not found

    - A hard error occured in the low level disl I/O Layer


    Dann funktioniert es irgendwann wieder und eben wieder nicht.

    Ich habe schon ein anderes SD-Card-Modul genommen und auch ein Kabelfehler kann ausgeschlossen werden.

    Ebenfalls habe ich einen10µF-Kondensator zwischen Vdd und Vss gesetzt, so wie es auf der offiziellen Internetseite beschrieben wurde.


    Vielleicht hat jemand noch eine Idee.


    Gruß


    Erik

  • Hallo Erik,

    hast Du es schon mal mit einer anderen Karte probiert? Du hast hoffentlich ein SD-Kartenmodul ohne Levelshifter genommen?

    Ich habe das Adafruit Modul wie hier verwendet: https://www.thebackshed.com/fo…ewTopic.php?TID=14417&P=1

    Auf dem Modul scheinen separate Pullups verbaut zu sein - bislang hatte ich keine Probleme damit.


    (Ich kann Dir erst wieder am Montag Abend antworten - bis dahin habe ich ab jetzt keinen Zugriff mehr auf das Forum...)


    :)Franky

  • Danke! Gruss, Erik

  • Hi,

    kannst Du ein Bild Deines Aufbau einstellen?
    Es kann auch folegndes sein:

    - Breadboard mit schlechten Kontakten (wenn Du aif einem Breadboard aufgebaut hast)

    - wackeliger Kontakt im SPI Bereich (vom Pico zum SDCard-Slot)

    dies habe ich bei Adaptern mit MicroSD-Slot gehabt, weil die nur eine Pinreihe haben

    meine Adapter mit echter SDCard-Groesse haben 2 Pinreihen

    evtl. zu lange Kabel zum SDCard Slot?

    Richtigen Strom zugefuehrt 3.3V<->5V - je nach Adapter gibt es nur 5V oder beides,
    denn wenn nur 3.3V auf den 5B Regulator kommen kann es zu wenig Strom geben

    - weitere Komponenten installiert die zu viel Strom ziehen?

  • Manchmal kann es auch an der Formatierung der SD Karte liegen. Ich hatte schon einige Systeme die erst nach Nutzung des SD Formatters mit der SD Karte zusammen spielten.



    Einfach mal ausprobieren.

    Gruß Torsten

    BFZ MFA, ZX80Core, AX81, ZX81, ZX81NU, Spectrum+, Harlequin, MSX VG8010, Amstrad NC100, Cambridge Z88, C64, C128D, Amiga 500 & 1200, Atari Portfolio, HP200LX, IBM PC5155, TP755c, TP755cx, T20, T41, T61, PS/2 (Model 40SX), PS/2E, Accura 101, Apple //e, Sharp PC1401 & PC1403H, TI59 m. PC-100c, HP48SX & HP48GX


    An die Person, die meine Schuhe versteckt hat, während ich auf der Hüpfburg war: Werd' erwachsen! :motz:


    ::matrix::

  • Manchmal kann es auch an der Formatierung der SD Karte liegen. Ich hatte schon einige Systeme die erst nach Nutzung des SD Formatters mit der SD Karte zusammen spielten.


    https://www.sdcard.org/downloads/formatter/


    Einfach mal ausprobieren.

    Danke für eure hilfreichen Kommentare, aber Franky hat den entscheidenden Hinweis gegeben. Ich habe ein SD-Karten-Modul mit integriertem Level-Shifter genutzt. Das war das Problem und ich Idiot hätte selbst drauf kommen müssen! Zur Lösung habe ich mir einfach eine Stiftleiste einen SD-Kartenadapter gelötet un die Anschlüsse direkt mit dem Board verbunden.


    Gruß


    Erik

  • Da es praktisch keine deutschsprachigen Foren zu PicoMite gibt,

    darf man hier seine Fregen stellen und auch hoffen Antworten zu bekommen?

    Du darfst gerne Fragen stellen. Wenn ich oder andere eine Antwort haben (oder finden) werden wir sicherlich auch antworten oder Dir versuchen eine gefundene Loesung zu uebersetzen.


    Hast Du schon mal die Uebersetzungfunktion von Google Chrome fuer Webseiten versucht?
    Ich konnte schon einige polnische, spanische, russische und asiatische Seiten wenigstens (meisten auch mehr als erwartet) lesen um eine Loesung ausfindig zu machen ;)

  • Ok, dann frage ich mal vorsichtig:

    Gibt es eine Umkehrfunktion zu "bin$()"?


    Mit bin$(12) wandle ich ich die 12 in den String "1100" um.

    Diesen String möchte ich ich nun wieder in die Zahl 12 zurückverwandeln.


    Val ("1100") ergibt leider 1100.

    In der PicoMite-Anleitung steht zwar, daß val() das Präfix "&B" akzeptiert, aber dieses Präfix kann man doch nur bei Zahl-Konstanten anwenden? Wie/wo soll das hier eingesetzt werden?


    Es gibt auch noch die Funktionen "bin2str$()" und "str2bin()", aber damit habe ich keine nachvollziehbaren Ergebnisse bekommen.

  • Val ("1100") ergibt leider 1100.

    In der PicoMite-Anleitung steht zwar, daß val() das Präfix "&B" akzeptiert, aber dieses Präfix kann man doch nur bei Zahl-Konstanten anwenden? Wie/wo soll das hier eingesetzt werden?

    Doch geht ;)

    Gerade mal ausprobiert:

    > LIST

    10 A=12

    20 B$=Bin$(A)

    30 Print A;" BINAER IST ";B$

    40 C$="&B"+B$

    50 D=Val(C$)

    60 Print B$;" IN DEZIMAL IST ";D

    70 Print "UND DIESES VAL AUCH ";Val("&B1100")

    >

    > RUN


    12 BINAER IST 1100

    1100 IN DEZIMAL IST 12

    UND DIESES VAL AUCH 12


    Das deutsche Handbuch (im Anhang) hast Du?

  • Es gibt seit gestern eine neue Version V5.07.07 auf https://geoffg.net/picomite.html


    guidol : Du weißt aber schon, dass Du auf die Zeilennummern verzichten kannst und das Programme dann schneller laufen sollen?

    Alv : Mit https://www.deepl.com/translator kannst Du super alles in beliebige Sprachen überstetzen lassen... - leider kann man in der kostenlosen Version nicht das ganze Manual auf einmal übersetzen lassen...


    :)Franky

  • guidol : Du weißt aber schon, dass Du auf die Zeilennummern verzichten kannst und das Programme dann schneller laufen sollen?

    Nein, weiss ich nicht ;) Allerdings bin ich mit GW-BASIC aufgewachsen und LIEBE Zeilennummern (und auch die RENUM-Funktion in GW-BASIC).
    Deshalb schreibe - ich persoenlich - BASIC Programme old-Style mit Zeilennummern ;)

    @Aly Selbst im neuen Handbuch steht zu den Befehlen, die wir genutzt haben, nichts neueres drin.

  • Es gibt seit gestern eine neue Version V5.07.07 auf https://geoffg.net/picomite.html

    Guter Hinweis, gleich mal gesaugt.


    Ich hoffe, es gibt auch bald mal eine offizielle Version von PicoMite W.

    Deshalb schreibe - ich persoenlich - BASIC Programme old-Style mit Zeilennummern ;)

    Immerhin erspart man sich damit das dauernde Neuausdenken von Labelnamen. :)



    Was das Übersetzen des Manuals angeht: Die deutsche Version stammt auch von einem Übersetzungsprogramm.


    Mein Englisch reicht noch aus, mich durch das Manual duchzukauen, aber wenn die Befehle da schon unklar beschrieben sind...


    Ich überlege mir, eine deutschsprachige Befehlsreferenz mit Beispielen aus meinen Erfahrungen zu erstellen...

    @Aly Selbst im neuen Handbuch steht zu den Befehlen, die wir genutzt haben, nichts neueres drin.

    Haben sie jetzt endlich den DATA-Befehl aufgenommen?


    Erklärung: DATA wird im Manual nirgends erwähnt.

    Da man bei DIM gleich Werte zuweisen kann, dachte ich, das dient als Ersatz für DATA, bis ich dann bei anderweitige Suche über den READ-Befehl stolperte...

  • Ich hoffe, es gibt auch bald mal eine offizielle Version von PicoMite W.

    Gibt's schon: https://geoffg.net/webmite.html

    ...auch für die VGA-Version gibt's eine neue Version: https://geoffg.net/picomitevga.html

    Was das Übersetzen des Manuals angeht: Die deutsche Version stammt auch von einem Übersetzungsprogramm.

    Nicht wirklich - das hat ein Bekannter (Stefan Hoch) von unserem FabLab übersetzt...


    :)Franky

  • Glatt übersehen.

    Damit rückt ein weiteres Projekt in ev. machbare Nähe.


    Kann man den Pico in einen USB-Speicherstick verwandeln, egal ob mit Onboard-USB-Anschluß oder externem Modul?


    Der Grund für diese Idee: Ich besitze einen 3D-Drucker, der kann leider nur mit USB-Sticks befüttert werden.

    Mit Raspberry Pi W unter Linux kann man einen USB-Speicherstick erstellen, der auch über WLan angesprochen werden kann. Leider habe ich das nie funktionstüchtig hinbekommen.

    Ev. könnte man das nochmal mit Pico W und PicoMite probieren?

  • Erklärung: DATA wird im Manual nirgends erwähnt.

    Da man bei DIM gleich Werte zuweisen kann, dachte ich, das dient als Ersatz für DATA, bis ich dann bei anderweitige Suche über den READ-Befehl stolperte...

    DATA im neuen Handbuch:


    d.h. DATA funktioniert hier - in Verbindung mit READ und RESTORE - genauso wie in GW-BASIC

    DATA ist nur fuer DATA-Lines und DIM ist fuer eine Dimensionierung von Variablen bzw. zuweisen geht dann so


    DIM A(5)=3 oder DIM A(B)=C


    Ansonsten die Nutzung von DATA, READ und RESTORE

    10 RESTORE 100

    20 READ A

    30 IF A=-1 THEN GOTO 200

    40 PRINT A

    50 GOTO 20

    100 DATA 1,2,3,4,5,6,7,8,9,-1

    200 END