www.mikrocontroller.net

Forum: Codesammlung BASIC-Computer mit Mega32


Autor: Joerg Wolfram (joergwolfram)
Datum:
Angehängte Dateien:

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
Autor: Joerg Wolfram (joergwolfram)
Datum:
Angehängte Dateien:

Hier mal ein Screenshot vom Monitorprogramm.
Autor: Simon K. (simon) Benutzerseite
Datum:

Astrein! Absoluter Respekt.
Autor: Enigma (Gast)
Datum:

Und was macht man jetzt damit??
Autor: Harry (Gast)
Datum:

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
Autor: Joerg Wolfram (joergwolfram)
Datum:

@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
Autor: Harry (Gast)
Datum:

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
Autor: Harry (Gast)
Datum:

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
Autor: JanB (Gast)
Datum:

>>...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
Autor: Joerg Wolfram (joergwolfram)
Datum:

@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
Autor: Harry (Gast)
Datum:

@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
Autor: Harry (Gast)
Datum:

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
Autor: Robin T. (Gast)
Datum:

Wie wärs wenn du den Zeichensatz noch ein "µ" verpasst?
Autor: Joerg Wolfram (joergwolfram)
Datum:

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
Autor: Joerg Wolfram (joergwolfram)
Datum:

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




Autor: Robin T. (Gast)
Datum:

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.
Autor: Harry (Gast)
Datum:

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
Autor: Robin T. (Gast)
Datum:

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
Autor: Joerg Wolfram (joergwolfram)
Datum:

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
Autor: Robin T. (Gast)
Datum:

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_PR...
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?
Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

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?
Autor: Joerg Wolfram (joergwolfram)
Datum:

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
Autor: Robin Töniiges (Gast)
Datum:

Glaubst du die neue Version kommt bis Anfang April raus? Sonst bestell
ich jetzt schon Tiel für die alte.
Autor: Joerg Wolfram (joergwolfram)
Datum:

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
Autor: Robin Töniiges (Gast)
Datum:

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?
Autor: Joerg Wolfram (joergwolfram)
Datum:

@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
Autor: Sebastian Heiliger (Gast)
Datum:

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 :-)
Autor: Joerg Wolfram (joergwolfram)
Datum:

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
Autor: Joerg Wolfram (joergwolfram)
Datum:
Angehängte Dateien:

"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


Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

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?
Autor: Joerg Wolfram (joergwolfram)
Datum:

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





Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

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?
Autor: Joerg Wolfram (joergwolfram)
Datum:

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
Autor: Joerg Wolfram (joergwolfram)
Datum:
Angehängte Dateien:

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

Jörg
Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

Hallo,

Habe ein Problem.

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

Hab ich da was verkehrt verstanden?
Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

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
Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

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?
Autor: Joerg Wolfram (joergwolfram)
Datum:

@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
Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

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
Autor: Otto (Gast)
Datum:

Hallo Robin,

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

Gruß Otto
Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

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.
Autor: Joerg Wolfram (joergwolfram)
Datum:
Angehängte Dateien:

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
Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

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.
Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

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?
Autor: Robin (Gast)
Datum:

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?
Autor: Harry (Gast)
Datum:

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
Autor: Otto (Gast)
Datum:

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
Autor: Robin (Gast)
Datum:

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.
Autor: Otto (Gast)
Datum:

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
Autor: Robin (Gast)
Datum:

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.
Autor: Robin (Gast)
Datum:

Sagt er denn nach dem Ausführen des Programms: "ISP Error" oder was
passiert da genau?
Autor: Robin (Gast)
Datum:

Sorry nicht ISP I²C meine ich
Autor: Otto (Gast)
Datum:

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
Autor: Joerg Wolfram (joergwolfram)
Datum:

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
Autor: Otto (Gast)
Datum:

Hallo Jörg,

kannst Du bitte einen Hinweis zu den
Temperatursensoren geben ?

Viele Grüße
Otto
Autor: Joerg Wolfram (joergwolfram)
Datum:

@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
Autor: Otto (Gast)
Datum:

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"?
Autor: Joerg Wolfram (joergwolfram)
Datum:

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
Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

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
Autor: TheMason (Gast)
Datum:

@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.
Autor: TheMason (Gast)
Datum:

@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).
Autor: Otto (Gast)
Datum:

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


Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

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?
Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:
Angehängte Dateien:

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

Hier die ganze Station.
Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:
Angehängte Dateien:

Noch eins
Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:
Angehängte Dateien:

Und dass letzte
Autor: Otto (Gast)
Datum:
Angehängte Dateien:

Hallo,

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

Gruß Otto
Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

Da halte ich von meinen Abgeschrimten Scart kabel mehr :)
Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

@Otto: Was haste denn schon alles für Programme geschrieben?
Autor: Otto (Gast)
Datum:

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
Autor: Joerg Wolfram (joergwolfram)
Datum:

@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

Autor: Joerg Wolfram (joergwolfram)
Datum:

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
Autor: Otto (Gast)
Datum:

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
Autor: Joerg Wolfram (joergwolfram)
Datum:

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
Autor: Otto (Gast)
Datum:

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
Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

@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.
Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

Habe mich etwas komisch ausgedrückt. Ich meine ganz Konkret 0-255
ansprechen.
so wäre es super
Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

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.
Autor: Joerg Wolfram (joergwolfram)
Datum:

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
Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

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
Autor: Joerg Wolfram (joergwolfram)
Datum:

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
Autor: Christian (Guest) (Gast)
Datum:

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.
Autor: Robin (Gast)
Datum:

Kommt dass Update heute noch oder erst morgen?
Oder überhaupt dieses Wochenende?
Autor: Joerg Wolfram (joergwolfram)
Datum:

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
Autor: Otto (Gast)
Datum:

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
Autor: Robin T. (Gast)
Datum:

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.
Autor: Joerg Wolfram (joergwolfram)
Datum:

@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


Autor: Robin (Gast)
Datum:

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
Autor: Andreas K. (oldcoolman)
Datum:

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
Autor: Joerg Wolfram (joergwolfram)
Datum:

@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
Autor: Robin T. (Gast)
Datum:

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
Pass 1...
Pass 2...
main.asm(75) : error : [Macro: macros.inc: 31:] Relative address out of range (-2048 <= k <= 2047)
main.asm(78) : error : No register associated with XL
main.asm(78) : error : ldi can only use a high register (r16 - r31)
main.asm(79) : error : No register associated with XL
main.asm(80) : error : No register associated with XL
main.asm(80) : error : ldi can only use a high register (r16 - r31)
main.asm(81) : error : No register associated with XL
main.asm(82) : error : No register associated with XL
main.asm(82) : error : ldi can only use a high register (r16 - r31)
main.asm(83) : error : No register associated with XL
main.asm(83) : Maximum error count reached. Exiting...
done


Assembly aborted with 10 errors and 0 warnings.



Die ersten zeilen vom avr_libmake sehen so aus:
$libpath="libs.inc";
$listfile="libmake.lst";
$asmfile=$ARGV[0];
$assembler="avra $asmfile";

$jumps=0;
$calls=0;
$funct=0;
$libs=0;
$incfiles=0;

$dummy=`rm -f libs.inc`;
$dummy=`rm -f macros.inc`;
$dummy=`touch libs.inc`;
$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
Autor: Joerg Wolfram (joergwolfram)
Datum:

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
Autor: Robin T. (Gast)
Datum:

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
Autor: Robin T. (Gast)
Datum:

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.
Autor: Robin T. (Gast)
Datum:
Angehängte Dateien:

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?
Autor: Joerg Wolfram (joergwolfram)
Datum:

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
Autor: Joerg Wolfram (joergwolfram)
Datum:

Nachtrag: Der Aufruf wäre dann:

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

Gruß Jörg
Autor: Robin T. (Gast)
Datum:

Kommt das Update noch heute?

Kann nicht schlafen. Bin so aufgeregt :)
Autor: Otto (Gast)
Datum:

ich auch....

Viele Grüße

Otto
Autor: Robin T. (Gast)
Datum:

Wann kommt denn die neue Version?


P.S.: Will nicht nerven sry wenns so rüberkommt.
Autor: Harry (Gast)
Datum:

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
Autor: Joerg Wolfram (joergwolfram)
Datum:

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
Autor: Robin T. (Gast)
Datum:

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.
Autor: Joerg Wolfram (joergwolfram)
Datum:

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
Autor: Robin T. (Gast)
Datum:

Dann noch gutes gelingen.
Autor: Otto (Gast)
Datum:

von mir auch!

viele Grüße

Otto
Autor: Reiner Ziemann (rzett)
Datum:

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
Autor: Joerg Wolfram (joergwolfram)
Datum:
Angehängte Dateien:

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
Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

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.
Autor: Joerg Wolfram (joergwolfram)
Datum:

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
Autor: Joerg Wolfram (joergwolfram)
Datum:
Angehängte Dateien:

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
Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

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
Autor: Otto (Gast)
Datum:

Hallo Robin,

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

Gruß Otto
Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

Danke für deine Antwort. Leider glaube ich dass ich dem BASIC-PC nicht
dazu bewegen kann diese Zeichen über die Serielle Schnittstelle
auszugeben.
Autor: Otto (Gast)
Datum:

Hallo Robin,

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

SPUT 10
gibt einen Zeilenvorschub an die serielle Schnittstelle aus.


Otto
Autor: Otto (Gast)
Datum:

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
Autor: Otto (Gast)
Datum:

Ergänzung:

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

Otto
Autor: Joerg Wolfram (joergwolfram)
Datum:

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

Gruß Jörg
Autor: Otto (Gast)
Datum:

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
Autor: Otto (Gast)
Datum:

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
Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

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.
Autor: Joerg Wolfram (joergwolfram)
Datum:

@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
Autor: Otto (Gast)
Datum:

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
Autor: Otto (Gast)
Datum:

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
Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

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.
Autor: Joerg Wolfram (joergwolfram)
Datum:

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
Autor: Robin T. (Gast)
Datum:

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 :)
Autor: Robin T. (Gast)
Datum:
Angehängte Dateien:

Sorry Datenblatt vergessen.
Autor: Joerg Wolfram (joergwolfram)
Datum:

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
Autor: Robin T. (Gast)
Datum:
Angehängte Dateien:

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.
Autor: Sam (Gast)
Datum:

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...
Autor: Sebastian H (Gast)
Datum:

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.
Autor: Joerg Wolfram (joergwolfram)
Datum:

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
Autor: Sam (Gast)
Datum:

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
Autor: Philipp Karbach (Gast)
Datum:

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.
Autor: Otto (Gast)
Datum:

Hallo Jörg,

da freue ich mich schon drauf.....

Viele Grüße

Otto
Autor: Joerg Wolfram (joergwolfram)
Datum:

@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
Autor: Sam (Gast)
Datum:

Kann man mit diesem System eigentlich eine Normale Festplatte ansteuern?

Gruß Sam
Autor: Balu (Gast)
Datum:

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 ...
Autor: Robin T.. (Gast)
Datum:

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.
Autor: Joerg Wolfram (joergwolfram)
Datum:

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
Autor: Robin T.. (Gast)
Datum:

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.
Autor: Stephan (Gast)
Datum:

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

Stephan.
Autor: Otto (Gast)
Datum:

Hallo Jörg,

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

Schönes WE und

Gruß Otto
Autor: core (Gast)
Datum:

nimm mege8 oder mega32, sind altbekannte chips die auch fast jeder
bastler in  der kiste hat.
Autor: Otto (Gast)
Datum:

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
Autor: Joerg Wolfram (joergwolfram)
Datum:

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
Autor: Sebastian Heyn (Gast)
Datum:

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
Autor: Robin T.. (Gast)
Datum:

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
Autor: Sebastian Heyn (Gast)
Datum:

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
Autor: Andreas Jakob (Gast)
Datum:

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
Autor: Robin T.. (Gast)
Datum:

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 :)
Autor: Andreas Jakob (Gast)
Datum:

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
Autor: Joerg Wolfram (joergwolfram)
Datum:

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
Autor: Andreas Jakob (Gast)
Datum:

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
Autor: core (Gast)
Datum:

...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.
Autor: Andreas Jakob (Gast)
Datum:

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
Autor: Sebastian (Gast)
Datum:

zwei ram bausteine und ein paar zähler müssten als pseudo-grafikkarte
ausreichen!?
Autor: Robin T. (Gast)
Datum:

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.
Autor: Robin T. (Gast)
Datum:

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
Autor: Otto (Gast)
Datum:

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
Autor: Joerg Wolfram (joergwolfram)
Datum:

@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
Autor: Joerg Wolfram (joergwolfram)
Datum:

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
Autor: Otto (Gast)
Datum:
Angehängte Dateien:

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
Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

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


Gruß

Robin T.
Autor: Joerg Wolfram (joergwolfram)
Datum:

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
Autor: Otto (Gast)
Datum:

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
Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

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.
Autor: Paule (Gast)
Datum:

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.
Autor: Paule (Gast)
Datum:

Hallo Jörg,

dies klingt aber sehr gut.

MfG Paule
Autor: Joerg Wolfram (joergwolfram)
Datum:

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
Autor: Joerg Wolfram (joergwolfram)
Datum:

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
Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

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.
Autor: Joerg Wolfram (joergwolfram)
Datum:

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
Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

Naja auf Dataflash ist auch gut.
Autor: Joerg Wolfram (joergwolfram)
Datum:

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
Autor: Robin T. (Gast)
Datum:

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

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
Autor: Joerg Wolfram (joergwolfram)
Datum:
Angehängte Dateien:

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
Autor: Joerg Wolfram (joergwolfram)
Datum:
Angehängte Dateien:

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.
Autor: roboterheld (Gast)
Datum:

schade das dieses programm nicht in dem normalen avr-studio-asm
geschrieben wurde.
Autor: hardhans (Gast)
Datum:

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
Autor: Sven (Gast)
Datum:

@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
Autor: Otto (Gast)
Datum:

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
Autor: TheMason (Gast)
Datum:

@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
Autor: Joerg Wolfram (joergwolfram)
Datum:

@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
Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

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.
Autor: Flo (Gast)
Datum:

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
Autor: Joerg Wolfram (joergwolfram)
Datum:

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

Jörg
Autor: klaus (Gast)
Datum:

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
Autor: Ronny Minow (hobby-coder)
Datum:

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...
Autor: klaus (Gast)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel




Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen.
Siehe Bildformate
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net