www.mikrocontroller.net

Forum: Codesammlung AVR-ChipBasic2 - BASIC-Computer mit ATMega 644

Autor: Joerg Wolfram (joergwolfram)
Datum: 14.01.2008 23:37
Dateianhang: avr-chipbasic2_0.65.tar.gz (647,5 KB, 223 Downloads)

Auch wenn noch nicht alle Funktionen voll ausgetestet sind, gibt es hier
endlich das erste Release des BASIC-Computers mit dem Mega644. Es gibt
jede Menge Neues, allerdings zu Lasten der Abwärtskompatibilität zu
früheren Versionen.

Features:

ls Eingabegerät dient eine normale PS2-Computertastatur, als
Ausgabegerät ein Fernsehgerät mit Scart-Eingang (Farbe) oder BAS-Eingang
(Graustufen) oder auch verschiedene PAL-/NTSC-taugliche TFT-Displays.

-  95 Programmzeilen mit maximal 32 nutzbaren Zeichen, Fullscreen-Editor
-  8 Programme im internen Flash
-  Tiny-Basic-Programmiersprache mit Erweiterungen
-  Eigene Fehlerbehandlung mit ONERR möglich
-  30x23 Zeichen mit maximal 8 Vorder- und Hintergrundfarben und
-  Pseudografik im Textmodus
-  3 Videomodes mit Vollgrafik und Farbpalette
    * 168x116 in 2 aus 8 Farben
    * 120x76 in 4 aus 8 Farben
    * 84x58 in 8 aus 8 Farben
-  Punkte, Linien, Rechtecke und Kreise (Ellipsen), auch gefüllt
-  PAL/NTSC und Synchronsignale über Jumper einstellbar
-  PS2-Tastatur zur Eingabe, Keyboard-Layout ist dauerhaft umschaltbar
-  1-Kanalige Audioausgabe (Noten, Rauschen) mit Hüllkurve
-  serielle RS232-Schnittstelle mit 1200 Baud und Ladungspumpe
-  parallele Druckerschnittstelle, auch als I/O und Analogeingänge
-  optionales Daten-EEPROM (24C64) für Datenlogger etc
-  Funktionen für bis zu 8 LM75 Temperatursensoren
-  Up/Download von Programmen über die serielle Schnittstelle
-  Listingdruck über die Druckerschnittstelle
-  automatischer Start des 1. Programmes nach Einschalten über Jumper
-  Tastenkombinationen für Abbruch, Neustart, Screenshot
-  Monitor mit Variablen- und Stackanzeige, Einzelschrittbetrieb
-  Universelle I2C-Ansteuerung
-  Einfaches Dateisystem auf ATMEL Dataflash
-  Clone-Funktion zum Kopieren der Software auf weitere Controller

Was noch fehlt, sind ein paar Beispiele und der Zeichensatz ist noch
nicht
voll belegt.

Homepage ist in Arbeit, wird aber noch etwas dauern...

Gruß Jörg
Autor: Joerg Wolfram (joergwolfram)
Datum: 14.01.2008 23:57
Dateianhang: sinus-mode2.png (495 Bytes, 233 Downloads)
preview image for sinus-mode2.png

Bevor Fragen kommen, die Hardware ist die gleiche wie bei den früheren
Versionen, halt nur ein anderer Controller und ein 20MHz Quarz. Die
Hardware-Doku ist noch von der alten Version. Anbei noch ein Screenshot
in Grafikmode 2 (120x76x4)
PROGRAM 1:Sinus-c     
01 CLS :VMODE 2
02 DRAW 35,0,35,119,1
03 PLOT 35,0
04 FOR X=0 TO 119
05 W=30*X:V=SIN(W)/10
06 DRAWTO 35-V,X,2
07 NEXT :COLOR 3
08 ? @60,0;"Sinus"
09 WKEY Z
#

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

Hallo Joerg,

erst einmal vielen Dank - schnell einen Controller besorgen und dann mal
sehen, was Du wieder schönes gezaubert hast.....

Viele Grüsse

Otto
Autor: Otto (Gast)
Datum: 15.01.2008 00:36

Hallo Jörg,

wo hast Du den "ATmega644-20PU" denn her ?

Gruss Otto
Autor: Hauke Radtki (lafkaschar) Benutzerseite
Datum: 15.01.2008 00:38

Ich les den Thread schon seit anfang an (also den alten ;) ). Echt
erstaunlich was du da auf die Beine stellst!

Wenn ich Zeit habe muss ich mir auch so nen kleinen computer bauen. Und
dieser hat den Namen Computer echt verdient!
Autor: Joerg Wolfram (joergwolfram)
Datum: 15.01.2008 09:05

@Otto
Da hatte ich damals meine gekauft:

http://stores.ebay.de/AVR-Controller-PAKTEK

@Alle
In den Transferprogrammen (Perl-Scripten) ist noch ein "Fehler" drin,
anstelle 9600 muss es natürlich 1200 bei der Bitraten-Einstellung
heissen.
Das liegt an meinem IBM T23, wo ich die Bitrate *8 einstellen muss.

Die Webseite ist mittlerweise auch online:

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

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

Mein mega644 ist auch schon unterwegs. "Ich freu mich drauf"^^
Autor: TheMason (Gast)
Datum: 15.01.2008 19:37

@joerg wolfram

wieder mal : deep respect !!!

echt irre was du alles in so einem controller reinprügelst :-)
Autor: Christian Berger (casandro)
Datum: 15.01.2008 21:33

Geil wäre das noch mit Forth. Für diese Programmiersprache gibt es
echte Compiler welche auf dem AVR selbst laufen.

http://sourceforge.net/projects/avrforthlike/
Ist so einer (so weit wie ich weiß).


Forth Compiler hätten halt nicht nur den Vorteil, dass die schneller als
interpretierte Sprachen sind, nein, es ist sogar eine
Entwicklungsumgebung dabei. (läuft dann auch auf dem Zielsystem)
Autor: Hauke Radtki (lafkaschar) Benutzerseite
Datum: 15.01.2008 22:30

Man MUSS eine Sprache interpretieren, wenn man sie zur laufzeit im AVR
programmieren, laden und ausführen will. Also total am Projekt
vorbeigeschossen ;)
Autor: Christian Berger (casandro)
Datum: 16.01.2008 06:51

Hauke Radtki wrote:
> Man MUSS eine Sprache interpretieren, wenn man sie zur laufzeit im AVR
> programmieren, laden und ausführen will. Also total am Projekt
> vorbeigeschossen ;)

Nein, wenn der Compiler auf dem AVR selbst läuft, kannst Du das auch so
machen. Du kannst ja den Flash des AVRs zur Laufzeit beschreiben.
Somit kannst Du sehr wohl die Programme zur Laufzeit programmieren,
laden und ausführen.
Autor: Christian Berger (casandro)
Datum: 16.01.2008 08:27

Also ich hab mir gerade die Homepage angeschaut, das ist wirklich
beeindruckend.

Ich weiß nicht, wie viele Taktzyklen Du noch in der hsync ISR frei hast,
aber ich hätte hier noch etwas Code für FM-Synthese. Ich kann auch im
Februar meinen Spielzeugvocoder auf AVR-Assembler portieren. Dann hätte
man Sprachsynthese.

Wenn ich mal wirklich Zeit habe, dann kann ich auch noch probieren
eine simple Spracherkennung zu implementieren.
Autor: Christian Berger (casandro)
Datum: 16.01.2008 08:33

Ach ja, falls Du aus der Sache etwas 'Profit' schlagen möchtest, 2600
sucht ständig Artikel. Du bekommst dafür ein T-Shirt und ein Jahresabo
der Zeitschrift. http://www.2600.com/magazine/
Autor: roboter (Gast)
Datum: 16.01.2008 08:50

...Geil wäre das noch mit Forth....


leider hast du vergessen, das 90% der teilnehmer hier die sprache forth
nicht interpretieren können, geschweige damit etwas zu proggen.
ich verfolge sei 20 jahren dieses forth, die anhänger sind rar, die
überzeugten noch rarer.

es gibt da kein durchstehvermögen. schade...
Autor: roboter (Gast)
Datum: 16.01.2008 08:55

das gleich wird auch mit diesem basic-computer(644) geschehen.
kurzsichtig in einer sprache zusammengestellt, die der geringste teil
nachverfolgen kann (linux). warum wird nicht einfach der assembler vom
avr-studio genommen. jeder kann dieses programm verfolgen und studieren.

in 6 monaten redet keiner mehr über dieses eigentliche geniale produkt.
nur noch noch einpaar hardliner und die sind wenig....schade.

aber wenn man das nicht anders haben möchte...na...denn...ihr hardliner.
Autor: Gerd G. (elektrikser)
Datum: 16.01.2008 12:14

Das Ding ist mit Assembler programmiert. Kannst dir in AVR Studio
ansehen und auch compilieren.
Du musst halt das gepackte Verzeichnis öffnen, um zu sehen, wie er es
gemacht hat. Aber dazu ist ein Windows-Anwender, wie z. B. ich, auch in
der Lage...
Autor: Christian Berger (casandro)
Datum: 16.01.2008 15:07

Reg Dich ab, das ist ein Trollroboter.
Autor: Gerd G. (elektrikser)
Datum: 16.01.2008 16:07

Habe es vermutet. Aber ich hab einen schlechten Tag und musste mich
abreagieren...

Ich finde das Teil echt super. Allerdings habe ich noch keine Anwendung
für mich gefunden.

Gruß Gerd
Autor: casan (Gast)
Datum: 16.01.2008 20:02

...Aber ich hab einen schlechten Tag und musste mich
abreagieren.....


scheisse gelaufen , wenn man straff im arbeitsleben steht, oder?
hast du keine frau zum abreagieren ? du bist schon so ein
sozialschwacher troll....lol....
Autor: casan (Gast)
Datum: 16.01.2008 20:03

...Du musst halt das gepackte Verzeichnis öffnen, um zu sehen, wie er es
gemacht hat. ....


das ist schomal scheisse, so ein umstand.
Autor: Christian Berger (casandro)
Datum: 16.01.2008 20:10

Gerd G. wrote:
> Ich finde das Teil echt super. Allerdings habe ich noch keine Anwendung
> für mich gefunden.
>
> Gruß Gerd

Also was mich im Moment noch ein wenig stört ist der BASIC-Interpreter.
Der bestehende ist jedoch anscheinend gut genug um als Sprungbrett für
die weitere Entwicklung zu dienen.

Also die Anwendung liegt doch auf der Hand. Anstelle eines teueren
Aldi-PCs kann man sich jetzt den Rechner selber bauen. Einen Rechner,
welchen man wahrscheinlich sogar komplett verstehen kann.
Autor: Joerg Wolfram (joergwolfram)
Datum: 16.01.2008 21:45

@Christian

die ISR ist eigentlich schon übervoll, wenn ein serielles Zeichen und
ein Zeichen von der Tastatur in der gleichen Zeile kommen, kann es schon
zu Bildstörungen kommen. Aber das ist so selten und tritt nur auf, wenn
man es provoziert. Einfacher ist es, einen zweiten Chip über I2C
anzusteuern.

Ich denke, mit so einem Teil kann man lernen, wie ein Computer
funktioniert.  Man kann ihn auf einem Steckbrett aufbauen, kann selbt
Programme schreiben,
messen, steuern, regeln...

Einen Compiler mit einzubauen hatte ich zwischenzeitlich auch schon mal
vor, halte es aber für unzweckmäßig. In der aktuellen Version wird schon
fast alles in Token umgesetzt, auch Zahlen und Funktionen. Wenn man aber
zu weit in diese Richtung geht oder gar optimieren will, wird das
Rückübersetzen in den urprünglichen Quelltext sehr aufwändig oder gar
unmöglich. Und dann hat man Source UND Compilat im Speicher. Auch in der
jetzigen Version gibt es ein paar Effekte, z.B.:

- aus A=$010 wird nach dem Speichern A=$10,
  Wert wird als Ein-Byte-Hexvalue gespeichert

- aus A=$110 wird nach dem Speichern A=$0110,
  Wert wird als Zwei-Byte-Hexvalue gespeichert

Die "Assemblerproblematik" kommt wahrscheinlich jedes mal wieder neu
auf, meiner Meinung nach sind das Leute, die Open Source Entwickler als
Dienstleister und sich als König Kunde verstehen.

Gruß Jörg
Autor: TheMason (Gast)
Datum: 16.01.2008 22:24

>Die "Assemblerproblematik" kommt wahrscheinlich jedes mal wieder neu
>auf, meiner Meinung nach sind das Leute, die Open Source Entwickler als
>Dienstleister und sich als König Kunde verstehen.

wird es aber wohl leider immer geben :-(
ich bin zwar selbst nicht in asm bewandert, aber wenn mich ein
algorithmus interessiert der nur in asm existiert und ich diesen
verstehen will komme ich eben nicht um asm rum, so einfach ist das.

aber mal im ernst : wie lange baust du schon an dem dingen rum ? ich
meine alles in asm zu machen, da muß man doch wirklich fit sein, viel
zeit haben und einen irre guten überblick ?
ich programmiere recht viel (in c) und mir fällt es manchmal schwer den
überblick zu behalten, wie machst du das ? (erstaunt ist ....)
Autor: Otto (Gast)
Datum: 16.01.2008 22:27

Hallo Joerg,

ich finde es ganz toll, dass Du uns Dein Projekt kostenlos zur Verfügung
stellst - der Sinn desselben ist, in "Basic" zu programmieren und nicht
am "Betriebssystem" herumzubasteln.

Da aber die "Basic-Fraktion" in die Jahre gekommen ist und alle
"Klick-Buntis" meinen, nur noch mit wichtig klingenden
Programmiersprachen um sich werfen zu müssen, obwohl sie diese gar nicht
beherschen, wird es immer solche posts geben - da ist sicher auch Neid
mit bei.

Davon abgesehen würde ich durchaus auch einige Euro dafür bezahlen, wenn
Du Deine Produkte fix und fertig oder als Bausatz vertreiben würdest -
wäre mir der Spass echt wert......und ich würde immer noch nicht darüber
"mosern", dass Du unter Linux entwickelst.

Gruss Otto
Autor: Gerd G. (elektrikser)
Datum: 16.01.2008 23:06

Ich habe nichts gegen Assembler, habe es ja lange genug genutzt.
Allerdings möchte ich C und C++ nicht mehr missen.

>Also was mich im Moment noch ein wenig stört ist der BASIC-Interpreter.
>Der bestehende ist jedoch anscheinend gut genug um als Sprungbrett für
>die weitere Entwicklung zu dienen.
>
>Also die Anwendung liegt doch auf der Hand. Anstelle eines teueren
>Aldi-PCs kann man sich jetzt den Rechner selber bauen. Einen Rechner,
>welchen man wahrscheinlich sogar komplett verstehen kann.

Es ist auf jeden Fall eine gute Grundlage um sich sein eigenes Gerät
zusammen zu bauen. Man muss es ja nicht unbedingt mit dem Basic
probieren, obwohl ich schwer am überlegen bin, was man da noch
herausholen kann. Für Basic ist der AVR gut ausreichend, aber für eine
andere Sprache wäre ein ARM angemessener...
Autor: Christian Berger (casandro)
Datum: 17.01.2008 05:47

TheMason wrote:

> ich programmiere recht viel (in c) und mir fällt es manchmal schwer den
> überblick zu behalten, wie machst du das ? (erstaunt ist ....)

Ich hab ja auch schon mal größere Dinge in Assembler programmiert und
kann einfach sagen, Assembler ist wie ein vereinfachtes C. (zumindest
auf guten Controllern) Ich habe mir auch schon mal überlegt, etwas in C
zu programmieren, nur da scheiterte ich schon an der
Variablendefinition. Solche Dinge sind in Assembler viel einfacher.

Also es ist im Prinzip nicht schwieriger wie in C. C ist ja auch keine
Hochsprache.
Autor: Joerg Wolfram (joergwolfram)
Datum: 17.01.2008 11:11

Mit den AVRs habe ich im Frühjahr 2006 begonnen, Auf Arbeit hatte ich
auch schon vorher mal ein bisschen probiert, bin aber beim MCS51
geblieben. Erstes Projekt und "Stein des Anstosses" war eine kleine
Spieldose mit zwei Stimmen und 5 Melodien zum Einschlafen für unseren
damals gerade geborenen Sohn. Dabei kam mir die Idee mit der
Videoausgabe zum Debuggen und letztendlich die mit dem Einchip-Computer.
Bis zur ersten Release Mega16  hat es dann ungefähr ein halbes Jahr
gebraucht, die Mega32-Version ist zu großen Teilen während des
Jahreswechsels 2006/2007 entstanden, danach kamen dann einige
Konzeptionen die ich wieder verworfen habe. Mittlerweile bschränkt sich
die für meine Projekte verfügbare Zeit auf die Nachtstunden :) und so
geht es etwas schleppender voran.
Mikrocontroller programmiere ich eigentlich nur in Assembler, da das für
mich einfach übersichtlicher ist. Anstelle vieler Variablen und
Funktionen
gibt es ein paar Register und Speicher. Damit kann ich Algorithmen im
Kopf entwickeln, egal wo ich gerade bin. Dann noch eintippen, Fehler
rausmachen und fertig (oder auch nicht ;)...

Für große Projekte "bastle" ich einen großen Teil der Zeit an den
Konzepten. Wie kann ich die Funktion aufteilen? Was für Schnittstellen
brauche ich? Für die mehrfache Verwendbarkeit von Codeteilen habe ich
mir azu eine Art "Bibliothekskonzept" ausgearbeitet, welches die
erweiterten Makrofunktionen des AVRA-Assemblers benutzt. So wird nur der
Code aus der Library mit eingebunden, den ich auch wirklich brauche und
das nur durch Aufruf des Makros.
Anderen Code als auseinanderzunehmen oder Kompatibilität zu anderen
Systemen zu wahren halte ich persönlich für Innovations-hinderlich, weil
es das Denken in bekannte Bahne lenkt und somit einschränkt. Und so ist
alles (bis auf den Zeichensatz, den ich aus einem alten Buch "abgemalt"
habe) auf meinem "eigenen Mist gewachsen".

Und noch eine gute Nachricht:

Thomas Heldt, der auch die hier vorgestellen AVR-Webserver als Bausatz
vertreibt, wird demnächst auch einen BASIC-Computer-Bausatz im Angebot
haben.


Gruß Jörg
Autor: Thomas H. (pcexperte) Benutzerseite
Datum: 17.01.2008 11:53

Hallo alle zusammen,

nachdem Jörg zugestimmt hat habe ich bereits ein neues Board erstellt
und werde im kommenden Monat die Platinen fertigen lassen, es wird dann
sowohl
Leerplatinen als auch Bausätze geben. Der Preis wird wieder so sein das
ich den Bausatz fast zum Selbstkostenpreis im Shop meiner Frau anbieten
werde.

Allerdings lohnt sich das alles nur wenn wenigstens 10 Bausätze, Preis
ca. 34,95 EUR, verkauft werden um die Kosten für die Platinen raus zu
holen.

Wer also Interesse an einem Bausatz oder einer Leerplatine hat kann sich
schon jetzt bei mir melden und wenn dann 10 Bestellungen da sind stelle
ich den Bausatz und die Leerplatinen im Shop ein.

Die Lieferzeit wird dann ca. 3 Wochen dauern da ich die Platinen dann
mit Bestückungsdruck ordern werde, und eine Anleitung will auch
geschrieben sein, dazu baue ich dann selber erst einmal ein Board auf um
sicher zu gehen das alles funktioniert.
Autor: Robin T. (Gast)
Datum: 19.01.2008 16:07

Hi Leute,

habe da mal ne Frage was das Nschließen eines VGA Monitors an den
Mini-PC angeht.

Habe da so einen alten PC-Monitor der bis zuletzt (vor 3 Tagen)
einwandfrei funktioniert hat. Weil aber das Bild langsam matschig wurde
hab ich gedacht mach ich mal einen Stecker für den Mini-PC dran. Leider
funktioniert es nicht. Ich habe VSync und HSync und RGB Kanäle
angeschlossen aber es kommt kein Bild. Der Monitor geht aus dem Standby
raus und zischt aber sonst nichts. Vlt. habe ich ihn auch schon
gschrottet bei den versuchen ihn anzuschließen glaub ich aber nicht.

Weiß jemand Antwort?


Gruß

Robin T.
Autor: Otto (Gast)
Datum: 19.01.2008 16:22

Hallo Robin,

wenn es kein "Multisync" ist, wird er mit dem Signal des BASIC-COMPUTER
nicht zurecht kommen.

Gruss Otto
Autor: Robin T. (Gast)
Datum: 19.01.2008 16:24

Was heißt Multisync?

Ich dachte H- und VSync reichen? Viel mehr Anschlüsse sind da ja auch
nicht die irgendwie die Bezeichnung Synchronisation tragen.
Autor: Christian Berger (casandro)
Datum: 19.01.2008 16:29

Robin T. wrote:
> Ich dachte H- und VSync reichen? Viel mehr Anschlüsse sind da ja auch
> nicht die irgendwie die Bezeichnung Synchronisation tragen.

Das Problem ist, welche vertikalen und horizontalen Ablenkfrequenzen
Dein Teil kann.
Du bräuchtest 15,625 kHz Horizontal und 50 Hz Vertikal. Das kann kaum
ein normaler VGA-Monitor.
Autor: Robin T. (Gast)
Datum: 19.01.2008 16:32

mmh. Mist. Jörg hat ja gesagt ein NTSC/PAL tauglicher Bidlschirm kann an
den Mini-PC angeschlossen werden. Aber ich vermute mal das mein alter
Röhrenmonitor das nicht kann oder?
Autor: Christian Berger (casandro)
Datum: 19.01.2008 16:42

Robin T. wrote:
> mmh. Mist. Jörg hat ja gesagt ein NTSC/PAL tauglicher Bidlschirm kann an
> den Mini-PC angeschlossen werden. Aber ich vermute mal das mein alter
> Röhrenmonitor das nicht kann oder?

Tipp mal die Bezeichnung des Monitors in eine Suchmaschine rein.
Vielleicht findest Du da was. Also NTSC oder PAL muss er nicht können,
nur das Timing muss er unterstützen.

Vielleicht kannst Du aber mal probieren, den Controller zu übertakten.
Dann kommst Du näher an das VGA Timing dran.
Autor: Robin T. (Gast)
Datum: 19.01.2008 17:06

Das sollen angeblich die Daten sein:

Horizontaler Frequenzbereich: 30 - 64 kHz
Vertikaler Frequenzbereich: 50 - 100 Hz
Maximale Auflösung: 1280 x 1024


Ich weiß aber auch nicht was der BASIC-PC raus gibt. Ich werde mal
nachmessen
Autor: Robin T. (Gast)
Datum: 19.01.2008 17:13

Achso und Die Synchronisationspegel sind TTL TGB ist 0,7V. Die Auflösung
ist falsch. Maximal geht 1024X768. Hab das Hanbuch gefunden.
Autor: Robin T. (Gast)
Datum: 19.01.2008 17:13

TGB=RGB

sry
Autor: Christian Berger (casandro)
Datum: 19.01.2008 17:33

Robin T. wrote:
> Das sollen angeblich die Daten sein:

da macht er nicht mit:

> Horizontaler Frequenzbereich: 30 - 64 kHz

Das ginge sogar:

> Vertikaler Frequenzbereich: 50 - 100 Hz



> Ich weiß aber auch nicht was der BASIC-PC raus gibt. Ich werde mal
> nachmessen

Der BASIC-PC muss horizontal 15,625 kHz und Vertikal 50 Hz ausgeben.
Dein Monitor geht leider horizontal nicht so weit runter.
Autor: Joerg Wolfram (joergwolfram)
Datum: 19.01.2008 21:22

VGA (über ein CPLD am Videoausgang) hatte ich am Anfang mal mit
vorgesehen, die horizontale Austastlücke war aber zu kurz für Sound,
Zufallsgenerator, Tastaturabfrage und serielle Schnittstelle. Und so ist
es letztendlich beim TV-Out geblieben.

Noch etwas anderes. Da die Atmel Dataflash bei den meisten Versendern
nicht zu bekommen sind und es sie obendrein nur in SMD gibt, habe ich
mir folgendes überlegt:

Alternativ (im Config-Menü umschaltbar) soll auch ein I2C EEPROM vom Typ
24C512 (extern oder im  nicht mehr genutzten EEPROM-Sockel mit Adresse
0) verwendbar sein. Dort passen zwar nur max. 16 Dateien drauf, aber
immerhin besser als gar nix. Gar nix aber eigentlich auch nicht, da der
Mega644 auch selbst schon 8 Programme speichert.

Die Frage ist nur, ob ich den Code noch irgendwo unterkriege...

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

Hallo Jörg,

heute habe ich endlich den Controller bekommen und programmiert - dabei
gab es das kleine Problem, dass ich mit dem STK500 nicht exakt auf die
Fuse-Werte komme, die Du in der "Liesmich" angegeben hast.

Ich komme bei "FUSE LOW" nicht auf "E6", sondern nur auf "E7". Nachdem
ich mit dem "Fuse-Calculator" so ziemlich alle halbwegs sinnvollen
Einstellungen durchprobiert hatte, habe ich den Chip mit diesen Fuses
programmiert - "Versuch macht klug" dachte ich mir.

Frage: welche Fuses müssen gesetzte sein? (ich vermute, im wesentlichen:
"Quartz Full Swing", "Preserve eeprom", "BOD-Level 4,3V",
"Boot....default", "JTAG aus")

Der Chip zeigte auf dem Fernseher (SCART) zeigte mit gesetztem
"NTSC-Jumper" nach dem Einschalten sofort ein farbiges Bild - so wie auf
Deiner Homepage.

Dann der erste Versuch mit: 1 CLS 2 Print "Hallo"; 3 GOTO 2 - zunächst
alles klar, dann wanderte das Bild. Darauf zog ich den "NTSC-Jumper".
Nun ist die Textausgabe durch das Programm stabil. Beim Einschalten
"läuft das Bild hoch" - ist erst verzerrt und in falschen Farben,
normalisiert sich nach ca. 4 Sekunden.

Nachdem ich die Funktionstasten verstanden hatte (Umschaltung mit
"CTRL") lud ich dann "meine" Programme und startete das
"MAIN"........nichts.

Gut - alle Zeilen sind "randvoll" und alle Befehle abgekürzt. Nache
einem Blick in Dein Manual zeigte sich, dass die Abkürzungen sich
teilweise geändert haben oder nicht mehr existent sind - schade - aber
gut - dafür gibt es ja 95 Zeilen. Nach einigen Änderungen, Speichern,
Probieren usw. (ca. 1h) und ersten Erfolgen passierte etwas
merkwürdiges:

Bei Aufruf des Editors wurden zunächst nur viele "X" anstelle der
belegten Programme angezeigt, nach ein paar Sekunden Programmfragmente,
dann fing der Ton an zu knarren und das Bild verschwand.

Nach "Reboot" (CTRL-ALT-DEL) startet der Computer neu. Die kleinen
Testprogramme laufen noch und lassen sich editieren.

Die 4 grossen (max. Zeilenanzahl der MEGA32-Version) verhalten sich
gleich: bei Aufruf des Editors nur "X", dann Fragmente, knarren und aus.

Frage: hat eines der Programme beim Speichern evtl. das Flash korumpiert
?

Gruss Otto
Autor: Otto (Gast)
Datum: 26.01.2008 01:31

Hallo Jörg,

und noch eine Frage: kann ich ohne Weiteres "BOD-Level" auf 2,7V setzen
- bzw. würde Deine SW auch mit 3,3V arbeiten ?

Gruss Otto
Autor: Joerg Wolfram (joergwolfram)
Datum: 26.01.2008 03:18

Hallo Otto,

Das niederwertigeste Bit der LOW-Fuse gibt nur an, nach wieviel
Oszillatorzyklen der Controller startet. Bei E7 dauert es etwas länger,
sollte eigentlich sogar noch besser sein.

Ich habe versucht, die bei Dir aufgetretenen Effekte nachzuvollziehen,
es ist mir aber nicht gelungen. Lediglich gibt es bei NTSC ein leichtes
Kantenflimmern (hauptsächlich in den Grafikmodi), wird aber mit der
nächsten Version behoben sein.

Kannst Du ein Verify Deines Flash-Inhaltes machen? Die BASIC-Programme
liegen im Bereich 0x4800 bis 0x77ff (bzw. 0x9000 bis 0xefff wenn
Byteweise gezählt wird) Ausserhalb dieses Bereiches darf sich nichts
änderm! Eventuell könntest Du mir auch eines der fraglichen
BASIC-Programme schicken, dann würde ich es hier testen.
Sicherheitshalber mache ich in die nächste Version eine einfache
Prüfsumme mit rein.

Es deutet alles auf Flash-Korrumption hin, die könnte aber auch durch
Probleme in der Stromversorgung entstehen. Bei der Mega32-er Version
hatte ich am Anfang ähnliche Probleme, die sich mit einem zusätzlichen
Abblock-Kondensator lösen liessen.

Gruß Jörg
Autor: Joerg Wolfram (joergwolfram)
Datum: 26.01.2008 03:19

Glatt vergessen: bei 3,3V wird der Mega644 die 20MHz wohl nicht
schaffen, zumindest wird es nicht zugesichert.

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

Hallo Jörg,

ich habe Dir die Basic - Programme und die aus dem Controller
ausgelesene Hex-Datei gemailt - ist das Mail angekommen ?

Gruss Otto
Autor: Joerg Wolfram (joergwolfram)
Datum: 31.01.2008 02:23
Dateianhang: avr-chipbasic2_0.69.tar.gz (660,7 KB, 91 Downloads)

Leider gab es im ersten Release ein paar Bugs beim Komprimieren und
Dekomprimieren von "langen" Zeilen. Außerdem habe ich die
Sprite-Routinen neu geschrieben, die Daten können jetzt beliebig im
Array liegen und die Anzahl wird auch nur durch die Größe des Arrays
begrenzt. Dann gibt es eine Erweiterung bei PRINT, es lassen sich auch
nullterminierte Zeichenketten aus dem Array ausgeben. Und ACOPY mit dem
Teile des Array umkopiert werden können. Und Zuguterletzt habe ich mich
der Audio-Ausgabe etwas angenommen. Es gibt jetzt eine zweite Klangfarbe
und, einen Sequenzer der seine Daten aus dem Array holt und komplett im
Hintergrund läuft. Das Thema 24C512 als Programmspeicher ist erstmal
wieder vom Tisch, da ich den Code nicht mehr komplett in den Controller
bekommen habe.

Da das Projekt schon recht komplex und für Anfänger wohl eher
undurchschaubar ist, würde ich bei Interesse auch die eine oder andere
Routine herauslösen und dokumentieren.

Ansonsten viel Spaß damit

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

Hallo Jörg,

vielen Dank für die neue Version - ich hätte da mal zwei dumme Fragen:

1.

Wäre es möglich, Programme unter anderen Nummern (z. B. "Programm 2"
unter "Programm 5") zu speichern (Backup) um ggf. bei Programmierfehlern
oder Fehlfunktionen das Original wieder "zurückzuholen"?

2.
Wäre es möglich, Programme ausserhalb des Editors komplett zu löschen
(also z. B. "delete program 2")

Gruss Otto
Autor: Joerg Wolfram (joergwolfram)
Datum: 01.02.2008 12:17

Mal sehen, ob es der Platz im Flash noch erlaubt. Vielleicht als zweite
Tastaturebene im Hauptmenü mit "CLEAR" und "COPY". Im Moment steht aber
eigentlich erstmal die Überarbeitung der Hardware-Doku an...

Gruß Jörg
Autor: Thomas H. (pcexperte) Benutzerseite
Datum: 08.02.2008 22:32

Hallo alle zusammen,

Leerplatinen und Bausätze sind jetzt bei www.it-wns.de verfügbar ;)

Schönes Wochenende...

Gruß
Thomas
Autor: Robin Tönniges (rotoe) Benutzerseite
Datum: 12.02.2008 17:26

@Joerg
Hab da mal ne Frage:

Kann man bei deiner neuen Masken Funktion von: "out" auch die 8 Ports
Binär ansteuern? Bzw. könnte man es implementieren?

Gruß

Robin T.
Autor: Joerg Wolfram (joergwolfram)
Datum: 12.02.2008 17:37

Wenn Du meinst, alle Bits anzusteuern, dann geht das so:

out $1ff, wert

Damit wird die Maske auf %1111111 gesetzt und der LOW-Teil von wert auf
die Portleitungen geschrieben.

Gruß Jörg
Autor: Robin Tönniges (rotoe) Benutzerseite
Datum: 12.02.2008 19:21
Dateianhang: basic_format.exe (417,5 KB, 53 Downloads)

So habe da mal ein Programm geschrieben mit welchem man das
Ausgabeformat von "Print !wert "Text", Zahl, Variable" auswählen und
anzeigen kann. Man brauchs vlt. nicht unbedingt aber mir persönlich
erleichterts die Formatierung vom Text mit Print.

Viel Spass damit

P.S.: Falls es nicht funktioniert hab ich was beim Compilieren
vergessen. Passiert auch mir.
Autor: Otto (Gast)
Datum: 12.02.2008 19:52

bei mir fehlt "BORLNDMM.DLL" - schade

Gruss Otto
Autor: Otto (Gast)
Datum: 12.02.2008 20:21

Hallo Robin,

vielen Dank für Deine schnelle Reaktion - leider hat sich nichts
geändert:

Mein PC vermisst "BORLNDMM.DLL" und meint, eine "Neuinstallation der
Anwendung" würde helfen.....

Viele Grüsse
Otto
Autor: Robin Tönniges (rotoe) Benutzerseite
Datum: 12.02.2008 20:28
Dateianhang: basic_format.exe (469 KB, 66 Downloads)

So habs von jemandem testen lassen. Funktioniert.
Autor: Otto (Gast)
Datum: 12.02.2008 21:12

Hallo Robin,

vielen Dank - funktioniert wunderbar !

Gruss Otto
Autor: Joerg Wolfram (joergwolfram)
Datum: 18.02.2008 22:55
Dateianhang: avr-chipbasic2_0.72.tar.gz (1,2 MB, 62 Downloads)

So, hier kommt die neueste Version. Da ich die Doku in großen Teilen
überarbeitet habe, ist das Archiv kräftig gewachsen. Dafür gibts jetzt
auch ein paar Beispielprogramme.

- Kopieren und Löschen von Programmen aus dem Hauptmenü heraus
- Editor springt nach dem Speichern nicht mehr automatisch zum Anfang
- SIN() und COS() arbeiten jetzt mit ganzen Grad-Werten
- Bugfix bei obigen Funktionen (teilw. falsche Werte im 3.Quadranten)
- Checksumme für System-Flash
- Kleine Änderungen an der Optik (Versionsanzeige nur bei Info)
- diverse kleine Bugfixes

Die große Sinus-Tabelle musste leider wegfallen, da es zwischenzeitlich
sehr eng im Flash geworden war.

Viel Spass damit!

Gruss Jörg
Autor: Robin Tönniges (rotoe) Benutzerseite
Datum: 18.02.2008 22:57

Danke für die neue Version. Bin schon ganz aufgeregt sie zu testen!
Vorallem die Beispiele.

Gruß
Robin T.
Autor: Otto (Gast)
Datum: 18.02.2008 23:05

Hallo Jörg,

auch von mir vielen Dank !

Viele Grüsse
Otto
Autor: Joerg Wolfram (joergwolfram)
Datum: 18.02.2008 23:10

Naja, viel weltbewegendes ist noch nicht dabei, ich bin aber am
überlegen ob ich nicht so eine Art "Codesammlung" auf meiner Seite
aufbaue.

Gruß Jörg
Autor: Robin Tönniges (rotoe) Benutzerseite
Datum: 18.02.2008 23:12

Das hatte ich im Mega32 Tread schonmal vorgeschlagen (glaub ich). Das
Leute die Programme für den BASIC-PC entwickeln und auf deiner Seite
hochladen können. Darauf hatte Otto mir zugestimmt "Damit man das Rad
nicht immer neu erfinden muss".

Hab ich ein Gedächtnis wow :)


Gruß

Robin T.
Autor: Otto (Gast)
Datum: 18.02.2008 23:21

Hallo Jörg,

gerade habe ich die Dokumentation aud Deiner Homepage angesehen:

alle Achtung !


hallo Jörg und Robin,

ja so eine Codesammlung würde ich auch gut finden....

Gruss Otto
Autor: Joerg Wolfram (joergwolfram)
Datum: 18.02.2008 23:40
Dateianhang: avr-chipbasic2_0.72.tar.gz (1,2 MB, 104 Downloads)

Ich hab gerade noch drei Fehler gefunden:

- beim UNI-BAS Adapter war das falsche Bild dabei
- Die Belegungstabelle für den UNI-Anschluss war unvollständig
- im Programm PONG fehlte in Zeile 57 ein "END"

naja, nix schlimmes aber ärgerlich ist es trotzdem.

Gruß Jörg
Autor: Robin Tönniges (rotoe) Benutzerseite
Datum: 02.03.2008 17:37

Hi,

hab da mal ne Frage bezüglich dem Befehl: "ICOMM"

Wie kann ich damit das EEProm auslesen?
Ich habe es geschafft zu schreiben aber lesen nicht.

Ich weiß dass ich da eine 1 an die Adresse hängen muss aber wohin
speichert er  die Daten bzw. wie gebe ich an wohin er die speichern
soll?


Danke
Autor: Robin Tönniges (rotoe) Benutzerseite
Datum: 02.03.2008 17:46

Ach und noch was:

Ich habe hier seit der Meag 32 Version einen fertig bestücken BASIC-PC
es fehlen lediglich die EEPROMS und der Mega32/644.
ABER: Ich habe es nie verwendet weil ich die beiden 9-Poligen
Buchen/Stecker vertauscht habe. Eigentlich müsste man das
9-Polig->Scart-Kabel nur Spiegelverkehrt herstellen aber dazu habe ich
keine Lust. Vlt. kanns ja jemand gebrauchen. Materialkosten wollte ich
dann aber doch wieder raus haben (müsst ihr mir lassen^^) 5 Euro.


Gruß

Robin T.
Autor: Joerg Wolfram (joergwolfram)
Datum: 03.03.2008 21:13

Für EEPROMs die 2 Adressbytes brauchen (24C16, 24C65...) ist es
einfacher, den EEPROM auf Adresse 1 zu setzen und dann XPOKE sowie
XPEEK() zu nehmen. In der aktuellen Version geht es bis zum 24C512.
Ansonsten braucht man halt das Datenblatt, meist kann man den
Adresszeiger im EEPROM durch einen unvollständigen Schreibvorgang
setzen. Ausprobiert habe ich es aber noch nicht, da mir die eingebauten
Befehle genügt haben.

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

Hallo Jörg,

ich hätte mal wieder eine meiner dummen Fragen:

ist es möglich, die MEGA32-Version in den MEGA644 Controller zu flashen
- falls ja, geht das ohne Änderung der Fuses ?

Hintergrund ist, dass ich den Chip der im Fahrzeug eingebauten Platine
direkt einlöten möchte, jedoch mit meinem Programm für den 644 noch
nicht fertig bin.

Gruss Otto (ja - genau der ;-) )
Autor: Joerg Wolfram (joergwolfram)
Datum: 03.04.2008 16:27

Hallo Otto,

leider geht das nicht so einfach, da beim Mega644 einige IO-Register
anders liegen und nicht mit IN/OUT angesprochen werden können. Ich werde
mir am WE mal abschauen, wie gross der Aufwand wäre.

Gruss Jörg
Autor: Otto (Gast)
Datum: 03.04.2008 18:18

Hallo Jörg,

vielen Dank für Deine Rückmeldung - kein Problem, dann löte ich einen
MEGA32 ein - es war nur eine Frage - ich wollte Dir keine unnötige
Arbeit verschaffen !

Viele Grüsse Otto