Datum: 15.05.2008 11:03
Nachdem das Ganze jetzt schon recht weit gediehen ist, hier schon mal ein Preview auf die Mega8/Mega88 Version. Es funktioniert auch mit einem Mega16 auf dem "normalen" ChipBasic Board. Was ging, habe ich mit reingepackt und das ist eine ganze Menge geworden. Auch wenn der Quellcode teilweise recht unübersichtlich geworden ist, wird das Ganze doch OpenSource bleiben. Allerdings werde ich nicht mehr an der Kompatibilität zum AVR-Studio arbeiten, da das mit der extensiven Nutzung der AVRA-Makromöglichkeiten und meinem Bibliothekskonzept wohl nur schlecht vereinbar ist. Hier schon mal ein paar Features: - Läuft auf Mega8, Mega88 und Mega16 auf dem ChipBasic-Bord (16MHz) - 20 Programmzeilen mit maximal 25 nutzbaren Zeichen, Fullscreen-Editor - 1 Programm im internen Flash - Tiny-Basic ähnliche Programmiersprache mit Erweiterungen - Variablen und Arithmetik mit 8 Bit - 30x23 Zeichen normal und invers, Pseudografik - Punkte, Linien, Rechtecke un gefüllte Rechtecke - Autorun-Modus über Jumper einstellbar - PS2-Tastatur zur Eingabe (Klammeraffe ist auf Shift+3) - 1-Kanalige Audioausgabe (Noten, Rauschen) mit Hüllkurve - serielle RS232-Schnittstelle mit 1200 Baud und Ladungspumpe - 4 Pins als I/O und Analogeingänge - optionales Disk-EEPROM (24C16) speichert 4 Programme - Up/Download von Programmen über die serielle Schnittstelle - Tastenkombinationen für Abbruch, Neustart, Screenshot Das Hexfile für den Mega16 folgt im nächsten Post, alle anderen müssen noch ein paar Tage warten, da ich den Mega8 zumindest in den Grundfunktionen noch testen muß und auch die Doku noch nicht vollständig ist. Gruß Jörg
Datum: 15.05.2008 11:06
Dazu noch schnell die verwendbaren Keywords:
? Bildschirmausgabe @Y,X %ascii CLS löscht den Bildschirm GO n bei n>20 Programmende SUB n entspricht GOSUB RET RETURN FOR TO NXT NEXT CO Color 0/1, bei +8 wird auf Großschrift umgeschaltet PL y,x PLOT DR Y1,X1,Y2,X2 DRAW BX Y1,X1,Y2,X2 BOX FBX Y1,X1,Y2,X2 Filled BOX SCR n Scroll in Richtung 0(nach oben)..3(nach links) SY n Sync auf TV vertikal INP V Input variable VID Videoausgabe aus(0)/ein(1) OUT n Ausgabe auf freie IO (Bit 0..3) DIR n Richtungsfestlegung IO (Bit 0..3, 0=in 1=out) IF cond wenn cond=false wird zur nächsten Zeile gesprungen LIM V min max begrenzt die Variable V auf den Bereich min..max PUT n gibt Zeichen auf serielle Schnittstelle aus GET V liest Zeichen von seriell in Variable V ein NO n gibt Note (n=0..63) oder Rauschen (n=255) aus POK a,d schreibt in das interne EEPROM INV V V wird in Zweierkomplement (-V) umgewandelt |
und die Funktionen:
CF(n) "Kollisionsflag", n wird ignoriert (s.u.) RV(n) Zufallszahl zwischen 0 und n-1 AD(n) Analogwert von IO-Pin 0-3 IN(n) Digitalwert (0/1) von IO-Pin 0-3 NO(n) gibt das Einerkomplement (alles invertiert) zurück KY(n) Tastaturfunktionen (s.u.) |
Das Kollisionsflag wird bei jedem PRINT gesetzt, wenn ein Zeichen überschrieben wurde, desssen Zeichenwert nicht ohne Rest durch 16 teilbar ist. Der Rest des zuletzt überschriebenen Zeichens wird zurückgegeben.
KY(0) liefert den Keycode der aktuell gedrückten Taste (0 wenn keine) KY(1) wartet auf Tastendruck und liefert Keycode zurück KY(2) links SHIFT gibt 1, links CTRL gibt -1 (255) zurück, ansonsten 0 KY(3) rechts SHIFT gibt 1, rechts CTRL gibt -1 (255) zurück, ansonsten 0 KY(4) rechts CTRL gibt 1, links CTRL gibt -1 (255) zurück, ansonsten 0 KY(5) rechts Pfeil gibt 1, links Pfeil gibt -1 (255) zurück, ansonsten 0 KY(6..) wartet auf ENTER-Taste und liefert 0 zurück |
Gruß Jörg
Datum: 17.05.2008 23:06
So, das Paket ist geschnürt und auch die Homepage ist aktualisiert: http://www.jcwolfram.de/projekte/avr/chipbasic8/main.php Viel Spaß damit Jörg
Datum: 09.07.2008 13:22
Hallo Jörg, Danke,ich werde bestimmt viel Spaß mit dem kleinen Basic haben. Allerdings habe ich ein Problem damit: Ich habe die Datei mega8.hex in einen ATMega8 geladen, eine kleine Lochrasterplatine gelötet und das Basic gestartet. Alles funktioniert, außer der Addition; sobald der Interpreter auf ein Plus(+)zeichen trifft wird das Programm mit einem EXPR ERROR beendet. Kannst Du mir einen Tipp geben oder hat die Version 0.35 für den ATMega8 noch einen Fehler. Ich bin mir auch nicht sicher ob die Operation > bzw. < richtig funktioniert. Da es gestern Abend sehr spät geworden ist war ich zu müde um es noch zu testen. Danke für Deine Antwort. Viele Grüße Reiner
Datum: 09.07.2008 14:01
Hallo Reiner, hast Du mal die Beispiele probiert? Die enthalten Additionen sowie Vergleiche und haben eigentlich funktioniert. Mal sehen, ob ich heute oder morgen zum Nachschauen komme, aufgrund fehlendem Feedbacks habe ich das Projekt nicht weiterentwickelt, Version V0.35 ist immernoch aktuell. Gruß Jörg
Datum: 09.07.2008 15:38
Hallo Jörg, ja, die Beispiele "Autorennen" und die "Anzeige des kompletten Zeichensatzes" habe ich zuerst ausprobiert. Dabei ist es mir aufgefallen, dass es nicht funktioniert. Ich habe dann ein kleines Programm geschrieben das mir die Summe von zwei Zahlen ausgibt; funktionierte nicht. Wenn ich das + durch ein * ersetze dann wird das Produkt der zwei Zahlen korrekt angezeigt und es gibt keine Fehlermeldung mehr. Reiner
Datum: 09.07.2008 22:29
Hallo Reiner, Die Beispiele funktionieren bei mir, wenn ich sie vom EEPROM lade. Das mit dem EXPR Error habe ich auch teilweise nachvollziehen können. Probier bitte mal aus, vor Eingeben der Programme die Zeilen mit ALT+DEL zu löschen und dann mit F4 zu starten. Dann sollte "END in 21:1" angezeigt werden. Wenn man jetzt das Progtramm eingibt, sollte es gehen. Woran es nun genau liegt, muß ich nochmal nachsehen. Gruß Jörg
Datum: 09.07.2008 23:13
Hallo Jörg, erst einmal vielen Dank Für Deine Mühe. Ich bin sehr gespannt ob Dein Tipp funktionieren wird. Leider kann ich es erst morgen Abend ausprobieren. Also, bis dann Grüße Reiner
Datum: 11.07.2008 02:05
Hallo Jörg, juhu, es funktioniert. Aber erst nachdem ich zwei andere ATMega8 programmiert habe. Der erste hat das beschriebene Problem, der zweite startet mit nicht lesbaren Zeichenwirrwar auf dem Bildschirm und stürzt nach 3-4 Tastendrücken total ab. Der dritte ATMega8 hat dann funktioniert. Seltsamerweise ergibt ein Vergleich zwischen den drei Controllern, dass sowohl die Fuses als auch die geflashten Daten identisch sind. Ich muss jetzt zugeben dass ich die beiden 2k2 Pullups für die Tastatur weggelassen habe. Die Takt- und die Datenleitung sehen aber mit dem Oszilloskop so aus, dass es eigentlich keine Probleme geben dürfte. Auf jeden Fall, vielen Dank für Deine Hilfe, auch im Namen meines Sohnes, der morgen (bzw. heute) Autorennen spielen darf. Viele Grüße und mit Vorfreude auf Deine nächsten Projekte. Reiner
Antwort schreiben
Die Angabe einer Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
- Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
- Aussagekräftigen Betreff wählen
- Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
- Groß- und Kleinschreibung verwenden
- Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
- JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
- Schaltpläne, Screenshots usw. als PNG oder GIF anhängen
Formatierung (mehr Informationen...)
- [c]C-Code[/c]
- [avrasm]AVR-Assembler-Code[/avrasm]
- [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
- [math]Formel in LaTeX-Syntax[/math]
- [[Titel]] - Link zu Artikel
