Ein prinzipielles Problem ist die Benutzung eines 8031/8051. Dieser
besitzt den wichtigen 2ten Timer nicht, so das alleine dafür erhebliche
Änderungen im Code vorgenommen werden müssten. Im Normalfall wird Timer
2 fürs Terminal als Baudratengenerator benutzt.
Mein Rat wäre, den 80C31 zu ziehen und stattdessen einen z.B. AT89S52
mit dem Basic zu flashen und einzusetzen.
Wenn du auf dem alten EPROM Sockel dann /WE mitverdrahtest und dort
einen 32k RAM einsetzt, sollte BASIC sofort anspringen.
Ein besonderes Schnäppchen wäre die Belegung des originalen RAM Sockel
mit einem EEPROM, das ist im Code version 1p3 schon vorgesehen.
Für mein Kloeckner-Moeller Basic habe ich die Routinen auf
batteriegepuffertes RAM umgeschrieben, weil das in der SPS schon so
vorgesehen war.
Beitrag "Spaß mit Kloeckner-Moeller PS3 in BASIC(?)"
Der Sourcecode ist doch dabei. Musst du neu für die geänderten Adressen
übersetzen. Da es kein Makefile oder ähnliches gibt, ist das nicht ganz
trivial.
Matthias S. schrieb:> Ein prinzipielles Problem ist die Benutzung eines 8031/8051.> Dieser> besitzt den wichtigen 2ten Timer nicht, so das alleine dafür erhebliche> Änderungen im Code vorgenommen werden müssten. Im Normalfall wird Timer> 2 fürs Terminal als Baudratengenerator benutzt.> Mein Rat wäre, den 80C31 zu ziehen und stattdessen einen z.B. AT89S52> mit dem Basic zu flashen und einzusetzen.> Wenn du auf dem alten EPROM Sockel dann /WE mitverdrahtest und dort> einen 32k RAM einsetzt, sollte BASIC sofort anspringen.> Ein besonderes Schnäppchen wäre die Belegung des originalen RAM Sockel> mit einem EEPROM, das ist im Code version 1p3 schon vorgesehen.> Für mein Kloeckner-Moeller Basic habe ich die Routinen auf> batteriegepuffertes RAM umgeschrieben, weil das in der SPS schon so> vorgesehen war.> Beitrag "Spaß mit Kloeckner-Moeller PS3 in BASIC(?)"
1) Ginge es denn den Timer 2 einfach gegen Timer 1 zu tauschen
2) Nur einfach gegen den AT89S52 zu tauschen. Wie flashe ich den dann
auch über RXD TXD serielle Leitungen?
3) Ja daran hab ich auch gedacht war mir aber bisher unsicher ob man da
nur einfach das RAM gegen EEPROM tauscht ohne brachial an der Platine zu
löten, deshalb bin ich da nicht tiefer eingestiegen.
4) Gute Idee, besonders batteriegepuffert find ich interessant. Ist das
auch in Basic?
Georg G. schrieb:> Der Sourcecode ist doch dabei. Musst du neu für die geänderten> Adressen> übersetzen. Da es kein Makefile oder ähnliches gibt, ist das nicht ganz> trivial.
1) Ist mir nur nicht ganz klar wie ich die ändern soll.
Beispiel alle 4000H in A000H und die 2000H in 8000H.
Alles was im RAM läuft soll ab 8000H beginnen
2) Was ist mit Makefile gemeint. Ich nutze folgendes Entwicklungssystem
http://www.ieap.uni-kiel.de/surface/ag-berndt/lehre/fpmc/
Sourcecode und .asm habe ich auch. Bin/Hex Code kann ich auch erzeugen.
Janus M. schrieb:> 2) Nur einfach gegen den AT89S52 zu tauschen. Wie flashe ich den dann> auch über RXD TXD serielle Leitungen?
Leider nicht, das würde einen Bootloader erfordern und damit das
Henne-Ei Problem darstellen.
Ich flashe die Dinger mit meinem AVRISP MkII, der hier für die AVRs
rumliegt, es gibt auch (mit Atmels 'Flip' und ein paar Drähten am LPT
Port) eine Lösung.
Janus M. schrieb:> 1) Ginge es denn den Timer 2 einfach gegen Timer 1 zu tauschenGeorg G. schrieb:> Notfalls gibt es auch eine Version für "ohne Timer2"> http://dsaprojects.orgfree.com/electronics/8031-ah/8031-bas.html
Ob und wie der Rest des Basic noch eingeschränkt wird, weiss ich nicht.
Das originale Intel Basic benutzt Timer 1 für die Basic Uhr.
Janus M. schrieb:> 2) Was ist mit Makefile gemeint.
Da du diese Frage stellst, vergiss bitte meinen Vorschlag. Das wird zu
viel Frust. Nimm den Vorschlag von Matthias mit dem Atmel Prozessor.
Janus M. schrieb:> Ralph S. schrieb:>> und das Basic braucht 256 Byte Ram... und der 31 er hat nur 128.>> Also:>> 80S52 nehmen.>> Das soll ja im RAM ab 8000H laufen
Es meint das interne RAM der Controller. Du brauchst einen Controller
mit Timer2 und 256 Bytes internen RAM.
Georg G. schrieb:> Matthias S. schrieb:>> Timer2>> Notfalls gibt es auch eine Version für "ohne Timer2"> http://dsaprojects.orgfree.com/electronics/8031-ah...
Ja kenn ich, geht bloss nicht bei mir. Habs in allen vorhandenen
Versionen gebrannt.
Leider hat der gute Meister den Sourcecode für sich behalten, zumindest
das was er da genau gemacht hat.
Blechschaden schrieb:> Janus M. schrieb:>> Ralph S. schrieb:>>> und das Basic braucht 256 Byte Ram... und der 31 er hat nur 128.>>> Also:>>> 80S52 nehmen.>>>> Das soll ja im RAM ab 8000H laufen>> Es meint das interne RAM der Controller. Du brauchst einen Controller> mit Timer2 und 256 Bytes internen RAM.
Geht denn der Austausch so ohne weiteres oder muss ich da noch auf was
anderes achten?
Hm, ein Austausch det Controller sollte mal Grundsätzlich kein Problem
darstellen, der 80S52 kann wie der 8031 extern in einem Rom liegenden
Code ausführen. Jetzt weiß ich natürlich nicht, wie groß der Code des
Basicinterpreters ist, aber geschickt wäre es natürlich schon, wenn der
Code ins interne Flash des S52 wandert und somit ein externes Rom nicht
mehr notwendig ist ( benötigt dann aber halt einen Flasher) . Der S52
ist allerdings ISP programmierbar. Hm, benötigt dann allerdings auch
eine andere Schaltung
Ralph S. schrieb:> Hm, ein Austausch det Controller sollte mal Grundsätzlich kein> Problem> darstellen, der 80S52 kann wie der 8031 extern in einem Rom liegenden> Code ausführen. Jetzt weiß ich natürlich nicht, wie groß der Code des> Basicinterpreters ist, aber geschickt wäre es natürlich schon, wenn der> Code ins interne Flash des S52 wandert und somit ein externes Rom nicht> mehr notwendig ist ( benötigt dann aber halt einen Flasher) .> Der S52 ist allerdings ISP programmierbar. Hm, benötigt dann allerdings> auch eine andere Schaltung
1) Das Basic ist 8.10 KB gross.
2) ein Flasher und andere Schaltung heisst dann letztlich auch
eine neue Platine.
Letztlich ist mein Ziel möglichst keine Umbauten zu machen um nicht
zusätzlichen Elektroschrott zu produzieren und auch, weil das bisherige
System sehr stabil und robust läuft.
Ausserdem eröffne ich dann wieder andere "Kriegsschauplätze" mit neuen
Problemen.
Trotzdem bin ich bisher sehr dankbar für die reichhaltige Hilfe gerade
bei
einem so alten Chip.
Ich habe auch noch das Basic von DAN KARMANN.
Da steht "These changes were
made to allow the BASIC to run on an 8031/8051 uP system in external
EPROM."
Also muss das auch gehen. Das knifflige bei meiner Schaltung ist das das
EPROM mit dem Programm
Adressen: EPROM von $0000 bis $7FFF
RAM von $8000 bis $FFFF
und nur 128 Byte RAM auf dem Chip ist. ROM gibt es beim 80C32 nicht
Das gilt es zu berücksichtigen. Falls jemand zufällig noch eine Quelle
kennt, wo man den Sourcecode von DAN KARMANN herbekommt wäre das ein
grosse Hilfe. Ich hänge mal das was ich habe hier noch dran.
> 1) Das Basic ist 8.10 KB gross.
Für den AT89S8253 kannst du von mir ein Hexfile bekommen.
2) ein Flasher und andere Schaltung heisst dann letztlich auch
eine neue Platine.
Der AT89S8253 sollte in deine Schaltung (das obige Bild ist zu klein)
passen.
Blechschaden schrieb:>> 1) Das Basic ist 8.10 KB gross.>> Für den AT89S8253 kannst du von mir ein Hexfile bekommen.>> 2) ein Flasher und andere Schaltung heisst dann letztlich auch> eine neue Platine.>> Der AT89S8253 sollte in deine Schaltung (das obige Bild ist zu klein)> passen.
Hallo Blechschaden
Danke für die Möglichkeit für das Hexfile. Der 80C31 ist DIP 40 polig.
Der 89S52 und der 89S8253 sind 40 pol. und passen, können beide externen
Programmcode verarbeiten. Dein Problem dürfte dann wohl eher sein : Wie
bekommst du Programmcode ins EProm? Wenn du einen Basic Interpreter
darin laufen lassen magst, kannst du auch dss Intel Basic nehmen, die
Programmquellen liegen im Netz. Dann kannst du auch deine Adressen
anpassen.Das Tinybasic für einen 31er ist schon sehr "abgedpeckt" .
Andere Mögluchkeit ist, sich deinen Code zu disassemblieren ( meines
Wissens war der Interpreter in Maschinensprache geschrieben) den Code zu
analysieren und in dann neu zu strukturieren, damit man eine lauffähige
Source hat, mit der man arbeiten kann.
Janus M. schrieb:> Blechschaden schrieb:>> Janus M. schrieb:>>> Ralph S. schrieb:>>>> und das Basic braucht 256 Byte Ram... und der 31 er hat nur 128.>>>> Also:>>>> 80S52 nehmen.>>>>>> Das soll ja im RAM ab 8000H laufen>>>> Es meint das interne RAM der Controller. Du brauchst einen Controller>> mit Timer2 und 256 Bytes internen RAM.>> Geht denn der Austausch so ohne weiteres oder muss ich da noch auf was> anderes achten?
Das Intel Basic benutzt alles RAM, das intern in einem 8052 residiert,
plus natürlich die SFR in der Zeropage.
Dazu muss man wissen, das Intel damals nur einen maskenprogrammierten
8052 mit dem Basic geliefert hat und den Sourcecode erst sehr viel
später freigab.
Janus M. schrieb:> 2) ein Flasher und andere Schaltung heisst dann letztlich auch> eine neue Platine.
Wie ich schon schrieb, wären die Änderungen am Board minimal, wenn es
dir gelingt, das Intel Basic in einen 8052 zu programmieren. Da du auch
EPROMs herstellen kannst - nimmt dein Eprommer evtl. 8752, 87C52 oder
so? Dann ist der Rest ein Picknick.
Das Schöne am Intel Basic ist u.a. das gut funktionierende Floating
Point Paket und der Timer. Das machte es ideal für mein SPS Projekt.
Als Ergänzung zu meinem ersten Vorschlag "Makefile für neue Architektur
anpassen": Der Sourcecode ist recht "unportabel" geschrieben,
Konstanten, die sich auf das Speicherlayout beziehen sind im Text
verteilt. Um das alles auf z.B. den Keil Assembler mit Linker/Locater um
zu bauen, muss man einiges an Zeit investieren. Fazit: Lohnt nicht.
Georg G. schrieb:> Konstanten, die sich auf das Speicherlayout beziehen sind im Text> verteilt.
Das habe ich für mein Projekt erstmal geändert, so das es jetzt Labels
für die Speicherbereiche gibt, kann man sich im Kloeckner-Moeller PS3
Thread anschauen.
Allerdings habe ich natürlich nie probiert, das MC Programm selber zu
verschieben, da ich von vorneherein aufs interne Flash der modernen MC
gesetzt habe.
Georg G. schrieb:> Um das alles auf z.B. den Keil Assembler mit Linker/Locater um> zu bauen
Keil konnte ich mir nie leisten. Aber jeder einigermassen moderne 2-Pass
Assembler kommt damit klar, so auch der ASEM-51 von Herrn Heinz.
Georg G. schrieb:> Fazit: Lohnt nicht.
Zustimmung. Es ist wirklich einfacher, das Basic so zu lassen, wie es
ist und die kleinen Änderungen an der Hardware des Boards zu machen.
Das ging natürlich bei der PS3 nicht.
Eine Besonderheit, die Intel im Basic immer wieder macht, ist die
Vorgabe der Page über Port 2 und dann die Adressierung, als wäre es die
Zeropage. Das muss man erstmal durchblicken.
Matthias S. schrieb:> Das Schöne am Intel Basic ist u.a. das gut funktionierende Floating> Point Paket und der Timer. Das machte es ideal für mein SPS Projekt.
Führt zwar etwas vom Thema weg, nur zur Info: für das Raspberry Pi gibt
es BBC BASIC das direkt ohne Betriebssystem als Interpreter läuft. Das
unterstützt sogar long double und hat einen Inline-Assembler mit dem man
z.B. die Timer-Vektoren direkt auf eigene ISR (in BASIC!) ziehen kann.
Es ist auch kein Image sondern ein Binary, das einfach auf eine SD-Karte
gezogen wird und bei Power-on vom Bootloader gestartet wird.
Und für das Raspberry Pi gibt es ja schöne SPS Gehäuse.
https://www.riscosopen.org/content/sales/risc-os-pico
8752, 87C52 kann ich theoretisch brennen muss mir dazu einen Sockel
anfertigen. Bauplan, Layout dafür ist alles vorhanden.
...ist und die kleinen Änderungen an der Hardware des Boards zu machen.
Die sind mir im Augenblick noch nicht so ganz klar.
Meine Annahmen:
1) 8752 Pin Anpassung
2) Vertauschen des Speicherbereichs
Das hier
Adressen: EPROM von $0000 bis $7FFF
RAM von $8000 bis $FFFF
in den umwandeln
Beim Basic für den 8052 sieht der Adressbereich so aus
Adressen: ROM von $0000 bis $1FFF
RAM von $2000 bis $7FFF
EPROM von $8000 bis $FFFF
3) Welches Basic da am geeignetsten ist.
- MCS-BASIC-52 V1.31 Source Listing
- Kloeckner
- DAN Karmann
siehe ZIP Datei
> Zustimmung. Es ist wirklich einfacher, das Basic so zu lassen, wie es> ist und die kleinen Änderungen an der Hardware des Boards zu machen.> Das ging natürlich bei der PS3 nicht.> Eine Besonderheit, die Intel im Basic immer wieder macht, ist die> Vorgabe der Page über Port 2 und dann die Adressierung, als wäre es die> Zeropage. Das muss man erstmal durchblicken.
Das Rad 2mal erfinden will ich auch nicht und das mit der Page versteh
ich nicht trotz Hinweis :-)
Primär ist mein Ziel, wie schon gesagt möglichst wenig an der Hardware
zu verändern. Im Netz hat es ja auch einer hin gebracht Basic
einzusetzen
@Lothar
tja die Entwicklung schreitet immer weiter. Das Layout von meinem
Schätzchen ist von 1991, quasi steinalt. Aber es macht immer noch viel
Spass.
Helfen würde mir im Augenblick ein paar wichtige Tipps zum Programmcode.
Speziell da wo man was anpassen müsste für Basic V1.31.
Janus M. schrieb:> Helfen würde mir im Augenblick ein paar wichtige Tipps zum Programmcode.>> Speziell da wo man was anpassen müsste für Basic V1.31.
Bitte, nimm es nicht persönlich. DAS übersteigt deine momentanen
Kenntnisse und erzeugt nur Frust (das sieht man an deinen Fragen). Bau
dir eine passende Hardware oder überlege, wie du deine vorhandene
Hardware auf das andere Speicherlayout umstricken kannst.
Als Anfang stell doch bitte ein besser lesbares Schaltbild ein,damit man
dir dazu Tipps geben kann.
Der Vorschlag von Matthias mit dem AT89S52 scheint mir am schnellsten
zum Ziel zu führen, wird die wenigsten Hardware Änderungen benötigen.
Das Flashen der neuen CPU kann bestimmt jemand aus dem Forum übernehmen.
Dabei wäre es gut zu wissen, wo du ungefähr wohnst. Probleme lassen sich
dann am schnellsten gemeinsam vor Ort lösen.
Lothar schrieb:> Kam ursprünglich vom 6502
Genauer vom 'Acorn Atom' und hatte schon ein schönes 'float'-Format mit
vier Byte Mantisse, die allerdings nicht BCD (wie beim 8052-Basic)
sondern binär kodiert war, was ca. zehn gültige Stellen liefern konnte;
alles lief sehr schnell.
Braucht jemand einen 'Acorn Atom' oder den Quellcode davon? ;-)
Janus M. schrieb:> 1) 8752 Pin Anpassung
Hier geht es nur um /EA. Wenn der 8752 sein Basic aus dem internen EPROM
laufen lassen soll, muss /EA auf high.
Janus M. schrieb:> 2) Vertauschen des Speicherbereichs
Da sich EPROM und RAM nur durch das /WE Signal unterscheiden, solltest
du /WE am EPROM Sockel auflegen. Bei der JEDEC Belegung sollte das Pin
27 sein, wimre. Also Pin 27 am EPROM Sockel freischalten und dann auf
Pin 27 des RAM Sockel schalten.
Janus M. schrieb:> 3) Welches Basic da am geeignetsten ist.>> - MCS-BASIC-52 V1.31 Source Listing> - Kloeckner> - DAN Karmann
Sicher nicht Kloeckner-Moeller Basic. Das habe ich wirklich etwas an
diese alte SPS angepasst und mit Befehlen speziell dafür erweitert. Was
von Karmann zu halten ist, weiss ich nicht, denn es gibt keinen
Sourcecode. Bleibt also nur V1.3, das auch am besten dokumentiert ist.
Lothar schrieb:> Das BBC BASIC für den ARM im Raspberry Pi ist von 1985 :-) Kam> ursprünglich vom 6502
Im 'Intel Microcontroller Handbook' von 1981 wird der '8052AH Basic'
vorgestellt.
Georg G. schrieb:> Janus M. schrieb:>> Helfen würde mir im Augenblick ein paar wichtige Tipps zum Programmcode.>>>> Speziell da wo man was anpassen müsste für Basic V1.31.>> Bitte, nimm es nicht persönlich. DAS übersteigt deine momentanen> Kenntnisse und erzeugt nur Frust (das sieht man an deinen Fragen). Bau> dir eine passende Hardware oder überlege, wie du deine vorhandene> Hardware auf das andere Speicherlayout umstricken kannst.>> Als Anfang stell doch bitte ein besser lesbares Schaltbild ein,damit man> dir dazu Tipps geben kann.
1) Nein, ich nehme das nicht persönlich, wunder mich nur warum das gar
so schwierig ist den Code anzupassen. Eigentlich ist die schwierigste
Arbeit ja schon gemacht worden.
Im Grund bilde ich mir ein kann es doch nur um die Adressen gehen aber
egal. Assembler habe ich mal vor vielen Jahren für ein 6502 versucht.
Ging auch, nur der Aufwand war allein schon für ein 50 Zeilen Programm
enorm.
Und wenn man nicht alles dokumentiert weiss man nach 2 Tagen schon nicht
mehr warum weshalb wieso man das so und nicht anders gemacht hat.
2)
Anbei ein grösseres Layout. Mehr geht leider nicht, da ich das auch nur
als Scan vorliegen habe.
Die Zahlen sind zugegeben etwas klein. Vom Prinzip her ist es jedoch
eine Standardschaltung.
8031, ein Latch ein externes EPROM und ein RAM zum Austesten von
Programmen.
Mit dem Gatter IC6 wurde der Adressbereich entsprechend manipuliert.
Also RAM ab $8000. Hoffe das hilft.
Matthias S. schrieb:> Janus M. schrieb:>> 1) 8752 Pin Anpassung>> Hier geht es nur um /EA. Wenn der 8752 sein Basic aus dem internen EPROM> laufen lassen soll, muss /EA auf high.>> Janus M. schrieb:>> 2) Vertauschen des Speicherbereichs>> Da sich EPROM und RAM nur durch das /WE Signal unterscheiden, solltest> du /WE am EPROM Sockel auflegen. Bei der JEDEC Belegung sollte das Pin> 27 sein, wimre. Also Pin 27 am EPROM Sockel freischalten und dann auf> Pin 27 des RAM Sockel schalten.>> Janus M. schrieb:>> 3) Welches Basic da am geeignetsten ist.>>>> - MCS-BASIC-52 V1.31 Source Listing>> - Kloeckner>> - DAN Karmann>> Sicher nicht Kloeckner-Moeller Basic. Das habe ich wirklich etwas an> diese alte SPS angepasst und mit Befehlen speziell dafür erweitert. Was> von Karmann zu halten ist, weiss ich nicht, denn es gibt keinen> Sourcecode. Bleibt also nur V1.3, das auch am besten dokumentiert ist.>> Lothar schrieb:>> Das BBC BASIC für den ARM im Raspberry Pi ist von 1985 :-) Kam>> ursprünglich vom 6502>> Im 'Intel Microcontroller Handbook' von 1981 wird der '8052AH Basic'> vorgestellt.
1) Das ist doch schon mal sehr hilfreich wie man die Pinbelegung zu
setzen hat. Danke
2)
Habe den Sourcecode von DAN KARMANN mal dissaembliert mit dem D51.exe
Programm (siehe Anhang)
3) Nehme an Du meinst das Handbuch hier (siehe Anhang)
Georg G. schrieb:> Der Vorschlag von Matthias mit dem AT89S52 scheint mir am schnellsten> zum Ziel zu führen, wird die wenigsten Hardware Änderungen benötigen.> Das Flashen der neuen CPU kann bestimmt jemand aus dem Forum übernehmen.> Dabei wäre es gut zu wissen, wo du ungefähr wohnst. Probleme lassen sich> dann am schnellsten gemeinsam vor Ort lösen.
Ja, scheint so mit dem geringsten Aufwand zu gehen.
Also ungefähr wohne ich Mitte Ruhrgebiet :-)
Hier noch das Basic für den 8031
http://dsaprojects.orgfree.com/electronics/8031-ah/8031-bas.html
Schaltplan ist in Zip Datei vorhanden.
Das hier ist im Grunde das was ich mir so gedacht habe.
Code als HEX, BIN und A51 vorhanden.(siehe Anhang)
Mit Basic bräuchte ich mich da vermutlich auch nicht beschäftigen ist
dann nur die Hardware anzupassen. Dreht sich um den 7400 der bei mir
drin ist und dem Channel Decoder.
In der Readme Datei steht "...how to make a 8031 basic interpreter
development board system, from the MCS51 family. I use 8031-AH chip,
with BASIC31a version 1.2a interpreter firmware from Dan Karmann."
Controller und Bauteile sind beinahe identisch einzig die
Speicheraufteilung wäre dann bei mir umzustricken.
Semiconductors :
IC1 = 8031-AH (uC )
IC2 = 74LS373 (Octal latch)
IC3 = 27C64 (8 kByte EPROM)
IC4 = 62256 (32 kByte RAM)
Diese Teile hab ich nicht:
IC5 = 8255 (PPI)
IC6 = 74LS138 (3 to 8 channel decoder)
IC8 = 74LS08 (Quad And gate)
IC3 = AT28C64 (optional 8 kByte EEROM)
Janus M. schrieb:> Dreht sich um den 7400 der bei mir> drin ist
Der 7400 hat in diesen Schaltungen immer die ehrenvolle Aufgabe, /RD und
/PSEN zu verANDen, damit der MC auch aus dem RAM Programme ausführen
kann. Der 8051/52 ist nämlich ein MC, bei dem für Daten und Programme
normalerweise verschiedene Adressbereiche benutzt werden. Das führt der
7400 zusammen - und das ist auch die richtige Voraussetzung für Intel
Basic.
Janus M. schrieb:> BASIC31a version 1.2a interpreter firmware from Dan Karmann
Die Frage ist eben, was bei Dan über die Klinge springen musste, damit
er ohne Page 1 RAM und Timer 2 auskommt. Ich vermute, das es das
Floating Point Paket ist und evtl. ein paar Clock Sachen.
Da es aber die Mühe nicht wert ist (immerhin kostet ein AT89S52 nicht
mal 1,50 Euro) würde ich an deiner Stelle auf das 'dicke' Basic
zurückgreifen:
http://www.nomad.ee/micros/
Wenn man sich dazu einmal den AVRISP MkII zulegt, ist das ein Spass von
unter 40 Euro und kann jetzt und in Zukunft nahezu alle MC von Atmel
flashen.
Georg G. schrieb:> Was für ein Typ ist dein "IC6"?
Der Belegung nach ist das der besagte 7400. Ich sehe aber gerade, das
für den EPROM Sockel /RD nicht mit /PSEN verANDet für /OE ist, sollte
man also am EPROM Sockel auch auftrennen und parallel vom RAM Sockel
ziehen.
Der 7400 verNANDet erst /PSEN und /RD und invertiert dann. Das dritte
Gatter macht aus A15 das /CE für den RAM. Das vierte Gatter ist zur
freien Verfügung :-)
Matthias S. schrieb:> Janus M. schrieb:>> Dreht sich um den 7400 der bei mir>> drin ist>> Der 7400 hat in diesen Schaltungen immer die ehrenvolle Aufgabe, /RD und> /PSEN zu verANDen, damit der MC auch aus dem RAM Programme ausführen> kann. Der 8051/52 ist nämlich ein MC, bei dem für Daten und Programme> normalerweise verschiedene Adressbereiche benutzt werden. Das führt der> 7400 zusammen - und das ist auch die richtige Voraussetzung für Intel> Basic.>> Janus M. schrieb:>> BASIC31a version 1.2a interpreter firmware from Dan Karmann>> Die Frage ist eben, was bei Dan über die Klinge springen musste, damit> er ohne Page 1 RAM und Timer 2 auskommt. Ich vermute, das es das> Floating Point Paket ist und evtl. ein paar Clock Sachen.> Da es aber die Mühe nicht wert ist (immerhin kostet ein AT89S52 nicht> mal 1,50 Euro) würde ich an deiner Stelle auf das 'dicke' Basic> zurückgreifen:> http://www.nomad.ee/micros/> Wenn man sich dazu einmal den AVRISP MkII zulegt, ist das ein Spass von> unter 40 Euro und kann jetzt und in Zukunft nahezu alle MC von Atmel> flashen.
1) Schön, dann müsste ich den 7400 entsprechend bearbeiten. Da wäre
Hilfe angebracht.
Der Channel Decoder dürfte für mein Vorhaben überflüssig sein oder?
2) Die Urversion und die Version 1.31 sind schon unterschiedlich. Beide
Codes sind passen allerdings in 8 KB EPROMs.
Aber ich halte es für eine sehr gute Idee, wenn ich Deinen Vorschlag als
weiteres Projekt anschliesse. So habe ich gleichzeitig zwei schöne
"Maschinchen" und sehe deren Unterschiede.
3) Hab grade festgestellt, dass ich auch noch für 89C51,89C52
(FLASH-Typen von Atmel) sowie dazu kompatible Typen komplette
Platinenlayouts habe.
An sich ist alles da. :-)
Eine Frage noch zu den HEX Codes kann man die irgendwo in einem
Simulator laufen lassen. Leider funktionieren manche nicht in MC-51
siehe link: http://www.ieap.uni-kiel.de/surface/ag-berndt/lehre/fpmc/
------------------------
Ich fasse mal zusammen:
- Ich werde versuchen mit einer Modifikation nach dieser Anleitung
http://dsaprojects.orgfree.com/electronics/8031-ah/8031-bas.html
meine Platine anzupassen und hoffe, dass ausser Hardware nichts zu
ändern ist. Hilfe in bezug 7400 gerne erwünscht. In der Kodierung liegt
die Wahrheit.
- Danach wird eine neue Platine nach folgendem link
http://www.nomad.ee/micros/ gebastelt.
Brennen kann ich 89C51,89C52 (FLASH-Typen von Atmel) sowie dazu
kompatible Typen und 8752, 87C52 (Muss mir allerdings erst noch Platinen
bauen).
Matthias W. schrieb:> Warum nicht Tiny Basic 51 nehmen ?
Auch da ist eine Anpassung erforderlich. Hab es anfangs mal so in ein
EPROM gebrannt und nichts ging. Der Aufwand ist der gleiche und das
Basic ist halt nur Tiny. Oder anders gesagt funktioniert es beim Grossen
wird es auch beim Tiny gehen.
Janus M. schrieb:> Der Channel Decoder dürfte für mein Vorhaben überflüssig sein oder?
Ich habe in deiner originalen Platine nichts entdeckt, was als 'Channel
Decoder' durchgeht. Ich sehe da einen MC, einen EPROM, einen RAM und die
einfache Auswahllogik mit dem 7400.
Das die serielle Schnittstelle mit Optokoppler und Stromschleife
ausgelegt ist, liegt an der MIDI Spezifikation.
Die einfachste Modifikation dürfte es übrigens sein, einfach die /CE
Leitungen der beiden JEDEC Sockel zu tauschen. Dann hast du ein
Addressschema, das für alle Basics klappen sollte:
Basic im MC von 0000h-1FFFh
RAM von 2000h-7FFFh, wenn du einen 32k RAM einsetzt. Davon sind die
ersten 4k verschenkt, aber es bleiben ja 28k übrig.
ROM von 8000h-FFFFh, den du erstmal freilässt.
Peter D. schrieb:> Man könnte aber auch BASCOM nehmen und irgendeinen 8051 mit Bootloader,> z.B. AT89C51RB2-3CSUM
Allerdings sind 1kByte RAM, die der AT89C51RB2 intern hat, wirklich sehr
wenig. Wie das mit der Hardware bei BASCOM läuft, weiss ich nicht, aber
ein externes RAM dürfte da auch nicht schaden.
Gut, der Sinclair ZX81 wurde mit 2k RAM ausgeliefert und damit konnte
man schon was anfangen :-)
Matthias S. schrieb:> Allerdings sind 1kByte RAM, die der AT89C51RB2 intern hat, wirklich sehr> wenig.
Wofür?
Für Steuerungen sind 1kB in der Regel mehr als ausreichend.
Der 8051 ist nunmal kein MC, den man für MP3, Video, Webseiten, HDD,
Ethernet usw. bevorzugen sollte.
Matthias S. schrieb:> Janus M. schrieb:>> Der Channel Decoder dürfte für mein Vorhaben überflüssig sein oder?>> Ich habe in deiner originalen Platine nichts entdeckt, was als 'Channel> Decoder' durchgeht. Ich sehe da einen MC, einen EPROM, einen RAM und die> einfache Auswahllogik mit dem 7400.> Das die serielle Schnittstelle mit Optokoppler und Stromschleife> ausgelegt ist, liegt an der MIDI Spezifikation.> Die einfachste Modifikation dürfte es übrigens sein, einfach die /CE> Leitungen der beiden JEDEC Sockel zu tauschen. Dann hast du ein> Addressschema, das für alle Basics klappen sollte:>> Basic im MC von 0000h-1FFFh> RAM von 2000h-7FFFh, wenn du einen 32k RAM einsetzt. Davon sind die> ersten 4k verschenkt, aber es bleiben ja 28k übrig.> ROM von 8000h-FFFFh, den du erstmal freilässt.
Zuerst mal vielen Dank für Deine Antwort Matthias, das liest sich ja
wirklich sehr einfach in der Umsetzung.
1) Das sehe ich auch so, viel ist wirklich nicht dran und das ist fast
schon wieder genial :-).
2) Serielle Schnittstelle hier als MIDI da (..lang wars her) mit ATARI
betrieben. Gestern habe ich mir per Hand auf Lochrasterplatine mittels
MAX232N und 5 Kondensatoren mit 10 microF einen bequemeren Zugang
gebastelt. Funktionierte super als es ich mit Ultramon getestet habe.
3) Wohl eine sehr wichtige Aussage für mich. Dachte zuerst, warum
tausche ich nicht einfach nur ROM und RAM :-).
4) Das 4k vom RAM verschenkt sind wäre nicht so tragisch
Basic von 0000h-1FFFh (8 KB)
RAM von 2000h-3000h (4 KB) nicht nutzbar
RAM von 3000h-7FFFh (20 KB)
ROM von 8000h-FFFFh (32 KB)
Weshalb sind 4 KB nicht nutzbar vom RAM ??
5) Im Anhang ist die Speicheraufteilung alt und neu sowie die
Modifikation zu ersehen.
6) Schön wäre es noch das Vertauschen der CE Leitungen über einen
einfachen Schalter hinzubekommen, so dass man beliebig wählen kann ob
Basic oder Urzustand. Aber das sind Feinheiten :-). Zunächst gilt es mal
das überhaupt zum Laufen zu bringen
Statt des Schalters, hier eine Lösung mit Jumpern
Stellung der Jumper in grün gibt die unveränderte Schaltung wieder
(Midi)
in schwarz vertauschen von RAM und ROM (BASIC)
Das ganze befindet sich auf einer 8 poligen Stiftleiste
ein.
>> Da der andere Sockel noch kein Schreibsignal hat, ist die dauerhafte> Speicherung noch nicht möglich - kannst du aber jederzeit nachholen.
Uffz, und ich dachte das wäre mit dem Tausch getan. Wo bekomme ich denn
das Signal her?
Ausgegeben wird folgendes siehe Anhang.
Dieter W. schrieb:> Janus M. schrieb:>> Ausgegeben wird folgendes siehe Anhang.>> Das liegt daran, dass Du nicht "? FREE" eingegeben hast.
Oh, da hast Du recht.
Gleich nochmal siehe Anhang.
'?' ist in Intel Basic und vielen anderen ein Synonym für 'print',
deswegen habe ich es mit in die Zeile geschrieben.
Janus M. schrieb:> Uffz, und ich dachte das wäre mit dem Tausch getan. Wo bekomme ich denn> das Signal her?
Na, vom Nachbarsockel. Allerdings gibt es im JEDEC Pinout einen
Unterschied zwischen den 32k EPROM und den 32k RAM Bausteinen. Erstere
benutzen Pin 27 als A14 Leitung und Pin 1 als Vpp Anschluss, letzter
tragen auf Pin 27 das /WE (Schreib-) Signal und an Pin 1 die
Adressleitung A14.
Das RAM Pinout ist kompatibel zu parallelen EEPROMs wie dem Atmel
AT28BV256, der sich nach aussen wie ein RAM verhält, nur das er nach dem
Powerdown die Daten hält, darauf ist die Version 1p3 von den Intel Basic
Verbesserern schon vorbereitet.
Da die Zeit von den alten EPROMs abgelaufen ist, würde ich früher oder
später den Sockel auf RAM umstricken. Dann kannst du entweder simpel mit
Batterie puffern, oder so einen Flash EEPROM wie den von Atmel
einsetzen:
http://www.atmel.com/products/memories/parallel/parallel_eeprom.aspx?tab=overviewJanus M. schrieb:> Gleich nochmal siehe Anhang.
Hey, dann gehts ja doch - Intel Basic ist schlauer, als ich dachte. Es
fehlen vom Ram also praktisch nur die ersten beiden 256Byte Pages. Sieht
doch bestens aus.
m.n. schrieb:> Als nächstes mußt Du testen, wie schnell das BASIC die ersten 1000 oder> 10000 Primzahlen findet. Dieser Test war seinerzeit Pflicht! ;-)
Äh, ich will das Ding nicht überfordern. :-))
Irgendwie erinnert mich das alles schwer an einen Pet 2001 Rechner. Nur
die Platine ist extrem geschrumpft.
Muss jetzt erst noch dieses Signal für den Speicher irgendwie
aufbasteln.
Jedenfalls zeigt sich, dass man sogar den Midi 8031, damals für den
Atari gedacht, zu allerlei Sachen missbrauchen kann. :-)
Assembler ist um Ecken schwieriger zu programmieren das war halt der
Hauptgrund mal was neues zu versuchen.
..."Hey, dann gehts ja doch - Intel Basic ist schlauer, als ich dachte.
Es
fehlen vom Ram also praktisch nur die ersten beiden 256Byte Pages. Sieht
doch bestens aus."
Hm, so richtig werde ich trotzdem nicht ganz schlau draus. Ich bin
eigentlich auch der Meinung, dass da durch das Vertauschen der CE
Leitungen noch die WE Leitung mit müsste. Im Schaltplan ist die ja nach
wie vor nur beim RAM was ja jetzt der ROM ist und müsste auch mitgezogen
werden.
Wie merke ich denn überhaupt ob da das RAM richtig angesprochen wird?
Vielleicht sollte ich mal den RAM rausnehmen.
Irgendwie kann ich dem noch nicht ganz trauen. Das mit der Leitung muss
ich mal morgen in aller Ruhe prüfen.
Sicher kann man das EPROM durch viele neuen Bausteine ersetzen. Bin aber
erstmal froh das das überhaupt so läuft. Grade während des Lötens hatte
ich schon dunkle Vorahnungen hier schönen Elektroschrott zu produzieren.
:-)
"Na, vom Nachbarsockel. Allerdings gibt es im JEDEC Pinout einen
Unterschied zwischen den 32k EPROM und den 32k RAM Bausteinen.
Erstere benutzen Pin 27 als A14 Leitung und Pin 1 als Vpp Anschluss,
letzter
tragen auf Pin 27 das /WE (Schreib-) Signal und an Pin 1 die
Adressleitung A14."
Wenn ich die Platinen Verdrahtung ansehe sieht es derzeit real so aus
egal ob CE vertauscht ist oder nicht.
RAM:
Pin 27 (WE) geht an PIN 16 vom 8031 (Port 3.6)
ROM:
Pin 27 (A14) geht an PIN 1 vom RAM (A14) und an PIN 27 vom 8031 (A14)
Aus der Speicherbelegung werd ich auch nicht ganz schlau.
Er zeigt 32255 RAM 32768 ist die volle Speichergrösse (2 hoch 15)
fehlen 513 Byte. Der 8031 hat 128 Byte RAM.
Alles etwas merkwürdig.
Ich glaube allerdings nicht das dieses Basic so schlau ist meine
spezielle Verdrahtung zu erkennen. Ich gehe mal davon aus das Entwickler
zwar alle möglichen Kombinationen berücksichtigen, die auch Sinn machen
aber das wars dann auch. Warum sollten die sich mit Sonderfällen
belasten?
Janus M. schrieb:> Wie merke ich denn überhaupt ob da das RAM richtig angesprochen wird?> Vielleicht sollte ich mal den RAM rausnehmen.
PRINT FREE hat Dir 32k angezeigt, also hat der Controller das RAM
erkannt. PRINT MTOP liefert Dir die oberste RAM-Adresse, PRINT LEN die
Länge Deines Programmes. Ohne Programm ist LEN=1.
Das RAM funktioniert wenn Du ein Programm eingeben kannst und es
drinbleibt.
Der modernen Mikroelektronik sei Dank musst Du das nicht mehr auf einer
Gummitastatur eintippen und wenn der Kühlschrank anspringt stürzt der
Rechner ab, sondern Du kannst es komfortabel vom Terminal aus
rüberschieben. "Textdatei senden". Aber Vorsicht -- ein paar
Millisekunden am Zeilenende braucht die Büchse zum Wegsortieren.
Beispiel zum copy & paste
1
1 FOR I=0 TO 8191 : XBY(I+8192)=CBY(I) : NEXT I
2
10 PRINT "Universal PROM Programmer" : PRINT "What type of device ?"
Das waren noch Zeiten...
Wieso hat hier eigentlich noch niemand dem mc-Basic EMUF erwähnt?
8052 AH-Basic, Eprom-Programmiermöglichkeit, ADC, 2xDAC, VG-Leiste,
gibts ab&zu mal in der Bucht...
irgendwo hab ich noch einen rumliegen... muß ich direkt mal suchen
gehen...
Matthias S. schrieb:>> Das BBC BASIC für den ARM im Raspberry Pi ist von 1985 :-) Kam>> ursprünglich vom 6502>> Im 'Intel Microcontroller Handbook' von 1981 wird der '8052AH Basic'> vorgestellt.
Hier mal zum Vergleich BBC BASIC auf dem Raspberry Pi: Auslesen eines
I2C Temperatursensors LM75 mit Adresse 0x48
DIM buffer% 3
REPEAT
SYS "IIC_Control", (&48<<1)+1, buffer%, 2
PRINT ?buffer% + (?(buffer%+1))/256
time = TIME + 25
REPEAT
UNTIL TIME > time
UNTIL FALSE
Joerg L. schrieb:> Das waren noch Zeiten...> Wieso hat hier eigentlich noch niemand dem mc-Basic EMUF erwähnt?
Oder das Compuboard vom Elektuur-Verlag, siehe Anhang.
Oh, es gibt viele Systeme, auf denen das Intel Basic läuft - ich habe es
ja auch auf einer SPS zum laufen gebracht.
Die Herausforderung war, es auch auf dem Midi 8031 Board zu zünden, denn
das ist ja das vorhandene System des TE.
Im BASIC Handbuch von Intel sind ja auch einige Systeme, bzw. deren
Hardware beschrieben, von ganz klein bis mittelgross.
soul e. schrieb:> Oder das Compuboard vom Elektuur-Verlag, siehe Anhang.
Zwei Autoren von Elektor haben auch damals noch einige Bugs beseitigt,
ebenso haben noch einige andere Leute neue MC unterstützt und z.B. den
EEPROM Modus eingeführt. Die Quintessenz daraus ist Intel Basic Version
1.3, das es bei z.B.
http://www.nomad.ee/
gibt.
Intel selber hat die Versionen 1.0 und 1.1 ausgeliefert.
soul e. schrieb:> Das RAM funktioniert wenn Du ein Programm eingeben kannst und es> drinbleibt.>
Also so richtig den Eindruck habe ich nicht das das Programm drinbleibt.
Was rauskommt, siehe Anhang
Habe das Programm mit Copy und Paste eingefügt nach RUN gibt es nur ein
READY.
Da tut sich nichts. Die WE Leitung fehlt demnach und was er mir sonst
ausgibt wird vermutlich alles ohne RAM machbar sein.
Janus M. schrieb:> Die WE Leitung fehlt demnach und was er mir sonst> ausgibt wird vermutlich alles ohne RAM machbar sein.
Nö. Das RAM wird beim Start getestet (auch beschrieben) und dann werden
MTOP usw. gesetzt.
Gib mal nur ein kleines Programm ein und lasse es dir mit LIST anzeigen.
Mich irritiert, das du die Version 1.2a benutzt. Spezielle Gründe, nicht
1.31 zu nehmen?
Matthias S. schrieb:> Janus M. schrieb:>> Die WE Leitung fehlt demnach und was er mir sonst>> ausgibt wird vermutlich alles ohne RAM machbar sein.>> Nö. Das RAM wird beim Start getestet (auch beschrieben) und dann werden> MTOP usw. gesetzt.> Gib mal nur ein kleines Programm ein und lasse es dir mit LIST anzeigen.> Mich irritiert, das du die Version 1.2a benutzt. Spezielle Gründe, nicht> 1.31 zu nehmen?
1.2a ist 1.31 und 8 KB gross warum das nicht übertragen wurde im
Sourcecode weiss ich nicht (im Anhang noch die von mir benutzte Version)
Auch bei kleinem Programm tut sich nichts.
Das Big Basic mit 16 KB nennt sich auch 1.31 hatte ich auch drin ohne
irgendwelche Reaktionen.
Hm, jetzt hab ich doch ein Programm zum Laufen gebracht anscheinend
funktioniert es doch.
Vielleicht hat er mir das Copy und Paste übelgenommen. Als ich die
Programmzeilen von Hand eingegeben habe gings.
Im Anhang eine Ansicht wie das Programm läuft.
Auch das Clockprogramm geht
Musste das Terminal etwas verlangsamen, da sonst manche Buchstaben und
Zahlen verschluckt werden.
Am Zeilenende 500 ms und zwischen den Zeichen 200 ms. Die Baudrate liegt
bei 9600. Der Quarz ist 11,0592 MHZ.
Welche Einstellungen sind denn so üblich?
Hat jemand vielleicht ein Programm um die Konfiguration zu testen und
wie die Speicherbereiche und Hardware vom System gesehen werden?
Für PCs gibts ja z.B. AIDA, Everest etc und so was ähnliches für den
8031 suche ich.
Janus M. schrieb:> Er zeigt 32255 RAM 32768 ist die volle Speichergrösse (2 hoch 15)> fehlen 513 Byte. Der 8031 hat 128 Byte RAM.
Nun, das wird vielleicht die Angabe des freien Speichers für
Basic-Programme und -Daten sein? Der Basic-Interpreter wird für seinen
internen Kram sicherlich auch noch RAM benötigen.
Eine ganz allgemeine Frage noch zu Basic bezüglich Geschwindigkeit und
Stabilität.
Wie brauchbar ist das tatsächlich um zum Beispiel eine
Schrittmotorsteuerungen oder eine Balanciersteuerung (Sagway) damit zu
realisieren und
Wo liegen die Hauptprobleme und Grenzen bei der Anwendung von Basic
Rufus Τ. F. schrieb:> Janus M. schrieb:>> Er zeigt 32255 RAM 32768 ist die volle Speichergrösse (2 hoch 15)>> fehlen 513 Byte. Der 8031 hat 128 Byte RAM.>> Nun, das wird vielleicht die Angabe des freien Speichers für> Basic-Programme und -Daten sein? Der Basic-Interpreter wird für seinen> internen Kram sicherlich auch noch RAM benötigen.
Tja scheint so, hoffe dass man das noch mit einem geeigneten Programm
erschliessen kann.
Rufus Τ. F. schrieb:> Janus M. schrieb:>> Er zeigt 32255 RAM 32768 ist die volle Speichergrösse (2 hoch 15)>> fehlen 513 Byte. Der 8031 hat 128 Byte RAM.>> Nun, das wird vielleicht die Angabe des freien Speichers für> Basic-Programme und -Daten sein? Der Basic-Interpreter wird für seinen> internen Kram sicherlich auch noch RAM benötigen.
Richtig. Die (physische) obere Speichergrenze MTOP = 32767 wurde ja
korrekt angezeigt.
Janus M. schrieb:> Wo liegen die Hauptprobleme und Grenzen bei der Anwendung von Basic
Laß doch mal einen Pin wackeln auf '1' und wieder auf '0', usw..
Dann siehst Du die Einschränkungen eines Interpreters.
Primzahlen wolltest Du ja nicht wissen ;-)
Lothar schrieb:> Hier mal zum Vergleich BBC BASIC auf dem Raspberry Pi:
Könntest Du gezeigte Routine mal auf einem RPi laufen lassen?
Ein STM32F407 braucht für die dmul() rund 38 µs. Mich würde
interessieren, wieviel schneller das BBC-BASIC auf dem RPi läuft.
m.n. schrieb:> Janus M. schrieb:>> Wo liegen die Hauptprobleme und Grenzen bei der Anwendung von Basic>> Laß doch mal einen Pin wackeln auf '1' und wieder auf '0', usw..> Dann siehst Du die Einschränkungen eines Interpreters.> Primzahlen wolltest Du ja nicht wissen ;-)
Wie mach ich das mit dem WackelDackel?
Suche noch nach einem Testprogramm um auf die Pins zuzugreifen
m.n. schrieb:> Oh, da muß ich mich selber mal schlau machen. Probiere bitte>> 10 DO> 20 PORT1 = PORT1.XOR.1> 30 WHILE 1>> Damit sollte das untere Bit von PORT1 wackeln.
Hier ein Lauflicht:
5 REM Uhr einschalten
10 CLOCK 1
20 FOR I = 0 TO 15
30 GOSUB 1000
40 REM Uhr zurücksetzen
50 TIME = 0
55 REM 1/10 Sekunde Licht an
60 IF TIME < 0.1 THEN GOTO 60
70 GOSUB 1050
80 NEXT I
90 GOTO 20
990 REM Einschalten des Ports I
1000 P = 2 ** I
1010 PORT = PORT .OR. P
1020 PORTX = PORT
1030 RETURN
1040 REM Ausschalten des Ports I
1050 P = 2 ** I
1060 PORT = PORT .AND. (65535-P)
1070 PORTX = PORT
1080 RETURN
Janus M. schrieb:> Eine ganz allgemeine Frage noch zu Basic bezüglich Geschwindigkeit und> Stabilität.
Da ja Programme hauptsächlich auf dem PC erstellt werden, haben sich
auch für BASIC Compiler durchgesetzt, z.B. BASCOM für den 8051.
Janus M. schrieb:> Wie brauchbar ist das tatsächlich um zum Beispiel eine> Schrittmotorsteuerungen oder eine Balanciersteuerung (Sagway) damit zu> realisieren und
Das Todesurteil für einen BASIC-Interpreter.
Peter D. schrieb:> Janus M. schrieb:>> Eine ganz allgemeine Frage noch zu Basic bezüglich Geschwindigkeit und>> Stabilität.>> Da ja Programme hauptsächlich auf dem PC erstellt werden, haben sich> auch für BASIC Compiler durchgesetzt, z.B. BASCOM für den 8051.>> Janus M. schrieb:>> Wie brauchbar ist das tatsächlich um zum Beispiel eine>> Schrittmotorsteuerungen oder eine Balanciersteuerung (Sagway) damit zu>> realisieren und>> Das Todesurteil für einen BASIC-Interpreter.
Gibts dazu ein BIN File was man empfehlen kann?
Demnach ist Basic nur was für gemächlichere Sachen.
Janus M. schrieb:> Hier ein Lauflicht:
Vorsicht. Das ist ein Programm aus meinem Thread zum PS3 Basic - ein von
mir modifiziertes Intel Basic für die Kloeckner-Moeller PS3. Die hat
eine ganz andere Peripherie und dafür spezielle Kommandos wie 'PORTX'.
Janus M. schrieb:> Welches EEPROM ist da zu empfehlen finde keines das in den Sockel des> alten EPROMS passt alle sind leider viel kleiner.
Ein paralleles EEPROM hatte ich oben schon genannt. Allerdings erfordern
alle diese Bausteine die geänderte Pinbelegung von Pin 1 und Pin 27. Der
alte Eprom Sockel sollte also das gleiche Pinning wie der RAM Sockel
aufweisen.
Matthias S. schrieb:> Janus M. schrieb:>> Welches EEPROM ist da zu empfehlen finde keines das in den Sockel des>> alten EPROMS passt alle sind leider viel kleiner.>> Ein paralleles EEPROM hatte ich oben schon genannt. Allerdings erfordern> alle diese Bausteine die geänderte Pinbelegung von Pin 1 und Pin 27. Der> alte Eprom Sockel sollte also das gleiche Pinning wie der RAM Sockel> aufweisen.
1) Das Programm PS3 Basic funktioniert tatsächlich nicht, dafür aber das
andere. Nur sehe ich kein Blinken. Die LED brennt scheinbar. Eventuell
muss ich das mal anders aufbauen, muss nämlich immer den RS232 abzihen
und den LED Port anstöpseln da ich nur einen Connector habe. Vielleicht
liegts daran.
Ich wiederhole nochmal die Aussage von Dir von oben:
"Das RAM Pinout ist kompatibel zu parallelen EEPROMs wie dem Atmel
AT28BV256, der sich nach aussen wie ein RAM verhält, nur das er nach dem
Powerdown die Daten hält, darauf ist die Version 1p3 von den Intel Basic
Verbesserern schon vorbereitet.
Da die Zeit von den alten EPROMs abgelaufen ist, würde ich früher oder
später den Sockel auf RAM umstricken. Dann kannst du entweder simpel mit
Batterie puffern, oder so einen Flash EEPROM wie den von Atmel
einsetzen:
http://www.atmel.com/products/memories/parallel/pa..."
2) Ich würde nur das EPROM gegen das EEPROM tauschen. Da ich den EPROM
SOckel als Textool aufgelätet habe kann ich somit jede beliebige
Pinbelegung mit einem Aufstecksockel erreichen. Pikant ist dabei, dass
der WE Anschluss beim EPROM so bleibt und ich nehme mal an das wird sich
beim EEPROM auch nicht anders verhalten das Du hier nennst
http://www.atmel.com/Images/doc0273.pdf
Entweder in der Ausführung PLCC oder SOIC. Da müsste ich einen
Adapter basteln, der ins Textool geklemmt wird.
Janus M. schrieb:> Da ich den EPROM> SOckel als Textool aufgelätet habe kann ich somit jede beliebige> Pinbelegung mit einem Aufstecksockel erreichen.
Leider fehlt an deinem jetzigen EPROM Sockel aber der /WE Anschluss
komplett, du musst ihn also irgendwie überhaupt auf den Sockel bringen.
Das mit dem Textool ist gar nicht schlecht - du könntest nach der
einmaligen Änderung des Boards direkt auf den Textool dann verschiedene
EEPROMs setzen, die verschiedene Program-Arrangements einprogrammiert
haben.
Die Verwaltung dieser Programme hat Intel Basic ja schon eingebaut.
Janus M. schrieb:> Das Programm PS3 Basic funktioniert tatsächlich nicht, dafür aber das> andere. Nur sehe ich kein Blinken. Die LED brennt scheinbar.
Die wird so schnell blinken, das du davon nichts mehr mitkriegst.
Entweder hängst du mal ein Oszi ran, oder führst ein Programm mit
Messuhr aus, wie oben schon mal vorgeschlagen.
In meinem Lauflicht Programm musste ich auch die Verzögerung mit CLOCK
und TIME einarbeiten, weil es sonst zu schnell läuft. Neuerere MCS51 in
z.B. 'WARP' Technik führen auch mit jedem Takt einen Befehl aus, sind
also bis zu 12 mal schneller als die alten. Auch diese MC laufen mit
Intel Basic, wenn man möchte.
Matthias S. schrieb:> Janus M. schrieb:> Leider fehlt an deinem jetzigen EPROM Sockel aber der /WE Anschluss> komplett, du musst ihn also irgendwie überhaupt auf den Sockel bringen.> Das mit dem Textool ist gar nicht schlecht - du könntest nach der> einmaligen Änderung des Boards direkt auf den Textool dann verschiedene> EEPROMs setzen, die verschiedene Program-Arrangements einprogrammiert> haben.> Die Verwaltung dieser Programme hat Intel Basic ja schon eingebaut.>> Die wird so schnell blinken, das du davon nichts mehr mitkriegst.> Entweder hängst du mal ein Oszi ran, oder führst ein Programm mit> Messuhr aus, wie oben schon mal vorgeschlagen.>> In meinem Lauflicht Programm musste ich auch die Verzögerung mit CLOCK> und TIME einarbeiten, weil es sonst zu schnell läuft. Neuerere MCS51 in> z.B. 'WARP' Technik führen auch mit jedem Takt einen Befehl aus, sind> also bis zu 12 mal schneller als die alten. Auch diese MC laufen mit> Intel Basic, wenn man möchte.
1) Den WE PIN hänge ich einfach auf PIN 27 eventuell unterbrochen durch
einen Jumper.
2) Dann ist BASIC doch sehr schnell und könnte doch mit einer
Balancesteuerung a la Sagway mithalten. Oszi hab ich leider nicht könnte
hoechsten eine grosse Schleife im Programm einbauen dann blinkt es auch.
WARP sagt mir nun gar nichts bin aus der "Vergangenheit" :-)
12 mal schneller, Wahnsinn. Ich bin mit der Geschwindigkeit bisher ganz
zufrieden.
Langsam wandelt sich mein Board immer mehr zu einem Universalteil.
Basic, Assembler, Atari, PC, EPROMS, EEPROMS und Quarze kann ich auch
bequem austauschen.
Das wird langsam die eierlegende Wollmilchsau. Könnte noch ein
Blauzahnmodul basteln oder direkt USB Anschluss an den PC
Janus M. schrieb:>> Und wie schnell wackelt der Portpin in der Endlosschleife?>> Da wackelt nichts, die brennt als wäre sie an einer Konstantstromquelle
Wenn der Portpin brennt, ist der µC wohl schon kaputt :-(
Janus M. schrieb:> Oszi hab ich leider nicht könnte> hoechsten eine grosse Schleife im Programm einbauen
Dann mach vielleicht eine Schleife bis 100000 und messe die Zeit, bis
nach RUN der Cursor wieder erscheint.
Wäre es möglich das 1p3 Basic als Assemblerdatei oder noch besser als
BIN oder Hex Datei hier rein zustellen?
Hab das nur als Textdatei und die ganzen Zeilennummerierung davor
löschen wie z.B. "1555:" möchte ich mir gerne ersparen.
m.n. schrieb:> Wenn der Portpin brennt, ist der µC wohl schon kaputt :-(>
Nein, der ist ganz neu und in Ordnung ausserdem betreib ich die LED
immer mit Vorwiderstand.
Matthias W. schrieb:> Dafür gibts einen Befehl ;) nennt sich "cut"> Hat Windows sowas nicht ?
Den kenne ich nicht. Ich versuche die Textdatei spaltenweise zu
bearbeiten. Mehr als 7000 Zeilennummern von Hand zu löschen finde ich
etwas mühselig.
Habe eine Batteriefassung für TYP 2032 eingebaut.
Schaltung sieht so aus. Auf eine aufladbare Version habe ich aus Gründen
der Gefahr mal einen AKKU gegen eine normale Batterie zu verwechseln
verzichtet.
1
2
I- I
3
-----------------------I -I-------- VCC (RAM)
4
I I- I
5
-----Batterie Diode 1N4001
6
--- CR2032
7
I
8
----------------------------------- GND (RAM)
--
"ASCII-Art" bitte in [ pre ] [ /pre ]-Tags einschließen.
-rufus
Matthias S. schrieb:> Ich hänge dir mal die Version 1p3 im Original an.> Sollte mit ASEM-51 direkt assembeln - oder wie das heisst :-)
Danke vielmals...so kann er das in meiner Entwicklungsumgebung auch
ausführen
und direkt in ein BIN File umwandeln
Janus M. schrieb:> m.n. schrieb:>>> Wenn der Portpin brennt, ist der µC wohl schon kaputt :-(>>> Nein, der ist ganz neu und in Ordnung ausserdem betreib ich die LED> immer mit Vorwiderstand.
Du wolltest die Geschwindigkeit wissen, ich gab Dir eine kleine
Testroutine und Du antwortest mit einer leuchtenden LED, die kein
Schwein interessiert.
Hast Du überhaupt verstanden, worum es geht?
Janus M. schrieb:> Habe eine Batteriefassung für TYP 2032 eingebaut.
Denk dran, auch die Vcc des batteriegepufferten RAM vom Rest des Boards
mit einer Diode zu entkoppeln, sonst wird das ganze Board von der
Knopfzelle versorgt.
Wichtig ist fürs batteriegepufferte RAM, das es im Standby deselektiert
ist (/CE muss high werden) und das die Adress- und Datenleitungen
entweder glatt auf low oder glatt auf high liegen, sonst zieht das Dings
spürbaren Strom.
Das mit /CE wird sich vermutlich dadurch erreichen lassen, das du statt
des 7400 einen 7438 einsetzt, ein 4-fach NAND mit Open Collector
Ausgang. Am /CE siehst du einen Pullup (2k2-4k7) gegen Vcc des RAM (das
im stromlosen Zustand dann von der Knopfzelle geliefert wird) vor.
Da auch die anderen Ausgänge des 7438 Open Collector sind, legst du hier
an jeden Ausgang, der benutzt wird, auch Pullups von z.B. 1k gegen die
normalen 5V des Boards.
In der Kloeckner SPS wird das Puffern von 2 Ladyzellen erledigt (die ich
durch eine LiIon Zelle ersetzt habe), die einen LP RAM (HM62256-LP)
speisen. Der Strom liegt bei etwa 20µA im ausgeschalteten Zustand, d.h.
die Selbstentladung der Zelle ist höher als die RAM Pufferung.
Im eingeschalteten Zustand wird die LiIon Zelle (flacher Handyakku) über
1 Diode mit hoher Durchlassspannung (bei 0,8V) und einen R aus den 5V
nachgeladen, so das etwa 4,2V an der Zelle ankommen.
Hallo Leute,
habe mir interessehalber das Basic heruntergeladen und versuche es auf
einer moderneren Hardware zum laufen zu kriegen. Die Version ist
vermutlich die gleiche, welche Matthias hier eingestellt hat. Ein grober
Vergleich der Quelldatei beim lesen und die gleiche Anzahl
Fehlermeldungen und Warnungen beim Assemblieren läßt mich darauf
schließen.
Übersetze ich die "ASM"-Datei mit Keil, gelingt die Übersetztung auf
Anhieb fehlerfrei. Mit dem Assembler der Entwicklungsumgebung MCU-8051
erhalte ich 49 Fehler und 606 Warnungen.
Soweit ich mich erinnere ist der Assembler bei Keil ohne
Größenbeschränkung verwendbar, bin mir da aber nicht mehr sicher.
Wie dem auch sei, habe ich die Quelldatei übersetzt, auf mein System
übertragen und ausprobiert. Wie zu erwarten tat sich nichts, denn meine
Hardware paßt nicht zum Programm. Ich verwende diese Hardware
Beitrag "Re: 8051 - Programm und Daten in einem 128kB Chip ohne Overlap"
Sie hat 128kByte RAM und einen UART-USB Adapter auf der Platine.
Der Datentransfer zwischen dem 89S8253-Controller und dem CDC-Chip läuft
mit 375000Baud, was dem Basicinterpreter eindeutig zu schnell ist.
Nachdem ich Teile des Basic (Startmeldung) an die hohe Geschwindikkeit
angepasst habe, kommt die Startmeldung nun tadellos vom µC zum PC.
Irgendwelche Kommandos vom PC zum µC kommen nur verstümmelt durch und
somit ist das Basic noch nicht wirklich lauffähig.
Als Problem habe ich die hohe Übertragungsgeschwindigkeit erkannt. Mit
375kBaud ist die Übertragung deutlich schneller fertig, als mit den
vorgesehenen max. 9,6kBaud, was im Programmablauf zu Schwierigkeiten
führt.
Möglicherweise bekomme ich die Probleme in den Griff und werde darüber
berichten. Da mir Basic aber nicht wichtig ist und ich das nur aus
Interesse mache, wird es dauern oder nie fertig.
Dies sollte nur zeigen, daß es möglich ist das alte Basic mit aktuellen
Werkzeugen auf gängige MCS51-Hardware zu übertragen.
Gruß. Tom
Matthias S. schrieb:> Janus M. schrieb:>> Habe eine Batteriefassung für TYP 2032 eingebaut.>> Denk dran, auch die Vcc des batteriegepufferten RAM vom Rest des Boards> mit einer Diode zu entkoppeln, sonst wird das ganze Board von der> Knopfzelle versorgt.> Wichtig ist fürs batteriegepufferte RAM, das es im Standby deselektiert> ist (/CE muss high werden) und das die Adress- und Datenleitungen> entweder glatt auf low oder glatt auf high liegen, sonst zieht das Dings> spürbaren Strom.>> Das mit /CE wird sich vermutlich dadurch erreichen lassen, das du statt> des 7400 einen 7438 einsetzt, ein 4-fach NAND mit Open Collector> Ausgang. Am /CE siehst du einen Pullup (2k2-4k7) gegen Vcc des RAM (das> im stromlosen Zustand dann von der Knopfzelle geliefert wird) vor.>> Da auch die anderen Ausgänge des 7438 Open Collector sind, legst du hier> an jeden Ausgang, der benutzt wird, auch Pullups von z.B. 1k gegen die> normalen 5V des Boards.> In der Kloeckner SPS wird das Puffern von 2 Ladyzellen erledigt (die ich> durch eine LiIon Zelle ersetzt habe), die einen LP RAM (HM62256-LP)> speisen. Der Strom liegt bei etwa 20µA im ausgeschalteten Zustand, d.h.> die Selbstentladung der Zelle ist höher als die RAM Pufferung.> Im eingeschalteten Zustand wird die LiIon Zelle (flacher Handyakku) über> 1 Diode mit hoher Durchlassspannung (bei 0,8V) und einen R aus den 5V> nachgeladen, so das etwa 4,2V an der Zelle ankommen.http://circuits.datasheetdir.com/109/HD74LS38-pinout.jpg
1) Das wäre nicht so sinnreich, wenn das ganze Board versorgt wird. Dann
kann ich auch die 9V Batterie dranlassen. Dank für den Hinweis.
2) Hm, das bedarf dann eines Austausches des NAND gegen den 7438. Hab so
einen leider nicht in der Bastelkiste rumfliegen. Aber viel mehr macht
mir der Tausch Kopschmerzen sieht nach einer grösseren Operation aus :-(
3) Ich habe hier im Forum eine Schaltung gefunden, die dem Problem
ziemlich nahe kommt denke ich.
Beitrag "CMOS-RAM Puffer-Batt"
(siehe Bild). Ich würde da Nr.2 nehmen kombiniert mit A (Schottky). Das
sieht relativ einfach aus.
TomA schrieb:> Übersetze ich die "ASM"-Datei mit Keil, gelingt die Übersetztung auf> Anhieb fehlerfrei.
Auch mit ASEM-51 und der IDE von MIDE-51 assembliert alles auf Anhieb
ohne Fehler.
Etwas exotischere Assembler wie TASM oder der alte A51.COM benutzen eine
etwas andere Syntax für z.B. Konstanten und der Quelltext muss dann
darauf angepasst werden.
A51.COM notiert eine Konstante bspw. als #H'A1, während die originale
Intelsyntax hier #0A1H bzw. #0A1h sehen möchte.
Da MIDE-51 und der darin enthaltene ASEM-51 kostenlos erhältlich ist und
keinerlei Beschränkungen hat, kann ich dieses Paket zumindest für Win
mit gutem Gewissen empfehlen. Die beiden enthaltenen Simulatoren sind
allerdings grössenbeschränkt - aber die habe ich noch nie gebraucht.
SDCC ist auch enthalten - habe ich noch nie benutzt, also ohne
Kommentar.
http://www.opcube.com/home.html
TomA schrieb:> ... und die gleiche Anzahl Fehlermeldungen und Warnungen beim >Assemblieren läßt
mich darauf schließen.
>> Übersetze ich die "ASM"-Datei mit Keil, gelingt die Übersetztung auf> Anhieb fehlerfrei. Mit dem Assembler der Entwicklungsumgebung MCU-8051> erhalte ich 49 Fehler und 606 Warnungen.>> Wie dem auch sei, habe ich die Quelldatei übersetzt, auf mein System> übertragen und ausprobiert. Wie zu erwarten tat sich nichts, denn meine> Hardware paßt nicht zum Programm. Ich verwende diese Hardware> Beitrag "Re: 8051 - Programm und Daten in einem 128kB Chip ohne Overlap"> Sie hat 128kByte RAM und einen UART-USB Adapter auf der Platine.>> Der Datentransfer zwischen dem 89S8253-Controller und dem CDC-Chip läuft> mit 375000Baud, was dem Basicinterpreter eindeutig zu schnell ist.> Nachdem ich Teile des Basic (Startmeldung) an die hohe Geschwindikkeit> angepasst habe, kommt die Startmeldung nun tadellos vom µC zum PC.> Irgendwelche Kommandos vom PC zum µC kommen nur verstümmelt durch und> somit ist das Basic noch nicht wirklich lauffähig.>> Als Problem habe ich die hohe Übertragungsgeschwindigkeit erkannt. Mit> 375kBaud ist die Übertragung deutlich schneller fertig, als mit den> vorgesehenen max. 9,6kBaud, was im Programmablauf zu Schwierigkeiten> führt.>> Möglicherweise bekomme ich die Probleme in den Griff und werde darüber> berichten. Da mir Basic aber nicht wichtig ist und ich das nur aus> Interesse mache, wird es dauern oder nie fertig.>> Dies sollte nur zeigen, daß es möglich ist das alte Basic mit aktuellen> Werkzeugen auf gängige MCS51-Hardware zu übertragen.>> Gruß. Tom
1) Mit MC-51 http://www.ieap.uni-kiel.de/surface/ag-berndt/lehre/fpmc/
habe ich das Programm auf Anhieb ohne Fehler simuliert bekommen.
2) Ich hatte oben schon mal ein ähnliches Verhalten beim Einlesen von
Programmen als Textdatei. Abhilfe schaffte dabei nicht das verändern der
Baudzahl sondern die Dauer von einem zum nächsten Zeichen (200 ms) sowie
die Dauer von Zeile zu Zeile (5000 ms)
Vielleicht hilft das ja auch hier weiter.
m.n. schrieb:> Janus M. schrieb:>> m.n. schrieb:>>>>> Wenn der Portpin brennt, ist der µC wohl schon kaputt :-(>>>>> Nein, der ist ganz neu und in Ordnung ausserdem betreib ich die LED>> immer mit Vorwiderstand.>> Du wolltest die Geschwindigkeit wissen, ich gab Dir eine kleine> Testroutine und Du antwortest mit einer leuchtenden LED, die kein> Schwein interessiert.> Hast Du überhaupt verstanden, worum es geht?
Ich weiss wirklich nicht was Du noch meinst. Bin kein Hellseher.
Dann musst Du Dich eben etwas präziser ausdrücken.
Janus M. schrieb:> Baudzahl sondern die Dauer von einem zum nächsten Zeichen (200 ms) sowie> die Dauer von Zeile zu Zeile (5000 ms)
soll 500 ms heissen
> Wichtig ist fürs batteriegepufferte RAM, das es im Standby deselektiert> ist (/CE muss high werden) und das die Adress- und Datenleitungen> entweder glatt auf low oder glatt auf high liegen, sonst zieht das Dings> spürbaren Strom.>
Ich hab das Schaltbild hier mal abgewandelt. Wie man Adress und
Datenleitungen elegant auf einen definierten Zustand setzt ist mir noch
unklar.
Janus M. schrieb:> Wie man Adress und> Datenleitungen elegant auf einen definierten Zustand setzt ist mir noch> unklar.
Dafür wird der Rest des Boards sorgen, das im stromlosen Zustand die
Leitungen auf GND zieht - die Kloeckner Moeller machts genauso.
Aber aus deiner Schaltung werde ich nicht ganz schlau - /CE muss im
Betrieb ja angesteuert werden, das fehlt hier. Die Jungs bei Kloeckner
Moeller habens deswegen, wie ich es auch vorschlug, mit Open Collector
Ansteuerung realisiert. Ist der 7438 stromlos, ist der Kollektor Ausgang
auf hochohmig (Tristate) und kann deswegen von einem Pullup hochgezogen
werden.
Wenn du übrigens nur einen 8k RAM einsetzt (a là 6264), gibts noch eine
andere Möglichkeit. Diese Bausteine haben noch einen positiven CE
Eingang (CE2 auf Pin 26), der z.B. einfach mit den normalen Vcc des
Boards verbunden werden könnte. Da es für die Static RAMs reicht, wenn
einer der beiden CE deselektiert ist, würde das also auch funktionieren.
Bei 32k RAM Kieseln gibt es dieses Signal allerdings nicht.
Übrigens denke ich, das bei nicht allzu ungeschickter Programmierung die
Rechenleistung des BASIC für ein Segway dicke reichen sollte. Vermutlich
würde ich für den Sensor ein paar extra Routinen in Assembler hinzufügen
und evtl. ein passendes BASIC Kommando. Was hier noch fehlt, ist ein
programmierbarer PWM Ausgang. Das ist der Haken - im Original gibts halt
als I/O nur ein paar Pins des PORT 1.
Da stehe ich mit der KM SPS etwas besser da, denn Ports gibts hier bis
zum Abwinken und noch einen 4-Kanal ADC und 1-Kanal DAC.
Matthias S. schrieb:> Janus M. schrieb:>> Wie man Adress und>> Datenleitungen elegant auf einen definierten Zustand setzt ist mir noch>> unklar.>> Dafür wird der Rest des Boards sorgen, das im stromlosen Zustand die> Leitungen auf GND zieht - die Kloeckner Moeller machts genauso.> Aber aus deiner Schaltung werde ich nicht ganz schlau - /CE muss im> Betrieb ja angesteuert werden, das fehlt hier. Die Jungs bei Kloeckner> Moeller habens deswegen, wie ich es auch vorschlug, mit Open Collector> Ansteuerung realisiert. Ist der 7438 stromlos, ist der Kollektor Ausgang> auf hochohmig (Tristate) und kann deswegen von einem Pullup hochgezogen> werden.>> Wenn du übrigens nur einen 8k RAM einsetzt (a là 6264), gibts noch eine> andere Möglichkeit. Diese Bausteine haben noch einen positiven CE> Eingang (CE2 auf Pin 26), der z.B. einfach mit den normalen Vcc des> Boards verbunden werden könnte. Da es für die Static RAMs reicht, wenn> einer der beiden CE deselektiert ist, würde das also auch funktionieren.> Bei 32k RAM Kieseln gibt es dieses Signal allerdings nicht.>> Übrigens denke ich, das bei nicht allzu ungeschickter Programmierung die> Rechenleistung des BASIC für ein Segway dicke reichen sollte. Vermutlich> würde ich für den Sensor ein paar extra Routinen in Assembler hinzufügen> und evtl. ein passendes BASIC Kommando. Was hier noch fehlt, ist ein> programmierbarer PWM Ausgang. Das ist der Haken - im Original gibts halt> als I/O nur ein paar Pins des PORT 1.> Da stehe ich mit der KM SPS etwas besser da, denn Ports gibts hier bis> zum Abwinken und noch einen 4-Kanal ADC und 1-Kanal DAC.
1) Na dann ist das mit den Adress-/Datenleitungen ja gelöst
2) Ja, da hast Du recht, deshalb wurde der Entwurf überarbeitet.
3) schön zu wissen mit dem 8K RAM, möchte es allerdings möglichst
universal halten.
4) Das freut mich zu hören, dass es schon mit Basic reichen könnte.
5) Programierbarer PWM Ausgang. Hm ich dachte, dass man das von einem
Portpin an einen IC mit offenem Kollektor anschliesst und der dann
MOSfets ansteuert.
6) mit 8 Ports kann man zumindest 2 unipolare Schrittmotoren
anschliessen
7) ...oder halt die KM SPS Schaltung an dieser Stelle kopieren und
anpassen für den MIDI falls das nicht reicht :-)
Janus M. schrieb:> 7) ...oder halt die KM SPS Schaltung an dieser Stelle kopieren und> anpassen für den MIDI falls das nicht reicht :-)
Eher nicht. In der SPS sind 2 Stück 8255 als Peripherie und die alten
Dinger möchtest du dir nicht antun.
PWM bedeutet auch, das es da ein Rechtecksignal mit steuerbarer
Pulsbreite gibt, das der MCS51 erstmal nicht von sich aus erzeugen kann.
Du müsstest eine Soft-PWM implementieren (am besten per Interrupt),
damit du die Segway Motoren auch in der Geschwindigkeit regeln kannst.
Mit einfach nur An/Aus ist es da vermutlich nicht getan.
Hallo Leute,
habe jetzt das Basic auch über VUSB zum laufen gekriegt. Das Problem war
die lahme Verarbeitung der Zeichen vom UART durch das Basic. Ein
empfangenes Zeichen wird vom Basic gleich wieder über UART
zurückgesendet, dabei vergingen bei meinem Board (24MHz) ca. 1,25ms. In
der Zeit hat der Empfänger schon etliche Zeichen übersehen.
Habe jetzt die Empfangsroutine umgeschrieben, daß sie die Zeichen direkt
nacheinander im vorhandenen Empfangspuffer ablegt, ohne sie anzuzeigen.
Dadurch kann eine Zeichenfolge mit bis zu 6µs zwischen den Zeichen
erfasst werden. Das einlesen endet, nachdem ca. 66ms kein Zeichen mehr
empfangen wurde. Danach holt sich das Basic die Zeichen gemütlich aus
dem Puffer.
Habe die Änderung auch mit der RS232 Version ausprobiert, dort
funktioniert sie leider nicht.
;***************************************************************
;
; INPUTS A CHARACTER FROM THE SYSTEM CONSOLE.
;
;***************************************************************
;
INCHAR:
JNB BI,INCHAR1 ;CHECK FOR MONITOR (BUBBLE)
LCALL 2060H
SJMP INCH1
INCHAR1:JNB CIUB,INCHAR2 ;CHECK FOR USER
LCALL 4033H
SJMP INCH1
;hier werden die Zeichen vom UART schnell (bis zu 12Zyklen = 6µs) in den
Empfangspuffer
;eingelesen, erst danach holt sie das Basic einzeln aus dem Puffer.
;Timeout = 132134-Zyklen = 66,067ms (24MHz Takt)
INCHAR2:
cjne R0,#8,$+3 ;Zeichen im Puffer?
jc VomUart ;falls nein, vom UART einlesen
movx A,@r0 ;falls ja, aus dem Puffer holen
sjmp INCH1
VomUart:
push DPL ;Zeichen vom UART
mov DPL,R0 ;in den Puffer lesen
push DPL
push DPH
mov DPL,#80h ;Timeoutwert Aeussere Zeitschleife
jnb RI,$ ;Auf 1. Zeichen endlos warten
sjmp ZchnSave ;Falls Zeichen empfangen
RecLoop:
mov DPH,#0h ;Timeoutwert innen
EpfLop:
jb RI,ZchnSave ;Falls Zeichen empfangen
djnz DPH,EpfLop ;Innere Timeoutschleife
djnz DPL,RecLoop ;Aeussere Timeoutschleife
jnb RI,RcLoE
ZchnSave:
mov A,SBUF ;Zeichen laden und
clr RI
clr ACC.7 ;Nur ASCII (7Bit)
movx @r0,A ;in Puffer legen
inc R0 ;Zeiger auf Next
sjmp RecLoop ;Empfangsschleife wird durch Timeout beendet
RcLoE:
pop DPH
pop DPL
mov R0,DPL ;Zeiger auf Pufferanfang
movx A,@r0 ;1. Zeichen laden
pop DPL
;hier endet der neue Code
;
INCH1: CJNE A,#13H,INCH11
SETB CNT_S
INCH11: CJNE A,#11H,INCH12
-------------------------------------------------------------
Vielleicht hilft der Code jemanden, der auch Probleme mit schneller
Datenübertragung und dem Basic hat.
Gruß. Tom
TomA schrieb:> Ein> empfangenes Zeichen wird vom Basic gleich wieder über UART> zurückgesendet, dabei vergingen bei meinem Board (24MHz) ca. 1,25ms. In> der Zeit hat der Empfänger schon etliche Zeichen übersehen.
Für das SPS Projekt habe ich den Code auch umgeschrieben, weil das Ding
ja RS485 statt RS232 benutzt - also Halbduplex. Das Echo habe ich mir
dabei komplett gespart und benutzte stattdessen lokales Echo am
Terminal.
Der Tokenizer im Basic muss nach jeder Eingabezeile auch erstmal aktiv
werden und deswegen ist es sinnvoll, am Zeilenende, wie schon oben
beschrieben, einen Moment zu warten.
@Tom, das muss ich auch mal ausprobieren sobald ich mit meiner
Pufferbatterie fertig bin.
Da, mich das umständliche Konvertieren von Hex nach Bin und umgekehrt
genervt hat (DOS-Programme) habe ich zu allen kleine Batch Dateien
erstellt. Die Urprogramme dürften den meisten bekannt sein. Manche sind
auch schwer zu finden.
Vorteil: Die Anzahl der Eingaben reduziert sich und man weiss auch ohne
lange nachzuschlagen welche Parameter man einsetzen muss.
Die Ausgabe erfolgt immer im selben Verzeichnis und der Pfad wird auch
angezeigt.
Man könnte das alles noch in eine Batch packen oder vielleicht schreibt
einer bei Langeweile eine schöne Windowsshell :-))
Habe die Pufferbatterie noch ein weing überarbeitet.
Bei der Akku Version führt die parallel zum Widerstand geschaltete Diode
zu weniger Spannungsabfall während des Standbys. Alle Dioden sind jetzt
mittels Schottky Typ realisiert.
Janus M. schrieb:> Man könnte das alles noch in eine Batch packen oder vielleicht schreibt> einer bei Langeweile eine schöne Windowsshell :-))
Das ist nicht nötig. Da man in MIDE-51 beliebige Tätigkeiten hinter den
'Burn' und 'Build' Knöpfchen zusammenbauen kann, könnte man da auch
irgendwelche Konvertierungen einbasteln.
Bei mir zündet 'Burn' z.B. den AVRISP MkII per STK500.exe.
http://mide-51.software.informer.com/download/ Meinst Du den?
Hab das MC-51 von der Uni Kiel am Laufen. Das Terminal ist schon
eingebaut und funktioniert gut. Nur mit dem Integrieren von
Zusatzsoftware ist keine Möglichkeit gegeben. Wobei da schon die
wichtigsten Dinge dabei sind.
Hallo Janus,
in deiner Schaltung zur Batteriepufferung kannst du dir die Diode
paralell zum 390 Ohm Widerstand sparen. Wenn die Stromaufnahme aus der
Batterie in Ordnung ist, dann fließt dort nur ein ganz kleiner Strom
(bei mir < 1µA), so daß der Spannungsabfall am Widerstand
vernachläßigbar klein ist.
Ich verwende an der Stelle einen 1k Widerstand, so kann ich mit einem
Voltmeter indirekt den Strom, beim laden und entladen, messen (1mV =
1µA).
Als Batterie sitzt bei mir ein GoldCap mit 0,22F/5,5V und der wird im
Betrieb der Schaltung wieder aufgeladen. Die 0,22F reichen bei dem 128k
RAM für über eine Woche, ein 1F Kondensator für über vier Wochen
Datenerhalt. Bei einem 32k RAM ist die Stromaufnahme sogar noch etwas
kleiner (~0,7µA).
Von Akkus bin ich wieder abgekommen, weil die bei längeren Standzeiten
oft ausgelaufen sind und dabei die Platine beschädigt haben.
Die Diode von +5V zur Batterie solltest du prüfen, Schottkydioden haben
oft höhere Leckströme als normale Siliziumdioden. Da kann dir evtl. ein
relativ hoher Strom den Akku zu schnell entladen.
Gruß. Tom
Hallo Janus,
ein hab ich noch!
Im Handbuch einer meiner Experimentierplatinen sind ab Seite 10 die
Schaltpläne zu finden, dort findest du eine bewährte Art einer Schaltung
zum versorgen des RAM für Datenerhalt.
Beitrag "Re: 8051 - Programm und Daten in einem 128kB Chip ohne Overlap"
Beachte, daß das NAND 74HC00 von der Batterie versorgt wird, so kann es
den lowaktiven CS des RAM sicher sperren. Der 74HC00 selbst benötigt im
statischen Zustand einen vernachlässigbar kleinen Strom.
Gruß. Tom
Peter D. schrieb:> Man könnte aber auch BASCOM nehmen und irgendeinen 8051 mit Bootloader,
z.B. DS89C450 - läuft als Zweitakter mit 33MHz
Auch im DIL 40
Janus M. schrieb:> Wie brauchbar ist das tatsächlich um zum Beispiel eine> Schrittmotorsteuerungen oder eine Balanciersteuerung (Sagway) damit zu> realisieren und
Eine reine SW-Lösung wird Dich nicht glücklich machen.
Im Segway ist ein C2000 (µC mit DSP Funktionalität) verbaut. Der hat
ordentlich wumms!
> Wo liegen die Hauptprobleme und Grenzen bei der Anwendung von Basic
Ist meist eine Interpretersprache. Das ist eigentlich alles.
Matthias S. schrieb:> Das mit /CE wird sich vermutlich dadurch erreichen lassenJanus M. schrieb:> Habe die Pufferbatterie noch ein weing überarbeitet.
Die Pufferbatterie gehört an + und die Diode in die negative Leitung.
Damit sind automatisch bei fehlender Betriebsspannung die
Signalleitungen auf High.
Gruß
Jobst
TomA schrieb:> Hallo Janus,>> in deiner Schaltung zur Batteriepufferung kannst du dir die Diode> paralell zum 390 Ohm Widerstand sparen. Wenn die Stromaufnahme aus der> Batterie in Ordnung ist, dann fließt dort nur ein ganz kleiner Strom> (bei mir < 1µA), so daß der Spannungsabfall am Widerstand> vernachläßigbar klein ist.>> Ich verwende an der Stelle einen 1k Widerstand, so kann ich mit einem> Voltmeter indirekt den Strom, beim laden und entladen, messen (1mV => 1µA).>> Als Batterie sitzt bei mir ein GoldCap mit 0,22F/5,5V und der wird im> Betrieb der Schaltung wieder aufgeladen. Die 0,22F reichen bei dem 128k> RAM für über eine Woche, ein 1F Kondensator für über vier Wochen> Datenerhalt. Bei einem 32k RAM ist die Stromaufnahme sogar noch etwas> kleiner (~0,7µA).>> Von Akkus bin ich wieder abgekommen, weil die bei längeren Standzeiten> oft ausgelaufen sind und dabei die Platine beschädigt haben.>> Die Diode von +5V zur Batterie solltest du prüfen, Schottkydioden haben> oft höhere Leckströme als normale Siliziumdioden. Da kann dir evtl. ein> relativ hoher Strom den Akku zu schnell entladen.>> Gruß. Tom
Hallo Tom, vielen Dank für den Hinweis auch auf das Handbuch. Habs
gleich mal kopiert und überflogen. Super was ich da so gesehen habe.
Dürfte Stoff für lange Winterabende sein :-)
1) Zur Diode geb ich Dir grundsätzlich recht sofern alles in Ordnung
ist. Die dient eher zum Schutz der Batterie vor Überstrom. Hab das auch
bei einigen anderen Schaltungen so gesehen. Batterien aufladen wäre
weniger prickelnd.
2) 1K Widerstand um den Strom über Spannungsabfall zu messen ist auch
eine gute Idee. Bei 390 Ohm müsste es der Faktor 2.6 sein. Also 2,6 mV
pro 2,6 µA
3) Ein gutes Argument, wenn man die Akkus nicht rechtzeitig wechselt.
Mit dem Jumper hab ich ja noch die Wahl auch ein Batterie zu nehmen, die
sind auch nicht so anfällig, sehe ich mir meinen 10 Jahre alten PC so
an. Vielleicht kann man die Schaltung auch mit Goldcap erweitern mittels
Jumper
4) Das ist ein gewisser Unsicherheitsfaktor. Hab jetzt mal eine so
eingebaut. Wie man die so testen kann um eine brauchbare Aussage zu
erhalten ist mir praktisch nicht so ganz klar. Hab nur ein Wald und
Wiesen Messgerät. Teste das einfach in der Schaltung selbst. Wenn nach
einem Monat oder noch kürzerer Zeit die Batterie/Akku leer ist wars dann
wohl die Falsche
5) Upps, das hiesse, dass ich den Vcc Anschluss an Plus vom NAND 74HC00
auch noch verbinden müsste. Danke für den Hinweis
Jobst M. schrieb:> Janus M. schrieb:>> Habe die Pufferbatterie noch ein wenig überarbeitet.>> Die Pufferbatterie gehört an + und die Diode in die negative Leitung.> Damit sind automatisch bei fehlender Betriebsspannung die> Signalleitungen auf High.>>> Gruß>> Jobst
Hallo Jobst, meinst Du etwa so?:
- IC Minus
----------- - Diode ___ GND
I 74HC00 I I - I I
I I--------I- I----------------
I I I - I ___ GND
I I - I I I
I I------------------------------I I I I-----
----------- I I
+ IC Plus
Janus M. schrieb:> Hallo Jobst, meinst Du etwa so?:>> - IC Minus> ----------- - Diode _ GND> I 74HC00 I I - I I> I I--------I- I----------------> I I I - I _ GND> I I - I I I> I I------------------------------I I I I-----> ----------- I I> + IC Plus
Moin!
Nein, die Batterie sollte schon parallel zum RAM sitzen.
Wieso möchtest Du den 74HC00 buffern? Nur das SRAM sollte doch gebuffert
werden!?
Damit sind automatisch alle Datenleitungen bei Ausfall der 5V auf High!
Wenn es sich um einen Akku handelt, kann parallel zu D1 ein Widerstand
zum laden gelegt werden. (Bzw. diese durch den Widerstand ersetzt
werden)
Gruß
Jobst
Jobst M. schrieb:> Moin!>> Nein, die Batterie sollte schon parallel zum RAM sitzen.> Wieso möchtest Du den 74HC00 buffern? Nur das SRAM sollte doch gebuffert> werden!?
Ups, da habe ich Dich völlig missverstanden. Danke so leuchtet das auch
ein.
Ich habe die Sache nach dem bekannten Schaltbild wie hier jetzt
aufgebaut.
Alle Leitungen sind auf high bei einer neuen 3 V Batterie Messe ich ca.
3,55 Volt.
Habe ausprobiert ob sich was tut. PC an Terminal aufgerufen und
Primitivprogramm eingegeben: 10 Print Free
Dann zog ich den Stecker und wartete 2 Minuten. Danach wieder Stecker
rein und am Terminal rumgetippt. Kam leider nur Buchstabensalat.
Hab dann wieder Reset gedrückt. Programm war natürlich weg. Irgendwas
ist noch faul. Vermute jetzt erstmal Lötfehler und prüfe das "Werk"
eingehend optisch.
Lötfehler kann ich keine finden. :-(
Pin 20 (CE) vom RAM liegt bei Batteriebetrieb auf ca 1.63 V mit
Netzbetrieb
bei ca. 3V
Ab welchem Pegel ist denn High zu verstehen?
Janus M. schrieb:> Dann zog ich den Stecker und wartete 2 Minuten. Danach wieder Stecker> rein und am Terminal rumgetippt. Kam leider nur Buchstabensalat.
Nein, so funktioniert das nicht. Schau dir im Basic Handbuch mal das
PROG Kommando an mit seinen verschiedenen Funktionen, und auch XFER.
Das Basic 1.31 erwartet den NVRAM ab Adresse 8000h, der RAM auf
0000h-7FFFh wird beim Starten immer getestet und dabei gelöscht.
Normalerweise ist bei den Jungs ab Adresse 8000h ein EEPROM, aber mit
einem batteriegepufferten RAM sollten die Kommandos auch gehen.
Bei der KM SPS habe ich die Routinen stark gekürzt, um Platz zu
schaffen, denn das Testen und nochmal Schreiben braucht man bei RAM ja
nicht zu machen.
Matthias S. schrieb:> Janus M. schrieb:>> Dann zog ich den Stecker und wartete 2 Minuten. Danach wieder Stecker>> rein und am Terminal rumgetippt. Kam leider nur Buchstabensalat.>> Nein, so funktioniert das nicht. Schau dir im Basic Handbuch mal das> PROG Kommando an mit seinen verschiedenen Funktionen, und auch XFER.>> Das Basic 1.31 erwartet den NVRAM ab Adresse 8000h, der RAM auf> 0000h-7FFFh wird beim Starten immer getestet und dabei gelöscht.> Normalerweise ist bei den Jungs ab Adresse 8000h ein EEPROM, aber mit> einem batteriegepufferten RAM sollten die Kommandos auch gehen.> Bei der KM SPS habe ich die Routinen stark gekürzt, um Platz zu> schaffen, denn das Testen und nochmal Schreiben braucht man bei RAM ja> nicht zu machen.
Hm, dann scheint es ja ein reines Softwareproblem zu sein.
Gibt es nicht irgendwo ein allgemeines Testprogramm?
Jobst M. schrieb:> Wie hoch ist denn die Betriebsspannung? (in beiden Fällen)> Welche Spannung hast Du an GND vom RAM? (Auch in beiden Fällen)
Die Betriebsspannung: Batterie ca. 3.4 V , mit Netzteil ca. 6.03 V
Spannung RAM: Batterie ca. 3.35 V , Netzteil ca. 5.70 V
Janus M. schrieb:> Gibt es nicht irgendwo ein allgemeines Testprogramm?
Mit ist nicht klar, was du damit meinst. Du schreibst ein kleines Basic
Programm und schickst es zum NVRAM mit 'PROG'. Basic antwortet mit der
Programmnummer, denn es kann mehrere Programme im NVRAM halten.
Nun schaltest du die Kiste ab. Nach einen Neustart holst du dir das
Programm zurück mit 'XFER <Programmnummer>' und kannst es wieder
bearbeiten.
Du kannst auch mit 'ROM<Programmnummer>' das Programm aktivieren und mit
'RUN' starten.
'RAM' führt dich wieder zum normalen Mode.
Wenn du ein Programm mit 'PROG2' in den NVRAM schickst, wird es nach
einem Powerdown und Powerup automatisch gestartet, das ist das, was ich
für die SPS meistens benutze. Weiteres dazu im Basic Handbuch Kapitel 3
- Seite 20 ff.
Matthias S. schrieb:> Janus M. schrieb:>> Gibt es nicht irgendwo ein allgemeines Testprogramm?>> Mit ist nicht klar, was du damit meinst. Du schreibst ein kleines Basic> Programm und schickst es zum NVRAM mit 'PROG'. Basic antwortet mit der> Programmnummer, denn es kann mehrere Programme im NVRAM halten.>> Nun schaltest du die Kiste ab. Nach einen Neustart holst du dir das> Programm zurück mit 'XFER <Programmnummer>' und kannst es wieder> bearbeiten.> Du kannst auch mit 'ROM<Programmnummer>' das Programm aktivieren und mit> 'RUN' starten.> 'RAM' führt dich wieder zum normalen Mode.>> Wenn du ein Programm mit 'PROG2' in den NVRAM schickst, wird es nach> einem Powerdown und Powerup automatisch gestartet, das ist das, was ich> für die SPS meistens benutze. Weiteres dazu im Basic Handbuch Kapitel 3> - Seite 20 ff.
Ich meinte damit nur wie man die Funktion der Pufferbatterie testen kann
Wenn ich das Teil abschalte gibts nur diesen Buchstabensalat. Du meinst
aber dann trotzem XFER <Programmnummer> oder ROM<Programmnummer>
eingeben. Das habe ich noch nicht versucht.
Fakt ist wohl nach Deiner Aussage das mit an aus und wieder an das
allein nicht getan ist um an die Inhalte zu kommen.
Janus M. schrieb:> mit Netzteil ca. 6.03 VJanus M. schrieb:> Netzteil ca. 5.70 V
Büschn hoch ...
Irgendwo ist da 'n Wurm ...
Mach doch mal Fotos ...
Gruß
Jobst
Janus M. schrieb:> Fakt ist wohl nach Deiner Aussage das mit an aus und wieder an das> allein nicht getan ist um an die Inhalte zu kommen.
Genau. Der 'Arbeitsspeicher' (also der untere RAM und der interne des
8052) wird beim Intel Basic nach jeden Power Up initialisiert und
gelöscht. Der NV Speicher (in deinem Fall der obere RAM) allerdings
bleibt erhalten, wenn die Batteriepufferung funktioniert. Du kannst im
NV Speicher also so viele Programme halten, wie da rein passen und mit
ROM<Programmnummer> dir eines davon auswählen und dann mit 'RUN'
starten.
Beachte in den Kommentaren zum Basic 1.31, das die 'FPROG' Funktionen
nicht mehr vorhanden sind, diese wurden gestrichen und es gibt nur noch
die 'PROG' Funktionen. Da es EPROMs so gut wie nicht mehr gibt, ist das
allerdings auch kein Verlust.
Janus M. schrieb:> Wenn ich das Teil abschalte gibts nur diesen Buchstabensalat.
Mein Eindruck war, das die Jungs in Version 1.31 mit der Autobaud
Routine irgendwas durcheinander gebracht haben (was evtl. auch mit den
Support für die hyperschnellen Dallas MC zu tun hat). Ich überspringe
das Zeug im SPS Basic deswegen und wähle erstmal eine feste Baudrate.
Hallo Leute,
habe jetzt mal das Layout zur Platine (zum Handbuch) hier eingestellt.
Ist einseitig und deshalb einfach selbst herzustellen.
Beitrag "Layout für MCS51 Experimentierboard"
Werde jetzt eine Platine für Basic51 umstricken und die Änderungen dort
auch veröffentlichen.
Gruß. Tom
"Mein Eindruck war, das die Jungs in Version 1.31 mit der Autobaud
Routine irgendwas durcheinander gebracht haben (was evtl. auch mit den
Support für die hyperschnellen Dallas MC zu tun hat). Ich überspringe
das Zeug im SPS Basic deswegen und wähle erstmal eine feste Baudrate."
Habe 1.2 Basic mehr geht derzeit nicht.
Da wäre die Routine nützlich wie Du das umgangen hast.
Die einzige Änderung besteht also aus der Kommentierung vor 'LCALL RCL'
:-)
Beachte auch, das ich in der Routine 'initps3' einmal RCAP2, T2CON und
SCON setze, das passiert vor der o.a. Zeile. Den 8255 Kram dadrin
brauchst du natürlich nicht, ebenso wenig das Gewurschtel auf P1. Das
ist alles der Hardware der PS3 geschuldet und dem RS485 Gedöns.
Jobst M. schrieb:> Janus M. schrieb:>> mit Netzteil ca. 6.03 V>> Janus M. schrieb:>> Netzteil ca. 5.70 V>> Büschn hoch ...> Irgendwo ist da 'n Wurm ...> Mach doch mal Fotos ...>>> Gruß>> Jobst
Das funktioniert aber schon sehr lange so. Betrieben wird das über einen
handelsüblichen Trafo der 9 Volt einspeist. Ich kann damit alles
ausführen.
Nur eben die Zusatzschaltung mit der Batterie ist hinzugekommen
Der Schaltplan hat sich nicht geändert. Zugegeben, der 7805 müsste
theoretisch auf 5 Volt stabilisieren. Gemessen habe ich direkt an Out
gegen Masse und wie von Dir beschrieben direkt an den Beinchen des RAMs.
Mal mit Netz und mal ohne Netz.
Messgerät zeigte die genannten Werte an, ist so ein 20 Euroteil
Digitalteil von Voltcraft.
Da ich nichts verkehrtes im Schaltungsaufbau bisher finde, nehme ich
zunächst an, dass es tatsächlich an der Software liegt wie von Matthias
beschrieben.
Wie ist stellst Du denn fest ob die Batterie in der Schaltung als
Puffer tatsächlich arbeitet? Kann man bei Dir die Versorgungsspannung
einfach so abschalten und dann sofort beim Anschalten den RAM Inhalt
ansehen?
Nach Matthias` Info müsste doch bei Dir ähnliches Verhalten vorhanden
sein?
> Die einzige Änderung besteht also aus der Kommentierung vor 'LCALL RCL'> :-)>> Beachte auch, das ich in der Routine 'initps3' einmal RCAP2, T2CON und> SCON setze, das passiert vor der o.a. Zeile. Den 8255 Kram dadrin> brauchst du natürlich nicht, ebenso wenig das Gewurschtel auf P1. Das> ist alles der Hardware der PS3 geschuldet und dem RS485 Gedöns.
Heisst, ich müsste die Subroutine noch so abändern/kürzen?
initps3:
; ---------------------------
; Serial setup
MOV RCAPH2,#0FEH
MOV RCAPL2,#0C7H
MOV T2CON,#034H
; SETB T2CON.2
MOV SCON,#050H
RET
Jetzt hab ich folgendes Problemchen.
Basic 1.2a ,das bei mir im Eprom werkelt liegt als BIN Datei vor die ich
mit D51 Dissassembler in A51 umgewandelt habe. Frage ist jetzt wo da die
Anpassungen gemacht werden müssen?
Zum Vergleich Klöckner Möller Modul
https://www.mikrocontroller.net/attachment/257806/version_1p3_assembler.asm
Janus M. schrieb:> Frage ist jetzt wo da die> Anpassungen gemacht werden müssen?
Gute Frage. Aber warum gehst du nicht vom Quellcode aus? Das mit dem
Disassembler ist ja völlig unbrauchbar. Mein Rat wäre, dir das
offizielle Assemblerfile von 1.31 vorzunehmen und lauffähig zu machen.
Das sollte ohne Probleme zu machen sein.
Dann kannst du, wie ich auch, dir daraus über kurz oder lang deine
persönliche Version machen.
Ohne Quellcode ist Intel Basic sehr unübersichtlich, weil die Jungs doch
mit vielen Tricks arbeiten.
Matthias S. schrieb:> Janus M. schrieb:>> Frage ist jetzt wo da die>> Anpassungen gemacht werden müssen?>> Gute Frage. Aber warum gehst du nicht vom Quellcode aus? Das mit dem> Disassembler ist ja völlig unbrauchbar. Mein Rat wäre, dir das> offizielle Assemblerfile von 1.31 vorzunehmen und lauffähig zu machen.> Das sollte ohne Probleme zu machen sein.> Dann kannst du, wie ich auch, dir daraus über kurz oder lang deine> persönliche Version machen.> Ohne Quellcode ist Intel Basic sehr unübersichtlich, weil die Jungs doch> mit vielen Tricks arbeiten.
Das Thema hatten wir ziemlich am Anfang des Threats. Ich müsste hier
Basic anpassen und meine Kenntnisse sind da eher beschränkt. Das kann
zumindest dauern. Vor allem weiss ich nicht wo ich da überhaupt ansetzen
kann.
Janus M. schrieb:> Anfang des Threats
Naja, so eine Bedrohung ist das ja nicht :-) (Threat != Thread)
Janus M. schrieb:> Das kann> zumindest dauern.
Du musst ja nicht gestern fertig werden. Das ganze ist eh eine Übung für
den MCS51 und du kannst dir Zeit lassen. Die grundsätzliche Funktion des
Boards hast du jetzt ja sichergestellt und nun wirds Zeit, dir was zu
bauen, das du bis zur letzten Schraube warten und verstehen kannst. Dazu
ist ein kommentiertes Assemblerlisting gut geeignet.
Hallo Janus,
habe das Basic in Version 1.32 an meine Platine angepaßt. Es läuft jetzt
mit einer festen Baudrate von 9600. Da ich sonst noch nicht viel
geändert habe, könnte das auch mit deiner Platine funktionieren.
Das Basic mit Quelltext, Hexfile und Handbuch findest du hier:
Beitrag "Re: Layout für MCS51 Experimentierboard"
Viel Spaß und Erfolg. Tom
TomA schrieb:> Hallo Janus,>> habe das Basic in Version 1.32 an meine Platine angepaßt. Es läuft jetzt> mit einer festen Baudrate von 9600. Da ich sonst noch nicht viel> geändert habe, könnte das auch mit deiner Platine funktionieren.>> Das Basic mit Quelltext, Hexfile und Handbuch findest du hier:>> Beitrag "Re: Layout für MCS51 Experimentierboard">> Viel Spaß und Erfolg. Tom
Danke für das Listing. Dein MCS Board ist ja wirklich schön optimiert.
Mit so wenig Drahtbrücken, einseitig und noch eine RS232 Schnittstelle
drauf ist
schon ein kleines Kunstwerk. Ich musste bei meinem die Schnittstelle
quasi fliegend verlöten und auf den Connector aufsetzen.
Da ja beinahe kaum Unterschiede sind bis auf den Prozessor probierw ich
mal ob es bei mir auch ohne Änderung geht. Vielleicht geht das dann auch
mit dem Pufferakku/Batterie.
@Matthias
Assembler ist ja nun nicht grade meine Stärke. Gibt ja Leute und die so
ein "Progrämmchen" runterschreiben wie andere Ihre Memoiren :-)
Bin ja schon Froh das das Ding überhaupt nochmal ohne Atari zum Leben
erweckt werden konnte.
Den Dissassembler hab ich mit ner Batch nochmals vereinfacht. Reicht
jetzt nur den Dateinamen einzugeben und es werden eine *.A51 und *.LST
Datei gleichzeitig erstellt. Die LST Datei ist mit ASCII
Die Batterie ist jetzt bei ca. 3.23 Volt vor 5 Tagen lag der Wert bei
ca. 3.4 Volt. Ist das akzeptabel?
@Tom
Welchen Simulator nutzt man für das Programm?
Meiner wirft 14 Fehlermeldungen aus. Eine Trockenübung zuvor wäre ganz
nützlich sonst muss ich jedes mal das EPROM wieder löschen.
Dann noch eine Frage zum Quarz. Ich nutze 2 einen 12 MHz und einen
11,0592 MHz je nach dem welche Anwendung gefragt ist. Gibt es da eine
brauchbare Lösung wie man das auf einer Platine darstellen kann. Im
Augenblick tausche ich die Quarze einfach aus. Die Beinchen werden in
einen Connectoranschluss gesteckt.
Janus M. schrieb:> 2015-11-03_232803.jpg
Die Fehlermeldung rührt daher, das du in der Intel Notation der Hexzahl
eine 0 (null) voranstellen musst, wenn die Hexzahl mit einem Buchstaben
beginnt, also nicht
1
T2CON EQU 0xC8;
sondern
1
T2CON EQU 0x0C8;
dann klappts.
Janus M. schrieb:> Gibt es da eine> brauchbare Lösung wie man das auf einer Platine darstellen kann.
Du könntest einen 2-poligen Sockel ins Schaltbild einsetzen.
in Zeile 1337 steht:
BG2:
DJNZ R0,$ ;FOUR CLOCKS, IN LOOP
CALL DEC3211 ;NINE CLOCKS
MOV R0,#2 ;ONE CLOCK
JNB RXD,BG2 ;TWO CLOCKS, LOOP UNTIL DONE
JB RXD,$ ;WAIT FOR STOP CHARACTER TO END
JNB RXD,$
In Zeile 1383:
BG2:
MOV T2CON,#34h ;configure Timer2 as baudrate generator
Eigentlich müssten diesen Fehler noch andere haben.
Hm, streichen von 1383 und da einfügen?
BG2:
MOV T2CON,#34h ;configure Timer2 as baudrate generator
DJNZ R0,$ ;FOUR CLOCKS, IN LOOP
CALL DEC3211 ;NINE CLOCKS
MOV R0,#2 ;ONE CLOCK
JNB RXD,BG2 ;TWO CLOCKS, LOOP UNTIL DONE
JB RXD,$ ;WAIT FOR STOP CHARACTER TO END
JNB RXD,$
Hallo!
im originalquelltext "version_1p3_assembler.asm" steht vor allen BG2
Labels ein Semikolon. Die sind also rausge-REMt. Du mußt schon wissen,
welche Semikolons Du entfernst!
Fehlermeldung "address out of range" kommt bei Überschreitung der
2K-Grenze. Nehme dort LCALL und LJMP!
Route 6. schrieb:> Hallo!> im originalquelltext "version_1p3_assembler.asm" steht vor allen BG2> Labels ein Semikolon. Die sind also rausge-REMt. Du mußt schon wissen,> welche Semikolons Du entfernst!>> Fehlermeldung "address out of range" kommt bei Überschreitung der> 2K-Grenze. Nehme dort LCALL und LJMP!
Die Semikolons hab ich nicht gelöscht. Hab einzig die Datei unverändert
in den Simulator geworfen um zu sehen was passiert. Im Logikablauf werde
ich ohne tiefere Kenntnis keine Änderung vornehmen.
Danke für Deine sehr hilfreiche Antwort. Dann probiere ich es mal weiter
:-)
Grossartig, keine Fehlermeldung mehr und der Simulator funktioniert
jetzt (siehe Bild).
Janus M. schrieb:> Anbei noch die Datei, Basis ist die von TomA
Welchen Prozessor setzt Du ein? Davon ist die Verwendung des
Programmteils mit dem Label "BG2" abhängig - und ob du eine feste
Baudrate oder eine automatische Erkennung willst.
Route 6. schrieb:> Janus M. schrieb:>> Anbei noch die Datei, Basis ist die von TomA>> Welchen Prozessor setzt Du ein? Davon ist die Verwendung des> Programmteils mit dem Label "BG2" abhängig - und ob du eine feste> Baudrate oder eine automatische Erkennung willst.
1) 8031
2) 9600 Baud
3) automatisch
Route 6. schrieb:> 1) 8031>> Geht mit dem Quellcode nicht!
9600 Baud eventuell auf Automatik umstellbar wenn es damit geht.
Hm, da waren die Meinungen anders. Natürlich ist kein 2ter Timer im 8031
aber vielleicht hab ich TomA auch missverstanden.
Er schrieb:
"Hallo Janus,
habe das Basic in Version 1.32 an meine Platine angepaßt. Es läuft jetzt
mit einer festen Baudrate von 9600. Da ich sonst noch nicht viel
geändert habe, könnte das auch mit deiner Platine funktionieren.
Das Basic mit Quelltext, Hexfile und Handbuch findest du hier:
Beitrag "Re: Layout für MCS51 Experimentierboard"
Viel Spaß und Erfolg. Tom"
Janus M. schrieb:> 9600 Baud eventuell auf Automatik umstellbar wenn es damit geht.
Dein Quellcode nutzt den Timer2, und der ist im 8031 nicht vorhanden.
Auch die Autobaud-Funktion arbeitet mit dem Timer2.
Weiterhin fehlen Dir 128 Bytes interner RAM, der 8031 hat nur 128, Basic
braucht aber 256!
Route 6. schrieb:> Janus M. schrieb:>> 9600 Baud eventuell auf Automatik umstellbar wenn es damit geht.>> Dein Quellcode nutzt den Timer2, und der ist im 8031 nicht vorhanden.> Auch die Autobaud-Funktion arbeitet mit dem Timer2.>> Weiterhin fehlen Dir 128 Bytes interner RAM, der 8031 hat nur 128, Basic> braucht aber 256!
TomA hat den 89S52 eingesetzt
http://www.atmel.com/images/doc1919.pdf
Die Pinbelegung ist identisch. Sollte mal zu Conrad und mir einen
kaufen. :-)
Janus M. schrieb:> TomA hat den 89S52 eingesetzt> Sollte mal zu Conrad und mir einen
kaufen. :-)
Dann solltest Du gleich einen 89S53 nehmen. Der hat 12K internen Flash
und so passen noch einige BASIC-Erweiterungen rein.
Route 6. schrieb:> Janus M. schrieb:>> TomA hat den 89S52 eingesetzt>> Sollte mal zu Conrad und mir einen> kaufen. :-)>> Dann solltest Du gleich einen 89S53 nehmen. Der hat 12K internen Flash> und so passen noch einige BASIC-Erweiterungen rein.
Conrad hat mal wieder nix wie üblich. Muss wieder in der Bucht oder
woanders schauen.
Reicht eigentlich der blosse Austausch gegen den 89er oder bin ich
gezwungen den noch zu programmieren. Schliesslich brauche ich ja nur die
Timer und ein grösseres internes Ram und das wars dann schon.
Alten Chip raus neuen Chip rein, Basic von TomA ins 27256 EPROM gebrannt
und fertig.
Finde leider den Schaltplan von TomA nicht oder gibts da nur den im
Handbuch und der Rest ist "Freihand Kunst"?
Janus M. schrieb:> Basic von TomA ins 27256 EPROM gebrannt> und fertig.
Dann nimm einfach irgend einen 803*2*. Davon habe ich ein Bündel im
Keller für den Elektronikschrott gesammelt.
Die 89C52 89C53 müssen zunächst per Software (z.B. PonyProg,
AVR_Dude...)
ge Flash'ed werden. Das ist viel besser für Deine BASIC-Verwendung, als
einen externen EPROM einzubinden. (kann in der Schaltung umprogrammiert
werden)
Jedes Detail muß man aus Deiner Nase ziehen.
Wenn ich endlich wüsste, wie Deine Hardware aussieht, und was Du vor
hast, dann könnte ich Dir eine Hilfe anbieten: einen EPROM brennen, eine
HEX/BIN-Datei schicken oder sogar oder einen passenden Controller
flashen.
Also: Butter bei die Fische oder mach es selbst!
Route 6. schrieb:> Janus M. schrieb:>> Basic von TomA ins 27256 EPROM gebrannt>> und fertig.>> Dann nimm einfach irgend einen 803*2*. Davon habe ich ein Bündel im> Keller für den Elektronikschrott gesammelt.>>> Jedes Detail muß man aus Deiner Nase ziehen.> Wenn ich endlich wüsste, wie Deine Hardware aussieht, und was Du vor> hast, dann könnte ich Dir eine Hilfe anbieten: einen EPROM brennen, eine> HEX/BIN-Datei schicken oder sogar oder einen passenden Controller> flashen.>> Also: Butter bei die Fische oder mach es selbst!
Upps, reicht das denn nicht?
Zur Vorgeschichte noch ein paar Worte. Vor kurzem habe ich mein altes
Midi 8032 System wiedergefunden was damals sehr ausführlich in ST
Computer Magazin beschrieben wurde und von J. Piscol entwickelt wurde.
Damit konnte man sogar Den Controller über einen kleinen Lautsprecher
Wilhelm Busch zitieren lassen. Unglaublich dass man gesprochene Worte in
32 KB einpflanzen kann. Auch Morsen und eine Motorsteuerung war dabei.
Da der Atari von mir immer noch nicht abgeraucht war konnte ich das erst
kürzlich nochmal eindrucksvoll testen.
wegschmeissen wollte ich das Teil nicht da ich alles selbst hergestellt
habe (Platine ätzen, auflöten)
Nun dachte ich mir, warum das nicht mal etwas aufpeppen und versuchen
dem Ding Basic einzupflanzen falls das überhaupt möglich ist und
vielleicht noch versuchen von der Midi Schnittstelle wegzukommen um das
Ding an einem PC zu betreiben?
Durch die grosse Hilfe von Matthias und TomA hatte lies sich das
mittlerweile mit ein paar Änderungen umsetzen. Das es derartig einfach
war hätte ich selbst nicht geglaubt.
Mit der Platine bin ich jetzt in der Lage sowohl am Atari wie auch am PC
zu arbeiten. Ein paar Jumper umgesteckt und schon alles erledigt. Auch
alte EPROMs kan ich von 8KB bis 32KB je nach belieben einsetzen. Mittels
einfachen Austausch der Quarze (12 Mhz oder 11,0592 MHz) ist das dann
kein Hexenwerk mehr. Sorry, wenn manchen das heute zu lahm ist mir
reicht es völlig...zunächst mal :-)
Dann kam mir die Idee, warum nicht mal eine Pufferbatterie wie bei
anderen Systemen zu versuchen. Auch das ist jetzt soweit fertig nur
testen kann ich das wohl nur mit einem anderen Baustein.
Weiterhin hab ich mir einen MAX232 so zurechtgebogen, dass er einfach
auf den Connector aufgesteckt werden kann und mit einem Terminal
kommunizieren kann. Natürlich sind hier auch noch viele Möglichkeiten
drin, wie z.B. Blauzahn oder direkt eine USB Schnittstelle statt eine
RS232. Vielleicht mach ich das auch noch, wenn mir danach ist. All das
kann man natürlich so auch kaufen. Schönes Platinchen in SMD recht
billig. Aber darum geht es mir eben nicht. Selbst ist der Bastler :-)
Hier noch mal die wichtigsten Beiträge aus meiner Sicht.
Hardware:
Beitrag "Re: Basic für 80C31"
Basic:
Beitrag "Re: Basic für 80C31"
Ziele:
Beitrag "Re: Basic für 80C31"
Meine Nase wird aber dabei aber immer grösser :-)
Der Threat ist halt schon lang geworden. Ich entwickle das so nach und
nach stressfrei. Ist ja kein kommerzielles Projekt mit festem Zeitplan
und Lastenheft oder ist das hier Pflicht?
Manche Ideen kommen dann auch nach und nach durch weitere Beiträge und
stöbern im WWW.
Grundsätzlich will ich meine vorhandene Platine natürlich solange
ausnutzen bis es nicht mehr geht und einfach auch ein wenig probieren.
Basic funktioniert in der einfachen Form bereits und das Basic von TomA
benötigt einen anderen Controller. Auch die Pufferbatterie kann in der
Funktionsweise nur mit einem anderen Basic als das bisherige genau
geprüft werden.
> Die 89C52 89C53 müssen zunächst per Software (z.B. PonyProg,> AVR_Dude...)> ge Flash'ed werden.
Aber wenn es erst auch ohne flashen geht nur durch blosses Ersetzen wäre
das für mich ausreichend. Mir ist schon klar das man alles noch besser
machen kann.
Das ist viel besser für Deine BASIC-Verwendung, als
> einen externen EPROM einzubinden. (kann in der Schaltung umprogrammiert> werden)
Nur ich hab das EPROM halt und will es auch nutzen.
Letztlich könnte ich mir auch ein modernes System im Handel kaufen wo
fast alles integriert ist, nur der Lerneffekt ist so viel grösser. Mir
sind eben die heutigen Bausteine einfach zu hoch integriert da sieht man
leider nichts mehr, alles nur noch in einem Baustein mit zig Funktionen
zusammengefasst.
So, die Butter ist jetzt hoffentlich angerichtet :-)
Der eigentliche Witz am 8052AH Basic war eigentlich genau das - ein MC
mit (damals maskenprogrammierten) Basic, der mit minimaler externer
Beschaltung, die im simplesten Fall aus einem einzigen 2k RAM mit
373/374 Latch besteht, ein vollwertiges System darstellt.
Das schöne an dem eigentlich uralten Basic ist heute, das es MC gibt,
die jeder mit einfachen Mitteln mit dem Basic flashen kann und dabei ein
interaktives System mit vergleichsweise guter Rechenleistung,
Gleitkommapaket und SPS vergleichbaren Fähigkeiten erhält - zu einem MC
Preis von gerade mal 1,40 EUR, wenn man von Frau Reichelts Preisen
ausgeht.
Es ist praktisch sinnlos, gerade am MC zu sparen und auf Teufel komm
raus das ganze in einen ungeeigneten 8051/8031 zu packen, denn der Witz
ist ja gerade der 8052. Man verliert mit einem 8031 die
beeindruckendsten Eigenschaften von Intel Basic.
Mein Vorschlag wäre, du kaufst dir einen Atmel AVRISP MkII als
zukunftssicheren Programmer und baust dir einmalig einen
Programmieradapter für die 40-pol DIP, der dann auch für die Mega8515
und 8535 passt,sowie ein paar Stück AT89S52.
Übrigens kann ich die AT89S8253 nicht empfehlen.
Erstens lassen ausgerechnet die sich nicht mit dem AVRISP
programmieren und zweitens haben sie ein paar Bugs, die einige der
Features unnutzbar lassen, wie den internen EEPROM. Mir ist es z.B. in
stundenlangen Versuchen damals nicht gelungen, diesen EEPROM zu nutzen -
ich bin dann wieder zum problemlosen 89S52 mit externem 93C46 EEPROM
gewechselt, als ich meinen Steuerechner für den Bassverstärker baute.
Die AT89S8252 kenne ich nicht. Ich habe entweder meine Programme in den
89S52 reinbekommen oder gleich einen z.B. AVR benutzt.
Als kleines Schmankerl habe ich mal meinen universellen Monitor für den
8052 angehängt. Damit kann man recht gut unbekannte Systeme
durchklappern (so habe ich die SPS ausgespäht) und man kann sich
anschauen, wie z.B. so ein Kommandointerpreter funktioniert und
erweitert werden kann. Das Dings hat sogar einen kleinen Dissassembler
drin, sowie eine 'Online' Hilfe.
"Mein Vorschlag wäre, du kaufst dir einen Atmel AVRISP MkII als
zukunftssicheren Programmer und baust dir einmalig einen
Programmieradapter für die 40-pol DIP, der dann auch für die Mega8515
und 8535 passt,sowie ein paar Stück AT89S52."
Kennst Du zufällig einen guten Shop?
"Als kleines Schmankerl habe ich mal meinen universellen Monitor für den
8052 angehängt."
Cool :-)
Janus M. schrieb:>> Leider haben die Bayern bis auf den uralten 89C4051 derzeit keine MCS-51>> MC im Programm.>> Das ist mir jetzt nicht so ganz klar was damit gemeint ist. Ist das der> Adapter?
Nö, das war nur so gedacht, das man gleich ein paar MC mitbestellen
könnte.
Janus M. schrieb:> Gibt es ein Beispiel für so einen Programmieradapter für die 40-pol DIP?
Ja, liegt hier auf dem Tisch. Ist aber eigentlich nur 'ne 40-pol Textool
Fassung mit Quarz und den Kondensatoren für diesen, ein Elko zum
Abblocken unten dran und ein Molexkabel mit 7-pol Stecker, das auf meine
universelle Adapterplatine geht.
Ich habe dir mal ein Foto angehängt. Rechts der AVRISP, in der Mitte die
Adapterplatine, die auch gleich einen 8-pol Sockel für Tiny13/25 etc.
trägt, einen Quarzoszillator und einen Schalter für die Versorgung der
MC und links die Textoolfassung mit Quarz und Elko.
Die Adapterplatine speise ich aus USB.
Sorry für die Sch**$$ Bildqualität, aber hier ist im Moment richtig
trübes Wetter und wenig Tageslicht.
Matthias S. schrieb:> Janus M. schrieb:>>> Leider haben die Bayern bis auf den uralten 89C4051 derzeit keine MCS-51>>> MC im Programm.>>>> Das ist mir jetzt nicht so ganz klar was damit gemeint ist. Ist das der>> Adapter?>> Nö, das war nur so gedacht, das man gleich ein paar MC mitbestellen> könnte.>> Janus M. schrieb:>> Gibt es ein Beispiel für so einen Programmieradapter für die 40-pol DIP?>> Ja, liegt hier auf dem Tisch. Ist aber eigentlich nur 'ne 40-pol Textool> Fassung mit Quarz und den Kondensatoren für diesen, ein Elko zum> Abblocken unten dran und ein Molexkabel mit 7-pol Stecker, das auf meine> universelle Adapterplatine geht.> Ich habe dir mal ein Foto angehängt. Rechts der AVRISP, in der Mitte die> Adapterplatine, die auch gleich einen 8-pol Sockel für Tiny13/25 etc.> trägt, einen Quarzoszillator und einen Schalter für die Versorgung der> MC und links die Textoolfassung mit Quarz und Elko.> Die Adapterplatine speise ich aus USB.> Sorry für die Sch**$$ Bildqualität, aber hier ist im Moment richtig> trübes Wetter und wenig Tageslicht.
Danke für die Antwort
Die Bausteine hol ich mir da.
http://www.ebay.de/itm/4-St-ATMEL-AT89S52-24PU-DIL40-Flash-E1005-/400624555612?hash=item5d4715965c:g:Y-kAAOxyVLNSqbS-
Hast Du da vielleicht noch einen kleinen Schaltplan zu dem Adapter.
Sieht ja recht einfach aus wenn man so die Bauteile betrachtet.
In der Bucht wird so was angeboten, weiss aber nicht ob das die gleiche
Funktion erfüllt. Der Preis ist jedenfalls ein Witz
http://www.ebay.de/itm/DIY-Kit-C51-Minimum-System-Development-Board-for-AT89S52-NO-Chip-good-/371005796062?hash=item5661ab2ede:g:tgYAAOSwg3FUdpzF
Janus M. schrieb:> In der Bucht wird so was angeboten, weiss aber nicht ob das die gleiche> Funktion erfüllt. Der Preis ist jedenfalls ein Witz
Tja, da steht ja so gut wie nix bei. Ausserdem ist der 10-pol
Wannenstecker veraltet - die neuen Programmierer verwenden 6-pol.
Janus M. schrieb:> Hast Du da vielleicht noch einen kleinen Schaltplan zu dem Adapter.
Habe ich nie gemacht. Der Schalter schaltet die 5V vom USB auf den
Sockel und den Molex, damit man den MC stromlos machen kann, bevor man
ihn rausnimmt. Der Oszillator ist für den Fall, das ich aus Versehen mal
den internen RC Oszillator verfused habe (gilt nicht für die AT89, weil
die immer externen Quarz haben) und am Molex stehen eben die bekannten
Signale wie Reset, MOSI, MISO und SCK, die man zum programmieren
braucht. Natürlich noch Masse und die +5V vom Schalter.
Das ganze ist so simpel, das ich nie drüber nachgedacht habe, 'ne
Schaltung zu malen. Spannungsregler gibts nicht, weil die USB Spannung
schon ok ist und mein Rechner auch massenweise USB Anschlüsse hat (8
oder 10?).
Matthias S. schrieb:> Janus M. schrieb:>> In der Bucht wird so was angeboten, weiss aber nicht ob das die gleiche>> Funktion erfüllt. Der Preis ist jedenfalls ein Witz>> Tja, da steht ja so gut wie nix bei. Ausserdem ist der 10-pol> Wannenstecker veraltet - die neuen Programmierer verwenden 6-pol.>> Janus M. schrieb:>> Hast Du da vielleicht noch einen kleinen Schaltplan zu dem Adapter.>> Habe ich nie gemacht. Der Schalter schaltet die 5V vom USB auf den> Sockel und den Molex, damit man den MC stromlos machen kann, bevor man> ihn rausnimmt. Der Oszillator ist für den Fall, das ich aus Versehen mal> den internen RC Oszillator verfused habe (gilt nicht für die AT89, weil> die immer externen Quarz haben) und am Molex stehen eben die bekannten> Signale wie Reset, MOSI, MISO und SCK, die man zum programmieren> braucht. Natürlich noch Masse und die +5V vom Schalter.>> Das ganze ist so simpel, das ich nie drüber nachgedacht habe, 'ne> Schaltung zu malen. Spannungsregler gibts nicht, weil die USB Spannung> schon ok ist und mein Rechner auch massenweise USB Anschlüsse hat (8> oder 10?).
Vielleicht gibt es im Netz so was. Ist mir trotz der Einfachheit
etwas zu unsicher ohne Plan. Leider gibt das Foto dafür zu wenig her
:-(.
Ich würde mir selbst das Teil auf eine Lochrasterplatine aufbauen.
Hier scheint was zu stehen:
https://www.mikrocontroller.net/articles/AVR_In_System_Programmer
Also ich versuchs mal den Adapter von Dir zu kopieren mittels
Prinzipskizze wird das dann noch etwas deutlicher. :-)
Vom AVRISP werden die Anschlüsse wie im Bild (SteckerAVR)
bereitgestellt. Dieser Stecker geht dann auf eine Art Steckerplatine mit
6 poligem Sockel (Platine_Stecker) bei Dir die Lochrasterplatine.
Von da aus werden die 6 Anschlüsse (Bei Dir ist das der Molexstecker):
GND
5V
MISO
SCK
RESET
MOSI
an die Textool Halterung für den MC gelötet. Diese bekommt
dann einen Kondensator im 100 nF Bereich (Warum Elko??) zwischen GND und
5V und noch einen Quarz an die Xtal Anschlüsse des MC 89S52.
Der Rest Deines Aufbaus mit 8 poligem Sockel für Tiny mit Quarz brauche
ich erst mal nicht. Der Schalter zum stromlos machen käme noch auf die
Steckerplatine. Könnte aber auch weggelassen werden wenn man den AVRISP
aus dem Rechner zieht bevor man den MC entnimmt.
Ich habe 8 Kabel am Molexstecker bei Dir gezählt brauche aber nur 6.
Nehme an das die restlichen beiden Kabel für den Tiny sind.
Das müsste es in etwa sein oder?
Hallo Leute,
bin wieder da. Hier hat sich ja einiges getan.
Habe die letzten Tage damit verbracht ein Layout für eine 81er Basic
Hardware zu machen. Ist mir gelungen eine einseitige Halb-Europaformat
(100 x 80mm) Platine zu machen, die ein Bastler auch in der
Hobbywerkstatt fertigen kann.
Auf der Platine befindet sich ein Erweiterungsstecker, auf den die
ISP-Signale geführt sind. Mit einem kleinen Adapter fürs
ISP-Programmiergerät, läßt sich der µC direkt in der Schaltung
programmieren.
Näheres dazu findet ihr im Layoutthread.
Gruß. Tom
TomA schrieb:> Hallo Leute,>> bin wieder da. Hier hat sich ja einiges getan.>> Habe die letzten Tage damit verbracht ein Layout für eine 81er Basic> Hardware zu machen. Ist mir gelungen eine einseitige Halb-Europaformat> (100 x 80mm) Platine zu machen, die ein Bastler auch in der> Hobbywerkstatt fertigen kann.>> Auf der Platine befindet sich ein Erweiterungsstecker, auf den die> ISP-Signale geführt sind. Mit einem kleinen Adapter fürs> ISP-Programmiergerät, läßt sich der µC direkt in der Schaltung> programmieren.>> Näheres dazu findet ihr im Layoutthread.>> Gruß. Tom
Das hört sich ja gut an, Schön wäre es noch eine Möglichkeit zu haben
zwischen verschiedenen Quarzfrequenzen umzuschalten. Ich hab das auf
meinem Bord leider nur mit einem Steckanschluss gelöst. Wenn man damit
unterwegs ist verliert man ab und zu einen Quarz. Auch Bluetooth wär mal
was nettes statt USB oder RS232. Bin gerade dabei mit KiCad zu üben.
Noch etwas zu dem Basic. Habe festgestellt, dass zwei mal die die
Baudrate (BG2) nicht gemarkert wurde. Könnstet Du noch mal hier Deine
aktuelle Basicversion reinstellen?
Hallo Janus,
habe das Basic nicht vollständig geprüft, werde eventuell später wieder
auf automatische Baudrateerkennung zurückschreiben. Es gibt noch keine
neuere Version, als die bereits veröffentlichte. Im Zuge der
Basic-Platine wird es dann eine neue Version geben, welche mit den
vielen möglichen Ports umgehen kann. Ich arbeite vorwiegend mit C und
Assembler, wenn überhaupt programmiere ich mit Basic kleine Progrämmchen
nur zum Spaß oder aus Interesse.
Für variable Taktraten gibt es PLL-Chips, die werden mit einer festen
Eingangsfrequenz betrieben und erzeugen programmierbare
Ausgangsfrequenzen. Auf meinem Basicboard ist leider kein Platz mehr
dafür. Oder doch? soweit ich mich erinnere habe ich hier noch irgendwo
solche Chips in SO8 herumliegen, hat aber im Moment keine Priorität.
Vom Blauzahn und anderen Funkverbindungen lasse ich die Finger, Funk ist
in meinen Augen nur etwas, wenn es wirklich keine andere Lösung gibt.
Werde mich jetzt an die Arbeit machen, einen Prototypen des
IS51Basic-Boards zu bauen.
Gruß. Tom
Janus M. schrieb:> Ich habe 8 Kabel am Molexstecker bei Dir gezählt brauche aber nur 6.> Nehme an das die restlichen beiden Kabel für den Tiny sind.
Ich habe das Oszillatorsignal des TTL Oszillators noch mit auf den Molex
gelegt und ein Reserverkabel (man weiss ja nie). Da ich von diesen
Molexverbindern bis Pflaumenpfingsten genug habe (prof. Videorecorder
sind voll davon), musste ich da nicht sparen.
Heute würde ich ein Entwicklungsboard vermutlich gar nicht mehr mit
MAX232 ausrüsten, sondern gleich einen FTDI o.ä. aufs Board machen mit
einer USB-B oder Mini USB Buchse:
http://www.ebay.de/itm/USB-TTL-Modul-fur-Arduino-FT232RL-FTDI-3-3V-5V-USB-Mini-/181863534850
Dann hat man ein Entwicklungssystem mit Speisung und Kommunikation in
einem.
Versuche mich derzeit mit KiCad. Das klappt ganz gut. Musste bisher noch
nicht mal etwas lesen. :-).
Sogar eigene Bauteile konnte ich schon für die Bibliothek anfertigen.
Hier der Schaltplan mit den bisherigen Veränderungen um das Basic 1.2a
zum Laufen zu bringen. Warte derzeit auf die Lieferung des 89C52 um dann
die Geschichte von Tom's Basic zu testen und das gepufferte RAM.
Siehe hier:
Beitrag "Layout für MCS51 Experimentierboard"
Es gibt mehrere Jumper, die schnell erklärt sind.
1. JP4/JP5 - Umschaltung zwischen 8KB und 32KB EPROM
2. Jp2/JP3 - Umschaltung zwischen Midi für Atari und Basic 1.2a für PC
3. JP6 - Zum entkoppeln von RXD mit Midi Schnitstelle (otional).
4. JP1 - Batterie oder Akkubetrieb
Die Leds dienen zum Anzeigen von Lese und Schreibaktivitäten von RXD/TXD
LED D4 ist nur für die Betriebsweise mit dem Atari drin. Diese flackert
in regelmässigem Rhytmus.
Erforderlich sind bei den beiden Betriebsweisen Midi/PC ein Tausch der
Quarze. Midi benötigt 12 Mhz und PC 11,0592 MHz.
Eventuell kommt noch ein Midi Thru-Anschluss dazu.
Hallo Janus,
mir ist auf die Schnelle die LED D8 aufgefallen, sie ist an T2Out des
MAX232 angeschlossen. Man kann das schon so machen, aber dort liegen die
+-10V der Ladungspumpe des MAX. Die hohe Spannung kann als Sperrspannung
die LED töten und ist es sinnvoll zuerst mühsam eine höhere Spannung für
die Datenübertragung zu erzeugen und sie dann in einer LED zu verheizen?
Die RXD-LED kennt dieses Problem nicht, da dort nur TTL-Pegel mit 0V
oder 5V liegt. Aber du solltest diese LED umpolen. In Ruhelage ist RXD
auf High, damit leuchtet deine LED in Ruhelage, die kurzen Low Phasen
sind dann kaum zu sehen.
Habe herausgefunden, daß der 89S52 beim ein/ausschalten undefinierte
Speicherzugriffe durchführt und dabei den RAM-Inhalt überschreibt. Für
diesen µC währe die Überwchungsschaltung mit dem TL7705 (ursprünglicher
IS51-Schaltplan im Handbuch) oder ähnliches zu empfehlen.
Mehr habe ich mir noch nicht angesehen. Der Plan sieht gut aus.
Gruß. Tom
TomA schrieb:> Hallo Janus,>> mir ist auf die Schnelle die LED D8 aufgefallen, sie ist an T2Out des> MAX232 angeschlossen. Man kann das schon so machen, aber dort liegen die> +-10V der Ladungspumpe des MAX. Die hohe Spannung kann als Sperrspannung> die LED töten und ist es sinnvoll zuerst mühsam eine höhere Spannung für> die Datenübertragung zu erzeugen und sie dann in einer LED zu verheizen?>> Die RXD-LED kennt dieses Problem nicht, da dort nur TTL-Pegel mit 0V> oder 5V liegt. Aber du solltest diese LED umpolen. In Ruhelage ist RXD> auf High, damit leuchtet deine LED in Ruhelage, die kurzen Low Phasen> sind dann kaum zu sehen.>> Habe herausgefunden, daß der 89S52 beim ein/ausschalten undefinierte> Speicherzugriffe durchführt und dabei den RAM-Inhalt überschreibt. Für> diesen µC währe die Überwchungsschaltung mit dem TL7705 (ursprünglicher> IS51-Schaltplan im Handbuch) oder ähnliches zu empfehlen.>> Mehr habe ich mir noch nicht angesehen. Der Plan sieht gut aus.>> Gruß. Tom
Oh vielen Dank für den Hinweis. Nur wenn man da einen hochohmigen
Widerstand einsetzt fliesst auch nicht soviel. Mir wars damals wichtig,
um zu sehen ob was läuft. Trotz Schaltplan kommt ist es immer etwas
verwirrend was nun RXD und TXD ist, vom PC zum Controller wird das Kabel
noch gekreuzt.
Hab das so mal aufgebaut und da gings mit den LEDs. Eine Variante wäre
die LEDs direkt nach dem 9Poligen Stecker also an 2 und 3 mit
Vorwiderstand einzusetzen.
Undefinierte Speicherzugriffe?? Hm, das hört sich wie Lotto an. Mal
schauen was passiert, wenn ich den 89er habe. Insofern ist der Hinweis
schon sehr nützlich. Meist such man ja den Fehler in der Schaltung.
TomA schrieb:> Habe herausgefunden, daß der 89S52 beim ein/ausschalten undefinierte> Speicherzugriffe durchführt und dabei den RAM-Inhalt überschreibt.
Das tut er nicht - warum auch. Ich nehme eher an, das da in deiner
Schaltung beim Powerdown oder -up ein paar ms ungeeignete Signale am
Chip liegen.
Die SPS hier läuft jedenfalls mit dem Basic ohne einen einzigen
Datenverlust.
Man kann übrigens, sofern es sich um den AT89S52 handelt, den Bus
beruhigen, wenn man das durchgehende ALE abschaltet. ALE wird dann nur
noch erzeugt, wenn externe Speicherzugriffe stattfinden.
Hallo Matthias,
ich kenne das Problem mit dem undefinierten aktivieren der WR-Leitung
noch von den alten 8051ern. Wenn die Versorgungsspannung unter einen
bestimmten Wert absinkt, beginnt der µC undefiniert zu arbeiten, dabei
aktiviert er auch die WR-Leitung unkontrolliert.
Bei den neueren Prozessoren ist dafür eine Spannungsüberwachung im Chip
integriert, welche bei sinkender Versorgungsspannung den Chip in den
Resetzustand versetzt, bevor er Schaden anrichten kann. Im Datenblatt
des 89S52 konnte ich, wie bei den alten 8051/52ern, nichts darüber
finden. Und in meiner Schaltung tritt das Problem auch nur mit dem 89S52
auf.
Gruß. Tom
Beide Ausgänge der beiden seriellen Schnittstellen auf RxD vom
Prozessor?
Von der MIDI-Buchse kannst Du mit JP6 disablen - und vom MAX?
LED wurde schon gesagt.
Batterie hängt ja nun doch mit Masse an GND. Damit hat /WR ohne Spannung
Low und schreibt ...
Wieso wird eigentlich ausgerechnet das EPROM mit der Batterie versorgt?
Das hält seine Daten auch so ...
JP3 ist gepolt, deshalb die merkwürdige Leitungsführung? :-D
Allgemein viel Chaos im Plan ...
Es scheint auch in KiCad Symbole wie GND & Co. zu geben. Nutze sie!
Gruß
Jobst
TomA schrieb:> beginnt der µC undefiniert zu arbeiten, dabei> aktiviert er auch die WR-Leitung unkontrolliert.
Dann muss aber auch an deiner Auswahllogik was falsch sein, denn selbst
wenn /WR aktiv wird, muss /CE ja immer noch inaktiv sein.
Wie bereits bemerkt, passiert das bei meinen AT89S52 nicht und der
Programmerhalt funktioniert ohne Auffälligkeiten.
Evtl. löst ein TL7705 oder ein ähnlicher Resetcontroller dein Problem.
Jobst M. schrieb:> Beide Ausgänge der beiden seriellen Schnittstellen auf RxD vom> Prozessor?> Von der MIDI-Buchse kannst Du mit JP6 disablen - und vom MAX?>> Batterie hängt ja nun doch mit Masse an GND. Damit hat /WR ohne Spannung> Low und schreibt ...> Wieso wird eigentlich ausgerechnet das EPROM mit der Batterie versorgt?> Das hält seine Daten auch so ...>> JP3 ist gepolt, deshalb die merkwürdige Leitungsführung? :-D> Allgemein viel Chaos im Plan ...>> Es scheint auch in KiCad Symbole wie GND & Co. zu geben. Nutze sie!>>> Gruß>> Jobst
1) So sehe ich das was passiert auf TXD/RXD
2) JP6 habe ich nur eingesetzt weil ich mir anfangs nicht sicher war ob
Daten beeinflusst werden durch die Schnittstelle.
3) ...da muss ich noch mal drüber nachdenken
4) EPROM?? Stimmt, ist falsch und geändert. Danke
5) Das war der Trick mit den vertauschten Leitungen. Jumper stehen mal
vertikal oder horizontal.
6) Als Freihand und erster Versuch mit KiCad war ich ganz zufrieden
7) Ja, man kann da vieles mit Symbolen hab da allerdings noch keinen
Überblick deswegen überall Strippen gezogen :-)
> ____________> (+5V)----------------------+-----------| |> | | |> (DATA/ADRESS/CS/RD/WR)-----|-----------| SRAM |> | | |> + _ | |> ___ | |> _ | |> ___ | |> - | | |> | D1 | |> '--|<|--, | |> | | |> D2 | | |> (GND)-------------------------|<|--+---|__________|>> Damit sind automatisch alle Datenleitungen bei Ausfall der 5V auf High!> Wenn es sich um einen Akku handelt, kann parallel zu D1 ein Widerstand> zum laden gelegt werden. (Bzw. diese durch den Widerstand ersetzt> werden)>> Gruß>> Jobst
Die Funktion von D2 ist mir einfach nicht klar.
D1 sperrt, heisst Batterie wird nicht geladen.
OK...aber durch D2 fliesst immer was egal ob Batterie oder Netz. Oder
sollte D2 nur dazu dienen um noch einen Spannungsabfall von 0,7 Volt zu
haben damit die Batterie nicht ganz auf Masse liegt?
Janus M. schrieb:> 1) So sehe ich das was passiert auf TXD/RXD
Nö. Wenn von MIDI high und vom MAX low kommt, kann nicht beides auf
einer Leitung liegen. Du siehst dann im Zweifel nur Nonsense.
> 5) Das war der Trick mit den vertauschten Leitungen. Jumper stehen mal> vertikal oder horizontal.
??? 8-/
Janus M. schrieb:> Die Funktion von D2 ist mir einfach nicht klar.
Na, das ganze Gerät soll nicht von der Batterie versorgt werden, nur das
RAM.
> OK...aber durch D2 fliesst immer was egal ob Batterie oder Netz.
DANN ... ist die Diode defekt.
In Deiner Vorstellung ist GND immernoch unterhalb von +5V, wenn das
Gerät nicht versorgt wird. Zieh in Gedanken einfach mal eine Verbindung
zwischen GND und +5V und dann schaust Du mal, wo die Diode liegt und ob
sie gerade leitet.
Edit: Wie soll der Strom durch zwei in Reihe, in entgegengesetzter
Richtung geschalteten Dioden fließen?
Gruß
Jobst
Jobst M. schrieb:> Janus M. schrieb:>> 1) So sehe ich das was passiert auf TXD/RXD>> Nö. Wenn von MIDI high und vom MAX low kommt, kann nicht beides auf> einer Leitung liegen. Du siehst dann im Zweifel nur Nonsense.
Entweder Midi oder Max. Beides wird nicht gleichzeitig verwendet.
Also entweder speise ich Daten über den Atari mittels Midi oder über den
PC
mittels Max. So hat es bisher praktisch funktioniert.
Bei Midi Betrieb ist der Max nicht vorhanden. Das ganze ist als
Aufsteckplatinchen ausgeführt, die dann nicht gesteckt ist.
Nutze ich den PC so ist Midi nicht relevant. Hatte deswegen noch den
Jumper gezogen um da überhaupt keine Ströme fliessen zu lassen. Ist aber
wie ich gesehen habe nicht relevant.
So gesehen müsste ich in den Schaltplan noch einen Schalter zur Trennung
von Max einzeichnen. Jedenfalls habe ich es bisher immer so betrieben.
>> 5) Das war der Trick mit den vertauschten Leitungen. Jumper stehen mal>> vertikal oder horizontal.>> ??? 8-/
Auch wenn es etwas kurios aussehen mag. Es funktioniert tatsächlich in
der Praxis :-). Damit bekam ich Basic zum Laufen.
> Janus M. schrieb:>> Die Funktion von D2 ist mir einfach nicht klar.>> Na, das ganze Gerät soll nicht von der Batterie versorgt werden, nur das> RAM.
Klar das habe ich schon verstanden.
>> OK...aber durch D2 fliesst immer was egal ob Batterie oder Netz.
Meinte das eigentlich so. Bei 5V fliesst strom über das RAM und D2 nach
GND
Bei 3V fliesst der Strom über das Ram und D2 nach Ground.
> DANN ... ist die Diode defekt.> In Deiner Vorstellung ist GND immernoch unterhalb von +5V, wenn das> Gerät nicht versorgt wird. Zieh in Gedanken einfach mal eine Verbindung> zwischen GND und +5V und dann schaust Du mal, wo die Diode liegt und ob> sie gerade leitet.
Dann würde die Diode D2 parallel zur Batterrie und D1 liegen. Nur das
leuchtet mir nicht ganz ein.
So hab ich das bisher gesehen siehe Bild.
> Edit: Wie soll der Strom durch zwei in Reihe, in entgegengesetzter> Richtung geschalteten Dioden fließen?>>> Gruß>> Jobst
So, die D2 leuchtet mir jetzt auch ein. Ist eben nur eine Frage der
Darstellung.
Habe das Bild etwas erweitert.
Die restliche Schaltung würde mit der Batterie weiter versorgt werden
mittels Stromkreislauf I4. Dieser wird aber unterbrochen von D2.
Somit wird nur das RAM versorgt. Insofern ist D2 ziemlich sinnvoll.
--------------------
Noch etwas zu den Midi Ports. Man kann den Max232 bei meiner Schaltung
auch drinlassen. Die Datenübertragung mittels Midi wird nicht
beeinflusst. Anderst herum über den MAX232 die Daten per PC einspeisen
war auch kein Problem.
--------------------
Jetzt kann ich mich dann auf das grosse Basic stürzen. Habe es
nur versuchsweise in das ROM gebrannt. Leider kein Erfolg.
Muss denn wirklich das Basic in den 89S52 gebrannt werden?
Muss mir dann wohl einen Textool aus China bestellen um das dann
in den Microcontroller zu bekommen. Denke ich werde mir den Chip
dann mit dem Burner den ich ja auch für die Eproms nutze, verwenden.
--------------------
Janus M. schrieb:> Habe es> nur versuchsweise in das ROM gebrannt. Leider kein Erfolg.> Muss denn wirklich das Basic in den 89S52 gebrannt werden?
Ja, bei deinem Adressschema muss es das. Denn du spendierst 32K im
unteren Adressbereich und 32k im oberen. Das geht nun mal nicht, ohne
Basic komplett umzuschreiben. Entweder hast du also unten 32k EPROM und
oben 32k RAM, oder umgekehrt.
Schau dir im Basic Handbuch die Hardware mal an, dann wirds hoffentlich
klarer.
Janus M. schrieb:> Noch etwas zu den Midi Ports. Man kann den Max232 bei meiner Schaltung> auch drinlassen. Die Datenübertragung mittels Midi wird nicht> beeinflusst. Anderst herum über den MAX232 die Daten per PC einspeisen> war auch kein Problem.
Kann man machen, muss man aber nicht. Der MAX232 hat push-pull-Ausgänge.
Ein Transistor nach Plus, einer nach Masse. Im Ruhezustand liegt
High-Pegel an, der obere Transistor leitet. Der Midi-Optokoppler ist
stärker und schließt den Ausgang des MAX232 nach Masse kurz. Da der
bedingt kurzschlußfest ist, hält er das eine Weile aus. Du hast ja ein
Original und kein Billigding vom Ali.
Wenn Du die RxD ordentlich verodern willst, dann nimm ein AND-Gatter
("der Ausgang ist dann Low, wenn mindestens ein Eingang Low ist") oder
zwei Dioden und einen Widerstand.
soul e. schrieb:> Der Midi-Optokoppler ist stärker und schließt den Ausgang des MAX232 nach >
Masse kurz. Da der
> bedingt kurzschlußfest ist, hält er das eine Weile aus. Du hast ja ein> Original und kein Billigding vom Ali.
Bei gezogenem Jumper JP6 passiert nichts wenn die Daten vom PC kommen.
Kommen die Daten über Midi ist der Jumper gesteckt und bisher hatte ich
den MAX auch entfernt. Versuch heute zeigte zumindest keine Nachteile in
dedr Übertragung wenn er drin bleibt.
Danke für den Hinweis.
>> Wenn Du die RxD ordentlich verodern willst, dann nimm ein AND-Gatter> ("der Ausgang ist dann Low, wenn mindestens ein Eingang Low ist") oder> zwei Dioden und einen Widerstand.
Ist mir nicht ganz klar wie das gehen soll. Müsste ja eine automatische
Unterscheidung sein ob nun per PC oder per Midi übertragen wird.
Matthias S. schrieb:> Janus M. schrieb:>> Habe es>> nur versuchsweise in das ROM gebrannt. Leider kein Erfolg.>> Muss denn wirklich das Basic in den 89S52 gebrannt werden?>> Ja, bei deinem Adressschema muss es das. Denn du spendierst 32K im> unteren Adressbereich und 32k im oberen. Das geht nun mal nicht, ohne> Basic komplett umzuschreiben. Entweder hast du also unten 32k EPROM und> oben 32k RAM, oder umgekehrt.> Schau dir im Basic Handbuch die Hardware mal an, dann wirds hoffentlich> klarer.
Hm, durch die Vertauschung des Adressbereichs ist es mir so jedenfalls
nicht gelungen zumindest mit externem ROM. Muss ich mal intensiver
nachlesen.
Janus M. schrieb:> Hm, durch die Vertauschung des Adressbereichs ist es mir so jedenfalls> nicht gelungen zumindest mit externem ROM. Muss ich mal intensiver> nachlesen.
Einfach mal nachdenken. Der MCS51 erwartet ab Adresse 0000h den Reset
Vektor und den Start des Programmes. Basic benutzt RAM ab Adresse 2000h
(also direkt oberhalb eines 8k ROM Bereiches). Wie wir mittlerweile
wissen, funktioniert auch paralleles RAM ab Adresse 0000h bzw. 0200h.
Aber kein Adressschema in Basic erlaubt ROM von 0000h bis 7FFFh und dann
RAM von 8000h bis FFFFh.
Das ist aber das einzige, was du mit einem ROMless MC hinbekommst, denn
der Resetvektor muss ja zwingend auf 0000h liegen. Also geht nur das
Basic im MC selbst von 0000H bis 1FFFh, dazu parallel und bis 7FFFh ein
RAM. Optional dann ab 8000h ein EEPROM.
So ich habe jetzt die Diode D2 auf der Platine eingesetzt. Habe dann wie
erwartet an allen Bausteinen 0V gehabt ausser am RAM mit 3.13V
Habe aus interesse die Diode D2 mit einem Draht überbrückt und hatte ca.
1V an allen übrigen Bausteinen, Insofern dank an Jobst für die Geduld
das ganze Thema zu erklären. :-)
Nächster Schritt ist jetzt das Basic rein zubekommen. Da ich derzeit auf
Hardware warte um das Programmieren umzusetzen in den 89S52, bitte ich
noch etwas um Geduld.
Dann ist das angesprochene Problem mit dem automatischen Löschen beim
Aus- und Einschalten noch offen. Mit einem Timerbaustein sollte das in
den Griff zu bekommen sein.
Weiterhin ist noch die Sache mit dem "Kurzschluss" zwischen Midi und
MAX232 Betriebsweise zu lösen.
Anbei der augenblickliche Stand im Schaltplan mit KiCad