Forum: Projekte & Code BASIC-Computer mit Mega32


von Joerg W. (joergwolfram)


Angehängte Dateien:

Lesenswert?

ZUERST LESEN! Die hier oben angegebene Datei entspricht nur dem Stand 
bei Eröffnung des Threads. Die aktuellste Version ist immer unter

http://developer.berlios.de/projects/avr-chipbasic/

oder weiter unten im Thread zu finden.

Etwas später als geplant ist die Mega32-Version vom BASIC-Computer nun 
doch fertiggeworden. Da die Version für den Mega16 nicht mehr 
weiterentwickelt wird und maximal noch Bugfixes erhält, habe ich einen 
neuen Thread aufgemacht.
Was gibt es Neues. Naja, einiges hatte ich ja bereits angekündigt, hier 
nochmal die Übersicht:

- RGB-TV 23 Zeilen mit 30 Zeichen, 256 Zeichen mit 8 Farben
- Anschluss für FBAS-CPLD vorbereitet
- Gross- und Kleinbuchstaben, Pseudografik
- Anschluss PS2-Tastatur
- Einkanaliger Tonausgang mit Hüllkurve, Rauschgenerator
- Serielle Schnittstelle 1200 Baud mit Ladungspumpe über Timerausgang
- parallele Druckerschnittstelle, auch als IO nutzbar
- I2C Schnittstelle für Daten-EEPROM und Temperatursensoren
- Weitestgehend Tiny-BASIC kompatible Programmiersprache mit
Erweiterungen
- Programmgröße 51 Zeilen a 32 Zeichen, 4 Programme im Flash
- Programmübergreifender Subroutinenaufruf möglich
- Programm Up- und Download via einfachen Texttransfer
- Screenshot Funktion
- Listingdruck
- Fullscreen-Editor mit aussagekräftigen Fehlermeldungen
- Breakpoints/Tastenkombination für Monitorafruf
- Monitor mit Programm-, Variablen- und Stackanzeige
- Einzelschrittbetrieb, Wechsel zur Anzeige
- EEPROM mit EPOKE/EPEEK als Datenspeicher nutzbar

Da die Zeichen 0x80 bis 0x8f noch nicht belegt sind, sind Vorschläge 
willkommen.

Viel Spaß damit und ein schönes Wochenende wünscht

Jörg

von Joerg W. (joergwolfram)


Angehängte Dateien:

Lesenswert?

Hier mal ein Screenshot vom Monitorprogramm.

von Simon K. (simon) Benutzerseite


Lesenswert?

Astrein! Absoluter Respekt.

von Enigma (Gast)


Lesenswert?

Und was macht man jetzt damit??

von Harry (Gast)


Lesenswert?

Hallo liebe Forumsgemeinde,
also ich habe mit der neuen V0.84 ein kleines Problem:

Meine selbst geschriebenen Programme können nicht abgespeichert werden.
Ich hatte vorher die Version 0.72 auf einem Mega16 und damit gings 
prima.
Ich benutze noch die ältere Platinen-Revision ohne die SMDs unten den 
Speichern. Den Fehler auf der Platine (unter bzw. neben den EEProms, 
fehlende Masse) hatte ich behoben und somit lief die V0.72 prima.
Seit ich den Mega32 nehme läuft es soweit aber die externen EEProms 
werden a) nicht genutzt? und b) ich kann nix speichern. Nach dem 
Speichern ist der Editor leer. Wenn ich im Editor ein kleines Programm 
schreibe und danach sofort F10 drücke zum ausführen, sagt er mir, das 
ich erst speichern soll :-(
Wo ist der Fehler? Mega32 defekt? oder läuft es mit der alten revision 
der Platine nicht?

Würde mich sehr über eine Hilfestellung freuen.


Viele Grüße
Harry

von Joerg W. (joergwolfram)


Lesenswert?

@Harry

Die 32-er Version läuft auch mit dem alten Board. Ich habe lediglich SS 
auf den SPI-Port geführt (für evtl. Erweiterungen), den Masse-Pin vom 
Video-Steckverbinder zur Synchronisation des Quarzoszillators 
umfunktioniert und ein paar Abblockkondensatoren hinzugefügt. Diese 
Änderungen sind für den normalen Betrieb aber nicht notwendig und ich 
arbeite selbst mit einer noch älteren Board-Version.
Als erstes würde ich überprüfen, ob die Lockbits unprogrammiert sind 
(0xff) da es so aussieht, dass nichts in den Flash geschrieben werden 
kann. Ich werde aber heute abend mal zum Test einen neuen Mega32 mit der 
veröffentlichten Version flashen. Den externen Programm-EEPROM habe ich 
"wegrationalisiert", da ich das ganze mehr als eine Art "Chip mit 
integrierter Entwicklungsumgebung" betrachte. Wenn es gebraucht wird, 
kann ich es auch in einer späteren Version wieder reinnehmen.

Gruß Jörg

von Harry (Gast)


Lesenswert?

Guten Abend Jörg,
vielen Dank für die schnelle Antwort. Leider bin ich noch nicht dazu 
gekommen es zu testen. Werde aber natürlich berichten wie es 
funktioniert hat, bzw. ob irgendwelche LockBits gesetzt waren/sind.

Zumindest ist es erstmal mit den externen Programm-EEproms geklärt.
Aber als externen RAM (Peek, Poke) kann ich doch nutzen oder?

Auf jeden Fall ein super Projekt find ich. Was man nicht so alles aus 
den "kleinen Dingern" so rausholen kann ;-)

Es Grüßt
der etwas übermüdete Harry

von Harry (Gast)


Lesenswert?

Zusatz:
Ich hätte schon gern das externe Programm-EEProm wieder, es passten dort 
ja 8-10 kleine Programme rein. Fand ich eigentlich recht nett. Wenn Du 
es umgesetzt hast das man die Programme gegenseitig (XCALL) aufrufen 
kann. warum nicht wieder nutzen? Man könnte natürlich auch den Mega644 
nehmen ;-)
Wäre doch auch nicht schlecht. Damit könntest Du Dich auch austoben was 
den Sprachumfang angeht. Ich fände es z.B. klasse wenn man I2C direkt 
aus Basic ansteuern könnte..zur Not mit Call Befehlen auf "Maschinen 
Ebene?"
Bitte nicht falsch verstehen, es ist natürlich keine Kritik, nur 
vielleicht als kleine Anregung. Das ganz erinnert mich sehr an meine 
alte ZX80/81er Zeit. Einige hab ich hier auf noch rumfliegen^^

Nette Grüße
Harry

von JanB (Gast)


Lesenswert?

>>...den Masse-Pin vom
Video-Steckverbinder zur Synchronisation des Quarzoszillators
umfunktioniert...

Hallo,
das klingt interessant !
Was soll da passieren ?
Wie soll der Quarzoszillator worauf syncronisiert werden ?

Gruß Jan

von Joerg W. (joergwolfram)


Lesenswert?

@Harry
in einen externen 24C65 passen jetzt nur noch 4 (ohne Programmnamen 5) 
Programme. Deshalb will ich eigentlich in Richtung Datatflash gehen und 
habe schonmal SS auf den ISP-Stecker gelegt. Da Dataflashmodul soll dann 
einfach auf die ISP-Schnittstelle gesteckt werden, damit hat die dann 
auch im Betrieb einen Nutzen. Eine Erweiterung der I2C-Möglichkeiten 
werde ich mir mal überlegen. Vielleicht parallele IO, Realtime Clock und 
LCD, vielleicht auch universeller.

@JanB
Das habe ich deshalb gemacht, um meinen FBAS-Encoder (auch hier in der 
Codesammlung, das Testbild dort stammt vom 32-er Basic) einfach 
anschließen zu können. Da der interne Quarzoszillator dafür ungeeignet 
ist, synchronisiere ich den internen Oszillator auf den 16MHz-Ausgang 
vom CPLD um Jittereffekte ("Schwimmen" des Bildes) zu vermeiden. Stecke 
ich stattdessen ein Adapterkabel auf Scart an, läuft der Oszillator 
einfach frei. Damit gibt es einfach mehr Anschlußmöglichkeiten, ohne die 
Hardware ändern zu müssen.

Gruß Jörg

von Harry (Gast)


Lesenswert?

@Jörg
Okay, hast mich überzeugt. 4 bzw. 5 Programme machen "den Kohl" dann 
auch nicht Fett. Externe Flash-Module hätten was ;-)
Vor allem weil die SD-Karten ja inzwischen echt nix mehr kosten.
Bei parallele IO, wie wäre es mit 'PCF8574 Befehlen', In(Adresse, 
Variable) Out(Adresse, Byte) einfach, effizient und für vieles zu 
nutzen.
Ich hoffe das ich zu meinem Problem evtl. heute Abend berichten kann, 
weil zum Speichern hab ich noch nix machen können.
Eine vermuttung habe ich noch, der Mega32 hat zu meiner Schande mal 
kurzzeitig falsch herum im Sockel gesteckt, evtl. hat er doch einen 
wegbekommen, es waren nur bruchteile von sekunden aber man weiß nie... 
Das möchte ich doch erstmal testen....

Gruß Harry

von Harry (Gast)


Lesenswert?

Guten Abend,
also gute Neuigkeiten, es waren wirklich "nur" die Fuse Einstellungen.
Vielen Dank für den Tip, daran hätte ich als letztes Gedacht da ich mit 
dem Mega32 bereits ne weile gearbeitet hatte und dachte die wären so 
relativ "Allgemein gültig" eingestellt gewesen.

Ich freue mich schon auf das/die nächsten Updates^^

Liebe Grüße
Harry

von Robin T. (Gast)


Lesenswert?

Wie wärs wenn du den Zeichensatz noch ein "µ" verpasst?

von Joerg W. (joergwolfram)


Lesenswert?

Gute Idee, vielleicht auch noch kleines Omega. Ich habe auch schon an 
ein paar diagonal aufgeteilte Felder gedacht. Neue Version folgt in den 
nächsten Tagen, wenn ich nen PC8547 getestet habe.

Gruß Jörg

von Joerg W. (joergwolfram)


Lesenswert?

Folgende Gedanken zum I2C, die das ganze etwas universeller machen. Die 
I2C- und auch andere neue Funktionen könnten einfach über das Array 
laufen.

Beispiele:
IWRITE adr,arraypos,anzahl
IREAD adr,arraypos,anzahl

oder noch einfacher, da Lesen/Schreiben schon in der Adresse codiert 
ist:

ICOMM adr,arraypos,anzahl

01 A=$FF:IC $40,0,1:IC $41,0,1
02 ?B

setzt beim PC8574 mit der Adresse 0 alle Ausgänge auf High (können als 
Eingänge gelesen werden), liest den aktuellen Status der Pins in die 
Arrayzelle 0 ein und gibt den Wert dezimal aus.
Da der Mega32 genügend RAM hat, könnte das Array auch wieder von den 
Variablen entkoppelt und etwas größer werden. Wäre das so OK?

Gruß Jörg





von Robin T. (Gast)


Lesenswert?

Habe gerade dieses Projekt endeckt: 
http://www.ulrichradig.de/home/index.php/cpld/8bit_c_graka

Vieleicht könnte man dieses Ding irgedwie and den Einchip-Computer 
anschließen. Hat nähmlich ne Menge Farben.

von Harry (Gast)


Lesenswert?

Hallo Jörg,
also ich finde die Idee gut. Somit stehen alle wege in Verbindung mit 
I2C offen.
Dein Mini-Computer wird vermutlich nach Griechenland auswandern und 
meinem alten Herren ein wenig das Computern näher bringen ;-)
Ich habe immer nach einer möglichkeit gesucht meinem alten Herren einen 
Computer zu geben der einfach und verständlich ist. Basic ist einfach 
und das kpl. System ist gut zu verstehen.
Ich baue mir natürlich noch eine zweite Version für den Eigenbedarf ;-)

Es ist wirklich mal ein sinnvolles Projekt!

Liebe Grüße
Harry

von Robin T. (Gast)


Lesenswert?

Hat vieleicht jemand ne Idee wie ich die ganzen fuses in PonyProg setzen 
muss damit dass funktioniert? Ich habe dass Datenblatt durchsuch auch 
etwas über fuses gefunden. Aber dieses Fach-English macht mich ganz 
verrückt. Einer von euch muss diesen Einchip-Copmputer doch schon 
aufgebaut haben. Wie hast du die Fuses gestzt?


Danke schonmal

von Joerg W. (joergwolfram)


Lesenswert?

Die Fuses müssen folgendermassen programmiert werden (steht auch in der 
LIESMICH-Datei):

FUSE LOW:  0xef
FUSE HIGH: 0xd1

Wie es beim PonyProg geht weiss ich leider nicht, da ich uisp oder 
avrdude unter Linux nutze.

Zum Thema Grafikkarte:
Bei z.B. 6x10 Pixeln/Zeichen braucht man im Grafikmodus mit 256 Farben 
für die gleiche Operation ca. 60x mehr Taktzyklen als im Textmodus. Wenn 
der Controller dadurch von der Bildausgabe entlastet ist, erhöht sich 
die Geschwindigkeit etwa um den Faktor 4, die resultierende 
Geschwindigkeit als ungefähr um den Faktor 15 langsamer. Bei der 
Grafikkarte nach Ulrich Radig braucht man aber mindestens 6 Takte, um 
ein Pixel zu setzen. Gegenüber 2 Takten im Textmodus beim ChipBASIC 
ergibt das einen Gesamtfaktor von 45 für die reine Ausgabe. Wenn die 
Daten aus einem Character-ROM im AVR ausgelesen werden müssen, kommt man 
locker auf einen Faktor von geschätzt 90-100. Um mit dem Basic-Computer 
sinnvoll arbeiten zu können, bräuchte die Grafikkarte einen Textmodus.

Gruß Jörg

von Robin T. (Gast)


Lesenswert?

Danke für die ausfühliche Antwort.
Die fuses habe cih in diesen fuse-rechner eigegeben
http://palmavr.sourceforge.net/cgi-bin/fc.cgi?P_PREV=ATmega32&P=ATmega32&V_LOW=ef&V_HIGH=d1&O_HEX=Apply+user+values&M_LOW_0x3F=0x21&M_LOW_0x40=&M_LOW_0x80=0x80&M_HIGH_0x01=&M_HIGH_0x06=0x00&M_HIGH_0x08=&M_HIGH_0x10=&M_HIGH_0x20=0x00&M_HIGH_0x40=0x00&M_HIGH_0x80=&B_JTAGEN=P&B_SPIEN=P&B_SUT0=P&B_CKSEL3=P&B_CKSEL2=P&B_BOOTSZ1=P&B_CKSEL1=P&B_BOOTSZ0=P 
damit ich die in ponyprog verwenden kann. ABER: Da steht CKOPT 
unprogrammed obwohl dann die maximal Frequenz 8MHZ ist. hab ich da was 
falsch versatanden?

von Robin T. (rotoe) Benutzerseite


Lesenswert?

Nut ne kleine Frage am Rande: Könnte man noch nen Bootloader in den 
Atmega Quetschen? So dass man Updates übers Windoofs Terminal reinläd?

von Joerg W. (joergwolfram)


Lesenswert?

Das mit der CKOPT liegt an der Synchronisierbarkeit über externen Takt. 
Wenn ich sie programmiere, läuft der Oszillator bei extern eingespeisten 
16MHz (FBAS-Encoder) oftmals nicht an.

Bootloader (über XModem) hatte ich schon mal in einer 
(nichtveröffentlichten) Version drin, der konnte sogar zwischen 
BASIC-Programmen und Updates unterscheiden. Liegt momentan auf Eis, da 
der Speicher im Bootloader-Bereich nicht für alles (Bootloader, 
Video_interrupt, Zeichensatz) ausgereicht hatte.      Werde ich mich 
demnächst mal wieder damit befassen...

Gruß Jörg

von Robin Töniiges (Gast)


Lesenswert?

Glaubst du die neue Version kommt bis Anfang April raus? Sonst bestell 
ich jetzt schon Tiel für die alte.

von Joerg W. (joergwolfram)


Lesenswert?

Wann die nächste Version fertig wird, lässt sich nicht so genau sagen. 
Ich habe das Wochenende angepeilt, aber Familie geht vor. Aber auf jeden 
Fall wird sich so schnell nichts an der Hardware ändern.

Gruß Jörg

von Robin Töniiges (Gast)


Lesenswert?

Hallo nochmal,

könnte man per I²C Temepratur einlesen und per Parallele Schnittstelle 
auf LCD wieder ausgeben? Oder fehlen zum LCD ansteuern die benötigten 
Befehlen im Basic?

von Joerg W. (joergwolfram)


Lesenswert?

@Robin
Befehle dafür gibt es nicht. Aber da sich der Parallelport auch als 
normales IO programmieren lässt (DIR,IN,OUT) könnte man die Routinen 
auch in BASIC schreiben. Zuerst normal auf den Bilschirm schreiben, dann 
Zeiche für Zeichen  in einer Subroutine mit GCHAR einlesen und über den 
Parallelport ausgeben. Eventuell könnte ich auch einen Befehl kreieren, 
der einen angegebenen Bildschirmausschnitt auf ein am Parallelport 
angeschlossenes LCD kopiert.

Eine andere Variante, die ich mir schon überlegt habe, das LCD mit einem 
Mega8 zu versehen und dann per I2C anzusteuern. Mit einem gescheiten 
Befehlssatz könnte man dann über die gleiche Schnittstelle LCD oder eine 
"TV-Grafikkarte" ansteuern, ohne sich groß darum kümmern zu müssen, was 
nun wirklich dranhängt. Wenn dann das BASIC noch ein bisschen angepasst 
wird, könnte man zum Beispiel mit

PRINT #3;@2,2;"Temperatur: ";A

ein an die I2C angeschlossenes Display direkt ansteuern.

Gruß Jörg

von Sebastian Heiliger (Gast)


Lesenswert?

Ich hab nur mal eine kurze Frage, wozu dienen die Pullup Widerstände 
R12-R14?
hängt das damit zusammen das über den selben port die 
videosignalgenerierung stattfindet?

Soweit ich weiß haben doch die avrs portpins alle interne pullups die 
per software aktivierbar sind.

und dann noch eine frage, warum sind an der parallel schnittstelle die 
vielen vorwiderstände R1-R8, wenn man doch jetzt zum beispiel den 
internen ad wandler benutzt müsste man doch auch den spannungsabfall 
(auch wenn der sehr klein ist) an den vorwiderständen berücksichtigen.

oder hab ich nicht aufgepasst?

für eine antwort wäre ich sehr dankbar.

ps: ist wirklich ein tolles projekt, wenn ich überlege das der "kleine" 
AVR bald mehr kann als der gute alte brotkasten :-)

von Joerg W. (joergwolfram)


Lesenswert?

Ja, richtig.
Die Pullups sind notwendig, weil auch an den als Eingänge konfigurierten 
Pins die Portsignale durch die Videoausgabe mit wechseln. Dadurch werden 
die internen Pullups ständig ein- und ausgeschaltet.
Die Widerstände am Parallelport begrenzen den Ausgangsstrom, dadurch 
kann beim Experimentieren auch ein Anschluß nach Masse oder 5V gelegt 
werden, ohne dass ein zu hoher Strom fliesst. Bei einem 
Eingangswiderstand von 100MOhm lt. Datenblatt sollten sich die paar Ohm 
nicht im Ergebnis bemerkbar machen.

Gruß Jörg

von Joerg W. (joergwolfram)


Angehängte Dateien:

Lesenswert?

"Pünktlich zu Ostern" eine neue Version des BASIC-Computers. Es gibt 
einige neue Funktionen und auch einige Änderungen. Die 
Hardwaredokumentation für das Dataflash-Modul steht noch aus, im Moment 
ragt die Platine 4,5cm nach oben. Angeschlossen habe ich den AT45DB081B 
an die SPI-Schnittstelle, CS geht an das erst bei der 32er Version 
verdrahtete SS, SCK an SCK, SI an MOSI, SO an MISO und RESET an RESET. 
Die Stromversorgung habe ich über eine grüne LED zwischen 5V und VCC des 
Dataflash realisiert. Dokumentation folgt aber erst in den nächsten 
Tagen. (und wahrscheinlich auch noch einige Bugfixes)

Was ist noch neu:

- delta, my und omega im Zeichensatz
- Universelle I2C Routine ICOMM
- DATA zur Array-Belegung
- Letzter INPUT-Wert kann als Text ins Array kopiert werden
- Array hat 256 Bytes im RAM, +512 Bytes über Puffer im Dataflash
- Dataflash-Puffer können vom Flash gelesen und auch geschrieben werden.
- Klammeraffe ist auch wieder über ALT/ALTGR+Q erreichbar

Da der letzte bei INPUT eingegebene Wert jetzt auch als Text verfügbar 
ist, kann mit einem angeschlossenem PS2 Barcodescanner leicht z.B. ein 
mobiles Datenerfassungssystem realisiert werden.

Da mehr als 1200 Bps über die serielle Schnittstelle nicht möglich sind, 
könnte man auch einen ATmega8 als Seriell-IO I2C Slave realisieren. 
Sofern Interesse besteht.

Jetzt erstmal frohe Ostern

Jörg



von Robin T. (rotoe) Benutzerseite


Lesenswert?

Joerg Wolfram wrote:
> "Pünktlich zu Ostern" eine neue Version des BASIC-Computers. Es gibt
> einige neue Funktionen und auch einige Änderungen. Die
> Hardwaredokumentation für das Dataflash-Modul steht noch aus, im Moment
> ragt die Platine 4,5cm nach oben. Angeschlossen habe ich den AT45DB081B
> an die SPI-Schnittstelle, CS geht an das erst bei der 32er Version
> verdrahtete SS, SCK an SCK, SI an MOSI, SO an MISO und RESET an RESET.
> Die Stromversorgung habe ich über eine grüne LED zwischen 5V und VCC des
> Dataflash realisiert. Dokumentation folgt aber erst in den nächsten
> Tagen. (und wahrscheinlich auch noch einige Bugfixes)


Es tut mir leid aber obwohl ich nicht der Grünschnabel vom Lande bin, 
versteh ich nicht was du sagen willst.

Besonders: "Die
> Hardwaredokumentation für das Dataflash-Modul steht noch aus, im Moment
> ragt die Platine 4,5cm nach oben."

Warum 4,5 cm? Was hat dass damit zutun?


oder:
>Angeschlossen habe ich den AT45DB081B
> an die SPI-Schnittstelle, CS geht an das erst bei der 32er Version
> verdrahtete SS, SCK an SCK, SI an MOSI, SO an MISO und RESET an RESET.

warum sond din an die ISP schnittstelle?
was ist CS?
Erst bei der 32er Version? So wie ich dass gesehen habe ist 16er und 
32er Layout gleicht?


Biiiittttee erklärs mir?

von Joerg W. (joergwolfram)


Lesenswert?

Naja, vielleicht war es schon etwas spät...

Ich hab den Dataflash erstmal provisorisch an einen Stecker angelötet 
und auf die ISP gesteckt. Deswegen fehlt noch die Platine dazu. Der 
Dataflash hat 1MByte, die man aus dem BASIC ansprechen kann. Er hat zwei 
Puffer von je 256 Bytes, die ganz einfach das Array (welches jetzt 
256Bytes gross ist) um 512 Bytes erweitern. Mit den Befehlen FREAD und 
FWRITE können die beiden Puffer aus einer Flash-Page gelesen oder dahin 
geschrieben werden.

Beim ersten Mega16-Layout fehlt die Verbindung von der ISP zu SS am 
Controller noch und kann einfach mit einem Stückchen Draht hergestellt 
werden. Meine "Verdrahtungsbeschreibung" war für die Leute gedacht, die 
es schonmal selbst ausprobieren wollen. Inzwischen habe ich aber auch 
schon ein kleines Layout fertig und werde vielleicht schon morgen mal 
eine Platine machen. Hier nochmal die Beschaltung, etwas 
übersichtlicher:

Platine              Dataflash
===============================
+5V          --|>|-  VCC,WP (über grüne LED)
ATMEGA SS    ------  CS
ATMEGA MOSI  ------  SI
ATMEGA MISO  ------  SO
ATMEGA SCK   ------  SCK
RESET        ------  RESET
GND          ------  GND

Die ISP-Schnittstelle ist ja normalerweiese frei und so hat man z.B. 
1MByte Speicherplatz für Daten (z.B. Datenlogger). Eventuell auch später 
für weitere Programme.

Gruß Jörg






von Robin T. (rotoe) Benutzerseite


Lesenswert?

Vielen Dank!


Jetzt hab ich alles soweit verstanden.
Würde auch gerne mit diesen "Dataflash" baustein arbeiten,
ABER ich finde ihn ihn keinem Laden. Nicht Reichelt, nicht Conrad, nicht 
CSD.

Wo hast du den her? Oder gibt es alternativen?

von Joerg W. (joergwolfram)


Lesenswert?

Ich hab vor einiger Zeit ein paar bei Ebay ersteigert. Als Quelle fällt 
mir z.B. http://www.darisus.de ein, die haben den AT45DB041B-SU mit 
512kBytes (2048 pages) für 2,38€ und auch noch manch andere "Exoten". 
Allerdings in einem anderen Gehäuse (SOIC 8) als ich sie habe (SOIC 28).

Gruß Jörg

von Joerg W. (joergwolfram)


Angehängte Dateien:

Lesenswert?

So,jetzt nochmal die aktuelle Version mit vervollständigter 
Dokumentation.

Jörg

von Robin T. (rotoe) Benutzerseite


Lesenswert?

Hallo,

Habe ein Problem.

R17 ist nicht im Bestückungsplan und auch auf dem Layout.

Hab ich da was verkehrt verstanden?

von Robin T. (rotoe) Benutzerseite


Lesenswert?

Hallo,

Eine letzte wichtige Frage noch.

Mein BASIC-Computer funktioniert jetzt eigentlich ganz gut bisauf, das
dass wenn ich Quelltext eingebe manchmal zufallige Zeichen auftauchen 
oder ganz plötzlich ist da ne Leerzeile. Auch in den Zeilen 40-51 sind 
manchmal irgendwelche buchstaben oder zeichen. Kann dass daran liegen 
dass ich statt 22pf für den Quarz 33p genommen habe. Bei Reichelt stand 
zu dem Quarz 33p nehemen. Deshalb habe ich gedacht dass wird wohl 
stimmen.

Achso nochwas: R27 habe ich bestückt

Und wie gesagt R17 ist nicht im Layout verzeichnet. ABer ich glaube der 
ist nicht für mein Problem verantwotlicht

von Robin T. (rotoe) Benutzerseite


Lesenswert?

Achso fällt mir noch was dazu ein. Deine Besispileprogramme Pong, und 
Ballgate funktionieren bei mir nicht. Bei Pong macht der ball heftige 
schnelle zuckende rauf runter bewegungen. Bei ballgate fehlen die locher 
in den herankommenden wänden und ich kann die punkte nicht aufsammeln.
Dass kann doch nur am Quarz liegen oder?

von Joerg W. (joergwolfram)


Lesenswert?

@Robin

R17 war mal ursprünglich als Pullup für den RESET-Pin gedacht, und ist 
nicht unbedingt notwendig. Irgendwann beim layouten ist er einfach 
rausgeflogen. Bei den beiden Beispielen hast Du recht, die aktuellen 
sind leider nur in der Dokumentation drin. Wenn das Programm vom Editor 
aus gestartet wird, kann es sein, dass nach dem Programmende der 
Editorbereich vor dem Einlesen des Programms aus dem Flash nicht richtig 
gelöscht wird. Das hängt mit Testanzeigen während der Entwicklung 
zusammen und sollte in der (heute abend) kommenden Version behoben sein. 
Wenn aber z.B. nach dem Speichern vagabundierende Zeichen in den Zeilen 
auftauchen ist es ratsam, die Spannungsversorgung (Abblockkondensatoren) 
zu überprüfen. Wenn das Bild stabil am TV steht, sollte es auf keinem 
Fall am Quarz liegen.

Gruß Jörg

von Robin T. (rotoe) Benutzerseite


Lesenswert?

Da bild steht Stabil und es tauchen auch keine Zeichen NACH dem 
Speichern auf. Also hast du wohl recht. Übirgens vieleicht könntest du 
so ne Art Bereich auf deine Homepage eröffnen wo Leute ihre Programme 
für den Computer reinposten.

Nur ne Idee


Danke erstmal

von Otto (Gast)


Lesenswert?

Hallo Robin,

die Idee ist gut - dann muß das Rad nicht dauernd
neu erfunden werden...

Gruß Otto

von Robin T. (rotoe) Benutzerseite


Lesenswert?

Danke

Man könnte ja auch einfach nen Neuen Thread in der Codesammlung 
aufmachen z.B. "BASIC-Computer Progs" Wenn Jörg damit einverstanden wär 
würd ich dass machen.

von Joerg W. (joergwolfram)


Angehängte Dateien:

Lesenswert?

Zuerst mal vielen Danf fürs Testen. Ich versuche zwar auch immer die 
Release-Versionen zu testen, aber der Funktionsumfang ist mittlerweise 
einfach zu gross um alle Bugs zu "erwischen".
Zum Download steht die neue Version 0.88 mit einigen Bugfixes und einer 
neuen Funktion APRINT. Die funktioniert fast genauso wie PRINT, schreibt 
aber anstelle auf den Bildschirm in das Array. PRINT #3... geht auch, 
aber hier lässt sich der Startpunkt im Array nicht festlegen.
Damit sollte es relativ einfach möglich sein, z.B. ein LCD an den 
Parallelport anzuschliessen. Man müsste sich nur noch in BASIC eine 
Routine schreiben, die einen Bereich des Arrays ausliest und an das 
Display schickt.

Wobei wir gleich beim nächsten Thema sind. Die Idee mit der Codesammlung 
auf meiner Homepage hatte ich auch schon gehabt, bis jetzt hat sich aber 
noch zuviel an der Syntax geändert und dann passiert es wie mit den zwei 
Spielen, die nicht mehr richtig funktionierten. Da der Mega32 
mittlerweise auch schon recht voll geworden ist, würde ich ein 
feature-freeze vorschlagen, also (vorerst) keine neuen Funktionen mehr 
einzubauen und die bestehenden in ihrer Syntax nicht mehr zu ändern.
Natürlich könnt Ihr gerne Threads zur BASIC-Programmierung aufmachen, da 
habe ich absolut nix dagegen. Ich finde das sogar gut, denn mehr 
Feedback bedeutet ja auch letztendlich bessere Codequalität für das 
System an sich.

Gruß Jörg

von Robin T. (rotoe) Benutzerseite


Lesenswert?

Danke dass Editor Problem ist jetzt "fast" weg. Ich habe immernoch dass 
wenn ich einfach nur schreibe oder den Curso ein bisschen durch den text 
bewege er zeichen hinzufügt oder ändert. Ist aber auf KEINEN fall 
schlimm. Dass passiert nicht allzu oft. Dann habe ich nocht wenn ich 
eine Datei zum PC Sende dann wird nicht die gesendet die ich mit dem 
grünen Pfeil auswähle sondern die die als Deafult makiert ist.

Dann habe ich noch ne Frage: Wo sind die neuen Zeichen z.B. µ kann ich 
nicht wie in WIndows mit Alt Gr+M machen?

P.S:Hoffe das dass mit dem Bereich auf deiner Page klappt wäre echt 
super.

von Robin T. (rotoe) Benutzerseite


Lesenswert?

Achso ganz vergessen: Was für einen Drucker kann man den anschließen? 
Ich meine man kann ja keine Treiber installieren. Müsste also irgend ein 
einfacher sein. Aber welcher?

von Robin (Gast)


Lesenswert?

Da hat sich jetzt noch ne Frage angehäuft. Ich habe gelesen dass man bei 
der Mega 16 Version "16" Programme im Externen EEprom speichern kann. 
WIESO kannn man dass nicht in der Mega 32 Version? Oder geht dass und 
ich weis nicht wie?

von Harry (Gast)


Lesenswert?

Hallo Jörg,
ich hatte jetzt länger nicht reingeschaut umd muß zugeben der "Kleine" 
entwickelt sich prächtig!!

Finde ich wirklich Klasse was Du ihm inzwischen alles beigebracht hast. 
Von der Leistung her wird er bald den ZX81 überbieten ;-)

Mach weiter so!

Liebe Grüße aus Berlin
Harry

von Otto (Gast)


Lesenswert?

Hallo,

wenn gerade Fragestunde ist: ich bekomme unter
keiner Adresse einen Wert aus den Temperatursensoren.

Es sind "LM75CIM-5" (SMD), da keine anderen erhältlich waren

Ist es richtig, das der Chip die "Hauptadresse" vorgibt
und von hier 8 Adressen 000 bis 111 liegen ?

@Robin:

Joerg schrieb weiter oben:

>Den externen Programm-EEPROM habe ich "wegrationalisiert"

Viele Grüße Otto

von Robin (Gast)


Lesenswert?

Schade dass er den "Wegrationalisiert hat"

@Otto: Hast du alle 3 Adress Pins mit Masse verbunden? dann wäre die 
Adresse Logischer Weise "000".

Warscheinlich haste dass gemacht, aber ich frage ja nur.

von Otto (Gast)


Lesenswert?

Hallo Robin,

ja - damit habe ich angefangen und nun
mittlerweile bis "6" alles mal durchprobiert...

Allerdings hab ich noch "V0.84".

Funktionieren die Sensoren denn bei Dir?

Wenn ja, unter welcher Adresse?

Gruss Otto

von Robin (Gast)


Lesenswert?

Leider habe ich keine Sensoren. Habe mir aber gleich Version 0.88 geholt 
asl sie da war. Ist doch keine Mühe dass da mal eben ISP drauszu machen.

von Robin (Gast)


Lesenswert?

Sagt er denn nach dem Ausführen des Programms: "ISP Error" oder was 
passiert da genau?

von Robin (Gast)


Lesenswert?

Sorry nicht ISP I²C meine ich

von Otto (Gast)


Lesenswert?

Hallo Robin,

vielen Dank für Deine Antwort - das "updaten"
von der "16" auf die "32" Version hatte ich
durchgeführt, aber über die Ostertage keine Zeit
gehabt - jetzt wollte ich erstmal abwarten, ob
noch "Bugfixes" kommen...

Ja - ich bekomme unter allen Adressen "I²C-Error".
Das Programm-EEProm in der "ATMEGA16"-Version
hatte aber einwandfrei funktioniert.

Gruß Otto

von Joerg W. (joergwolfram)


Lesenswert?

Erstmal vielen Dank für die Fragen und Hinweise.

1.Speichern nur Default
-----------------------
Das mit dem Default-Programm betrifft Speichern und Drucken. Im Moment 
muss man sich halt damit befelfen, vorher das Default-Programm zu 
ändern, wird beim nächsten Release behoben.

2. Druckertreiber
-----------------
Da nur reine ASCII-Zeichen gedruckt werden, sollte es mit den meisten 
Druckern ohne Probleme funktionieren. Ausnahme sind reine 
Postscript-Drucker wie z.B. Tektronix Phaser, da funktioniert es leider 
nicht.

3.Sonderzeichen
---------------
Theoretisch könnte man das µ oder auch noch andere Zeichen (z.B. 
Umlaute)direkt per Tastatur zugänglich machen. Die Frage ist aber dann, 
wie werden sie codiert, da nicht ASCII. Probleme gibt es soweohl beim 
Dateitransfer als auch beim Drucken. Und wenn ich mich nach X11 und 
UTF-8 auf meinem Rechner richte, wird es auf W* Rechnern mit hoher 
Wahrscheinlichkeit nicht passen. Am einfachsten ist es, sich die 
Belegung mit dem Charset-Programm anzuschauen. Bei Ausgaben reicht dann 
z.B. ein
%13 für delta
%14 für my
%15 für omega
%28 für das Gradzeichen
(Im Moment liegen noch irgendwelche Zeichen auf den Umlauten, werde ich 
aber noch wegmachen...)

4.Programme im EEPROM
---------------------
In einen 24C64 passen auch nur noch 4-5 Programme, deswegen habe ich es 
weggelassen. Vielleicht lässt sich noch was mit dem Dataflash machen...

Gruß Jörg

von Otto (Gast)


Lesenswert?

Hallo Jörg,

kannst Du bitte einen Hinweis zu den
Temperatursensoren geben ?

Viele Grüße
Otto

von Joerg W. (joergwolfram)


Lesenswert?

@Otto
Wenn alle Adress-Pins auf Masse liegen, gibt TEMP(0) das Ergebnis, nicht 
TEMP(1).

lässt sich denn das Programm-EEPROM ansprechen (ab Version 0.87)?

DATA 1024,0,0,12
ICOMM $A0,1024,3:SYNC 2
ICOMM $A0,1024,2
ICOMM $A1,1024,1
PRINT @(1024)

sollte "12" anzeigen.

Nach einem I2C-Error ist es meist ratsam, mit CTRL-ALT-DEL den Compi neu 
zu starten (vorher Programm speichern!). Damit wird das I2C-Interface 
neu initialisiert. Ansonsten kann es passieren, dass weiterhin I2C-Eroor 
angezeigt wird, obwohl es gehen müsste. Das Temp-Uhr Programm habe ich 
gerade nochmal getestet, funktioniert ohne Probleme.

Gruß Jörg

von Otto (Gast)


Lesenswert?

Hallo Jörg,

Ja, ich hatte, wie im "Demo" mit "Temp(0)"
angefangen

>CTRL-ALT-DEL

vielen Dank für den Tip - das versuche ich mal

Viele Grüße

Otto

PS: kommen noch "bugfixes"?

von Joerg W. (joergwolfram)


Lesenswert?

Ein paar Bugs sind ja schon gefunden worden, ich will aber vor dem 
nächsten Update eine Backup/Restore Funktion über das nicht mehr 
benutzte Programm-EEPROM testen. Dann müsste man nicht vor jedem Update 
die Programme sichern. Wenn keine schwerwiegenden Bugs dazukommen, 
sollte es am WE soweit sein.

Gruß Jörg

von Robin T. (rotoe) Benutzerseite


Lesenswert?

Ich glaube ich habe noch nen Fehler gefunden.

Wenn ich dieses Programm starte:

01: DIR 0
02: Print DIN(1)

Sagt er: Unknowed Keyword in 02:01

von TheMason (Gast)


Lesenswert?

@joerg

also erstmal muß ich meinen respekt vor diesem projekt bekunden. finds 
echt irre was du aus nem einzelnen chip so alles rausholst. klasse. 
weiter so.

von TheMason (Gast)


Lesenswert?

@robin t.

wenn du datenflashes suchst, schau mal bei kessler-elektronik rein. da 
bekommt man die at45db (1,2,4,8,16 MBit) recht preiswert (ca 3-4 euro).

von Otto (Gast)


Lesenswert?

Hallo Jörg,

ich hätte noch die Bitte, ob Du nähere Angaben zum
Anschluß der "LM75" - Temperatursensoren liefern
könntest - evtl. auch, wo und wie Du Deinen Sensor an-
geschlossen hast (z.B. externe Platine) und ob
zusätzliche Maßnahmen erforderlich sind.

"Meine" Verdrahtung der "I²C" - Schnittstelle:

Pin 1: +    -> Pin 8 LM75
Pin 2: SCL  -> Pin 2
Pin 3: SDA  -> Pin 1
Pin 4: GND  -> Pin 4 und 5,6,7 (Adresse "0")

Habe ich da einen Denkfehler ?

Versuchsweise habe ich noch einmal den ATMEGA16
mit externem Programmeeprom gesteckt - kein Problem.

Zugriff auf "LM75" über A=TEMP(0) -> "I2C-Error"

Gruß Otto



von Robin T. (rotoe) Benutzerseite


Lesenswert?

Auch ist mir aufgefallen.

Müsste dass hier nicht eigentlich funktionieren?

OUT 255,0

Oder kann man nicht alle Ausgägne gleichzeitig mit dem Befehl setzen?

von Robin T. (rotoe) Benutzerseite


Angehängte Dateien:

Lesenswert?

Ich kann nicht wiederstehen mal ein paar Fotos von meinen "kleinen" 
Freund zu schicken.

Hier die ganze Station.

von Robin T. (rotoe) Benutzerseite


Angehängte Dateien:

Lesenswert?

Noch eins

von Robin T. (rotoe) Benutzerseite


Angehängte Dateien:

Lesenswert?

Und dass letzte

von Otto (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ganz wichtig ist vor Allem ein ordnungsgemäßer
und ESD geschützter Aufbau einschließlich einer
ausgeklügelten Gehäusekonstruktion.

Gruß Otto

von Robin T. (rotoe) Benutzerseite


Lesenswert?

Da halte ich von meinen Abgeschrimten Scart kabel mehr :)

von Robin T. (rotoe) Benutzerseite


Lesenswert?

@Otto: Was haste denn schon alles für Programme geschrieben?

von Otto (Gast)


Lesenswert?

Hallo Robin,

ich oute mich nur sehr ungern.........

Der Sinn und Zweck meiner aktuellen
Übung ist die Anzeige diverser Meßwerte
als Ziffern und Balkengrafiken auf dem
Monitor eines Hybrid-PKW.

Nun ist es raus und hat auch nicht
besonders weh getan.

Danach habe ich ein paar kleine
Automatisierungsideen.

Gruß Otto

von Joerg W. (joergwolfram)


Lesenswert?

@Otto

versuch mal, SCL und SDA zu vertauschen, mein Testkabel geht:

+5V    PIN 1    PIN 2    GND

Sorry, da stimmen Schaltplan und Layout leider nicht überein. Muss ich 
noch ändern.

@Robin

Da ist mir ein Schreibfehler in der Doku unterlaufen, es muss natürlich 
IN(1) heissen. Bei OUT wird als erstes die Bitnummer und dann der Wert 
angegeben. Wenn es nützlich wäre, könnte ich z.B. ein "BOUT" und "BIN" 
reinmachen, die den Parallelport byteweise ansprechen.

Gruß Jörg


von Joerg W. (joergwolfram)


Lesenswert?

Ich habe jetzt probiert und folgendes würde gehen:

Adresse bei IN(adr) und OUT adr,val

adr 0-7 spricht ein Bit an
adr 255 spricht das ganze Byte an

wäre das so OK?

Gruß Jörg

von Otto (Gast)


Lesenswert?

Hallo Jörg,

ja funktioniert - super vielen Dank !!!!
========================================

Habe heute schon einen KTY10-6 drangebastelt,
das ging auch aber so ist natürlich besser.

Hat sich etwas an den "Print"-Formatierungs-
anweisungen geändert ?

Die Anzeige ist anders als erwartet....

Viele Grüße

Otto

von Joerg W. (joergwolfram)


Lesenswert?

Die Formatierung habe ch nicht geändert, nur die direkte Zeichenausgabe 
mit %... ist neu dazugekommen. Vielleicht kannst Du mir mal "Soll" und 
"Ist" beschreiben.

Gruß Jörg

von Otto (Gast)


Lesenswert?

Hallo Jörg,

ich wars selber... der Monitor war rechts einfach
zu Ende - es funktioniert, zeigt aber "vorne"
2 Leerziffern an und daher war "hinten" kein
Platz mehr für das Komma, die Nachkommastelle
und das "°" - Zeichen.

Einige Mal war ich kurz davor "SDA" und "SCL"
zu tauschen - hätte ich nur - hinterher ist
man immer schlauer.

Nochmal vielen Dank !

Otto

von Robin T. (rotoe) Benutzerseite


Lesenswert?

@Joerg: Das wäre SUPER. Bit und Byteweise auszugeben und einzulesen. 
Also dass ma z.B. auch:
Out 64,1

Eingeben könnte damit ich auch z.B. den 2. und 6.  gleichzeitig auf high 
oder low setzen kann.

von Robin T. (rotoe) Benutzerseite


Lesenswert?

Habe mich etwas komisch ausgedrückt. Ich meine ganz Konkret 0-255 
ansprechen.
so wäre es super

von Robin T. (rotoe) Benutzerseite


Lesenswert?

Achso es wäre auch sehr schön wenn man etwas noch kürzeres als: sync 1 
hätte. dass ich ein frequenz von etwa 100-200 hz erzeugen könnte.

von Joerg W. (joergwolfram)


Lesenswert?

Um Inkompatibilitäten mit bestehenden Versionen zu vermeiden, hätte ich 
folgenden Vorschlag:

adr 0-7 spricht ein Bit an
adr 255 spricht das ganze Byte an

adr 256-511 stellt eine Maske dar, Bits bei denen das Maskenbit 0 ist, 
werden nicht geändert und sind auch bei IN() immer Null.

Das mit schnelleren Timern ist so eine Sache, da eigentlich alles aus 
den 15625 (oder 15734 bei NTSC) kHz Zeilenfrequenz abgeleitet werden 
muss. Deswegen geht auch die serielle Schnittstelle nur mit 1200 Bps. 
Als ein weiteres Zusatzprojekt habe ich schon einen I2C-Slave mit einem 
Mega8 oder Mega88 angefangen.

* schnellere serielle Schnittstelle mit 256 Bytes FIFO
* 4 PWM-Kanäle (Mega88)
* Timer 1 als Frequenzgenerator oder Zähler
* zusätzliche IO

Da sich das Teil noch in der Planungsphase befindet, sind Vorschläge 
gerne gesehen.

Gruß Jörg

von Robin T. (rotoe) Benutzerseite


Lesenswert?

Ja gut. dass mit 255 alle an ist auch nicht schlecht. WÄre aber schön 
wenn du vieleicht einen Extra Befehl für 0-255 machen könntest. Aber 
wenns nicht geht gehts nicht

von Joerg W. (joergwolfram)


Lesenswert?

Es wäre dann halt nur der Offset von 256, also z.B. OUT M+256,0 um die 
in der Maske M bestimmten Bits auf Null zu setzen. Es sind ja nicht nur 
Zahlen, sondern fast beliebige Ausdrücke für alle Argumente möglich.

Gruß Jörg

von Christian (Guest) (Gast)


Lesenswert?

USB, die Schnittstelle scheint ja sehr relevant.

Ein einfaches Prog. für den PC, eins für den uC um einfache
USB-I/Os zu ermöglichen:
Motto:
  INusb  data
  OUTusb data
oder so

Ich habe keine Ahnung von Basic - nur ein Vorschlag.
Es gibt ja eine Softwarelösung für die USB-Scjnittstelle, die aber 
einiges erfordert.

Gruß c.

von Robin (Gast)


Lesenswert?

Kommt dass Update heute noch oder erst morgen?
Oder überhaupt dieses Wochenende?

von Joerg W. (joergwolfram)


Lesenswert?

Wahrscheinlich kommt das Update erst nächste Woche, es git noch einiges 
zu testen, auch noch ein paar andere Projekte und tagsüber hat die 
Familie Vorrang.

Gruß Jörg

von Otto (Gast)


Lesenswert?

Hallo Jörg,

auch vielen Dank für die ICOMM-Routine - ich habe
heute mal damit rumgespielt und auch Resultate erzielt.

nun hätte ich noch ein paar (dumme) Fragen:

- weshalb ergeben "temp(0)" und "IC $91,0,1" unterschiedliche Werte?
- hast Du achon mal eine (I²C) - RTC angeschlossen - wenn ja: welche?
- verwendest Du eine Zusatzplatine für Deine Sensoren (+ggf. RTC)?
- wäre Dein "pre-release" der "high-speed RS232" eingeschränkt 
einsetzbar?

Soll kein "nerven" sein - sind einfach nur Fragen...

Viele Grüße
Otto

von Robin T. (Gast)


Lesenswert?

Ich hab da noch ne Idee. Ich weiß zwar dass man ein LCD am Parralelport 
des Mini-PC´s anschliessen kann ABER man könnte aich mittels PCF8577 ein 
LCD am I²C anschliessen. Nur müsste man dazu einen I²C-Befehl habe z.B.

LCDOUT adr,"String"


Wäre doch echt super dann hat man den Parport noch für andere Aufgaben 
wie z.B. Messen oder Steuern.

von Joerg W. (joergwolfram)


Lesenswert?

@Otto

ich hab letztens zwei DS3232 RTC als Sample gekriegt, bin aber noch 
nicht dazugekommen. Das "Pre-Release" ist noch nicht einsetzbar, da noch 
ein paar wichtige Dinge fehlen und der Code noch sehr unübersichtlich 
ist. Vielleicht wird es aber schon mit der nächsten Version 
(wahrscheinlich am WE).

@Robin
Meine Idee ist, einen Mega8 oder Mega88 als LCD-Controller zu nehmen 
(s.o.),
angesteuert würde er über I2c. Im Basic sähe es dann ungefähr so aus:

APRINT 1024,$80,$E0,"Hallo",0
ICOMM adresse,1024,0

ICOMM mit Länge 0 wird ausgeben, bis 0x00 im Arrayelement steht (nächste 
Version).

Die Ansteuerung via I2C will ich etwas allgemein halten, um sie auch 
später für andere Zwecke nutzen zu können:

111yyyyy = Y-Koordinate (0-30, 31 für weitere Befehle)
10xxxxxx = X-Koordinate (0-63)
1100cccc = Hintergrundfarbe (soweit vorhanden)
1101cccc = Vordergrundfarbe (soweit vorhanden)

Gruß Jörg



von Robin (Gast)


Lesenswert?

Man könnte doch auch statt den 24C64 einfach 24C512 reinmachen. Dann 
passen da doch MINDESTENS 10 Programme drauf. Dann könntest du die 4 
Plätze KOMPLETT aus den Flash des ATMegas nehmen und hast mehr Platz zum 
Entwickeln.


So und jetzt noch etwas worauf ich richtig Spitz bin :)

Könnte man nich so ne art Startbildschirm reinmachen der ETWA 3Sec 
angezeigt wird. z.B.:"Atmel BASIC-PC" und ne hübsche grafik darunter. 
Dann kommt das Menü.

Ware doch unheimlich stylisch

von Andreas K. (oldcoolman)


Lesenswert?

Hallo Jörg,

ist ein irre Projekt!

denke auch daran, wenn du lcd routinen bastelst, daß es auch 4x40
displays mit 2 EN Anschlüssen gibt.
Der 2. EN ist bei normalen Displays halt unbeschaltet.
Locate sollte einfach den wert verlangen,der dem LCD RAM Pointer 
zugewiesen wird. Es gibt einfach zu viele Arten von Displays, als daß
man hier mit zeile,spalte arbeiten könnte.
Andere Basics bieten upperline,lowerline. Ich halte das für ungeeignet.

frohes schaffen,

Andreas

von Joerg W. (joergwolfram)


Lesenswert?

@Robin

Die Idee, Programme aus dem externen EEPROM auszuführen, hatte ich am 
Anfang auch. Das Hauptproblem ist die Geschwindigkeit, denn durch die 
Videoausgabe kann man nur 1 Zeichen pro Zeile vom I2C einlesen. Im 
ungünstigsten Fall (ganze Zeile muss eingelesen werden) ergibt sich 
dadurch eine Verlangsamung um den Faktor 10.

@Andreas

Die LCD-Ansteuerung bekommt einen eigenen Controller, der dann über I2C 
angesteuert wird. Man hat dann zwar für jedes Display einen spezifischen 
Controller, das Grundsystem bleibt aber gleich.

Gruß Jörg

von Robin T. (Gast)


Lesenswert?

Hallo Joerg.

Ich wollte dann auchmal ein bisschen in der Software vom BASIC-PC 
rumprogrammieren. Aber ich komme nicht weiter. Ich habe avr_libmake in 
den Ordner vom PC kopiert. avra ist installiert. aber wenn ich in der 
Konsole eingeben" "./avr_libmake main.as" sagt er
1
Pass 1...
2
Pass 2...
3
main.asm(75) : error : [Macro: macros.inc: 31:] Relative address out of range (-2048 <= k <= 2047)
4
main.asm(78) : error : No register associated with XL
5
main.asm(78) : error : ldi can only use a high register (r16 - r31)
6
main.asm(79) : error : No register associated with XL
7
main.asm(80) : error : No register associated with XL
8
main.asm(80) : error : ldi can only use a high register (r16 - r31)
9
main.asm(81) : error : No register associated with XL
10
main.asm(82) : error : No register associated with XL
11
main.asm(82) : error : ldi can only use a high register (r16 - r31)
12
main.asm(83) : error : No register associated with XL
13
main.asm(83) : Maximum error count reached. Exiting...
14
done
15
16
17
Assembly aborted with 10 errors and 0 warnings.



Die ersten zeilen vom avr_libmake sehen so aus:
1
$libpath="libs.inc";
2
$listfile="libmake.lst";
3
$asmfile=$ARGV[0];
4
$assembler="avra $asmfile";
5
6
$jumps=0;
7
$calls=0;
8
$funct=0;
9
$libs=0;
10
$incfiles=0;
11
12
$dummy=`rm -f libs.inc`;
13
$dummy=`rm -f macros.inc`;
14
$dummy=`touch libs.inc`;
15
$dummy=`touch macros.inc`;

Ich verstehe nicht warum er beim compilieren diese Fehler anzeigt.
Die definitions.asm von allen Librarys sind in der main includet

von Joerg W. (joergwolfram)


Lesenswert?

hast Du die m32def.inc (von Atmel) mit in das Verzeichnis kopiert? Da 
die nicht von mir ist, fehlt sie halt in den Archiven. Normalerweise 
sollten schon im Pass 1 die Fehlermeldungen kommen. Der erste Fehler 
entsteht daraus, dass der erste Pass nicht erfolgreich war und die 
Sprünge/Calls nicht bei Bedarf von relativ nach absolut umgestellt 
wurden. Die anderen Fehler zeigen, dass der Assembler mit XL nix 
anfangen kann. Dass XL r26 ist, steht in der def. Eventuell mal 
probieren, ob im frisch ausgepacktem Archiv

avra main.asm

geht.

Gruß Jörg

von Robin T. (Gast)


Lesenswert?

m32dev.inc habe ich bereits eingefügt. Und wie gesagt alle definitions 
der libarys werden included. Deshalb verstehe ich die fehler nicht. Habe 
es schon mit Frisch ausgepackten Archiv probiert geht auch nicht. AUch 
avra main.asm geht nicht

von Robin T. (Gast)


Lesenswert?

Hat sich erledigt. JHUHUU

Die eine m32def.inc war von den AVRFreaks. weil ich sie bei Atmel nicht 
gefunden hatte.
Jetzt habe ich die richtige und kann Programmieren was dass Zeug hält.

Vielen dank für den Tip.

von Robin T. (Gast)


Angehängte Dateien:

Lesenswert?

Allerding findet er unter Linux mit UISP diesen Brenner noch nicht :)

Er sagt immer Brenner nicht angeschlossen. Alle Parport_pc, parport, 
ppdev u.s.w habe ich alles aktiviert. Er sagt lediglich dass er den 
Brenner nicht findet. ich rufe folgendes auf

uisp -dprog=dapa

So steht auf so ner seite wo ich den brenner gefunden habe. Kennst du 
einen Programmer der ähnlich einfach aufzubauen ist. Und mit uisp oder 
anderem unter Linux läuft?

von Joerg W. (joergwolfram)


Lesenswert?

Das direkte Anschliessen funktioniert nicht bei allen Parallelports. 
Besser ist ein STK200-kompatibler Nachbau (findet sich auf dieser Seite 
bei den Artikeln). Ich habe mir inzwischen einen USBasp gebaut (mit 
avrdude), da mein Laptop beim Parallelport nach einer gewissen Zeit alle 
Signale auf Null zieht und so dann immer einen Reset am Controller 
auslöst. Um den USBasp zu programmieren braucht man aber einen anderen 
funktionierenden Flasher...

Gruß Jörg

von Joerg W. (joergwolfram)


Lesenswert?

Nachtrag: Der Aufruf wäre dann:

uisp -dprog=stk200 --erase --download if=main.hex

Gruß Jörg

von Robin T. (Gast)


Lesenswert?

Kommt das Update noch heute?

Kann nicht schlafen. Bin so aufgeregt :)

von Otto (Gast)


Lesenswert?

ich auch....

Viele Grüße

Otto

von Robin T. (Gast)


Lesenswert?

Wann kommt denn die neue Version?


P.S.: Will nicht nerven sry wenns so rüberkommt.

von Harry (Gast)


Lesenswert?

Hallo Leute,
laßt den Joerg doch mal machen. Ihr vergesst vielleicht das es alles 
freiwillig ist und die, ich nenne sie mal Kollegen, auch noch sicher 
anderes zu tun haben als zu Programmieren wenn es nur ein Hobby ist.
Schaut mal raus, was wir für geniales Wetter haben ;-)
Wenn Joerg wieder was hat, wird er sicher was dazu schreiben....
Sonst er hat noch ne Homepage ;-)

In diesem Sinne
Harry

von Joerg W. (joergwolfram)


Lesenswert?

Sorry, dass es etwas länger dauert, aber ich möchte die nächste Version 
etwas ausführlicher entwickeln und testen, bevor ich sie freigebe. Und 
dann kommen noch Jobwechsel und Umzug dazu...
Momentan überarbeite ich die I2C-Routinen, um LCD's und schnellere 
serielle Schnittstellen anschliessen zu können. Dafür muss die libmio in 
weiten Teilen umgeschrieben werden, damit ich ein standardisiertes 
Interface zur Ausgabe habe. Mit einem 20x2 LCD und Mega8 funktioniert es 
auch schon zum grössten Teil, wahrscheinlich werde ich die serielle 
Schnittstelle mit integrieren.
Problem ist noch die Kommunikation, da der Basic-Controller ja nicht 
weiss, wann ein Zeichen gekommen ist. Meine aktuelle Idee ist, bei einer 
Länge von 0 und Lesemodus wird das erste Zeichen als Anzahl der 
verfügbaren Bytes gelesen. Der Slave-Controller dient dann als Puffer, 
wenn kein Zeichen nach der letzten Abfrage gekommen ist, gibt er 0x00 
als erstes Byte zurück. Da der Basic-Controller aber schon ein ACK 
gesendet hat, muss ich entweder noch ein Dummy-Byte ohne ACK einlesen 
oder einfach nur eine Stop-Condition senden.

Ein weiterer Gedanke ist, die Positionierung mit in die PRINT-Anweisung 
packen zu können. Da das bei vielen Basic-Dialekten mit dem Klammeraffen 
erfolgt, wird wohl die Variable A als neue Arrayvariable dran glauben 
müssen...
Sinn des Ganzen ist, auch mit PRINT #I2C-Adresse direkt auf das LCD (via 
I2C-Controller) schreiben zu können.
Da aber die Änderung der Syntax für den Arrayzugriff eine recht 
einschneidende Änderung ist, muss so etwas reiflich überlegt und 
ausgiebig getestet werden. Ich melde mich auf jeden Fall wieder, wenn es 
was Neues gibt.

Gruß Jörg

von Robin T. (Gast)


Lesenswert?

Ich entschulide mich nochmal für dass dauernde fragen nach Version. 
Umzug und Jobwechsel und an der Software arbeiten kann schon ziemlich 
viel auf einmal sein.Du hattes was von Mega8 LCD ansteuern gesagt. Ist 
damit diese geplante erweiterung gemeint die auch schnellere TImer und 
schnellere Schnittstelle machen soll? Wenn ja und wenn es festeht dass 
der mega8 genommen wird würde ich dass gerne mal wissen weil ich 
dringend bei reichelt bestellen muss und dann würde ich den sofort 
mitbestellen.

von Joerg W. (joergwolfram)


Lesenswert?

Ja, es wird definitiv ein Mega8 mit externem 16MHz Quarz und folgendes 
soll hinein:

- LCD Ansteuerung (4-Bit mode)
- serielle Schnittstelle mit Puffer
- 4xPWM (8 Bit)
- 1xFrequenzgenerator mit DDS
- Konfiguration (LCD-Typ, serielle Datenrate,...)

Allerdings muss ich noch Funktionen und insbesondere das 
Übertragungsprotokoll über den I2C-Bus festlegen.

Gruß Jörg

von Robin T. (Gast)


Lesenswert?

Dann noch gutes gelingen.

von Otto (Gast)


Lesenswert?

von mir auch!

viele Grüße

Otto

von Reiner Z. (rzett)


Lesenswert?

Hallo Jörg,

das ist ein geniales Projekt. Es macht viel Spass mitzulesen und 
mitzubasteln.
Ich habe einen Vorschlag was man noch in den MEGA8 reinpacken
könnte: Einen Decoder für RC5 Signale. Damit könnte man dann
Anwendungen auch mit einer IR-Fernbedienung statt mit der PS2-
Tastatur steuern. Ich denke, Platz und Rechenzeit müsste doch jetzt
im "Co-Prozessor" vorhanden sein.


Gruss Reiner

von Joerg W. (joergwolfram)


Angehängte Dateien:

Lesenswert?

Hallo, ich bin wieder da!!!

zumindest sind die wichtigsten Kartons schonmal ausgepackt und es gibt 
endlich eine neue Version.

Was ist neu:

- Arrayzugriffe erfolgen jetzt mit AR()
- Klammeraffe @ kann zur Positionierung benutzt werden
- Copy&Paste im Editor
- einfachere I2C-Kommunikation mit externen Modulen
- Bugfixes

Wird nun ein Ausgabekanal >3 geöffnet, wird automatisch auf den 
I2C-Baustein mit der Kanalnummer als Device-Adresse ausgegeben. Ist beim 
Einlesen von Daten über den I2C-Bus die angegebene Datenlänge 0, dann 
wird als erstes die Anzahl der abzuholenden Daten eingelesen.
Den APRINT-Befehl zur Ausgabe in das Array habe ich wieder verworfen und 
durch PRINT #3 ersetzt, ich hoffe das ist nicht allzu schlimm.

Gruß Jörg

von Robin T. (rotoe) Benutzerseite


Lesenswert?

Tolle sache mit dem Copy & Paste. Aber wen ich den Programmtitel ändere 
verschluckt er immer die ersten 1 oder 2 Zeichen davon. Ich muss erst 2 
Leerzeichen und dann den Titel eingeben.

von Joerg W. (joergwolfram)


Lesenswert?

Hmm, da ist noch ein Fehler reingerutscht. Die Routine, die den 
Programmnamen in den Flash scheibt, weiss noch nicht dass sich die 
Position um 2 Stellen nach links verschoben hat. Werde ich heute oder 
morgen noch korrigieren.

Gruß Jörg

von Joerg W. (joergwolfram)


Angehängte Dateien:

Lesenswert?

Leider hat es wieder mal etwas länger gedauert, ich habe die 
Cursorsteuerung im Editor etwas überarbeitet. Sie ist jetzt dem etwas 
ähnlicher, wie man es vom PC gewohnt ist. Ausserdem haben in der 
assemblierten Version ein paar Zeichen gefehlt. Ich hatte zwar µ und 
Konsorten in die Zeichentabelle eingetragen, aber nicht das 
generate-Script aufgerufen. Bei der Gelegenheit sind gleich noch ein 
paar Lücken im Zeichensatz aufgefüllt worden.

Da der Mega32 mittlerweile auch fast "voll" ist, wird es mit aller 
Wahrscheinlichkeit nur noch Bugfixes geben. Das LCD/seriell-Modul 
(I2C-Slave)  demnächst wohl als separates Projekt.

Viele Grüße, Jörg

von Robin T. (rotoe) Benutzerseite


Lesenswert?

Hallo Jörg.

Ich arbeite gerade daran ein Menü vom BASIC-PC zu meinem Computer per 
RS-232 auf Terminal zu schicken. Aber wie schaffe ich es der er immer 
den nächsten Text an link an den Rand und eine Zeile Tiefer schreibt 
(Also ganz normal ne neue zeile beginnt und da weiter schreibt)?


Danke

von Otto (Gast)


Lesenswert?

Hallo Robin,

hast Du auch "CR+LF" (carriage return + line feed) = 0x10 + 0x13 
gesendet ?

Gruß Otto

von Robin T. (rotoe) Benutzerseite


Lesenswert?

Danke für deine Antwort. Leider glaube ich dass ich dem BASIC-PC nicht 
dazu bewegen kann diese Zeichen über die Serielle Schnittstelle 
auszugeben.

von Otto (Gast)


Lesenswert?

Hallo Robin,

wieso das denn nicht - steht doch auf Jörgs HP:

SPUT 10
gibt einen Zeilenvorschub an die serielle Schnittstelle aus.


Otto

von Otto (Gast)


Lesenswert?

Hallo Jörg,

jetzt habe ich mal wieder eine dumme Frage:

ich habe mir bei "C" ein Keypad gekauft,
daß auch theoretisch funktioniert.....

Nur weil ich "NUM-LOCK" nicht aktivieren
kann, ist es nicht möglich Ziffern einzugeben.

Müsste es gehen ?

Gruß Otto

von Otto (Gast)


Lesenswert?

Ergänzung:

geht unter XP, geht unter DOS
aber geht gar nicht am Chipbasic
(RKEY liefert bei allen Tasten "0")

Otto

von Joerg W. (joergwolfram)


Lesenswert?

Kannst Du mit irgendeinem Programm die Scancodes anzeigen lassen? Bei 
ungenutzten Scancodes liefert RKEY immer Null zurück.

Gruß Jörg

von Otto (Gast)


Lesenswert?

Hallo Joerg,

ein geeignetes Scantool habe ich leider nicht gefunden
und die Tastatur erst mal zur Seite gelegt....

Mein Problem ist ja immer noch, das Chipbasic mit
einem CAN232 "CAN-Dongle" zu verbinden.

Meine Hoffnung, dies auf 1200 BAUD zu setzen, war
leider unbegründet - minimal geht "2400"

So weit, so schlecht - also überlegte ich zunächst,
einen "Umsetzer" von "1200" auf "2400" BAUD zu
realisieren.

Dabei kam mit dann der (bessere) Gedanke, einen
"I2C" zu "RS232" - Umsetzer zu programmieren.

So habe ich eine 2. Chipbasic - Platine mit einem
"Mega16" bestückt, die Hardware-UART angeschmissen,
die "RS232-Pins" umverdrahtet und es funktioniert
auch ohne Probleme (sendet "Otto" und empfängt
Tasten......)

Nun kämpfe ich mit der "HW-TWI" - leider
"rührt sich gar nichts":

- Chipbasic meldet beim Schreiben an den "Slave"
(das ist die 2. Chipbasic-Platine) immer "I2C-Error"
und diese erhält somit auch keine Daten.....

Die Adresseinstellungen stimmen miteinander überein.
Der "LM75" funktioniert.

Hast Du irgendetwas "in der Schublade" ?

Viele Grüße

Otto

von Otto (Gast)


Lesenswert?

Hallo Joerg,

"copy und paste" ist wirklich hilfreich, vielen Dank!

Leider bin ich noch mal auf den Schalplan hereingefallen...
der Zugriff auf den "ATMEGA16" funktioniert jetzt.....
aber nur theoretisch.

Irgendwie scheint es ein Problem bei meinem Aufruf
der ICOMM-Routine zu geben - ich bekomme auch aus dem
externen Daten-Eeprom keine Daten ausgelesen.

Zum testen habe ich das von Dir oben gepostete Beispiel
verwendet:

DATA 1024,0,0,12             bringt "syntax error"

also habe ich das Array "manuell" gefüllt (For-Next)

ICOMM $A0,1024,3:SYNC 2
ICOMM $A0,1024,2
ICOMM $A1,1024,1
PRINT @(1024)

DATA 1024,"Hallo",0          bringt: return w/o call

Kannst Du bitte helfen?
Was habe ich nicht verstanden ?

Gruß Otto

von Robin T. (rotoe) Benutzerseite


Lesenswert?

Hi,

Also ich habe nochmal ein paar Vorschläge.
Es wäre sehr interessand und auch sehr hilfreich
Texte(String) in Variablen zu speichern und auch
z.B. per RS232 zu empfangen und zu senden.

Warscheinlich ist es garnicht möglich aber ne frage
ist es wert.

von Joerg W. (joergwolfram)


Lesenswert?

@Otto
ich habe vorsichtshalber einen neuen Mega32 mit dem Hexfile aus dem 
Archiv der 0.93-er Version geflasht und kann die Fehlermeldungen leider 
nicht nachvollziehen. Evtl. nochmal neu Flashen.
Bei der aktuellen Version wird das Array nicht mehr über @() sondern 
über AR() angeprochen.

@Robin
Ausgabe auf seriell geht mit PRINT #1... oder selbstgestrickt aus dem 
Array:

10 A=AR(P)
11 IF A=0 THEN SPUT 10:RETURN
12 SPUT A: P=P+1:GOTO 10

Eingabe kann man sich leicht im BASIC mit RKEY oder WKEY 
zusammenbasteln.

Im Moment habe ich nicht allzuviel Zeit und so befindet sich der 
Peripherie-Controller noch im Planungsstadium. Dabei will ich einen 
"relativ neuen" Weg beschreiten, dass man sich seine 
Controllerfunktionen weitestgehend ohne Programmierkenntnisse 
LabView-ähnlich zusammenklicken und dann über ein einfaches Kabel (mit 
galvanischer Trennung) zum Controller schicken kann.

Gruß Jörg

von Otto (Gast)


Lesenswert?

Hallo Joerg,

vielen Dank für Deinen Test - evtl. hatte ich zu
viele "Experimente" gemacht, die dann zu den
Fehlermeldungen führten.... jetzt funktioniert
es auf jeden Fall:

01 CLS :?"I2C-Test":Y=2:WAIT 10
02 DATA 1024,0,"Hallo Ihr Da!",0
03 DATA 1039,0,"Test 1234",0
04 FOR X= 1 TO 30:
05 CALL 16:SYNC 3:AR(1024)=0
06 CALL 20:SYNC 1
07 PO Y,X-1:EMIT AR(0):?LO(AR(0))
08 NEXT :Y=Y+1:GO 4
09
15 ?"Write I2C ";
16 IC $40,1024+X,1
17 RE
18
19 ?"Read I2C ";
20 IC $41,1024,1
21 RE

Dieses "Programm" definiert 2 Strings im Array,
sendet sie über die I2C-Schnittstelle aus (Zeile 16).

Hier "werkelt" ein Mega16 und setzt die
Information auf RS232 um (57,6 KBAUD)

(später Daten an das CAN-Dongle)

Die Informationen von der RS232-Schnittstelle
kommen dann ebenfalls über I2C zurück (Zeile 20)
und werden in Zeile 7 mit "EMIT" ausgegeben.

(später Daten vom CAN-Dongle an die Balkengrafik)

Nun kämpfe ich noch mit kleineren Problemen, bin
aber guter Dinge.....

Gruß Otto

von Otto (Gast)


Lesenswert?

Hallo Joerg,

vielen Dank für Deinen Test - evtl. hatte ich zu
viele "Experimente" gemacht, die dann zu den
Fehlermeldungen führten.... jetzt funktioniert
es auf jeden Fall:

01 CLS :?"I2C-Test":Y=2:WAIT 10
02 DATA 1024,0,"Hallo Ihr Da!",0
03 DATA 1039,0,"Test 1234",0
04 FOR X= 1 TO 30:
05 CALL 16:SYNC 3:AR(1024)=0
06 CALL 20:SYNC 1
07 PO Y,X-1:EMIT AR(0):?LO(AR(0))
08 NEXT :Y=Y+1:GO 4
09
15 ?"Write I2C ";
16 IC $40,1024+X,1
17 RE
18
19 ?"Read I2C ";
20 IC $41,1024,1
21 RE

Hier ein kleines Testprogramm (für Terminal-PGM).

Dieses "Programm" definiert 2 Strings im Array,
sendet sie über die I2C-Schnittstelle aus (Zeile 16).

Hier "werkelt" ein Mega16 und setzt die
Information auf RS232 um (57,6 KBAUD)

(später Daten an das CAN-Dongle)

Die Informationen von der RS232-Schnittstelle
kommen dann ebenfalls über I2C zurück (Zeile 20)
und werden in Zeile 7 mit "EMIT" ausgegeben.

(später Daten vom CAN-Dongle an die Balkengrafik)

Nun kämpfe ich noch mit kleineren Problemen, bin
aber guter Dinge.....

Gruß Otto

von Robin T. (rotoe) Benutzerseite


Lesenswert?

Hi,

Irgendjemand hatte es schonmal vorgeschlagen aber ich habe noch ne Frage 
dazu.

Könnte man nicht viel mehr Programme in dem BASIC-PC rein proppen wenn 
da ein ATMEGA644  drinne ist? Ich meine der ist Pinkompatibel und hat 
auch mehr speicher. Damit sind ganz neue Möglichkeiten da.

von Joerg W. (joergwolfram)


Lesenswert?

Natürlich gäbe es mit dem Mega644 mehr Möglichkeiten. Aber nach der 
Erhöhung der Programmanzahl würden schnell weitere Begehrlichkeiten 
auftauchen. Bei mehr RAM könnten die Programme mehr Zeilen haben, bei 
20MHz Takt liessen sich mehr Zeichen auf dem Bildschirm darstellen und 
so weiter...
Und schwupps ensteht daraus ein neue Projekt, welches auch gepflegt sein 
will. Im Moment arbeite ich an Bugfixes für die 32-er Variante, das 
braucht genügend Zeit. Den 32-er zugunsten des 644 aufzugeben halte ich 
für keine gute Idee.
Und ein hier auch schon angesprochenes Problem, die serielle 
Schnittstelle im Videointerrupt mit all ihren Folgen wird damit nicht 
gelöst.
Zu einem "würdigen Nachfolger" gibt es schon verschiedene Ideen, 
wahrscheinlich auf Basis eines Mega128 oder eines kleinen Coldfire von 
Freescale. Aber bis dahin wird wohl noch einige Zeit vergehen...

Gruß Jörg

von Robin T. (Gast)


Lesenswert?

Hallo Leute,

ich habe jetzt neulich eine Digicam bekommen bei der wohl der Blitz 
kaputt war. Ist eine Billigproduktion also ausschlachten. Da drinne ist 
ein Display für dass ich sogar ein Datenblatt gefunden habe 
(unglaublich!). Ich frage mich jetzt: "kann man dieses Display an den 
BASIC-PC anschließen?" Also ich habe im Datenblatt von RGB Eingängen 
gelesen aber nichts von H-oder Vsync. Ich hoffe jemand kann mir helfen.

P.S.: Sorry für meine Rechtschreibung, aber ich schreibe nur mit der 
linken Hand... in der rechten sieht man den Eingebranten Abdruck vom 
Lötkolben :)

von Robin T. (Gast)


Angehängte Dateien:

Lesenswert?

Sorry Datenblatt vergessen.

von Joerg W. (joergwolfram)


Lesenswert?

Wenn Du Dir die Signale und Timing-Diagramme (3 Taktsignale) im 
Datenblatt ansiehst müsste eigentlich auffallen, dass sich das Teil 
nicht einfach an eine Videoquelle anschliessen lässt.
Mit nem eigenen Controller sollte es gehen, die Frage ist halt, ob sich 
der Aufwand für ein Display lohnt.

Gruss Jörg

von Robin T. (Gast)


Angehängte Dateien:

Lesenswert?

Ichhabe mit die Platine(Digicam) nochmal angeschaut und in unmittelbarer 
Nahme ist ein SMD-Baustein namens "UPS051". Ich habe Google mal nach dem 
Datenblatt angesträngt und auch etwas gefunden... ein Appilaction Note. 
Das ist der Display-Controller. Im diesem Note steht ein Kompletter 
Schaltplan der die Eingange: Rot, Grün, Blau und HSYNC und VSYNC hat. 
Ich denke den Löte ich mal aus mach mir eine mini-Platte und dann sollte 
es funktionieren.

von Sam (Gast)


Lesenswert?

Geiles Projekt!
Ich bin zwar erst 14, will aber das ganze auch mal ausprobieren - auf 
einer Standardplatine und mit einem ATMega8 (Druckerport brauch ich 
nich)
Geht das?(Bei bedarf auch mit weniger Programm etc.)
Programmieren ist für mich kein Problem, ich kann (leichte sachen): 
Basic, Visual Basic, Delphi, C++
(Windoof mag ich trotzdem nich :-) )

Kleine Anregung: USB..., LAN...

von Sebastian H (Gast)


Lesenswert?

Hallo Sam,

im Prinzip brauchst du keine geätzte Leiterplatte, es reicht auch eine 
ganz normale Lochrasterplatine. Du brauchst nur den Teil des 
Videosignals der dir das BAS Signal erzeugt, also sprich diese 4 
Widerstände, und natürlich eine PS2 Tastatur um mit dem Rechner arbeiten 
zu können. Mehr nicht, aber zum einen verlierst du dadurch einiges an 
Möglichkeiten (serielle Kommunikation, Eingaben und Ausgaben) also alles 
das womit man irgendwas steuern oder regeln kann. Der Druckerport ist 
nämlich gleichzeitig auch die Möglichkeit kleine Relais (auch wenn mir 
jetzt einige Widersprechen werden aber es geht sogar direkt) oder LEDs 
mit dem Rechner steuern zu koennen.

Allerdings auf einem Mega8 wird das ganze in der Form wie jetzt nicht 
laufen, weil der hat einfach zu wenig Speicher (8KB) im Gegensatz zu dem 
verwendeten Mega32 mit 32 KB. Das ginge nur wenn du den Quellcode 
drastisch kürzen würdest, sprich alles das was du nicht brauchst 
rauswirfst. So wie ich das einschätze wird aber selbst das nicht 
ausreichen um auch nur ein bischen Grafik mit dem Chipbasic machen zu 
können.

Zumal der komplette Quellcode liegt ja offen (GPL sei dank) ich hab da 
auch mal kurz reingeguckt und ob wohl ich auch einfache C Kenntnisse 
habe muss ich bei diesem Quellcode passen weil der Code einfach zu 
umfangreich ist. Der Quellcode nutzt fast den ganzen Flashspeicher des 
Mega32 aus. Wenn du dich da rantrauen willst, wünsch ich dir jetzt schon 
viel Spaß. Das was Joerg Wolfram da geschaffen hat ist wirklich eine 
spitzen Leistung.

Nebenbei ein Mega32 ist auch nicht viel teurer als ein 8ter zumindest 
bei dem Elektronikdiscounter mit dem großen R. (3,95 €)
Ich würde dir empfehlen wenn dus wirklich nurmal austesten willst kauf 
dir nen Mega32 direkt mit passenden Quarz dazu und bau das ganze auf 
Lochrasterplatine auf (ist auch eine schöne Lötübung :-)

Nochmals vielen Dank an dieser Stelle an den Autor der Schaltung.

von Joerg W. (joergwolfram)


Lesenswert?

Erstmal vielen Dank für die Lorbeeren...

Mega8 geht leider nicht, da allein schon die Zeichentabelle für den 
Farbmodus 5 Kilobytes groß ist.
Was jetzt nun doch definitiv kommen wird, ist eine Mega644 Version. Im 
Moment gibt es aber noch Probleme mit unnachvollziehbaren Ausfällen der 
PWM von Timer 2 welches auch eventuell im Controller liegen könnte.
Hier schonmal ein paar geplante Features:

- gleiche Hardware-Basis wie die 16-er und 32-er Version
- evtl. FB-Decoder über freien Pin
- 20MHz Takt
- gleiche Bildschirmauflösung, Module für FBAS und VGA anschliessbar
- für jedes Zeichen Vorder- und Hintergrundfarbe festlegbar
- in den Flash passt ein "Set", Laden/Speichern über Dataflash-Modul

Ein Set besteht aus:
- 4 Programme a 99 Zeilen
- 4 forgefertigte "Screens" die mittels Befehl geladen werden können
- Alternativer Font (im Programm umschaltbar)

- "Screen"-Editor
- Font-Editor
- "Set"-Verwaltung
- Update-Funktion
- Vorcompilierung von Konstanten beim Speichern -> Geschwindigkeit

Wie es letztendlich wird, hängt von Zeit (und Speicherplatz) ab, Ihr 
könnt gerne Eure Vorschläge schreiben...

Gruß Jörg

von Sam (Gast)


Lesenswert?

Danke für eure Antworten!
Welche datei in dem Ordner "v0.93" ist eigentlich genau die Quelldatei 
für Chipbasic? Ich blick da nicht so ganz durch.
Momentan habe ich keinen ATMega32 da, aber drei 8ter, 8-farbig brauch 
ich nicht, ich bekomme wahrschenlich sowieso nur ein altes 
dunkelgrau/lila/grün-Handydisplay, da müsste ich den Zeichensatz ändern, 
(wenn ich wüsste wo der ist =)) und was mit der Grafikansteuerung 
machen, ich weiß leider nur noch nicht, wie man das Handydisplay 
ansteuern muss.
Damit will ich sowas wie ein kleines PDA/Notebook bauen. Dafür wäre eine 
Festplattenansteuerung(gegebenfalls über 2ten ATMega8 oder 16)echt nicht 
schlecht, SD-Karten würden auch reichen.

Ach ja, wisst ihr, wo es PS2-Tastaturen gibt, die in etwa so sind wie 
die vom Commodore(oder wie der Rechner hieß)?

Grüße, Sam

von Philipp Karbach (Gast)


Lesenswert?

Warum nicht die nächste version mit nem mega256? und dann SD Karte als 
Programmspeicher :). Da lässt sich EINIGES machen! Achja und wenn viele 
Interesse Zeigen mal ein paar Platinen ätzen lassen.

von Otto (Gast)


Lesenswert?

Hallo Jörg,

da freue ich mich schon drauf.....

Viele Grüße

Otto

von Joerg W. (joergwolfram)


Lesenswert?

@Sam

Es gibt nicht DIE Quelldatei, das Ganze besteht aus einer Menge Modulen 
und Bibliotheken. Die Zeichensätze befinden sich im libmio-Verzeichnis 
(cchartable.inc für normale Darstellung und mchartable.inc für die 
Textzeilen im Editor).
Um ein Handydisplay anzusteuern, müsste die libmio in weiten Teilen neu 
geschrieben werden, da die Ansteuerung komplett anders ist.

@Philipp

Das mit der SD-Karte habe ich auch schon angedacht, hab aber noch 20++ 
Dataflash rumliegen die auch mal verbaut werden wollen...
Da ich sowieso ein Dateisystem benötige, liesse sich das ja vom 
Medium-Treiber (Sektorebene) trennen und könnte so mit verschiedenen 
Speichermedien umgehen.
Bei den Platinen deutet sich bereits mind. eine Möglichkeit an, dazu 
später vielleicht mehr.

Gruß Jörg

von Sam (Gast)


Lesenswert?

Kann man mit diesem System eigentlich eine Normale Festplatte ansteuern?

Gruß Sam

von Balu (Gast)


Lesenswert?

Sam, mach' Dich erst mal schlau, was dieser Mini-Computer hier kann und 
welche Peripherie er hat.
Dann lies Dir das Datenblatt zum verwendeten Mikrocontroller durch und 
überleg Dir mal die Unterschiede zwischen diesem µC und einem "normalen" 
PC.
Und erst dann, darfst Du wieder eine (unqualifizierte) Frage stellen ...

von Robin T.. (Gast)


Lesenswert?

Balu hat schon recht aber trotzdem möchte ich mal meinen Senf dazu 
geben.

Also ich denke wenn man sich eine kleine Routine schreibt und ein 
bisschen Hadware von I²C auf IDE oder Parralelport auf IDE dann sollte 
dass Funktionieren. Allerding sehr langsam. Vileicht zu langsam für ne 
Platte.

von Joerg W. (joergwolfram)


Lesenswert?

Hallo, erstmal ein paar Neuigkeiten:

Die neuen Videomodi (Normal und Editor) funktionieren schon, allerdings 
nur auf TV. Bei VGA ist leider die horizontale Austastlücke zu kurz um 
serielle Schnittstelle, Tastatur und Sound zu handeln. Daher habe ich 
mir folgendes überlegt:

Tastatur und Sound auf einen Mega8 oder Mega88 auslagern, serielle 
Schnittstelle direkt an den UART (bei bestehenden Boards lässt sich das 
relativ leicht mit Durchtrennen von 2 Leiterbahnen und Anlöten von 2 
Drähtchen realisieren). Am Mega8 wäre dann auch noch Platz für z.B. ein 
LCD, verbunden werden beide Teile über I2C. Beim Start wird der I/O 
Coprozessor abgefragt, ist er nicht vorhanden wird automatisch das 
Programm gestartet.

Nachteile:
- es ist eigentlich kein Einchip-Computer mehr
- bestehende Boards müssen ergänzt werden

Vorteile:
- Serielle Schnittstelle mit einstellbarar Baudrate
- Systemupdate über seriellen Port ist einfacher realisierbar
- geringfügig höhere Geschwindigkeit
- Anschlussmöglichkeit für Eigenbautastaturen

Da ich die Anzahl der zu pflegenden Versionen möglichst gering halten 
will, würde mich interessieren inwieweit Interesse an einer solchen 
Lösung besteht.

Ein schöne Wochenende...

Gruß Jörg

von Robin T.. (Gast)


Lesenswert?

Diese Lösung hört sich einfach nur Geil an!

Wie gleube ich schinmal jemand gesagt hat: "Es wäre schade wenn dass 
Projekt daran scheitern würde wenn man es auf einen Chip begrenzen 
will".

Mach doch ruhig ein Chip mehr drauf. Darin sehe ich keinen Nachteil. Nur 
die Vorteile :)




Danke für deine Mühen.

von Stephan (Gast)


Lesenswert?

Wie wär's mit einem größeren Chip?

Stephan.

von Otto (Gast)


Lesenswert?

Hallo Jörg,

mir ist alles recht, solange Du weiter machst.....

Schönes WE und

Gruß Otto

von core (Gast)


Lesenswert?

nimm mege8 oder mega32, sind altbekannte chips die auch fast jeder 
bastler in  der kiste hat.

von Otto (Gast)


Lesenswert?

Hallo Jörg,

> nimm mega8 oder mega32....

sehe ich ähnlich - jedoch hätte MEGA16 und MEGA32 den Vorteil,
dass die Erweiterungen notfalls auch auf einer 2.
"Basic-Computer-Platine" aufgebaut werden könnte.....

Gruss Otto

von Joerg W. (joergwolfram)


Lesenswert?

Der Mega88 kam mir nur in den Sinn, da er auch mit dem Haupttakt von 
20MHz laufen könnte. Tastatur, I2C und LCD brauchen keine genaue 
Zeitbasis, Soundausgabe schon. Da das derzeitige Leiterplattendesign 
sowieso recht "gehäuseuntauglich" ist gehen meine derzeitigen 
Überlegungen in Richtung Europakartenformat. Und dann wäre auch ein 
zweiter 40-pinner kein größeres Problem (obwohl ich die Einchiplösung 
immer noch nicht ganz abgeschrieben habe).

Gruß Jörg

von Sebastian Heyn (Gast)


Lesenswert?

Wenn du nen zweiten chip nimmst, dann könntest du die videoerzeugung 
auslagern, und so mehr modi, höhere auflösung, oder mehr farben 
erzeugen. und der ganze rest wird wenniger abhängig vom video-timing. 
Der m32 lässt sich (solange man nicht auf den eeprom zugreift)auch mit 
20mhz takten

von Robin T.. (Gast)


Lesenswert?

Ich bin auch für nen 2. Chip. An einem beißt du dir früher oder später 
die Zähne aus...wäre schade

von Sebastian Heyn (Gast)


Lesenswert?

Und man kann mehr features etc einbauen. Irgendwann kommt dann noch ein 
tiny für den sound, grins. und man hat ne kleine spielekonsole G

von Andreas Jakob (Gast)


Lesenswert?

Hallo,

oder einen Propeller Chip von Parallax als Coprozessor :-)
Der kann mit seinen 8 CPU Kernen locker gleichzeitig schnelle
Farbgrafik auf Pixelebene erzeugen, komplexen Stereo-Sound generieren, 
eine SD-Karte ansteuern, Joysticks, Tastatur und Maus abfragen ...
Der ATMega hätte dann die ganze Rechenleistung fürs BASIC.

Geht zwar am eigentlichen Projekt vorbei, wär aber ein genialer kleiner 
BASIC-Computer / Spielconsole :-)

Gruß
Andreas

von Robin T.. (Gast)


Lesenswert?

Au ja! Da wäre dann schon ein High End Basic PC :)

Aber die Lösung mit dem Mega 8 als 2nd Chip reicht mir erstmal :)

von Andreas Jakob (Gast)


Lesenswert?

Der Propeller Chip kostet halt leider immer noch 17 Euro in Deutschland, 
in USA nur 9 Euro ...
Aber braucht als DIP40 auch nicht mehr Platz wie ein Mega32 und fast 
keine
externen Bauteile (1 Quarz, 1 8pol. EEPROM).
Damit wären halt Sachen wie Sprites und superschnelle hochauflösende 
Farbgrafik machbar.
Der Propeller kann auch in Software ein Farbsignal zum direkten
einspeissen in den Antenneneingan erzeugen, ohne Modulator, + FBAS + VGA
Es gibt zwar auch ein BASIC für den Propeller, das ist aber sehr 
eingeschränkt.
Aber als Coprozesor zu einem 64K ATMega wär das schon ein sehr 
Leistungsfähiges System.

http://youtube.com/watch?v=kA8sq_7nYlE

von Joerg W. (joergwolfram)


Lesenswert?

Das größte Problem am Propeller sehe ich darin, dass es keine Tools für 
Linux gibt. Und da ich möglicht M$-inkompatibel bleiben will, fallen 
VMware oder Wine auch aus. Dann schon lieber ein ARM oder Coldfire und 
der AVR als IO-Prozessor..

Da der Quellcode des BASIC-Computers modular ist und unter der GPL 
steht, kann ja durchaus sich jemand die Arbeit machen...

Gruss Jörg

von Andreas Jakob (Gast)


Lesenswert?

Ich arbeite auch fast nur mit Linux.
Aber für manches muss hat VMWare herhalten ...

Einen GPL Assembler in Java gibt es bereits,

http://www.cliff.biffle.org/software/propeller/propasm/

Linux und Mac Versionen der Propeller Tools sind wohl lang angekündigt, 
und werden nochmal solang auf sich warten lassen :-(


Andreas

von core (Gast)


Lesenswert?

...Es gibt zwar auch ein BASIC für den Propeller, das ist aber sehr
eingeschränkt....


da irrrrrst du.
dieses spin ist hervorragend, kannste sogar asm-macros einbinden.
gibt nicht schöneres um schnell zum erfolg zu kommen.

von Andreas Jakob (Gast)


Lesenswert?

Core, ich meinte nicht Spin sondern das Tiny Basic, welches mit dem
Hydra-Kit geliefert wird und direkt auf dem Propeller läuft.

Gruß
Andreas

von Sebastian (Gast)


Lesenswert?

zwei ram bausteine und ein paar zähler müssten als pseudo-grafikkarte 
ausreichen!?

von Robin T. (Gast)


Lesenswert?

Hallo,

Ich bastel mir gerade einen Akkuentladegerät-Teil (Ist nur nen ding mit 
Zellenzahleinstellung und Konstantstromsenke) für den BASIC Computer. Um 
die genauigkeit der Messungen zu erhöhen wäre eine Referenz Des ATmega32 
AD-Wandlers auf 2,5V zu verkleiner. Momentan ist die ja auf 5V. Ich habe 
gelesen dass der mega32 eine Interne Referenz von 2,56V hat. Könnte man 
die im BASIC einschalten?

Ich mache auch ein Layout in zum größten Teil SMD. Wenn interesse 
Besteht kann ich dass ja wenns fertig ist mal Posten.

Ich schreibe auch ein Programm dazu welches die Enlade-Kurve aufzeichnet 
und im Externen-EEprom speichert.



Gruß

Robin T.

von Robin T. (Gast)


Lesenswert?

Habe gerade herrausgefunden dass die Interne Refrerenz ja schon aktiv 
ist. Sry.

Habe Die Hardware und dass Layout fertig. Aber mit der Software komme 
ich nicht weiter. Im Pseudografik Modus. Ist 0,0 glaube ich oben Link. 
Oder oben rechts. Ist aber auch egal, denn ich weis dass Y=0 oben ist. 
Das macht die Sache schwieriger. Könnte man nicht 0,0 unten Rechts in 
die Ecke machen?


Danke

von Otto (Gast)


Lesenswert?

Hallo Robin,

das ist doch kein grosses Problem:

Du testest, welchem Wert "rechts unten" entspricht - z.B.

X=60, Y=40

Dann ist der Wert für X: 60 minus "Dein X"
und der Wert für Y: 40 minus "Dein Y".

..................60
....................
....................
....................
40.........."Dein 0"

Gruss Otto

von Joerg W. (joergwolfram)


Lesenswert?

@Robin

0,0 ist links oben, Umrechnung lässt sich leicht "von Hand" oder mit 
einer Subroutine erledigen.
Verschiedene ADC-Referenzen könnte ich mit einbauen, dazu müsste dann im 
einfachsten Fall zur ADC-Kanalnummer 8 oder 16 dazuaddiert werden.

GRuß Jörg

von Joerg W. (joergwolfram)


Lesenswert?

Da ich gerade ein bisschen Zeit habe, an der 644er Version zu basteln, 
würde ich gerne wissen, wie hoch das Interesse an einer VGA-Ausgabe 
eigentlich ist. Ein entsprechend programmiertes CPLD braucht man auf 
jeden Fall dafür, die Logik ist schon relativ komplex.
Ich benötige VGA selbst nicht mehr (zumindest für dieses Projekt) und 
möchte nicht wegen eines Features, welches vielleicht die wenigsten 
brauchen,  unnötige Kompromisse eingehen.

Ansonsten läuft das neue Videosystem und die Anpassung vom 
Programm-Editor ist auch fast fertig. Aufgrund der größeren Pagesize 
beim Mega644 habe ich die maximal nutzbaren Programmzeilen auf 95 
begrenzt. Bis zum ersten Release wird es aber noch eine ganze Weile 
dauern...

Gruß Jörg

von Otto (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Joerg,

für mein Projekt benötige ich keine VGA-Grafik.
Eine höhere Auflösung der Grafik und mehr Farben
wäre aber nicht schlecht - ich weiß jedoch nicht,
ob Du das einfacher als VGA realisieren könntest.

Gruss Otto

von Robin T. (rotoe) Benutzerseite


Lesenswert?

Ich brauche auch kein VGA. Wie ist es denn eigentlich mit der 
schnelleren RS232 und dem Display anschluss?


Gruß

Robin T.

von Joerg W. (joergwolfram)


Lesenswert?

Nach langer Zeit will ich mal wieder ein Lebenszeichen von mir geben.

Aus Zeit- und Aufwandsgründen bleibt die Hardware in ihrer gegenwärtigen 
Form auch für die 644er Version bestehen und ein erstes Release wird es 
wohl nicht vor Mitte November geben.
Displayanschluss geht entweder über den Parallelport (kann man leicht in 
BASIC realisieren) oder über I2C und einen zweiten Controller. Für die 
serielle Schnittstelle habe ich eine theoretische Lösung gefunden, die 
bis zu 19200Bps erlaubt, aber wahrscheinlich nur bei PAL funktioniert 
und auch einige gravierende Änderungen am Code mit sich zieht. Da mir 
die 1200 reichen um hin und wieder ein Programm zu übertragen ist noch 
fraglich, ob ich das weiter verfolge...

Zum Thema Auflösung: Die Grundauflösung bleibt gleich, dafür kann für 
jedes einzelne Zeichen Vorder- und Hintergrundfarbe angegeben werden. 
Zudem kann aus zur Zeit aus zwei (festen) Zeichensätzen ausgewählt 
werden. Den editierbaren Zeichensatz und auch den Screen-Editor habe ich 
wieder verworfen, da das einem einfachen Programmaustausch später nur im 
Wege steht.
Es gibt aber auf jeden Fall Symbole für feiner aufgelöste Balken...

Viele Grüße

Jörg

von Otto (Gast)


Lesenswert?

Hallo Joerg,

vielen Dank für Dein Lebenszeichen - ich warte gerne......Mein Display 
kann leider nur "NTSC" - aber für die RS232 habe ich meinen 
TWI-RS232-Umsetzer (in einem MEGA16 nur wegen dem RAM.....), der z. Zt. 
störungsfrei mit 57kBaud läuft - also mach Dir wegen mir deswegen keine 
Sorgen....

Gruss Otto

von Robin T. (rotoe) Benutzerseite


Lesenswert?

Hallo erstmal.

Schön dass noch dran gearbeitet würd. Ich finde auch dass die Baudrate 
nicht so wichtig ist. Ich würde gerne NTSC und PAL behalten.

Gruß

Robin T.

von Paule (Gast)


Lesenswert?

Hallo Jörg,

ich komme (und einige mehr) aus der gleichen "Ecke" wie der Gast "Otto" 
und wir beobachten schon eine Weile mit großem Interesse die Aktivitäten 
von "unserem Otto".

Ich finde Deine Aktivitäten mit dem Atmel Chip sehr interessant. 
Deswegen habe ich mir und einem Freund so ein "Ding" gebaut. Mit der 
Hilfe von Otto laufen diese "Dinger" auch sehr gut.

Der Charme dieser Mega32 ist die Einfachheit des Aufbaus und seine 
universelle Verwendungsmöglichkeiten. Es wird aber immer eine 
Gratwanderung bleiben wenn man hardwareseitig seine Funktionen 
erweitert.

Viel Erfolg bei weiteren Projekten wünscht der Paule, der sich auch 
schon über das "Ding" freut.

von Paule (Gast)


Lesenswert?

Hallo Jörg,

dies klingt aber sehr gut.

MfG Paule

von Joerg W. (joergwolfram)


Lesenswert?

An der Hardware ändert sich nichts, ausser das anstelle des Mega32 eine 
Mega644 in die Fassung gesteckt wird und der 16MHz Quarz durch einen mit 
20MHz ausgetauscht wird.
Die höheren Übertragungsraten will ich damit erreichen, dass die 
Schnittstelle anstelle 1x je Zeile jetzt 5x gesetzt und abgefragt wird. 
Aufgrund eines Features des 644 lässt sich das leider nicht auf den 
Mega32 übertragen. Im Bildbereich werden dazu lediglich insgesamt 6 
Pixel um 20% "gestreckt", in den Bereichen ohne Bilddarstellung müssen 
zusätzliche Interrupts erzeugt werden. 19200 werden aber doch nicht 
gehen, da bei ca. 15KHz Zeilenfrequenz auch 2 Bitwechsel in einer Zeile 
vorkommen können, und dafür reicht die Zeit zur Auswertung am Ende der 
Zeile nicht aus.

Gruß Jörg

von Joerg W. (joergwolfram)


Lesenswert?

Hmmm...Pustekuchen! Bei der höheren Baudrate hat mir Atmel mit den 
Double-Buffering der Compare-register einen dicken Strich durch die 
Rechnung gemacht. Damit ist es nämlich nicht möglich, zusätzliche 
Interrupts innerhalb eines PWM-Zyklus zu generieren. Naja, aber einen 
Versuch war es wert...

Dafür gibts was Neues in pukto Grafik. Die Version mit dem Mega644 wird, 
wenn auch stark beschränkt) Vollgrafik können. Neben dem normalen 
Textmodus sollte noch folgendes möglich sein:

168 x 116 Pixel, 2 aus 8 Farben
120 x  76 Pixel, 4 aus 8 Farben
 84 x  58 Pixel, 8 aus 8 Farben

Allerdings werden in den neuen Modi Sachen wie z.B. INPUT nicht mehr 
funktionieren.

Viele Grüße

Jörg

von Robin T. (rotoe) Benutzerseite


Lesenswert?

Ich hatte da noch eine Frage.

Könnte man eine IDE Festplatte an den Paralellport anschlißen und dann 
im Hauptmenü einen Menüpunkt machen wo man einstellen kann ob eine dran 
ist wie groß die ist. Dann kann man alle Daten übertragen und wieder 
abrufen.

Oder man könnte ein Diskettenlaufwerk anschließen und mit einem 
Menüpunkt(Auf Diskette übertragen) die Daten übertragen.

von Joerg W. (joergwolfram)


Lesenswert?

Nein, das geht nicht so einfach. In der 644er Version kann man Programme 
auch auf dem Dataflash speichern, ob das auch auf die 32er Version 
rückportierbar ist, weiss ich noch nicht.

Gruß Jörg

von Robin T. (rotoe) Benutzerseite


Lesenswert?

Naja auf Dataflash ist auch gut.

von Joerg W. (joergwolfram)


Lesenswert?

Hallo,
mal eine ganz andere Frage, braucht eigentlich jemand den Sourcecode?
Ich bin im Moment am überlegen, die Mega644-er Version nur noch als 
Freeware zu veröffentlichen. Nicht dass ich etwas verbergen möchte, aber 
das nachträgliche Kommentieren von teilweise automatisch per Scripten 
erzeugtem Sourcecode verbraucht viel Zeit und "einfach so" unkommentiert 
nützt der Code sowieso nicht viel und will ich ihn auch nicht 
veröffentlichen.
Und die meisten Mails die ich dazu bekommen habe, waren Anfragen ob ich 
PCB's verkaufe.

Gruß Jörg

von Robin T. (Gast)


Lesenswert?

Also ich brauch ihn nicht denn ich kann sowieso keine µC programmieren. 
Und ich habe an deinen versionen auch nichts zum verbessern :)

von Otto (Gast)


Lesenswert?

Hallo Joerg,

unbedingt benötige ich ihn auch nicht, obwohl ich damals auf der Suche 
nach der Nichtfunktion des Temperatursensors schon mal reingesehen habe, 
um z. B. die I2C-Adresse zu kontrollieren.....

Gruss Otto

von Joerg W. (joergwolfram)


Angehängte Dateien:

Lesenswert?

Hallo,

nach doch etwas längerer Pause möchte ich wenigstens mal einen 
Screenshot
der aktuellen Version veröffentlichen. Da Projekt wird wohl noch ein 
paar
Wochen brauchen, da noch ein paar Tests anstehen und die Dokumentation
erst angefangen ist. Mittlerweile habe ich auch den Meg644 fast voll,
bis auf ein paar Reserven für Bugfixes.
Durch die neuen 3 Grafikmodi (s.o.) mussten Teile der Videobibliothek
umgeschrieben werden und die Entwicklung einigermassen schneller
Bitblt-Funktionen hat fast einen Monat gebraucht.

Bei der Oberfläche hat sich auch einiges geändert, so sind jetzt fast
immer am unteren Bildschirmrand 5 farbige Felder zu sehen. Diese
zeigen die aktuelle Belegung der Tasten ESC und F1-F4 an. Mit einem
kleinen Aufkleber auf der Tastatur muss man sich dann auch das nicht
mehr merken...

Auch wenn das erhoffte Feedback der 32-er Version ausgeblieben ist, wird
der Code auch weiterhin unter der GPL stehen. Bis die Doku zumindest in
Grundzügen fertig ist, wird es kein öffentliches Release geben. Bei
Interesse könnte ich aber in diesem (alten) Thread schon mal ein Hexfile
posten.

Gruß Jörg

von Joerg W. (joergwolfram)


Angehängte Dateien:

Lesenswert?

Das Dataflash-"Filesystem" ist auch (fast) fertig, Es lassen sich 
einzelne
Programme oder auch alle Programme auf einmal laden/speichen und
Dateien löschen. Mit sog. User-Dateien geht das auch aus dem BASIC
heraus.

von roboterheld (Gast)


Lesenswert?

schade das dieses programm nicht in dem normalen avr-studio-asm 
geschrieben wurde.

von hardhans (Gast)


Lesenswert?

Hallo Jörg,

gut,daß es nun weitergeht. Ich habe so nach und nach im stillen 
Kämmerlein alle Varianten des Basic-Computers (mit leicht verändertem 
Layout) durch gespielt. Die Temperaturanzeige hatte sogar einen 
praktischen Nutzen.

Ich bin also sehr an der neuesten Version interessiert.

Viele Grüße

Hans-Jürgen

von Sven (Gast)


Lesenswert?

@Joerg:

Hut ab !
Ich beobachte schon länger wieviel Zeit und Liebe Du in das Projekt 
steckst.
Leider habe ich noch keine Anwendung.
Mir würde aber so etwas wie eine MiniSPS Steuerung mit Auswahl von 
verschiedenen Programmen vorschweben....

Gruß Sven

von Otto (Gast)


Lesenswert?

Hallo Jörg,

das sieht ja schon richtig gut aus und nett von Dir, dass Du einen 
Zwischenstand postest.

Wie sieht eigentlich die Hardware mittlerweile aus - ist es eine 
Lochrasterplatine oder hast Du schon Layout?

Bleiben alle anderen Features erhalten und gibt es neue?

Viele Grüsse

Otto

von TheMason (Gast)


Lesenswert?

@joerg

muß wiedereinmal meinen tiefen respekt vor deiner arbeit bekunden.
dein avr-basic-chip-computer ist echt geil.
bin echt begeistert was du so alles in das dingen reinpackst/reinpacken 
kannst.
weiter so !!
interesse an dem source-code hätte ich evtl. ich programmiere zwar nur 
in c, aber um zu schauen wie du manche sachen löst wäre es sicherlich 
interessant.

gruß
rene

von Joerg W. (joergwolfram)


Lesenswert?

@alle

zuerst mal vielen Dank für die Vorschuss-Lorbeeren...
Von der Hardware-Seite her sieht es so aus, dass man gegenüber der alten
Version nur den Controller und den Quarz tauschen muss. Dadurch bleibt 
es (leider) auch bei den 8 Farben anstatt 16 die die Software hergeben 
würde.
Das Basic hat sich etwas geändert, insbesondere gibt es jetzt ein GOSUB 
und
verschieden lange Abkürzungen.

GOSUB 50 ruft das Unterprogramm in Zeile 50 auf
GOS 2,50 ruft das Unterprogramm in Zeile 50 von Programm 2 auf

- 4 Videomodi, Text und 3x Grafik, Pseudografik bleibt natürlich 
bestehen
- In allen 3 Grafikmodi werden die Farben über eine Palette eingestellt
- erweiterte Zeichenfunktionen (Kreise, drawto)
- wählbares Tastaturlayout (DE,US und ein evtl. länderspezifisches)
- Clone-Funktion (Controllersoftware kann sich komplett kopieren)
- Erweiterte Sprite-Funktionen und mehr Sprites, Daten liegen im Array
- Vergrößertes Array mit 768 Bytes
- 95 Zeilen je Programm
- Zahlenwerte und Funktionen werden "vorcompiliert" gespeichert
...

Im Moment bin ich noch dabei, das Error-Handling a la "ON ERROR GOTO" zu
erweitern.

Gruß Jörg

von Robin T. (rotoe) Benutzerseite


Lesenswert?

Cool! Die Screenshots sehe sehr vielversprechend aus. Ein Hex-File hier 
zu posten find ich gut. Mal so als Demo.

Mach weiter so.


Gruß
Robin T.

von Flo (Gast)


Lesenswert?

Hallo Leute,
sorry das ich diesen alten Thread nochmal ausgrabe aber ich bekomme es 
einfach nicht hin ein Programm im Editor bei der Version 0.93 
abzuspeichern.Sobald ich y drücke ist alles wieder Weg.Hab schon die 
Fuses gecheckt aber keine der Lock Fuses ist gesetzt.

Welchen grund könnte es noch geben warum es nicht klappt?

MfG

Flo

von Joerg W. (joergwolfram)


Lesenswert?

Ich schaue mal in den nächsten Tagen nach, muss aber erstmal Mega32 und 
16MHz Quarz rauskramen...

Jörg

von klaus (Gast)


Lesenswert?

Hi,

ich hab die Homepage endlich mal angesehen und bin dabei auf das 
Pacman-Programm gestoßen. Wenn ich das richtig verstanden habe benötigt 
das den kompletten Speicher.
Da hätte ich nun einen "Verbesserungsvorschlag":
Wie wäre es mit einer Möglichkeit, ein Programm bzw. einen Programmteil 
nachzuladen ?

nur so als Idee,
Gruß klaus

von Ronny M. (hobby-coder)


Lesenswert?

klaus schrieb:
> Hi,
>
> ich hab die Homepage endlich mal angesehen und bin dabei auf das
> Pacman-Programm gestoßen. Wenn ich das richtig verstanden habe benötigt
> das den kompletten Speicher.
> Da hätte ich nun einen "Verbesserungsvorschlag":
> Wie wäre es mit einer Möglichkeit, ein Programm bzw. einen Programmteil
> nachzuladen ?
>
> nur so als Idee,
> Gruß klaus

Das Problem hatte ich schon beim ChipBasic 2 angesprochen... 95 Zeilen 
Programmcode sind halt zuwenig. Beim "nachladen" eines Programmteils 
erhöht sich ebenfalls die Anzahl der Zeilen....

Das heist: Hier muss der nutzbare Programmspeicher erhöht werden. 
Entweder mit EEProms mit mehr Speicherplatz, oder mit einen anderen MCU. 
Das OS muss dann natürlich auch angepasst werden...

von klaus (Gast)


Lesenswert?

Oh,

ich hatte da an einen/den "Stick" gedacht, der in den ISP-Port gesteckt 
wird. Das "Dataflash-Modul".

Aber vielleicht sollte ich mir erstmal ALLES durchlesen bevor ich meinen 
Senf dazu abgebe...
Ich hab' immer "gewartet" bis ich so 'nen kleinen TV gekauft hatte und 
dann aber das Interesse verloren, als der AVR immer größer wurde 
(Mega8-->16-->32-->64).
Aber vielleicht war das ja auch ein anderes Projekt, denn jetzt fällt 
mir auf, dass im Titel "...Mega32" steht.

Ich mach' normalerweise nur mit kleinen AVRs rum. Liegt auch daran, dass 
ich für make (WinAVR/gnu-C) zu blöd bin und mir kommerzielle 
Vollversionen keine 300 Euronen wert sind; 2 oder 4 kByte Code haben's 
bisher eigentlich meist getan...


Gruß klaus


PS.
ich will KEINE Bemerkungen/Diskussion wegen "WinAVR... ganz einfach... 
wenn's erstmal eingerichtet ist...".
Ich habe das mal ein ganzes Wochenende versucht und jetzt hab ich sowas 
von "die Schnauze voll".

von Joerg W. (joergwolfram)


Lesenswert?

Nach ein paar Jahren gibt es eine kleine Erweiterung, und zwar die 
Unterstützung für Tastaturen mit US-Layout.

http://www.jcwolfram.de/projekte/avr/chipbasic32/main.php

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.