Hallo zusammen, also, hab jetzt die 1.43 Version wieder drauf. Im Moment läuft alles stabil! Hoffe das bleibt auch so, ist echt ärgerlich wenn plötzlich alles weg ist! Naja Jörg, ist nicht schlimm! Kenne sowas noch aus alten C64 Zeiten... da haste grad 1000 Zeilen abgetippt und dann fällt der Strom aus! :))) Werde halt alles nochmal neu programmieren! Hab viele alte Retro Games portiert... naja... auf ein neues! PS: Danke nochmal Jörg das du weiter machst mit dem Projekt! Meine Jungs sind total begeistert was alles möglich ist! PPS: Ob du nochmal darüber nachdenken wirst Grafik und Sound auszulagern in einem 2. oder 3. MCU?
Wahrscheinlich hab ich schon den "Übeltäter" gefunden, beim Senden der SPI-Selektion wird "tempreg1" nicht gesichert. Aber das muss ich noch etwas ausgiebiger testen. Zum Auslagern gibt es zumindest für Grafik schon ein (noch unveröffentlichtes) Projekt. Mit einem Mega644(20MHz) + 128K SRAM + 74CHT374 + ein paar Widerständen geht 320x240 bei 256 Farben auf TV oder VGA. Auch ein Modus mit 160x120 und 4 Screens von denen man 2 als Z-Buffer nutzen kann ist schon integriert. Angesteuert wird seriell mit max. 250Kbit/s, jede Menge 2D und auch einige 3D-Funktionen sind schon integriert. Aber das ruht momentan... Jörg
ohhh Jörg, 2D, 3D, VGA, 256 farben.... das ist wie Honig in meinen Ohren :))) Wow, hoffentlich ruht es nicht sooo lange!! :)) Ähm, aber: Wenn ich den SRAM nutze, dann ist doch der Parallelport für andere Anwendungen nicht mehr nutzbar, richtig?? Das wäre doof, da ich an diesem port mein gamepad angeschlossen habe! :( Somit kann ich michnur entscheiden zwischen: Spiele mit Tastatur spielen oder mit gamepad aber dafür gibts kein SRAM und anscheinend auch nicht die Grafikauslagerungen welche noch ruht! ahhhh... teufelskreis!
Das hast Du jetzt nicht richtig verstanden. Die "Grafikkarte" ist ein standalone Projekt bei dem der AVR einzig und allein für die Grafik verantwortlich ist. Angeschlossen wird er an den UART des "Zentralprozessors". Das sollte mal ein modulares Nachfolgekonzept zum ChipBasic werden, mit getrennten Controllern für Grafik, Sound, Netzwerk und Massenspeicher. Zentralprozessor mit RAM hätte einen eigenen Steckplatz und wäre somit beliebig austauschbar. Letztendlich habe ich das Projekt aber aus verschiedenen Gründen (z.B. Zeit) wieder verworfen. Jörg
Ah ok! Jetzt hab ich es verstanden! Schade, ich glaube damit wäre nicht nur ich glücklich gewesen! :) Besteht die Möglichkeit mit einem am Parallelport angeschlossenem "Joystick" sich durch das menü zu klicken? Somit bräuchte man die Tastatur nur zum editieren von programmen! Das soll jetzt kein Aufruf werden eine Spielekonsole zu entwickeln...
So, anbei mal mein "Basic Computer / Spielekonsole"
Hi Jörg, wie sind im Assembler die Farben definiert? Warum hast du einmal 0x0c für Gelb auf Schwarz benutzt und danach kommt 0x60 für schwarz auf gelb? Schwarz ist die 0 aber warum ist gelb einmal c und einmal 6? Blicke da nicht ganz durch!
Hallo Kilo ,kannst du mal ein paar von deinen Listings deiner Retrogames posten? schon mal vielen Dank im Voraus mfg Patrick
Hi patrick, muss wie gesagt erstmal alles neu schreiben, ging ja alles verloren beim DFLASH Problem! Aber ich hatte: - PONG one (Einzelspieler Pong gegen den AVR mit Auswahl von 3 Schwierigkeitsstufen) - SPACE INVADERS - PACMAN (Jörgs Beispiel auf 2 Programme verteilt, mehr "Levels") - TENNIS - SQUASH - ASTEROIDS - SUBMARINE - SNAKE (Beispiel von Klaus, jedoch mehr levels) Alle Spiele waren mit Startbildschirm (Credits), Auswahloption für levels, Schwierigkeit, Player, spielbar mit umgebauten SNES Gamepad, etc. sowie der Highscore Speicherung im externen Eeprom Gruß Dominik
Hi Jörg, ONSYNC steht ja außerhalb einer Programmschleife, richtig? So... wenn ich jetzt mit ONSYNC 20,50 jede Sekunde die zeile 20 aufrufe, ich aber nach einiger zeit, zum Beispiel ab einer bestimmten Punktzahl, die Zeit ändern will, wie kann ich da wieder auf das ONSYNC zugreifen. ich will dem Intervall von ONSYNC eine variable zuweisen! Und erklär doch bitte mal kurz wie sich das mit Assembler und den farben (green on black, x0e, etc.) verhält! Gruß Dominik
Hi Jörg, und.. wie kann man den zeichensatz ändern? geht das so einfach? Ich würde gerne ein paar "Spiele" freundliche Zeichen dem Satz verpassen. :)
Hallo Dominik, 1. ONSYNC L,N kann auch Variablen verwenden, bei jedem Aufruf wird dann das Ganze neu gesetzt. Wenn L (die Zeilennnummer) 0 ist, wird der zyklische Aufruf abgeschaltet. Was nicht geht, ist nur die Variable zu ändern. 2. Im Bildspeicher liegen die Bits so: GRBIgrbi, beim Aufruf von Setcolor wird das entsprechend umgerechnet, da hier die Bits so liegen: IRGB. Durch die Umrechnung bleibt die Komatibilität von 8 und 16 Farben gewahrt. Teilweise habe ich, um Code zu sparen die Umrechnung umgangen und gleich die "Bildspeicherwerte" genommen statt vorher umzurechnen. 3. In den Videomodi 4 und 6 lassen sich eigene Zeichen definieren. Bei Mode 4 sind es 127 Zeichen Äquivalent zu Mode 0, bei Mode 6 gibt es 63 Zeichen, bei denen die Farbe jedes Punkes definiert werden kann. Zudem wäre auch der Tiles/Sprites Treiber eine weitere Möglichkeit. Jörg
Hallo Jörg, danke für die Antwort! zum Onsync: Muss ich mal probieren! Ein erneuter Aufruf! Ok, aber Onsync in eine Schleife setzen zum Beispiel geht nicht!? Zu den farben: Puh... Ich glaub das versteht nur der Entwickler :) Naja, ich kann es ja mal versuchen und mich drangeben! Zum Charset: Nunja, wie kriege ich denn den Tile Treiber geladen?? Ich such natürlich nach einer Lösung die wenig zeilen beansprucht. Wenn ich jetzt im Sourcecode den zeichensatz schon anpassen könnte, wäre das natürlich perfekt! Zum Beispiel das Smiley (%27).. kann man das im Zeichensatz, im Sourcecode ändern? Zum beispiel das es böse guckt? Ich meine Änderungen am zeichensatz die nicht zur Laufzeit des ganzesn Systems geschehen! Gruß Dominik
Hallo Dominik, zum Tiletreiber gibt es auch ein Beispiel, man muss ihn einfach nur via XMODEM auf einen beliebigen Programmplatz übertragen und mit VMODE 7 aktivieren. Den Onsync kann man aufrufen wenn man will, selbst in der aufgerufenen Subroutine. In einer Schleife sollte es natürlich auch gehen. Wenn man den System-Zeichensatz ändern will, muss man das im Sourcecode (libmio/generator) tun. Dazu kann man die ctab_f0.dat abändern und danach das Script generate_chartable.pl starten sowie das Projekt neu assemblieren. Ich habe eine neue V1.44 erstellt und im Download-Bereich ausgetauscht. Bei mir hat es mit dem Speichern geklappt aber trotzdem ist es ratsam vorher die Daten zu sichern da ich sicher nicht alle Konstellationen getestet habe. jörg
Ahaaaaaa, da versteckt sich der zeichensatz also :))) Danke Jörg!!! So, also mittlerweile habe ich zig Anwendungsbereich für den Mini Computer gefunden! Es ist sooo geil!!! Onsync funktioniert nicht so wie ich will.. komisch! Ich muss nochmal testen und bescheid geben! Ha! Hab jetzt die Tetris Musik emuliert! genial! leider leider ist es nicht so einfach unter eine melodie zum beispiel eine "Bass" oder "Drum"-Spur als einzelne Note zu legen, da der Sequencer wirklich seeehr mager ist! Jörg, ist iiiiirgendwas noch möglich was den Sound betrifft? ich bleibe erstmal bei der 1.43er bis ich alles an Software fertig habe! Gruß Dominik PS: Hab einen Super mario Klon so gut wie fertig! Wenn alles soweit fertig ist werde ich mal ein listing veröffentlichen! Hinzu kommen noch Textverarbeitungsprogramme sowie Steuerprogramme für SPS, etc
Argh, kriege mit avra.exe den code nicht kompiliert! Irgendwie macht die M644Pdef.inc probleme... es kommen fehlermeldung das #pragma ist unbekannt... etc. also die 32er version funktioniert einwandfrei... aber die 64er 1.43 bekomme ich nicht kompliliert, was kann das sein??
So... es lag an avra.exe mit avrasm2.exe gehts! Aber nun bekomme ich folgende fehlermeldungen: zig redefinitions fehler und: too deeply nested macro(16) waruuuuum??
Mit dem letzten AVRA (1.3.0) sollte es eigentlich gehen, zur Not kann man auch das def.inc kopieren und die mit # bginnenden Zeilen rauslöschen. Über Probleme mit dem avrasm.exe und Makros ist auch hier im Thread weiter oben zu lesen, das ist wohl eher ein aussichtsloses Unterfangen. Jörg
Hi Jörg, danke für die Antwort! Stimmt, habs oben schon gelesen! Aber eine Lösung wurde nicht gepostet, da Klaus es ja anscheinend hinbekommen hat! mist... irgendwie muss es doch gehen!! Jörg, kannst du das SOURCE Verzeichnis mal aktualisiern und alle Dateien reinschmeissne die man braucht? Libdef.asm fehlt zum beispiel!
geht alles nicht... weder AVRA, noch AVRASM2 noch AVRASM32... alle melden Worng Device M644Pdef.inc und danach kommen zig Fehlermeldungen... ahhhh ich verzweifel!
Hallo Dominik, ich hab mir mal die Quellen vom "aktuellen" AVRA angesehen, da fehlen u.a. der ATMega644, 644P und 1284P. Bis jetzt hat sich noch niemand in der Hinsicht gemeldet, so dass das nicht aufgefallen ist. Dass der AVRASM mit dem Makros nicht klarkommt "ist halt so", mehr als zur Kenntnis nehmen kann ich da auch nicht. Eine Möglichkeit wäre noch der avr-as (vom AVR-GCC) aber der kommt leider auch nicht mit dem Source klar. Ich hab mal ein erweitertes device.c File angehängt, wenn man den AVRA damit compiliert sollte es eigentlich gehen. Jörg
Hi Jörg, danke schön! Kann leider den Avra nicht kompilieren, bin auf eine .exe angewiesen :( Versuche jetzt noch den tavrasm .. hab gehört das der auch funktionieren soll.. mal schauen! Ansonsten: Kannst du vlt die Sourcen aktualisieren auf deiner Seite und vlt auch einen kompilierten Avra mit anbieten?
Ich werde eine neue Version bereitstellen, bei der dann hoffentlich alle Source-Dateien dabei sind. Die aus /usr/local/include/chipbasic2 fehlen ja leider in den aktuellen Archiven. Das AVRA-Binary (dazu müsste ich ja auch noch den Sourcecode mit anbieten) würde Dir aber auch nichts nutzen, da es lediglich unter Linux und vielleicht noch BSD lauffähig ist. Jörg
Hallo Jörg, sind wir eigentlich nur noch die Einzigen die hier schreiben? :-) Es war doch mal so viel los hier! Also mit dem kompilieren muss ich mir mal was einfallen lassen! Bis dahin fummel ich die ganze Zeit am 32er rum! Mh.. habe zum beispiel mal versucht im Menü anstelle des Pfeils, die Auswahl zu invertieren, genau wie beim 644er... Dachte eigentlich das geht ganz easy mit SWAP und der Farbe aber.... naja... Assembler ist immer noch nicht mein Freund :) Gruß Dominik
Hallo Dominik, wie hieß es so schön in einem Lied "Jedes Ding hat seine Halbwertszeit..."? ChipBasic2 ist immerhin schon fast 5 Jahre alt. Das mit dem selber compilieren ist z.B. ein Grund oder auch die recht hohe Komplexität der Programme. Und das es die Transferprogramme nicht als exe gibt. Da ich aber meine Projekte in erster Linie für mich selbst entwickle, sehe ich darin kein Problem wenn es fast niemenden interessiert (wie z.B. beim AX82). Und manchmal überlege ich, ob bei neuen Projekten ein Hinweis im Bereich "Mikrocontroller" nicht ausreicht. Für die Erstellung von Programen in Assembler gibt es ja die API-Funktionen, wobei die halt nicht alle in der Dokumentation stehen. Jörg
Hey Jörg, also ich, wir, er, Sie, Es kann ja froh sein das du das Ganze überhaupt veröffentlichst und auch noch unter GPL stellst.. von daher! Naja, ich bin jemand, ich muss wissen was ich da gebaut habe! Ich schaue mir den Source an und versuche ihn zu verstehen! ich lasse da auch nicht locker! :) Wie gesagt, den 32er Code kann ich kompilieren und da bastel ich gerade viel rum. Wenn ich zum beispiel die Zeilenanzahl von 51 auf 52 erhöhe stürzt der Editor ab... warum weiß ich nicht, aber das sind so sachen die ich eben rausfinden will! Gruß Dominik
Nein, es muss niemand froh darüber sein. Ich betreibe das als Hobby und aus Spaß und muss damit weder reich noch berühmt werden. Dass der AVRA seit längerem nicht mehr weiterentwickelt wird (der Feature-Request für den Mega644 ist schon seit über einem Jahr offen), dafür kann ich nichts. Dafür dass Quelldateien im Projekt fehlen, schon. Und das werde ich auch mit dem nächsten Update beheben. Wie ich gelesen habe, ist der TAVRASM seit 2004 nicht mehr weiterentwickelt worden und von daher wohl auch keine Alternative. Am einfachsten wäre es, wenn jemand den AVRA mit der geänderten Datei unter Windows übersetzen und dann den anderen das Binary zur Verfügung stellen könnte. Für Linux könnte ich das übernehmen. Wenn Du die Anzahl der Zeilen auf 52 erhöhst, kann es natürlich sein dass die 52.Zeile z.B. schon den Stack im RAM überschreibt. Da während des Editierens das gesamte Programm im RAM gehalten werden muss, ist die Anzahl der möglichen Zeilen durch den freien Speicher limitiert. Jörg
Hi Jörg, ahaaa.. ok! Weißt du, ich bin gelernter Scharfschütze, Panzerkommandant und Verwaltungsfachangestellter! Elektronik hab ich mir selber angeeignet und damit sogar einen Arbeitsplatz in einer Firma für Labortechnik bekommen! Also ich lerne!!! ;) Ok... ich werde mich mal schau machen ob das unter windows jemand kann! Dann dürfte der rest kein problem sein! Gruß Dominik
Auch wenn ich länger nix geschrieben habe,ich vervolge das Projekt und das Forum miit grossem inttesse! Wie gesagt echt super Projekt! Gruss Patrick
Ein bisschen länger hat es dann doch gedauert, da ich mir erst einmal einen originalen CB2 "zurückbauen" musste. Ich hoffe, jetzt sind alle Quelldateien mit dabei, ein bisschen habe ich auch den Verzeichnisbaum umgebaut. http://www.jcwolfram.de/downloads/main.php#chipbasic2 Jörg PS: Da sich beim AVRA scheinbar nichts mehr tut bin ich am Überlegen, meine gepatchte Version als Fork zu veröffentlichen.
Danke Jörg! Wollte dich mal fragen,ob ich demnächst Einen wikipediaartikel über dieses tolle Projekt Machen darf, unter der Kategorie 8bit Rechner Gruss Patrick
Hallo Patrick, kannst Du gerne machen, aber dafür halte ich das Wiki hier für geeigneter als die Wikipedia. Jörg
Hallo Jörg, wie Dir sch per Mail mitgeteilt, hab ich mal eine Schaltung getestet welche aus einem RGB H+V - Signal ein FBAS - Signal macht. Mit Erfolg. Diesen Erfolg will ich gern hier im Forum teilen. Ich habe die entsprechenden Dateien als *.GIF angehängt. Wer gern die Orignale Target.3001 Datei hätte, soll sich bei mir melden. Kernstück ist ein MC1377 von Motoro. Sind leicht zu bekommen. Habe mir gleich drei für 10Euro zu gelegt. Die 1nF Kondensatoren sind im Wert unbedingt einzu halten. Bei längeren Kabelverbindungen, ist es sinnvoll die 68Ohm Widerstände gegen 75Ohm zu tauschen. Wegen des Wellenwiderstandes von Videokabeln (75Ohm).
Ich war noch nicht zu Ende, wenn beim INP - Befehl zu viele Zeichen eingegeben werden, startet der Controller neu. Dieser Fehler wird nicht sinnvoll abgefangen. Ebenso wenn ausversehen die Pfeiltasten benutzt werden. Zu einer Deutschen Tastatur gehören auch die Umlaute und das ß. Gruß Ralf
Hallo Ralf,
Das mit den zuvielen Zeichen und den Pfeiltasten werde ich mir bei
Gelegenheit mal ansehen. Wenn noch ein bisschen Flash frei ist, könnte
man vllt. eine zusätzliche Abfrage einbauen.
>Zu einer Deutschen Tastatur gehören auch die Umlaute und das ß.
Das mag zwar sein, ist aber nicht vorgesehen und kann auch nicht
nachräglich ergänzt werden. Einfach deswegen, weil alle Bytes ausserhalb
des ASCII-Zeichensatzes als Token interpretiert werden. Im Zeichensatz
selbst sind sie vorhanden, allerdings höchstwahrscheinlich nicht
kompatibel zu irgendwelchen Windows-Codepages.
Jörg
Hallo Joerg Unglaublich, was Du da entwickelt hast. Und das mit einem Mega644. Sogar ein Moinitor kann man anschliessen!!! Den muss ich mir einfach nachbauen. Dieser Basic Computer schlägt selbst meinen C64 und den Amiga 500! Gruss Ferenc
Hm... meine Antwort wurde gar nicht angezeigt... also nochmal: Frohes Neues jahr Jörg :)) Den Atmega644 Source bekomme ich immer noch nicht compiliert! Aber egal.. Jörg, Hast du nochmal darüber nachgedacht video und sound in einerm 2. Atmega auszulagern? Ich bekomme es leider nicht hin alleine, mit dem Code... Aber das wäre endlich mal was geniales. Mehr Platz im Flash und mehr Möglichkeiten!!!! Gruß Dominik
Hallo Dominik, gesundes Neues Jahr wünsche ich ebenfalls. Mit dem AVRA sollte sich der Code aber übersetzen lassen. Mit einem anderen Assembler kann es durchaus schwierig werden, insbesondere mit dem avrasm. Da ich in letzter Zeit mehr mit anderen Controllern mache (Freescale, Renesas, MSP430) und dort durchgängig den ASL benutze habe ich schon versucht, einzelne AVR-Projekte dorthin zu portieren. Letztendlich war es aber einfacher, den AVRA weiter zu benutzen und für neue Controller einfach selbst zu patchen. Was die Modularisierung anbetrifft, genau das Gegenteil war das Ziel vom ChipBasic. Alles in einen Controller und minimale Hardware außenrum. Es gibt zwar einen Prototypen von einem Nachfolger, der eine CPU-Adapterplatine mit Mega1284P und CPLD auf dem original Board nutzt und auch VGA bei 320x240 kann, letztendlich wird aber die Zahl der Interessenten eher verschwindend klein sein. Natürlich reizt es mich, einen Computer zu bauen, den man auch für "ernsthafte Dinge" einsetzen kann. Aber dazu sind meiner Meinung nach noch einige "Zwischenschritte" notwendig. Vor allen Dingen muß man Applikationen in C schreiben können, die vom externen Datenträger in das RAM geladen und ausgeführt werden. Jörg
Hallo Jörg, Klar ist der Computer mit einem Chip einzigartig! In den 80ern wärst du wahrscheinlich Millionär damit geworden :) Mich stören halt nur etwas die 95 Zeilen die man zur Verfügung hat! Spiele und Programme können ja in den Dataflash abgelegt werden. Aber max. 256 Farben und ein guter Sound wäre schon was geniales!! Siehe Uzebox...
ich nochmal... Du hast mal geschrieben: Digitaler Joystick sollte kein Problem sein, einfach die Schalter zwischen I/O und Masse. Gelesen wird dann mittels IN(n). Muss dafür nicht der I/O Port auf High liegen? Denn wenn er LOW ist, dann muss ich die Schalter ja gegen 5 Volt ziehen! ich kann ja in Basic die Ausgänge High setzen, aber dann doch nicht mehr per In lesen oder?
So, ich hab dann auch mal ein layout erstellt, welches ich vermutlich demnächst auch ätzen lasse. Schnittstellen und Peripherie: - Scart - Chinch Video und Audio - PS/2 Anschluss - Serielle RS232 - USB an 2. serielle Schnittstelle - 9 pol. parallel (Joystick, Belegung wie Atari, C64, etc.) - Stiftleiste parallel I/O - I²C - 10 pol. und 6 pol. ISP Bauteile: - 2 x EEPROM - Dataflash auf Platine - FT232RL USB Modul - MAX232 für die serielle Hoffe das mit den Schnittstellen funktioniert. Habe jetzt nochmal versucht die Version 1.45 zu compilieren mit AVRA und AVRASM2 und AVRASM32.... keine Chance... immer wieder unterschiedliche Fehlermeldungen :(((((
Kannst Du mal die Fehlermeldungen von AVRA posten? Welche Version benutzt Du? Mit den anderen beiden Assemblern kann ich nichts anfangen, da ich kein Windows habe. Zum Joystick: man kann über OUT die internen Pullups einschalten und muß dann halt z.B. IF IN(0)=0 THEN ... zur Abfrage verwenden. Alternativ kann man natürlich auch Pull-Downs in den Joystick-Adapter einbauen, dann entfällt die Invertierung. Jörg
Die Version von Avra ist 1.0.1 Ich habe keine aktuellere als .exe gefunden! Das ist mein problem! Fehlermeldung siehe Foto! Gruß Dominik
Jetzt fehlt nur noch ein Emulator für die .hex file... Das ist ja echt ein Akt bei jeder Änderung den AVR flashen und an den Fernseher anklemmen :(
Lässt sich Softwaremäßig vlt noch was am Sound machen? Wie funzt das eigentlich bei der Uzebox, dass der Sound im Hintergrund laufen kann?
Mit dem PLAY-Befehl kann man auch Noten im Hintergrund abspielen lassen. Wie es bei der Uzebox geht kann ich nicht sagen, da ich mich nie damit beschäftigt habe. Machen lässt sich bestimmt noch einiges, z.B. den Wellenformspeicher in das Array legen um beliebige Wellenformen zu kreieren. Dazu müsste man eine "Weiche" einbauen, mit der die Daten wahlweise aus dem Flash oder dem RAM geholt werden. Für eine zweite Stimme sind horizontal nicht in allen Modes genügend Takte übrig. Für mich ist das Projekt allerdings abgeschlossen, mehr als Bugfixes ist nicht drin. Jörg
Oha... das klingt zu kompliziert! :( Bin ja auch nicht so bewandert was Assembler angeht! Zeichensatz ändern ist nicht das Problem. Die Farben hab ich mir auch schon angepasst auf C64 Style :)) Die Cursorsteuerung im menü ist mir noch nicht so klar. Wollte eigentlich ein weiteres Icon neben dem Info legen und dort die Statuszeile ablegen! Aber da blicke ich noch nicht ganz durch! Genauso wie mit dem Sound. Ich habe in den Sourcen nur das perl script gefunden um den soundtable zu erstellen! LG Dominik PS: Habe vor die Basic Referenzen was aufzupeppeln sowie ein paar listings zu erstellen von meinen ganzen Spielen! Vlt noch ein kleines handbuch dazu, mal schauen!
Die Menü-Routinen liegen in "modules/menu.asm", dort gibt es auch Routinen zum Zeichnen der Symbole (z.B. "menu_cfgicon"). Eine solche brauchst Du auch für das eigene Icon. Nach "menu_main_11" müsste dann noch die Abfrage für das zusätzliche Icon und Aufruf der zugehörigen Funktion integriert werden. Ob dafür aber noch Platz im Flash ist, wage ich zu bezeifeln. Die Soundausgabe läuft fast komplett im Video-Interrupt, zu finden im File "libmio/vint_o.asm". Dort nach "calculate sound" suchen. Für das Assemblieren und Übertragen kann man sich auch ein Script basteln: 1. main.hex löschen 2. avra main.asm 3. wenn main.hex existiert, per Programmer an den Controller übertragen Bei einem Assemblierungsfehler wird die main.hex nicht erzeugt und der gesamte Vorgang abgebrochen. Jörg
Hallo Jörg, danke für deine Antwort! Wie sich das mit draw_icon, etc. verhält habe ich bereits rausgefunden! Ganz blicke ich noch nicht durch mit der Cursorsteuerung. Denn DOWN funktioniert ja nur wenn ich mit dem Cursor in der ersten Zeile bin und unter mir entweder das FLASH Symbol, Config oder Info ist. tricky... Ich speicher die einzelnen .asm Dateien immer und compiliere anschließend alles mit deinem AVREL.exe. Dadurch sehe ich leider nicht wieviel Platz ich noch frei habe! Ok, wenn du sagst es hat keinen Sinn irgendetwas neues hinzuzufügen, dann lasse ich es natürlich! Ich könnte es natürlich auch versuchen und schauen ob es beim compilieren ein Fehler gibt. Eventuell werde ich die Statusleiste mit MCU, VID und KBD in die INFO verlagern. Gruß Dominik PS: OT: Dadurch das es hier nur 1 Seite gibt bei dem Thema stürzt ständig die Seite bei mir beim Antworten ab wegen Skriptfehler etc. Gibts da ne Lösung?
Kilo schrieb: > PS: OT: Dadurch das es hier nur 1 Seite gibt bei dem Thema stürzt > ständig die Seite bei mir beim Antworten ab wegen Skriptfehler etc. > Gibts da ne Lösung? Da hilft im Forum anmelden und Seitenaufteilung einschalten. Oder halt einen gscheiten Browser nehmen, beim FF sürzt bei mir nichts ab. Jörg
Mal ne andere Frage. Angenommen ich würde Unterprogramme oder ähnliches rausnehmen die ich nicht brauche... könnte ich damit alleine die Zeilenanzahl im Editor erhöhen, sprich den Flash oder reicht das alleine nicht aus?
Sorry wenn ich nerve... (Bin ja eh der Einzige momentan) 1. Wo wird das Loader Icon erstellt? Alle Icons werden in menu.asm erstellt und angezeigt. Das Loader Icon finde ich nicht.. will es löschen. Bzw. hab es gelöscht aaaaaber: Da ich ja jetzt einen blauen Hintergrund habe, ist der Hintergrund bei dem das Loader Icon war immer noch schwarz! 2. Im Menü wird ja der Fensterrahmen angezeigt. Über der Statuszeile ist eine Leiste. Die Box habe ich wegbekommen. Die Zeile in der die Leiste angezeigt wird finde ich nicht. Ich meine den Balken der die Icons von der Statuszeile trennt.
Hallo Dominik, der Loader ist ein quasi vorinstalliertes Binärprogramm. Das lässt sich auch einfach löschen. Bei Nicht-BASIC-Programmen steht die Icon-Definition im Programmheader. Dafür gibt es im Bereich "Interna" den Abschnitt "Das API für Binärprogramme". Wenn Du den Loader nicht brauchst, dann einfach in der main.asm einfach bei 0x6000 das include rausschmeißen und durch einen leeren Block z.B. vom Programm darüber ersetzen. Der Code für die Zwischenzeile geht in der menu.asm ab Zeile 45 los. Dort werden 0xf8, 28 x 0xf1 und abschließend 0xf9 in die entsprechenden Bildschirmspeicherzellen geschrieben. Die Anzahl der Zeilen wird in erster Linie durch das RAM limitiert, da während des Editierens der gesamte Quelltext im RAM liegen muß. Beim Flash könnte man einfach für eine höhere Zeilenanzahl die Zahl der Programme verringern. Man kann aber Subroutinen in andere Programme auslagern. Wenn das nicht reicht, könnte man einen ATMega1284P nehmen und den Code entsprechend umschreiben. Jörg
Hallo Jörg, danke schön... ach bin ich blöd! Dass ich das nicht gesehen habe!! :( Klaro geht das bei den Programmen auch mit CALL. Pacman zum Beispiel. Dem habe ich einen Startbildschirm und Joysticksteuerung verpasst. Dazu brauchte ich natürlich einen 2. Programmplatz. Ist halt immer nur blöd beim laden... Obwohl warte mal... Theoretisch könnte man doch z.b. auf P1 ein Programm schreiben mit einer Liste von Spielen. Suche ich mir dort eins aus, dann läd der computer dieses Spiel aus dem DFlash in den Mega und startet es. Wäre es dein ein großer Aufwand den Code bei einem ATMega1284P umzuschreiben? Gruß Dominik PS: Ich bin immer noch total begeistert von deinem Computer! :-)
Hi Kilo wollte mal dein gamepad nachbauen,hast Du ein paar Spiele das ich das testen kann? Vielen Dank im vorraus. Gruss Patrick
Hallo Patrick, Ich habe an meinem Parallelport einen Schmitt Trigger hängen. Jetzt kann ich perfekt meinen digitalen Joystick dran hängen. Spiele habe ich auch schon ein paar aber ehrlich gesagt die serielle Schnittstelle noch nicht getestet. Von daher müsste ich alles abtippen und dafür war ich bislang zu faul. @Jörg Kabel an die serielle, CTRL+P und schon wird ein screenshot an meinen pc gesendet? als Bild??
ah ok aber vllt kannst du den bildschirm abfotrogafieren, mit den listings,dann kann ich mir das von den pics selbst abtippen , vielen Dank im Vorraus gruss Patrick
Hi, ich werde die Tage mal ein paar listings posten! ;)
Jörg, bei deinem Mega16 Projekt konnte man den Zeichensatz mehrfahrbig darstellen! Das war natürlich genial!!! Geht das beim aktuellen 644 Projekt nicht??? Ich meine in der .dat Datei... jetzt bestehen die Zeichen aus ... und xxx im 16er war durch einen Buchstaben die Farbe angegeben!
1. zum Senden der Listings über die serielle Schnittstelle: Im Editor CTRL +F2, steht auch in der Anleitung 2. Man kann für jedes Zeichen Vordergrund- und Hintergrundfarbe festlegen, warum sollte das dann auch noch in den Zeichensatz. Der Mega16 hatte nicht genügend RAM für extra Attribut-Bytes Jörg
Hi Jörg, nein.. hast mich falsch verstanden... Im Zeichensatz der 16er Version war z.B. die Kugel für Pong mit einem weißen Schatten. Der Smily war gelb und hatte rote Augen! Das war bereits im Zeichensatz festgelegt... Beispiel: 644: ..... .xxx. xxxxx .xxx. ..... ..... Ergebnis: Ein einfarbiger Ball 16er: ..... .YYY. YYBYY .YYY ..... Ergebnis: Ein gelber Ball mit blauem Punkt in der Mitte. Im aktuellen Zeichensatz nehmen die "Öffnungen" der Augen eines Smilies ja die farbe des Hintergrundes auf. Wenn ich jedoch im Zeichensatz anstelle eine X ein R für rot eingeben könnte, dann würden die Augen rot sein und die Kopf farbe kann ich in BASIC wählen.
Dafür gibt es (mit Einschränkungen) den Videomode 6 oder den Tile/Sprite Treiber. Theoretisch könnte man auch die Ansteuerung wie beim Mega16 in einen ladbaren Treiber packen. Jörg
Hi Jörg, ok danke... Ich werde es mal testen! Besteht denn theoretisch die Möglichkeit die Zeichenanzahl von 30 im VM 0 zu erhöhen?
Wenn man einen schnelleren Algorithmus findet, die Pixel auszugeben oder den Controller übertaktet oder die Ausgabe der Pixel in externe hardware (CPLD) auslagert ... theoretisch schon. Allerdings müssten die Speicheraufteilung (zu Lasten der Array-Größe) sowie jede Menge anderer Dinge, die sich auf die 30 Zeichen je Zeile beziehen, überarbeitet werden. Jörg
So, hier nun eins meiner Spiele! Es ist ein kleines Jump'n'run. gesteuert wird mit Joystick, links, rechts und hoch! Die Belegung muss sich natürlich jeder selber einstellen: Zeile 11 => Joystick rechts Zeile 12 => Joystick links Zeile 13 und 85 => Joystick hoch In den einzelnen levels stehen Bäume am Boden, logisch, welche von level zu Level mehr werden. Ihr dürft diese Bäume nicht berühren sonst verliert ihr Leben! Die gelben Münzen bringen Punkte. Ab 10 Punkten könnt ihr sogar höher springen! Wenn ihr gegen den grünen Block springt, erscheint an irgendeiner Stelle eine lila Glocke. Springt auch gegen diese und ihr erhaltet ein zusätzliches Leben. Ab einem bestimmten Level gibt es diese Glocken nicht mehr und es ist nur noch eine Frage der Zeit wie lange ihr durchhaltet! Gruß Dominik PS: Als nächstes werd eich hier mal Pong One veröffentlichen. Ein One-Player Pong mit 3 Schwierigkeitsstufen!
Im Moment versuche ich mich an einem etwas flexibleren Konzept. Die meisten BASIC-Dialekte sind halt nicht miteinander kompatibel und das schreckt ab. Außerdem fehlt, wie Du schon bemerkt hast, ein Simulator/Emulator. Meine Idee ist es daher, dass man seine Programme in C schreiben kann und diese im RAM des Controllers ausgeführt werden. Die ganzen Bibliotheken liegen aber im Flash, so dass der Code recht kompakt bleibt. Das schließt den AVR natürlich aus, da der keinen Code aus dem RAM ausführen kann. Nun, es gibt ja auch noch andere Controller, zur Zeit verwende ich einen MC9S12XD128 von Freescale in einem "Nachfolger" von meinem AVR-Handheld. Aber das gehört jetzt eigentlich nicht mehr in diesen Thread... Jörg
Ach Jörg, ich glaube das würde dann schon wieder zu weit gehen! Für die Uzebox programmiere ich auch Spiele am PC in C und compiliere sie dann auf SD Karte... Du hast natürlich viel mehr Möglichkeiten aber das Flair das dein Computer hat ist dann weg! Ich habe den Dataflash fest auf meiner Platine. Mehr braucht man gar nicht. Spiele programmieren, auf den Flash speichern und du kannst jederzeit das System neu machen ohne das die Programme weg sind. man könnte auch nen Bootloader in den Avr schmeißen und alles von SD Karte oder Flash lesen lassen.. aber dann hast du wieder eine Spielekonsole a la Uzebox!
Das sind erstmal nur Tests, später soll schon ein "richtiger" Computer folgen. Nur dass man seine Anwendungen dort in C und nicht mehr in BASIC erstellt. In einen größeren Controller (die S12XE gehen bis 1MB Flash) sollte dann auch ein einfacher C-Compiler nebst Editor und Assembler mit reinpassen. Jörg
Och, wenn du einen dicken MC auspackst kannst du doch sicherlich ein TinyBASIC mit einbauen. Das wäre dann sogar kompatibel zu den ganzen alten Spielebüchern und wäre sehr nah am "Industriestandard" MSBASIC 2.0, würde halt nur das Fließkommazeugs fehlen. :)
So, bin grad an Breakout (Arkanoid) dran. Das blöde ist die Ball Physik... will den Abprallwinkel ja abhängig von der Paddlebewegung machen! Das Paddel besteht aus 3 Zeichen. Ich könnte quasi wenn der Ball das mittlere Zeichen trifft den Winkel so lassen, wie bei Pong. Und dann abhängig ob die linke oder rechte Seite des Paddle getroffen wird den Winkel vergrößern... aber wie? Leider kann ich nur mit ganzen Zahlen arbeiten.
hi Dominik wie kommt man bei deinem ballE game wieder auf dem Startbildschirm? er wurde mir nur einmal angezeigt ,wo ich das erste mal das Spiel gestartet hab ? sonst echt super Spiel !!
Hi, Danke :) Wenn du Game Over bist, dann gelangst du wieder zurück... Ansonsten musst du abbrechen mit CTRL+C Im Moment sind halt nur die 4 Himmelsrichtungen sowie 1 Feuerknopf in Verwendung!
Greetings Kilo Can i purchase one of these boards, I have the original chipbasic2 board with Atmega1284 insitu. I primarily use it with the AX81 configuration! regards Frank Kilo schrieb: > So, > ich hab dann auch mal ein layout erstellt, welches ich vermutlich > demnächst auch ätzen lasse. > > Schnittstellen und Peripherie: > - Scart > - Chinch Video und Audio > - PS/2 Anschluss > - Serielle RS232 > - USB an 2. serielle Schnittstelle > - 9 pol. parallel (Joystick, Belegung wie Atari, C64, etc.) > - Stiftleiste parallel I/O > - I²C > - 10 pol. und 6 pol. ISP > > Bauteile: > - 2 x EEPROM > - Dataflash auf Platine > - FT232RL USB Modul > - MAX232 für die serielle > > Hoffe das mit den Schnittstellen funktioniert. > > Habe jetzt nochmal versucht die Version 1.45 zu compilieren mit AVRA und > AVRASM2 und AVRASM32.... keine Chance... immer wieder unterschiedliche > Fehlermeldungen :(((((
Hi Frank, I don't really sell the boards! First I have to let produce them first but I'm still not satisfied with the layout. I will change some of the hardware like USB, Sound, and so on. **** Bin noch in der Bastelphase... Zur zeit mache ich ein paar neue Spiele und bastel noch was am Board. Teste ein wenig mit dem FT232RL Baustein.
Vielleicht wäre es dann sinnoll, die schnellere Hardware-Schnitstelle des 644P als Systemschnittstelle zu nutzen. Der Aufwand dazu sollte sich in Grenzen halten, da die Kommunikation über die libmio läuft. Die ursprüngliche (Software-) Systemschnittstelle könnte dann entfallen, dafür würde dann auch noch ein bisschen Flash frei. Jörg
Hi Jörg, ach das wäre ja super!! geht das Pinmäßig auch mit dem ATMega1284P? Wenn ja müsste man dann nur die def.inc ändern damit der AVREL.exe damit umgehen kann oder? Weil ich hab zur Zeit nur den ATMega1284P rumfliegen, keinen 644P
Hallo Dominik, theoretisch sollte der Mega1284P auch mit dem "normalen" Hexfile gehen und als Mega644P in der Statuszeile erscheinen. Ansonsten halt mit anderem Include-File assemblieren. Jörg
Ah ok... das wäre ja noch besser! Ich werde es mal ausprobieren! Danke :) Würdest du die libmio denn anpassen an die 644P/1284P Version? Dann baue ich das mal mit dem USB auf!
Hi Jörg, kannst du mal kurz anreissen wie das mit dem Sound funzt? Wie hast du das soundtable erstellt, auf welcher Grundlage? Wären theoretisch 2 Kanäle machbar? Wie funktioniert der Sound allgemein? Gruß Dominik PS: bei diesem projekt bereue ich kein Assembler zu können!
So, im Moment bastel ich an Breakout (Arkanoid)... Hab momentan schon 3 Level! Klappt super!!! Anbei auch mal mein aktuelles Menü-layout im C64 Style :) Und den aktuellen Zeichensatz. Hab ihn erweitert um Spielerelevante Zeichen wie Hubschrauber, Motorrad, Raumschiff, Herz, Karo, pik und Kreuz und und und... bin aber noch nicht fertig! Auch am Sound habe ich was gearbeitet. die Noten mit langer Hüllkurve klingen zur Zeit etwas elektronisch verzerrt. Bei Musik nicht schlecht. Aber gefällt mir noch nicht ganz! Ich will ein etwas polyphoneren Ton haben und etwas verzerrter!! Auch das Platinenlayout wird sich wieder ändern. Bin mir aber nicht ganz sicher ob ich das System modular aufbauen soll oder alles auf eine Platine schmeißen soll. PCB würde mich momentan 39 € kosten :(
Hallo Jörg, sag mal... wo sind denn die Farbeinstellungen der Zeilen im Editor? Finde nur den Hintergrund.. also Border.. aber da wo die Zeilennummern stehen ist es immer noch schwarz :(
Ehrlichgesagt, dazu müsste ich auch erst den Sourcecode "durchkämmen", aber das habe ich eigentlich nicht vor. Gleiches betrifft auch die serielle Schnittstelle. Wenn ich in der offiziellen Version die Schnittstelle permanent umstelle, würde ich mich selbst aussperren da ich immer noch die RS232 nutze. Und andere vielleicht auch. Von daher ist das für mich keine Option. Jörg
Ich hab noch einmal drüber nachgedacht, vielleicht ließe sich die Umschaltung des seriellen Interfaces über die Baudratenumschaltung realisieren. Auf die 1200 Baud kann ich durchaus verzichten, dafür könnte man dann 38400 Baud an der zweiten Schnittstelle nehmen. Da ich zum Probieren keinen FTDI rumliegen hab, dafür aber einen AVR-CDC wäre das die höchstmögliche Baudrate. Und Kompatibilität wäre immer noch da. Allerdings zieht das weitere Kreise als nur Änderungen in der libio. Wenn das OK wäre, würde ich mich im Laufe der Woche mal dransetzen. Jörg
Hallo Jörg, also ICH habe nichts dagegen :) Musste übrigens den Dataflash baustein von der Platine schmeißen. Beim Flashen des AVR wird dieser gelöscht. Das heißt er muss steckbar sein und darf nicht parallel zum ISP liegen :( Bislang habe ich es nur geschafft ein bißchen Zeichencode und Farben zu ändern. Naja bis auf den Editor, da finde ich keine Farbinformationen der einzelnen Zeilen. Ich schaffe es einfach nicht mich durch die Bytes zu arbeiten um zum Beispiel mehr Zeilen im Editor hinzukriegen. Also ich kriege schon eine 96. zeile hin, aber dann gibts nur Systemkomplikationen :) Gruß Dominik PS: An der Auflösung im Textmodus lässt sich nichts mehr ändern so einfach oder?
Hallo Dominik, es sollte reichen, den /RESET Pin des Dataflash mit dem des ATMega zu verbinden. Dann beibt der DF während der ISP im idle und es sollte nichts überschrieben werden. Bei "Erweiterungen" ist das auch so dargestellt. Ich glaube nicht dass es möglich ist, an Auflösung oder Zeilenanzahl noch groß zu optimieren ohne andere Dinge in Mitleidenschaft zu ziehen. Weil meiner Meinung nach ganz einfach der Controller schon fast bis auf das letzte Bit ausgereizt ist. Die Farbe für die Editorzeilen findet sich übrigens in der Datei libmio_tvm.asm (Videoausgabe für den editor) ca. bei Zeile 232 und nicht im Editor selbst: ldi YL,0x0e ;1 dark white on black Jörg
Danke Jörg!!! Ach herrjeh... da steckt die Zeile also... :)) ich dachte auch eher an den 128P als Controller... weniger Arbeit bei mehr Flash! Das mit dem reset Pin verstehe ich nicht ganz! Um den DF im Betrieb zu beschreiben, muss dieser doch zwangsläufig mit allen Pins verbunden werden laut "Erweiterungen" Wenn ich nun parallel dazu den Flash des Atmegas beschreibe also eine neue Hex reinflashe, bekommt der DF alles mit ab! Welche Pins müsste ich denn dann physikalisch trennen durch Jumper?
Während des Flashens über ISP wird der ATMega im Reset gehalten (=LOW), bei einer Verbindung zum Dataflash befindet sich dieser damit auch im Reset und sollte nicht auf Kommandos reagieren. Ebenso könnte man dem CS-Signal noch einen Pull-Up spendieren. Getestet habe ich das aber nicht, da sich bei meinem Aufbau (Dataflash-Module) ISP und Dataflash gleichzeitig rein mechanisch ausschließen ;-) Beim Mega1284P sollten sich mittels eines entsprechenden IRAM-Treibers zumindest 12K RAM als Array-Erweiterung nutzen lassen. Alles andere ist wohl mit größerem Aufwand, tiefgreifenderen Änderungen im System und Verlust der Komatibilität zum Mega644(P) verbunden. Jörg
Mh, ich werde mal schauen was ich mache. Schön ist natürlich so eine kleine "Festplatte" mit an Board zu haben. Naja, der Dataflash wollte nach dem flashen des Atmegas neu formatiert werden. Von daher hat er sich beim flashen irgendwie daneben benommen. Soll ich also mal CS und Reset einen Pullup am DF spendieren? Das ist natürlich schade mit dem Aufwand. Wenn ich Assembler genauso gut könnte wie Deutsch, dann würde ich mich da ransetzen :( Nichts für ungut Jörg, der Chipbasic Compi ist genial, das steht außer Frage... Aber mehr Platz für Basiczeilen, eine bessere Auflösung und VGA wären natürlich das Optimum mit nur einem Chip! Mensch, VGA hat doch beim ZX auch funktioniert... :(
Hallo! Am Wochenende war endlich mal Zeit sich Jörgs 1A "homecomputer" selbst aufzubauen um damit aus dem Schatten der "nur Mitleser" zu treten.. Nachdem die Schlatung auf einer Experimentierplatine aufgebaut war (siehe Bilder 644LPunten/oben) den 644 mit dem hex file aus dem Paket von Jörgs Seite programmiert und schon ging es los. Ich bin echt begeistert was der 644 leistet im Vergleich zum seeligen ZX81. Die Limitierung auf 90 code Zeilen war nur auf den ersten Blick eine denn Unterprogramme lassen sich ja zur Laufzeit nachladen - sehr schlaues Konzept!! Der Spaß ließ dann nach einer Weile nach weil das Bild ein Geisterbild verunziert... siehe Bilder "Bildausgabe".. Es sieht so aus als ob der Takt des 644 instabil ist also 20MHz Quarz eingelötet und die SMD Kondensatoren durch bedrahtete ausgetauscht. Leider keine Änderung. Die Bilder sind mit einer Wandlerbox FBAS - VGA von einem LCD Monitor aufgenommen, das Problem bleibt aber auch mit anderem Kabel, an einem analogen Fernseher gleich. Die 5V Versorgungsspannung sind auch nicht Quelle der Störungen Ich früchte damit sind die Hardwaremäsigen Fehlermöglichkeiten abgeklappert oder fällt jemandem noch etwas ein? So wie ich Jörgs Konzept verstehe, wie das Bild erzeugt wird, bleibt da kaum eine Möglichkeit für einen "jitter", richtig? Bleibt die Frage ob der hex-file ne Macke haben kann und ich mir selbst einen hex-file erstelle. Jörg kann das sein? Die fuse settings sind dreimal geprüft und sind so gesetzt wie sie sollen. Sachdienliche Hinweise zur Ergreifung des Übeltäters nehm ich gerne entgegen! Vielen Dank auf jeden Fall für das schöne Wochenendprojekt und einen 1A homecomputer!! Alex
Beim AX81 war das Ganze monochrom, und soviel höher war die Auflösung auch nicht. Von daher eher keine sinnvolle Alternative. Ohne externe Hardware wird auch nicht viel mehr zu schaffen sein. Mit externem 128K RAM + Video-Register (HC374) komme ich bei 20MHz AVR-Takt (Mega644) auf maximal 320x240 bei 256 (festen) Farben für TV und VGA. Das ist zwar nicht schlecht und auch recht schnell, aber 320x240 ist halt für ernsthaftere Anwendungen als Spiele zuwenig. Jetzt bin ich am überlegen, den HC374 durch ein kleines CPLD zu ersetzen. Dann sollten wenigstens auch 640x480 bei 4 Farben (aus 16) möglich sein. Jörg
@ Alexander tritt das Phänomen auch bei RGB auf? Eventuell hilft es, den Videoausgang auf der Leiterplatte mit 100-150 Ohm "abzuschließen". Auf das Hexfile als Ursache würde ich nicht tippen. Das Ausfransen des Borders in Bild 2 ist normal (gilt auch für das Border-Ende am rechten Bildrand), da hier keine aufwändige Synchronisation auf den Timer gemacht wird. Bei den den Geräten, mit denen ich getestet habe liegt das aber außerhalb des Sichtbereiches. Jörg
@ Jörg mhhh, das klingt natürlich sehr verlockend! Und hey, wenn wir jetzt schon tolle Spiele programmieren können, was wäre dann erst mit 320x240 bei 256 farben möglich??? Das ist doch ausreichend!!!! Aaaaaaber: Mein problem ist, der Parallelport! Da hängt natürlich ne Joystickbuchse dran! Sprich: Ich habe 6 der I/O pins belegt. Da würde kein externer RAM mehr dranpassen... Nur was nützt die neue Auflösung und die 256 farben wenn man die Spiele nicht mehr mit Joystick spielen kann? :((( Heul... ist das tricky..
Nein, mit der ChipBasic Hardware funktioniert das überhaupt nicht, das war ein eigenes Projekt, eine Art "Grafikkarte", die seriell angesteuert wird. Außer den beiden seriellen Portleitungen war auch kein weiterer Pin mehr am Controller frei ;-) Das Projekt ist eigentlich schon aus dem Jahr 2011, wegen Zeitmangels für die Doku habe ich es aber nie veröffentlicht. Ohne Doku ist es aber mehr oder weniger nutzlos, da es glaube ich knapp 100 verschiedene Funktionen bis hin zum (rudimentären) 3D-Rendering gab und dazu noch jede Menge Parameter. Mit der bestehenden Hardware und einem Mega1284P wären bei VGA grob gerechnet 200x150 Pixel (16 Farben je Pixel) möglich, wenn man die unterschiedliche Pixelbreite (3 / 2 Takte) akzeptiert. Das VRAM benötigt dann aber schon 15K, da beleibt für den Rest nicht mehr viel übrig. Jörg
Mh.. naja ich vermisse halt die Textauflösung wie sie beim C64 z.B. war oder bei anderen AVR Computer Projekten. naja ok, theoretisch sollte man den nötigen Platz für das VRAM ja schon kriegen, wenn man Sachen rausschmeißt die man nicht unbedingt braucht.
Vor allen Dingen musst Du Dir ein schnelleres Timing einfallen lassen, um die Zeichen auszugeben. Momentan braucht es 30 Takte je Zeichen, 5 je Pixel. Um 40 Zeichen darzustellen musst Du das auf 4 Takte je Pixel reduzieren, also 6 Takte je Zeichen einsparen. Durch Aufrollen der Schleife, verlagern der Zeichentabelle in das RAM und geschickte Registernutzung lässt sich das sicher hinbiegen. Dann kommt aber noch der ganze "Rattenschwanz" an funktionalen Änderungen dazu (z.B. Menüs). Irgendwann ist es einfacher, das Ganze komplett neu zu entwickeln. Monochrom geht es auf jeden Fall schneller, siehe 60-Zeichen Treiber. Jörg
Hallo Jörg! Danke für Deine Tips! Der erste Tip, nach einer Fehlanpassung des Videoausgangs in Richtung zur FBAS-VGA Wandlerbox zu suchen hat keine Änderung gebracht. Der zweite Tip, Deine Erklärung zu dem "ausgefransten" linken Bildrand hat jetzt wohl auch die Erklärung für meine Schatten behaftete Ausgabe gegeben. Mein Videosignal hat mit dem Scope gemessen die gleiche zeitliche Unsicherheit (siehe Bild) und wird damit der Grund für die Macke in der Bildausgabe sein -> also erstmal "working as designed". Bei nächster Gelegenheit probiert ich den Tip aus den Fernseher per RGB - Scart mit einem Signal zu versorgen und werde dann wieder berichten. Es war doch mal einer hier im threat der die RGB Bildausgabe mit einem IC auf FBAS gewandelt hat. War das Bild dort so scharf und ruhig wie man es sich wünscht? Bzw. hat noch wer anders die gleichen Anzeigeprobleme gesehen? Danke wieder für eure Hilfe! Alexdander
Noch eine Anmerkung zum Scopebild... das LCD hat Kontaktprobleme deshalb die waagerechten Striche im oberen und unteren Drittel der Anzeige.
Hallo Alexander, ich kann jetzt die Messung nicht nachvollziehen, aber der Beginn der Bildinformation (nicht des farbigen Randes) sollte sich bezüglich zum horizontalen Synchronimpuls nicht ändern. Ansonsten wäre ja das ganze Bild ausgefranst. Eventuell könntest Du das Oszi im "Normalmodus" (nicht Video) betreiben und auf die steigende Flanke vom HSYNC triggern. @Dominik Ich habe die Änderungen bezüglich seriell fertig, muss sie aber noch testen. Vielleicht komme ich am WE dazu. Jörg
Hi Jörg, ui.... das klingt ja klasse! Bin mal gespannt und freue mich :) Ach man... bei Pollin gibts wieder tolle kleine PAL TFT's.. könnte man nen super Laptop bauen aber dafür ist die Bildausgabe per Bas s/w und das ist blöd :(
Ich werde jetzt mal einen Computer aufbauen und in ein altes Modemgehäuse einpflanzen + der FBAS Schaltung weiter oben von Ralf - Rainer Ratke! Die Modemgehäuse eignen sich perfekt, zumal Aussparungen für die wichtigesten Anschlüsse vorhanden sind. Momentan weiß ich noch nicht genau wie ich mit dem Parallelport umgehen soll. Entweder mit einem Schmitt-Trigger als Joystickport oder als I/O. Oder kombinieren, dann hab ich aber nur einen Input Port mit passiven Schaltern die auf Masse gezogen werden. Steuern und regeln hat sich dann erledigt! :( @Ralf - Rainer Ratke Woher hast du die Motorrola IC's denn bezogen? Ich habe sie nur bei Ebay gefunden und dort auch nicht wirklich massig!! Gruß Dominik
Mal ne Frage: Wenn ich Scart ersetze gegen die FBAS Schaltung... bleiben die Widerstände für RGB am µC Ausgang bestehen?
Kurzer Zwischenstatus: die Änderungen sind leider noch nicht fehlerfrei, manchmal hängt das System beim seriellen Loader und start sich laufend neu. Da muss ich jetzt die nächsten Tage mal drüberschauen. Zu den FBAS-Schaltungen habe ich keine Erfahrungen, lediglich für den CPLD-FBAS-Encoder, den ich ursprünglich für den ChipBasic Computer entwickelt hatte. Und den konne man einfach an den unveränderten "UNI"- Videoport anstecken. Jörg
Hallo Jörg, nungut, ich baue die FBAS Schaltung mit dem Motorrola mal zu Ende und hänge sie an den Videoport. Mal schauen was passiert! Bei Pollin gibts übrigens für 14 Euro ein kleines LCD mit FBAS Anschluss PAL/NTSC... perfekt Außerdem eine kleine Platine auf der man die Flashbausteine auflöten kann und mit Stiftleisten versehen kann... Noch perfekter.
@ Dominik Die Wiederstände für den SCART Ausgang brauchst Du auch für das converter IC. Über die unterschiedlichen Spannungspegel die auf den Ausgängen Rot, Grün, Blau ausgegeben werden wird die aktuelle Farbe des Bildpunktes "gemsicht". Die eigentliche Funktion des converter ICs ist die 3 Spanungspegel zusammen zu fassen, damit die Farbe des Bildpunkts ermitteln und diesen Wert in eine Frequenz umzuwandeln - fertig ist das FBAS Signal... in der groben Übersicht! Das Pollin Display habe ich auch schon gesehen, kam mir aber aber etwas klein vor und wenn ich es richtig gelesen haben zeigt es 16:9 an womit die Darstellung in der Breite verzerrt ist. Leider habe ich in den Pollinunterlagen nichts gefunden ob man auf 4:3 umschalten kann. Berichte mal von Deinen Erfahrungen wenn Du es Dir kaufen solltest. Übrigens auch ohne das converter IC sollte ein Bild zu sehen sein, halt nur in Schwarz/Weiß. @ Jörg Du hast das Scopebild genau richtig interpretiert! Das Scope triggert auf den Vertikalimpuls und so kommt es daß die h-sync Impluse "zittern" wenn ich eine einzelne Zeilen anzeigen lasse. Trigger ich auf den h-sync steht das Signal wie eine 1 genau so wie Du es vermutet hast! Die zeitliche Unsicherheit am linken Rand fällt bei dieser Anzeige nicht auf. Ich seh in dieser Ansicht auch absolut keine Störungen die mein Schattenbild erklären könnten. Auch unterschiedliche Abschlußwiderstände ändern an dem sehr sauberen Signal nichts, lediglich an der Amplitude (wie erwartet).
@Alex Na das man auch so ein Bild sieht ist mir klar... aber ich will ja eben kein s/w sondern in farbe und bunt! :)) ich muss nochmal nachgucken.. wenn das wirklich 16:9 ist, dann ist das ein bißchen blöd! Egal.. mal testen!
Sooo... FBas Schaltung gebaut, drangehängt, kein Signal! :( Das Signal am Scope gefällt mir auch irgendwie nicht.. mh! Jetzt beginnt die Fehlersuche...
Halloe. Ich habe da seit einiger Zeit ein Problem, eine SPI-Erweiterung über das Kommando SPISEL und SPI() ans laufen zu kriegen und komme einfach nicht weiter. Ich habe eine nette kleine Platine gebastelt und wollte an den SPI- Bus eine Multiselekt-Erweiterung anbauen, da ich mehrere SPI Geräte steuern wollte. Das ganze liegt nu schön länger auf meinem Tisch und will einfach net laufen. Nun hab ich mir letzte Woche endlich mal einen 10 Euro Logikanalyser gekauft und bin dem Problem näher auf den Grund gegangen. Ich verwende die Version 1.45 von ChipBasic auf meinem 644p(er) Board. Das angehängte Bild zeigt einen Scann der Kommunikation mit folgenden Befehlen: SPISEL 0 A = SPI ( 85 ) SPISEL $FF A = SPI ( 15 ) Was mich wundert ist, das die ChipSelekt- Leitung mit Signal (SS) auf Pin5 ihren zustand nicht wie beschrieben ändert, sie bleibt die ganze Zeit auf LOW. Ich hätte erwartet, das sie bei dem Commando SPISEL 0 auf HIGH wechselt. Ich hab inzwischen auch schon selbst im Sourcecode rumgesucht, konnte den Fehler aber nicht wirklich finden. Eigentlich wird der Port wie in der Anleitng beschrieben umgeschatet, aber irgendwie scheint der Port nicht auf Ausgabe zu stehen obwolh das im Init-Block am Anfang eigentlich richtig gesetzt wird, oder ich habe sonst noch was übersehen. Hat schon jemand erfolgreich eine MultiSelekt Erweiterung ans laufen bekommen und wie sah eure Schaltung aus ? Freundliche Grüße Frank
hallo, Ich will Chip-8-Programme laden und der Autor sagt: "Der Chip8-Interpreter Braucht sterben daten in Einem bestimmten Format, und Zwar Einem 4 KBytes grossem Speicherabbild zusatzlich Sind Verzögerung und sterben Tastenbelegung hinterlegt.. Wann & DaZu sterben Programm Aus dem Internet heruntergeladen und Werden mittels der Programme im TOOL-Ordner Konvertiert Werden. " Wo ist das Programm, um Chip-8-Dateien konvertieren?? Tut mir leid, mein Deutsch, aber sie sind von google translate.
@Frank da scheint sich wirklich noch ein Fehler eingeschlichen zu haben der dazu führt, dass immer nur das DatanFlash angesprochen wird. Einen Fix habe ich schon, muss ihn aber noch testen @711LAB The tool for converting chip8 programs is currently missing in the archive (like the examples). You will find it in the 1.43 package. Jörg
Thanks! Ich hatte das Programm von Cygwin auf WindowsXP ausführen, wird es ok. Ich habe alle chip8 Spiele, die ich im Internet finden umwandeln und Getestet habe ich sie auf der Chip-8 Emulator, funktioniert es ok. Wissen Sie, wie die EMU-8080 funktioniert? In welcher Position ich es laden und muss ich laden zusätzliche Bibliothek?
Hallo, ich habe dieses Problem auf 16 Farben SCART. Das Monitorbild ist sehr schlecht. Was ist das Problem?
711LAB .. schrieb: > Hallo, ich habe dieses Problem auf 16 Farben SCART. Das Monitorbild ist > sehr schlecht. Was ist das Problem? Hm, für mich sicht es so aus als ob der Fernseher den SYNC- Impuls nicht bekommt und damit den Anfang des Bildes nicht erkennen kann. Ich würde mal schauen, ob da nicht ggf. ein Fehler im Layout ist. Bei den Scart- Bildern in der DOKU sollte man unbedingt darauf achten, das die Bilder davon ausgehen das man sich ein Kabel löten will um den 9 poligen Ausgang der "Universalplatine" an einen Scart Stecker anzulöten. Wenn man statt dessen eine Buchse auf seiner Platine einbauen möchte, muss man dabei berücksichtigen, das einige Adern im Scart- Kabel "über Kreuz" laufen und dann muss man die an der Buchse dann an anderer Stelle anlöten. Für die richige Belegung haben mir "damals" die Wiki Seiten zum Thema Scart sehr weiter geholfen. Grüße Frank
Lange genug hat es ja gedauert, die aktuelle Version (V1.48) ist ab sofort verfügbar: http://www.jcwolfram.de/downloads/main.php#chipbasic2 - Bugfix bei SPISEL (zumindest im LA scheint es jetzt zu passen) - Bugfix: Cursortasten bei INPUT konnten zum Absturz führen - Die System-Schnittstelle geht jetzt auch wahlweise über 38,4K / USART1 - IRAM-Treiber für Mega1284P (experimentell) Jörg
Hallo Jörg, kann man die hex einfach in den 1284 brennen?
Hallo Patrick, das sollte ohne Probleme möglich sein. Den IRAM12-Treiber habe ich auch damit entwickelt und getestet, wenn auch nicht mit der finalen Version. Jörg
Hallo Jörg , ich kann mit dem 1284 leider keine Programme laden, weder vom d-flash noch aus dem editor, er atmega speichert sie nicht ab weder unter der 1,48 noch einer älteren version (zum Test die 1,43 Aufgespielt) wenn ich im editor ein Programm schreibe bleibt der nach dem speichern der Cursor jn der position, so wie es sein soll aber das Textfeld ist dann leer Hast du eine Idee , woran das liegen kann? Vielen Dank Patrick
Hallo Patrick, erst musste ich auch überlegen, warum das so ist. Letztendlich ist mir dann doch wieder eingefallen, dass beim Mega1284P eine minimale Änderung notwendig ist, die aber zum Mega644(P) inkompatibel ist. Neben einem anderen Include-File für den Mega1284P, welches auch mit dem Mega644(P) funktioniert, müssen in der main.asm die letzten 3 ORG Anweisungen geändert werden:
1 | 0x7800 -> 0xF800 |
2 | 0x7A80 -> 0x7980 |
3 | 0x7B00 -> 0x7A00 |
Dann neu übersetzen und es müsste gehen. Jörg
Hallo Jörg,danke dachte schon der neue ATmega wäre kaputt leider klappt das kompilieren nicht unter Windows ,bringst du evtl. noch eine passende HEX für den mega1284 raus, das wäre echt super weil der Computer macht echt viel Spass! nochmals vielen Dank! gruss Patrick
Ich habe jetzt eine neue Version (v1.49) hochgeladen, bei der auch ein Binary für den Mega1284P mit dabei ist. Fuses sind die gleichen wie beim Mega644(P). Zusätzlich gibt es zwei neue Befehle für Textlänge bestimmen (TLEN), rudimentäre Suche in Texten (TFIND) und einen Bugfix bei CTEXT (hier wurden teilweise zuviele Bytes in das Array kopiert) http://www.jcwolfram.de/projekte/avr/chipbasic2/main.php Jörg
Frank Zoll schrieb: > Hm, für mich sicht es so aus als ob der Fernseher den SYNC- Impuls nicht > bekommt und damit den Anfang des Bildes nicht erkennen kann. Ich würde > mal schauen, ob da nicht ggf. ein Fehler im Layout ist. > > Bei den Scart- Bildern in der DOKU sollte man unbedingt darauf achten, > das die Bilder davon ausgehen das man sich ein Kabel löten will um den 9 > poligen Ausgang der "Universalplatine" an einen Scart Stecker anzulöten. > > Wenn man statt dessen eine Buchse auf seiner Platine einbauen möchte, > muss man dabei berücksichtigen, das einige Adern im Scart- Kabel "über > Kreuz" laufen und dann muss man die an der Buchse dann an anderer Stelle > anlöten. Für die richige Belegung haben mir "damals" die Wiki Seiten zum > Thema Scart sehr weiter geholfen. hallo, es funktioniert immer noch nicht. Zuerst müssen Sie sagen, dass die 180r mit Pin 18 verbunden werden, aber es ist Pin 16, 18 nicht. Zweiten, zwei der Farbstifte müssen getauscht werden. whe ich tauschen sie die richtigen Farben. Aber noch kein Sync. Wie kann kein Sync getan werden? es gibt keine Sync Pins in den Scart-Anschluss.
sv3ora schrieb: > > hallo, es funktioniert immer noch nicht. Zuerst müssen Sie sagen, dass > die 180r mit Pin 18 verbunden werden, aber es ist Pin 16, 18 nicht. > Zweiten, zwei der Farbstifte müssen getauscht werden. whe ich tauschen > sie die richtigen Farben. Aber noch kein Sync. > Wie kann kein Sync getan werden? es gibt keine Sync Pins in den > Scart-Anschluss. sv3ora schrieb: > Frank Zoll schrieb: >> Hm, für mich sicht es so aus als ob der Fernseher den SYNC- Impuls nicht >> bekommt und damit den Anfang des Bildes nicht erkennen kann. Ich würde >> mal schauen, ob da nicht ggf. ein Fehler im Layout ist. >> >> Bei den Scart- Bildern in der DOKU sollte man unbedingt darauf achten, >> das die Bilder davon ausgehen das man sich ein Kabel löten will um den 9 >> poligen Ausgang der "Universalplatine" an einen Scart Stecker anzulöten. >> >> Wenn man statt dessen eine Buchse auf seiner Platine einbauen möchte, >> muss man dabei berücksichtigen, das einige Adern im Scart- Kabel "über >> Kreuz" laufen und dann muss man die an der Buchse dann an anderer Stelle >> anlöten. Für die richige Belegung haben mir "damals" die Wiki Seiten zum >> Thema Scart sehr weiter geholfen. > > hallo, es funktioniert immer noch nicht. Zuerst müssen Sie sagen, dass > die 180r mit Pin 18 verbunden werden, aber es ist Pin 16, 18 nicht. > Zweiten, zwei der Farbstifte müssen getauscht werden. whe ich tauschen > sie die richtigen Farben. Aber noch kein Sync. > Wie kann kein Sync getan werden? es gibt keine Sync Pins in den > Scart-Anschluss. Ich überprüfte die hsync VSync r g b-Signale auf einem Oszilloskop, scheinen sie von einem ersten Blick in Ordnung. aber wie wird das RGB synchronisiert, wenn kein Sync-Signal wird durch sie hindurch an den Fernseher?
Das Sync kommt über das Composite Video Signal an Pin 20 der Scart Buchse. Dort muss das normale (s/w) BAS Signal ankommen, dazu muss J2 offen sein (CSYNC). VSYNC wird bei Scart und BAS nicht gebraucht, nur beim TFT. Das BAS-Signal von Pin 20 der (Scart) kann man mittels Cinch-Stecker am Fernseher testen. Nur RGB zum Scart zu führen, reicht nicht aus. Jörg
Ja Stift 20 verbunden und ich kann das BAS-Signal (B & W) im Fernsehen von diesem Stift zu sehen. Jedoch kann das Farbvideosignal nicht stabilisieren. Ich habe dies auf 2 Röhrenfernseher und 2 LCD-Fernseher getestet. Die LCD-Fernseher nicht jedes Bild an allen zu zeigen! Ich weiß nicht, was falsch ist. Hat jemand versucht, den Computer ohne die Leiterplatte zu bauen, wie ich es tat? Nachdem durch das Fehlen der Farbe enttäuscht, bin ich den Aufbau einer minimalistischen Version der Computer, nur mit B & W. Diese Version hat einen eingebetteten Programmierer und ein Null-Modem-Verbindung, also kann es so programmiert werden und laden die Programme ohne spezielle Kabel. Nur die notwendigen Komponenten sind enthalten. Es ist sehr schwer, mich auf Deutsch zu schreiben, über Google zu übersetzen ...
Halloe. Ich habe mitlerweile erfolgreich eine eigene Platine erstellt und dabei keine Probleme mit dem Sync oder den Farben. Ich habe hier mal meinen aktuellen Entwicklungsstand als ZIP- File drann gehängt. Wobei ich von den 3 Platinen an denen ich arbeite nur die Hauptplatine angehängt habe. Auf den Fotos sieht man noch die SPI I2C RS232 Erweiterungsplantine. An dieser debugge ich noch, da ich da mit der SPI- Selekt- Logik probleme habe. (p.s. Konnte die aktuelle Version der Firmware aus Zeitgünden noch nicht testen...). Von Links kommt das Kabel von der Netzteilplatine rein, welche ich für dieses Projekt ebenfalls selbst erstellt habe. Ich habe das ganze mit KiCad entwickelt und dann mal beim Chinaman je 10 Platinen in Auftrag gegeben. Bisher habe ich nur einen Satz platinen wirklich bestückt. Ich bin noch dabei alle Funktionen durchzutesten. Aber der Scrat- Anschluss an dem hier interesse besteht, funktioniert bei mir Problemlos mit 2 verschiedenen Fernsehern. Für die, die kein KiCad installieren möchten, habe ich den entscheidenen Ausschnitt aus dem Schaltplan als JPG extrahiert. Wie man sieht habe ich das Composite- Signal nicht auf Pin 20 sondern auf Pin 19 der Buchse gebracht. Auch das ist beim Scart- Kabel über Kreuz und ich hab lange rumgesucht bei meinem ersten Verauch um das raus zu bekommen :-) Dachte immer, ich hätte bei meiner ersten, noch selbst geätzten Platine irgendwo einen anderen Bug... Hoffe ich konnte helfen. Grüße Frank
:
Bearbeitet durch User
Haben Sie bemerkt, dass die Scart-Schaltplan in Jörgs Website ist falsch? zwei der Farben müssen getauscht werden. Also das schematische funktionierte gut für Sie? Ich muss Kuppel haben einige Fehler auf mir, denn ich kann es nicht laufen Farbe auf den Scart.
Ich habe noch mal nachgeschaut, im Schaltplan "Uni auf Scart" sind wirklich Rot und Grün vertauscht. Das werde ich in den nächsten Tagen korrigieren. Ursache dafür ist, dass ich den Uni-Anschluss damals erst anders geplant hatte. Der Schaltplan mit Scart direkt, den wohl die meisten Nachbauer benutzen, hat diesen Fehler nicht. Läuft der Scart-Anschluss mit dem BAS-Signal stabil in S/W (Ohne Austast-Signal an Stift 16 des Scart)? Jörg
Wenn ich richtig verstehe Ihre Frage (Google Translate), Die B & W-Signal funktioniert ok durch den Scart-Anschluss. Es ist nur das Farbsignal, das nicht funktioniert (vertikal und horizontal sync Verlust). Wenn ich einen RGB zu Composite-Video-Chip von außen (wie der AD724), dann färben Composite-Video kommt aus ok. Aber die AD724 kommt RGB als auch H-Sync und V-Sync-Signale als Eingabe. Es scheint irgendwie, dass es ein Problem mit dem Fernseher, um die H-Sync und V-Sync-Signale auf den Scart-Version ohne den AD724 zu erkennen.
Zu blöd das es den Source nicht in C gibt :(((((((
Es gab seinerzeit mindestens 2 Leute die sich daran versucht haben, ChipBasic nach C zu portieren. Aber wahrscheinlich sind sie daran gescheitert, würde mich auch nicht wundern. Es fängt schon damit an, dass ich bestimmte Register als Konstanten benutze (const_0,const_1) oder aus Geschwindigkeitsgründen für die Videoausgabe reserviere (vline_l/vline_h). Außerdem wimmelt es von Stack-Manipulationen, um Codegröße zu sparen. Ohne diese und andere "Tricks" würde das Ganze auch in ASM nicht in das Flash passen. Ich stecke jetzt nicht soweit drin, aber ob der Compiler erkennt, dass an anderer Stelle die Register in der gleichen Reihenfolge vom Stack geholt werden und bei zeitunkritischen Stellen einfach dorthin gesprungen wird anstelle dieselbe POP-Orgie wieder zu veranstalten. Auch beim "Nachfolgerprojekt" (mit anderem Controller) bin ich nach einem kurzen Ausflug nach C (das nutze ich praktisch nur auf dem PC) wieder zu ASM zurückgekehrt. Allerdings wird es da Systemschnittstellen geben, über die man Anwendungen problemlos auch in C schreiben kann. Jörg
Hi Jörg, ich kann da echt nur den Hut vor ziehen! In C würde das mit Sicherheit nicht in den µC passen! Aber ich finde es schade das ich den ASM Code nicht so gut lesen kann wie eben C Code... Es hapert ja wie gesagt schon an den Farben! Beispiel 1: Ich habe die Zeilen im Editor blau gemacht. Der Hintergrund ist aber trotzdem schwarz. Und zwar so, dass zwischen den Blauen Zeilen im Editor immer noch schwarze Striche zu erkennen sind. Blöd, wenn man alles blau haben will, man aber nicht die Farbe des Hintegrund findet. Beispiel 2: ich finde nirgends die Farbinformationen der Leiste mit den Funktionstasten (EXIT, LOAD, SAVE, etc.)
Ähm, wie verhält sich das eigentlich mit dem Bibliotheken? Wenn ich jetzt den Tile/Sprite nutzen will, sagt er mir, die Bibliothek ist nicht vorhanden! Wie geht denn das?
Hallo Dominik, 1. Während der Zeilenzwischenräume (linien 10 und 11) wird kein Video ausgegeben, daher beliben die Zwischenräume schwarz. Um das zu ändern, müsste man das Video-out an der richtigen Position auf blau schalten und dann auch wieder an der richtigen Position am Zeilenende auf schwarz. 2. Die Farben für die Menüs sind in libmio/library.asm ab dem Label libmio_menu_at fest codiert. 3. Viedotreiber funktionieren generell nur auf Programmplatz 8, da die Einsprungadressen fix sind. Um den Tilemode zu nutzen, muß *tilemode.bin* an Programmplatz 8 geladen werden. Dann sollte es auch klappen. Jörg
Hi Jörg, danke schön! Das mit den Farben hab ich jetzt gefunden! Jetzt hab ich aber noch andere Grundsatzfragen zum Thema asm: 1. Farben Woran sehe ich, welche Farbe 0x80 das ist? oder das: 0x2e 2. Api In der Doku sind die Api beschrieben. Wie werden diese denn benutzt? 3. Seriell Kann ich, den CB Computer an einen PC anklemmen und ohne TV mit diesem kommunizieren? In der Doku steht was mit dem seriellen Lader... press space to start... etc. wo erscheint das dann?
Hallo Dominik, 1. Da die RGB(I)-Ausgänge an PORTC.4-PORTC.7 liegen, haben die Bits folgende Bedeutung:
1 | 7 Hintergrund grün |
2 | 6 Hintergrund rot |
3 | 5 Hintergrund blau |
4 | 4 Hintergrund Intensität (nur mit 16-Farb-Erweiterung) |
5 | 3 Vordergrund grün |
6 | 2 Vordergrund rot |
7 | 1 Vordergrund blau |
8 | 0 Vordergrund Intensität (nur mit 16-Farb-Erweiterung) |
0x80 ist demnach schwarz auf grün und 0x2e weiß auf rot (beide Male ohne Intensity) 2. Man muss halt die api.inc oder api_macros.inc mit includen. Steht auch mit kleinem Beispiel in der Dokumentation (Interna). Wichtig dabei ist auch, dass der Header (Icon, Flags) richtig konfiguriert ist. 3. Das erscheint dann auf dem PC, falls Du dort gerade ein Terminalprogramm am Laufen hast.
Hallo Jörg, danke für die Info! Ja mit dem seriellen lader... das klappt irgendwie nicht, oder ich habe irgendwas vergessen. Chipbasic an die serielle, Terminal am PC einrichten, Chipbasic starten... nix passiert! Muss ich den seriellen Lader auf Autostart stellen? ich bastel gerade hardwaremäßig ein wenig an einem Tongenerator bzw. Synthesizer, der hinter der Soundausgabe liegt. ich möchte versuchen den Soundkanal etwas polyphoner klingen zu lassen und verzerrter. Erste Versuche zeigten das ich auf dem richtigen weg bin :)
So, ich werde jetzt mal ein Spiel programmieren und das wie folgt machen: Titel, Sound, Grafik, Levels, etc. auslagern auf verschiedene Programmplätze, dann ins Dataflash speichern. Auf P1 einen Gameloader programmieren der das Spiel, bzw. seine Elemente auf die verschiedenen Plätze legt. Dadurch ist das ganze Spiel auf dem DF und es ist möglich viiiiel mehr als 95 Zeilen zu nutzen. Jörg: Kann man noch was am Sound machen? Vlt 2 stimmig?
So ich nochmal... Multisync ist ja nicht gleich Multisync oder? Gibt es überhaupt einen TFT Monitor, und ich meine nicht so ein Einbaudisplay, das die Zeilenfrequenz des CB2 kann????
Huhu? Hier ist ja nix mehr los :(( Frage: ich bräuchte arrays, und zwar wie folgt: array1 = "Test" array2 = "Test2" ... ? @2,2;array1 Wie geeeeeeht das??? :( Blöd ist, ich kann kein Array wie folgt definieren: array(1)$=".." mache ich es mit Data 0,"Test",0 Und schreibe Ar(0) dann wird mir nur das "T" ausgegeben. Ich kann das Array aber nicht in eine Schleife setzen, weil mit irgendwann die variablen ausgehen bei mehreren Arrays... Hilfe :(
Da das Projekt von mir kaum noch aktiv weiterentwickelt wird, schaue ich auch nur von Zeit zu Zeit hier rein. 1. Der Lader muß nur da sein, allerdings habe ich ihn mit den 38,4K an der zweiten seriellen Schnittstelle nie getestet. Kannst Du Listings aus dem Editor über Deine serielle Schnittstelle senden? 2. Eine zweite Stimme wird wahrscheinlich am Platz im Flash und an der verfügbaren Zeit in der horizontalen Austastlücke scheitern. 3. Es gibt das NEC-Display (NL3224AC35-01, mittlerweise relativ teuer), eventuell gehen die Displays aus elektronischen Rückfahrspiegeln. 4. Du kannst ja an den Anfang des Arrays eine Tabelle legen, in der die Positionen der "Teilarrays" hinterlegt sind. Ausgabe geht nur in einer Loop, da es kein explizites Stringhandling gibt. So in der Art (ohne Gewähr):
1 | 50 A = AR(A+1024) |
2 | 51 IF AR(A)<32 THEN RETURN |
3 | 52 ? %AR(A);: A=A+1:GOTO 51 |
Jörg
Hallo Jörg, danke für deine Antwort. Puh... das wird hart! Es geht sich um die Portierung von "Manager" eines Bundesligamanagers vom C64. Da liegen natürlich alle Mannschaften als Array vor die dann abgerufen werden um die Spielpaarungen zu generieren. Ich glaube das wird für Chipbasic zu kompliziert und komplex... schade :( Man müsste wirklich irgendwie sowas anlegen können wie beim C64 a la DATA und READ und per Read den String auslesen bzw. die Konstanten... schade! Ich hab mir auch schon überlegt anstatt das Menü zu Beginn einen Bildschirm a la C64 darzustellen, sprich direkt den Editor. Aber ohne zeilennummern, die müsste man selber eintragen. Gespeichert wird dann "per hand" auf die 8 "unsichtbaren" Plätze... etc etc etc. Nur wäre das wieder zu umfangreich umzubauen! Nochwas: Wovon hängt die Auflösung im textmodus ab? Könnte man nicht auf 40 Zeichen pro Zeile kommen?
Eine andere Möglichkeit wäre, das Array vom Anfang her auf 0-bytes zu durchsuchen, ist halt etwas langsamer. Und natürlich gehen auch 50 oder 60 Zeichen/Zeile, allerdings dann nur noch monochrom (siehe Video-Treiber). Es sei denn, Du findest eine effizientere Methode zum Pixel ausgeben oder änderst das Timing und übertaktest den Controller auf 25MHz. Für einen "Nachfolger" hatte ich eine Zwischenplatine mit CPLD und einen Mega1284P verwendet, das Projekt habe ich aber inzwischen zugunsten eines neuen Konzepts mit dem S12XE aufgegeben. Jörg
Hi Jörg, mal zum Verständnis: Hätte ich 40 Zeichen pro Zeile, dann würde die effektive Zeile im Editor auch länger oder? Dem Parser ist es doch egal wie lang die Zeile ist oder? Wo finde ich die Zeilenanzahl? Also es wird wohl kaum im Source stehen: Zeilen = 32 :-))) Das heißt, wenn ich den µC übertakte, reicht das schon aus? Sorry wenn ich so nerve aber ich seh da im Moment ne menge potenzial und leider kann ich nicht so gut asm.
Naja, ganz so einfach ist es leider nicht. Denn beim Speichern im Editor werden die Zeilen schon "vorcompiliert", d.h. Schlüsselworte zu Token und auch Zahlen werden schon in Binärform gespeichert. Hauptgrund ist natürlich die Ausführungsgeschwindigkeit. Beim Zurücklesen in den Editor wird das Ganze Zeile für Zeile wieder in Text gewandelt. Die Konvertierungen erfolgen zwischen zwei 40 Byte großen Puffern, wobei aber nur jeweils 32 Bytes genutzt werden (können). Der gleiche Parser übernimmt aber auch teilweise das Auswerten von INPUT. Wenn Du den Controller übertakten möchtest, um mehr Zeichen je Zeile zu bekommen, reicht es natürlich nicht, nur einen Meg1284P und einen anderen Quarz zu nehmen. - Video-Timing muss angepasst werden (libmio/definitions.asm) - Die Videoausgaberoutinen müssen angepasst werden - Das Video-RAM muß vergrößert werden (Adressen verschieben sich) - Die Runtime ist auf 32 Bytes lange Zeilen ausgelegt Mehr Zeichen bedeuten entweder weniger Zeilen oder längere Programme, was dann natürlich auch Änderungen in weiteren Teilen (Load/Save) nach sich zieht. Außerdem wird hinterher keiner der Videotreiber mehr richtig funktionieren, es sei denn, man passt die auch alle an. Das ist alles irgendwie machbar. Aber schon freie Zeilennummer-Eingabe ist mit dem von mir entwickelten Konzept unverträglich. Denn Zeilennummern existieren nicht als solche, sondern geben nur an, die wievielte Zeile gemeint ist. Ein GOTO 7 bedeutet halt nur, dass die Programmabarbeitung ab dem 224.Byte des Programmes fortgesetzt wird. Denn eine leere Zeile wird trotzdem als 32 Bytes mit Zeilenende-Token im ersten Byte gespeichert. Von daher wirst Du Dein Ziel auch mit ASM-Kenntnissen ohne ein grundsätzliches Re-Design nur sehr schwer erreichen. Jörg
Also kurz gesagt: Ich will aus einem Fiat Panda einen BMW X5 bauen und das am besten ohne das Chassis zu verändern? Ok, habs verstanden... :) Schade! Da sind halt ein paar Sachen die nicht so einfach zu ändern sind. Leider. Mit dem Array ist schon blöd.. Wollte einen Fußballmanager programmiern :( Auch blöd ist: Wenn ich Linien zeichne, welche unterschiedliche Farben haben sollen, diese sich aber berühren oder nur dicht beieinander liegen, so vermischen sich die Farben. Ich glaube das liegt eher an der Blockgröße 6x8 die bestehen bleibt selbst wenn ich per PLOT ein Pixel setze oder? Also:
1 | 10 PLOT 2,2,1 |
2 | 20 PLOT 2,3,2 |
beide Pixel werden rot anstatt einer blau und einer rot...
:
Bearbeitet durch User
hallo, Wenn Sie die Schaltpläne und das PCB in dieser Seite sehen http://www.jcwolfram.de/projekte/avr/chipbasic2/hard.php sie stimmen nicht überein. Bitte auf die 15, 16, 17, 18 Pins des Mikrocontrollers beziehen. Die Sende- und Empfangssignale nicht übereinstimmen die Leiterplatte. Welcher Weg ist der richtige, dem Schaltplan oder die Leiterplatte?
Es gibt jetzt eine neue Version (1.50), hauptsächlich gibt es jetzt wieder die 1200 Bps als Baudrate, daneben noch einen Bugfix bei den Screenshots. Aus Platzgründen musste dafür die Prüfsummenberechnung auf der Konfigurationsseite entfallen. Jörg - Das mit den Pixeln ist normal bei Modus 0 und 1, wenn jedes Pixel seine eigene Farbe haben soll, gehen nur die Videomodi 2 und 3. Denn wenn ein Attribut-Byte für mehrere Pixel zusändig ist (2x2 Pseudografikpixel im Modus 0 bzw. 8x8 Pixel im Modus 1), bleibt ja gar nichts anderes möglich.
Hallo Jörg ist das technisch möglich über ein ladbares Binär Programm ein Update der chipbasic2 Firmware über serial zu flashen,das man nicht immer an den isp rann muss(so wie der damalige Bootloader)? Vielen Dank Patrick
Hallo Patrick, Ja, das geht. Und zwar über die API-Funktion api_wpage. Die RAM-Adresse ist nicht mehr in in der API-Beschreibung im Y-Register, sondern liegt fest bei Array-zelle 512. Je Aufruf werden 256 Bytes ab dem Z-Register gelöscht und beschrieben. Während dieser Zeit werden keine Interrupts bedient. Zu beachten ist dabei, dass es gegenüber dem alten Bootloader damit möglich ist, das System komplett zu "zerschießen". Jörg
Ich habe mal eine frage zu der FBAS Schaltung. Ich habe sie jetzt mittlerweile zum 2. Mal aufgebaut und ich bekomme einfach kein signal. Der fernseher erkennt zwar etwas und schaltet um auf schwarz aber es kommt kein bild. Wenn ichnkurioser weise die masseverbindung trenne dann erkenne ich ein flackerndes buntes bild. Mehr nicht. Wo kann hier der fehler sein? IC kaputt? Quarz kaputt? Am Scope erkenne ich zwar ein signal aber es sieht alles andere als ein fbas signal aus. Hiiiilfe
Ich muss dazu sagen, dass ich das ganze per scart adapter an den fernseher angeschlossen habe. Kann das fbas so gar nicht funktionieren? Bas jedoch schon?
Hallo Dominik, es wird kein FBAS-Sinal erzeugt, sondern BAS+RGB. Ich würde folgende Vorgehensweise vorschlagen: Wenn Du Pin16 des Scart-Steckers nicht beschaltest (oder den 180 Ohm Widerstand entfernst), solltes Du ein Graustufenbild sehen. Wenn nicht, Aufbau kontrollieren, insbesondere die verschiedenen Masseanschlüsse. Wenn das Graustufenbild OK ist, Verbindung zu Pin16 herstellen. Wenn die RGB-Signale richtig verdrahtet sind, sollte jetzt ein Farbbild auf dem TV zu sehen sein. Bei allen mir bekannten TVs muss man exlizit auf AV umschalten, damit man ein Farbbild bekommt. Da liegt daran, dass die Spannung für die AV-Umschaltung fehlt. Bei manchen schaltet die RGB-Umschaltung auch ohne AV um, dann entstehen oft irgendwelche "Flackereffekte". Jörg
Hallo Jörg, schön das du auch noch da bist!! :) Du hast mich falsch verstanden. Ich habe mir die FBAS Schaltung nachgebaut mit dem MC1377 IC. Die wurde ja hier von Ralf - Rainer Ratke vorgestellt. Zuerst habe ich den Computer per BAS an den fernseher gesteckt. Also: BAS -> Cinch/Scart Adapter -> Fernseher. Funktioniert. Ich habe ein s/w Bild. Jetzt habe ich das FBAS Signal aus der Wandlerschaltung genauso angeklemmt. Der TV erkennt zwar etwas, schaltet auf schwarz aber es kommt kein Bild!!! Gruß Dominik
Sooo.... habe annäherend das gleiche problem wie Alex ganz oben gehabt. Schwarzer linker rand auf dem bild. Nachdem ich die gemeinsame masse getrennt habe. Anscheinend benötigt die fbas schaltung eine seperate Versorgung. Na ganz toll. Dabei wollte ich sie mit auf dem Board haben. Hätte nicjt gedacht, dass das sl kompliziert wird. Schade das der Ralf sich hier nicht mehr meldet.
Hi Jörg, ich bin ja immer noch am überlegen ob man nicht irgendwie ein GLCD einbinden kann als TV Ersatz. Was wäre der Computer ein Hammer, wenn er autark laufen würde und ich den Editor auf einem GLCD laufen lassen könnte. Würde das theoretisch gehen? Da ja ein GLCD eben als solches fungiert und eigentlich keine Strings verarbeiten kann oder würde es eher mit einem LCD funktionieren? Gruß Dominik
Moin, habe gestern spaßeshalber mal den Computer per YPbPr an den TV geklemmt. Also Bild war zu sehen! Sehr scharf sogar! Aber dennoch in s/w und es flackerte! Könnte man da was am Timing machen Jörg? ich suche nach Lösungen für Farbdarstellung ohne Scart nutzen zu müssen. Habe jetzt mittlerweile meinen 5. oder 6. Computer aufgebaut ohne das es langweilig wird. Diesmal mit Onboard-Sound! Genial!
Hallo Dominik, als LCD hatte ich damals das NEC NL3224AC35 getestet, das braucht einfach RGB und Sync. Eine spätere (nie veröffentlichte) Variante des BASIC-Computers mit Daughterboard (Mega1284P + CPLD) konnte auch u.a. 320x240 Displays mit 8 Graustufen ansteuern, das Projekt hatte ich aber in einem frühen Stadium zugunsten des AX81 aufgegeben. Wenn das Bild flackert und einen sehr starken Kontrast zeigt, kannst Du probieren, einen 75 Ohm Widerstand zwischen Videosignal und Masse zu schalten. Am Timing kann man schon noch einiges machen, insbesondere lässt es sich so verstellen, dass hinterher gar nicht mehr geht ;-) Aber hier würde ich auch nicht zuerst den Fehler suchen, denn selbst mit meinem simplen CPLD-FBAS-Encoder hat das mit zwei verschiedenen TVs ohne Probleme geklappt. Jörg
Hi Jörg, ja die Frage ist ob meine FBAS Schaltung eine getrennte Spannungsversorgung braucht. Denn erst wenn ich die Masseverbindung auftrenne sehe ich immerhin ein Bild. Das ist komisch! Solange aber keiner der Verantwortlichen der FBAS Schaltung hier antwortet sehe ich keine Chance auf eine Lösung :) Zum Thema flacken: ich habe nur rot grün und blau an den TV angeschlossen als YPbPr Signal. Ohne Videosignal, das wird nicht gebraucht. Das funktionierte!! Bis eben auf das flacken und s/w. Und wie sieht es mit einem furznormalen GLCD aus a la DIP128-6 mit dem beliebten KS controller? ich meine jetzt nicht die Verwendund als handheld, sondern die Darstellung des Editors auf diesem GLCD.
> ich habe nur rot grün und blau an den TV > angeschlossen als YPbPr Signal. Ohne Videosignal ... Und woher soll dann die Synchronisation kommen? Irgendwelches Geflacker auf dem Bildschirm würde ich jetzt nicht unbedingt mit "funktioniert" betiteln. Der Editor hat 23 Zeilen zu je 35 Zeichen. Wie soll das mit einem 128x64 LCD gehen? Mit Braille-Schrift um 90 Grad gedreht käme man auf theoretische 21 Zeilen zu je 32 Zeichen, lesbar ist das aber nicht ;-) Jörg
Bei YPbPr brauchst du kein extra Signal mehr! Es reichen drei Leitungen! Aber es war eh nur zum Spaß gedacht. Ich glaube dafür müsste man das Timing in der Software ändern! Jedenfalls war die Bildschärfe um einiges besser!! Ja ok, Thema GLCD kann man abhaken :) Naja man hätte die Editorzeilen ja scrollen können! :) Zumal du dann auch keine probleme mehr mit den ganzen TV Timing Sachen hast!
Hi Jörg, Hab ne frage zum ADC. Wenn ich das Oszi aufrufe zeigt es mir standardmäßig 5volt an obwohl nix anliegt. Port A liegt aber die ganze zeit auf high. Warum? Schreibe ich bei programmbeginn ein out 0,0 dahin dann beginnt liegt der port auf low und die linie liegt bei 0 volt. Aber: lege ich jetzt 2,56 volt an dann zeigt er mir 5 volt an. Wie bekomme ich es hin, dass bei angelegten 2.56 volt auch nur ein adc wert von 512 angezeigt wird und nicht 1023???
Hallo Jörg ,gibt es eine Möglichkeit die xmem 64 Erweiterung mit Standard TTL ICS Aufzubauen, bzw hast du evtl einen Schaltplan? Leider komm ich an den xillinx Baustein nicht ran geschweige hab ich die Möglichkeit die Platine zu ätzen Vielen Dank Gruß Patrick
@Dominik welchen Controller verwendest Du und funktionert die Anzeige zwischen 0 und 2,56V richtig? Evtl. stimmt die eingestellte Referenz nicht, hab im Moment keinen "freien" CB2, um das zu verifizieren. Vllt. komme ich im Laufe der Woche dazu. @Patrick Möglich wäre es schon, dafür müsste man den VHDL-Code in eine Schaltung "übersetzen". Eine Schaltung an sich gibt es nicht, da die Logik in VHDL geschrieben ist. Jörg
Hallo Jörg, das wäre super!! Ich habe den 644er. Mich wundert es halt, dass der Port A ständig auf high steht und ich erst mit dem DIR Befehl ihn auf Eingang setzen muss bevor ich das Oszi verwenden kann. zwischen 0 und 2,56 V habe ich noch nicht getestet.
Hi Jörg, super Projekt! Wäre es möglich das man den Mega644 durch einen Mega2560 ersetzt? Ich würde mir mal ne Platine zusammen basteln!.
Danke Jörg dann werde ich mal versuchen den Code umzusetzen, Dann hab ich noch eine Frage ,wie kann ich eine RTC am besten einbinden,hab noch eine pcf8583 Aus einen alten Videorecorder ,mit icomm hat das leider nicht funktioniert Gruß Patrick
Also Jörg... 2.56 volt am adc entsprechen 1023. Das ist in meinem fall mies. Hab einen temp sensor angeklemmt und 12 volt spannungsüberwachung per spannungsteiler sowie ein poti. Adc0-2 Wie bekomme ich nun 5 volt referenzspannung anstelle der 2.56 momentan??? Hiiiiilfe
Kommando zurück! Es funktioniert!! ich musste die Referenz per ADC($140) auf AVCC umschalten! Verdammt bin ich doof! ES GEEEEEHT!!!! :)
Nabend, so, ich habe immer noch Probleme mit der blöden FBAS Schaltung. Immer noch kein Bild! Kann denn hier niemand helfen???? Wo ist denn der Entwickler der Schaltung? Muss man den CSYNC/HSYNC Jumper schließen?? Hiiilfe... @Jörg Hast du nicht noch zufällig eine FBAS Schaltung von dir rumfliegen??
Wenn Du Composite Sync brauchst, muss J2 offen sein, bei HSYNC geschlossen. Bei CSYNC enthält das Saignal ein Gemisch aus horizontalem und vertikalem Sync. An eigenen Projekten kann ich nur das Folgende anzubieten, habe aber selbst seit Jahren nichts mehr damit gemacht... http://www.jcwolfram.de/projekte/vhdl/fbas_enc/main.php Jörg
Mal ne andere Frage Jörg... Ich will 12 volt messen. Bzw. 10-15 volt und habe einen spannungsteiler genommen. 20k und 3,3k. Normalerweise würde ich so rechnen: ADCWert × 5 / 1024 × spannungsteilerverhältnis Leider kann der computer ja keine kommazahlen. Nutze ich aber das format !22 oder !44 oder was auch immer, dann kommt nicht der richtige wert raus. Ich müsste meine zahlen so stark ändern das zwar ein annähernd richtiges ergebnis kommt, der wert sicj aber nicht im verhältnis zur soannung ändert. Wenn ich folgendes eingebe: ADCWert × 5 / 102 × 71 / 10 Dann wird mir ca. 12 volt angezeigt aber wie gesagt der wert ändert sich kaum. Wie kann ich das vernünftig machen???
Für solche Aufgaben gibt es den SCALE Befehl, der rechnet intern mit 32 Bit.
1 | SCALE Variable,Y0,Y1,X0,X,X1 |
Bei 3,3K und 20K liegen bei 15 Volt Eingangsspannung 2,12V am ADC-Pin an. Bei 2,56V Referenzspannung und 10Bit sollte das einen ADC-Wert von 850 ergeben. Das Ganze könnte dann so aussehen
1 | M=ADC(0) |
2 | SCALE V,0,150,0,M,850 |
3 | PRINT !$16;V;"Volt" |
Jörg
Moin Jörg, Ah ok danke... Ja ich hab den ADMUX aus 5 volt referenz eingestellt. Ich rechne in meinen C Projekten immer mit 5 volt ref. Was mir halt wichtig ist wäre eine dezimale Ausgabe: 12,4 volt Zum beispiel. Ich teste das mal.
Hi Jörg, funktioniert!! Hatte mich zwar vertan, Spannungsteiler ist 22k und 3,3k aber egal... das wäre dann anstatt 850, 401 Auf jeden Fall funktioniert es! Danke. hab an SCALE gar nicht gedacht!
Mahlzeit, ich möchte Euch mal den Stand der Dinge zeigen. Ich habe etwas an der Hardware und der Software geschraubt. Bin aber noch lange nicht fertig. Kompakt und modular aufgebaut lässt sich der Computer perfekt im mobilen Einsatz als Regel- und Steuercomputer einsetzen. Hardwaremäßig wurden alle Schnittstellen nach außen geführt und sind direkt erreichbar. Ein LED Treiber sowie ein LED Baustein stellen die parallele Schnittstelle visuell dar. Der Sound lässt sich per Jumper auf Intern oder Extern stellen. Einen Port Expander sowie eine Relaiskarte habe ich aufgebaut und erfolgreich getestet. Softwaremäßig habe ich die Farben für den Schwarz/Weiß Betrieb angepasst und die Menüs etwas überarbeitet, da es ohne Farben zu überladen und unübersichtlich wirkt. Anstelle bunter Felder für die Funktionstasten gibts nun deutliche Bezeichnungen wie "F1=Edit". Gruß Dominik
@Jörg Nur mit dem seriellen Loader funktioniert bei mir irgendwie nicht. Ich kann Programme über die serielle empfangen und senden aber der Loader meldet sich jedenfalls nicht.
och, hier ist ja nichts mehr los! Jörg, lebst du noch? So langsam wird es eng, was die Beschaffung der dataflash angeht. Mittlerweile gibt es dir 81 und 41er nicht mehr. Und die erhältlichen liefen ja nicht erfolgreich mit dem Computer. Was kann man jetzt tun?
Ich hatte das Glück mein Dataflash aus einer simens gigaset-basisstation mit Anrufbeantworter ausschlachten zu können. Vieleicht gibt es da noch möglichkeiten. Patrick
Die Frage ist ob die neuen Typen unterstützt werden. Naja wie auch immer. Ich hab ja noch 2 rumfliegen. Ich habe jetzt auch endlich erfolgreich die FBAS Schaltung aufgebaut. Jetzt gibt es Farbe über den Bas Anschluss.
Naja, das Projekt ist mittlerweise 7 Jahre alt. Wenn die neuen Typen nicht funktionieren (hat das jemand ausprobiert) ließe sich das Programm sicher anpassen. Es ist ja Open Source. Wichtig ist auf jeden Fall, dass der AT45DB081E scheinbar nicht mehr 5V-tolerante Eingänge hat. Also braucht man entsprechende Pegelwandlung, z.B. durch Spannungsteiler. Jörg
Hallo Jörg, Schön das du noch da bist. Der C64 ist auch uralt und trotzdem gibts ihn noch. :) Ich werde mir mal einen neuen flashbaustein bestellen und mal schauen was sich machen lässt. Wäre schade wenn es nicht gehen würde. Kurze frage: die color funktion kann ja 2 parameter haben. Die farben wiederholen sich ja sobald man die Zahl 16 überschreitet. Wo ist das festgelegt?
Jetzt habe ich noch ein merkwürdiges Verhalten festgestellt. Ich habe einen 10 pol und eine 6 pol Wannenstecker auf dem Board für die ISP. Auf der 6 Pol sitzt mein MySmart USB AVR Programmer. Auf der 10 pol ist der Dataflash verbunden. Mit einem Flachbandkabel. Der DF wird erkannt, kann aber nicht lesen und schreiben. Das gibt nur Fehler. Klare Sache: Der Programmer muss dafür ab und darf nicht parallel angeschlossen sein. Jetzt wird der DF nicht mehr erkannt. Erst wenn ich ihn direkt auf das Board stecke. Das heißt: Das Kabel ist zu lang! Kann das sein? Ist die ISP/SPI so anfällig bei langen Datenstrecken?
Setze mal den spi Takt runter und schau ob es dann bei der Länge geht Patrick
Nein nicht wirklich. Ich werde mal ein paar filter auf die leitungen bauen. Gute Infos zu den dataflash gibt es in der atmel application note an-4
Man ey... 10 cm kabel am Dataflash und er gibt eine Fehlermeldung aus. Dataflash direkt auf das Board gesteckt und alles funktioniert. Das kann doch nicht wahr sein.
Ich muss dazu sagen, denselben DF hatte ich mal an einem anderen CB2 Computer mit 20cm kabel und es funktionierte. Irgendwie stimmen die Pegel nicht. Hab den Atmega1284 drauf mit der include von AVR und in der main die .org Anweisungen geändert bzw. Die neue main.asm version 1.50 genommen.
So... bräuchte echt mal Hilfe! Ich habe festgestellt, dass aus dem MOSI Pin am Atmega nix rauskommt. Da liegen 0 Volt. Kann ja dann gar nicht funktionieren. Stecke ich einen Atmega644 mit der CB2 Software drauf und messe, dann liegen an allen Pins 5 Volt. Auch an dem MOSI. Versuche ich aber vom Dataflash zu laden, kommt die Fehlermeldung und der Mosi Pin ist wieder bei 0 Volt! Auf meinem 2. CB Board funktioniert es tadellos! Also muss doch irgendwas an der Schaltung verkehrt sein. Ich weiß aber nicht was. Wonach soll ich gucken??
Moin, ich wieder... Also: mit einem kurzen, 5cm Kabel funktioniert es. Bei meinem anderen Basic Computer funktioniert es aber auch mit einem 20cm langen kabel. Das heißt, auf dem jetzigen Board scheinen sich die Pegel irgendwo im Kabel zu verlieren. Sprich beim lesen/schreiben. Warum ist das so? Software ist die Gleiche. Hardware auch. Das flashen vom µC funktioniert ja auch. Irgendwo muss sich eine Spaßbremse versteckt haben. ich weiß aber nicht wo!
So, Kommando zurück! ich habe jetzt soviele Posts geschrieben, dass ich nach jedem nochmal nachgeguckt habe auf meinem Board. Ich hatte eine schlechte Masseverbindung. Die ISP Wannenstecker waren nur an das gehäuse einer der 9 pol Buchsen angeschlossen. Die lagen zwar auch an Masse aber als ich die ISP/SPI dann direkt an die Masse geklemmt habe ging alles wieder! Puh... Schade das hier dennoch so wenig los ist
@Jörg falls du noch da bist: ich würde gerne der SPI eine weitere Geschwindigkeit zuweisen können in der Configpage. Laut asm wird hier glaube ich nur getoggled bei der Auswahl, da ich ja nur 2 Einträge auswählen kann(5MHz und 128kHz). Wie bekomme ich einen weiteren Eintrag rein, der mit ausgewählt werden kann? Was muss ich in der library.asm unter set config for I2C and SPI ändern?
Dazu brauchst Du ein freies Config-Bit (GPIOR1,3 oder GPIOR1,7 sollten gehen). Dann in der library.asm unter libmio_setconf: die SPI abhängig von diesem Bit konfigurieren. Und zum Schluss noch in der configpage.asm die Auswahl mit Tasten und die Ausgabe der gewählten Geschwindigkeit hinzufügen. Das sollte reichen. Jörg
Danke Jörg, so ähnlich habe ich mir das auch schon gedacht. Kann ich denn irgendwie dieses Bit hochzählen bei jedem tastendruck und abhängig vom Wert im Bit die unterschiedlichen SPI Geschwindigkeiten anzeigen lassen? Und wenn ich speicher dann sehe ich welcher Wert gerade das Bit hat und setze dementsprechend die SPI?! Bin noch nicht so asm bewandert.
Hi Jörg, Noch eine Frage: Ich wollte eine zusätzliche Infoseite einbauen. Kopie von infopage.asm. und include dieser datei. Da hat er aber gemeckert wegen den .org Anweisungen. Ich habe dann den inhalt als weitere sprungmarke auf die bestehende infopage eingefügt. Da hat er auch gemeckert. Sind den seiten spezielle größen zugeordnet? Wie ändere ich das, damit ich noch eine seite einfügen kann? Wenn ich die orgs erhöhe dann habe icj probleme mit der tastatur.
Ich habe jetzt das Problem mit dem Dataflash gelöst. Es lag wohl doch nicht an der Masse! Da ich auf dem Board ebenfalls die RGB->FBAS Schaltung drauf habe, welche mit 12 Volt läuft, giong ich von Problemen bei der Spannungsversorgung aus. Auf meinem Board arbeitete erst ein 5V Schaltregler mit 500mA. Aufgefallen ist mir, dass der Dataflash gefunden wurde, wenn ich ein 9 Volt Steckernetzteil mit 600mA nutzte. Nur leider konnte man dann wenig sehen auf dem Monitor, da die FBAS Schaltung ja 12 Volt benötigt. Mit einem 12V Steckernetzteil und 800mA lief dann das Bild wieder aber der Dataflash wurde nicht gefunden. Ich habe dann den Schaltregler gegen einen Linearregler mit 1A ausgetauscht. Das Verhalten wurde besser. Zusätzlich habe ich der Dataflash Spannungsversorgung einen eigenen Schaltregler spendiert und siehe da: Jetzt gibt es keine Kommunikationsprobleme mehr. Selbst mit den geforderten 12V. Ich frage mich natürlich inwiefern der Dataflash nun abhängig ist von einem 9V, 600mA netzteil und einem 12V, 800mA Netzteil, obwohl er seine Spannungsversorgung aus einem 5V regler bezieht. Und ob der nun 500mA kann oder 1A... soviel braucht der Dataflash doch gar nicht. **************** Zum .org Problem: Ich habe testweise das XModem mal rausgeschmissen und dadurch in dem Org Bereich Platz bekommen für ein zusätzliches Menüicon + dazugehöriger Seite. Spaßeshalber habe ich die Benutzeroberfläche mal dem guten alten Windows 2 angepasst :) Im Moment bastel ich noch weiter, sofern meine extrem geringen asm Kentnisse mich lassen! @Jörg Gibt es eine Möglichkeit das externe EEProm ähnlich wie den Dataflash aus dem menü heraus anzusprechen um zu sehen wieviel belegt ist?
Bezüglich SPI Geschwindigkeit ändern... die SPI holt sich ja den Wert vom dritten Bit von r18. ich habe testweise r18 mal raufzählen lassen und konnte so mehrere Geschwindigkeiten anzeigen. Es haben sich aber auch andere Werte in der Config geändert da ja alle über das r18 arbeiten. ich weiß nicht was du mit GPIOR1,3 meinst? Ich habe die Version 1.45 drauf. Für die SPI benötige ich aber kein Bit weil ich ja nicht togglen will sondern mindestens 4 Werte anzeigen lassen will. Theoretisch weiß ich wie es geht. Also in C. Ich würde einfach eine Variable nehmen und die hochzählen lassen. Und davon abhängig ist die SPI Geschwindigkeit. Nur leider habe ich keine Ahnung wie ich das in asm übertragen soll. Welches Register wäre denn dafür frei??
Mit den .org Direktiven werden meistens Tabellen auf durch 256 teilbare Adressen gelegt. Das ist dann meist mit weniger Code und mehr Geschwindigkeit verbunden, da u.U. das Addieren wegfällt. In den Lücken zwischen den Tabellen ist dann der Code drin. Das Ganze ist halt recht voll, in der 1.50er Version sind insgesamt gerade mal 368 Bytes (das sind rund 0,56%) frei. Das ist halt im Laufe der Zeit so "gewachsen". Um neue Funktionen einzubauen muss man alte entfernen oder bezüglich Platz optimieren oder einen größeren Controller nehmen. Auf dem EEPROM gibt es ja keine Dateien, wie soll da die Belegungsanzeige aussehen? Platz dafür wäre wahrscheinlich sowieso keiner. Aber Dich hält niemand davon ab, das in BASIC zu realisieren und auf einen der freien Programmplätze zu legen. So in der Art Videomode 1 + Rechteck + farbige Punkte für Werte <> 0xFF Zum Thema SPI-Konfiguration könntest Du zwei benachbarte Bits aus dem dritten Config-Byte (PCMSK0/tempreg3) verwenden. r18 ist ja nur der temporäre Wert während die Config-Page angezeigt wird, ansonsten ist der Wert über GPIOR0 verfügbar. Allerdings sind hier alle Bits belegt. Das zweite Config-Byte liegt in r19/GPIOR1, hier sind m.W. noch Bit 3 und Bit 7 frei. Bit 0-2 ist die EEPROM-Adresse und Bit 4-6 das gewählte Autostart-Programm. Vom dritten Config-Byte (tempreg3/PCMSK0) ist nur Bit 0 belegt mit der Erweiterung der seriellen Geschwindigkeiten. Jörg
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.