Forum: Projekte & Code AVR-ChipBasic2 - BASIC-Computer mit ATMega 644


von KILO (Gast)


Lesenswert?

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?

von Joerg W. (joergwolfram)


Lesenswert?

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

von KILO (Gast)


Lesenswert?

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!

von Joerg W. (joergwolfram)


Lesenswert?

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

von KILO (Gast)


Lesenswert?

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...

von KILO (Gast)


Angehängte Dateien:

Lesenswert?

So, anbei mal mein "Basic Computer / Spielekonsole"

von KILO (Gast)


Lesenswert?

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!

von Jannis C. (klaxi33)


Lesenswert?

Hallo

Wo kriegt man den AT45DB081D her?

von Patrick (Gast)


Lesenswert?

Hallo Kilo ,kannst du mal ein paar von deinen Listings deiner Retrogames 
posten?
schon mal vielen Dank im Voraus
 mfg Patrick

von KILO (Gast)


Lesenswert?

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

von KILO (Gast)


Lesenswert?

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

von KILO (Gast)


Lesenswert?

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. :)

von Joerg W. (joergwolfram)


Lesenswert?

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

von KILO (Gast)


Lesenswert?

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

von Joerg W. (joergwolfram)


Lesenswert?

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

von Kilo (Gast)


Lesenswert?

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

von KILO (Gast)


Lesenswert?

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??

von KILO (Gast)


Lesenswert?

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??

von Joerg W. (joergwolfram)


Lesenswert?

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

von Kilo (Gast)


Lesenswert?

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!

von Kilo (Gast)


Lesenswert?

geht alles nicht...
weder AVRA, noch AVRASM2 noch AVRASM32...
alle melden Worng Device M644Pdef.inc
und danach kommen zig Fehlermeldungen... ahhhh ich verzweifel!

von Joerg W. (joergwolfram)


Angehängte Dateien:

Lesenswert?

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

von Kilo (Gast)


Lesenswert?

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?

von Joerg W. (joergwolfram)


Lesenswert?

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

von Kilo (Gast)


Lesenswert?

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

von Joerg W. (joergwolfram)


Lesenswert?

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

von Kilo (Gast)


Lesenswert?

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

von Joerg W. (joergwolfram)


Lesenswert?

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

von Kilo (Gast)


Lesenswert?

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

von patrick (Gast)


Lesenswert?

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

von Joerg W. (joergwolfram)


Lesenswert?

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.

von patrick (Gast)


Lesenswert?

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

von Joerg W. (joergwolfram)


Lesenswert?

Hallo Patrick,

kannst Du gerne machen, aber dafür halte ich das Wiki hier für 
geeigneter als die Wikipedia.

Jörg

von Ralf - Rainer R. (ralf_r26) Flattr this



Lesenswert?

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).

von Ralf - Rainer R. (ralf_r26) Flattr this


Lesenswert?

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

von Joerg W. (joergwolfram)


Lesenswert?

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

von Ferenc (Gast)


Lesenswert?

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

von Kilo (Gast)


Lesenswert?

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

von Joerg W. (joergwolfram)


Lesenswert?

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

von Kilo (Gast)


Lesenswert?

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...

von Kilo (Gast)


Lesenswert?

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?

von Kilo (Gast)


Angehängte Dateien:

Lesenswert?

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 :(((((

von Joerg W. (joergwolfram)


Lesenswert?

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

von Kilo (Gast)


Angehängte Dateien:

Lesenswert?

Die Version von Avra ist 1.0.1
Ich habe keine aktuellere als .exe gefunden!
Das ist mein problem!

Fehlermeldung siehe Foto!

Gruß
Dominik

von Kilo (Gast)


Lesenswert?

die 1.3.0 Version hat leider keine .exe dabei :(

von Kilo (Gast)


Lesenswert?

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 :(

von Kilo (Gast)


Lesenswert?

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?

von Joerg W. (joergwolfram)


Lesenswert?

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

von Kilo (Gast)


Lesenswert?

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!

von Joerg W. (joergwolfram)


Lesenswert?

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

von Kilo (Gast)


Lesenswert?

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?

von Joerg W. (joergwolfram)


Lesenswert?

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

von Kilo K. (kilo81)


Lesenswert?

Ah, jetzt ja... danke! :)

von Kilo (Gast)


Lesenswert?

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?

von Kilo (Gast)


Lesenswert?

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.

von Joerg W. (joergwolfram)


Lesenswert?

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

von Kilo K. (kilo81)


Lesenswert?

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! :-)

von Patrick (Gast)


Lesenswert?

Hi Kilo wollte mal dein gamepad nachbauen,hast
Du ein paar Spiele das ich das testen kann?
Vielen Dank im vorraus.
 Gruss Patrick

von Kilo (Gast)


Lesenswert?

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??

von mller85@googlemail.com (Gast)


Lesenswert?

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

von Kilo (Gast)


Lesenswert?

Hi,

ich werde die Tage mal ein paar listings posten! ;)

von Patrick (Gast)


Lesenswert?

Ja super Danke!

von Kilo (Gast)


Lesenswert?

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!

von Joerg W. (joergwolfram)


Lesenswert?

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

von Kilo (Gast)


Lesenswert?

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.

von Joerg W. (joergwolfram)


Lesenswert?

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

von Kilo K. (kilo81)


Lesenswert?

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?

von Joerg W. (joergwolfram)


Lesenswert?

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

von Kilo K. (kilo81)


Angehängte Dateien:

Lesenswert?

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!

von Joerg W. (joergwolfram)


Lesenswert?

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

von Kilo K. (kilo81)


Lesenswert?

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!

von Joerg W. (joergwolfram)


Lesenswert?

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

von Bernd (Gast)


Lesenswert?

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. :)

von Kilo K. (kilo81)


Lesenswert?

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.

von mller85@googlemail.com (Gast)


Lesenswert?

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 !!

von Kilo K. (kilo81)


Lesenswert?

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!

von mller85@googlemail.com (Gast)


Lesenswert?

Alles klar  Danke
gruss Patrick!

von David R. (retrogadgets)


Lesenswert?

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 :(((((

von Kilo (Gast)


Lesenswert?

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.

von Joerg W. (joergwolfram)


Lesenswert?

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

von Kilo K. (kilo81)


Lesenswert?

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

von Joerg W. (joergwolfram)


Lesenswert?

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

von Kilo K. (kilo81)


Lesenswert?

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!

von Kilo K. (kilo81)


Lesenswert?

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!

von Kilo K. (kilo81)


Angehängte Dateien:

Lesenswert?

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 :(

von Kilo (Gast)


Lesenswert?

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 :(

von Joerg W. (joergwolfram)


Lesenswert?

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

von Joerg W. (joergwolfram)


Lesenswert?

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

von Kilo K. (kilo81)


Lesenswert?

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?

von Joerg W. (joergwolfram)


Lesenswert?

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

von Kilo K. (kilo81)


Lesenswert?

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?

von Joerg W. (joergwolfram)


Lesenswert?

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

von Dominik (Gast)


Lesenswert?

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... :(

von Alexander D. (Firma: Privat) (alexdaix)


Angehängte Dateien:

Lesenswert?

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

von Joerg W. (joergwolfram)


Lesenswert?

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

von Joerg W. (joergwolfram)


Lesenswert?

@ 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

von Kilo K. (kilo81)


Lesenswert?

@ 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..

von Joerg W. (joergwolfram)


Lesenswert?

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

von Kilo K. (kilo81)


Lesenswert?

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.

von Joerg W. (joergwolfram)


Lesenswert?

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

von Alexander D. (Firma: Privat) (alexdaix)


Angehängte Dateien:

Lesenswert?

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

von Alexander D. (Firma: Privat) (alexdaix)


Lesenswert?

Noch eine Anmerkung zum Scopebild...

das LCD hat Kontaktprobleme deshalb die waagerechten Striche im oberen 
und unteren Drittel der Anzeige.

von Joerg W. (joergwolfram)


Lesenswert?

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

von Kilo K. (kilo81)


Lesenswert?

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 :(

von Kilo K. (kilo81)


Lesenswert?

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

von Kilo K. (kilo81)


Lesenswert?

Mal ne Frage:
Wenn ich Scart ersetze gegen die FBAS Schaltung... bleiben die 
Widerstände für RGB am µC Ausgang bestehen?

von Joerg W. (joergwolfram)


Lesenswert?

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

von Kilo K. (kilo81)


Lesenswert?

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.

von Alexander D. (Firma: Privat) (alexdaix)


Lesenswert?

@ 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).

von Kilo K. (kilo81)


Lesenswert?

@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!

von Kilo K. (kilo81)


Lesenswert?

Sooo... FBas Schaltung gebaut, drangehängt, kein Signal! :(

Das Signal am Scope gefällt mir auch irgendwie nicht.. mh!
Jetzt beginnt die Fehlersuche...

von Frank Z. (fzoll)


Angehängte Dateien:

Lesenswert?

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

von 711LAB .. (711lab)


Lesenswert?

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.

von Joerg W. (joergwolfram)


Lesenswert?

@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

von 711LAB .. (711lab)


Lesenswert?

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?

von 711LAB .. (711lab)


Angehängte Dateien:

Lesenswert?

Hallo, ich habe dieses Problem auf 16 Farben SCART. Das Monitorbild ist 
sehr schlecht. Was ist das Problem?

von Frank Z. (fzoll)


Lesenswert?

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

von Joerg W. (joergwolfram)


Lesenswert?

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

von patrick (Gast)


Lesenswert?

Hallo Jörg, kann man die hex einfach in den 1284 brennen?

von Joerg W. (joergwolfram)


Lesenswert?

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

von patrick (Gast)


Lesenswert?

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

von Joerg W. (joergwolfram)


Lesenswert?

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

von Patrick (Gast)


Lesenswert?

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

von Joerg W. (joergwolfram)


Lesenswert?

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

von sv3ora (Gast)


Lesenswert?

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.

von sv3ora (Gast)


Lesenswert?

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?

von Joerg W. (joergwolfram)


Lesenswert?

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

von sv3ora (Gast)


Angehängte Dateien:

Lesenswert?

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 ...

von Frank Z. (fzoll)


Angehängte Dateien:

Lesenswert?

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
von sv3ora (Gast)


Lesenswert?

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.

von Joerg W. (joergwolfram)


Lesenswert?

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

von sv3ora (Gast)


Lesenswert?

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.

von Dominik (Gast)


Lesenswert?

Zu blöd das es den Source nicht in C gibt :(((((((

von Joerg W. (joergwolfram)


Lesenswert?

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

von Dominik (Gast)


Lesenswert?

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.)

von Dominik (Gast)


Lesenswert?

Ä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?

von Joerg W. (joergwolfram)


Lesenswert?

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

von Kilo K. (kilo81)


Lesenswert?

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?

von Joerg W. (joergwolfram)


Lesenswert?

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.

von Kilo K. (kilo81)


Lesenswert?

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 
:)

von Dominik (Gast)


Lesenswert?

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?

von Dominik (Gast)


Lesenswert?

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????

von Kilo K. (kilo81)


Lesenswert?

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 :(

von Joerg W. (joergwolfram)


Lesenswert?

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

von Kilo K. (kilo81)


Lesenswert?

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?

von Joerg W. (joergwolfram)


Lesenswert?

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

von Dominik (Gast)


Lesenswert?

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.

von Joerg W. (joergwolfram)


Lesenswert?

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

von Kilo K. (kilo81)


Lesenswert?

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
von SV3ORA (Gast)


Lesenswert?

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?

von Joerg W. (joergwolfram)


Lesenswert?

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.

von Patrick (Gast)


Lesenswert?

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

von Joerg W. (joergwolfram)


Lesenswert?

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

von Dominik (Gast)


Lesenswert?

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

von Dominik (Gast)


Lesenswert?

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?

von Joerg W. (joergwolfram)


Lesenswert?

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

von Dominik (Gast)


Lesenswert?

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

von Dominik (Gast)


Lesenswert?

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.

von Dominik (Gast)


Lesenswert?

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

von Kilo K. (kilo81)


Lesenswert?

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!

von Joerg W. (joergwolfram)


Lesenswert?

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

von Kilo K. (kilo81)


Lesenswert?

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.

von Joerg W. (joergwolfram)


Lesenswert?

> 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

von Kilo K. (kilo81)


Lesenswert?

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!

von Dominik (Gast)


Lesenswert?

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???

von Patrick M. (patrick85)


Lesenswert?

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

von Joerg W. (joergwolfram)


Lesenswert?

@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

von Dominik (Gast)


Lesenswert?

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.

von Alex W. (a20q90)


Lesenswert?

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!.

von Patrick M. (patrick85)


Lesenswert?

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

von Dominik (Gast)


Lesenswert?

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

von Dominik (Gast)


Lesenswert?

Kommando zurück!
Es funktioniert!!

ich musste die Referenz per ADC($140) auf AVCC umschalten!
Verdammt bin ich doof!

ES GEEEEEHT!!!! :)

von Kilo K. (kilo81)


Lesenswert?

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??

von Joerg W. (joergwolfram)


Lesenswert?

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

von Dominik (Gast)


Lesenswert?

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???

von Joerg W. (joergwolfram)


Lesenswert?

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

von Dominik (Gast)


Lesenswert?

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.

von Dominik (Gast)


Lesenswert?

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!

von Kilo K. (kilo81)


Angehängte Dateien:

Lesenswert?

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

von Kilo K. (kilo81)


Lesenswert?

@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.

von Dominik (Gast)


Lesenswert?

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?

von Patrick M. (patrick85)


Lesenswert?

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

von Dominik (Gast)


Lesenswert?

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.

von Joerg W. (joergwolfram)


Lesenswert?

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

von Dominik (Gast)


Lesenswert?

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?

von Dominik (Gast)


Lesenswert?

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?

von Patrick M. (patrick85)


Lesenswert?

Setze mal den spi Takt runter und schau ob es dann bei der Länge geht

Patrick

von Dominik (Gast)


Lesenswert?

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

von Dominik (Gast)


Lesenswert?

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.

von Dominik (Gast)


Lesenswert?

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.

von Dominik (Gast)


Lesenswert?

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??

von Dominik (Gast)


Lesenswert?

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!

von Dominik (Gast)


Lesenswert?

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

von Dominik (Gast)


Lesenswert?

@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?

von Joerg W. (joergwolfram)


Lesenswert?

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

von Dominik (Gast)


Lesenswert?

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.

von Dominik (Gast)


Lesenswert?

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.

von Dominik (Gast)


Angehängte Dateien:

Lesenswert?

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?

von Dominik (Gast)


Lesenswert?

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??

von Joerg W. (joergwolfram)


Lesenswert?

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
Noch kein Account? Hier anmelden.