Hier entsteht wieder ein etwas größeres Projekt.
Und zwar der Port vom MMBasic von Geoff Graham auf das
STM32F746-Discovery Board.
Hier der Link zur Quelle von MMBasic : MMBasic
und hier der Link zu seiner Color-Maximite-Seite : Maximite
(dort gibt es auch eine super Doku zu allem)
Die Alpha kann im Moment per USB-Keyboard
oder VCP bedient werden, Files von uSD oder USB
laden/speichern und der Editor kann benutzt werden.
(siehe Screenshots)
Der Befehlsumfang vom MMBasic ist sehr groß
(siehe Language-Manual von Geoff)
Ich portiere nach und nach die einzelnen Funktionen.
Bei allen Befehlen die noch nicht funktionieren,
wird eine Fehlermeldung auf dem Display angezeigt.
Also einfach ausprobieren was schon alles geht
oder in meinem PDF nachlesen (siehe Doku)
Da findet ihr eine Kurzbeschreibung.
Hier ein Link zu einem englischen Forums Thread : FORUM
Ich stelle während der Alpha und Beta-Phase
hier das BIN-File für das STM32F746-Disco Board rein.
Das muss per ST-Link Utility geflasht oder
per Drag&Drop mit einem Filebrowser auf das Board
kopiert werden.
Mit dem Sprite-Editor und Map-Konverter können
am PC Sprites und Maps erstellt werden.
Hinweis: Wenn jemand die Sourcen von diesem Projekt benötigt, dann muss er diese bei Geoffrey R Graham anfordern: http://mmbasic.com/source.html
Downloads :
Version : 1.07 / 20.02.2016
Hier das STM32F746 Bin-File und Doku zur MMBasic Version 1.07.
Doku zu MMBasic
Sprite Editor von Fabrice
Map Konverter von Fabrice
Polygon Editor von Fabrice
3DS ASC converter von Fabrice
Funktionen :
-Basic Grundfunktionen
-Graphic, Sprite, Polygon, 3D-Funktionen (DANKE an Fabrice !!)
-File-Funktionen
-FullScreen-Editor
-GPIO-Funktionen
-Multi-Touch-Funktionen
-Touch-Objekte
-Sound-Funktionen
-UART (COM1+COM2)
-SPI (SPI1+SPI2)
-I2c (I2C1)
Ein/Ausgabe über VCP (CN14) mit 115200bd (8N1)
Ausgabe auf dem Display vom Disco-Board
Eingabe per USB-Keyboard an CN13 (3 Keyboard Layouts)
Laufwerke (b:=uSD an CN3 und c:=USB-Drive an CN12)
Laden/speichern/löschen von Files
Erzeugen/löschen von Unterverzeichnissen
Anzeigen/ändern vom Direktory
FullScreen Editor-Mode
6 verschiedene Fonts
Sprites laden/anzeigen (color=ARGB1555)
Maps laden/anzeigen (color=ARGB1555)
JPG+BMP laden/anzeigen
Polygone laden/erstellen/anzeigen
3D-Objekte laden/anzeigen
23 GPIO-Pins (Digital-IO, Analog-IN)
MultiTouch (bis zu 5 Positionen)
WAVE-Files laden/abspielen (bis zu 4 gleichzeitig)
Zwei einstellbare UARTs (4800,9600,19200,38400,57600,115200)
Zwei einstellbare SPIs im Master-Mode (195 kHz bis 50MHz)
Eine einstellbare I2C im Master-Mode (10 kHz bis 400 kHz)
Settings im externen Flash speicherbar
Basic-Funktionen für : PCF8563, PCF8583, MPU6050, Joystick
Tastenbelegung :
ALT+F11 = umschalten vom Keyboard-Layout (QWERTZ, QWERTY, AZERTY)
ALT+F12 = Screenshot per VCP senden (Übertragung dauert ca. 30sek)
GPIO-Pins STM32F746-Disco:
01 = CN4/1 Arduino D0 (DIN,DOUT, COM1_RX) 02 = CN4/2 Arduino D1 (DIN,DOUT, COM1_TX) 03 = CN4/3 Arduino D2 (DIN,DOUT) 04 = CN4/4 Arduino D3 (DIN,DOUT) 05 = CN4/5 Arduino D4 (DIN,DOUT) 06 = CN4/6 Arduino D5 (DIN,DOUT) 07 = CN4/7 Arduino D6 (DIN,DOUT) 08 = CN4/8 Arduino D7 (DIN,DOUT) 09 = CN7/1 Arduino D8 (DIN,DOUT) 10 = CN7/2 Arduino D9 (DIN,DOUT) 11 = CN7/3 Arduino D10 (DIN,DOUT, SPI1_SS) 12 = CN7/4 Arduino D11 (DIN,DOUT, SPI1_MOSI) 13 = CN7/5 Arduino D12 (DIN,DOUT, SPI1_MISO) 14 = CN7/6 Arduino D13 User-LED (DIN,DOUT, SPI1_SCK) 15 = CN7/9 Arduino D14 (DIN,DOUT, I2C_SDA) 16 = CN7/10 Arduino D15 (DIN,DOUT, I2C_SCL) 17 = CN5/1 Arduino A0 (DIN,DOUT,AIN) 18 = CN5/2 Arduino A1 (DIN,DOUT,AIN) 19 = CN5/3 Arduino A2 (DIN,DOUT,AIN, COM2_CTS, SPI2_MOSI) 20 = CN5/4 Arduino A3 (DIN,DOUT,AIN, COM2_RTS, SPI2_MISO) 21 = CN5/5 Arduino A4 (DIN,DOUT,AIN, COM2_TX, SPI2_SCK) 22 = CN5/6 Arduino A5 (DIN,DOUT,AIN, COM2_RX, SPI2_SS) 23 = User-Button (DIN)
Basic-Test-Programme :
primes : berechnet die ersten 1000 Primzahlen und stoppt die Zeit dafür
gfxtst : demo der Grafik-Funktionen
QUAD : demo der zwei Grafik-Layer mit einem sich drehenden Rechteck
maptest : demo der Sprite+Map Funktionen
mtouch : demo vom Multitouch
obj3d : demo der 3D-Objekte
polygon3 : demo der Polygon Funktion
POLYGON6 : moving Polygon
blitter2 : demo der Blitter Funktion
gyro3 : demo vom MPU6050 am I2C-Bus
BUTTON1 : demo der Touch-Objekte
jpg2 : demo der JPG load funktion
Screenshot :
Demo-Videos bei YouTube:
Touch-Objekte video : LINK
RTC video : LINK
Polygon video : LINK
MPU6050 video : LINK
3d-objects video : LINK
Multitouch video : LINK
Sprite Demo:
Aktuell müssen wir Linien Nummer eingeben , erste wird dann Programm von USB Stick laden … so konnten wir alles in strukturierte Basic machen
Gut gemach wie immer !
Gruß.
Fabrice.
Für die erste 1000 primes , Optimierung von Compiler auf -o3 gibt nur noch 6996mS
Gruß.
Fabrice.
ok,
ich arbeite mit der “Debug” Version…die ist sowieso nochmal langsamer
als die “Release”
My config:
CN14>PuTTy
CN12>Flash drive 8GB
CN13>USB keyboard
CN3>uSD 8GB
Issues:
1. command CLS do not clearing screen on Putty
2. keyboard is QWERTZ (for someone why using QWERTY it’s difficult)
3. BackSpace not working on Putty
by the way, good job
thanks for the bug report. please download version A.24
1. clear screen on cls should work now.
2. Change Keyboard Layout with “ALT+F11″ to QWERTY
3. Switch the putty keyboard setting for the backspace key
from “Control-?” to “Control-H”
Another issue to ver.A24.
After finish any basic program which using colors and then start full screen editor, some lines on lcd are left in background color.
Above and under “ESC:exit F1:save ……”.
Regards
PS. Please could you publish update to Your libraries with some demo, how you using two filesystems with subdirectories.
yep no problem. give me a few days.
please download demo #08 “F746_Demo_UsbMscHost” from here : http://mikrocontroller.bplaced.net/wordpress/?page_id=5329
i have added two demo functions to “add” and “delete” a subdirectory. and read chans docu to fatfs.
You said “..hier das BIN-File für das STM32F746-Disco Board rein.
(das muss per ST-Link Utility geflasht werden)”
There is another way to flash new BIN file to memory without ST-Link Utility.
In Windows after install board drivers, you have a small HD (1MB) with two files: Mbed.htm and Details.txt. If you “copy” Bin file and “paste” it to that drive it will be saved to program flash. Easy and painless
yes, you are right. i add this way. can you verify the qwerty layout ?
i dont have a us-keyboard so its a “shot in the dark”.
QWERTY layout is ok.
thanks
Hallo ,
in Grafik Funktionen List kannst die addieren …
SetLayer , Showlayer , CopyLayer , Quad
und Gleich Sprite und Maps und wenn noch platz in der stm32f7 Flash platz ist mache in eine Konvertierung von alle meine 3D graphisch Funktion auch
Gruß.
Fabrice.
du bist zu schnell für mich man müsste ein komplette Doku über die neuen
Befehle schreiben, ist halt noch mehr Arbeit.
Are commands for serial, SPI and I2C comunication of MMBasic working ??
not yet…at the moment you can only use “print” to send a message to vcp.
but its on my list
update to last issue: “After finish any basic program which using colors and then start full screen editor, some lines on lcd are left in background color.
Above and under “ESC:exit F1:save ……”.
and no mater did you will use “cls black” or not it is still visible on edit command and changing background color after that command.
thanks, bugfix in A.26
new command : “color fg,bg”
any way to break runing program?
“10 goto 10″
at now only board reset working
its a bug in alpha version. you must readout keyboard periodically :
“10 k=keydown”
“20 goto 10″
then “CTRL+c” works
mayby something like in ZX Spectrum :
BREAK(CRTL+c or/and ESC) to break program and CONTINUE command to continue run???
command “option break 27″ configs the “esc” key as break button. and “continue” is a command but throws an error at the moment.
In full screen editor cursor just “OR” some fonts.
Change the font spacing to have a room for the cursor.
It will decrease screeen capacity, but it will look much better.
It’s just a visual effect.
it happens at column “zero” of the screen only
its a feature of MMBasic and a minor problem at the moment.
When You planning to :
1. Implement SPI, I2C, Serial comunication functions?( for pins available on Arduino connectors)
2. Implement “setpin” interrupt (INTH, INTL, INTB)
3. Implement LIBRARY LOAD file$ and LIBRARY UNLOAD $file
4. Use SDRAM (except “lcd buffer” of course) for basic programs and libraries (aprox 7.75 MBytes free for use)
5. Use some file name like “autorun.bas” for files to automatically run after system start.
New features :
1. precompiled library files for faster run (it will be a lot of work to do)
2. Fully implement “CTRL-C” to break running program without “keydown” reading
It will be very useful for me and other users who planning to use MMBasic
to control additional hardware.
I have change my plans and i will use MMBasic for my project.
CTRL+c should work in actual Version A.33
I have just made an account at “http://www.thebackshed.com/”
and waiting for confirmation.
Its easier to post news and receive bugreports in a forum.
GPIO and communication is a big topic but it will work
sooner or later
Fabrice is using a big amount of RAM for Graphic and Sprites
(ARGB1555 background picture with 800×600 Pixel needs 1Mbyte
but JPG is also working and needs much less ram.
Perhaps we can make a “priority list” in the forum to
see whats comming next.
@Phantomnet : you said :
4. Use SDRAM (except “lcd buffer” of course) for basic programs and libraries (aprox 7.75 MBytes free for use)
Do not forget that sdram run at 100Mhz …. it’s the halve than the cpu SRAM
Actually , Sprite , map , video buffer use SDRAM. Music modules , 3D Graphics and
other stuff will use SDRAM too for keep free the SRAM.
And , allot of Fast SRAM will be available due to that … he he .
Actually it is so :
Still available in SDRAM : 8.388.608 – 5.809.364 = 2.579.244 bytes
This is after we allocated 3 video buffer , 500 Sprites , 1.000.000 pixels for Map , 1.000.000 bytes for Music module , and 1.000.000 bytes for 3D Graphics.
If it is really needed , I’m sure we found a way to use some of the more than 2Mb rest for MMBasic variable and/or Library.
Cheers.
alpha version is to include all the major functions.
in beta we can made improvements.
P.S. COM1+COM2 are working with fixed settings
and coming soon.
1.”Memory” command showing now more clearly available memory amount.
2. COMs ports are workin good.
2.46Mbytes its a lot of memory and i think it will be much better then 122Kbytes
for libraries.
Please let us know when forum be ready.
I promise that i’ll be very active user
Vielen Dank dafür.
forum thread is here :
http://www.thebackshed.com/Forum/forum_posts.asp?TID=7969&PN=1
p.s. rs232 is ok, graphic is buggy now
if i’ll write :
10 color red,black
20 cls 0
30 color blue,white
40 print “anything”
it should to be printed on lcd as fore color: blue and background color: white
but is not?!
lines 10 and 20 doing their job but line 30 isnt
should be fixed in Version A36
the command “color” in a running basic program
change the color until the end of the program.
if you want to change the color of the editor
and input promt use the “color” command at the promt.
It’s very cool project, programming could be simplified. If there are many DSP functions in C, and they have to be used in a project. Is it possible to be built in MMbasic?
if you work with the source code you can add every c-function you want
and call it from the basic program. but at the moment (in alpha state) we only generates binary files. Here you must use what we added
Lieber Fabrice!
Herzlichen Glückwunsch und vielen Dank für die gute Arbeit.
Will der Veröffentlichung der Quelle, denn ich will an die Ethernet IoT Projekte drehen, um zu tun.
Autorun.bas Konto ist das Betriebssystem ?
Grüße, George
@sgyuri :
Ich habe Graphik Sache programmiert.
Uwe ist der Spezialist für die ändere komische Dings
Gruß.