Hi, wollte hier nur eine Info hinterlassen, für all diejenige, die Spass an Basic Interpretern/Editoren haben. ich (und Fabrice) sind gerade dabei den MMBasic-Interpreter von Geoff Graham auf dem STM32F746 zu portieren. Am Ende soll alles komplett autark auf dem Board laufen, mit USB-Tastatur und Fullscreen-Editor. Im Moment ist es noch eine Alpha die per VCP über ein Terminal bedient werden muss aber alle Basic-Grundbefehle funktionieren und die Grafik-Befehle (Line,Circle,Ellipse,Triangle usw) werden auf dem 4,3Zoll LCD angezeigt. Als Speichermedium kann eine uSD-Karte oder ein USB-Stick benutzt werden (wobei der USB-Stick bei mir noch etwas buggy ist) Zur Eingabe kann auch eine USB-Tastatur angeschlossen werden. Hier der Link zur Projektseite (Alpha Tester werden noch gesucht :-) http://mikrocontroller.bplaced.net/wordpress/?page_id=5487 Gruss Uwe
:
Bearbeitet durch User
auch wenn die Resonanz=0 ist :-) hier ein 15sek "kurzes" Grafik-Demo zum aktuellen Stand nach einem Monat : https://youtu.be/5g3-ztufoNM und das Basic-Programm dazu :
1 | Option usb off |
2 | |
3 | nbsprite = 20 |
4 | Dim sprx(nbsprite) |
5 | Dim spry(nbsprite) |
6 | Dim sprdir(nbsprite) |
7 | Dim actspr(nbsprite) |
8 | dirLstart = 0 |
9 | dirLstop = 13 |
10 | dirRstart = 14 |
11 | dirRstop = 27 |
12 | cnt = 0 |
13 | x = 0 |
14 | y = 0 |
15 | r = 150 |
16 | |
17 | raddeg = 3.14159 / 180 |
18 | |
19 | For a = 1 To nbsprite |
20 | sprx(a) = (IntRnd Mod 400) + 20 |
21 | spry(a) = (IntRnd Mod 200) + 20 |
22 | If (IntRnd Mod 40) > 20 Then |
23 | sprdir(a) = 1 |
24 | actspr(a) = dirRstart |
25 | Else |
26 | sprdir(a) = 0 |
27 | actspr(a) = dirLstart |
28 | EndIf |
29 | Next a |
30 | |
31 | SetLayer 0 |
32 | Cls 0 |
33 | SetLayer 1 |
34 | Cls 0 |
35 | SetLayer 0 |
36 | ShowLayer 0 |
37 | ActL = 0 |
38 | Drive "b:" |
39 | Sprite Load "turri.bin" |
40 | Map Load "sunny.map" |
41 | |
42 | Do |
43 | |
44 | For a = 1 To nbsprite |
45 | If sprdir(a) = 1 Then |
46 | sprx(a) = sprx(a) + 2 |
47 | If sprx(a) >= MM.HRes Then |
48 | sprdir(a) = 0 |
49 | actspr(a) = dirLstart |
50 | Else |
51 | actspr(a) = actspr(a) + 1 |
52 | If actspr(a) > dirRstop Then |
53 | actspr(a) = dirRstart |
54 | EndIf |
55 | EndIf |
56 | Else |
57 | sprx(a) = sprx(a) - 2 |
58 | If sprx(a) <= 0 Then |
59 | sprdir(a) = 1 |
60 | actspr(a) = dirRstart |
61 | Else |
62 | actspr(a) = actspr(a) + 1 |
63 | If actspr(a) > dirLstop Then |
64 | actspr(a) = dirLstart |
65 | EndIf |
66 | EndIf |
67 | EndIf |
68 | Sprite set actspr(a),a |
69 | Next a |
70 | |
71 | x = Int(Cos(cnt * raddeg) * r) - 150 |
72 | y = Int(Sin(cnt * raddeg) * r) - 150 |
73 | |
74 | If ActL = 0 Then |
75 | SetLayer 1 |
76 | Cls 0 |
77 | Map On 0,0,800,600,x,y,0,0 |
78 | For a = 1 To nbsprite |
79 | Sprite on a,sprx(a),spry(a) |
80 | Next a |
81 | ShowLayer 1 |
82 | ActL = 1 |
83 | Else |
84 | SetLayer 0 |
85 | Cls 0 |
86 | Map On 0,0,800,600,x,y,0,0 |
87 | For a = 1 To nbsprite |
88 | Sprite on a,sprx(a),spry(a) |
89 | Next a |
90 | ShowLayer 0 |
91 | ActL = 0 |
92 | EndIf |
93 | |
94 | cnt = cnt + 2 |
95 | If cnt > 359 Then |
96 | cnt = 0 |
97 | EndIf |
98 | |
99 | |
100 | key=KeyDown |
101 | |
102 | Loop |
Uwe B. schrieb: > auch wenn die Resonanz=0 ist :-) Basic auf dem µC hat vermutlich eine eher kleine Gemeinde. Von der jedes Mitglied auch noch einen eigenen Basic-Interpreter auf seinen µC gebracht hat. Also quasi eine Gemeinde, in der jeder predigt und keiner zuhört. Aber die Grafik-Funktionen sehen gut gelungen aus. Hut ab! Uwe B. schrieb: > Sprite Load "turri.bin" Ich hab's geahnt :-)
Walter T. schrieb: > Uwe B. schrieb: >> auch wenn die Resonanz=0 ist :-) > > Basic auf dem µC hat vermutlich eine eher kleine Gemeinde. Bei mir wäre ja Resonanz vorhanden, zumal ich die Grundfunktionen schon auf einen ..F407 portiert hatte. Es sollte eine kleine, feine Ein-Chip-Lösung werden, die wie das Original (Colour Maximite) ein 4,3"-TFT mit einfacher Farbdarstellung und vielen Schnittstellen bietet. Für einen stand-alone-Rechner für eigene Anwendungen, dessen Programm im Zielsystem programmiert werden kann und trotz BASIC noch recht schnell arbeitet, konnte ich mir eine Zielgruppe vorstellen. Die Resonanz lag auch bei <= 0 ;-) ABER: für meine Begriffe ist das ..F746-Discovery-Board nicht dafür geeignet, MMBASIC sinnvoll zu implementieren. Es fehlen die vielen IO-Pins und fertigen Schnittstellen (angefangen bei RS232), die es universell verwendbar machen würden. Irgendwelche Grafikspielereien oder bunte Bilder bekommt man man einem RPi sicherlich noch besser gebacken. Ich denke, daß Du erst dann Resonanz bekommen wirst, wenn Du eine angepaßte, gebrauchstfertige Hardware anbietest. Dabei darf diese aber nicht mehr als € 20 kosten (inkl. TFT natürlich ;-). So sind die Leute leider gepolt!
Walter T. schrieb: > > Aber die Grafik-Funktionen sehen gut gelungen aus. Hut ab! > bedank dich bei Fabrice (ab und zu im Forum unterwegs) der kümmert sich um die Grafik, ich um den Rest. m.n. schrieb: > Es fehlen die vielen > IO-Pins und fertigen Schnittstellen (angefangen bei RS232), die es > universell verwendbar machen würden. das F746-Disco Board hat 22 freie IO-Pins auf 2,54mm Steckverbinder (im Arduino Format) das sollte reichen. Da liegen auch RS232, I2C, SPI und Analoge Pins drauf Digital-IO funktioinert auch schon aber das MMBasic vom Maximite ist sehr umfangreich und es dauert bis ich das alles umgestrickt habe. Und 50 EUR für das Board ist ein TOP Preis, den man durch selberbauen niemals erreichen kann. Aber schön das es doch ein paar Leute gibt die das Thema verfolgen. Gruss Uwe
Eine OT-Frage an UWE: - das Discovery F407 stellte bei >3 DMA(FSMC;SDIO;DCMI) weitere Zugriffe darauf ein. Ist das jetzt, beim F746 Discovery, gelöst?
e-d schrieb: > Eine OT-Frage an UWE: > - das Discovery F407 stellte bei >3 DMA(FSMC;SDIO;DCMI) weitere Zugriffe > darauf ein. > Ist das jetzt, beim F746 Discovery, gelöst? uhhh, keine Ahnung...hab ich noch nicht ausprobiert und auch nichts im Errata-Sheet darüber gelesen. aber für das Display ist jetzt ein TFT-Controller mit unabhängigem DMA vorhanden, das entspannt einige Dinge.
Ja, wäre aber interessant! Dann würde ich auch weitermachen dort, wo ich damals frustriert aufgeben musste: 'Ein sainsmart 3,4" Display zeigt Vorschaubild von OV??? - Kamera und speichert bei Interupt(verkürztes SPI auf Touch-IC) durch "Touch" das Bild auf SD-Card ab.' Irgentwie lies sich DCMI nicht stoppen. Ist schon seeehr lange her ..
Uwe B. schrieb: > m.n. schrieb: >> Es fehlen die vielen >> IO-Pins und fertigen Schnittstellen (angefangen bei RS232), die es >> universell verwendbar machen würden. > > das F746-Disco Board hat 22 freie IO-Pins auf 2,54mm Steckverbinder > (im Arduino Format) das sollte reichen Das sehe ich anders. 22 Pins klingt viel, bezogen auf diesen µC und dessen Leistungsfähigkeit sind das aber nur irgendwelche Port-Krümel. Der eigentliche Kuchen ist ganz woanders gegessen worden. Ich würde zumindest die Pins eines Timers 1 oder 8 erwarten, oder ein paar zusammenhängende Pins eines Ports, wie es beim ursprünglichen Arduino 328 der Fall ist. Wer zum Beispiel 'nur' einen BLDC-Motor ansteuern möchte, hat schon Tränen in den Augen. Batteriepufferung von RTC und internem RAM? Fehlanzeige. Das paßt Alles nicht zusammen! Oder ich frage einfach einmal: Was soll man denn mit sowenig µC-Pins überhaupt anstellen? Eindraht Temperatursensor auslesen und bunt umrandet anzeigen? Das kann es doch nicht sein.
m.n. schrieb: > Wer zum Beispiel 'nur' einen BLDC-Motor ansteuern möchte, hat schon > Tränen in den Augen. Batteriepufferung von RTC und internem RAM? > Fehlanzeige. > Das paßt Alles nicht zusammen! du schreibst das so, wie wenn es ein System gäbe das alle möglichen Hardware Komponenten zu 100% ohne Software-/Hardwareaufwand unterstützen würde so ein System gibt es leider nicht und ich habe auch nicht vor eines zu bauen aber es bleibt dir unbenommen eines für deine Zwecke zu entwerfen Ich benutze das was ich als Hardware zur Verfügung habe und komme bis jetzt sehr gut damit aus. Und ich habe zwar nicht danach gesucht, könnte aber wetten das es ein BLDC-Shield für den Arduino gibt. Damit liegt es nur noch an der Softwareumsetzung für den F7 und wer dabei Tränen in die Augen bekommt, kauft sich halt einen Arduino :-)
Uwe B. schrieb: > du schreibst das so, wie wenn es ein System gäbe das alle > möglichen Hardware Komponenten zu 100% ohne Software-/Hardwareaufwand > unterstützen würde Das schreibe ich nicht! Ich finde es nur schade, daß die viele Arbeit, die Du Dir machst, von der Hardware nicht adäquat unterstützt wird. Es reicht eben nicht, irgendein Board auf den Arduino Steckplatz zu setzen und mit peek() und poke() anzusprechen. Und wenn man eine passende Funktion MMBASIC intern implementieren möchte, müßte man den PIC32-Quellcode erneut auf eigene Faust anpassen. Oder veröffentlichst Du die Quellen dazu? Darfst Du das überhaupt? Und egal, welches Zusatzboard gesteckt wird, RTC und internes RAM werden nach wie vor nicht batteriegepuffert. Uwe B. schrieb: > Ich benutze das was ich als Hardware zur Verfügung habe > und komme bis jetzt sehr gut damit aus. Dann nenn doch bitte Beispiele, die die Leistung des µC und des Boards auch nur zu einem zweistelligen Prozentteil ausnutzen. Vielleicht finden sich dann mehr Interessenten für das Projekt.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.