Datum:
Angehängte Dateien:Auch wenn noch nicht alle Funktionen voll ausgetestet sind, gibt es hier
endlich das erste Release des BASIC-Computers mit dem Mega644. Es gibt
jede Menge Neues, allerdings zu Lasten der Abwärtskompatibilität zu
früheren Versionen.
Features:
ls Eingabegerät dient eine normale PS2-Computertastatur, als
Ausgabegerät ein Fernsehgerät mit Scart-Eingang (Farbe) oder BAS-Eingang
(Graustufen) oder auch verschiedene PAL-/NTSC-taugliche TFT-Displays.
- 95 Programmzeilen mit maximal 32 nutzbaren Zeichen, Fullscreen-Editor
- 8 Programme im internen Flash
- Tiny-Basic-Programmiersprache mit Erweiterungen
- Eigene Fehlerbehandlung mit ONERR möglich
- 30x23 Zeichen mit maximal 8 Vorder- und Hintergrundfarben und
- Pseudografik im Textmodus
- 3 Videomodes mit Vollgrafik und Farbpalette
* 168x116 in 2 aus 8 Farben
* 120x76 in 4 aus 8 Farben
* 84x58 in 8 aus 8 Farben
- Punkte, Linien, Rechtecke und Kreise (Ellipsen), auch gefüllt
- PAL/NTSC und Synchronsignale über Jumper einstellbar
- PS2-Tastatur zur Eingabe, Keyboard-Layout ist dauerhaft umschaltbar
- 1-Kanalige Audioausgabe (Noten, Rauschen) mit Hüllkurve
- serielle RS232-Schnittstelle mit 1200 Baud und Ladungspumpe
- parallele Druckerschnittstelle, auch als I/O und Analogeingänge
- optionales Daten-EEPROM (24C64) für Datenlogger etc
- Funktionen für bis zu 8 LM75 Temperatursensoren
- Up/Download von Programmen über die serielle Schnittstelle
- Listingdruck über die Druckerschnittstelle
- automatischer Start des 1. Programmes nach Einschalten über Jumper
- Tastenkombinationen für Abbruch, Neustart, Screenshot
- Monitor mit Variablen- und Stackanzeige, Einzelschrittbetrieb
- Universelle I2C-Ansteuerung
- Einfaches Dateisystem auf ATMEL Dataflash
- Clone-Funktion zum Kopieren der Software auf weitere Controller
Was noch fehlt, sind ein paar Beispiele und der Zeichensatz ist noch
nicht
voll belegt.
Homepage ist in Arbeit, wird aber noch etwas dauern...
Gruß Jörg
Datum:
Angehängte Dateien:Bevor Fragen kommen, die Hardware ist die gleiche wie bei den früheren Versionen, halt nur ein anderer Controller und ein 20MHz Quarz. Die Hardware-Doku ist noch von der alten Version. Anbei noch ein Screenshot in Grafikmode 2 (120x76x4)
PROGRAM 1:Sinus-c 01 CLS :VMODE 2 02 DRAW 35,0,35,119,1 03 PLOT 35,0 04 FOR X=0 TO 119 05 W=30*X:V=SIN(W)/10 06 DRAWTO 35-V,X,2 07 NEXT :COLOR 3 08 ? @60,0;"Sinus" 09 WKEY Z # |
Gruß Jörg
Datum:
Hallo Joerg, erst einmal vielen Dank - schnell einen Controller besorgen und dann mal sehen, was Du wieder schönes gezaubert hast..... Viele Grüsse Otto
Datum:
Hallo Jörg, wo hast Du den "ATmega644-20PU" denn her ? Gruss Otto
Datum:
Ich les den Thread schon seit anfang an (also den alten ;) ). Echt erstaunlich was du da auf die Beine stellst! Wenn ich Zeit habe muss ich mir auch so nen kleinen computer bauen. Und dieser hat den Namen Computer echt verdient!
Datum:
@Otto Da hatte ich damals meine gekauft: http://stores.ebay.de/AVR-Controller-PAKTEK @Alle In den Transferprogrammen (Perl-Scripten) ist noch ein "Fehler" drin, anstelle 9600 muss es natürlich 1200 bei der Bitraten-Einstellung heissen. Das liegt an meinem IBM T23, wo ich die Bitrate *8 einstellen muss. Die Webseite ist mittlerweise auch online: http://www.jcwolfram.de/projekte/avr/chipbasic2/main.php Gruß Jörg
Datum:
Mein mega644 ist auch schon unterwegs. "Ich freu mich drauf"^^
Datum:
@joerg wolfram wieder mal : deep respect !!! echt irre was du alles in so einem controller reinprügelst :-)
Datum:
Geil wäre das noch mit Forth. Für diese Programmiersprache gibt es echte Compiler welche auf dem AVR selbst laufen. http://sourceforge.net/projects/avrforthlike/ Ist so einer (so weit wie ich weiß). Forth Compiler hätten halt nicht nur den Vorteil, dass die schneller als interpretierte Sprachen sind, nein, es ist sogar eine Entwicklungsumgebung dabei. (läuft dann auch auf dem Zielsystem)
Datum:
Man MUSS eine Sprache interpretieren, wenn man sie zur laufzeit im AVR programmieren, laden und ausführen will. Also total am Projekt vorbeigeschossen ;)
Datum:
Hauke Radtki wrote: > Man MUSS eine Sprache interpretieren, wenn man sie zur laufzeit im AVR > programmieren, laden und ausführen will. Also total am Projekt > vorbeigeschossen ;) Nein, wenn der Compiler auf dem AVR selbst läuft, kannst Du das auch so machen. Du kannst ja den Flash des AVRs zur Laufzeit beschreiben. Somit kannst Du sehr wohl die Programme zur Laufzeit programmieren, laden und ausführen.
Datum:
Also ich hab mir gerade die Homepage angeschaut, das ist wirklich beeindruckend. Ich weiß nicht, wie viele Taktzyklen Du noch in der hsync ISR frei hast, aber ich hätte hier noch etwas Code für FM-Synthese. Ich kann auch im Februar meinen Spielzeugvocoder auf AVR-Assembler portieren. Dann hätte man Sprachsynthese. Wenn ich mal wirklich Zeit habe, dann kann ich auch noch probieren eine simple Spracherkennung zu implementieren.
Datum:
Ach ja, falls Du aus der Sache etwas 'Profit' schlagen möchtest, 2600 sucht ständig Artikel. Du bekommst dafür ein T-Shirt und ein Jahresabo der Zeitschrift. http://www.2600.com/magazine/
Datum:
...Geil wäre das noch mit Forth.... leider hast du vergessen, das 90% der teilnehmer hier die sprache forth nicht interpretieren können, geschweige damit etwas zu proggen. ich verfolge sei 20 jahren dieses forth, die anhänger sind rar, die überzeugten noch rarer. es gibt da kein durchstehvermögen. schade...
Datum:
das gleich wird auch mit diesem basic-computer(644) geschehen. kurzsichtig in einer sprache zusammengestellt, die der geringste teil nachverfolgen kann (linux). warum wird nicht einfach der assembler vom avr-studio genommen. jeder kann dieses programm verfolgen und studieren. in 6 monaten redet keiner mehr über dieses eigentliche geniale produkt. nur noch noch einpaar hardliner und die sind wenig....schade. aber wenn man das nicht anders haben möchte...na...denn...ihr hardliner.
Datum:
Das Ding ist mit Assembler programmiert. Kannst dir in AVR Studio ansehen und auch compilieren. Du musst halt das gepackte Verzeichnis öffnen, um zu sehen, wie er es gemacht hat. Aber dazu ist ein Windows-Anwender, wie z. B. ich, auch in der Lage...
Datum:
Reg Dich ab, das ist ein Trollroboter.
Datum:
Habe es vermutet. Aber ich hab einen schlechten Tag und musste mich abreagieren... Ich finde das Teil echt super. Allerdings habe ich noch keine Anwendung für mich gefunden. Gruß Gerd
Datum:
...Aber ich hab einen schlechten Tag und musste mich abreagieren..... scheisse gelaufen , wenn man straff im arbeitsleben steht, oder? hast du keine frau zum abreagieren ? du bist schon so ein sozialschwacher troll....lol....
Datum:
...Du musst halt das gepackte Verzeichnis öffnen, um zu sehen, wie er es gemacht hat. .... das ist schomal scheisse, so ein umstand.
Datum:
Gerd G. wrote: > Ich finde das Teil echt super. Allerdings habe ich noch keine Anwendung > für mich gefunden. > > Gruß Gerd Also was mich im Moment noch ein wenig stört ist der BASIC-Interpreter. Der bestehende ist jedoch anscheinend gut genug um als Sprungbrett für die weitere Entwicklung zu dienen. Also die Anwendung liegt doch auf der Hand. Anstelle eines teueren Aldi-PCs kann man sich jetzt den Rechner selber bauen. Einen Rechner, welchen man wahrscheinlich sogar komplett verstehen kann.
Datum:
@Christian die ISR ist eigentlich schon übervoll, wenn ein serielles Zeichen und ein Zeichen von der Tastatur in der gleichen Zeile kommen, kann es schon zu Bildstörungen kommen. Aber das ist so selten und tritt nur auf, wenn man es provoziert. Einfacher ist es, einen zweiten Chip über I2C anzusteuern. Ich denke, mit so einem Teil kann man lernen, wie ein Computer funktioniert. Man kann ihn auf einem Steckbrett aufbauen, kann selbt Programme schreiben, messen, steuern, regeln... Einen Compiler mit einzubauen hatte ich zwischenzeitlich auch schon mal vor, halte es aber für unzweckmäßig. In der aktuellen Version wird schon fast alles in Token umgesetzt, auch Zahlen und Funktionen. Wenn man aber zu weit in diese Richtung geht oder gar optimieren will, wird das Rückübersetzen in den urprünglichen Quelltext sehr aufwändig oder gar unmöglich. Und dann hat man Source UND Compilat im Speicher. Auch in der jetzigen Version gibt es ein paar Effekte, z.B.: - aus A=$010 wird nach dem Speichern A=$10, Wert wird als Ein-Byte-Hexvalue gespeichert - aus A=$110 wird nach dem Speichern A=$0110, Wert wird als Zwei-Byte-Hexvalue gespeichert Die "Assemblerproblematik" kommt wahrscheinlich jedes mal wieder neu auf, meiner Meinung nach sind das Leute, die Open Source Entwickler als Dienstleister und sich als König Kunde verstehen. Gruß Jörg
Datum:
>Die "Assemblerproblematik" kommt wahrscheinlich jedes mal wieder neu >auf, meiner Meinung nach sind das Leute, die Open Source Entwickler als >Dienstleister und sich als König Kunde verstehen. wird es aber wohl leider immer geben :-( ich bin zwar selbst nicht in asm bewandert, aber wenn mich ein algorithmus interessiert der nur in asm existiert und ich diesen verstehen will komme ich eben nicht um asm rum, so einfach ist das. aber mal im ernst : wie lange baust du schon an dem dingen rum ? ich meine alles in asm zu machen, da muß man doch wirklich fit sein, viel zeit haben und einen irre guten überblick ? ich programmiere recht viel (in c) und mir fällt es manchmal schwer den überblick zu behalten, wie machst du das ? (erstaunt ist ....)
Datum:
Hallo Joerg, ich finde es ganz toll, dass Du uns Dein Projekt kostenlos zur Verfügung stellst - der Sinn desselben ist, in "Basic" zu programmieren und nicht am "Betriebssystem" herumzubasteln. Da aber die "Basic-Fraktion" in die Jahre gekommen ist und alle "Klick-Buntis" meinen, nur noch mit wichtig klingenden Programmiersprachen um sich werfen zu müssen, obwohl sie diese gar nicht beherschen, wird es immer solche posts geben - da ist sicher auch Neid mit bei. Davon abgesehen würde ich durchaus auch einige Euro dafür bezahlen, wenn Du Deine Produkte fix und fertig oder als Bausatz vertreiben würdest - wäre mir der Spass echt wert......und ich würde immer noch nicht darüber "mosern", dass Du unter Linux entwickelst. Gruss Otto
Datum:
Ich habe nichts gegen Assembler, habe es ja lange genug genutzt. Allerdings möchte ich C und C++ nicht mehr missen. >Also was mich im Moment noch ein wenig stört ist der BASIC-Interpreter. >Der bestehende ist jedoch anscheinend gut genug um als Sprungbrett für >die weitere Entwicklung zu dienen. > >Also die Anwendung liegt doch auf der Hand. Anstelle eines teueren >Aldi-PCs kann man sich jetzt den Rechner selber bauen. Einen Rechner, >welchen man wahrscheinlich sogar komplett verstehen kann. Es ist auf jeden Fall eine gute Grundlage um sich sein eigenes Gerät zusammen zu bauen. Man muss es ja nicht unbedingt mit dem Basic probieren, obwohl ich schwer am überlegen bin, was man da noch herausholen kann. Für Basic ist der AVR gut ausreichend, aber für eine andere Sprache wäre ein ARM angemessener...
Datum:
TheMason wrote: > ich programmiere recht viel (in c) und mir fällt es manchmal schwer den > überblick zu behalten, wie machst du das ? (erstaunt ist ....) Ich hab ja auch schon mal größere Dinge in Assembler programmiert und kann einfach sagen, Assembler ist wie ein vereinfachtes C. (zumindest auf guten Controllern) Ich habe mir auch schon mal überlegt, etwas in C zu programmieren, nur da scheiterte ich schon an der Variablendefinition. Solche Dinge sind in Assembler viel einfacher. Also es ist im Prinzip nicht schwieriger wie in C. C ist ja auch keine Hochsprache.
Datum:
Mit den AVRs habe ich im Frühjahr 2006 begonnen, Auf Arbeit hatte ich auch schon vorher mal ein bisschen probiert, bin aber beim MCS51 geblieben. Erstes Projekt und "Stein des Anstosses" war eine kleine Spieldose mit zwei Stimmen und 5 Melodien zum Einschlafen für unseren damals gerade geborenen Sohn. Dabei kam mir die Idee mit der Videoausgabe zum Debuggen und letztendlich die mit dem Einchip-Computer. Bis zur ersten Release Mega16 hat es dann ungefähr ein halbes Jahr gebraucht, die Mega32-Version ist zu großen Teilen während des Jahreswechsels 2006/2007 entstanden, danach kamen dann einige Konzeptionen die ich wieder verworfen habe. Mittlerweile bschränkt sich die für meine Projekte verfügbare Zeit auf die Nachtstunden :) und so geht es etwas schleppender voran. Mikrocontroller programmiere ich eigentlich nur in Assembler, da das für mich einfach übersichtlicher ist. Anstelle vieler Variablen und Funktionen gibt es ein paar Register und Speicher. Damit kann ich Algorithmen im Kopf entwickeln, egal wo ich gerade bin. Dann noch eintippen, Fehler rausmachen und fertig (oder auch nicht ;)... Für große Projekte "bastle" ich einen großen Teil der Zeit an den Konzepten. Wie kann ich die Funktion aufteilen? Was für Schnittstellen brauche ich? Für die mehrfache Verwendbarkeit von Codeteilen habe ich mir azu eine Art "Bibliothekskonzept" ausgearbeitet, welches die erweiterten Makrofunktionen des AVRA-Assemblers benutzt. So wird nur der Code aus der Library mit eingebunden, den ich auch wirklich brauche und das nur durch Aufruf des Makros. Anderen Code als auseinanderzunehmen oder Kompatibilität zu anderen Systemen zu wahren halte ich persönlich für Innovations-hinderlich, weil es das Denken in bekannte Bahne lenkt und somit einschränkt. Und so ist alles (bis auf den Zeichensatz, den ich aus einem alten Buch "abgemalt" habe) auf meinem "eigenen Mist gewachsen". Und noch eine gute Nachricht: Thomas Heldt, der auch die hier vorgestellen AVR-Webserver als Bausatz vertreibt, wird demnächst auch einen BASIC-Computer-Bausatz im Angebot haben. Gruß Jörg
Datum:
Hallo alle zusammen, nachdem Jörg zugestimmt hat habe ich bereits ein neues Board erstellt und werde im kommenden Monat die Platinen fertigen lassen, es wird dann sowohl Leerplatinen als auch Bausätze geben. Der Preis wird wieder so sein das ich den Bausatz fast zum Selbstkostenpreis im Shop meiner Frau anbieten werde. Allerdings lohnt sich das alles nur wenn wenigstens 10 Bausätze, Preis ca. 34,95 EUR, verkauft werden um die Kosten für die Platinen raus zu holen. Wer also Interesse an einem Bausatz oder einer Leerplatine hat kann sich schon jetzt bei mir melden und wenn dann 10 Bestellungen da sind stelle ich den Bausatz und die Leerplatinen im Shop ein. Die Lieferzeit wird dann ca. 3 Wochen dauern da ich die Platinen dann mit Bestückungsdruck ordern werde, und eine Anleitung will auch geschrieben sein, dazu baue ich dann selber erst einmal ein Board auf um sicher zu gehen das alles funktioniert.
Datum:
Hi Leute, habe da mal ne Frage was das Nschließen eines VGA Monitors an den Mini-PC angeht. Habe da so einen alten PC-Monitor der bis zuletzt (vor 3 Tagen) einwandfrei funktioniert hat. Weil aber das Bild langsam matschig wurde hab ich gedacht mach ich mal einen Stecker für den Mini-PC dran. Leider funktioniert es nicht. Ich habe VSync und HSync und RGB Kanäle angeschlossen aber es kommt kein Bild. Der Monitor geht aus dem Standby raus und zischt aber sonst nichts. Vlt. habe ich ihn auch schon gschrottet bei den versuchen ihn anzuschließen glaub ich aber nicht. Weiß jemand Antwort? Gruß Robin T.
Datum:
Hallo Robin, wenn es kein "Multisync" ist, wird er mit dem Signal des BASIC-COMPUTER nicht zurecht kommen. Gruss Otto
Datum:
Was heißt Multisync? Ich dachte H- und VSync reichen? Viel mehr Anschlüsse sind da ja auch nicht die irgendwie die Bezeichnung Synchronisation tragen.
Datum:
Robin T. wrote: > Ich dachte H- und VSync reichen? Viel mehr Anschlüsse sind da ja auch > nicht die irgendwie die Bezeichnung Synchronisation tragen. Das Problem ist, welche vertikalen und horizontalen Ablenkfrequenzen Dein Teil kann. Du bräuchtest 15,625 kHz Horizontal und 50 Hz Vertikal. Das kann kaum ein normaler VGA-Monitor.
Datum:
mmh. Mist. Jörg hat ja gesagt ein NTSC/PAL tauglicher Bidlschirm kann an den Mini-PC angeschlossen werden. Aber ich vermute mal das mein alter Röhrenmonitor das nicht kann oder?
Datum:
Robin T. wrote: > mmh. Mist. Jörg hat ja gesagt ein NTSC/PAL tauglicher Bidlschirm kann an > den Mini-PC angeschlossen werden. Aber ich vermute mal das mein alter > Röhrenmonitor das nicht kann oder? Tipp mal die Bezeichnung des Monitors in eine Suchmaschine rein. Vielleicht findest Du da was. Also NTSC oder PAL muss er nicht können, nur das Timing muss er unterstützen. Vielleicht kannst Du aber mal probieren, den Controller zu übertakten. Dann kommst Du näher an das VGA Timing dran.
Datum:
Das sollen angeblich die Daten sein: Horizontaler Frequenzbereich: 30 - 64 kHz Vertikaler Frequenzbereich: 50 - 100 Hz Maximale Auflösung: 1280 x 1024 Ich weiß aber auch nicht was der BASIC-PC raus gibt. Ich werde mal nachmessen
Datum:
Achso und Die Synchronisationspegel sind TTL TGB ist 0,7V. Die Auflösung ist falsch. Maximal geht 1024X768. Hab das Hanbuch gefunden.
Datum:
TGB=RGB sry
Datum:
Robin T. wrote: > Das sollen angeblich die Daten sein: da macht er nicht mit: > Horizontaler Frequenzbereich: 30 - 64 kHz Das ginge sogar: > Vertikaler Frequenzbereich: 50 - 100 Hz > Ich weiß aber auch nicht was der BASIC-PC raus gibt. Ich werde mal > nachmessen Der BASIC-PC muss horizontal 15,625 kHz und Vertikal 50 Hz ausgeben. Dein Monitor geht leider horizontal nicht so weit runter.
Datum:
VGA (über ein CPLD am Videoausgang) hatte ich am Anfang mal mit vorgesehen, die horizontale Austastlücke war aber zu kurz für Sound, Zufallsgenerator, Tastaturabfrage und serielle Schnittstelle. Und so ist es letztendlich beim TV-Out geblieben. Noch etwas anderes. Da die Atmel Dataflash bei den meisten Versendern nicht zu bekommen sind und es sie obendrein nur in SMD gibt, habe ich mir folgendes überlegt: Alternativ (im Config-Menü umschaltbar) soll auch ein I2C EEPROM vom Typ 24C512 (extern oder im nicht mehr genutzten EEPROM-Sockel mit Adresse 0) verwendbar sein. Dort passen zwar nur max. 16 Dateien drauf, aber immerhin besser als gar nix. Gar nix aber eigentlich auch nicht, da der Mega644 auch selbst schon 8 Programme speichert. Die Frage ist nur, ob ich den Code noch irgendwo unterkriege... Gruß Jörg
Datum:
Hallo Jörg, heute habe ich endlich den Controller bekommen und programmiert - dabei gab es das kleine Problem, dass ich mit dem STK500 nicht exakt auf die Fuse-Werte komme, die Du in der "Liesmich" angegeben hast. Ich komme bei "FUSE LOW" nicht auf "E6", sondern nur auf "E7". Nachdem ich mit dem "Fuse-Calculator" so ziemlich alle halbwegs sinnvollen Einstellungen durchprobiert hatte, habe ich den Chip mit diesen Fuses programmiert - "Versuch macht klug" dachte ich mir. Frage: welche Fuses müssen gesetzte sein? (ich vermute, im wesentlichen: "Quartz Full Swing", "Preserve eeprom", "BOD-Level 4,3V", "Boot....default", "JTAG aus") Der Chip zeigte auf dem Fernseher (SCART) zeigte mit gesetztem "NTSC-Jumper" nach dem Einschalten sofort ein farbiges Bild - so wie auf Deiner Homepage. Dann der erste Versuch mit: 1 CLS 2 Print "Hallo"; 3 GOTO 2 - zunächst alles klar, dann wanderte das Bild. Darauf zog ich den "NTSC-Jumper". Nun ist die Textausgabe durch das Programm stabil. Beim Einschalten "läuft das Bild hoch" - ist erst verzerrt und in falschen Farben, normalisiert sich nach ca. 4 Sekunden. Nachdem ich die Funktionstasten verstanden hatte (Umschaltung mit "CTRL") lud ich dann "meine" Programme und startete das "MAIN"........nichts. Gut - alle Zeilen sind "randvoll" und alle Befehle abgekürzt. Nache einem Blick in Dein Manual zeigte sich, dass die Abkürzungen sich teilweise geändert haben oder nicht mehr existent sind - schade - aber gut - dafür gibt es ja 95 Zeilen. Nach einigen Änderungen, Speichern, Probieren usw. (ca. 1h) und ersten Erfolgen passierte etwas merkwürdiges: Bei Aufruf des Editors wurden zunächst nur viele "X" anstelle der belegten Programme angezeigt, nach ein paar Sekunden Programmfragmente, dann fing der Ton an zu knarren und das Bild verschwand. Nach "Reboot" (CTRL-ALT-DEL) startet der Computer neu. Die kleinen Testprogramme laufen noch und lassen sich editieren. Die 4 grossen (max. Zeilenanzahl der MEGA32-Version) verhalten sich gleich: bei Aufruf des Editors nur "X", dann Fragmente, knarren und aus. Frage: hat eines der Programme beim Speichern evtl. das Flash korumpiert ? Gruss Otto
Datum:
Hallo Jörg, und noch eine Frage: kann ich ohne Weiteres "BOD-Level" auf 2,7V setzen - bzw. würde Deine SW auch mit 3,3V arbeiten ? Gruss Otto
Datum:
Hallo Otto, Das niederwertigeste Bit der LOW-Fuse gibt nur an, nach wieviel Oszillatorzyklen der Controller startet. Bei E7 dauert es etwas länger, sollte eigentlich sogar noch besser sein. Ich habe versucht, die bei Dir aufgetretenen Effekte nachzuvollziehen, es ist mir aber nicht gelungen. Lediglich gibt es bei NTSC ein leichtes Kantenflimmern (hauptsächlich in den Grafikmodi), wird aber mit der nächsten Version behoben sein. Kannst Du ein Verify Deines Flash-Inhaltes machen? Die BASIC-Programme liegen im Bereich 0x4800 bis 0x77ff (bzw. 0x9000 bis 0xefff wenn Byteweise gezählt wird) Ausserhalb dieses Bereiches darf sich nichts änderm! Eventuell könntest Du mir auch eines der fraglichen BASIC-Programme schicken, dann würde ich es hier testen. Sicherheitshalber mache ich in die nächste Version eine einfache Prüfsumme mit rein. Es deutet alles auf Flash-Korrumption hin, die könnte aber auch durch Probleme in der Stromversorgung entstehen. Bei der Mega32-er Version hatte ich am Anfang ähnliche Probleme, die sich mit einem zusätzlichen Abblock-Kondensator lösen liessen. Gruß Jörg
Datum:
Glatt vergessen: bei 3,3V wird der Mega644 die 20MHz wohl nicht schaffen, zumindest wird es nicht zugesichert. Gruß Jörg
Datum:
Hallo Jörg, ich habe Dir die Basic - Programme und die aus dem Controller ausgelesene Hex-Datei gemailt - ist das Mail angekommen ? Gruss Otto
Datum:
Angehängte Dateien:Leider gab es im ersten Release ein paar Bugs beim Komprimieren und Dekomprimieren von "langen" Zeilen. Außerdem habe ich die Sprite-Routinen neu geschrieben, die Daten können jetzt beliebig im Array liegen und die Anzahl wird auch nur durch die Größe des Arrays begrenzt. Dann gibt es eine Erweiterung bei PRINT, es lassen sich auch nullterminierte Zeichenketten aus dem Array ausgeben. Und ACOPY mit dem Teile des Array umkopiert werden können. Und Zuguterletzt habe ich mich der Audio-Ausgabe etwas angenommen. Es gibt jetzt eine zweite Klangfarbe und, einen Sequenzer der seine Daten aus dem Array holt und komplett im Hintergrund läuft. Das Thema 24C512 als Programmspeicher ist erstmal wieder vom Tisch, da ich den Code nicht mehr komplett in den Controller bekommen habe. Da das Projekt schon recht komplex und für Anfänger wohl eher undurchschaubar ist, würde ich bei Interesse auch die eine oder andere Routine herauslösen und dokumentieren. Ansonsten viel Spaß damit Gruß Jörg
Datum:
Hallo Jörg, vielen Dank für die neue Version - ich hätte da mal zwei dumme Fragen: 1. Wäre es möglich, Programme unter anderen Nummern (z. B. "Programm 2" unter "Programm 5") zu speichern (Backup) um ggf. bei Programmierfehlern oder Fehlfunktionen das Original wieder "zurückzuholen"? 2. Wäre es möglich, Programme ausserhalb des Editors komplett zu löschen (also z. B. "delete program 2") Gruss Otto
Datum:
Mal sehen, ob es der Platz im Flash noch erlaubt. Vielleicht als zweite Tastaturebene im Hauptmenü mit "CLEAR" und "COPY". Im Moment steht aber eigentlich erstmal die Überarbeitung der Hardware-Doku an... Gruß Jörg
Datum:
Hallo alle zusammen, Leerplatinen und Bausätze sind jetzt bei www.it-wns.de verfügbar ;) Schönes Wochenende... Gruß Thomas
Datum:
@Joerg Hab da mal ne Frage: Kann man bei deiner neuen Masken Funktion von: "out" auch die 8 Ports Binär ansteuern? Bzw. könnte man es implementieren? Gruß Robin T.
Datum:
Wenn Du meinst, alle Bits anzusteuern, dann geht das so: out $1ff, wert Damit wird die Maske auf %1111111 gesetzt und der LOW-Teil von wert auf die Portleitungen geschrieben. Gruß Jörg
Datum:
Angehängte Dateien:So habe da mal ein Programm geschrieben mit welchem man das Ausgabeformat von "Print !wert "Text", Zahl, Variable" auswählen und anzeigen kann. Man brauchs vlt. nicht unbedingt aber mir persönlich erleichterts die Formatierung vom Text mit Print. Viel Spass damit P.S.: Falls es nicht funktioniert hab ich was beim Compilieren vergessen. Passiert auch mir.
Datum:
bei mir fehlt "BORLNDMM.DLL" - schade Gruss Otto
Datum:
Hallo Robin, vielen Dank für Deine schnelle Reaktion - leider hat sich nichts geändert: Mein PC vermisst "BORLNDMM.DLL" und meint, eine "Neuinstallation der Anwendung" würde helfen..... Viele Grüsse Otto
Datum:
Angehängte Dateien:So habs von jemandem testen lassen. Funktioniert.
Datum:
Hallo Robin, vielen Dank - funktioniert wunderbar ! Gruss Otto
Datum:
Angehängte Dateien:So, hier kommt die neueste Version. Da ich die Doku in großen Teilen überarbeitet habe, ist das Archiv kräftig gewachsen. Dafür gibts jetzt auch ein paar Beispielprogramme. - Kopieren und Löschen von Programmen aus dem Hauptmenü heraus - Editor springt nach dem Speichern nicht mehr automatisch zum Anfang - SIN() und COS() arbeiten jetzt mit ganzen Grad-Werten - Bugfix bei obigen Funktionen (teilw. falsche Werte im 3.Quadranten) - Checksumme für System-Flash - Kleine Änderungen an der Optik (Versionsanzeige nur bei Info) - diverse kleine Bugfixes Die große Sinus-Tabelle musste leider wegfallen, da es zwischenzeitlich sehr eng im Flash geworden war. Viel Spass damit! Gruss Jörg
Datum:
Danke für die neue Version. Bin schon ganz aufgeregt sie zu testen! Vorallem die Beispiele. Gruß Robin T.
Datum:
Hallo Jörg, auch von mir vielen Dank ! Viele Grüsse Otto
Datum:
Naja, viel weltbewegendes ist noch nicht dabei, ich bin aber am überlegen ob ich nicht so eine Art "Codesammlung" auf meiner Seite aufbaue. Gruß Jörg
Datum:
Das hatte ich im Mega32 Tread schonmal vorgeschlagen (glaub ich). Das Leute die Programme für den BASIC-PC entwickeln und auf deiner Seite hochladen können. Darauf hatte Otto mir zugestimmt "Damit man das Rad nicht immer neu erfinden muss". Hab ich ein Gedächtnis wow :) Gruß Robin T.
Datum:
Hallo Jörg, gerade habe ich die Dokumentation aud Deiner Homepage angesehen: alle Achtung ! hallo Jörg und Robin, ja so eine Codesammlung würde ich auch gut finden.... Gruss Otto
Datum:
Angehängte Dateien:Ich hab gerade noch drei Fehler gefunden: - beim UNI-BAS Adapter war das falsche Bild dabei - Die Belegungstabelle für den UNI-Anschluss war unvollständig - im Programm PONG fehlte in Zeile 57 ein "END" naja, nix schlimmes aber ärgerlich ist es trotzdem. Gruß Jörg
Datum:
Hi, hab da mal ne Frage bezüglich dem Befehl: "ICOMM" Wie kann ich damit das EEProm auslesen? Ich habe es geschafft zu schreiben aber lesen nicht. Ich weiß dass ich da eine 1 an die Adresse hängen muss aber wohin speichert er die Daten bzw. wie gebe ich an wohin er die speichern soll? Danke
Datum:
Ach und noch was: Ich habe hier seit der Meag 32 Version einen fertig bestücken BASIC-PC es fehlen lediglich die EEPROMS und der Mega32/644. ABER: Ich habe es nie verwendet weil ich die beiden 9-Poligen Buchen/Stecker vertauscht habe. Eigentlich müsste man das 9-Polig->Scart-Kabel nur Spiegelverkehrt herstellen aber dazu habe ich keine Lust. Vlt. kanns ja jemand gebrauchen. Materialkosten wollte ich dann aber doch wieder raus haben (müsst ihr mir lassen^^) 5 Euro. Gruß Robin T.
Datum:
Für EEPROMs die 2 Adressbytes brauchen (24C16, 24C65...) ist es einfacher, den EEPROM auf Adresse 1 zu setzen und dann XPOKE sowie XPEEK() zu nehmen. In der aktuellen Version geht es bis zum 24C512. Ansonsten braucht man halt das Datenblatt, meist kann man den Adresszeiger im EEPROM durch einen unvollständigen Schreibvorgang setzen. Ausprobiert habe ich es aber noch nicht, da mir die eingebauten Befehle genügt haben. Gruß Jörg
Datum:
Hallo Jörg, ich hätte mal wieder eine meiner dummen Fragen: ist es möglich, die MEGA32-Version in den MEGA644 Controller zu flashen - falls ja, geht das ohne Änderung der Fuses ? Hintergrund ist, dass ich den Chip der im Fahrzeug eingebauten Platine direkt einlöten möchte, jedoch mit meinem Programm für den 644 noch nicht fertig bin. Gruss Otto (ja - genau der ;-) )
Datum:
Hallo Otto, leider geht das nicht so einfach, da beim Mega644 einige IO-Register anders liegen und nicht mit IN/OUT angesprochen werden können. Ich werde mir am WE mal abschauen, wie gross der Aufwand wäre. Gruss Jörg
Datum:
Hallo Jörg, vielen Dank für Deine Rückmeldung - kein Problem, dann löte ich einen MEGA32 ein - es war nur eine Frage - ich wollte Dir keine unnötige Arbeit verschaffen ! Viele Grüsse Otto
Datum:
Hallo, ich habe mir die ältere Version mit Mega32 nachgebaut und finde den Mini-Computer schon echt klasse. Nun hätte ich mal eine Frage dazu: Wäre es möglich auf die Video Ausgabemöglichkeit zu verzichten und dafür ein LCD 240x128, Controller T6963c da er für diese Auflösung wohl am meisten verwendet wird, zu nutzen ? Die Displays bekommt man inzwischen relativ günstig und man hätte einen Mini-Basic Computer der auch noch ohne weiteres "tragbar" wäre. Sicher Farben gibt es keine mehr aber dafür braucht man auch nicht immer einen Fernseher dafür. Die Auflösung als solche wäre sogar höher. Nur mal so als Gedanke.... Gruß Harry
Datum:
Dann beibt aber trotzdem noch ein kleines Problem mit der zu grossen Tastatur. Da es auch passende Farb-Displays gibt (das in der Doku angegebene NEC, aber auch diverse PS-Displays sollten gehen) sehe ich keinen großen Bedarf an einer GLCD-Lösung. Vor allen Dingen wüsste ich nichts damit anzufangen... Eine neue Version mit einem kleinem Intro-Screen, ein paar Anpassungen an simpler gestrickte Assembler als den AVRA und SPI aus dem BASIC heraus wird es demnächst geben, eventuell auch eine Version für den Mega8. Dort steht allerdings noch die komplette Dokumentation aus. Und ich überlege mir (mal wieder) ob sich der Aufwand lohnt, den Quelltext für eine Veröffentlichung aufzubereiten. Gruss Jörg
Datum:
Inzwischen sind leider ein paar Bugs aufgetaucht, die nächste Version kommt aber wahrscheinlich erst nächste Woche, da ich am WE auf dem VCFe bin. 1. Wenn nach einer Funktion ein "-" kommt, wird das was vorher da war gelöscht. SQR(9)-1 ergibt also -1 anstelle von 2 2. Wenn wortweise in das Array geschrieben wird, enthalten beide Bytes im Array das LOW-Byte 3. RND(x) liefert maximal die Hälfte von x zurück anstelle 0...x-1 4. Bei EPOKE wird manchmal nicht ins EEPROM geschrieben 5. Die "Press ESC" Meldung am Ende wird manchmal übersprungen Ansonsten wird es Zugriff auf die SPI-Schnittstelle geben, ein "Scrollfenster" (in 4 Richtungen scrollbar) im Textmodus und einen Intro-Screen. Außerdem habe ich das Timing etwas geändert, auf manchen TV's steht das Bild jetzt wesentlich ruhiger. Und ich habe auf Anfrage ein paar Sachen geändert, damit das Ganze mit dem AVRASM32 etwas "verträglicher" wird. Geplant ist eventuell noch eine Möglichkeit, eigene Assemblerprogramme via Hexcode auszuführen. Wobei sich die Frage stellt, inwieweit soetwas sinnvoll nutzbar ist. Ausserdem will ich noch testen, ob man nicht ein frequenzmoduliertes Signal am seriellen Eingang auswerten kann. Dann wäre es einfach möglich, ein Programm mittels Diskman oder MP3-Player zu laden. Bei der Mega8-Version "kämpfe" ich momentan noch mit der Codegröße, momentan sind noch 18 Bytes frei was eine Portierung auf den Mega88 unmöglich macht. Screenshots habe ich noch keine (geht nur mit Kamera), dafür ein paar Eckdaten: - 23 Zeilen a 30 Zeichen monochrom - Pseudografik mit Punkten, Linien, Rechtecken, Großschrift - 20 Programmzeilen mit je 25 nutzbaren Zeichen - minimales BASIC, arbeitet mit Byte-Werten - Ein Programm im Flash - 1 Audiokanal (Sägezahn mit Hüllkurve) - PS2-Keyboard - seriell IN und OUT mit 1200Bps, Laden und Speichern, Zugriff vom Basic - 4 universell nutzbare IO (IN/Out/ADC) - Fullscreen-Editor - Autorun-Modus über Jumper - Externer Datenspeicher (4 Programme) mit 24C16, Programmauswahlbox Allerdings ist der Sourcecode aus Speicherplatzgründen für Aussenstehende nicht mehr einfach nachvollziehbar, teilweise gibt es bedingte Sprünge aus einer Subroutine zur anderen und zurück, nur um ein paar Bytes zu sparen. Aus diesem Grund und der ganzen "AVR-Studio-Problematik" wird es vorerst aber nur noch Hexfiles davon geben. Gruß Jörg
Datum:
Boah wie cool!! Bei der sache mit dem ASM32 fang ich fast an zu sabbern vor lauter aufregung. Danke für deine Mühen, bin schon sehr gespannt. Gruß Robin T.
Datum:
Hi AVR-ChipBasic2-Fans Ich versuche vergeblich ein Programm im Flash zu speichern. Version ist V0.72 mit Atmega644. Ich gehe folgendemaßen vor: Im Hauptmenue rufe ich mit F1 den Editor auf. Der Editor öffnet ein Template mit Programmname und den Basic-Zeilennummern. Mit F1 [Programname] gebe ich einenProrammnamen ein. mit Return springt der Cursor in die erste Basiczeile. Jetzt gebe ich ein PRINT "HALLO" und ein return. Mit F2 [SAVE] erfolgt die Abfrage SAVE Y/N . Mit der EIngabe von Y werden die Basiczeilen gelöscht. Mit ESCAPE gehe ich zurück ins Hauptmenue, aber unter P1 steht kein Programmname. Wie speichert ihr ein Programm ? Was mache ich falsch ? Vielen Dank Gero
Datum:
Hallo Gero, hast Du evtl. die Fuses zum Sichern des Flash gesetzt ? Otto
Datum:
Hallo Otto Danke ! Die Fuse war falsch. Im AVR-Studio 4.13 muß EESAVE gesetzt sein ( ein Häckchen haben) Nochmals danke Gero
Datum:
Angehängte Dateien:So, die aktuelle Version ist jetzt online. Neben einigen Bugfixes gibt es wie angekündigt auch ein paar neue Funktionen (Scrollen, SPI). Und zwei neue Beispielprogramme sind auch mit dabei. Ein kleines "Autorennspiel" une eine Art Oszilloskop mit sagenhaften 50Hz Samplerate und Grafik-Scrolling mittels BCOPY. Um nicht immer die großen Archive zu posten, verweise ich auf meine Webseite: http://www.jcwolfram.de/projekte/avr/chipbasic2/main.php oder zum Download bei Berlios: http://developer.berlios.de/projects/avr-chipbasic Viel Spass damit Gruß Jörg
Datum:
Vielen Dank für die neue Version! Vorallem mit dem Oszi habe ich schon gespielt ;) Wird immer interessanter damit zu programmieren. Aber die Idee mit dem Assembler Interpreten mach mich "spitz" auf weitere Versionen. Danke Gruß Robin T.
Datum:
Hi Jörg, aus irgendwelchen Gründen kann ich kein "@" im BASIC-PC schreiben? Wäre nett wenn du mal schaust was das ist. Oder vlt. liegts auch an mir? Gruß Robin T.
Datum:
Hmmm, schaue ich morgen mal nach, sollte eigentlich gehen. Shift und 3 müsste auch gehen. Gruß Jörg
Datum:
Hallo Robin Hast Du evtl. im KONFIG die 3.Zeile des Keyboard layout gewählt? Die wollte bei mir auch nicht den Klammeraffen @ ausgeben. Nur die 1.Zeile DE(QWERTZ) gibt den @ aus. Gero
Datum:
Puh, gute Frage. Werd ich gleich mal überprüfen, danke für den Tipp. Gruß Robin T.
Datum:
Das wars. Danke nochmal für den Hinweis. Gruß Robin T.
Datum:
Hab da noch mal ne Frage. Es gibt ja den Jumper mit dem man zwischen PAL und NTSC wechseln kann. Könnte man nicht NTSC wegnehmen und VGA stattdessen einfügen? NTSC haben sicher eh nur die wenigsten. Und das er kein VGA hat ist das einzige was den BASIC-PC für mich noch unportabel macht. Gruß Robin T.
Datum:
Hallo Robin,
>NTSC haben sicher eh nur die wenigsten.
(fast) jeder, der den Computer an ein PKW-NAVI-Display anschliessen
möchte (so zum Beispiel ich) benötigt NTSC.....
Gruss Otto
Datum:
VGA geht leider nicht wegen des Timings. Das erste Problem ist der Pixelclock. Für 640x480 und 60Hz brauche ich schon ca. 7MHz um die gleiche Auflösung zu erreichen. So schnell lassen sich aber die Daten nicht ausgeben ohne die SPI-Schnittstelle zu bemühen. Mit einem externen CPLD an der Videoschnittstelle geht´s zwar, ist aber trotzdem nicht praktikabel. Denn aufgrund der höheren Zeilenfrequenz ist die horizontale Austastlücke viel zu kurz um Tastatur, serielle Schnittstelle und Sound zu bedienen. NTSC brauche ich z.B. für mein NEC TFT-Display, auch die meisten LCD-Fernseher haben nur 240 Zeilen und lassen bei PAL einfach Zeilen aus was eine vernünftige Darstellung eigentlich unmöglich macht. Nach der jetzt erschienenen Mega8/88 Version wird es nur noch Bugfixes und kleinere Korrekturen geben, da meiner Meinung nach einfach nicht viel mehr machbar ist. Das nächste Projekt steht aber schon in den Startlöchern... Gruß Jörg
Datum:
Ok. Dann füge ich mich der Realität ;)
joergwolfram wrote:
>Das nächste Projekt steht aber schon in den Startlöchern...
Ich freu mich drauf :)
Gruß
Robin T.
Datum:
Hallo Jörg, vielen Dank für die neue Version - ich bin erst jetzt dazu gekommen, diese auszuprobieren. Mit dem "Racer" hast Du meinen lieben Kleinen (19 und 16) eine Riesenfreude bereitet.... Auch die Grafik ist toll! Welchen Befehl muss ich eigentlich nun anstelle "call" verwenden - nach Referenz doch "gos" - oder ? Irgendwie klappt es bei mir mit den Unterprogrammen nicht......wird sicher an mir liegen - werde es schon finden... Am Ende der Zeile wird bei einem (zum Beispiel) "gos 87" ab einer bestimmten Zeilenposition (bei der die "87" aber noch in die Zeile "passt") nach dem "save" das "87" gelöscht. Gruss Otto
Datum:
GOSUB oder GOS sollten eigentlich beide gehen. Kannst Du mir das fragliche Programm mal mailen dann schaue ich mal nach, woran es liegen könnte. Gruß Jörg
Datum:
Mir ist noch was eingefallen: Eventuell könnte es daran liegen, wenn in einer Zeile mehrere einstellige Zahlen als Operanden vorkommen und die Zeile bis zum Ende ausgereizt wird. Die Ursache dafür liegt im Tokenizer, der alle Konstanten <256 in Token und ByteValue, also 2 Bytes umwandelt. Die belegen dann im Speicher zwei statt 1 Byte. Als Workaround erstmal solche Situationen vermeiden. Für die nächste Version werde ich den Tokenizer so umschreiben, dass er Konstanten <10 nicht tokenisiert. Der Geschwindigkeitsverlust zur Laufzeit sollte dabei auch nicht so hoch sein wie bei großen Zahlen. Gruß Jörg
Datum:
Angehängte Dateien:Da das nächste offizielle Release wohl noch etwas dauern wird, hier schon mal eine neue Version zum testen. - Bugfix im Tokenizer, der manchmal Zeilenenden abgeschnitten hat - neuer Befehl BORDER n [BO] um die Randfarbe zu setzen - Baudrate kann im Config-Menü auf 2400 umgestellt werden Bei 2400Bps hat die serielle Schnittstelle einen Jitter von +-10%, da die Bitrate aber an sich stimmt, sollte es nur mit den wenigsten geräten Probleme geben. In der Planung ist ein 32K RAM-Modul mit einem kleinen CPLD, welches an den Druckerport angeschlossen werden kann. Neben einer Erweiterung des Arrays sollen auch neue Videomodes dazukommen. Gruß Jörg
Datum:
Hallo Jörg, das ist ja super - speziell die höhere Baudrate. noch ein paar dumme Fragen für die letze Version, auf die ich trotz intensiver Suche keine Antworten gefunden habe: 1. Gibt es einen Befehl wie "Border", der das "Outputfenster" komplett in einer Farbe füllt (nicht "Color") ? 2. Gibt es nur für die Befehle eine Abkürzung, bei denen dies in der Basic-Referenz auf Deiner Homepage steht ? 3. Ich erhalte überhaupt keine Fehlermeldungen mehr - muss ich diese mit "On Error" selbst auswerten ? Ein Beispiel zu den Fehlermeldungen: ich schreibe in einer Zeile nur "XXXX" und es kommt keine Fehlermeldung. 4. Die Abfrage: "RKEY A:IF A <> 237 GOTO xyz" funktioniert nicht - was hat sich hier geändert ? Viele Grüsse Otto
Datum:
Hallo Otto, ich versuche mal Deine Fragen kurz zu beantworten: 1. geht nur mit COLOR fg,hg Farbe setzen dann CLS oder CBOX 2. Abkürzungen gibt es nur, wo sie auch in der Doku stehen 3. und 4. sollten in der Version 0.82 funktionieren (gerade getestet) 01 RKEY A:IF A <> 237 GOTO 1 02 03 ? "ESC", 04 RKEY B:IF B > 0 GOTO 4 05 GOTO 1 gibt bei jedem Druck von ESC den Text "ESC" aus. Gruß Jörg
Datum:
Hallo Jörg, hurra - Du lebst noch - dann werde ich die neueste Version mal testen Vielen Dank Otto
Datum:
Nun ja, die 0.81 wollte ich Dir eigentlich per mail zum testen schicken, dann hatte ich aber noch einen Fehler gefunden und dann ist mir das mit den 2400Bps eingefallen. Durch die höhere Geschwindigkeit ist jetzt auch ein Bootloader mit Aktualisierungszeiten unter 5 Minuten möglich, mal sehen wie es mit dem Speicherplatz aussieht. Mein nächstes Projekt hat auch teilweise mit ChipBasic zu tun, ich bastle im Moment an einem AVR-Handheld. Mit 128x64 LCD, 6 Tasten, SPI-Slot zum Programmieren und für das Dataflash-Modul und einem 9-pligen Steckverbinder für RS232, Video/Audio (parallel zum LCD möglich), I2C, +5V und Ladeanschluß für den eingebauten Akku. Ein Novum wird aber die Programmierung sein. Die nächste ChipBasic-Version wird dazu einen zusätzlichen Videomode mit 128x64 monochrom bekommen. Der Handheld selbst enthält eine (abgespeckte) Runtime-Version des ChipBasic-Interpreters und kann die Programme vom Dataflash lesen und ausführen. Später sollen dann noch ein Chip8/SChip Interpreter und eine Art grafische Programmierung über Funktionsblöcke dazukommen, aber das ist im Moment noch "Zukunftsmusik". Wenn jemand Ideen dazu hat, vielleicht lässt sich ja die eine oder andere noch berücksichtigen (außer bei der Hardware, die steht eigentlich schon fest, lässt sich aber durch die rausgeführte I2C Schnittstelle relativ leicht erweitern). Gruß Jörg
Datum:
Joerg Wolfram wrote: > Mein nächstes Projekt hat auch teilweise mit ChipBasic zu tun, ich > bastle im Moment an einem AVR-Handheld. Mit 128x64 LCD, 6 Tasten, > SPI-Slot zum Programmieren und für das Dataflash-Modul und einem > 9-pligen Steckverbinder für RS232, Video/Audio (parallel zum LCD > möglich), I2C, +5V und Ladeanschluß für den eingebauten Akku. Respekt das du nicht aufhörst. Macht richtig Spass deine Projekte abzuwarten und nachzubauen ;)
Datum:
An Aufhören hatte ich eigentlich noch nie gedacht. Lediglich die Frage, ob Open Source oder Freeware stelle ich mir aufgrund des sehr mageren Feedbacks und diversen "Unverträglichkeiten" mit anderer Software immer wieder. Jörg
Datum:
Hallo Joerg, also war meine damalige Idee mit den Display (ich meinte damals zwar ein 240x128) doch garnicht soooo schlecht grins Grüße und mit Spannung auf den Handheld warte ;-) Harry
Datum:
....Mit 128x64 LCD..... klasse, dann braucht man sich nicht mehr um diese fbas-kacke kümmern und man hat mehr spielraum für das basic usw.
Datum:
@Harry Das war auch damals der Punkt an dem ich angefangen habe, ernsthaft darüber nachzudenken. @neuer Die "fbas-kacke" wird auch in dem neuen Projekt bleiben, es gibt einen Videoausgang und das LCD wird zyklisch aus dem video-RAM im Controller aktualisiert. Allgemein: Das BASIC wird bis auf ein paar Abstriche identisch mit dem des ChipBasic2 sein, damit ich die bestehende Codebasis nutzen kann. Das ganze wird also zunächst nur eine Art "Abspieler" für ChipBasic2-Bytecode sein, was an weiteren Funktionen dazukommt steht zum jetzigen Zeitpunkt noch in den Sternen. 100%ig steht aber fest, dass ChipBasic2 (zumindest von meiner Seite her) wohl die einzige Entwicklungsplattform für das "Mobilteil" sein wird, Programmentwicklung (BASIC) auf dem PC habe ich nicht vorgesehen. In den nächsten Tagen wird es erstmal ein neues ChipBasic2 Release geben, mit der zusätzlichen Auflösung und auch ein Bootloader (X-Modem mit 2400Bps) wird mit dabei sein. Und ein paar böse Bugs muss ich auch noch rausmachen... Bis dahin ein schönes WE Jörg
Datum:
Frage: Ich möchte gerne RKEY und WKEY "wegrationalisieren", um ein paar Token freizukriegen. Dafür will ich die Funktion KEY() erweitern: KEY(0) - liefert die momentan gedrückte Taste oder 0 zurück KEY(1) - wartet auf Tastendruck und liefert Code zurück KEY(2) - wartet auf Taste losgelassen und liefert letzten Keycode zurück KEY(3) - liefert Status der Shift/Ctrl/Alt-Tasten zurück KEY(4-7) entsprechen dann den bisherigen Key(0-3) Key(16...) Es wir dauf die entsprechende Taste gewartet, anstelle 01 RKEY A:IF A <> 237 GOTO 1 steht dannn A=KEY(237) Mit den freigewordenen Tokencodes will ich eine Art "Eventbehandlung" oder "Multitasking" realisieren. So, und jetzt die eigentliche Frage: Inwieweit würde das bestehende Projekte bei Euch betreffen? Jörg
Datum:
Bei mir würde es kein Projekt beeinflussen. Allerdings finde ich deinen Vorschlag sehr gut für zukünftige Projekte. Man muss sich nicht mehr soviel Befehle merken. Dann würde es nurnoch Key(..) geben. Gruß Robin T.
Datum:
Hallo Joerg, die paar Zeilen zu ändern ist kein Drama - ausserdem ist die Zeile mit der Abfrage kürzer :-) Gruss Otto
Datum:
Angehängte Dateien:So, mal wieder ein kleines Hexfile zum Testen. Wie schon angekündigt, habe ich WKEY und RKEY rausgeschmissen und die Funktionalität in die KEY() Funktion verlagert. KEY(0) - liefert die momentan gedrückte Taste oder 0 zurück KEY(1) - wartet auf Tastendruck und liefert Code zurück KEY(2) - wartet auf Taste losgelassen und liefert letzten Keycode zurück KEY(3) - liefert Status der Shift/Ctrl/Alt-Tasten zurück KEY(4-7) entsprechen dann den bisherigen Key(0-3) Key(16...) Es wir dauf die entsprechende Taste gewartet, Der neue Grafikmodus hat die Nummer 5, im Gegensatz zu den anderen Grafikmodi lässt sich hier auch der Monitor benutzen. In allen Grafikmodi kann mit FONT n (0/1) zwischen dem normalen 10x6 Font und einem kleineren 6x4 Font umgeschaltet werden. Neu sind auch die Funktionen RREAD page,(0/1/2) und RWRITE page,(0/1/2) mit denen direkt auf das Dataflash zugegriffen werden kann sowie die Funktion MENU(n) wobei n ein Zeiger auf 60 Zeichen Text im Array ist. Normalerweise werden die ersten 30 Zeichen angezeigt, bei gedrückter linker CTRL-Taste die restlichen 30 Zeichen. Der Returnwert gibt den gewählten Menüeintrag (1-10) an. Auf der Konfigurationsseite können jetzt verschiedene Einstellungen zu den Schnittstellen getätigt werden. Der Handheld nimmt auch langsam Form an, die Hardware und auch ein Teil der Software (Ein/Ausgaberoutinen) sind schon fertig. Wie gewohnt geht es bei der Hardware recht minimalistisch zu, ein Mega644, ein 128x64 Display mit ks0108 Controller, 6 Taster und ein bisschen Kleinkram, bei mir ist noch ein LI-IOnen Akku und Step-up dabei. Als Software wird es neben der ChipBasic2 Runtime noch einige Tools geben: - Stoppuhr mit 1/1000s Auflösung (kann über SDA/SCL getriggert werden) - GPS-Anzeige für die NAVI-S und evtl. andere Module - und was sonst noch reinpasst Stromlaufplan und erste Hexfiles folgen demnächst, allerdings werde ich das Projekt vorerst nur als Freeware veröffentlichen. Jörg
Datum:
Juhu! Wieder was zum spielen. Dankeschön ;)
Datum:
mmh. Ich bekomme es leider nicht gebrannt. Er sagt kein gültiges Intel-Hex Format.
Datum:
hmm, da habe ich heute nacht die falsche Datei erwischt, hole ich aber am Abend nach. Sorry, Jörg
Datum:
Angehängte Dateien:Das sollte jetzt die richtige Datei sein. Mit den Fusebytes LOW 0xe6 HIGH 0xd2 EXT 0xfc sollte auch beim Start (serielles Kabel angesteckt) der Bootloader zu sehen sein. Jörg
Datum:
Nochmals Danke ;)
Datum:
Ich habe dieses tolle Projekt nachgebaut, um meinen Kindern mal die "alten Zeiten" zu zeigen - hat großen Anklang gefunden. Jetzt aber zum Problem: mit der Version 0.75 geht alles - wenn ich aber die 0.85 flashe, dann gehen bei mir die F-Tasten nicht mehr und auch die Cursor-Tasten gehen nicht, nur am Ziffernblock, wenn ich vorher NUMlock drücke. Tastatur ist ein Cherry PS/2 Keyboard... Ist das ein Bug in 0.85 oder hat es eine andere Ursache ?
Datum:
WHerzog wrote: > Ich habe dieses tolle Projekt nachgebaut, um meinen Kindern mal die > "alten Zeiten" zu zeigen - hat großen Anklang gefunden. > > Jetzt aber zum Problem: mit der Version 0.75 geht alles - wenn ich aber > die 0.85 flashe, dann gehen bei mir die F-Tasten nicht mehr und auch die > Cursor-Tasten gehen nicht, nur am Ziffernblock, wenn ich vorher NUMlock > drücke. > Tastatur ist ein Cherry PS/2 Keyboard... > > Ist das ein Bug in 0.85 oder hat es eine andere Ursache ? Das Problem hatte ich auch. Du musst in den Einstellungen auf Deutsche Tastaturbelegung einstellen. Die F-Tasten funktionieren mit Alt-Gr
Datum:
Ja, das ist leider ein Bug, der Offset für die zweite Tastaturtabelle stimmt leider nicht. Ebenso fehlen ein paar Werte in der Sinustabelle. Danke für den Hinweis, korrigierte Version kommt in den nächsten Tagen. Jörg
Datum:
Sorry, aber es wird noch ein paar Tage dauern, bis das nächste Release kommt. Das Flash war einfach schon zu voll, und so musste ich einige Sachen erstmal "umorganisieren". Im Ergebnis sind jetzt wieder ca. 3K frei. Da ich parallel dazu den Handheld entwickle (Hardware ist fertig und auch ein Teil der Programme läuft schon), sind aus Kompatibilitätsgründen immer wieder kleinere Anpassungen notwendig. Im BASIC will ich noch EMIT rausstreichen, da das auch über PRINT % geht. Dafür wird es eine Baudratenumschaltung geben. Beim Handheld habe ich folgende Raten vorgesehen: 1200, 2400, 4800, 9600, 19200, 31250 (MIDI), 38400, 57600 Beim Computer mit Mega644 lassen sich nur die Raten 0/1 wählen, beim Handheld und einer möglichen 644P-Variante sind dann alle Raten verfügbar. Da ich den Handheld aus verschiedenen Gründen nicht mehr als Open-Source veröffentlichen werde, stellt sich natürlich die Frage nach einem geeigneten Forum (falls überhaupt interessant), da die Codesammlung eindeutig nicht der richtige Platz dafür ist. Jörg
Datum:
Joerg Wolfram wrote: > die Frage nach einem > geeigneten Forum (falls überhaupt interessant), da die Codesammlung > eindeutig nicht der richtige Platz dafür ist. Veröffentliche es einfach auf deiner Website und mach in diesem Beitrag hier ein kleinen Link weil mich interessiert der Handheld ziemlich.
Datum:
Ich habe das Ding gebaut mit ein AT45DB041D Erweiterung. Es funktioniert nicht, weil mit AT45DB041B funktioniert es problemlos. Ich habe eine Frage - warum, in ATmega 644 version, sind die Benutzer-programme nicht mehr in die I2C EEPROMe speichern? Es war eine bessere Lösung, meiner Meinung nach. Ich hoffe dass Sie haben mein Post verstanden, Ich lerne Deutsch :)
Datum:
Hi Krzysztof, zum AT45DB041D werde ich mir mal das Datenblatt anschauen, inwiefern ich das Programm anpassen kann. Der Hauptgrund, Dataflash anstelle EEPROM einzusetzen, ich habe noch genug davon und sie bieten mehr Speicherkapazität. Jörg
Datum:
Angehängte Dateien:Nach doch etwas längerer Wartepause gibt es wieder eine neue Beta-Version. Neu dazugekommen ist das Senden und Empfangen von Programmen via XMODEM, ausserdem ändert sich das Programmicon, je nach Inhalt. So können die Programme demnächst dann auch nativen AVR-Binärcode enthalten. Bis das API nutzbar ist, wird es aber noch ein paar Tage oder Wochen dauern. Nach längerem Hin-und-herüberlegen wird der AVR-Handheld nun doch auch ein Opensource-Projekt werden. Zentrale Hardware ist ein Mega644 und ein 128x64 Grafikdisplay. Alternativ kann auch ein Fernseher angeschlossen werden. Zusätzlich wird eine DS3232 RTC unterstützt, kann man auch als Sample von Maxim bekommen. UART, I2C und zwei Portpins, die auch am ADC hängen, sind herausgeführt. Folgendes habe ich bereits implementiert: - Bedienoberfläche mit Symbolen - Runtime für Programme 1-4 kompatibel zu ChipBasic2 - Stopp-Uhr mit 1/1000s Auflösung - Wecker (braucht RTC) - Zeitmessung (Pulsdauer, Verzögerung) - Temperaturmessung mit LM75 - 2 Kanal Mini Logikanalysator mit max. 4 MS/s - GPS-Anzeige für Module mit serieller Schnittstelle - 2 Kanal Zähler Wenn Interesse besteht, kann ich auch ein pre-Projekt mit minimaler Dokumentation veröffentlichen. Gruß Jörg
Datum:
Hallo Jörg, da bin ich ja mal gespannt - sind die Fuses die selben wie immer ? Gruss Otto
Datum:
Ich freue mich schon wahnsinnig auf den Handheld. Wann wird der voraussichtlich veröffentlicht?
Datum:
Hallo Joerg, ich habe zwar in letzter Zeit nicht mehr viel geschrieben, aber bin noch mit Spannung dabei. Also das mit dem Handheld ist wirklich super wenn Du es rausbringst. Auch das Du Dich für die Open-Source Variante entschieden hast find ich wirklich klasse. Mein Display liegt schon rum und wartet eingelötet zu werden^^ Da ich Dich aber nicht mit nervigen Fragen nach dem Erscheinungsdatum abhalten will weiter zu machen, warte ich einfach weiter^^ Wir sind ja nicht auf der Flucht... ;-) Schönen Gruß aus dem regnerischen Berlin Harry
Datum:
Wichtig ist (zumindest für mich), dass zum erstem Release-Zeitpunkt die internen Strukturen (Speicherbelegung, EEPROM) schon festliegen. Und die bin ich gerade am Überarbeiten. Und dann kommt eine neue Idee und alles muss nochmal neu aufgerollt werden... Zum Beispiel hat mich gestört, dass für eine bestimmte Anwendung der externe Steckverbinder auf der anderen Seite besser aufgehoben wäre. Daraufhin habe ich das Programm geändert, dass man die Orientierung des Displays nach dem einschalten um 180 Grad drehen kann, hat auch den Vorteil, dass man es auch als Linkshänder leichter bedienen kann. Sowas zieht aber eben auch neue Bibliotheksfunktionen eine Re-Programmierung der meisten Anwendungen mit sich, um nicht alles doppelt machen zu müssen. Momentan arbeite ich am Filehandling, damit GPS-Log, Temperatur-Log (wird normalerweise im EEPROM gehalten) und Logikanalyzer- / Oszilloskopdaten (1 Kanal, max 20KHz Samplerate, 2000 Samples im RAM) auf das Dataflashmodul geschrieben und von dort wieder gelesen werden können. Außerdem wird auch der datenaustausch via XMODEM möglich sein. Als Veröffentlichungstermin (ohne große Doku) habe ich mir Mitte November vorgenommen, bis dahin sollten die meisten Grundfunktionen vorhanden sein. Platinenlayout wird es aber vorerst nicht geben, da ich das Ganze auf Lochrasterplatte aufgebaut habe und momentan kein weiteres Gerät brauche. Gruß Jörg
Datum:
Hi Joerg, keine Panik mit dem ich kann warten war wirklich ernst gemeint. Ich kann zwar sicher nicht so gut programmieren aber ich weiß doch was für Arbeit sowas macht. Künstler sollte man niemals stören bei der Arbeit^^ Das mit dem Layout ist doch okay, muß auch nicht so kann man es evtl. als SMD oder eben DIL oder wie auch immer selbst aufbauen. Wieder ne nette Funktion, Display drehen um 180 Grad, find ich gut. Wird immer interessanter. Wünsche noch nen schönen Abend Grüße Harry
Datum:
Hallo alle zusammen, wer Interesse hat, ich habe noch eine fertig aufgebaute AVR-Chipbasic2 Platine mit ATMEGA644 hier liegen die ich nicht mehr brauche. Würde sie für 20,- EUR inkl. Versand (nur nach D) abgeben. Habe es mal hier gepostet weil einfach besser passt als im Markt. Kontakt: thomas [at] heldt [Punkt] eu
Datum:
Hmm, ist das Modul für 20,-€ noch zu haben? Ich hätt Interesse! Gruß an alle
Datum:
Hallo, das Board ist bereits vergeben, sorry.
Datum:
Angehängte Dateien:leider fehlt noch der Schaltplan vom Handheld, ich hoffe aber, dass ich den in den nächsten Tagen fertigbekomme. Anbei schonmal ein Screenshot vom Hauptmenü, wenn der Plan fertig ist, werde ich einen neuen Thread aufmachen. Das Programm steht soweit, unvollständige Module habe ich aus der Build-version entfernt. Der Rest der Doku kommt dann nach und nach. Für ChipBasic2 wird es dann als nächstes wieder ein offizielles Release geben, welches u.a. auch die neuen Dateitypen vom Handheld kennen wird. Also bis bald... Jörg
Datum:
Ist ja echt geil. Freu mich schon drauf. Dann hab ich endlich wieder was zum basteln. Gruß Robin T.
Datum:
Hallo Joerg, das Bild sieht ja schonmal sehr vielversprechend aus!! Bin ich ja mal gespannt ;-) Liebe Grüße Harry
Datum:
Zur Abwechslung gibts endlich wieder ein neues Release (V0.87) http://www.jcwolfram.de/projekte/avr/chipbasic2/main.php Download über den Berlios-Link auf der Seite oder direkt: http://developer.berlios.de/projects/avr-chipbasic/ Viel Spaß damit und ein schönes Weihnachtsfest Gruß Jörg
Datum:
hi Jörg! habe dein wunderbares Projekt nachgebaut, habe aber festgestellt, dass mein Fernseher (Universal) nix anzeigt. Habe daher mal das Signal mit dem Oszi vermessen und bin draufgekommen, dass das Signal nicht normgerecht ist. Falls mein Oszi nicht spinnt, hab ich nämlich bei einem Quarz von 16MHZ eine Zeilenlänge von ca. 79µs = Zeilenwiederholfrequenz von 20MHZ Verwendete Version Chipbasic2 V0.75 ATMEGA644 oder mache ich was falsch? Gruß Stefan
Datum:
Angehängte Dateien:Hallo Stefan, die Mega644 Versionen laufen alle mit 20MHz, das ist der einzigste Unterschied zum Mega16 / Mega32. Ansonsten würde ich Dir zur aktuellen Version raten, da gerade in der V0.75 noch einige Bugs drin waren. Da die meisten wohl zuerst nur das Hexfile zum Flashen benötigen, hänge ich es hier mal mit an. Gruß Jörg
Datum:
Danke Weihnachten ist schon vorbei, daher wünsche ich einen Guten Rutsch! wie wir in Ö sagen. Stefan
Datum:
Angehängte Dateien:Wieder mal ein neues Update, Hauptsächlich Bugfixes und eine überarbeite Dokumentation, da es doch einige Änderungen gegeben hat. - Bugfix bei ICOMM, I2C hing sich bei fehlendem Slave auf - Array-View im Monitor hinzugefügt - Bugfixe im Zusammenhang mit US-Tastaturen - Beispielprogramme angepasst (KEY Funktion) - Bugfix in der Ein-/Auagabe (Fehlermeldung "IO DISABLED") - Überarbeitete Dokumentation Unterstützung für Binärdateien (AVR-Code) habe ich wieder entfernt, es wird also ein reiner BASIC-Computer bleiben. Gruß Jörg
Datum:
Hi, irgend wann habe ich mal Zeit übrig und baue das mal aus Spass. Respect Jörg! Wirst du den SoftUart mit max 2400 baud mal durch den zweiten Uart des 644P ablösen? Gruß Rene
Datum:
Hallo Joerg Wolfram, habe versucht die Quelle unter AVR-Studio 4 für Windows zu assemblieren leider ohne Erfolg es regnet massig Fehler durch doppelt belegte Flash-Bereiche und zutief geschachlete Makro-Aufrufe. Ich hab die Quell mal so grob "überflogen" und festgestellt ohne größere Anpassungen des Quellcodes wirds nicht gehen! (schade) Trozdem Respekt vor dieser Leistung! Klaus
Datum:
Soviel ich weiss, kann man AVRA auch in das AVR-Studio einbinden. Bei den Versionen für Mega8-32 sollte das den Rückmeldungen nach auch funktionieren. Leider unterstützt AVRA (zumindest in der Version von vor 1 Jahr) den Mega644 nicht, ich habe mir den Code modifiziert und dann neu compiliert. Überlappende Flash-Bereiche gibt es definitiv nicht und auch die Schachtelung von Makros beträgt maximal 2 Stufen. Die extensive Nutzung von Makros ist auch notwendig, um große Programme effizient in Assembler programmieren zu können und dabei den Überblick zu behalten. (Das List-File der aktuellen Version hat hat etwas über 20000 Zeilen). Den zweiten UART des Mega644P zu verwenden ist momentan nicht geplant, weil ich ertens momentan nur Mega644er rumliegen habe und zweitens dafür die Hardware ändern muß. Wenn der Mega1284 aktuell wird, könnte sich das aber durchaus ändern, viel Aufwand ist es nicht. Gruß Jörg
Datum:
Hi Joerg Wolfram X:\VB60\Chip_Basic\avr_chipbasic2_0.89\src\macros.inc(338): error: .macro: Redefinition of 'libmio_sysconf' X:\VB60\Chip_Basic\avr_chipbasic2_0.89\src\macros.inc(340): error: Unexpected .endm directive X:\VB60\Chip_Basic\avr_chipbasic2_0.89\src\main1.asm(66): error: Overlap in .cseg: addr=0x0 conflicts with 0x0:0x2 FATAL ERROR: Too deeply nested macro calls(16) Assembly failed, 4 errors, 0 warnings Hab mal 4 Errors rauskopiert. Du weist wahrscheinlich am ehesten wo Du hinfassen mußt (willst). Ich finde leider keinen Hinnweis, wie ich den festverdrahten Assembler im AVR Studio austauschen kann. mfg Klaus
Datum:
... ein weiter "AVR-ChipBasic2" wurde geboren. herzlichen Dank Joerg Wolfram!
Datum:
Angehängte Dateien:Anbei eine kleine Leiterplatte für den Flash. Es wurde ein AT45DB081D eingesetzt und funktioniert. Orginalmaß 15x21 in 600 Dpi.
Datum:
Hallo Joerg,
das ist kein Gemecker!
hab noch eine kleine und eine große 'Macke' gefunden. (V0.89)
die Kleine: im DFLASH menue wird mir '1 MiByte' angezeigt
~
die Große : >01 ? "Test" 'Kom< führt zum Absturz bis zum Überschreiben
des int. EEPROM (zum Glück gibt es Restore" :)
es liegt offensichtlich am Kommentar inline zur Basiczeile.
Datum:
Hi Klaus, 1. Bug-reports sind kein Gemecker, sondern für die Fehlerbeseitigung notwendig. 2. MiBytes (Mebi-Bytes) sind 2^20 Bytes, MBytes eigentlich 10^6 Bytes. Ich gebe zu, Binär-Prefixe werden noch recht selten benutzt. 3. Muss ich am WE mal nachschauen. Als "Workaround" einfach einen Doppelpunkt vor den Kommentar setzen, das sollte helfen. Gruß Jörg
Datum:
Hi Joerg , das ist wieder kein Gemäcker: >CLS< >Getchar A, 0, 0< `möchte Leerzeichen(Dez 32) zurücklesen >? A< ergibt 0 und nicht 32! Du hast wahrscheinlich vergessen, bei der Umschaltung des Video-Modes den Video-RAM entsprechend zu initialisieren. Klaus
Datum:
Hi Jörg, >VMODE 3< >GETPIX A,0,0< >? A< verabschiedet sich -> hängt! (kein Rücklesen des BildWiederhohlSpeichers möglich) Wurmi 'xxxo' im Text-Modus in 60 Basic-Zeilen implementiert. :) Dieses Spiel setzt bei dem beschränkten Speicher ein Rücklesen des BWS voraus. Würde es gerne im Video-Modus 3 zum Laufen bringen. Ich habe alles Mögliche versucht (alle Video-Modis), offensichtlich hakt es am "GETPIX". Gruß Klaus
Datum:
Angehängte Dateien:Hi Klaus, danke für die Hinweise. Die Probleme sollten jetzt soweit behoben sein, Ursache lag in einem falschen Sprungziel in der Getpixel-Routine im Interpreter. Weiterhin habe ich das Löschzeichen auf 0x32 umgestellt und eine Kommentar-Erkennung in den PRINT-Befehl eingebaut. Doku ist noch unverändert, Gruß Jörg
Datum:
Hmmm, es scheint immernoch ein Fehler drin zu sein, in den Modi 1,2 und 5 wird die Farbe und nicht der Palettenindex zurückgegeben. Werde ich mir heute abend nochmal anschauen... Gruß Jörg
Datum:
Hi Jörg, habe Wurmi in "Jörg-Basic" auf 32 Basiczeilen implementiert. Läuft unter Version 0.89. Habe momentan leider keine zwei Tastaturen und kein serielles Kabel zur Verfügung. Werde es aber morgen hier veröffentlichen. Herzlichen Dank Klaus
Datum:
Angehängte Dateien:Hi Jörg, anbei Wurmi als Text. Habe es nicht geschafft, es über die ser. Schnittstelle zu übertragen. (liegt wahrscheinlich an meinem Kabelsalat?) Ich nahm an, daß wenn man im Editor ctrl+F2 drückt auf der ser. wenigstens ein Zeichen gesendet wird. Aber es passiert nichts. Deshalb die harte Tour -> Bildschirm abschreiben :) Das Prog. ist auf Version 0.90 angepasst. Wer es unter 0.89 nutzen möchte, muß die Zeilen 22,28 und 35 anpassen. Dort ist dann die "32" durch "0" zu ersetzen. (ex. fehlerhafte Initialisierung) Da nur wenig Platz für Kommentar war :) eine kleine Prog. Beschreibung: in den Variablen X und Y befindet sich die Position des Kopfes. in Z ist das akt. Kopfzeichen (richtungsabhängig) dazu später mehr. in U und V befindet sich die Position den letzten Körperzeichens (U entspricht X , V->Y) in N wird der Spielstand gespeichert. B dient der Abfrage des Bildschirmes, C und D sind Hilfs-Varis. zum "Auswürfeln" einer neuen Futterposition. Der Trick an dem Programm ist, daß die Richtung des nachfolgenden Körpergliedes unsichtbar im Video-RAM codiert ist. Es wird mit unterschiedlich farbigen Leerzeichen gespielt. :) dh es wird der Video-RAM als Variablen Feld genutzt. viel Spass beim Spielen Gruß aus Chemnitz Klaus
Datum:
Hi Jörg, dein Sackgänger Klaus, ... hab einen Epson LX-400 (Epson) unter der Fuchtel und wollte mal die par. Schnittstelle (SS) testen (drucken) ... leider musste ich feststellen daß, >? #2 %33< 'sollte eine "3" ausgeben nicht funktioniert (es kommt kein STROB auf Pin 1 der par. SS) ... senden an die ser. SS leider geht leider auch nicht :( >? #1 %33< Aber ich kann wenigsten sehen (Oszi) das Daten gesendet werden. :) Was für ein Kabel ist zu verwenden? (Modem, NullModem, Eigenbau?) ... oder liege ich mit der Syntax daneben, oder was mach ich falsch? Gruß Klaus
Datum:
Hi Klaus, daß Drucken nicht geht, ist ein Bug. Und zwar kommt der daher, dass ich zwischenzeitlich mit externem Speicher am Parallelport experimentiert hatte. Dazu musste ich aber den Parallelport dekativieren, die Umschaltung wurde im EEPROM gespeichert. Da bei mir das Umschaltbit auf 0 steht, ist der Fehler nicht aufgetreten, wohl aber bei allen bei denen das Bit defaultmäßig auf 1 steht. Werde ich rausmachen, in der library.asm in libmio müssen nur die Zeilen 2535-2537 entfernt werden:
...
- lds XH,libmio_sysconf
- sbrc XH,4
- rjmp libmio_ppar_4
...
|
Wie herum das serielle Kabel sein muß, weiß ich jetzt nicht aus dem Kopf, kann aber abends mal nachsehen. Wichtig ist auch, dass die Bitrate (1200/2400) auf beiden Seiten übereinstimmt. Gruß Jörg
Datum:
Danke Joerg, ich hab aber leider nichts womit ich Deine Quelle asseblieren könnte. :( Dem ser. Problem bin auf der Spur. Gruß Klaus
Datum:
bin ich auf
^
sorry Klaus
Datum:
... hab jetzt erstmal ein brauchbares "Kabel" gefunden, aber da ergibt
sich schon wieder eine Frage "Linux/Windows":
Warum "Zeile" + 0x10 ?
.... und nicht "Zeile" + 0x10 + 0x13 'ANSI-conform'
Dein Albtraum :) Klaus
Datum:
Angehängte Dateien:Hi Klaus, da ich privat nur Linix bzw. Solaris nutze und meine Projekte in erster Linie für mich selbst entwickle, ist es bei mir eben nur 0x0a. Aber, da noch etwas Platz auf der Config-Seite und das Bit für die Parallelport-Umschaltung ssowieso frei ist, habe ich eine Umschaltung zwischen CR+LF und LF only eingebaut. Die gilt allerdings für seriellen und parallelen Port gemeinsam. Danke, dass Du das Wurmi-Programm veröffentlicht hast. Allerdings fehlen zwei Dinge: 1. In der ersten Zeile muß "PROGRAM:" und der Programmname stehen 2. In der letzten Zeile (nach dem Programm) muß ein "#" stehen, damit das Ende erkannt wird. Gruß Jörg
Datum:
hi Joerg, Danke für für das Hex-File. Komme aber heute nicht mehr zum Testen. Trozdem Herzlichen Dank. Klaus
Datum:
Hi Jörg, das Problem mit der par. SS ist gelöst. :) Aber mit der ser. SS komme ich einfach nicht zurecht. Mit meiner PC Hardware ist alles io auch das Kabel ist io. Getestet mit einer Verbindung zwischen Rx und Tx am Kabelenden zum ChipBasic2. Die neg. Spannung auf Deinem Board wir auch erzeugt. Ich vermute das die etwas knappen Spannungen von -5V und 5V dem RS 232 PC-Chip nicht reichen. Ich werde es mal mit einem anderen PC versuchen. Mit dem Teil zu arbeiten macht meiner Tochter (16) und mir riesigen Spass! Klaus
Datum:
Hi Jörg, habe Deinen Zeilen - Parser heute auseinander genommen. Hochachtung!!! Da wird ja kein Takt verschwendet!!! Meine Tochter fragt, ob es möglich ist (ohne großen Aufwand)den Befehl Note x in Note x,z zu ändern? Dadurch würde es möglich, mit Deinen Basic - Befehlen auch einfache Midis abzuspielen, z ist dabei die Notenlänge. Wenn es der Speicherplatz und deine Zeit zulässt, wäre es eine große Bereicherung. Gruß Klaus
Datum:
Hi Klaus, da sie Tonausgabe im Hintergrund erfolgt, ist das nicht ganz so einfach. Denn der Befehl NOTE x wartet nicht bis die Note abgespielt ist, sondern gibt nur den Startbefehl und kehrt dann sofort wieder zurück. Dabei ist es sogar möglich, den gerade laufenden Ton mit einem neuen zu unterbrechen. Das Timing muss man also sowieso selbst realisieren oder den eingebauten Sequenzer (PLAY) bemühen, der auch komplett im Hintergrund läuft. Ich werde mir aber mal überlegen, inwieweit es mit einem zweiten Parameter möglich ist, die Hüllkurve zu ändern. Gruß Jörg
Datum:
Angehängte Dateien:Wenn auch nicht ganz ausgetestet, will ich mal ein neues Feature vorstellen, welches mir vorhin zur "Notemproblematik" eingefallen ist. Was eigentlich noch gefehlt hat: MULTITASKING ;-) Und das gibt es jetzt. mit dem Befehl ONSYNC lässt sich eine Zeilennummer angeben, zu der ein zeitgesteuertes GOSUB ausgeführt wird.
ONSYNC 10 - alle 1/50s (PAL) wird ein GOSUB zur Zeile 10 ausgeführt ONSYNC 10,50 - alle Sekunde (PAL) wird eine GOSUB zur Zeile 10 ausgeführt ONSYNC 0 - Multitasking wird wieder abgeschaltet |
Der Aufruf erfolgt immer am Ende des sichtbaren Bildbereiches und natürlich nach Abarbeitung des gerade ausgeführten Befehles. Das Ganze funktioniert natürlich nur innerhalb des gerade aktiven Programmes. Außerdem kann man die Scancodes seiner Tastatur anzeigen lassen, wenn im Intro die rechte Shift-Taste gedrückt wird. Abbrechen geht dann nur mit CTRL+ALT+DEL Gruß Jörg
Datum:
Hi Joerg, mir war micht bewusst, was das mit der Ton-Länge für Kreise zieht! Ich werde Dein ONSYNC mit Freude testen. Da ich zwischendurch Brötchen verdienen muß, wirds erst morgen. Klaus
Datum:
Hi Jörg, Dein Albtraum ist wieder da. Habe Deine Version 0.91a getestet. Ich weiß nicht, warum Du Dich auf solche Futures einläßt, wobei Du ganz genau weißt, daß das nicht funktionieren kann. Du hast viel zu wenig RAM zur Verfügung, um einen Multitasking zu implementieren. Sei nicht böse, aber es ist glaube ich besser, dies wieder auszubauen. Erklärung hierzu später. Deine neue Funktion ONSYNC: z.B. geht: 01 ONSYNC 4,100 02 GOTO 2 03 04 NO 20 05 RET z.B. geht nicht: 01 ONSYNC 4,1 02 GOTO 2 03 04 NO 20 05 RET Anmerkung: einziger Unterschied::in Zeile 01 die Zahl hinter dem Komma nach der 4! z.B. geht doch: 01 ONSYNC 4,1 02 GOTO 2 03 04 NO 20:RET (einziger Unterschied zur nicht gehenden Version: RET in Zeile 4, getrennt durch Doppelpunkt von Vorbefehl) z.B geht doch nicht: 01 ONSYNC 4,1 02 GOTO 2 03 04 NO 20 : RET (einziger Unterschied zu "geht doch" : in Zeile 4 vor und hinter dem Doppelpunkt, der die zwei Befehle trennt, jeweils ein Leerzeichen) Soviel zu ein Paar Beispielen, die einen Verzweifeln lassen (bevor der AHA-Effekt da) Multitasking: auch wenn Du Dich auf und nieder reckst, Du hast maximal 2 KB im 644 zur Verfügung, davon geht eingehöriger Teil für den BWS drauf. Was ist, wenn Leute auf die Idee kommen, zu schreiben: 01 ONSYNC 10,10 02 ONSYNC 20,20 03 ONSYNC 30,30 ....... dann brauchst Du mindestens den 3-fachen Stack-Platz? Nichts für ungut Klaus
Datum:
Hallo Klaus, warum sollte das nicht funktionieren. Genaugenommen ist das ja eine Art Timer-Interrupt. Dazu wir einfach nach dem aktuellen Befehl ein GOSUB n eingefügt, wenn ein "Timer-Überlauf" aufgetreten ist. Es wird also nur ein ganz normaler Stack-Eintrag benötigt (der Mega644 hat übrigens 4K RAM). In Deinem letzten Beispiel würde letztendlich alle 0,6 Sekunden zur Zeile 30 gesprungen, da die ersten beiden Einstellungen wieder überschrieben werden. Der (optionale) zweite Parameter gibt den Timer-Faktor an, wobei aber nur die unteren 8 Bits genutzt werden. Damit lassen sich Interrupt-Abstände zwischen 1/50s und ca. 5 Sekunden realisieren. Die Effekte bei einem Timer-Faktor von 1 und dem NOTE Befehl liegen einfach daran, dass sowohl das GOSUB zur Zeile als auch das Setzen der Notenparameter und auch das Abfahren der Hüllkurve im gleichen Frame sehr schnell aufeinander erfolgt. Das Leerzeichen und auch der Sprung in die nächste Zeile können dieses Timing minimal ändern. Aber ich werde das am WE nochmal untersuchen. Gruß Jörg
Datum:
Hi Joerg, mit dem Stack und der RAM-Größe hast Du natürlich Recht. (mit fällt es immer wieder schwer, mich zu erinnern, daß alle Variablen Global sind! und somit beim Unterprogammaufruf fast kein zusätzlicher RAM verbraucht wird) aber schau Dir bitte noch mal Dein "ONSYNC" an: >01 ONSYNC 10,100< >02 ONSYNC 11,200< >03 ONSYNC 12,300< >06 ? A,B,C< >07 GOTO 6< >10 A=A+1 : RET< >11 B=B+1 : RET< >12 C=C+1 : RET< in diesem Fall zählt nur "C" hoch! Gruß Klaus
Datum:
Hi Klaus, das ist richtig so, denn es gibt nur ein ONSYNC. Die Einstellungen von Zeile 1 und 2 werden in der jeweils nächsten Zeile überschrieben. (Wobei die 300 der 44 entspricht, da der Zähler nur 8 Bit breit ist) Und damit wird nur die Routine in Zeile 12 knapp alle Sekunde aufgerufen. Allerdings kann man auch ONSYNC in der aufgerufenen Routine verwenden, um z.B. mit ONSYNC 0 weitere Aufrufe zu unterbinden. Gruß Jörg
Datum:
Hi Jörg, bitte bezeichne nicht einen Hook auf einen Timer als Multitasking. Beschreibe bitte in Deiner Dokumentation, daß dieses Future nur einstufig funktioniert. Dann ist es eine tolle Erweiterung :) Gruß Klaus
Datum:
Hi Jörg, mich lässt die Idee vom Multitasking nicht los! vieleicht so: 'Einrichten von Tasks: >01 ONSYNC 1,10,100< 'erster Parameter ->Task Nr. >02 ONSYNC 2,11,200< >03 ONSYNC 3,12,300< 'Main Loop >06 ? A,B,C< >07 GOTO 6< >10 A=A+1 : RET< 'Task 1 >11 B=B+1 : RET< 'Task 2 >12 C=C+1 : RET< 'Task 3 'Ausschalten von Task 1 ONSYNC 1,0 Es müssen ja nicht beleibig viele Tasks möglich sein.(zb max 4) Oder 2. Ansatz >01 ONSYNC1 10,100< 'Startet Task 1 >02 ONSYNC2 11,200< 'Startet Task 2 usw. Dann hättest Du zwar 4 neue Schlüsselwörter (bei max 4 Tasks), aber das käm dann einem "echten" Multikasking schon ziemlich nahe. Bitte sag jetzt aber nicht das ich unter Futurrismus leide! :) Gruß Klaus
Datum:
Hi Jörg, Dein Albtraum schreibt wieder. Ich suche das ganze Wochenende, warum die Kommunikation mit dem PC (RS232) nicht funktioniert. Bin darauf gestoßen, dass Du es mit der Länge des Stopp-Bits nicht so richtig ernst nimmst. Tipp mal bitte ein und verbinde Rx mit Tx auf dem CB2 (Chip-Basic2): >01 SPUT 31< >02 SGET A< >03 ? A< >04 GOTO 1< Bei 1200 Baud funktioniert das vom Feinsten. Aber bei 2400 Baud gehen die Probleme los. Bei 2400 Baud zeigt es mir in regelmäßigen Abständen: 143 -> 0b10001111 und 31 -> 0b00011111 Gruß Klaus
Datum:
ps. der Sender sollte immer etwas langsamer sein, als der Empfänger, der Zeichen erwartet!. (sonst klappt die asynchron - Übertragung nicht) Gruß Klaus
Datum:
Hi Klaus, wieso sollte der Sender langsamer sein? Dann würde ja überhaupt nichts mehr stimmen, denn es findet ja keine Re-Synchronisation statt. Die Ursache dafür, dass dein Programm so nicht geht, ist eine ganz andere: Sowohl Senden als auch Empfangen sind state-machines, die mit der Horizontal-Frequenz laufen. Durch SPUT bzw. SGET werden diese angestoßen. Solange kein Zeichen empfangen werden soll, ist die Empfänger-FSM in Warteposition und kümmert sich nicht um den Pegel auf der seriellen Leitung. Erst wenn sie angestoßen ist, wird zuerst auf das Startbit gewartet und dann die Bits in entsprechend zeitlichem Abstand eingelesen. Wenn Du jetzt sendest und das gesendete Zeichen empfängst, beginnt der Sender zu senden, bevor der Empfänger anfängt, auf das Startbit zu warten. Je nachdem wieviel Zeit dazwischen vergeht, klappt es oder auch nicht. Dann wird nämlich das Startbit zu spät erkannt, die Bits sind um eine Stelle nach rechts verschoben und in Bit 7 steht das 1. Stopp-Bit. Wenn Du jetzt vor das SPUT ein SYNC 1 setzt, sollte es klappen, ganz einfach deswegen weil der Code dann in der vertikalen Austastlücke und damit schneller abgearbeitet wird. Bei 1200 Bps klappt es etwas besser, einfach weil dort das Timing nicht so kritisch ist. Auch wenn der Empfänger auf die Startbit-Flanke wartet, lässt sich damit das Problem nicht lösen. Inwieweit sich da was machen lässt, muß ich erstmal sehen, wahrscheinlich aber nicht da ich nicht beliebig viel Code in die horizontale Austastlücke packen kann. Zum Thema Multitasking fehlt es momentan am RAM, welches mittlerweise einfach "voll" ist. Eventuell könnte man das Array auf 512 Bytes verkleinern, aber das muß ich mir nochmal überlegen. Was noch reinkommt ist VPOKE und VBYTE() um direkt auf das Video-RAM zugreifen zu können und ein weiterer Videomodus: - 23 Zeilen a 30 Zeichen - nur 64 verschiedene Zeichen, diese sind alle im RAM definiert - In den Zeichen kann jedes Pixel jede der 8 Farben haben Dann ist auch langsam der Flash voll außer ein bisschen Platz für Bugfixes. Gruß Jörg
Datum:
Hi Jörg, zitat: >Sowohl Senden als auch Empfangen sind state-machines, die mit der >Horizontal-Frequenz laufen. Durch SPUT bzw. SGET werden diese >... >erstmal sehen, wahrscheinlich aber nicht da ich nicht beliebig >viel Code in die horizontale Austastlücke packen kann. lass es so, wie es ist! Ich habe eine "Krücke" gefunden, mit der ich dieses Problem PC-seitig umgehen kann. kurze Beschreibung: - ein Stopbit kann Senderseitig solang sein, wie es will, aber nicht Emfängerseitig! (wenn nichts gesendet wird, wird einfach Tx auf Stopbit-Pegel gesetzt und so gelassen) - aber jetzt kommt das 2. Byte vom CB2 - der Emfängertreiber erwartet mindestens zwei Stopbits (9600,N,8,2) aber es kommen schon nach 1.2 Bits wieder Flanken, dann erkennt der Treiber es als Frame-Fehler! Lösung: PC erwartet Daten: PC beim Emfangen, die serielle SS auf ein Stopbit initialisieren und dann öffnen. Wenn danach keine Daten mehr erwartet werden, dann schließen. PC sendet Daten: ser. SS auf zwei Stopbit int., öffnen, Daten senden, danach schließen. Geht leider nicht "zeitgleich" bidirektional, ist dem einfachen Aufbau des CB2 geschuldet! Das ist kein Gemecker, sondern ein Lob. :) ____________________________________________________________________ Dass der Sender die Daten langsamer senden muß, als der Emfänger sie verarbeiten kann, ist klar. Du hast das langsamer Senden in dem letzten Post warscheinlich falsch interpretiert! (nicht langsamere Bit-Rate, sondern langsamere Byte-Folge!) :-) ____________________________________________________________________ jetzt aber noch eine ganz große Bitte: folgende Situation: Habe CB2 bis jetzt mit einem Steckerschaltnetzteil 9V über den Festspannungregler on Board bertieben. Da ich eine uralte PS2 Tastatur, die fast 200mA schluckt, betreibe, kommt der Festspannungs- regler schon ganz schön ins Schwitzen. Dachte mir, nimmste ein altes konv. Steckernetzteil mit 6V und genügend großen Ladeelko und probierst es aus -> alles OK. ext. Flash r/w geht, ext EERprom r/w geht, CB2 neu starten geht, meldet sich normal. nun das böse Erwachen -> "Pong" geht nicht mehr, alles andere schon noch! Restore durchgeführt, das gleiche. Zeilenweise die Quelle durchgesehen, alles Ok. "Pong" geht nicht mehr! "Hilfe!!!" Ok CB2 an ISP-Programmer angeschlossen und siehe da, im int. Flash steht was anderes als es sollte. Selbst die Fuses sind verändert!!!!!! Oszi an die Betriebspanung und siehe da, Sie bricht auf 4.35V zusammen! (aber nur bei r/W Zugriffen auf den ext. Flash). daraufhin habe ich im DB mal unter "23.8.11 Preventing Flash Corruption Page 286" nachgelesen: >A Flash program corruption can be caused by two situations ... >... the CPU itself can execute instructions incorrectly, if the supply >voltage for executing instructions is too low. offensichtlich nicht nur, wenn der Bootloader versucht, den Flash neu zu schreiben, sondern auch, wenn der int. EEProm bei Unterspannung beschrieben wird. Kann man das durch ein geeignetes "Burn-out Detection" ausschließen? Ps. Der µC und die Schaltung haben keine Macke! 9V-Schaltnetzteil ran und alles ist gut! (Festspannungregler schließe ich aus) Beschreibe diese beiden Sachen bitte unbedingt in Deiner Doc! Gruß Klaus
Datum:
Hallo Klaus, die Stopp-Bits senderseitig länger zu machen ist überhaupt kein Problem, werde ich auf jeden Fall noch ändern. Für die Brown-out detection schaue ich mir mal die Fuses an, ob die richtig gesetzt sind. Bis jetzt hatte ich keine Probleme damit, da ich das Ganze aus zwei Li-ION Zellen betrieben habe, deren Elektronik sowieso schon früher abschaltet. Die Doku muss ich sowieso überarbeiten, da die neu hinzugekommenen Videomodes 4 und 6 teilweise nur über vpoke programmiert werden können. Das heisst u.a. den Aufbau des Bildspeichers in allen Modi erklären. Neben dem Mode 4 habe ich jetzt noch einen gänzlich neuen Mode "erfunden", eine Art Vektor-Mode. Damit wird es möglich sein, große ein oder alternierend zweifarbige Bildschirmbereiche sehr schnell in Größe und Gestalt zu ändern. Oben und unten gibt es dazu noch jeweils eine Textzeile, die sich wie die ersten zwei Zeilen im Mode 0 verhalten. Das Ganze wird folgendermaßen aufgebaut sein: - Zwei Zeilen a 30 Zeichen, Vorder- und Hintergrundfarbe für jedes Zeichen - Tabelle mit 105 Einträgen, welche eine der 105 Zeilendefinitionen auswählen - 105 Zeilendefinitionen mit je 12 Einträgen Ein Zeileneintrag besteht aus der Position (111-253) und aus einem Farbbyte. Dabei entspricht das High-Nibble der ersten Farbe und das Low-Nibble dem Wert, mit dem die Farbe im nächsten Schritt XOR verknüpft wird. Dazu kommen noch schnelle BCOPY-Routinen in den Modi 4 und 6. Zuguterletzt habe ich noch ein API mit den wichtigsten Funktionen und eine rudimentäre Binärdatei-Erkennung implementiert. Und damit ist der Flash auch bis auf ca. 96 Words ausgereizt, weitere Funktionen wird es wohl nicht mehr geben. Ach ja, und die Noten habe ich noch etwas geändert, ab Note 128 ist die Hüllkurve länger, dafüe liegt jetzt an Note 63, 127, 191 und 255 Rauschen und der Sequenzer macht bei 127 und nicht mehr bei 254 eine Pause. Hexfile kommt noch, ich will nur die Tabelle für das serial out etwas ändern... Gruß Jörg
Datum:
>Ach ja, und die Noten habe ich noch etwas >geändert, ab Note 128 ist die Hüllkurve länger, dafür liegt jetzt an >Note 63, 127, 191 und 255 Rauschen und der Sequenzer macht bei 127 und >nicht mehr bei 254 eine Pause. klingt das nach 4 Oktaven? mit 1/4 und 1/2'en Noten? wäre ja absolut toll! Und noch toller mit mit 1/16 Pause? Bin gespannt wie "Flitzebogen"! Damit kann man fast alles spielen!. Gruß Klaus Klaus
Datum:
Du hast das offensichtlich schon implementiert!: Ton (Frequenz, Länge) Pausen (Länge). Wenn Du Hilfe brauchst, sag was! Klaus
Datum:
Hi Klaus, es ist so ähnlich... Den Sequenzer habe ich etwas umgebaut, und zwar besteht jetzt jede Note aus 2 Bytes, den eigentlichen Notenwert und die Dauer in "Ticks" bis zur nächsten Note. Eigentlich ist damit die Pause relativ zweckfrei. Dadurch sollte es etwas einfacher werden, da man Noten vom Blatt schnell in entsprechende Daten konvertieren kann. Und, die Tonhöhen sollten den Halbtonschritten entsprechen, damit wären da etwa 5 Oktaven Tonumfang. Los gehts mit C", glaube ich. Mit dem Speed-Parameter gibt man nun die Geschwindigkeit der "Ticks" an. Aber ich muß das noch testen, ob es wirklich so funktioniert :-) Gruß Jörg
Datum:
Angehängte Dateien:Um die Zeit bis zum nächsten Release zu überbrücken, wieder mal eine neue Version zum Testen. Zuerst wird auffallen, dass P8 ein anderes Icon hat. Das liegt daran, dass die aktuelle Version auch Binärdateien unterstützt. Man kann das Programm direkt aufrufen, es geht aber auch vom BASIC aus:
01 GOSUB 8,0 |
Die 0 ist dabei der Offset in Words. Der Sequencer funktioniert nun so, dass jede Note aus 2 Bytes besteht, der Tonhöhe/Klangfarbe/Hüllurve und der Dauer in Ticks bis zur nächsten Note.
01 DATA 0,36,2,41,4,45,4,41,4 02 PLAY 0,4,6 03 GOTO 3 |
Der erste Wert bei PLAY gibt die Anfangsadresse im Array an, der zweite die Anzahl der Noten (max. 256) und der dritte die Dauer eines Ticks in Frames (1/50s bei PAL). Durch die Notwendigkeit einer überarbeiteten und stark erweiterten Dokumentation wird sich aber das nächste offizielle Release etwas hinziehen, da ich auch noch parallel an einer englischen Version arbeite. Gruß Jörg
Datum:
Mist, jetzt habe ich den M644 fertig gemacht und in der Firma liegen lassen. Bis morgen. Klaus
Datum:
Hi Jörg, der Sequenzer ist ganz großes Kino! (verneige mich) Danke Frage: Auf Programmplatz 8 zeigte es mir ein neues Icon zum Ausführen von Binärdateien nach einem Restore, wo Programmplatz 8 belegt war, wurde dieses durch das alte Basic-Programm überschrieben. War das so geplant? Bitte schreibe mal was zum Aussehen der Binärdateien. Ich kann mir noch nicht so richtig vorstellen, wie das funktionieren soll. Aus deiner spärlichen Beschreibung ist nicht viel rauszulesen. Klaus
Datum:
Hi Klaus, für die Binärdateien fehlt natürlich noch einiges und es wird bestimmt noch etwas Zeit brauchen. Sie haben einen etwas anderen "Kopf", damit das System weiß, was es damit machen soll. In das P8 habe ich einfach etwas Code reingeschrieben um das Ganze zu testen. Beim Restore ist natürlich ein BASIC-Header drübergeschrieben worden... Die Idee ist folgende: Binärdateien haben nach dem Dateinamen als 13.Zeichen ein "N" (für native) stehen, BASIC-Datein meistens ein 0xff. Von Byte 16 bis Byte 3071 kann AVR-Binärcode stehen, gestartet wird bei Byte 16. Um das Ganze auch aus dem BASIC heraus sinnvoll z.B. für Erweiterungen nutzen zu können, wird beim GOSUB ein Offset (in WORDS) angegeben. Wenn also z.B. GOSUB 8,0 steht, wird zuerst anhand des Headers geprüft, ob das Programm eine Binärdatei ist. Wenn nein, wird es zu einem Fehler kommen da es im BASIC keine Zeile 0 gibt. Im anderen Fall wird ein CALL zum 8. Word (Byte 16) des Binärprogrammes gemacht. Da im Flash ja schon sehr viele nützliche Routinen stehen, wird es eine Art API geben. Das ist ein fester Adressbereich, über den zur Zeit ca. 75 Funktionen angesprungen werden können. Das ist wichtig, da sich nach einer Codeänderung die Adressen der eigentlichen Funktionen ändern können. Zu diesem API wird es einerseits eine komplette Beschreibung und auch eine Include-Datei (ohne Makros!, sollte auch mit anderen Assemblern außer dem AVRA gehen) geben. Damit sollte es möglich sein, sowohl komplette Programme als auch Erweiterungen in Assembler zu schreiben. Aber wie schon gesagt (geschrieben), die Dokumentation wird noch etwas Zeit beanspruchen. Gruß Jörg
Datum:
Hallo. Ich beobachte avr chipbasic(2) schon länger und habe es auch schon 2x aufgebaut.. funktioniert prima. Die Frage, die mich (und wahrscheinlich auch andere) beschäftigt wäre eine portable Version mit TFT und oder ggf. FBAS/S-Video für die kleinen 7-9" TFT Fernseher.. Das Projekt 'uzebox' verwendet eine ADC725 RGB2NTSC Wandler.. wäre das hier auch zu verwenden..? Dort wurde auch ein RGB-TFT direkt angeschlossen... http://www.dutchtronix.com/UzeboxConsole.htm http://belogic.com/uzebox/ Hier im forum gibts ja auch jede Menge knowhow bezüglich LCD's and deren Anschluß.. Wäre geradezu traumhaft, wenn man das alles kombinieren könnte und letztendlich ein tragbares avr chipbasic Gerät bauen könnte.. Peter
Datum:
Hallo Peter, natürlich ist das möglich und auch in der aktuellen Dokumentation ist der Anschluß eines NEC TFT beschrieben. Für diesen Zweck gibt es extra den "CSYNC" Jumper, mit dem man HSYNC und VSYNC auftrennen kann. Alternativ geht auch ein RGB->FBAS Wandler, dazu habe ich mir einen mit nem CPLD entwickelt, das Ganze aber etwas einschlafen lassen da ich es selbst nicht (mehr) brauche weil ich mir ein mobiles Teil mit eben dem NEC TFT gebaut habe. Gruß Jörg
Datum:
Hallo Jörg. CPLD Lösung: http://www.jcwolfram.de/projekte/vhdl/fbas_enc/main.php Korrekt? Nun, da braucht man CPLD Programmer.. 2te Platine.. alles lösbar.. aber aufwendig.. Da gibts doch auch den A520 Externen Modulator von Amiga, der den MC1377 RGB->FBAS Wandler enthält.. hat jemand schon einmal sowas probiert anzuschließen..? NEC Display: ok. Type lat Bild: NEC NL3224AC35-01 Muss mal sehen, wo ich so eins auftreiben kann... Gibts da noch mehr Typen, die gehen sollen..? Gibts Bilder vom Display+AVR Chipbasic..? Danke ersteneinmal.. wieder viel zu googlen ;-) Peter
Datum:
Hallo Peter Bilder kann ich schon mal machen, allerdings ist die umgebaute Frühstücksdose nicht unbedingt der "Hingucker"... Ich hab mir auch schon überlegt, eine Variante für die hier in einem anderen Thread beschriebenen "Spielzeug-Displays" zu entwickeln, indem ganz einfach die Zeilen, die das Display auslässt verdoppelt. Allerdings sinkt dann die effektive Auflösung und man muß es eventuell immer an das konkrete Display anpassen. Im Moment bin ich aber erstmal dabei, die "normale" Version ein klein wenig weiterzuentwickeln. Erste Tests mit den neuen Videomodi haben doch ganz schnell Grenzen, insbesondere bei der Geschwindigkeit gezeigt. Gruß Jörg
Datum:
Angehängte Dateien:So, nun mal wieder eine "Zwischenversion", in der u.a. einige Bugs beseitigt sind: - bei FOR konnten Funktionsausdrücke "wrong expression" herbeiführen - Wortweises Schreiben ins Array ließ immer zwei Bytes aus - Funktionen gingen bei INPUT nicht Die Dokumentation geht langsam voran, einen zwischenzeitlicher Versuch, anstelle LaTex OpenOffice zu benutzen, habe ich schnell wieder aufgegeben. Außerdem haben momentan leider andere Dinge wie Jobsuche Vorrang. Gruß Jörg
Datum:
Oh, hi Jörg. Ich wünsche Dir viel Erfolg bei deiner Job suche! Hatte mich schon gewundert das Du in letzter Zeit relativ wenig Aktiv bist. Gerade auch in Bezug z.B. auf dem Handheld.... Aber wie Du schon geschrieben hast, Job suche hat in jedem Fall vorrang! Gruß Harry
Datum:
Hi Jörg, tausend Dank für Dein Chip-Basic. Setze meine alten "AC1" Quellen Stück für Stück um. zb. DCF77 ... Es gelingt immer besser und schneller. thx klaus ps wenn Du noch ein paar Words hast: Windows: CrLf (0x13,0x10) Linux: LF (0x10) Mac OS Cr (0x13) only.
Datum:
Nur CR wird es in der nächsten Version auch geben (wie auch die eher zweckfreie Variante, gar kein Zeilenende auszugeben, aber das hat sich so ergeben). Ebenso lässt sich das serielle Interface zwischen meiner Schaltung und einer "Standard"-Schaltung einstellen, um z.B. MAX232 oder FTDI als Schnittstellenwandler nutzen zu können. Da ich dabei die Belegung der Konfigurationsbytes geändert habe, muß ich erst noch ausprobieren, ob alles auch wieder richtig funktioniert. Viele Grüße, Jörg
Datum:
Angehängte Dateien:So, jetzt wieder mal ein neues Update. Das Projekt nähert sich langsam der finalen Version. Schon allein deshalb, weil nur noch ein paar Bytes im Flash übrig sind. Außerdem will ich die Dokumentation in Angriff nehmen. Mittlerweile habe ich die Videomodi ab Modus 4 nochmal umgestrickt, damit gibt es 2 Modi mit user-definiertem Zeichensatz. Die Flash-Speicherroutinen habe ich etwas geändert, das Videosignal wird nicht mehr teilweise abgeschaltet sondern nur noch dunkelgetastet. Außerdem lassen sich nun Programme zur Laufzeit auf dem Dataflash-Modul speichern und auch von dort laden. So sollen Projekte möglich werden, die mehr als 95 Zeilen benötigen. Zusätzlich gibt es die Funktion FFIND(X),X ist ein Zeiger auf das Array, erstes Byte ist der Dateityp (z.B. 16 für Programm und 252 für freien Speicher), zweites die Länge des Suchstrings, danach folgt der Suchstring selbst. Ergebnis ist die Dateinummer oder -1, falls nicht gefunden.
01 DA 0,252,0:A=FFIND(0) 02 DA 0,16,4,"test":B=FFIND(0) 03 IF (A<0)#(B<0) THEN END 04 SAVEP A,8:LOADP B,8 05 GOSUB 8,1 06 LOADP A,8:FDELETE A |
testet, ob ein leerer Speicherplatz und das Programm "test" vorhanden sind. Wenn ja wird das Programm 8 gesichert und das Programm "test" dorthin geladen. Nach dem Aufruf über GOSUB wird der ursprüngliche Zustand wiederhergestellt. Doku kommt dann als nächstes, wie ich halt Zeit dazu habe. Ansonsten habe ich eine neue Stelle und kann so die Dinge in Ruhe angehen... Gruß Jörg
Datum:
Hallo Jörg, meinen herzlichen zum neuen Job ;-) Muß auch nun unbedingt mal die neue Version testen. Wünsche ein schönes Wochenende!
Datum:
Angehängte Dateien:Zum Ostern gibts mal wieder eine neue Version, ich hoffe nicht dass es nur ein "Osterei" ist. 1. In der letzten Version war bei der Configpage CR und LF vertauscht 2. Der Videomodus 1 hat sich etwas geändert 3. Der Formelparser sollte bei Funktionsaufrufen wesentlich schneller sein 4. Ein paar neue Funktionen und Bugfixes 5. Wechsel von der GPLV2 zur GPLV3 Doku fehlt leider immernoch :-( bin aber dabei. Bisher war der Videomodus 1 168x116 Pixel "zweifarbig". Das habe ich jetzt etwas erweitern können, ähnlich wie z.B. beim ZX Spectrum lassen sich jetzt für jeweils 8x8 Pixel (am unteren Rand 4x8 Pixel) Vorder- und Hintergrundfarbe festlegen. Allerdings sollte zur Textausgabe die eingestellte Hintergrundfarbe auch der dargestellten entsprechen, andernfalls werden (systembedingt) nur ausgefüllte Rechtecke gezeichnet. Dann gibt es noch ARC und PIE zum Zeichnen von Kreis- oder Ellipsenausschnitten. Bei PIE wird das Segment mittels zweier Linien zum Mittelpunkt geschlossen.
01 VM 1 02 PIE 50,50,25,25,0,270,3 03 ARC 50,50,40,40,180,450,4 |
zeichnet ein violettes Kreissegment und einen grünen Bogen. Die Parameter sind: Y0,X0,radius y,radius x,anfangswinkel,endwinkel(,farbe) Der Endwinkel sollte größer als der Anfangswinkel sein, ansonsten kann die Funktion recht lange brauchen... Gruß Jörg
Datum:
Angehängte Dateien:Tja, und wieder ein paar Bugfixes... 1. Während des Speicherns wird das Videosignal wieder abgeschaltet. Das ist zwar nicht optimal, aber das teilweise Flackern der Anzeige in der letzten Version hat doch etwas genervt. 2. GOS als Abkürzung von GOSUB hat nicht mehr funktioniert, hing mit den neuen Schlüsselwörtern zusammen 3. Das Mode1-Oszi hat nicht mehr richtig funktioniert, da es durch den neuen Videomode 1 zu Speicherbereichs-Überschneidungen kam. Ein bisschen mehr Feedback würde mich freuen... Gruß Jörg
Datum:
Angehängte Dateien:Und hier mal das "alte" Oszi-Programm etwas aufgemöbelt...
01 'init screen 02 COLOR 5,0 :VMODE 1 03 BOX 7,31,108,161:Y=50 04 Q=100-1024/12:DRAW Q,28,Q,31 05 COL 6,0:? @ Q-5,0;" 5V"; 06 COL 5,0 07 Q=100-512/12:DRAW Q,28,Q,31 08 COL 6,0:? @ Q-5,0;"2,5V"; 09 COL 5,0 10 Q=100-0/12:DRAW Q,28,Q,31 11 COL 6,0:? @ Q-5,0;" 0V"; 12 COLOR 4,0:CBOX 1,4,12,19 13 COLOR 4,0 14 'the main loop 15 A=100-ADC(0)/12 16 J=J+1: IF J=3600 THEN J=0 17 A=57-SIN(J*2)/13+COS(J*5)/13 18 BCOPY 1,8,33,12,16,8,32 19 DRAW Y,158,A,159:Y=A 20 SYNC 1:GOTO 15 # |
Datum:
Angehängte Dateien:Und jetzt noch ein PACMAN-Clone als Beispiel. Es demonstriert (recht eindrucksvoll) was mit dem Basic-Computer machbar ist.
01 BO 0:P=0:GOS 64:DA 64,0,4,32,0 02 ALERT 64:X=AR(1):Y=AR(0):D=21 03 GOSUB 48:FOR F=1 TO 4:A=F*5 04 IF AR(A)<>AR(3) THEN GO 9 05 IF AR(A+1)<>AR(4) THEN GO 9 06 IF G>0 THEN NO 98:P=P+20:GO 35 07 ? @AR(3)+1,AR(4)+4;%250; 08 NO 255: BO 2:A=KEY(2):END 09 NEXT :F=0:GOSUB 40 10 T=1-T: IF T=0 THEN GOTO 17 11 K=KEY(6):M=KEY(7) 12 IF (K=-1) & (L=1) THEN X=X-1 13 IF (K=1) & (R=1) THEN X=X+1 14 IF (M=1) & (U=1) THEN Y=Y-1 15 IF (M=-1) & (D=1) THEN Y=Y+1 16 DA 0,Y,X:GO 32 17 FOR F=1 TO 4:GOSUB 40 18 S=U+D+L+R:M=N 19 IF S>2 THEN GOSUB 37 20 IF S=1 THEN N=(N+2)&3:GO 26 21 IF (N=0) & (R=1) THEN GO 26 22 IF (N=2) & (L=1) THEN GO 26 23 IF (N=1) & (D=1) THEN GO 26 24 IF (N=3) & (U=1) THEN GO 26 25 GOSUB 37: GO 18 26 IF N=0 THEN DA A+1,AR(A+1)+1 27 IF N=1 THEN DA A,AR(A)+1 28 IF N=2 THEN DA A+1,AR(A+1)-1 29 IF N=3 THEN DA A,AR(A)-1 30 DA A+2,N:NEXT 31 IF G>0 THEN G=G-1 32 COLOR 7,0:? @0,10;"Punkte:";P 33 SYNC 3: IF Q=1 THEN GO 35 34 GO 3 35 DA A,10,10:N=1:GO 31 36 GOSUB 64:DA 64,0,4,32,0:GOTO 2 37 Z=RND(3):IF Z=2 THEN Z=3 38 N=(M+Z)&3:RETURN 39 'check if figure f can move 40 L=0:R=0:U=0:D=0:A=F*5 41 N=AR(A+2):E=100+AR(A)*21+AR(A+1) 42 IF AR(E-21)<>49 THEN U=1 43 IF AR(E+21)<>49 THEN D=1 44 IF AR(E-1)<>49 THEN L=1 45 IF AR(E+1)<>49 THEN R=1 46 RETURN 47 'draw figures 48 FOR W=1 TO 4:A=W*5 49 J=AR(A+3):I=AR(A+4):GOSUB 91 50 J=AR(A+0):I=AR(A+1):COL W+1,0 51 DA A+3,J,I 52 IF (G>0)&(G<>7) THEN COL 7,0 53 ? @1+J,4+I;%25;:NEXT 54 J=AR(3):I=AR(4):GOS 91:COL 6,0 55 E=100+21*AR(0)+AR(1) 56 IF AR(E)=42 THEN GOSUB 61 57 IF AR(E)=46 THEN GOSUB 60 58 DA E,0:? @1+AR(0),4+AR(1);%26; 59 DA 3,AR(0),AR(1):RET 60 NO 104: P=P+1:Q=Q-1:RET 61 NO 120: P=P+10:G=50:RET 62 63 'Draw playfield and set data 64 DA 0,15,10,1,0,0,10,9,1,0,0 65 DA 10,10,9,1,0,0,10,11,1,0,0 66 DA 20,10,8,1,0,0:M=0 67 DA 100,"111111111111111111111" 68 DA 121,"1.....*...1........*1" 69 DA 142,"1.11.1111.1.1111.11.1" 70 DA 163,"1.11.1111.1.1111.11.1" 71 DA 184,"1...................1" 72 DA 205,"1.11.1.1111111.1.11.1" 73 DA 226,"1.*..1....1....1....1" 74 DA 247,"1.11.1111...1111.11.1" 75 DA 268,"1..1.1.........1.1..1" 76 DA 289,"11.1...111 111...1*11" 77 DA 310,"1..1.1.1 1.1.1..1" 78 DA 331,"1.11.1.1111111.1.11.1" 79 DA 352,"1....1.........1....1" 80 DA 373,"1.11.1.1111111.1.11*1" 81 DA 394,"1..1.1.1111111.1.1..1" 82 DA 415,"11.1....*........1.11" 83 DA 436,"11.1.1.1111111.1.1.11" 84 DA 457,"1....1....1....1....1" 85 DA 478,"1.1111111.1.1111111.1" 86 DA 499,"1.*............*....1" 87 DA 520,"111111111111111111111" 88 FOR J=0 TO 20:FOR I=0 TO 20 89 GOSUB 91:NEXT :NEXT :Q=M:RETURN 90 'draw one array element 91 C=AR(100+21*J+I):D=0:F=6 92 IF C=49 THEN D=15:F=1 93 IF C=46 THEN D=226:F=6:M=M+1 94 IF C=42 THEN D=235:F=2 95 COLOR F,0:? @1+J,4+I;%D;:RETURN # |
Gruß Jörg
Datum:
Astrein das der BASIC-PC noch weiter entwickelt wird. Ich habe bis jetzt immer jedes Update und Bugfix draufgespielt und getestet. Auch wenn mir langsam die Ideeen ausgehen macht es immernoch Spass das Teil mal an den Fernseher anzuschließen und irgenwas vollkommen Sinnfreies zu proggen :) Dein Pacman allerdings werd ich jetzt mal öfter zocken ;) Gruß Robin T.
Datum:
Bugfixes wird es bestimmt noch einige geben, neue Features wohl eher nicht. Die Dokumentation der mittlerweise knapp 100 Schlüsellwörter und der neuen Videomodi hat erstmal Vorrang. Außerdem bin ich irgendwo an einer Grenze angelangt, einen "richtigen" Computer bekommt man auf diese Weise nicht hin. Deshalb laufen meine derzeitigen Überlegungen in die etwas andere Richtung, den (oder die) AVR nur noch als Co-Prozessoren für z.B. einen HCS12 mit externen RAM zu verwenden. Gruß Jörg
Datum:
Noch was zu den zwei Programmbeispielen. Wer Probleme beim Übertragen hat, ich habe leider den Kopf a la
PROGRAMM 1:NAME |
vergessen mit ins Listing zu kopieren. Und beim Oszi muß Zeile 17 auskommentiert werden um wirklich was zu messen. Gruß Jörg
Datum:
Hallo ! Ich bin vor ein paar Tagen auf dieses Projekt gestoßen und neu in diesem Forum. Respekt, gute Arbeit. Ist schon interessant, was man so mit den neueren Prozessoren von Atmel alles machen kann. Dies Projekt erinnert mich stark an den ZX81, falls den noch jemand kennt ;-). Ich glaube, ich werde mir diesen Mikro mal in leichter Abwandlung als SMD-Variante nachbauen. @ Jörg : Anstatt den Hauptprozessor zu wechseln, wäre es nicht auch möglich den ATmega644 durch andere AVR's, ATmega8 o.ä., in der peripheren Aus- und/oder Eingabe zu entlasten. Würde vielleicht auch einiges an Programmierung sparen. Ein Beispiel für eine VGA-Ausgabe fand ich vor ein paar Tagen hier: http://www.serasidis.gr/circuits/AVR_VGA/avr_vga.htm Gruß Günter
Datum:
Hallo Jörg, ich habe die 96-Version geflasht und bin positiv über die (neuen?) Features überrascht. Besonders CTRL-C und CTRL-V sind sehr hilfreich. Auch läuft es bisher sehr stabil - trotz umfangreicher Änderungen. Dein PACMAN ist anschliessend immer wieder ein krönender Abschluß.... Viele Grüsse Otto PS: Änderst Du zur Zeit die Beschreibung auf Deiner Homepage?
Datum:
Hallo, die Doku überarbeite ich gerade, kann aber noch etwas dauern da ich sowohl die Organisation des Bildspeichers in den 8 Videomodi als auch das API möglichst vollständig mit dokumentieren will. Das mit dem Verteilen auf mehrere Controller habe ich auch schon angedacht, aber dann steht wieder die Frage nach einem schnellen Bus, der möglichst wenige Ressourcen bindet. Der S12 hat halt die Vorteile, gerade dazu einfallen würde mir: 1. Ich kenne mich recht gut damit aus 2. Kann Programme aus dem RAM ausführen, auch aus dem externen 3. Lässt sich recht bequem in Assembler programmieren 4. Schnelle Hardware-Division Aber mal sehen, was als nächstes wird. LCD mit 320x240 habe ich bereits daliegen und auch schon die CFL durch 6 LED ersetzt... Gruß Jörg
Datum:
Hallo Jörg, bestände die Möglichkeit, dass Du bei der Doku auf Deiner HP das aktualisierst, was Du schon fertig hast? Mein Interesse betrifft speziell die Beschreibung des Array, da mir hier einige Punkte nicht ganz klar sind: 1. "Teilen" sich Variablen und Array immer noch den selben Speicher? 2. Welche Adressen sind zulässig (0-1024 und 1024 bis 2047)? 3. Ist der Bytebereich physikalisch der selbe Speicher wie der Wortbereich? 4. Zeigt die Array-Ansicht des Monitors das gesamte Array (mit blättern)? Weiterhin gibt in der Aufteilung scheinbar einen Unterschied zur Mega32-Version (nicht kompatibel). Wo liegt dieser? Das Schreibzugriffe nur noch über DATA erfolgen dürfen, habe ich berücksichtigt. Gibt es Adressen des internen EEPROM, die nicht beschrieben werden können? Viele Grüsse Otto
Datum:
weiter... 1x Sd-Karte ist noch vorhanden, 1x serielle Schnittstelle mit MAX. Die Atmega kann man austauschen. mfg
Datum:
1. Doku ist in Arbeit aber noch eine große Baustelle und es fehlt halt momentan ein bisschen an der Zeit. Vielleicht am WE, aber versprechen will ich nichts. - Array und Variablen belegen getrennten Speicher, auch wenn das nicht unbedingt die bessere Lösung ist. - Gültige Adressen sind 0-767 (Bytes) und 1024-1407 (Words), der Speicher ist derselbe - In der Array-Ansicht kann man nach unten blättern, allerdings wird nur im Byte-bereich angezeigt 2. Aufteilen geht nicht so einfach, da dafür die Software in großen Teilen wahrscheinlich mehr oder weniger komplett neu geschrieben werden müsste. Ein Mega644 reicht aus, den MAX kann man mit benutzen da in der aktuellen Version das Verhalten des Soft-UART umschaltbar ist. SD-Karte geht nicht, das Dateisystem ist an die Atmel Dataflash angepasst. Man könnte das durchaus auf eine SD-Karte abbilden, aber dann würden alle gleich wieder nach FAT schreien und so tu ich mir das lieber nicht an... Gruß Jörg
Datum:
Hallo Jörg, vielen Dank für Deine Antwort - so hatte ich es mir auch zurechtgereimt, kann aber immer noch nicht erkennen, weshalb das "alte" Programm nicht auf der 644-Version lief. Nachdem ich die "Datas" und korrespondierend auch "icomm" in den Byte-Bereich gelegt hatte, lief das meißte aber. Mittlerweile funktioniert zum Glück alles und ich freue mich über die neuen grafischen Möglichkeiten und die vervierfachung des Speichers, welche es mir ermöglicht, alle Anzeigen zu realisieren...... Viele Grüsse Otto PS: Die Programme haben eine unterschiedliche Zeilenzahl (1=95, 2=94, 3=92, 4=93) EPOKE kann nicht mit EP abgekürzt werden BORDER ist z. Zt. nicht in der Dokumentation
Datum:
Guten Abend Herr Wolfram, zu Ihrem kleinen Mega644 Selbstbau- Computer habe ich folgende Fragen: 1. Auf Ihrer HP steht, das nur 95 Programmzeilen erlaubt sind. Ist der Programmcode auf 95 Zeilen begrennzt? Falls ja, kann man nur Miniprogramme erstellen... 2. Kann man ggf. den Speicher für den Programmcode vergrößern? 3. Gibt es bereits ein Softwarearchiv für Ihrem Computer? Mir ist die Basic (Programmier-)Sprache bekannt, allerdings wüsste ich gerne, was andere Besitzer des Computers bereits in den kleinen Speicher (?) hinein gepresst haben... 4. Ist im Shop (https://www.it-wns.de/themes/kategorie/detail.php?...) auch ein passendes Gehäuse vorhanden? 5. Was benötige ich noch, wenn man den im oben genannten Shop gekauften Bausatz fertig gelötet hat, um Ihr OS auf dem Computer zu bringen (Programmerkabel, Softwareumgebung, Hostbetriebssystem) ? Ich denke, das reicht für das erste... Vielen dank für Ihre Antworten in voraus, Ronny
Datum:
@Otto Freut mich, dass es soweit funktioniert. Allerdings haben bei mir alle Programme 95 Zeilen. EP mache ich wieder mit rein, kein Problem und die Doku ist auch fast fertig wobei ich Sachen wie das API erstmal draussen vor gelassen habe) @Ronny 1.+2. Die Anzahl der Zeilen ist durch das verfügbare RAM begrenzt. Für eine RAM-Erweiterung müsste wahrscheinlich sehr viel am Konzept geändert werden. Der ATMega 128 geht leider nicht, auch wenn man ihn auf 20MHz übertakten würde. Aber mittels GOSUB P,N kann man den Code auch auf mehrere Programme verteilen. 3. Gibt es (leider) nicht, ich hatte sowas schonmal angedacht aber aufgrund des zeitlichen Auwandes zur Pflege des Archives schnell wieder verworfen. 4. Wahrscheinlich nicht. Allerdings habe ich auch nicht direkt etwas damit zu tun. Einfach mal nachfragen... 5. Ein Kabel von 9-polig DIN auf Scart, für die Hexfiles einen funktionierenden Programmer für 10-poligem ISP-Anschluß und ein Steckernetzteil mit ca. 7-9V. Für den Programmaustausch mit dem PC eine serielle Schnittstelle und ein Terminalprogramm, Betriebssystem ist dafür weitestgehend egal. Gruß Jörg
Datum:
> Autor: Joerg Wolfram > 1.+2. Die Anzahl der Zeilen ist durch das verfügbare RAM begrenzt. Für > eine RAM-Erweiterung müsste wahrscheinlich sehr viel am Konzept geändert > werden. Der ATMega 128 geht leider nicht, auch wenn man ihn auf 20MHz > übertakten würde. Aber mittels GOSUB P,N kann man den Code auch auf > mehrere Programme verteilen. ok, das müsste ich mal mit dem atmel emulator testen... eines der guten alten textadventures, auf dem pc portiert, bracht wohl ein paar codezeilen mehr... > 3. Gibt es (leider) nicht, ich hatte sowas schonmal angedacht aber > aufgrund des zeitlichen Auwandes zur Pflege des Archives schnell wieder > verworfen. du hast aber ein paar codebeispiele online, die beim bauen eigener programme helfen... > 4. Wahrscheinlich nicht. Allerdings habe ich auch nicht direkt etwas > damit zu tun. Einfach mal nachfragen... schon erledigt. antwort sollte auch bald da sein... > 5. Ein Kabel von 9-polig DIN auf Scart, ein serielles kabel nach scart zum programmen...? > für die Hexfiles einen > funktionierenden Programmer für 10-poligem ISP-Anschluß und ein > Steckernetzteil mit ca. 7-9V. Für den Programmaustausch mit dem PC eine > serielle Schnittstelle und ein Terminalprogramm, Betriebssystem ist > dafür weitestgehend egal. so ein programmer kostet mir 20-40€.. mal schauen, welcher am besten geeignet ist. ab betriebssystemen steht mir eigendlich alles, was rang und namen hat, zur verfügung... also, win + linux + mac os + diverse opensource betriebssysteme (tyndur, deskwork, reactos usw...)
Datum:
Hallo Ronny, das Kabel von 9-polig D-Sub auf Scart ist für den Fernseher-Anschluß und hat nix mit dem Programmieren zu tun. Der von Dir verlinkte Programmer sollte aber funktionieren. Code-Beispiele habe ich auf der Homepage, die sind aber auch in der Doku mit drin. So einen Step-by-step Kurs hatte ich schonmal angefangen, aber erstmal auf Eis gelegt. Für ein Text-Adventure wäre es vielleicht sinnvoller, die Daten zu den einzelnen Orten in einer extra Datei auf dem Dataflash zu halten und nur im BASIC auszuwerten. Gruß Jörg
Datum:
Angehängte Dateien:So, lange genug hat es ja gedauert, aber jetzt ist die Version 1.00 endlich fertig. Die Dokumentation ist aber leider noch nicht vollständig, die API-Funktionen sind noch nicht vollständig beschrieben. Neue Features wird es wohl nicht mehr geben, dazu ist einfach der Flash zu voll. Was gibt es neues? Zuerst einmal, mit 4 (bei RGB reichen auch 3) Widerständen lässt sich der Computer auf 16 Farben "aufrüsten". Dafür ist der Autostart-Jumper einer "intelligenteren" Lösung gewichen. Dann noch 8 Videomodi, davon 2 mit benutzerdefinierten Zeichen. Bei Videomodus 1 kann für jeweils 8x8 Pixel Vorder- und Hintergrundfarbe festgelegt werden. Unterstützung für Binärprogramme (bis 3KBytes), diese können auch Routinen enthalten, die vom BASIC aufrufbar sind. Dateitransfer vom Hauptmenü aus über X-Modem, REPEAT-UNTIL Schleifen, Lautstärkesteuerung... Die Doku habe ich auch erweitert, allerdings sind die Beispielbilder aus der BASIC-Referenz rausgeflogen. Dafür wird es wahrscheinlich demnächst eine Art kleinen "Programmierkurs" geben. Viel Spaß damit, wer Fehler findet, bitte melden. Gruß Jörg
Datum:
Hallo Jörg, vielen Dank für die neue Version - leider habe ich es jetzt erst gesehen. Auf jeden Fall werde ich heute mit Spannung die Dokumentation lesen. Aber so weis ich auf jeden Fall, was ich am nächsten Wochenende tue.... Viele Grüsse Otto
Datum:
Ein Update nimmt schon langsam Gestalt an, auch werde ich entgegen meiner Ankündigung noch neue Features einbauen. Leider ist das Feedback derzeit praktisch Null, ein paar Bugfixes werden aber auch dabei sein. Was mich in letzter Zeit geärgert hat, ist die starre Abhängigkeit von den Zeilennummern. Jedesmal wenn man eine Zeile einfügt oder löscht passen die Ganzen GOTO und GOSUB Werte zur Hälfte nicht mehr. Die nächste Version enthält dafür zwei neue Befehle VSET und ASET, mit denen die aktuelle Zeilennummer in eine Variable oder ein Array-Element geschrieben werden kann. Der Programmtext:
ASET 300: GOTO AR(300) |
wird damit in jeder beliebigen Zeile eine Endlosschleife erzeugen. Das API wird auch noch ein bisschen erweitert und die Konfigurationsseite werde ich etwas aufräumen (Auswahl per Cursor-Tasten). Veröffentlichungstermin wird am WE oder eher nächste Woche sein, je nach dem, was mir noch einfällt... Gruß Jörg
Datum:
Insgesamt ein total tolles Projekt ;) Werd mir mal den Bausatz zum Sommerurlaub bestellen g Vielleicht bekomm ich ja meine Kinder dazu auch ein wenig zu spielen :) Gruß Anselm
Datum:
Angehängte Dateien:Hallo, es gibt wieder eine "Zwischenversion" als Hexfile zum Testen. 1. Den Ansatz mit VSET und ASET habe ich wieder fallen lassen, ganz einfach deswegen, weil mir eine bessere Idee gekommen ist, Sytemvariablen! Diese bestehen aus der Tilde (~) und einem Buchstaben, und können wie Konstanten benutzt werden. ~P ist das aktuelle Programm (1-8) ~L ist die aktuell abgearbeitete Programmzeile (1-95) ~S gibt die gerade aktive Bildschirmzeile zurück ~V gibt an, aus wieviel Bildschirmzeilen ein Halbbild besteht (263/313) ~X Anzahl der Pixel in horizontaler Orientierung ~Y Anzahl der Pixel in Vertikaler Orientierung ~X und ~Y hängen dabei vom gerade aktiven Videomode ab. 2. EPEEK(N) liefert ab N=3072 die Programmbytes für die Programme 1-8 wobei gilt: N=3072*Programmnummer(1..8), ab N=6144 stehen z.B. 12 bytes für den Programm-Namen von Programm 2 3. Nachdem eine Realisierung im BASIC einfach zu umständlich und zu kompliziert , die Funktionalität aber notwendig war, gibt es einen neuen Befehl: SCALE
SCALE Variable,Y1,Y2,X1,X,X2 |
Die angegebene Variable anthält nach dem Aufruf den Wert Y, der relativ gesehen so zwischen Y1 und Y2 liegt wie X zwischen X1 und X2. Damit das Ergebnis hinreichend genau ist, wird dabei intern teilweise mit 32 Bit gerechnet. Um z.B. einen 10 Bit ADC-Wert in Prozent-Angaben zwischen -100% und +100% umzurechen ist nur folgendes notwendig:
10 A=ADC(0); 11 SCALE R,-100,100,0,A,1023 12 ? R |
4. Ich habe die Config-Seite umgebaut, da die Bedienung über die Funktionstasten einfach zu unübersichtlich geworden ist und ein Abbruch ohne Reboot nicht mehr möglich war. Jetzt geht es so: - Mit den Cursor Tasten (nach unten/nach oben) wird die zu ändernde Einstellung ausgewählt. Dabei ist der aktuelle Wert invers dargestellt. - ESC bricht ab, ohne die Konfiguration zu speichern - Mit F1 wird der Wert geändert - mit F2 werden die aktullen Einstellungen gespeichert und ein Reboot ausgelöst. - Mit F4 kann das Sytem, wie gehabt, geclont werden. Viel Spaß damit, Jörg
Datum:
Angehängte Dateien:Endlich ist mit der Version 1.02 auch die API-Dokumentation der mittlerweile etwas über 100 Funktionen abgeschlossen. Ein paar Bugfixes sind auch noch dabei: - GOSUB-RETURN innerhalb von FOR-NEXT Schleifen führte zu Fehlermeldungen - Nach dem Update via Bootloader funktionierte die Konfigurationsseite nicht mehr richtig Die LaTex und XFig Dateien für die Dokumentation werde ich auch über Berlios bereitstellen, Homepage wird nachher noch aktualisiert. Gruß Jörg
Datum:
@Joerg: Wie währe es wenn du Zeilennummern nur noch als Labels siehst? Also das Konstrukte wie das da möglich sind:
10 print "foo" for x = 1 to 10 if y = 5 then x = 10:goto 20 rem irgendwas sinnvolles mit y 20 next x |
Datum:
@Bernd Das geht leider nicht so einfach, denn die Zeilennummern existieren ja im Programm selbst gar nicht. Da jede Zeile, gleich welchem Inhalts, immer 32 Bytes groß ist, wird bei einem GOTO 5 die Abarbeitung einfach bei Adresse 128 weitergeführt. Gruß Jörg
Datum:
Angehängte Dateien:Im API bis Version 1.02 gibt es einen Fehler, api_dataptr lieferte leider eine falsche Adresse zurück. Außerdem wird es noch zwei zusätzliche API-Routinen geben die CCHAR im Basic entsprechen. Momentan gibt es nur das aktuelle BIN File, welches via XMODEM über den Bootloader geflasht werden kann. Jörg
Datum:
Angehängte Dateien:Die aktuelle Version 1.03 muß letztendlich doch geflasht werden, da es auch im oberen Speicherbereich eine Änderung gab. - Bugfix in api_dataptr (siehe letzten post von mir) - API-Funktionen um BASIC-Routinen erweitert - Oszi-Beispielprogramm aktualisiert Programme, deren Namen mit einem Unterstrich beginnt, werden beim Speichern nicht mehr tokenisiert und können auch nicht mehr gestartet werden. Damit kann man den Editor (eingeschränkt) auch als Texteditor verwenden. Jörg
Datum:
Hi Joerg, find ich gut das du immernoch so engagiert an dem BASIC-PC arbeitest. Ich flashe nach wie vor jede neue Version darauf und es macht auch immernoch Spaß damit zu proggen ;) Gruß Robin T.
Datum:
Hallo Jörg, seit ungefähr einem Jahr verfolge ich die Entwicklung des Chipbasic Computers, Hut ab vor dem was Du da auf die Beine gestellt hast. Schon lange war ich auf der Suche nach so etwas womit man mal schnell was steuern oder regeln kann. Dein Projekt zielt wahrscheinlich nicht primär auf MSR, was die zahlreichen Möglichkeiten der Videoprogrammierung erklärt. Das ist jedoch nicht weiter schlimm, man kann sich eben mit den vorhandenen I/O Befehlen helfen. Nun zu meiner Frage: Ich habe mir den Rechner auf Lochraster aufgebaut und um einige I2C Bausteine für spezielle Aufgaben ergänzt. Die generische I2C Rautine klappt auch soweit, ich habe jedoch bei über Kabel angeschlossenen Bausteinen wie dem von Dir mit der temp() funktion supporteten LM 75 das Problem das dieser aufgrund von Störpegeln bzw. der hohen Taktfrequenz von mindestens 100khz auf dem Bus bei einer schon relativ kurzen Kabellänge von unter einem Meter austeigt und einen I2C Error bringt oder das System sich aufhängt. Gibt es eine Möglichkeit vielleicht durch einen Poke in eine Speicherstelle die Taktfrequenz auf dem Bus rapide herabzusetzen, vielleicht so auf 1khz um eine höhere Kabellänge zu den Sensoren zu realisieren? Roger
Datum:
Schaue dir mal www.DieProjektseite.de an.
Datum:
> Schaue dir mal www.DieProjektseite.de an.
Weshalb ?
Otto
Datum:
erstmal btt: der chipbasic2 ist garnicht mal so uninterissant. man braucht, zum bausatz. noch ein programmerkabel für den atmel. ich hab mich bishher eher nur für den propeller mcu interissiert. eigendlich komme ich aber eher aus der programmierer szene. zuletzt hatte ich, bevor ich mir ein hive-computer gebaut habe, vor 10 jahren mal herum gelötet... nun suche ich seit monaten eigendlich nach kleinen elektronik projekten, wo ich wieder etwas in die technik herein finde. zum chipbasic2: der computer hat einen einfachen aufbau, wie ich ihm vom c=64 und anderen homecomputern kenne. was mich an den pc stört, ist einzig und allein die begrenzung auf 95 zeilen und dem damit verbundenen, sehr kleinen programmspeicher. es gibt zwar ein eeprom mit 8 plätzen, dieser ist aber schnell belegt, wenn ich darauf ein paar zeilen basic tippe. ich denke da an das eine oder andere textadventure (i love him), oder einen kleinen sidescroller. 95 zeilen hören sich viel an, aber wenn man mehr als 1 level bauen will, dann wirds da schnell eng... von daher...: ich hab mit den "computer", den hansi hier vorstellte einmal angesehen. an sich ist der computer eine gute creation. im shop gibt es aber keine platinen. diese muss man sich selbst anfertigen. man kann das ganze auf lochraster nachbauen, oder die platinen selbst fertigen, bzw. fertigen lassen. letzteres jedoch nicht beim betreiber der homepage... ich persönlich habe ein hive ( mehr dazu hier: Beitrag "Projekt: HIVE - retro style computer" oder auch auf http://www.hive-project.de ). ich bin auch im forum team (nickname: borgkönig) aktiv. fazit: der chipbasic ist eigendlich gut durchdacht. es gibt, in meinem augen, nur eine schwachstelle: man kann nur 95 zeilen/ programm eingeben. der basic interpreter sollte soviele zeilen schlucken, wie realer ram verfügbar ist...
Datum:
@hobby-coder: Dafür kostet das Hive auch gleich um einiges mehr. Minimalstbeschaltung des AVR-ChipBasic lässt sich mit Bauteilen für ~5 Euro machen, zieh einen guten Euro ab wenn du einen PC mit USB als 5 Volt Steckdose missbrauchst. Und genau darum geht es hierbei, mit geringsten Mitteln einen voll funktionsfähigen Computer bauen welcher am Fernseher angeschlossen werden kann und eine Tastatur besitzt. Und ich schätze mal wenn man ein paar Chinesen für dieses Teil begeistern könnte, könnte man den ChipBasic in Vollausstattung, fertig gelötet im Gehäuse, für maximal 10 Euro kaufen.
Datum:
Mein Beetle ist irgendwie das Zwischending vom ChipBasic und dem Hive. Durch das modulare Konzept vom Beetle kann man das System noch massiv erweitern. Die Zeilengrenze vom ChipBasic gibt es bei mir auch nicht. Erst einmal stehen 64 kB RAM zur Verfügung und durch den Chain-Befehl sind theoretisch unendlich große Programme möglich. Erweiterungsmodule und Programme werden laufend entwickelt. Auch Lehrgänge wird es immer weitere geben. Habe gerade erst mit der Entwicklung eines weiteren größeren Programmes und einer Hardwareerweiterung begonnen. Das Preview werde ich wohl Anfang nächster Woche auf meiner Seite (www.DieProjektseite.de) vorstellen können.
Datum:
@Roger die demnächst kommende Version 1.10 wird (zumindest Byteweise) lesenden und schreibenden Zugriff auf alle I/O Register haben. Mittels Datenblatt lassen sich dann leicht andere Werte für TWBR und TWSR einstellen. @hobby-coder etwas hast Du da durcheinandergewürfelt. Die 8 Programme sind alle im internen Flash, internes und externes EEPROM kann nur noch zur Speicherung von Daten benutzt werden. Zusätzlich gibt es ein externes Dateisystem auf Dataflash. Die Dateien können bis zu 32K groß werden und seitenweise in das Array eingelesen werden. Für ein Textadventure müsste man nur die Engine in BASIC schreiben, die die Daten blockweise in das Array nachlädt. Die nächste Version wird auch eine Änderung enthalten, die eventuell bestehende Programme betreffen kann. Und zwar habe ich GOSUB mit ein und zwei Parametern wieder in GOSUB und CALL getrennt. Dafür können dann bis zu 5 Parameter übergeben werden, mit RETURN N auch ein Rückgabewert. Für reine BADIC-Programme ist das nicht unbedingt notwendig, aber das Schreiben von externen Assembler-Routinen wird um einiges leichter. Jörg
Datum:
Die Programme werden in das Flash geschrieben, z.B. beim Laden vom Dataflash-Modul. BASIC-Programme werden beim Speichern auch in Tokencode übersetzt und dann in das Flash geschrieben. Das mit dem Asseblercode stimmt nicht ganz, der muß natürlich vorher auf einem PC in Maschinencode übersetzt werden... Um das Programmieren zu erleichtern, gibt es ein API mit über 100 Funktionen, die in eigene Programme eingebunden werden können. Jörg
Datum:
Hi ich hab mir den Bausatz organisiert, aufgebaut und ausprobiert. Beim PONG Startet das Spiel nicht und eine Fehlermeldung RETURN ohne GOSUB in Zeile 49 erscheint. Hat jemand eine Idee? Chipbasic V1.0 ist in Verwendung Grüße PS Jörg: Wahnsinns Projekt !
Datum:
Hallo StefanG, benutze bitte die aktuelle Version (1.03), in die 1.0 ist leider ein Bug reingerutscht, der die Fehlermeldungen verursacht. Jörg
Datum:
das war anscheinend das Problem danke. StefanG.
Datum:
Angehängte Dateien:So, ich hoffe, dass nicht allzuviele neue Fehler reingekommen sind... Folgendes hat sich geändert: - Aufspaltung von GOSUB in GOSUB und CALL - bis zu 5 Parameter könen übergeben werden ~(1)...~(5) - Anzahl der übergebenen Parameter mit ~N - RETURN kann einen Rückgabewert erhalten ~R Die Funktionsparameter und der Rückgabewert existieren nur einmal, das ist insbesondere bei verschachtelten GOSUB-Aufrufen zu beachten. - IN und OUT im Adressbereich $4xx greifen nun direkt auf die I/O Register des Mega644 zu Und schließlich noch ein paar Bugfixes und Erweiterungen im API, um z.B. aus nativen AVR-Programmen auf die Funktionsparameter zuzugreifen. Jörg
Datum:
Hallo zusammen, eigentlich möchte ich Jörg hier nur meine Anerkennung aussprechen. Dein Projekt Chipbasic ist schon klasse! Ich habe meine Erfahrung und Begeisterung mit dem Chipbasic2 auf meiner Homepage niedergeschrieben. Schaut doch mal rein http://www.dh2faa.de dann Projekte und aus der Liste den Eintrag 15 anklicken. Eine kleine frage hätte ich noch: Welche EEPromtypen werden unterstützt? Danke und Gruß Heiko
Datum:
@ Joerg Wolfram: Mich stört am gesammten Projekt eigendlich nur die 95 Zeilen Begrenzung. Im großem ganzem ist Dein Projekt einfach klasse. Ein OS + IDE + Keyboard + Grafik in ein MCU zu packen, ist eine große Leistung. Mich würde mal interissieren, wie man das Problem, das man nur 95 Zeilen pro "Seite" hat, umgehen kann ohne externe Dateien verwenden zu müssen... Zu C=64 Zeiten hatte man ja auch oftmals sein Programm in eine Datei gesteckt... Zum Dataflash Modul: Gibt es dafür ein Bausatz? Wenn nein, wie hoch ist der Aufwand, einen solches auf einer Lochraster Platine nach zu bauen? Und, welche Bauteile braucht man dafür, neben dem Flash Chip?
Datum:
@ jörg wolfram: vielen Dank für die Implementation des direkten Zugriffs, ich habe es gestern ausprobiert und die Bitrate reduziert, man kann so die mögliche Leitungslänge der Sensoren erheblich steigern. Gruss Roger
Datum:
@Heiko EEPROMS gehen eigentlich alle 24xx mit zwei Adressbytes, also 24C32 bis 24C512. Beim 24C16 gibt es verschiedene Varianten, manche adressieren mit 3 Bits im ersten Byte und 8 Bits im zweiten, diese funktionieren nicht. @Roger freut mich, dass es so geklappt hat. @Ronny Die 95 Zeilen sind systembedingt und lassen sich auch nicht so schnell erweitern. Die wesentlichste Einschränkung kommt vom Fullscreen-Editor und dem verfügbaren RAM. Und natürlich aus dem Umstand, dass jede Zeile genau 32Bytes groß ist, egal ob leer oder vollgeschrieben. An diesem system werde ich auch nichts mehr ändern, zumindest bei diesem Projekt. Das DataFlash-Modul ist sowohl in der Doku als auch auf meiner Webseite beschrieben, neben dem Flash-Chip braucht es nur noch einen 3K3 Widerstand, einen 10µF keramischen Kondensator und eine LED mit ca. 1,8V Flußspannung. Jörg
Datum:
Joerg Wolfram schrieb: > @Ronny > Die 95 Zeilen sind systembedingt und lassen sich auch nicht so schnell > erweitern. Die wesentlichste Einschränkung kommt vom Fullscreen-Editor > und dem verfügbaren RAM. Kann man das Ram Problem umgehen, wenn man größere EEProm's verwendet? Natürlich vorausgesetzt, das man kompartible EEProms verwendet... > Und natürlich aus dem Umstand, dass jede Zeile genau 32Bytes groß ist, > egal ob leer oder vollgeschrieben. An diesem system werde ich auch > nichts mehr ändern, zumindest bei diesem Projekt. Das klingt so, als ob Du an einem Nachfolger bastelst...?! > > Das DataFlash-Modul ist sowohl in der Doku als auch auf meiner Webseite > beschrieben, neben dem Flash-Chip braucht es nur noch einen 3K3 > Widerstand, einen 10µF keramischen Kondensator und eine LED mit ca. 1,8V > Flußspannung. > > Jörg Ich denke mal, dass man das auf ein Stück Lochrasterplatine nachbauen kann... Ich probiere das einfach mal aus... BTW...: Sind die Sourcen zu den ChipBasic Computern (Atmega 8 - Atmega 644, bzw. ChipBasic1 - ChipBasic2) Open Source...? Ronny
Datum:
@Ronny Das RAM Problem kann man so einfach nicht umgehen, außer mit mehr (z.B. externem) RAM. EEPROM ist definitiv zu langsam, eine Zeile einfügen oder löschen würde dann ein paar Sekunden dauern. Es werden ja keine Zeilennummern mit abgespeichert, sondern die Adresse einer Zeile im Speicher lässt sich einfach ausrechnen: Basis + (Zeilennummer-1) *32 Das ist zwar etwas Speicherplatzverschwendung, hat aber gerade aufgrund des deterministischen Zeitverhaltens auch einige Vorteile. Es wäre auch kein Problem, Programme bis zu 255 Zeilen (bei kleinen Änderungen bis zu 32767) aus einem externen EEPROM abzuarbeiten, nur editieren könnte man sie nicht mehr. Dazu könnte man (in ASM) einen kleinen Zeilenlader in eins der 8 Programme schreiben, der die gewählte Zeile aus dem externen Speicher in den Buffer lädt und mit api_basrun ausführen lässt. Zu Nachfolgeprojekten gibt es derzeit nur ein paar Konzeptionen, aber nichts konkretes. Deine letzte Frage verstehe ich nicht ganz, bei allen Projekten steht sowohl auf meiner Homepage als auch in den Dateiarchiven (die auch den Source-Code enthalten), dass die Projekte unter der GPL stehen. Jörg Die gesamten
Datum:
O.k. Danke für Deine Infos. Wie sehen Deine Konzepte zur Zeit aus...? Letzteres hat sich von selsbt erledigt. Ich habe die Hinweise auf die GPL Linzens übersehen...
Datum:
@Joerg: Wie sähe es eigentlich mit einer AVR32 Portierung aus? Die Dinger werden ja auch immer billiger und einen einsamen SMD Chip löten sollte selbst der größte Lötkolbenlegasteniker hinbekommen.
Datum:
Das Problem ist halt, so einen AVR32 baut man nicht schnell mal auf Lochraster oder nem Steckbrett auf. Und damit steigt meiner Meinung nach ganz einfach die Hemmschwelle, so etwas einfach mal aus Spaß nachzubauen. Auch denke ich, dass in dem Projekt noch wesentlich mehr Möglichkeiten stecken. Konkret arbeite ich derzeit ein einer BCD-Arithmetik-Bibliothek, die einfach auf einen der 8 Programmplätze geladen werden kann. Über CALL mit den entsprechenden Parametern kann man dann die einzelnen Funktionen abrufen. Ein-/Ausgabe sowie die Grundrechenarten sind schon fertig, müssen aber noch optimiert werden. Nachdem das Operieren mit Binärzahlen bei der Ausgabe einfach "seltsame" Ergebnisse ausgegeben hatte, bin ich jetzt bei BCD Festkomma mit 8 Vorkomma- und 8 Nachkommastellen angelangt. Aber das muß nicht der Weisheit letzter Schluß sein... In punkto Hardware gibt es ein paar Ideen, aber nichts konkretes. Jörg
Datum:
"Das RAM Problem kann man so einfach nicht umgehen, außer mit mehr (z.B. externem) RAM." |
Das schreit ja förmlich nach dem ATmega1284P, hat auch DIP40. Mit 16kb Ram und einer zweiten USART geht doch noch was. Gruß Rene
Datum:
Der Mega1284p wäre schon interessant, wenn es ihn denn zu kaufen gäbe. Besonders, da man so die vorhandene Hardware weiternutzen kann. Allerdings ist das dann wieder eine neue "Baustelle", die gepflegt sein will. Und dazu habe ich momentan weder Zeit noch Lust. Da der AVR halt nur Code aus dem Flash ausführen kann, sind die Möglichkeiten, einen "richtigen" Computer damit zu bauen, eher begrenzt. Und bevor ich dasselbe Konzept auf einen anderen Controller portiere, lasse ich mir lieber was neues einfallen. Jörg
Datum:
Gibt ja immer noch diesen AVR FPGA, wenn ich mich recht entsinne sogar als PLCC, also Rasterbrett tauglich. Ansonsten könnte man sich auch überlegen das ganze auf Z80 zu portieren, die Dinger wirds wohl auch noch in 9001 Jahren geben...
Datum:
Meine Überlegungen würden dann eher Richtung S12X gehen. Den gibts bis zu 32K RAM und 40MHz Bustakt, lässt sich auch schön in ASM programmieren. Die Videoausgabe könnte dann der XGATE übernehmen. Jörg
Datum:
Hallo, mal ein kurzes Update. Für die nächste Version habe ich vorgesehen, den bisher eingebauten Videomodus 7 wieder zu entfernen. Dafür wird es einen "Mechanismus" geben, mit dem eigene Videotreiber auf Programmplatz 7 installiert werden können. Die müssen nicht unbedingt Video ausgeben, sondern können z.B. auch ein Text-LCD am Parallelport ansteuern. Die erste BCD-Bibliothek ist in Grundzügen fertig, aber noch zu langsam und zu unflexibel. So komme ich auf etwa 8ms für eine Division mit 6 Vorkomma- und 6 Nachkommastellen, eine Multiplikation braucht ca. 3ms. Momentan experimentiere ich mit einer flexiblen Binär-Festkommaarithmetik mit 7...247 Bit, mal sehen was dabei herauskommt... Auch ein etwaiges Nachfolgeprojekt nimmt langsam konkrete Züge an. Ein Mega8515 plus ein kleines CPLD und 64K RAM liefern 320x240 Vollgrafik in s/w an wahlweise VGA/TV/LCD (umschaltbar). Schnittstellen sind PS2-Tastatur, SPI (Dataflash, Datenaustausch) und ein paralleler I/O Bus. Auf dem Controller selbst läuft ein minimales BS, die Anwenderprogramme werden von einer virtuellen Maschine aus dem RAM ausgeführt. Jörg
Datum:
Ui! Wenn du es schaffst einen Z80 als VM zu bauen könnte man damit Sinclair BASIC laufen lassen. :)
Datum:
Bernd schrieb: > Ui! > Wenn du es schaffst einen Z80 als VM zu bauen könnte man damit Sinclair > BASIC laufen lassen. :) So einen hab ich hier auch noch :) Leider ist die Tastatur kaputt :(
Datum:
Eine Z80 Emulation hatte ich auch schon mit ins Auge gefasst, allerdings ist ein realitätsgetreues Timing mit meinem Konzept nicht möglich. Außerdem lässt sich die Geschwindigkeit der VM steigern, wenn der AVR bestimmte Operationen nativ bewältigen kann (z.B. Multiplikationen). Und kompatibel zu irgendetwas muss sie meiner Meinung auch nicht sein. Jörg
Datum:
Zumindest in der letzten Version (1.10) ist ein Bug bei ACOPY drin, der das System abstürzen lassen kann. Update kommt so bald als möglich, zusätzlich werde ich noch Shift-Operationen für schnelle Multiplikationen/Divisionen mit Potenzen von 2 einbauen. Jörg
Datum:
Angehängte Dateien:Die neue Version gibt es vorerst nur als Hexfile, sobald die Doku fertig ist auch wieder ein komplettes Paket. Die zusätzlichen Befehle sind: LSHIFT variable,anzahl und ASHIFT variable,anzahl L steht für logisch und A für arithmetisch, die Anzahl ist positiv für linksschieben und negativ für rechtsschieben. LFIND variable,code dieser Befehl ist für das Auffinden von Assemblerbibliotheken gedacht. Jede Bibliothek hat eine (hoffentlich) eindeutige Kennung, über die sie gesucht werden kann. In der Variable steht dann der erste gefundene Programmspeicherplatz oder 0 für nicht gefunden. Die erste Bibliothek ist auch in einem fortgeschittenen Stadium, auch die Geschwindigkeit ist recht akzeptabel geworden. Bis zum Release wird es aber noch etwas dauern. Jörg
Datum:
Angehängte Dateien:Hier schon mal ein "Ausblick" auf die kommende Version 1.22 und die Festkomma-Bibliothek. Letztere kann zur Laufzeit auf 2-32 Vorkomma- und 0-30 Nachkommastellen konfiguriert werden. Realisiert sind Eingabe/Ausgabe über Text, Import/Export von 16Bit Integer-Werten, Addition, Subtraktion, Multiplikation und Division, Multiplikation und Division mit 2, Absolutbetrag etc. In der Testphase ist noch eine Scripting-Engine, mit der sich relativ einfach weitere mathematische Funktionen realisieren lassen. Die Beispielbilder sind aber noch "Zu Fuß" mittels CALL Befehle aus dem BASIC heraus berechnet, allerdings war die Bildausgabe währen der Berechnungen abgeschaltet. Release-Termin für das Paket wird wohl frühestens so Mitte Dezember sein, da die Dokumentation auch noch überarbeitet und erweitert werden muß. Jörg
Datum:
Joerg Wolfram: "Auch ein etwaiges Nachfolgeprojekt nimmt langsam konkrete Züge an. Ein Mega8515 plus ein kleines CPLD und 64K RAM liefern 320x240 Vollgrafik in s/w an wahlweise VGA/TV/LCD (umschaltbar). Schnittstellen sind PS2-Tastatur, SPI (Dataflash, Datenaustausch) und ein paralleler I/O Bus. " Wäre da nichtr ein Board per 'ATxmega128A1' und ggf. Verwendung einer Adapterplatine wie http://shop.embedded-projects.net/product_info.php... sinnvoller ? Der könnte per 512k SRAM und DMA locker auch eine 320*240 8 Bit Farbgrafik selbst generieren (wohl nicht VGA) und hat schon 4* I2C onboard ?! Auch sind die 32 MHz für obige Grafikfeatures natürlich auch sinnvoll.
Datum:
... sinnvoller .... Sinnvoll ist z. B. ein AT91SAM7S64 oder ein anderer Controller aus der ARM7-Serie bzw. deren Nachfolgern.
Datum:
Der 'AT91SAM7S64' ist nicht für externes RAM konzipiert. Und wie Beitrag "ARM7 uC mit external RAM/ROM als Forenprojekt?" zeigt wird bei ARM7 doch schon in ganz anderer Größenordnung gedacht.
Datum:
den ATXMEGA hatte ich eigentlich eine Zeit lang als Nachfolger im Visier, das Ganze ist aber wieder vom Tisch und auch mein Demoboard habe ich wieder verkauft. ARM lässt sich meiner Meinung nach nicht besonders schön in ASM programmieren (hatte mal mit nem Cortex M3 angefangen) und sind deswegen auch keine Alternative. Gut, man könnte auch in C programmieren, aber das sollen dann die Leute machen, die Lust dazu haben. Beim HCS12 ist halt leider die allgemeine Verfügbarkeit für "Privatmenschen" sehr eingeschränkt und nicht jeder hat ein passendes BDM-Interface zuhause rumliegen. Also ist es für mich momentan das sinnvollste, das Projekt weiterzuentwickeln und ich denke, dass da noch viel mehr Potenzial drin steckt. Natürlich hat es irgendwo seine Grenzen, aber die gilt es erstmal herauszufinden... Jörg
Datum:
Joerg Wolfram schrieb: > den ATXMEGA hatte ich eigentlich eine Zeit lang als Nachfolger im > Visier, das Ganze ist aber wieder vom Tisch und auch mein Demoboard habe > ich wieder verkauft. warum eigentlich ?
Datum:
Hauptgrund war das geänderte Programmierinterface. Davon abgesehen, dass man den XMEGA auf dem XPLAIN Board nicht über den darauf befindlichen USB-Anschluß programmieren kann, braucht man in den meisten Fällen einen neuen Programmer und die Clone-Funktion lässt sich auch nicht mehr so einfach realisieren. Alles in Allem ist es (für mich) den Aufwand nicht wert, da das Projekt OpenSource ist, kann sich ja jeder selbst mit einer Portierung versuchen. Jörg
Datum:
Hallo Jörg, ich bin grad am überlegen, ob ich meinem Sohn einen Experimentier- computer mit Deinem Basic zu Weihnachten bauen soll, und bin beim Suchen über das gestolpert: http://home.arcor.de/wehrsdorf/Oled-Display-Recycling.html Ich hab mir so ein Teil besorgt. Meinst Du, dass man Dein Basic einfach an diese Platine anpassen könnte? Der Mega 168 ist zwar etwas knapp, aber den könnte man ja gegen einen 328 austauschen. Ein mobiler Basic Computer mit Grafik Display wäre schon nett. Evtl. könnte man auch eine Tastatur über die Infrarot Schnittstelle anschliessen. Gruß Karl
Datum:
möglich wäre es schon, z.B. die Mega32 Version an einen Mega328 anzupassen. Notwendig wäre hauptsächlich ein neuer Videotreiber, der z.B. die Umgebung des Cursors auf dem OLED darstellt. Ich hatte mal etwas ähnliches konzipiert (AVR-Handheld), die Entwicklung aber wieder eingestellt, da es mir zuviel Aufwand war, die abgespeckte BASIC-Runtime mit der des ChipBasic2 zu synchronisieren. Deshalb kann die nächste Version vom ChipBasic2 auch alternative Treiber laden, die z.B. LCDs über den Parallelport ansteuern. Im Moment habe ich aber nur den originalen "Vektortreiber" und einen TILE/SPRITE Treiber mit "Finescrolling" realisiert. Außerdem wird es endlich Unterstützung für den zweiten USART des Mega644P geben, wobei die Transfer-Operationen weiter über den Software-System-UART laufen werden. Allerdings wird sich die Doku noch etwas hinziehen, bei Bedarf kann ich aber wieder Hexfiles hier reinstellen. Jörg
Datum:
Hallo Jörg Ich habe den AVR Basiccomputer nachgebaut. Er funktionierte fast auf Anhieb.Jetzt meine Frage, könnte man auch ein Farbdisplay(SHARP LQ 9D01L) mit 640x 480 Pixel anschließen? Das lag bei mir so in der Bastelkiste rum!Meine zweite Frage ist, ich möchte statt des Flashs eine Speicherkarte anschließen. Das müßte doch ohne größeren Aufwand möglich sein, den in den Speicherkarten stecken doch sicher auch nur Flashbausteine. Rudolf
Datum:
Hallo Rudolf, 1. Das von Dir genannte Display ist nicht anschließbar, da es einen ganz anderen Grafikcontroller braucht. 2. Theoretisch ist es machbar, allerdings ist das Dateisystem speziell auf die Dataflash-Bausteine zugeschnitten. Man könnte das fast 1:1 auf eine SD-Karte übertragen, indem man dort nur 264 Bytes je Sektor nutzt. So ließen sich 256 Dateien mit jeweils maximal 32K unterbringen, was einem Speicherbedarf von effektiv 16MiBytes auf der Karte entspricht. Die Nutzung irgendwelcher PC-Dateisysteme wird allerdings wohl am fehlenden Programmspeicherplatz im Mikrocontroller scheitern. Und, auch wenn etwas schwerer beschaffbar sind die Dataflash-Bausteine günstiger als neue SD-Karten. Jörg
Datum:
Hallo Jörg Das das LCD so nicht gehen wird das konnte ich mir auch denken. Meine Frage war falsch formuliert. Deshalb noch einmal neu: Könnte man den Atmel dazu bringen das LCD anzusteuern.Ich könnte mir vorstellen, das es zu zeitkritisch wird und wohl deshalb nichts daraus wird. Möglicherweise könnte man die Signalaubereitung Pixcelclock, hsync, vsync extern aufbereiten und dann mit der Datenausgabe verbinden. Ich hatte da irgendwo gelesen das es einen IC von Maxim, denk ich,gibt, der das kann. Das mit den SD Karten kann ich nicht nachvollziehen. Die Karten werden einem schon fast hinterhergeschmissen.Die Fassungen dafür gibts im Elektronikversand auch für wenig Geld. Selbst wenn viel Speicherplatz auf der Karte verschenkt wird,was vielleicht sogar ganz gut ist, den dann werden die Speicherzellen nicht so oft beschrieben und halten länger. Würde es Dir viel Arbeit machen das Teil in den Basiccomputer mit zu integrieren? Das wäre echt Spitze. Ansonsten ist Dein Projekt echt gut, wenn man bedenkt was alles in den einen Chip passt, und was an Gehirnschmalz darin steckt! Ach so noch eins. Der Comp reagiert sehr unwillig auf das Niederdrücken der Tasten auf der Tastatur. Die Pfeiletasten werden sofort erkannt und man kann damit im Menüe hin und her fahren. Auf die ESC Taste und die vier Funktionstasten reagiert der Computer nur sehr unwillig wenn überhaubt.Ich habe schon mehrere Tastaturen ausprobiert, manche gehen gar nicht, wie Du das schon vorausgesagt hast, und die ps2 Tastatur funzt gleich nicht, da bricht der ganze comp zusammen. Rudolf
Datum:
Ach so was ich noch vergessen habe. MEINE Tastatur ist eine AT. Angeschlossen wird sie über einen industrieellen Adapter an den ps2 Eingang des Computers. Nur damit gehts! Rudolf
Datum:
>Und, auch wenn etwas schwerer beschaffbar sind die Dataflash-Bausteine >günstiger
als neue SD-Karten.
TME.eu hat massenweise und verschiedene Bauformen und Speichergößen der
DataFlashs.
CSD-electronics hat auch die wichtigsten und liefert an privat.
Datum:
Hallo Jörg, kannst Du das mit den ladbaren Displaytreibern etwas näher erklären? Wie wird das praktisch aussehen? Vielleicht kann ich mit dem Treiber für das Oled zur Hand gehen. Dieses spezielle Display hat den Vorteil, dass das komplette Gerät (inclusive Spannungswandler und ATMega16) für 5-6 Euro zu haben ist, was ein ziemlich unschlagbarer Preis ist. Da überlegt man isch schon, was man mit dem Ding alles anfangen könnte. --Karl
Datum:
@Rudolf Ich denke, um ein solches Display vernünftig anzusteuern braucht man schon einen Displaycontroller oder etwas vergleichbares. So, wie Du das mit den Tastaturen beschreibst, würde ich eher auf ein elektrisches Problem schließen. Eventuell mal 3K3 Pullups an die Daten- und Taktleitung hängen. Während des Startbildschirmes kann man übrigens auch mit der rechten Shift-Taste in den "Keyboard-Debug-Modus" wechseln, in dem die von der Tastatur gelieferten Scancodes angezeigt werden. Ich selbst sehe in SD-Karten anstelle von Dataflash-Bausteinen keinerlei Vorteil, außer dass man sie halt an jeder Ecke zu kaufen bekommt. Wobei das langsam aber auch nicht mehr stimmt, denn meistens sind das ja neuerdings SDHC-Karten, die dann von der Ansteuerung her wieder nicht mehr kompatibel sind. Den Aufwand würde ich nicht allzu hoch schätzen, solange die Dateisystemstruktur beibehalten wird und jemand schon genügend Erfahrung damit hat. Dann könnte man einfach die Libdfl ersetzen, wobei dann allerdings die Möglichkeit, Dataflash Bausteine anzusteuern verlorenginge. Alternativ könnte man "Programm von SD laden" und "Programm auf SD speichern" in ein ladbares Binärprogramm packen und darüber ausführen. Dieser Weg steht auf jeden Fall offen, die Frage ist nur, ob sich jemand der Scahe annimmt... Jörg
Datum:
der Sache annimmt... Jörg
Datum:
@Karl Das geht aber nur beim ChipBasic2, bei der Mega32-Version wäre es theoretisch auch mögich allerdings sind die beiden Systeme nicht zueinander kompatibel. Aussehen wird es so, dass man den Treiber einfach auf Programmplatz 8 lädt und über VMODE 7 aktivieren kann. Nach dem Aufruf der Initialisierungsroutine im Treiber werden sowohl die Bildausgaberoutine als auch die Ausgabefunktionen (PRINT, PLOT...) auf diesen Treiber umgeleitet. Wird wieder zu einem anderen Video-Modus zurückgewechselt, wird eine Shutdown-Routine im Treiber aufgerufen und danach alle Ausgaben wieder auf die internen Treiber umgestellt. Mit 2 Konfigurationsbits im Treiber kann man die Ausgaben zum Parallelport unterbinden und externe I/O (z.B. über I2C) ab Adresse 0x500 aktivieren. Dazu wird es wahrscheinlich später einen Mega 16/32 als IO-Erweiterung geben. Jörg
Datum:
@Jörg
Hast du dir für ein Nachfolgeprojekt eigentlich auch mal den Parallax
Propeller Chip angeschaut? Das ist der ideale Chip für ein solches
Projekt.
- mehrere parallele Prozessoren
- Video Generator mit Farbe möglich (Hardware 3 Widerstände)
- VGA und controllerlose LCDs ansteuerbar
- SD Treiber (auch SDHC mit FAT32), PS/2 und so weiter schon als
einbindbare Objekte verfügbar.
- Im DIP40 erhältlich, per serielle Schnittstelle programmierbar
>> Ich selbst sehe in SD-Karten anstelle von Dataflash-Bausteinen keinerlei
Vorteil, außer dass man sie halt an jeder Ecke zu kaufen bekommt
Das liegt dann wohl daran dass du den ~ 1000 mal grösseren Speicher
nicht nutzen kannst. Mit dem Propeller kann man z.B WAV-Dateien spielen,
was sehr schnell nach etwas mehr Speicher verlangt...
Andi
Datum:
@ Andi > Das liegt dann wohl daran dass du den ~ 1000 mal grösseren Speicher > nicht nutzen kannst. Mit dem Propeller kann man z.B WAV-Dateien spielen, > was sehr schnell nach etwas mehr Speicher verlangt... > Nein, ich WILL den größeren Speicher nicht nutzen. Denn dann wird das Ganze irgendwann derart aufgeblasen, dass man sich auch gleich ein kleines ITX Board kaufen kann... Für den Propeller gibt es ja bereits HYDRA als Spielkonsole und den HIVE. Dem muß man meiner Meinung nach nicht unbedingt noch ein drittes ähnlich gelagertes Projekt hinzufügen. Da ist dann ein S12 oder S12X (für mich) schon eine interessantere Herausforderung, abgesehen davon dass ich zum Programmieren des Propellers Dinge benutzen müsste, die ich ganz einfach nicht benutzen möchte. Jörg
Datum:
OK, wenn du natürlich nicht nach einer einfachen, leistungsfähigeren Lösung suchst, sondern nach einer Herausforderung, dann ist jeder Tipp überflüssig. Denn nur du kannst wissen, was dich herausfordert. > Für den Propeller gibt es ja bereits HYDRA als Spielkonsole und den > HIVE. Hydra ist zu teuer und nicht offen, Hive ist zu kompliziert und niemand programmiert was dafür. Aber da gibt es noch viel mehr Hardwareplattformen mit dem Propeller. Die Herausforderung wäre halt die Software. > ... zum Programmieren des Propellers Dinge benutzen müsste, die ich > ganz einfach nicht benutzen möchte. Wenn du damit Windows meinst - es gibt alternative IDEs für Linux und MacOS. Wenn du Spin meinst - Es gibt auch C, und Assembler geht immer. Andere Hindernisse fallen mir gerade nicht ein. Andi
Datum:
Andi, kannst du bitte einen Link mit C-Compiler und/oder IDE für den Propeller posten? Ich kenne nur das da http://propeller.wikispaces.com/Linux+Development und das ist nicht grad' was ich mir vorstelle.
Datum:
> Hydra ist zu teuer und nicht offen, Für die interissiere ich mich auch, aber ca. 250€ für ein paar elektronische Bauteile...? Nein danke. Da nehm ich lieber dieses Ding hier: http://www.microcontroller-starterkits.de/propeller.html > Hive ist zu kompliziert und niemand > programmiert was dafür. Aber da gibt es noch viel mehr > Hardwareplattformen mit dem Propeller. Die Herausforderung wäre halt die > Software. Für den Hive wird Programmiert. Die meisten Projektbeteiligten, dazu gehöre auch ich, sind aber eher die Bastler... Auf der Projekt Homepage wird das HiveOS vorgestellt. Einige haben sich das IOS näher angesehen und dieses etwas angepasst. Es gibt Hacks für den Grafiktreiber. Dann gibt es ein Hack/ Workaround für die Signalstörung zum TDA7050 Verstärker-IC und, es gibt bereits einen - noch in der Entwicklung befindlichen - Rom- Switcher. Programmiert wird für den Hive natürlich auch. Meistens sind es aber nur Kleinigkeiten. Es gibt schnelle Ports einiger Spiele, die auf dem Propeller MCU portiert worden waren. Ausserdem hatte ich begonnen, ein E-Mag für den Hive zu schreiben. Entsprechendes kann man im Forum lesen... Einige Links: Projekt Homepage -> http://hive-project.de/ Forum -> http://hive-project.de/board/ Wiki -> http://hive-project.de/wiki/ So, nun aber wieder BTT :)
Datum:
Oje, ich wollte hier keine Propeller Diskussion auslösen. Darum antworte ich auch nicht detailliert auf die letzen Beiträge. Aber Links sollten eigentlich schon sein, wenn man was behauptet, darum liefere ich die noch nach: IDE: http://forums.parallax.com/forums/default.aspx?f=2... http://propeller.wikispaces.com/Mac+and+Linux+nati... C Compiler: http://forums.parallax.com/forums/default.aspx?f=2... es gibt auch noch einen kommerziellen im Parallax Store. >So, nun aber wieder BTT :) genau
Datum:
Ich muss Jörg recht geben. Ich weiß nicht recht, wofür der Propeller Chip gut sein soll. Das ist ein typisches Nerd Produkt. Er hat zwar einen interessanten Videogenerator, aber viel zu wenig RAM, um ihn sinnvoll zu nutzen. Die aktuellen Projekte benutzen umständliche Tricks, die nie so vorgesehen waren, um Code nachzuladen und externen Speicher zu benutzen, was aber die Ausführung so langsam macht, dass der Propeller seine Vorteile nicht mehr ausspielen kann. Wenn man viel Zeit hat, kann man mit dem Propeller Sachen machen, die andere Controller von Hause aus können (meistens besser und billiger), und sich Tools selbst schreiben, die es anderswo kostenlos dazu gibt (z.B. C-Compiler, Debugger). Man kann's aber auch bleiben lassen. Da kauf ich mir lieber für das selbe Geld ein ARM oder Mips Board. Schaut euch mal an, was man für 50 Euro schon alles bekommt: Ein ARM Board mit 16MB RAM, 4MB Flash, WLAN, Ethernet, USB Host, RS232, JTAG, mit Ethernet Bootloader und kompletter Linux Distribution. Auch Router genannt. Das Chipbasic ist deshalb cool, weil es auf einem einzelnen AVR ohne viel drumherum läuft, und weil die Entwicklung auf dem Gerät selbst läuft, ohne PC mit Toolchain.
Datum:
ja, wie früher am VC-20 :-)
Datum:
Hallo Jörg! Ich habe die zwei Pullupps an die beiden Leitungen gehangen. Funzt einwandfrei.Die beiden Widerstände solltest du gleich mit auf der platine integrieren. Ich habe auch zusätzlich noch einen kleinen Resettaster auf die Platine gesetzt, um nicht immer das Steckernetzteil ziehen zu müssen, wenn ein Neustart sein muß. Jetzt noch eine Frage zum Übertragen von Dateien vom PC zum AVR. Bis jetzt kommt immer nur Schrott oder nichts auf dem AVR an. Ich kann machen was ich will alle Einstellungen die möglich sind, habe ich ausprobiert. Gibts noch etwas was ich nicht beachtet haben könnte? Manchmal bricht auch der AVR völlig zusammen, das Bild ist weg und es geht garnichts mehr, auch kein Reset. Dagegen hilft nur den seriellen SUB rauszuziehen, dann startet der AVR wieder allein. Rudolf
Datum:
Hallo! Das bin ich noch ein Mal! Ist die Englishe Dokumentation schon verfügbar? Ich kann die nicht finden.
Datum:
Hallo Jörg! Hat sich erledigt. Habs auf die Reihe bekommen.Programme lassen sich laden und starten.Die Einstellung ist `simple` in AVR Config,2400 Baud,2 Stopbits ,Parität keine.Eins ist aber immernoch:wenn ich einen Kaltstart mache mit meinem Resetknopf, stürtzt der AVR ab. Erst das Abziehen des Steckers von der Seriellen Schnitstelle bringt wieder Leben in das Teil. Rudolf
Datum:
@Rudolf Welche Version benutzt Du, wie sind die Fuses gesetzt? Mit den Fusebytes LOW 0xe6 HIGH 0xd1 EXT 0xfc wird der Bootloader abgeschaltet, mit LOW 0xe6 HIGH 0xd2 EXT 0xfc ist er aktiv und sollte auch beim Kalt-Start (serielles Kabel angesteckt) der Bootloader (oben eine grüne Textzeile) kurz zu sehen sein. Anstelle von RESET sollte CTRL+ALT+DELETE für einen Warmstart eigentlich immer gehen. @Klima Im Moment ist nicht mal die deutsche Doku vollständig, ob es jemals eine englische von mir geben wird, ist bei meinem derzeitigen Zeitbudget eher fraglich. Und weil ich gerade dabei bin, die nächste Version wird es wohl erst im neuen Jahr geben. Hauptgrund ist ein erweitertes Treiberkonzept mit definierten Schnittstellen. Jörg
Datum:
Hallo Jörg! Ich benutze die Version 1.20 .Warum der AVR abstürtzt ist mir jetzt auch klar geworden. Die grüne Zeile nach dem Einschalten ist nicht zu sehen. Der AVR springt sofort auf den blauen Bildschirm mit dem symbolischen Chip drauf.Ich denke die Grüne Zeile müßte eigendlich zu sehen sein, selbst wenn die fusebits verkehrt sind, da diese ja nur den Speicherbereich gegen überschreiben schützen und der Bootlader als Programm ja vorhanden ist,oder liege ich da verkehrt?. Rudolf
Datum:
Hallo Jörg! Alles klar habs auf die Reihe bekommen. Alles funzt wie es sein soll. Die Erweiterung bau ich demnächst auf, sobald der IC eingetroffen ist. Frohe Weihnacht und einen guten Rutsch ins neue Jahr wünscht Rudolf
Datum:
Hallo Jörg! Erstmal beste Neujahrswünsche an alle.Ich habe schon wieder ein Problem. Nachdem der AT Flash bei mir eingetroffen war hab ich das Modul zusammengebaut. Es ist aber kein AT45DB08 an Bord sondern ein AT45DB161.Der Baustein wird aber vom AVR nicht erkannt wie es aussieht. Weil ich dachte, ich hätte mich bei der Bestellung geirrt ließ ich nochmal einen AT 45DB08 kommen. Wieder hat man den 161 ersatztweise reingepackt. Er unterscheidet sich nur in der Größe der Pageseiten nämlich mit 528 Bytes, statt beim 08 der nur 264 Bytes hat. Natürlich sind die S-Ram Data Buffers auch größer. Wie läuft eigendlich die Erkennung des Flashmodules? Welche Parameter werden abgefragt? Läßt sich der AVR nicht so umstellen, daß auch diese Flashbausteine erkannt werden? Rudolf
Datum:
Hallo, auch von mir Neujahrsgrüße an alle. Der Flash-Typ wird über die Device-ID bestimmt. Ich werde mal schauen ob man den Treiber an den 161 anpassen kann, allerdings wird er dann als 81-er behandelt. Ansonsten müsste man einen neuen Dateisystemtreiber schreiben. Wenn wir gerade bei den Treibern sind, die kommende Version wird da wesentlich flexibler sein. Z.B. 4- und 8-Kanal Soft PWM (ca. 60Hz) am Parallelport wobei nur noch die ersten 24 Zeichen je Zeile dargestellt werden habe ich bereits realisiert. Grafik- und Text LCD Treiber sind ebenso geplant wie LED Multiplex Treiber. Die Clone-Funktion habe ich wieder entfernt, dafür gibt es jetzt ein ladbares Programm, mit dem man auch die Konfiguration des zu clonenden Controllers einstellen kann. Ebenso wird es nur noch eine Tastaturtabelle geben, die aber via Binärprogramm änderbar ist. Jörg
Datum:
Hallo, erstmal Glückwunsch zu diesem ebenso simplen wie tollen Projekt! Ich habe über die Feiertage auch endlich meine Platine zusammengelötet und werde damit meine ersten Spielereien machen. Damit rutscht man ja fast wieder in die Zeit der alten Heimcomputer - nur mit mehr Rechenpower. Womit wir beim Thema sind: Die Beispielcodes sind zum ersten Testen ja sehr schön, aber hat von Euch vielleicht jemand auch noch eigene Tools, Spiele, Demos geschrieben und im Internet zur Verfügung gestellt? Ich selbst habe z.B. noch viele alte "Happy Computer" usw. mit vielen kleinen Listings für diverse Heimcomputer. Damals habe ich die schon z.B. von ZX Spectrum auf ATARI XL portiert. Das könnte man teilweise auch mal für das Board ausprobieren. Ein digitaler Joystick sollte sich ja an den Parallelport anschließen lassen (kann man den per Basic einlesen?). Wenn das funktioniert, würde ich die Sourcen auch irgendwo ablegen. Gruß, Rene
Datum:
@Rudolf Support für den 45DB161 und den 45DB321 sollte in der nächsten Version mit drin sein, allerdings muss ich noch testen, ob das auch so funktioniert. Wichtig ist aber auch, dass diese (zumindest laut meinem Datenblatt keine 5V an den Eingängen vertragen wie der 45DB081. Hier ist also auf jeden Fall eine Pegelanpassung notwendig. @Rene Digitaler Joystick sollte kein Problem sein, einfach die Schalter zwischen I/O und Masse. Gelesen wird dann mittels IN(n). An Pin16 (/INIT) der paralellen Schnittstelle kann man getrost auch +5V nach aussen führen, ohne dass ein angeschlossener Drucker Probleme macht. Das wird auch in der nächsten Doku mit drin sein. Und das mit der Programmsammlung wäre eine feine Sache, ich habe aber ehrlichgesagt momentan weder Zeit noch Lust, so etwas zu pflegen. Support für den Mega644P ist fast fertig, dazu kann der Input-Pin der seriellen System-Schnittstelle (also der immer vorhandenen) per Konfiguration zwischen PD1 und PD3 gewählt werden. Der Controllertyp wird automatisch beim Systemstart erkannt und auch angezeigt. Beim Editor gibt es ein paar kleine Änderungen, insbesondere werden die Cursorpositionen beim Verlassen des Editors im EEPROM gespeichert. LCD- bzw. DUAL-Treiber (die Anzeige ist parallel auch über den TV-Ausgang verfügbar) habe ich für 1x16 und 2x20 Zeichen Displays fertig, andere habe ich z.Zt. nicht rumliegen. Allerdings fehlt hier noch die Doku komplett. Release-Zeitpunkt wird wohl am WE sein, wahrscheinlich aber nur für das "Hauptpaket". Jörg
Datum:
Angehängte Dateien:Mit einem AT45DB321 habe ich es gestern getestet und es funktioniert. Der AT45DB161 müsste eigentlich auch gehen. Wichtig ist, zuallererst in die Config-Seite zu gehen, und den Input-Pin für die serielle Schnittstelle auf "PD3" zu stellen da er bei der bisherigen Schaltung dort liegt. Jörg
Datum:
Hallo Jörg! Mit der neuen Software hat der AVR das Flashmodul sofort erkannt. Das Abspeichern der Programme scheint auch zu funzen. Ein Problem scheint es beim Lesen zu geben, denn es werden nur Fragmente der Dateien ausgelesen. Könnte das möglicherweise eine Signalpegelunterschied der Leseleitung zwischen dem AVR und dem AT 45DB161 sein, oder habe ich den Flash schon geschrottet?. Im Moment habe ich keine Zeit weiter nach Ursachen zu forschen. Bis auf weiteres. Rudolf
Datum:
Hallo Rudolf, bei mir hatte es eigentlich funktioniert. 3 Dinge fallen mir dazu ein: 1. Wie erzeugst Du die 3,3V? Nachgemessen? 2. Bei der Schaltung mit LED eventuell den Abblockkondensator vergrößern 3. SPI-Takt probeweise auf 156 KHz stellen Bis zum nächsten Release wird es noch ein klein bisschen dauern, da ein paar generelle Dinge zu Binärprogrammen noch konkret definiert werden müssen. Jörg
Datum:
Angehängte Dateien:Ich habe gestern festgestellt, dass durch die Änderung im DataFlash-Treiber Dateien tatsächlich nicht richtig geschrieben werden. Das Problem lässt sich allerdings nicht so einfach lösen und deswegen habe ich die Unterstützung für den AT45DB161 und den AT45DB321 erstmal wieder entfernt. Jörg
Datum:
Angehängte Dateien:So, endlich geschafft! Die aktuelle Version hat mittlerweile die Nummer 1.27 und jede Menge Neues zu bieten. Neben Bugfixes und Erweiterungen im BASIC habe ich vor allen Dingen das Bibliotheks- und Treiberkonzept stark überarbeitet. So lassen sich jetzt verschiedene Text und Grafik LCDs an den Parallelport anschließen oder der Parallelport als 4 oder 8 Kanal PWM nutzen. Zur Spieleprogrammierung gibt es einen Tile/Sprite Treiber mit horizontalem und vertikalem Fine-Scrolling und den ehemaligen Videomode7-Treiber. Über einen seriellen Lader kann das Ganze auch ferngesteuert mit neuen Programmen versehen werden, ein passendes Terminalprogramm ist auch dabei. Da die Datenmenge wieder etwas angewachsen ist und nicht jeder alles benötigt, habe ich das Ganze auf 3 Pakete verteilt. Viel Spaß damit, Jörg Was ich übrigens sehr interessant fand, dass es auf meine vagen Projektankündigungen recht viele Beiträge gab, zum eigentlichen Projekt eher weniger...
Datum:
Sehr schöne Arbeit :) Endlich wieder was zum testen und spielen ;) Danke dir.
Datum:
In der Doku sind leider ein paar Bilder verkehrt, da muss ich mir zum WE das Build-Script nochmal ansehen. Dann wird auch die Homepage wieder aktualisiert. Jörg
Datum:
Homepage ist jetzt aktualisiert, es hat sich leider auch noch ein Fehler ins Programm eingeschlichen. Durch die Umstellung auf das Mega644p Includefile hatte der Wert von SPDR0 plötzlich den Wert Null, ohne dass der Assembler etwas anmeckern konnte. Die SPI() Funktion hing sich deswegen auf und auch im Clone-Programm bestand das Problem. Da ich bis vor kurzem mit einer modifizierten Include-Datei gearbeitet hatte, ist mir das beim testen gar nicht aufgefallen... Mit der aktuellen Version 1.28 sollte das Problem behoben sein. Um den Server hier nicht allzusehr zu strapazieren, verweise ich auf meine Webseite bzw. die BERLIOS Downloadseite: http://developer.berlios.de/projects/avr-chipbasic Der treiber für 128x64 GLCD ist leider noch nicht fertig, wird aber als nächstes in Angriff genommen. Jörg
Datum:
Hallo Jörg, da ich in der Röhrenzeit meine ersten Elektronikerfahrungen gemacht habe, und Basic der Einstieg in die Computerei war, bin ich begeistert, was ein Chip alles kann. Großes Lob für das fundierte Projekt. Mit dem angegebenen Universal-Layout und der V.1.26 habe ich den Basic-Computer in Betrieb genommen. Display ein LC-TFT Monitor TM-70003A mit Video-Eingang. SW-Bild mit BAS-Signal ist ok, aber das Bild rollt langsam über den Bildschirm. Messung der Bildfrequenz ergab 15735,9 Hz (63,55us) statt 15625 Hz. Die Quarzfrequenz liegt bei direkter Messung mit einem Tastkopf einige 100 Hz tiefer. Gibt es eine Möglichkeit die geteilte Frequenz am Prozessor zu messen? Hat jemand zu meinem Problem einen Tipp? Karl-Anton
Datum:
Hallo Karl-Anton, die 15735,9 Hz sehen mir sehr nach NTSC aus. Und wenn das Bild langsam durchläuft, könnte das an HSYNC statt CSYNC liegen. Kontrolliere deshalb bitte, dass keiner der beiden Jumper J2/J3 geschlossen ist und die beiden Pull-Ups an PC2 und PC3 dran sind. Jörg
Datum:
Hallo Jörg, oh








