Im Rahmen eines Spaßwettbewerbes um den "billigsten BASIC-Computer"
aller Zeiten entstanden:
"Für die einen ist es ein Microcontroller, für die anderen der
wahrscheinlich billigste BASIC-Computer der Welt"
Mein Basiccomputer läuft in einem STM8S103 Minimumboard aus China (2
Stück für 1,53):
Ebay-Artikel Nr. 272151798778
und ist an eine CH340G USB2RS232 angebunden:
Ebay-Artikel Nr. 272258438888
Wenn man den "Mengenrabatt" aus China mitnimmt, kostet ein
"BASIC-Computer" 1,65@ (siehe README.TXT).
Das Projekt ist als reines Editor / Make Projekt unter Linux entstanden
und wird mit dem SDCC 3.50 übersetzt.
Im Zip-Archiv sind sämtliche Dateien enthalten, um die Firmware zu
erstellen.
Im Ordner basict das Makefile aufrufen mit:
make all
(Um die Firmware zu erstellen)
make flash
(Um die Firmware mittels eines ST-Link v2 zu übertragen).
Vllt. mache ich auch nur so aus Gag auch noch eine Miniplatine für
diesen Zwerg.
Einen Schaltplan habe ich "nur" im Ascii-Format erstellt (ist auch in
der readme.txt enthalten):
Außerdem vllt. ganz praktisch für manche: Es sind Libraries zur
Initialisierung des STM8 sowie für GPIO Behandlung und serielle
Schnittstelle im "Paket" enthalten.
Vielleicht hat ja jemand Spaß damit!
Gruß Ralph
PS: :-) die Anführungszeichen nicht übersehen, das ganze war ein
Spaßprojekt aber irgendwie wars lustig und nun versuche ich etwas in der
Art für einen STM32F103 zu machen (nur in etwas besser und mit mehr
Möglichkeiten)
Tolles Projekt!
Wenn jetzt noch der Funktionsumfang von Micromite [1] auf dem STM32
erreicht wird, dann finden sich sicherlich auch einige ernsthafte
Nutzer.
[1] http://geoffg.net/MicromiteMX170.html
Joe G. schrieb:> Wenn jetzt noch der Funktionsumfang von Micromite [1] auf dem STM32> erreicht wird
... den gibts schon für einen STM32F746
Allerdings ist mir dieser Controller dann für meinen Gebrauch eine
Nummer zu groß, zur Verfügung hab ich hier nur
-F030 (16k)
-L050 (64k)
-F103 (mit 64k und 128k)
-F401
-F429
Ich versuch mich gerade am F030, aber der ist mit seinen 16k schon sehr
dünn bestückt, mal sehen ob das mit dem L050 oder F103 was wird. Das
soll ja ein Spaßprojekt sein und außerdem soll das noch von Hand auf
eine Platine gelötet werden können, bei den Cortex M4 kann ich das nicht
und bin immer auf Boards angewiesen (und deswegen mag ich sie im
Normalgebrauch nicht, auch wenn das, was die Dinger können absolut irre
ist)
Moin,
nett!
Ralph S. schrieb:> Im Zip-Archiv sind sämtliche Dateien enthalten, um die Firmware zu
Fast. st8readihx ist nur als 32-bit Linux-Binary enthalten. Das mag
nicht auf meinem 64-bittigen Linux. Kannst du davon noch den Quelltext
dazutun? Ich nehme an, das macht nicht viel.
Auch sonst hättest du IMHO die Binaries von picocom und stm8flash aus
dem ZIP-Archiv weglassen können. Das sind ja Standard-Tools.
Ich spiele gerade mit einem STM32F103 Mini-Board herum. Das würde sich
vermutlich auch gut für das BASIC eignen. Es hat mehr Pins und der µC
kann direkt USB. Wenn ich mal ein bißchen Muße hab, gehe ich das
vielleicht an :)
Hier ein kleiner unschöner Port auf den stm32f030f4.
load und save hab ich rauskommentiert und sonst einfach nur gpio und
usart geändert. Scheint zu tun, hat aber noch viel optimierungspotential
Das Schöne ist, dadurch dass die stm32's einen integrierten Bootloader
haben, kann man sich den ST-Link sparen.
Wenn man jetzt noch sich noch statt tssop16 breakout boards für den
ch430g, tssop20 breakout boards für beide kaufen, beim ch430g einfach
absägt, kann man jetzt 10 breakout boards und 10 stm32f030f4 kaufen und
man hat 9 Basiccomputer für nahzu den selben Preis wie die zwei auf dem
stm8 basierten.
Man hat leider eben nicht so ein schönes Board.
(Quarz wird auch nicht mehr benötigt)
> "Für die einen ist es ein Microcontroller, für die anderen der> wahrscheinlich billigste BASIC-Computer der Welt">> Mein Basiccomputer läuft in einem STM8S103 Minimumboard aus China (2> Stück für 1,53):
Nett und ich Gratuliere zum Erfolg!
Jedoch: genau so billig kam mir BASIC schon vor über 3X Jahre vor, das
war am Anfang meiner Pubertät...
Axel S. schrieb:> Fast. st8readihx ist nur als 32-bit Linux-Binary enthalten. Das mag> nicht auf meinem 64-bittigen Linux. Kannst du davon noch den Quelltext> dazutun? Ich nehme an, das macht nicht viel.
... ist hier angehängt, aber das Programm hätte dennoch übersetzt werden
können, nur die "Statusanzeige" wieviel Speicher im Flash belegt wird,
wird dann durch eine "Fehlermeldung" ersetzt.
Übersetzen von st8readihx.c mit:
1
gcc st8readihx.c -Os -o st8readihx
Axel S. schrieb:> Auch sonst hättest du IMHO die Binaries von picocom und stm8flash aus> dem ZIP-Archiv weglassen können.
... dem PicoCom hab ich halt mein "Retrogrün" gegeben wie das bei
uralten Terminals der Fall war... und eine Anzeige dafür mit welchen
Parametern das gestartet ist.
Axel S. schrieb:> Das mag> nicht auf meinem 64-bittigen Linux.
Ich sollte es mir zur Gewohnheit machen, Dinge entweder nur als Source
oder in beiden Varianten , 32 und 64 Bit, zugänglich zu machen.
David Sawatzke schrieb:> Hier ein kleiner unschöner Port auf den stm32f030f4.
Schmunzeln muss, auf dem f030 hatte ich das schon und habe das für den
STM8 abgespeckt.
Mir gefällt es grundsätzlich nicht so recht, weil ich etwas mit
Stringvariablen und und Gleitkommazahlen haben mag.
Auf dem F030 hatte ich zuerst den Speicherbereich von 14k bis 16k
reserviert und dann im eigenen Flash das Programm abgelegt. Aber erstens
ist der Flash nicht sooooo oft beschreibbar (lt. Datenblatt nur 1000
mal) und zweitens hab ich dann weitere SCALL Funktionen hinzugefügt
gehabt. Dafür hab ich dem Dingelchen ein 24C128 EEProm, Anschluss für
N5510 84x48 oder SSD1306 Display und einen PCF8574 I/O Baustein
spendiert.
Und muss feststellen, ich hätte das ganze gerne besser in einem größeren
STM32 (bin ich am Überlegen ob ich so viel Zeit opfern mag, das hier war
ja ein kleiner Wettbewerb)
David Sawatzke schrieb:> man hat 9 Basiccomputer für nahzu den selben Preis wie die zwei auf dem> stm8 basierten.
... die Sachen hab ich ja nicht extra gekauft, die hab ich eh hier (STM8
und STM32f030 auch als blanke Chips). Ich versuch mich mal just for fun
an einer Platine (die über Toner-Transfer gemacht sein soll). Werde ich
sehen ob das mit TSSOP20 noch machbar ist.
nach BASIC fängt das Leben an schrieb:> Jedoch: genau so billig kam mir BASIC schon vor über 3X Jahre vor, das> war am Anfang meiner Pubertät...
Ich auch ... aber nostalgische Dinge ohne wirklichen Nutzen sind
manchmal einfach herrlich.
Ich würde gerne wissen, ob es notwendig ist, einen Bootloader zu
installieren, obwohl ich denke, dass das Kompilieren nicht die Option
-flto enthält, da es den glücklichen Fehler gibt ....
... ich verstehe die Frage nicht so wirklich! Ich habe zwar einen
Bootloader für den STM8S103 geschrieben, aber das "Basic-Projekt" darf
diesen explizit nicht installiert haben, da der Flash-Speicher extrem
knapp ist.
Was man machen könnte wäre, einen I/O Pin beim Start abzufragen und je
nach dem welcher Pegel dieser führt, das abgelegte Basic-Programm
automatisch zu starten.
Verzeih mir mein Deutsch ist nicht gut :)
- Das Projekt stm8 und stm32 brauchen Loader?
- Muss Glas verwendet werden?
Vielen Dank im Voraus ist meine erste Inkunition in der Welt von STM,
ich komme von Arduino und ich möchte diesen Code migrieren
https://github.com/monsonite/SIMPL/blob/master/SIMPLEX_2_MSP430FR2433_14.c
The linked project has nothing to do with the basic-interpreter here. If
you want to migrate the linked project you should have to learn how to
work with microcontrollers and how to flash the devices.
STM8 have nothing to do with STM32 (8-Bit vs. 32-Bit). For a short
reading of the linked project, the sources would compile to STM32 MCU'S
so you have to learn how to flash the device.
Perhaps you've get a STM32F103 Bluepill: search the internet how to
flash it !
Hallo, könnten Sie eine Änderung vornehmen, um einen geerdeten
Eingangspin für die Autorun-Funktion zu verwenden?
Könnte mir jemand helfen?
Danke schön!
Ach herjeh, nach 6 Jahren eine Anfrage. Grundsätzlich müßte das machbar
sein, wenn man einen GPIO der mittels IN/OUT gesteuert wird vom
Interpreter entfernt und diesen für einen Autorun-Pin verwendet.
Allerdings weiß ich noch, dass der Flashspeicherplatz extrem ausgereizt
war und ich nicht weiß, ob das im Code noch unterbringbar ist.
Camusso N. schrieb:> um einen geerdeten> Eingangspin für die Autorun-Funktion zu verwenden
Hier ist wohl ein Eingangspin gemeint, der bei Anliegen eines 0 Signals
(Pin auf Masse) das gespeicherte Programm starten soll, oder?
Soll der Chip mit dem Interpreter tatsächlich in einer Schaltung so
eingesetzt werden ist vllt. grundsätzlich zu überlegen, ob ein anderer
Chip hierfür nicht besser eingesetzt werden kann, da der STM8S103 wohl
EOL ist.
Tut mir leid, aber ich habe Ihr Projekt erst jetzt gesehen, deshalb
schreibe ich Ihnen jetzt. Wenn es möglich wäre, wäre das natürlich eine
schöne Sache. Ich habe versucht, den Code ein wenig zu verstehen, aber
ich habe nicht viel Erfahrung damit SDCC, also suche ich nach
Möglichkeit Hilfe, ich würde mich für diese Schaltung interessieren,
wenn sie machbar ist.
Danke .
... sodele, jetzt habe ich mich doch hingesetzt und den Interpreter
überarbeitet und an die Gegebenheiten die ich in meinem Setup seither
geändert habe angepasst.
Das ganze ist im Anhang verfügbar und ein Autostartpin ist mit PA1
gegeben: Eine logische 0 (Verbindung zu GND) wird ein im EEProm
gespeichertes Programm automatisch starten.
Die bisherige Funktion SCALL heißt jetzt FUNC und das ganze wurde so
zusammengequetscht, dass es noch eine zweite Funktion bei FUNC gibt:
Ausgabe eines gesamten Bytes auf den I/O Pins 0 bis 8.
Programme und Quellen sowie Dokumentation und einen Ascii-Schaltplan
sind im Anhang.
---------------------------------------------
Sollte tatsächlich der Bedarf nach einem minimalistischen
Basic-Interpreter bestehen, der dann noch preiswerter als STM8S103 ist
(8€ für 10 Stck), kann ich die Funktionalität auch in einem STM32F030 im
20 pol. TSSOP machen (der dann 6€ für 10 Stck. kostet) und zum einen
schneller läuft, Erweiterungen noch möglich sind (weil größerer
Flashspeicher) und auch für das Basicprogramm mehr Platz zur Verfügung
hat...
Hrmpf, eigentlich wollte ich ja meine "Spielesammlung" in einem STM32F4
weiter betreiben, aber man lässt sich ja so leicht ablenken (hat aber
dennoch Spaß gemacht).
@Camusso: wenn Du das wirklich verwenden magst => viel Spaß damit !
HALLO! Was für eine Überraschung, dass Sie mir heute eine große Hilfe
geleistet haben. Ich werde die Funktion des neuen Interpreters
ausprobieren. Natürlich hätte ich auch gerne einen anderen Interpreter
für ST32F4, noch günstiger, danke für Ihre Arbeit! Wenn ich etwas
schulde, sagen Sie mir, dass ich einen Beitrag leisten werde.
Frohe Weihnachten!
Hallo, ich habe mir das ganze Projekt angesehen, aber leider habe ich
die Datei tbasic.ihx zum Laden in den Mikrocontroller nicht gefunden,
ich bin nicht sehr kompetent im Kompilieren, ich habe die
Windows-Version und kenne die richtige nicht Kompilierungssyntax, wenn
Sie mir helfen oder mir die .ihx-Datei senden können.
Tausend Dank!
Camusso N. schrieb:> ich habe die> Windows-Version und kenne die richtige nicht Kompilierungssyntax, wenn> Sie mir helfen oder mir die .ihx-Datei senden können.
Das Projekt besteht aus mehr als nur der Datei tbasic.c. Deshalb ist das
ganze ein der Verzeichnisstruktur gemacht, wie es gemacht ist. tbasic.c
benötigt noch andere Dateien, die übersetzt und dann zu einem Programm
zusammen gelinkt wird.
Die gesamten Abläufe, wie das kompiliert und gelinkt wird sind in einem
sogenannten Makefile zusammengefasst. Das Makefile wird von einem
Programm namens "make" aufgerufen. Standardmäßig ist dieses jedoch bei
Windows nicht installiert.
Sobald Programme einen gewissen Umfang über ein einfaches Blinkprogramm
hinaus geht, ist es normal, dass ein Gesamtprojekt aus mehreren
Quelldateien besteht.
Hier sind es die Dateien:
1
include --------- stm8s.h
2
stm8_init.h
3
stm8_gpio.h
4
stm8_systimer.h
5
6
src ------------- stm8_systimer.c
7
stm8_init
Ein Compilergang für eine einzelne Datei reicht hier natürlich nicht
aus. Du solltest Dich von daher bei C (oder auch C++) mit grundlegenden
Dingen wie Compiler, Linker und Präprozessor auseinandersetzen (so Du
denn in C / C++ programmieren magst).
Wie dem auch sei, hänge ich hier die compilierte tbasic.ihx mit an.
Ich hoffe, dass Du unter Windwos eine serielle Verbindung zum
Interpreter hinbekommst, das Protokoll der Verbindung ist:
19200 bd
1 Startbit
8 Datenbits
1 Stopbit
keine Parität
Ralph S. schrieb:> Sollte tatsächlich der Bedarf nach einem minimalistischen> Basic-Interpreter bestehen, der dann noch preiswerter als STM8S103 ist> (8€ für 10 Stck)
Du könntest Dir den CH32V003 ansehen. Das ist ein RISC-V-Controller, der
mit 2 kiB RAM und 16 kiB Flash daherkommt und mit bis zu 48 MHz Takt
betrieben werden kann. Den gibts im 20poligen Gehäuse (TSSOP und QFN),
aber auch im 16- oder nur 8-poligen Gehäuse (SO-16 & SO-8), was für
viele einfacher zu löten ist.
Die Peripherie ist sehr nah an der Peripherie der kleinen ARMe von STM
orentiert. Praktisch ist, daß man den CH32V003 auch mit 5V betreiben
kann, was viele Probleme mit Pegelwandlern & Co. vermeiden hilft.
Programmierung erfolgt über eine einzelne Leitung.
Und den CH32V003 gibt es im 50er-Pack für 13.70 EUR incl. Versand.
https://www.aliexpress.com/item/1005005036714708.html
(hier "Color: 50Pcs CH32V003F4P6" auswählen)
Das ist ein vom Hersteller WCH höchstselbst betriebener Shop auf
aliexpress.
Dort gibt es auch das nötige Programmierinterface und auch eine
Demoplatine:
https://www.aliexpress.com/item/1005004895791296.html
Nochmals vielen Dank, dass Sie mir die kompilierte Datei geschickt
haben. Ich bin neugierig auf diesen neuen CH32V003. Er ist wirklich
günstig. Es wäre sehr schön, auch einen speziellen Basisinterpreter
dafür zu haben, um eine Alternative für einen kleinen Minimalcomputer
mit der Basisversion zu haben.
Vielen Dank, ich werde die Entwicklung des Projekts mit großem Interesse
verfolgen.
Harald K. schrieb:> Und den CH32V003 gibt es im 50er-Pack für 13.70 EUR incl. Versand.>> https://www.aliexpress.com/item/1005005036714708.html>> (hier "Color: 50Pcs CH32V003F4P6" auswählen)>> Das ist ein vom Hersteller WCH höchstselbst betriebener Shop auf> aliexpress.>> Dort gibt es auch das nötige Programmierinterface und auch eine> Demoplatine:>> https://www.aliexpress.com/item/1005004895791296.html
Von diesem Controller habe ich schon gelesen, aber ich werde da wohl
nicht darauf einsteigen. Zum einen habe ich schon wirklich genügend
Plattformen für Mikrocontroller, zum anderen habe ich schon satt
gekämpft mit dem Bootloader des CH552 von WCH bis das funktioniert hat
(ohne das zu benötigen, MCS-51 werde ich wohl nur bei wiederaufleben
noch historischer Projekte verwenden) und zum anderen braucht es dann
wieder eben das notwendige Programmierinterface. Außerdem kaufe ich bei
Aliexpress nichts, weil dort immer eine Kreditkarte verlangt wird und
ich mich bis in mein hohes Alter hinein bis heute erfolgreich gegen eine
Kreditkarte gewehrt habe.
:-) aber danke für den Link
Ralph S. schrieb:> zum anderen habe ich schon satt> gekämpft mit dem Bootloader des CH552 von WCH bis das funktioniert hat
Was hat das jetzt mit einem RISC-V-µC zu tun?
Bootloader gibts für den übrigens auch, denn es gibt schon eine
Integration in die "Arduino"-Welt.
Ralph S. schrieb:> Außerdem kaufe ich bei> Aliexpress nichts, weil dort immer eine Kreditkarte verlangt wird und> ich mich bis in mein hohes Alter hinein bis heute erfolgreich gegen eine> Kreditkarte gewehrt habe.
Ach? Die nehmen auch PayPal. Funktioniert. Ohne Kreditkarte.
Auch muss man die Teile nicht über Aliexpress kaufen, die gibts
natürlich auch bei LCSC.
Ralph S. schrieb:> Von diesem Controller habe ich schon gelesen, aber ich werde da wohl> nicht darauf einsteigen. Zum einen habe ich schon wirklich genügend> Plattformen für Mikrocontroller, zum anderen habe ich schon satt> gekämpft mit dem Bootloader des CH552 von WCH bis das funktioniert hat> (ohne das zu benötigen, MCS-51 werde ich wohl nur bei wiederaufleben> noch historischer Projekte verwenden) und zum anderen braucht es dann> wieder eben das notwendige Programmierinterface. Außerdem kaufe ich bei> Aliexpress nichts, weil dort immer eine Kreditkarte verlangt wird und> ich mich bis in mein hohes Alter hinein bis heute erfolgreich gegen eine> Kreditkarte gewehrt habe.
Wenn Dich der Controller interessiert, besorge ich Dir gern die
empfohlene Ausstattung. Meld Dich einfach per PM bei mir.
Info:
https://stepp-ke.de/2023/07/23/wch-ch32v003f4p6-ch32v203c8t6-und-wch-linke/
Der CH32V003F4P6 ist als direkter Ersatz für den STM8Sx03F3P6 gedacht.
Hab ich auch schon erfolgreich ausprobiert.
Hallo, ich habe mehrmals bei Aliexpress gekauft, zum Beispiel das in
diesem Projekt verwendete stm8s103, 100 Stück für nur 77 Euro, ich würde
sagen, ein sehr vorteilhafter Preis...
Camusso N. schrieb:> 100 Stück für nur 77 Euro, ich würde> sagen, ein sehr vorteilhafter Preis...
Da sind 13.70 Euro (incl. Versand und Einfuhrumsatzsteuer) für 50 Stück
des CH32V003 irgendwie nicht weniger vorteilhaft.
Doppelt so viel RAM, doppelt so viel Flash, dreifache Taktfrequenz ...
Wobei man das sicher nicht direkt vergleichen kann; ein 8-Bit-µC
verwendet recht sicher kompakteren Code als ein 32-Bit-RISC-µC, auch
wenn der mit 16-Bit-Instruktionen ("gepackt", also analog zu ARM-Thumb)
arbeitet.
Und da die Peripherie sich gar nicht so irrwitzig von der des STM8S103
zu unterscheiden scheint, ist eine Portierung des Projektes vermutlich
gar nicht so ein großer Aufriss - denn das ist ja wohl in C geschrieben.
Hmm. Was für lange Winterabende?
Ja, tatsächlich ist es draußen kalt und ich nutze diese Gelegenheit, um
mit neuen Basisinterpretern auf Mikrocontrollern zu experimentieren,
auch mit Hilfe Ihrer Gruppe, die mir gute Ratschläge gibt, vielen Dank!
Uwe G. schrieb:> Wenn Dich der Controller interessiert, besorge ich Dir gern die> empfohlene Ausstattung. Meld Dich einfach per PM bei mir.>> Info:> https://stepp-ke.de/2023/07/23/wch-ch32v003f4p6-ch32v203c8t6-und-wch-linke/>> Der CH32V003F4P6 ist als direkter Ersatz für den STM8Sx03F3P6 gedacht.> Hab ich auch schon erfolgreich ausprobiert.
Ganz lieben Dank!
Ich habe mir gestern den Chip per Datenblatt und Internetrechereche
angesehen und für mich entschieden, dass ich den nicht machen werde. Ich
werkle unter Linux und hätte einen sehr großen Aufwand, dass an meine
bevorzugte Arbeitsweise (alle Projekte mittels Makefile und als Editor
Geany oder Konsoleneditor) einzurichten.
Ich verzettele mich immer viel zu sehr (auch gerade wieder, weil ich den
Interpreter jetzt auch für den STM32F030 "komplett" gemacht habe).
Momentan wollte ich ja meine Spielesammlung für F401 bearbeiten und habe
nun 3 Tage lang am Interpreter gewerkelt, einfach weil das Spaß gemacht
hat.
Deswegen werde ich diesen Chip vorerst einmal nicht anfassen, aber
vielen Dank noch einmal.
Gruß
Ralph
So, hier jetzt auch die überarbeitete Version für einen STM32F030. Ich
hatte kurz überlegt, hierfür einen neuen Thread aufzumachen, weil das ja
ein ganz anderer Chip als der im Eröffnungsthread von vor 6 Jahren
beschrieben ist, aber der Kern des Interpreters ist der selbe von daher.
Die Schaltung ist dafür ausgelegt, die Firmware des Chips mittels des
integrierten Bootloaders des F030 zu flashen. Da das ganze
minimalistisch bleiben sollte, wird der Bootloader mittels zweier Tasten
(Boot0 und Reset) aktiviert (genauso, wie das die BlackPill und die
BluePill - hier mittels 2 Jumper - auch machen).
Der Interpreter belegt mit dem von mir verwendeten Compiler eine Größe
von 13896 Bytes. Ich hoffe dass die Dateigröße mit neueren als den von
mir verwendeten arm-none-eabi-gcc Version 6 nicht beim compilieren
zunimmt. Größer als 14336 Bytes darf es nicht sein, da sonst der
Flashbereich beschrieben wird, der im Flash zum Speichern eines
Basicprogramms dient (ab Adresse 0x80003800).
Im Vergleich zu der Version mit dem STM8 kann dieser Interpreter nun:
- für ein Basicprogramm 2048 tokenisierte Bytes (anstelle von 512)
speichern
- DELAY Funktion
- ADC Funktion zum Einlesen eines analogen Wertes
- BYTEOUT zum Ausgeben eines kompletten 8-Bit Wertes auf 8 Pins I/O 0
bis 7
- 11 I/O Pins von denen einer als analoger Eingang dienen kann.
Wie zuvor hat auch der Interpreter einen Autorunanschluß mit dem ein
gespeichertes Programm sofort nach anlegen der Betriebsspannung
gestartet werden kann, so dieser auf GND gelegt ist.
Wer das brauchen kann: Viel Spaß damit, :-) ich habe glaube ich damit
genug gespielt. Ich wollte noch eine Funktion integrieren, mit der man
ein 74HC595 Schieberegister als Porterweiterung hätte bedienen können,
aber ich habe das nicht mehr hineingequetscht bekommen.
So nebenbei braucht diese Variante des Interpreters auch keinen
zusätzlichen Programmer um ihn zu flashen, ein USB zu (TTL)RS232 Adapter
wie im Schaltplan genügt um damit werkeln zu können.
Viele Grüße und schöne Weihnachten,
Ralph
Ralph S. schrieb:> Ich> werkle unter Linux und hätte einen sehr großen Aufwand, dass an meine> bevorzugte Arbeitsweise (alle Projekte mittels Makefile und als Editor> Geany oder Konsoleneditor) einzurichten.
Hmm. Man muss nicht "mounriver" verwenden; hast Du das hier nicht
gesehen?
https://github.com/cnlohr/ch32v003fun
HALLO ,
Das neue TinyBasic für STM32F030F4P6 funktioniert gut! Ich habe die
Firmware mit STM32CUBE und STLINK geladen, dann habe ich die serielle
Schnittstelle mit TERATERM verbunden und alles funktioniert
einwandfrei!! . Danke für dieses neue TinyBasic!
Gerne verfolge ich die Entwicklung weiterer Neuigkeiten.
Fröhliche Weihnachten an alle!
Camusso N. schrieb:> Gerne verfolge ich die Entwicklung weiterer Neuigkeiten.
Ich glaube nicht, dass ich daran noch weiter etwas entwickeln werde,
zumindest nicht auf der Basis dieses TinyBasic. Es ist einfach zu
rudimentär, ist sehr eingeschränkt, keine freie Wahl der Variablennamen,
kein DIM und vor allem keine Gleitkommazahlen.
Sollte ich mich noch einmal an ein Basic machen (SOLLTE), wird das eher
was ganz anderes werden !
Ja, aber für kleine Automatisierungen ist es ideal :), aber wenn Sie
eines Tages etwas Fortgeschritteneres entwickeln, wird es noch besser
sein, trotzdem vielen Dank für Ihre Unterstützung und ein frohes neues
Jahr!
Ralph S. schrieb:> Ach herjeh, nach 6 Jahren eine Anfrage. Grundsätzlich müßte das machbar> sein, wenn man einen GPIO der mittels IN/OUT gesteuert wird vom> Interpreter entfernt und diesen für einen Autorun-Pin verwendet.>> Allerdings weiß ich noch, dass der Flashspeicherplatz extrem ausgereizt> war und ich nicht weiß, ob das im Code noch unterbringbar ist.
In den 6 Jahren gab es aber auch Fortschritte bei SDCC, so dass das, bei
dem, was einst "Flashspeicherplatz extrem ausgereizt", nun noch Luft
sein könnte.
Philipp Klaus K. schrieb:> In den 6 Jahren gab es aber auch Fortschritte bei SDCC, so dass das, bei> dem, was einst "Flashspeicherplatz extrem ausgereizt", nun noch Luft> sein könnte.
:-) mittlerweile habe sogar ich (und ich brauche lange bis ich neue
Versionen verwende) einen neueren SDCC installiert. Wirklich "Luft" was
den Speicherplatz angeht hat das nicht gebracht.
Für Camusso's "Autorun-Pin" nach anlegen der Spannung hats allerdings
noch gereicht gehabt. Grundsätzlich hätte ich da noch ein paar Ideen
gehabt, was mit der "func(Funktionsnr, Value)" noch hätte anstellen
können. Als erstes wäre mir hier ein Portexpander mit 74HC595
eingefallen. Dafür hat es dann allerdings nicht gereicht.
Außerdem werde ich für den STM8 nicht mehr wirklich etwas machen, weil
mir vor ca. einem halben Jahr jemand angezeigt hat, dass ST die
STM8-Serie auf NRND (not recommended for new designs) gesetzt hat und
die Serie wohl irgendwann auslaufen wird. Zudem war der STM8 vor der
Pandemie ein absolut billiges Spielzeug auf dem Niveau eines ATmega (aus
meiner Sicht der Dinge). Da hatte der irgendwas zwischen 20 und 25 ct
gekostet.
Jetzt ist mein billiges Spielzeug für den SDCC noch die PDK Familie von
Padauk. Hier an dieser Stelle ein herzliches Dankeschön an Philipp (und
das Team rund um den SDCC) dass ihr da immer wieder etwas daran werkelt
(auch wenn ich bei der Version 4.3 wirkliche Probleme hatte den in
meiner selbstgestrickten Live-Linux-Version rund um Porteus / Slackware
an's Laufen zu bekommen).
Also: :-) Dankeschön, dass es den SDCC gibt ! (genauso gemeint)
Ralph S. schrieb:> Philipp Klaus K. schrieb:>> In den 6 Jahren gab es aber auch Fortschritte bei SDCC, so dass das, bei>> dem, was einst "Flashspeicherplatz extrem ausgereizt", nun noch Luft>> sein könnte.>> :-) mittlerweile habe sogar ich (und ich brauche lange bis ich neue> Versionen verwende) einen neueren SDCC installiert. Wirklich "Luft" was> den Speicherplatz angeht hat das nicht gebracht.
Dann bliebe noch:
--opt-code-size verwenden (falls da nicht eh schon geschieht
--max-allocs-per-node N (bei größerem N wird stärker optimiert, aber das
Kompilieren dauert länger und verwendet mehr RAM, aber wenn du in den 6
Jahren Zugang zu einem schnelleren Rechner mit mehr RAM erhalten hast,
sollte das gehen).
Hallo,
mir gefällt das Projekt, auch wenn es kaum praktische Anwendungen geben
dürfte.
Aber das Problem möglichst viel in so einen kleinen STM8 rein zu
bekommen
hat mir keine Ruhe glassen.
Ich habe den Code etwas geändert und bin aktuell bei einer Auslastung
von ca. 93%.
Habe aber auch einige neue Funktionen eingebaut:
AND, OR, XOR, ADC, DELAY, BYTEOUT, PEEK, POKE, EEPROM, <>
Die größten Änderungen um Platz zu sparen:
- doppelten Code in separate Funktionen packen
- Function Pointer Arrays statt der großen switch Anweisungen
Leider ist mein STM8 Board noch nicht da,
ich kann noch nicht testen.
Andreas
Hallo Andrea,
Ich bin sehr an Ihrer Modifikation interessiert, ich würde sie gerne
ausprobieren, wenn Sie mir die .ihx-Datei schicken könnten, wenn Sie
möchten, schicke ich Ihnen ein STM8-Board, ich habe viele.
Lass es mich wissen .
Danke schön!
Andreas schrieb:> Ich habe den Code etwas geändert und bin aktuell bei einer Auslastung> von ca. 93%.> Habe aber auch einige neue Funktionen eingebaut:> AND, OR, XOR, ADC, DELAY, BYTEOUT, PEEK, POKE, EEPROM, <>
... freu ich mich, wenn andere solche Basteleien auch mögen (auch dann
wenn es wohl kaum Anwendungen gitbt).
DELAY, BYTEOUT und ADC hab ich ja in meiner STM32F Version implementiert
gehabt (im STM8 nicht). Die letzte Compilierung mit STM8 ergab:
1
Device : stm8s103f3 / Flashsize: 8192 bytes
2
Program : at address 0x8000 7421 Bytes (90.6% full)
Hätte ich jetzt wahrscheinlich auch noch etwas Platz zum Basteln.
Allerdings muss ich sagen, dass ich mit meinem Bootloader aus
Beitrag "Re: Serial Bootloader für STM8S103F3P6 (Linux)"
verwende und der benötigt in sich auch Speicherplatz, so dass bei mir
für das Anwenderprogramm dann 7744 anstelle von 8192 Bytes zur Verfügung
stehen.
Außerdem denke ich, dass wenn ich an dem Basic vor lauter Lust und
Dollerei noch einmal etwas mache, wird es die STM32F Variante sein.
Ich finds aber klasse wenn du dich damit beschäftigst und bin gepsannt
darauf, wie deine erweiterte Version ausschaut.
Gruß, Ralph
Hallo zusammen, ich verfolge gespannt die Lösung, neue Anweisungen zum
stm8s103f3p6 hinzuzufügen. Ich habe auch eine neue Idee. Ich hoffe, dass
Sie, die mehr Experten als ich sind, mir helfen können. Ich habe ein
Foto eingefügt, damit Sie das verstehen, indem ich ein externes Bild
einfüge 24lc64 EEPROM, Sie könnten 8 KB für das Programm haben!
und nutzen Sie die internen 512 Byte als Datenspeicher.
Es kann getan werden?
Danke !
Hallo,
@Camusso N
ich poste die .ihx Datei sobald ich mein Board habe und alles testen
kann.
Danke! Aber das Board allein nützt mir nichts, ich hat auch den
Programmer
und das seriell Interface bestellt.
Mein Board soll bis zum 12.1. ankommen.
@Ralph S
Danke für das schöne Projekt!
Ich hänge einfach mal meinen aktuellen Stand an.
Ich habe das aber bisher nur auf Windows und einen ESP32 laufen lassen.
Alles was ADC, EEPROM, PEEK, POKE, usw. betrifft ist noch völlig
ungetestet.
Das makefile habe ich für Windows erweitert.
Ich benutze den SDCC 4.3.0.
Grüße
Andreas
Hallo Andreas,
Vielen Dank, dass Sie einen Teil der Dateien bereits veröffentlicht
haben. Ich werde versuchen, sie zu studieren, um mehr zu erfahren. Wenn
Sie dann die Hex-Datei haben, wird es noch besser.
Hat Ihnen meine Idee gefallen, den Speicher mit einem externen Eeprom zu
verwalten?
Auf Wiedersehen!
Roberto.
Camusso N. schrieb:> Hallo Andreas,> Vielen Dank, dass Sie einen Teil der Dateien bereits veröffentlicht> haben. Ich werde versuchen, sie zu studieren, um mehr zu erfahren. Wenn> Sie dann die Hex-Datei haben, wird es noch besser.> Hat Ihnen meine Idee gefallen, den Speicher mit einem externen Eeprom zu> verwalten?> Auf Wiedersehen!>> Roberto.
Na ja, ein EEPROM als externen Speicher zu verwenden ist nicht wirklich
eine IDEE, sondern die Norm. Die Idee war eher, genau den internen und
nicht einen externen EEProm zu verwenden. Es hat eben eine
Ein-Chiplösung sein sollen. Wenn schon ein externes EEProm, dann eher
doch ein 24LC256, der ist 4 mal so groß und zumindest bei LCSC.COM
deutlich preiswerter.
Hmmmmmmmmmm, eigentlich (und nicht nur eigentlich) muß man nur die
Funktionen:
- eeprom_unlock
- eeprom_read
- eeprom_write
gegen Funktionen austauschen, die dann eben ein EEProm ansprechen.
@Roberto, kann es sein, dass du nicht so wirklich viel Ahnung von C (und
nicht nur vom STM8 nicht) hast ?
Für den I2C Bus des EEProms würde ich zumindest in Verbindung mit dem
STM8 eher 2,2kOhm verwenden (das hatte bisher bei mir problemlos
geklappt gehabt).
Andreas schrieb:> Alles was ADC, EEPROM, PEEK, POKE, usw. betrifft ist noch völlig> ungetestet.
:-) das ist dann aber irgendwie noch keine Version für STM8! Auf einem
STM32 konnte ich auch deutlich mehr, hatte auch ByteOut, ADC auch. Bei
Peek und Poke hängts ja davon ab, was du hinter den anzusprechenden
Adressen verstecken magst. Ich hatte das lieber über "func" gelöst. Bei
dem STM32 kannst du dich dann absolut austoben. Ich weiß, dass das sogar
auf einem F4 läuft, aber das ist dann irgendwie doch zu arg einen
schönen M4 Controller mit einem sehr kastrierten Basic zu betreiben,
allerdings: gehen würde es.
Wenn du mit dem Basic hier gerne weiter machen magst, :-) gerne!
Grundsätzlich ist es dann halt aber so, dass das nicht zweigleisig
geschehen sollte (bspw. umd die Wünsche von Roberto zu erfüllen und das
um ein EEProm zu erweitern und dann den frei werdenden Flashspeicher zu
nutzen). Hier kann es dann sogar reichen, eine kleine Verwaltung zum
EEPromspeicher zu machen, um dann mehr als nur ein Programm speichern zu
können, ein 24LC256 hätte immerhin 32kByte Speicher.
Aber wie gesagt, so etwas würde ich dann lieber auf einem anderen
Controller machen. Abgesehen davon ist die (hier dann wirklich bessere)
Scriptsprache doch tatsächlich Python. Mikropython läuft auf einem
STM32F4xxx recht gut. Deswegen stellt sich ehrlicherweise die Frage nach
dem Sinn von Basic.
Als "Spielzeug" war das witzig. Wie gesagt, du kannst dir das hier gerne
zu eigen machen! Grundsätzlich, egal was du machst (wenn ich mir hier
die vielen negativen Bewertungen ansehe) wünsche ich dir viel Spaß
dabei.
Gruß, Ralph
Hallo Ralph S,
> Aber wie gesagt, so etwas würde ich dann lieber auf einem anderen> Controller machen. Abgesehen davon ist die (hier dann wirklich bessere)> Scriptsprache doch tatsächlich Python. Mikropython läuft auf einem> STM32F4xxx recht gut. Deswegen stellt sich ehrlicherweise die Frage nach> dem Sinn von Basic.
ich glaub da hast Du Recht, BASIC auf dem STM8 macht wirklich nicht viel
Sinn.
> Wie gesagt, du kannst dir das hier gerne> zu eigen machen!
Entschuldigung, das war nicht meine Absicht.
Grüße
Andreas
Hallo Ralph und Andreas, vielen Dank, denn ihr berät mich immer gut, ihr
seid Experten in C und stm8, leider habe ich immer nur Pic und 8051
verwendet, daher habe ich insbesondere im Programmieren in C keine
Erfahrung, weshalb ich euch gefragt habe für die Dateien .ihx, wenn Sie
mir helfen könnten, weil ich tagelang versucht habe, die Dateien mit
einem Ubuntu-PC zu kompilieren, aber es gelingt mir nicht, insbesondere
mit dem Befehl „make“. Ich bin sehr unerfahren und verwende fast nur
Basic- und MPASM-Mikrochips.
Camusso N. schrieb:> weil ich tagelang versucht habe, die Dateien mit> einem Ubuntu-PC zu kompilieren, aber es gelingt mir nicht, insbesondere> mit dem Befehl „make“.
Das... verstehe ich nun allerdings überhaupt nicht! Wenn du das Zipfile
in einen Ordner deiner Wahl entpackt hast, in der Konsole in dieses
Verzeichnis wechselst und dort eingibst:
make
Dann hätte bei einem installierten SDCC das allerdings kompilieren
müssen !
HALLO ! Ich habe es endlich geschafft, die tbasic-Datei zu verstehen und
zu kompilieren, aber die letzte, die Sie gepostet haben, weist einen
Fehler auf. Ich füge ein Foto von der Datei bei, die mir mein SDCC gibt.
Tausend Dank!
Dann sieh Dir mal Zeile 1581 an.
Übrigens kann man den Text, der in dem Konsolenfenster da steht, auch
markieren und in die Zwischenablage kopieren, und somit hier auch als
Text einfügen, dazu muss man keine Kamera in die Hand nehmen und ein
Photo vom Monitor anfertigen.
Hallo, Sie haben versucht, den Code in Zeile 1581 zu analysieren, der
Fehler in zu vielen Parametern, ich habe versucht, ihn zu ändern, aber
ich verstehe es nicht, leider interessiere ich mich seit kurzem für C
und bin sehr schlecht vorbereitet ... ...
Ich akzeptiere jedoch Ihren wertvollen Rat und werde weiterhin C lernen.
Ich wünsche Ihnen einen schönen Sonntag
Der letzte Post war von Andreas. Wäre sein Setup fehlerfrei, hätte er
auch eine *.ihx Datei erzeugen müssen. Hmmmm, ich werde mir das von
Anfreas morgen mal genauer ansehen, aber eigentlich ist es ungeschickt,
wenn es 2 Weiterentwicklungen gibt, zudem noch unter Linux und Windows.
Hier wäre es geschickter, eine Version zu haben, die unter Linux und
Windows korrekt compiliert. Der Fehler mit unterschiedlicher
Parameteranzahl sollte aber auffindbar sein. Schwieriger wird es, wenn
man auf eine nicht vorhandene Hardware zugreift. Hier ist man dann nicht
sicher, ob bspw. der ADC richtig funktioniert.
@Camusso:
So, den Code von Andreas habe ich mir nicht angesehen (weil ich bei
meinem eigenen bleiben möchte).
Aaaaber ich habe da mal etwas (zum Lernen) vorbereitet und der Anhang
hier ist ziemlich groß (nicht ganz 8 MByte).
Sollte das zu groß sein, so mag mir ein Admin auf die Finger klopfen und
ich werde das dann nicht wieder tun.
Im Anhang ist ein komplettes Setup für den STM8 des SDCC-Compilers für
ein 64-Bit Linux enthalten (allerdings "nur" SDCC v4.1.0). Damit der
Anhang nicht zu groß ist, wurden alle nicht STM8 Sachen des Compilers
weggelassen (hier gibt es dann die Frage an Philipp Klaus K. ob man das
überhaupt darf, den SDCC zu "kastrieren").
Das Setup ist irgendwie "Arduino-Style", das heißt: alle vom Compiler
benötigten Dateien (inkl. stm8.lib) sind über relative
Verzeichnisangaben gemacht und die im Setup enthaltenen
Beispielsverzeichnisse bedienen sich hieraus. Das heißt, dass der
Compiler und Linker auch nur aus diesem Verzeichnis "stm8" erreichbar
ist.
In allen Beispielsverzeichnissen können die Beispiele mit einem
einfachen Aufruf "make" übersetzt werden.
Um mit dem Setup "spielen" zu können sind im Stammverzeichnis stm8 2
TUI-Mode-Programme enthalten:
- genmakef
- cide
Mit den beiden Programmen sollte fürs erste ein Einstieg und Arbeiten
mit C und STM8 auf der Konsole möglich sein.
genmakef im Stammverzeichnis stm8 mittels:
./genmakef
starten. Hier kann nun ein Projektverzeichnis und eine Projektdatei
angelegt werden, die dann auch die main-Funktion beinhaltet.
Mit "select path to STM8 projects" im aufgehenden Dialogordner das
Verzeichnis stm8 wählen. Mit "Makefile generator" kann hier ein Makefile
zusammengeklickt werden. Es sind Angaben zu Projektordner und
Projektname zu machen. Es muß der STM8 gewählt werden, für den ein
Programm geschrieben werden soll (Auswahl hier nur STM8S003, STM8S103F3,
STM8S105K4 und STM8S105K6). Der Programmer sollte als ST-Link SWIM
gewählt werden, da der Bootloader eine Eigenkreation von mir ist und auf
Deinem System nicht verfügbar ist).
Die wichtigste Eigenschaft ist "Additional source file to link". Hier
wird ausgesucht, welche Softwarebibliothek mit eingebunden werden soll
und mindestens ./src/stm8_init.c ist auszuwählen (dieses erscheint dann
im blauen Fenster als:
SRCS = ../src/stm8_init.rel
Die Endung .rel gibt es deshalb, weil Objektdateien des SDCC so
bezeichnet werden, d.h. aus stm8_init.c wird der Compiler stm8_init.rel
erzeugen und dieses dann dem späteren Gesamtprogramm hinzufügen.
Wenn die Auswahl getroffen ist, kannst du dir das Verzeichnis mit der
C-Projektdatei und das Verzeichnis generieren lassen.
Beende genmakef und wechsle in das von gerade erstellte Verzeichnis mit:
cd ./meinverzeichnis
Hier sollten jetzt 2 Dateien liegen: Die C-Projektdatei und das
dazugehörende Makefile.
Um nun damit etwas anfangen zu können, mußt du dein Programm schreiben
können. Hierzu startest du die Konsole-IDE cide mittels:
../cide
und öffnest deine C-Datei.
Jetzt kannst du loslegen mit dem Programmieren!
Hallo Ralph, danke für deinen Vorschlag. Jetzt werde ich versuchen,
deine Software zu installieren, um zu sehen, ob ich es besser verstehen
kann. Ich habe es geschafft, mit dem Befehl „make“ zu kompilieren, aber
der Compiler generiert die .ihx-Datei, aber wenn ich sie auf den stm8
lade, geschieht dies Es funktioniert nicht, also denke ich, dass da
immer noch ein Fehler meinerseits vorliegt....
Ich verwende STLINK mit dem SWING-Signal und zum Testen eines seriellen
USB-Adapters. Mit Ihrer Version funktioniert es gut, aber mit dieser neu
kompilierten Version funktioniert es nicht ...
Hallo Ralph, vielen Dank, dass du mir den stm8-Ordner mit den
Einstellungen geschickt hast. Mit diesem Ordner kann ich die von dir
gepostete Datei tbasic.c korrekt kompilieren, während beim Kompilieren
der Datei mit den neuen Verzögerungs-ADC-Funktionen usw. Probleme
auftreten.
Ich versuche den Fehler zu finden...
Mit etwas Mühe gelang es mir, diese Schlüsselwörter zusammenzustellen
und auszuprobieren:
Delay ok!
10 PRINT "Ciao!"
20 DELAY(1000)
30 PRINT "Mondo!"
40 DELAY (1000)
50 GOTO 10
Have fun!
Adc Ok!
10 B=ADC()
20 PRINT B
30 GOTO 10
Have fun!
Ich habe einen 10-kb-Trimmer an den ADC-Pin angeschlossen und konnte den
Variablenwert lesen!
Byteout , peek , poke , eeprom(32)
Ich kenne die Syntax nichtViel Spaß!
Ich habe einen 10-kb-Trimmer an den ADC-Pin angeschlossen und konnte den
Wert der Variablen lesen!
Byteout, Peek, Poke, EEPROM(32)
Ich kenne die Syntax nicht. Haben Sie Vorschläge?
Roberto C N. schrieb:> Hallo Harald, kommst du zu uns, um den Fehler zu beheben?
Danke für die Einladung nach Italien, aber meine diesjährige
Urlaubsplanung sieht doch anders aus.
Harald K. schrieb:> Das ist doch exakt der gleiche Fehler, um den es schon vor einer Woche> ging.
Das ist exakt der gleiche Fehler !!!
Und der Fehler von Roberto ist, dass er unterschiedliche Versionen
untereinander mischt (unter Garantie).
In meinem Sourcecode steht in Zeile 1582 kein "delay" und auch kein
"delay_ms". Scheinbar jedoch versucht er, die andere (und absolut
ungetestete) Version von Andreas mit meinem Makefile zu übersetzen (was
dann nicht funktioniert).
In meiner Version gibt es kein Peek, Poke und Byteout!!! Peek und Poke
habe ich nie implementiert und Byteout gibt es im STM32F030!
Solange also Roberto grundsätzlich versucht die Datei von Andreas zu
übersetzen wird das scheitern oder er muß im C-Source den Fehler von
Andreas suchen!
Roberto C N. schrieb:> Hallo Ralph, vielen Dank, dass du mir den stm8-Ordner mit den> Einstellungen geschickt hast. Mit diesem Ordner kann ich die von dir> gepostete Datei tbasic.c korrekt kompilieren, während beim Kompilieren> der Datei mit den neuen Verzögerungs-ADC-Funktionen usw. Probleme> auftreten.> Ich versuche den Fehler zu finden...
Wie gesagt: das ist nicht von mir!
So, jetzt habe ich heute Nacht doch wieder mit dem Interpreter
zugebracht und habe mir die Version von Andreas angesehen.
Er hat doch einige Änderungen vorgenommen, allen vorweg hat er etwas an
der Struktur geändert: er verwendet einen Funktionspointer anstelle der
switch-case Anordnung.
Hierbei muß ihm ein Fehler unterlaufen sein, denn sein <byteout>
produziert beim Aufruf einen Fehler.
Ich habe meiner Version ein <byteout> hinzugefügt, ebenso ein <delay>
und ein <adc>.
Doppelten Code wie von ihm beschrieben habe ich nicht bei mir gefunden,
die Warnmeldungen habe ich ebenfalls eliminiert und ich habe seine
Methode die IO-Pins anzusprechen übernommen. Danach war es 3 Uhr morgens
und ich wollte das nicht mehr für hier aufarbeiten.
Die größe Codeeinsparung wurde dadurch erreicht, dass die
Initialisierung der seriellen Schnittstelle geändert wurde. Hier kann
nicht mehr aus dem laufenden C-Programm heraus die Baudrate geändert
werden (wurde nicht genutzt) und ist jetzt fest auf 19200 Baud
eingestellt.
Dadurch habe ich erreicht, dass der Code unterhalb von 7744 Byte
geblieben ist (um genau 5 Bytes) und ich meinen Bootloader für den STM8
verwenden kann (anstelle eines STLINKv2).
@Roberto: Nachdem ich heute abend dann das hier eingestellt habe, werde
ich definitiv nichts mehr an dem Interpreter machen wollen !
Ralph S. schrieb:> Außerdem werde ich für den STM8 nicht mehr wirklich etwas machen, weil> mir vor ca. einem halben Jahr jemand angezeigt hat, dass ST die> STM8-Serie auf NRND (not recommended for new designs) gesetzt hat und> die Serie wohl irgendwann auslaufen wird.
Ja, sehr schade. Sauberes Design, super Datenblätter und Manuals,
günstig. Beim ersten Versuch, so einen STM8 in Betrieb zu nehmen ging
das auf anhieb gut, das komplette Teil war echt einfach zu verstehen,
wenn man schon andere Controller kennt.
Ich hab noch einige hier liegen, die werden noch "verbraten" und dann
ist wohl Schluss...
Hallo Ralph, okay, danke, denn du hast mir sehr geholfen und ich fange
langsam an, etwas Neues zu lernen!
Vielen Dank auch für die neuesten Änderungen, die Sie veröffentlichen
werden.
... so, hier nun meine "finale" Version des TBasic für den STM8. Ich
denke nicht, dass ich den noch einmal wirklich anfassen werde, da der
Speicherbedarf jetzt bei 7730 Bytes liegt. Ich verwende gerne meinen
eigenen Bootloader beim STM8 und hier darf dann - da der Bootloader
ebenfalls Speicherplatz benötigt - eine Dateigröße von 7744 Bytes nicht
überschritten werden. Von daher ist nun wirklich kein Platz mehr für
Erweiterungen.
@Andreas: Solltest du hier noch einmal lesen: Ein Dankeschön für deine
Version des TBASIC. Auch wenn ich deine (schicken) Funktionspointer
nicht übernommen habe, so hat mir die Lösung des Ansprechens der
Portpins über struct und typedef gefallen (auf diese naheliegende Idee
bin ich vor 6 Jahren nicht gekommen) und habe diese übernommen.
@Roberto: Die Syntax des Interpreters ist nun etwas ausführlicher
geworden und nun in einem (halbwegs) saubereren PDF-File untergebracht.
Wenn du dich an die Anleitungen darin hälst, solltest du zum einen keine
Probleme mehr haben, so dein SDCC komplett installiert ist, den
Interpreter zu übersetzen (wobei das gar nicht notwendig ist, da die
.ihx Datei enthalten ist).
Implementierte Programmbefehle sind jetzt:
- ABS - ADC - BYTEOUT - DELAY - FOR NEXT - FUNC - GOSUB RETURN – IN
- IF - INPUT – OUT - PRINT - RND
Kommandobefehle im Terminalmodus:
- LIST - LOAD - NEW - SAVE - SIZE - RUN
Und last but not least: Die Autoloadfunktion beim anlegen der
Betriebsspannung an den Controller
Viel Spaß damit und see you here again in six years ! :-)
Ralph
Ralph S. schrieb:> ... so, hier nun meine "finale" Version des TBasic für den STM8. Ich> denke nicht, dass ich den noch einmal wirklich anfassen werde, da der> Speicherbedarf jetzt bei 7730 Bytes liegt.
Ich habe die .zip entpackt, dann per "make -j 8" in basict kompiliert.
Auf einem Debian GNU/Linux, mit aktuellem sdcc aus svn trunk (entspricht
etwa SDCC 4.4.0 RC2):
~~~~
------ Programm build sucessfull -----
Device : stm8s103f3 / Flashsize: 8192 bytes
Program : at address 0x8000 7236 Bytes (88.3% full)
~~~~
Wenn ich in makefile.mk noch ein "--max-allocs-per-node 100000" einfüge,
um stärker zu optimieren, erhalte ich (bei deutlich längerer
Kompilierzeit):
~~~~
------ Programm build sucessfull -----
Device : stm8s103f3 / Flashsize: 8192 bytes
Program : at address 0x8000 7100 Bytes (86.7% full)
~~~~
Philipp Klaus K. schrieb:> ------ Programm build sucessfull ----->> Device : stm8s103f3 / Flashsize: 8192 bytes> Program : at address 0x8000 7236 Bytes (88.3% full)> ~~~~>> Wenn ich in makefile.mk noch ein "--max-allocs-per-node 100000" einfüge,> um stärker zu optimieren, erhalte ich (bei deutlich längerer> Kompilierzeit):>> ~~~~> ------ Programm build sucessfull ----->> Device : stm8s103f3 / Flashsize: 8192 bytes> Program : at address 0x8000 7100 Bytes (86.7% full)> ~~~~
:-) und führe mich nicht in Versuchung, denn dein ist der Code und die
Codegröße und das Programm... und gib mir mehr Speicher so auch ich dir
dann mehr Programm gebe!
Oder so ähnlich. Der Speicherplatzgewinn ist dann doch signifikant, so
dass dann evtl. eben doch noch einige Funktionen implementiert werden
könnten.
Hallo Ralph, vielen Dank für die großartige Arbeit, die Sie an diesem
Dolmetscher geleistet haben, ein wahrer Profi! Ich bin Hobbybastler,
mein Beruf ist Elektriker und es wäre wirklich schwierig für mich
gewesen, einen solchen Job gut zu machen!
1999 hatte ich einen Interpreter für PIC16c54 namens LASI54 entwickelt,
der einen seriellen Speicher verwendet, um den Interpretercode mit 10
Anweisungen und 8 Operanden zu speichern, ein schönes Projekt, das ich
in meinen Schalttafeln angewendet habe, ich möchte es für Sie zur
Analyse veröffentlichen , es ist ganz einfach von einem Elektriker
gemacht! :) :)
Danke bis bald!