Forum: Projekte & Code Kosmos CP1 Emulator mit ATmega


von Ralph S. (jjflash)


Angehängte Dateien:

Lesenswert?

So als reines Spaßprojekt (beim warten aufs Christkind ;-) ) habe ich 
einen (noch nicht ganz fertigen) Kosmos CP1 Emulator geschrieben.

Ohne Sinn und Verstand !

Da der Kosmos CP1 30 Tasten hat (von denen die Tasten für die 
Zifferneingabe parallel geschaltet sind), habe ich ein China I/O Board 
aus der Schublade geholt und dieses verwendet.

Das I/O Board hat 16 Tasten, von denen der Emulator jedoch nur 11 
Verwendet.

Mittels einer "Shift-Taste" wird gewählt zwischen Zifferneingabe (ohne 
gedrückte Shift-Taste) und den sogenannten Funktionstasten (dann mit 
gedrückte Shift-Taste).

Die Tastenbelegung ist folgende:
1
     Tastenbelegung:
2
3
             run  stp  step
4
      -x-     1    2     3
5
6
             acc  clr   pc
7
      -x-     4    5     6
8
9
             out  inp   cas
10
      -x-     7    8     9
11
12
             cal
13
      SHIFT   0   -x-   -x-

Bis auf die Port-Befehle und das Speichern und Laden auf Kassette (was 
dann das interne EEProm des ATmega übernehmen wird) sind alle Funktionen 
bereits implementiert.

Wenn jemand also das Board zu Hause hat, es ihm langweilig ist, kann man 
damit gut "herumspielen" (eben bis das Christkind kommt).

Eine Manual zum originale CP1 (nach dem ich die Emulation programmiert 
habe) findet sich hier:

https://www.retrozone.ch/cp1/

Wie das I/O Board anzuschließen ist kann dem Header tm1638_kosmos_cp1.h 
entnommen werden.

Sollte ich noch verrückter sein, und davon eine Platine entwickeln, wäre 
ein TM1637 auch angebracht, weil dieser genau max. 6 Digit 
7-Segmentanzeige und 16 Tasten kontrollieren kann (für einen Preis von 
ca. 20 ct).

Viel Spaß damit und schöne Weihnachten,

JJ / Ralph

von Der müde Joe (Gast)


Lesenswert?

Tolle Sache!
Was braucht man noch neben dem von dir erwähnten sog. China I/O Board?

von Ralph S. (jjflash)


Lesenswert?

Der müde Joe schrieb:
> Tolle Sache!
> Was braucht man noch neben dem von dir erwähnten sog. China I/O Board?

einen ATmega? Theoretisch (und praktisch wohl auch) 5V, einen 
Kondensator und ein SPI Flasher, oder einen Arduino Nano / Uno.

von Michael W. (Gast)


Lesenswert?

Super Sache!
Ja das TM1638 ist ideal dafür. Soetwas ähnliches habe ich damals für die 
erste Version des Microtronic Emulators auch verwendet.

https://youtu.be/HHfHw3GVIuI

von Ralph S. (jjflash)


Angehängte Dateien:

Lesenswert?

So, jetzt habe ich es "ausprogrammiert" und den Emulator fertig gemacht. 
Mit dem "fertigmachen" stellen sich dann so manche Fragen darüber, 
damit, dafür.

Zum einen wie gehabt: Emulator funktioniert in Verbindung mit einem 
TM1638 Chip, an den 7-Segment und Tasten angeschlossen sind. Ein 
fertiges Board (aus China) hat Tasten derer 16 und somit sind 5 Tasten 
hiervon ungenutzt.

Der TM1638 benötigt zur Kommunikation mit einem µC 3 I/O Anschlüsse.

Vom Mikrocontroller bleiben dann gerade so genügend I/O Anschlüsse 
übrig, um die beiden 8-Bit Ports P1 und P2 noch zu emulieren.

Für den Emulator habe ich jetzt einen Arduino Nano verwendet (aber nicht 
die Arduino IDE) und diesen "normal" als Makefile-Projekt programmiert.

Für den Emulator habe ich ein bestehendes .c / .h Softwaremodul 
umgeschrieben, damit es für den Emulator passt und ein neues 
Softwaremodul namens "vports". Dieses "vports" ermöglicht es (wenn auch 
langsam), bunt über alle Anschlüsse des AVR gemischt, 8 Bits zu einem 
Port zusammen zu fassen. Hier kann einem Port entweder mittels einer 
Zuweisung eines uint8_t Wertes der ganze "Port" auf einmal gelesen 
geschrieben werden, oder einzelne Bits können gesetzt, gelöscht, gelesen 
werden.

Der Emulator wurde mit den Controllern ATmega8, 88, 168 und 328 
getestet. Wer dieses Projekt umsetzen möchte, muß im Makefile lediglich 
den Controllertyp und die Uploadmethode auswählen.

Die Funktionen des Emulators CAS und CAL wurden (als einzige) vom 
Original abgeändert. Normalerweise sind diese beiden Funktionen 
"Cassette store" und "Cassette load" und natürlich speichert dieses Teil 
nicht auf einen Kassettenrekorder. Weil selbst ein ATmega8 insgesamt 512 
Bytes EEProm besitzt und ich den "maximalen Speicherausbau" des Kosmmos 
CP1 auf 256 Byte Ram gesetzt habe, können im EEProm somit 2 Programme 
gespeichert werden. Hierfür wird für CAS und CAL dieselbe Methode 
verwendet wie bspw. das Anwählen von Speicherzellen oder das Setzen des 
Programmcounters:

Tastenkombination "001 + CAS" speichert den aktuellen Speicherinhalt auf 
Speicherplatz 1, "000 + CAS" speichert den aktuellen Speicherinhalt auf 
Speicherplatz 0.

Gleiches gilt für das Laden aus dem EEProm: "000 + CAL" und "001 + CAL".

-----------------------

Irgendwie hat das Spaß gemacht, einen "virtuellen" extrem 
minimalistischen "Computer" nachzubauen (man beachte die 
Anführungszeichen) und es stellt sich die Frage, warum bspw. invertieren 
nur für ein einzelnes Bit vorgenommen wurde, kein CALL und RET und noch 
"schlimmer" kein MUL und kein DIV. Die Antwort dürfte einfach sein: der 
originale Controller im Kosmos CP1 ist ein 8049 und hierfür dürfte wohl 
einfach kein Platz mehr im Controller gewesen sein.

Wer sich die Firmware des Emulators genauer anschaut, wird feststellen, 
dass der Maschineninterpreter an sich der einfachste Part des Programmes 
ist. Hier den Befehlssatz "auszubauen" dürfte ein extrem leichtes sein, 
bspw. MUL, DIV, NOT (kompletter Akku), SHEX (für ShowHex wenn die 
Anzeige hexadezimal sein soll).

Ich habe eine Befehlssatzänderung deshalb nicht vorgenommen, damit zum 
einen das Ding eben wirklich retro ist und zum anderen darf daran jeder 
so spielen wie er mag.

Der Quellcode dürfte hierfür genügend dokumentiert sein.

--------------------------------------------------------

Ich überlege mir wirklich, ob ich hierfür eine Platine routen soll (die 
extrem minimalistisch bleiben soll): keine USB2UART Bridge, aber RxD und 
TxD und DTR auf Stiftleisten herausgeführt um für Weiterentwicklung die 
serielle Schnittstelle zur Verfügung zu haben (vllt. macht man ein 
Programm-Upload von der seriellen Schnittstelle). SPI-Stiftleiste um den 
ATmega zu flashen (vllt. auch nur einen Bootloader um die eigentliche 
Firmware dann über die serielle Schnittstelle zu übertragen). Die beiden 
Ports P1 und P2 auf Buchsenleiste nach aussen geführt.

So, und dann gleich das I/O geändert: Anstelle von TM1638 einen TM1637 
verwenden, der genau die richtige "Größe" hat: 6 Digit 7-Segementanzeige 
mit max. 16 Tasten ==> passt. Hierfür brauchts dann auch nur noch 2 I/O 
Pins.

Bauteilemäßig wäre das (vor allem unter Verwendung eines ATmega8 oder 
ATmega88) ultra preiswert.

Mir stellt sich dann allerdings nur die Frage: Was mache ich dann damit, 
wenn ich eine solche Hardware aufgebaut habe?

Schöne Tage noch,

JJ

von Michael W. (Gast)


Lesenswert?

Wie gesagt,  ich denke nicht dass Du viel über die Sinnfrage grübeln 
musst. Ich empfehle den Atmega 2560 der kostet 5 Euro und benötigt keine 
Hacks für vports o.ä. Eine Platine ist in jedem Fall zu empfehlen.  Das 
macht auch Spaß!

Schön dass es nun auch einen CP1 in dieser Form gibt; sicherlich wird 
den auch der ein oder andere nachbauen.  So geschehen mit meinem 
Microtronic Emulator über die Jahre.

Schöne Tage noch Michael

von Andreas B. (bitverdreher)


Lesenswert?

Ralph S. schrieb:
> Was mache ich dann damit,
> wenn ich eine solche Hardware aufgebaut habe?
Programmieren lernen. ;-)

von Michael W. (Gast)


Lesenswert?

Ralph S. schrieb:
> Mir stellt sich dann allerdings nur die Frage: Was mache ich dann damit,
> wenn ich eine solche Hardware aufgebaut habe?

Evtl. mal beim Franzis-Verlang nachfragen, ob die an einem Vertrieb / 
einer Neuauflage interessiert sind?

Man darf nicht vergessen, dass diese Lerncomputer (CP1, Microtronic) den 
Lerncomputern die heute auf den Markt geworfen werden (Kakken GMC-4 
o.ä.) weit überlegen sind. Das Zauberwort heißt existierende Software, 
Anleitungsbücher & Elektronik-Experimente! Diese sind durchaus auch 
heute noch didaktisch empfehlenswert, für Einsteiger.

Dieser hier z.B.

https://www.tindie.com/products/subsystems/4-bit-microprocessor-trainer/

wird "erfolgreich" komerziell vertrieben. Ist zudem das gleiche wie der 
GMC-4 und the Science Fair Microcomputer Trainer

https://www.old-computers.com/museum/computer.asp?st=1&c=1053

bzgl. Instruction Set.

Sowohl der CP1 als auch der Microtronic sind sowas von besser... der 
Microtronic ist natürlich der beste ;-)

von chris_ (Gast)


Lesenswert?

von Michael W. (michael_w738)
>Kakken GMC-4

Das war wohl ein Freud'scher-Versprecher .. das Ding heißt Gakken GMC-4
https://en.wikipedia.org/wiki/GMC-4

von Der müde Joe (Gast)


Lesenswert?

Ist doch klar, du bewunderst sie und freust dich, das du sie hast! :-)

Ich konstruiere derzeit eine solche Minimalversion eines CP1, aber 
ausschließlich mit THT-Bauteilen.

von Michael W. (Gast)


Lesenswert?

chris_ schrieb:
> von Michael W. (michael_w738)
>>Kakken GMC-4
>
> Das war wohl ein Freud'scher-Versprecher .. das Ding heißt Gakken GMC-4
> https://en.wikipedia.org/wiki/GMC-4

Oh ja hmm war wohl irgendwie eine Superposition in meinem Hirn zwischen 
Gakken und Kaggen und da kam dann irgendwie Kakken bei raus. Hätte 
natürlich auch Gaggen werden können :-)

von Ralph S. (jjflash)


Lesenswert?

Michael W. schrieb:
> Wie gesagt,  ich denke nicht dass Du viel über die Sinnfrage grübeln
> musst. Ich empfehle den Atmega 2560 der kostet 5 Euro und benötigt keine
> Hacks für vports o.ä. Eine Platine ist in jedem Fall zu empfehlen.  Das
> macht auch Spaß!

Das finde ich für einen CP1 Emulator satt zu arg und absolute 
Verschwendung. Nur damit die Ports vorhanden sind (das sind sie bei 
einem 28 pol. Gehäuse ebenfalls). Ansonsten reicht ein Controller mit 8 
kB Flash und 512 Byte Ram (wenn man sich anstrengen würde - was ich 
nicht getan habe - würde höchstwahrscheinlich auch ein 4 kB Flash 
reichen).

Michael W. schrieb:
> Evtl. mal beim Franzis-Verlang nachfragen, ob die an einem Vertrieb /
> einer Neuauflage interessiert sind?

Das glaube ich wohl eher absolut nicht: Das Manual zu schreiben (das 
Originale) ist mit Sicherheit deutlich aufwändiger gewesen, als die 
Firmware des Controllers. Heute gilt das noch mehr als damals. Ich habe 
so geschätzt insgesamt 6 bis 8 Stunden zum Programmieren gebraucht (und 
es wäre schneller gewesen, ich hätte nicht ums verr*** die TM1638 
Software angepasst sondern gleich neu geschrieben).

Vom Ansatz her war ich sehr überrascht, wie Kosmos damals heran gegangen 
ist, jemanden einen Computer zu erklären. Es wurde wirklich gelernt wie 
ein Computer funktioniert. Allerdings haben sie dann elementare Dinge 
dann wirklich weg gelassen (was wohl dem extrem geringen Arbeitsspeicher 
des 8049 geschuldet ist):

- Ich habe beim Testen des Emulators wirklich ab und innerlich den Kopf 
geschüttelt, weil die Ein- und Ausgabe im Dezimalsystem vorgenommen 
wird. Wahrscheinlich wollte man didaktisch den "lernenden" nicht noch 
mit einem "fremden" Zahlensystem überlasten.

- kein Stacksystem und dadurch

- keine CALL und RET

Wobei man den letzten Punkt dann sogar per Software realisieren kann. 
Bevor man ein Unterprogramm anspringt, legt man an einem Speicherplatz 
die Rücksprungadresse ab und anstelle eines RET wird an diese im 
Speicher abgelegte Adresse gesprungen.

Natürlich kann man das alles um den CP1 erweitern, nur dann ist es kein 
CP1 mehr.

Schlimm beim CP1 ist, dass man bei der Eingabe die Adresse nicht sieht, 
an der man etwas eingibt, bsp.:
1
  100 - out    // wählt Adresse 100 an (wohlbemerkt alles dezimal)
2
04010 - inp    // Eingabe von Opcode (04) und Operand (010)
3
               // nach "inp" wird automatisch nächste Stelle angewählt
4
02000 - inp    //
5
.
6
---->          // nach einigen Eingaben: an welcher Adresse befinde ich mich?
7
.
8
09101 - inp    // letzter Befehl eines Programmes

Grundsätzlich wäre für diese Art von "Lerncomputer" es wohl besser 
gewesen (wie ich das in Lehre an einem i8080 gehabt hatte) mit extra 
Anzeige für Adresse und Eingabe. Dieses hatte auch nur 6 
7-Segmentanzeigen (aber einige Tasten mehr) und es wurde nativ auf dem 
8080 programmiert (was natürlich auf einem 8049 nicht geht, auf einem 
MCS-51 wäre das gegangen).

All das ist wohl schon 1983 dem Kostendruckt unterworfen gewesen, damit 
das Teil auch ja "billig" genug bleibt (wobei ich einen Preis von 218.- 
DM bei Einführung schon als "stolzen Preis" bezeichnen würde).

Michael W. schrieb:
> Man darf nicht vergessen, dass diese Lerncomputer (CP1, Microtronic) den
> Lerncomputern die heute auf den Markt geworfen werden (Kakken GMC-4
> o.ä.) weit überlegen sind.

"Heute" auf den Markt geworfen: Der Gakken GMC-4 wurde 2009 als Beilage 
zu einem Elektronikmagazin mit vertrieben. Hier finde ich das 
"Selbstbasteln" der Folientastatur am interessantesten und mich würds 
interessieren, wo die ähnlich billig wie PCB's fertigen lassen kann 
(wenn es so etwas gibt).

Vom Ansatz her sind CP1 und Microtronic tatsächlich überlegen.

--------------------------------------

Der müde Joe schrieb:
> Ich konstruiere derzeit eine solche Minimalversion eines CP1, aber
> ausschließlich mit THT-Bauteilen.

Öha ... ausschließlich mit THT wird.. sagen wir es so: etwas 
"umständlich": Der Mikrocontroller ist da kein Problem, den gibts THT. 
Mit dem I/O System wirds "doof". Mir ist hier kein einziger THT Baustein 
bekannt.

Hier kannst du bspw. mit PCF8574 I/O Expander hantieren, allerdings: ob 
das Sinnvoll ist? Du kannst hier einen Expander nehmen und mit diesem 16 
Tasten abfragen, wenn du den Expander seinerseits selbst multiplext. 
Oder du nimmst derer gleich 2 Expander und multiplext diese nicht, weil:
Du willst die Anzeige multiplexen, hier brauchst du dann garantiert 2 
Expander, einen für die 8-Bit Informationen der 7-Segmentanzeige (7 
Segmente plus Dezimalpunkt), 6-Bit Information für die MPX-Leitungen.

Hmm, insgesamt dann 4 Bausteine I/O Expander plus µC ? (nur damit es THT 
bleibt) ?

Ich werde die Tage das ganze mit einem TM1637 versuchen (der halt aber 
eben nicht THT ist), der einfach wie gemacht hierfür ist. Vllt. solltest 
du überlegen, einen TM1637 auf einen TSOP-Adapter zu löten und das dann 
als THT-Baustein ansehen ? ;-)

Habe ich vor einiger Zeit für einen ATtiny so realisiert gehabt.

Beitrag "Siebensegment und Tasten ansteuern mit TM1651 \ TM1637"

Eine solche "Konstruktion" würde sich dann auf "ATmega", TM1637, 2 x 3 
Digit 7-Segmentanzeige, 16 Tasten beschränken. Ende !

------------------------------------

Werde ich die Tage mal ausprobieren, größte "Herausforderung" hier ist 
es dann, 16 Tasten auf ein Steckbrett zu bringen. :-) ;-) vllt. sollte 
ich mal ein ähnliches I/O Board wie das von mir verwendete routen, nur 
mit TM1637 Baustein (wobei sich hier dann wieder die Frage stellt: 
wofür):

von chris_ (Gast)


Lesenswert?

>Vom Ansatz her war ich sehr überrascht, wie Kosmos damals heran gegangen
>ist, jemanden einen Computer zu erklären.

Weil's so schön zum Thema passt. Vor einiger Zeit gab's im 
Deutschlandfunk eine 3 stündige Hörcolage zum Thema Computer und 
Programmiersprachen.

https://www.deutschlandfunkkultur.de/geschichte-n-der-programmiersprachen-in-einer-langen-nacht.1024.de.html?dram:article_id=458026

Leider ist die Audiodatei dort nicht mehr verfügbar. Der Beitrag ist 
aber wirklich empfehlenswert.

von Planloser (Gast)


Lesenswert?

Ralph S. schrieb:
> Hmm, insgesamt dann 4 Bausteine I/O Expander plus µC ? (nur damit es THT
> bleibt) ?
>
> Ich werde die Tage das ganze mit einem TM1637 versuchen (der halt aber
> eben nicht THT ist), der einfach wie gemacht hierfür ist. Vllt. solltest
> du überlegen, einen TM1637 auf einen TSOP-Adapter zu löten und das dann
> als THT-Baustein ansehen ? ;-)

Den TM1637 gibt es als DIP20. Siehe Datenblatt.

Z.B.:
https://de.aliexpress.com/item/1005001721593177.html

von Ralph S. (jjflash)


Lesenswert?

Planloser schrieb:
> Den TM1637 gibt es als DIP20. Siehe Datenblatt.
>
> Z.B.:
> https://de.aliexpress.com/item/1005001721593177.html

na dann steht doch einem kompletten THT Projekt nix mehr im Wege !

von Ralph S. (jjflash)


Lesenswert?

Andreas B. schrieb:
> Ralph S. schrieb:
>> Was mache ich dann damit,
>> wenn ich eine solche Hardware aufgebaut habe?
> Programmieren lernen. ;-)

cooool, dann kann ich das jetzt endlich (in meinem fortgeschrittenen 
Alter) doch noch lernen ! ;-)

von Michael W. (Gast)


Lesenswert?

Ralph S. schrieb:
> Das glaube ich wohl eher absolut nicht: Das Manual zu schreiben (das
> Originale) ist mit Sicherheit deutlich aufwändiger gewesen, als die
> Firmware des Controllers. Heute gilt das noch mehr als damals. Ich habe
> so geschätzt insgesamt 6 bis 8 Stunden zum Programmieren gebraucht (und
> es wäre schneller gewesen, ich hätte nicht ums verr*** die TM1638
> Software angepasst sondern gleich neu geschrieben).

Das meine ich doch genau. Der eigentliche Wert dieser historischen 
Lerncomputer liegt in den existierenden Anleitungsbüchern. Wenn Dein CP1 
kompatibel genug ist von der Benutzerführung und vom Handling, dass man 
die originalen Handbücher verwenden kann, ist das von großem Wert und 
macht eine Neuauflage sehr einfach. Die originalen Handbücher und 
Experimente und Software können direkt wieder- und weiterverwendet 
werden. Null Kosten.

von Michael W. (Gast)


Lesenswert?

Ralph S. schrieb:
> Das finde ich für einen CP1 Emulator satt zu arg und absolute
> Verschwendung. Nur damit die Ports vorhanden sind (das sind sie bei
> einem 28 pol. Gehäuse ebenfalls). Ansonsten reicht ein Controller mit 8
> kB Flash und 512 Byte Ram (wenn man sich anstrengen würde - was ich
> nicht getan habe - würde höchstwahrscheinlich auch ein 4 kB Flash
> reichen).

Na wie gesagt, ich war vor 4 Jahren mit einem 328p angefangen und mir 
wurde es dort "zu eng". Einige Funktionen die ich hinzufügen wollte 
benötigten halt mehr Platz. Z.B. mehr Platz für EEPROM oder "Fest-ROM" 
Programme. In deinem Fall ist EEPROM ja auch schon eine Beschränkungen 
(nur 2 Programme). Ich wollte halt SDCard, LCD und andere Sachen 
hinzufügen. Alles in Allem denke ich, dass das auch mit diesen kleinen 
Erweiterungen noch ein CP1 wäre bzw. eine Microtronic in meinem Falle 
;-) Es ist schon nett, wenn man Platz für duzende "Fest-Programme" hat 
z.B. Und bei 5 USD pro ATMega 2560 Pro Mini Board mache ich mir darüber 
nicht so viele Gedanken... ESP32 oder STM32 or RISC-V wäre da schon eher 
Verschwendung ;-)

von Michael W. (Gast)


Lesenswert?

Ralph S. schrieb:
> Andreas B. schrieb:
>> Ralph S. schrieb:
>>> Was mache ich dann damit,
>>> wenn ich eine solche Hardware aufgebaut habe?
>> Programmieren lernen. ;-)
>
> cooool, dann kann ich das jetzt endlich (in meinem fortgeschrittenen
> Alter) doch noch lernen ! ;-)

Du und was lernen? Du weißt und kannst doch schon alles!

von Schlaumaier (Gast)


Lesenswert?

Ralph S. schrieb:
> Da der Kosmos CP1 30 Tasten hat (von denen die Tasten für die
> Zifferneingabe parallel geschaltet sind), habe ich ein China I/O Board
> aus der Schublade geholt und dieses verwendet.

Weißt du noch welches Board/Modul da genommen hast und ob die Chinesen 
das noch liefern. ??

von Michael W. (Gast)


Angehängte Dateien:

Lesenswert?

Ralph S. schrieb:
> Werde ich die Tage mal ausprobieren, größte "Herausforderung" hier ist
> es dann, 16 Tasten auf ein Steckbrett zu bringen. :-) ;-) vllt. sollte
> ich mal ein ähnliches I/O Board wie das von mir verwendete routen, nur
> mit TM1637 Baustein (wobei sich hier dann wieder die Frage stellt:
> wofür):

Ach das kriegst Du schon hin, das haben andere auch schon geschafft 
(sogar mit 32 Tasten ;-)

von Michael W. (Gast)


Lesenswert?

Schlaumaier schrieb:
> Ralph S. schrieb:
>> Da der Kosmos CP1 30 Tasten hat (von denen die Tasten für die
>> Zifferneingabe parallel geschaltet sind), habe ich ein China I/O Board
>> aus der Schublade geholt und dieses verwendet.
>
> Weißt du noch welches Board/Modul da genommen hast und ob die Chinesen
> das noch liefern. ??

Guckst Du Ebay

https://www.ebay.com/itm/TM1638-8-Digit-Common-Anode-LED-Keyboard-Tastatur-Scanning-Display-modul-TM1638/262986437133?hash=item3d3b36920d:g:fRgAAOSwcj1aOeK0

von Schlaumaier (Gast)


Lesenswert?

Michael W. schrieb:
> Guckst Du Ebay
>
> Ebay-Artikel Nr. 262986437133

Vielen Dank werde ich gleich mal bestellen. ;) Kann ich nämlich gut für 
ein anderes Projekt gebrauchen.

von Michael W. (Gast)


Lesenswert?

Ralph S. schrieb:

> Vom Ansatz her war ich sehr überrascht, wie Kosmos damals heran gegangen
> ist, jemanden einen Computer zu erklären. Es wurde wirklich gelernt wie
> ein Computer funktioniert. Allerdings haben sie dann elementare Dinge
> dann wirklich weg gelassen (was wohl dem extrem geringen Arbeitsspeicher
> des 8049 geschuldet ist):
>
> - Ich habe beim Testen des Emulators wirklich ab und innerlich den Kopf
> geschüttelt, weil die Ein- und Ausgabe im Dezimalsystem vorgenommen
> wird. Wahrscheinlich wollte man didaktisch den "lernenden" nicht noch
> mit einem "fremden" Zahlensystem überlasten.
>
> - kein Stacksystem und dadurch
>
> - keine CALL und RET
>
> Wobei man den letzten Punkt dann sogar per Software realisieren kann.
> Bevor man ein Unterprogramm anspringt, legt man an einem Speicherplatz
> die Rücksprungadresse ab und anstelle eines RET wird an diese im
> Speicher abgelegte Adresse gesprungen.

Die Zeiten haben sich halt geändert. Das Microtronic hat eine ähnliche 
Beschränkung - kein Stack, sondern nur ein Rücksprungregister. Daher 
kann man zwar CALL/ RET machen, aber nur 1 Level (Subroutinen können 
nicht aus einer Subroutine angesprungen werden). Diese Beschränkung habe 
ich z.B. aufgehoben in meinem Microtronic-Emulator und ihm einen echten 
Stack spendiert. Interessant - sogar der TMS 1600, die CPU im 
Microtronic, hat keinen Stack!! Und da gab es noch andere...

Was HEX angeht - hmm, ja das ist in der Tat eigenartig beim CP1. Zumal 
ja das Binärsystem ausführlich erklärt wird.

ABER - der CP1 hatte damals sogar ein Vorwort und EMPFEHLUNG von Prof. 
Karl Steinbruch, der kein Unbekannter ist in der deutschen Informatik...

Der CP1 kam 3 Jahre zu spät. Wäre er wie der Microtronic 1981 
rausgekommen, hätte er historisch eine größere Relevanz gehabt. Die 
echten Heimcomputer waren 1983 schon zu sehr auf dem Vormarsch.

von Michael W. (Gast)


Angehängte Dateien:

Lesenswert?


von Michael W. (Gast)


Lesenswert?

Also, @jjflash - bitte alles auf eine Platine bringen, sodass man es 
schön kompakt nachbauen kann! Ich habe zwar ein CP1 (und alle 
CP1-Erweiterungen... wie wäre es denn damit eigentlich? 
Speichererweiterung, Kassetteninterface & IO-Erweiterung nachbauen!), 
hätte aber sehr gerne Deinen Emulator in "all in one" Form vorliegen!

CP1-Erweiterungen:

http://www.8bit-homecomputermuseum.at/computer/kosmos_computer_praxis_cp1.html

von Ralph S. (jjflash)


Angehängte Dateien:

Lesenswert?

Michael W. schrieb:
>> cooool, dann kann ich das jetzt endlich (in meinem fortgeschrittenen
>> Alter) doch noch lernen ! ;-)
>
> Du und was lernen? Du weißt und kannst doch schon alles!

Ach herjeh, bin ich dir irgendwann auf die Füße getreten? Wenn dem so 
ist, war das sicherlich nicht meine Absicht. Sollte ich so "rüberkommen" 
alles besser zu wissen, muß ich meine Art zu schreiben ändern, denn

Michael W. schrieb:
> Du und was lernen? Du weißt und kannst doch schon alles!

dem ist ganz ganz sicher nicht so (auch wenn ich schon 40 Jahre lang mit 
Elektronik im besonderen mit Prozessoren und Controllern zu tun habe). 
Wenn ich hier manche lese (das meine ich nicht ironisch, sondern eher in 
Richtung "ehrfurchtsvoll") was die alles so getrieben habe, dann weiß 
ich, dass immer welche gibt, die da deutlich über mein "Können" eins 
drauflegen. Ich spiele im allerbesten Falle obere zweite Bundesliga, 
untere erste Bundesliga. Andere (eben hier vertretene Mitglieder des 
Forums) spielen da wirklich Champions- und Euroleague.

Schau dir mal an (wenn du so querliest), was ein Jörg W. ein Yalu oder 
ein Frank M. drauf hat. Oder auch insbesondere ein Philip Klaus Krause. 
Das sind die wirklich richtig guten! (Auch wenn das manche vllt. anders 
sehen, von solchen Leuten lerne ich auch nach 40 Jahren noch).

Schlaumaier schrieb:
> Michael W. schrieb:
>> Guckst Du Ebay
>>
>> Ebay-Artikel Nr. 262986437133
>
> Vielen Dank werde ich gleich mal bestellen. ;) Kann ich nämlich gut für
> ein anderes Projekt gebrauchen.

Das kann man für einige Sachen gebrauchen ...

Michael W. schrieb:
> z.B. Und bei 5 USD pro ATMega 2560 Pro Mini Board mache ich mir darüber
> nicht so viele Gedanken... ESP32 oder STM32 or RISC-V wäre da schon eher
> Verschwendung ;-)

Schmunzeln muß, man könnte das auch als Nucleo-Shield machen, 
Möglichkeiten gäbe es viele. Befehlssatz aufbohren auch. Eingabeparser 
hinzufügen geht auch, steuerbar über RS232 oder wenn man das mit einem 
ES32 realisieren würde, sogar über WLAN.

Allerdings wäre es dann kein CP1 mehr.

Für mich ist das im Moment spielerei und ein Kasetteninterface werde ich 
sicherlich nicht hinzufügen.

Im Moment bin ich absolut am "abspecken" der Hardware und versuche das 
eben wie oben beschrieben zu realisieren. Im Moment mit einem ATmega8, 
dem ich sogar den Quarz geklaut habe und zum ersten mal einen Optiboot 
Bootloader OHNE Quarz dafür neu übersetzt habe und mit 38400 Baud 
betreibe (das ist aus meiner Erfahrung die höchste Baudrate, die ohne 
Quarz noch gut funktioniert).

Also, derzeit noch "Steckbrettarbeiten" um die Hardware aufzubauen, 
danach die ganze Geschichte mit 7-Segmentanzeigen und Tastern noch 
einmal. Weil ich derzeit 3 Pin's eingespart habe kann man sich 
überlegen, ob man hier noch ein rudimentäres Terminalprogramm mit 
integriert um die Eingabe zu erleichtern und vllt. (aber nur vllt.) ein 
externes I2C EEProm damit mehr als nur 2 Programme gespeichert werden 
können.

Bei dieser Steckbrettarbeit bin ich gerade mal so weit, dass ich die 
7-Segmentanzeigen ansprechen kann ==> der Aufbau geht weiter (außerdem 
habe ich immer öfters jetzt auch mein aktuelles Projekt im Kopf - Padauk 
PFS Programmer, an den ich mich bald wieder machen werde).

;-) im Übrigen kann dann ja jeder damit spielen wie er will.

Für mich ist es jetzt ein Freizeitvertreib wie Fahrradfahren. Wenn 
Corona nicht wäre, fährst du irgendwohin in einen Biergarten oder 
Imbiss, ißt was, trinkst was und fährst wieder nach Hause. Zu Hause 
hätte man auch essen und trinken können und sich das Fahren sparen 
können.

Genausoviel Sinn macht ein CP1 Emulator. Macht Spaß das zu machen, aber 
wirklich etwas damit anfangen kann man nicht.

Michael W. schrieb:
> Also, @jjflash - bitte alles auf eine Platine bringen, sodass man es
> schön kompakt nachbauen kann! Ich habe zwar ein CP1 (und alle
> CP1-Erweiterungen... wie wäre es denn damit eigentlich?
> Speichererweiterung, Kassetteninterface & IO-Erweiterung nachbauen!),
> hätte aber sehr gerne Deinen Emulator in "all in one" Form vorliegen!

Speichererweiterung wäre schon eine sehr starke Veränderung des 
Maschineninterpreters: Der Adressbereich beträgt 8-Bit, d.h. mehr als 
256 Speicherplätze sind nicht. Wenn nun den Interpreter dahin ändert, 
dass (weil wie bei einem RISC beinhaltet eine Speicherzelle OP-Code und 
Datum) der 16-Bit Wert bspw. 6-Bit für den Opcode hat (was dann für 64 
Opcodes reicht und für Speicheradresse somit 2^10 Adresse = 1kByte) hat, 
dann hast du das Problem, dass du dezimal den Speicher (weil 3-stellig 
dezimal) nur bis 999 Speicherstellen adressieren kannst).

Hierfür mußt du dann schier ein neues Buch der Anleitung schreiben und 
es steht immer noch die Frage im Raum: Wer arbeitet damit? (Antwort: 
Keiner natürlich). Im allerbesten Fall kann man damit tatsächlich noch 
sehr einfach zeigen, wie ein Computer funktioniert. Bspw. ein 
Demoprogramm, bei dem auf eine Speicherstelle, die für eine 
Rücksprungadresse reserviert wird, vor einem Sprung diese Speicherstelle 
beschrieben wird, in ein Unterprogramm gesprungen wird. Soll aus der 
Subroutine zurückgekehrt werden, wird der Rücksprung mittels SIU (was 
für eine Mnemonic) realisiert:
indirekt unbedingt springen (auf Adresse die unter xxx steht).

Nach dieser Methode könnte sogar ein Stack realisiert werden. Alles in 
allem wäre das ein neues "Spielzeug" ;-) und müßtest das eigentlich dann 
CP2 nennen.

von Michael W. (Gast)


Lesenswert?

Ralph S. schrieb:
> Michael W. schrieb:
>>> cooool, dann kann ich das jetzt endlich (in meinem fortgeschrittenen
>>> Alter) doch noch lernen ! ;-)
>>
>> Du und was lernen? Du weißt und kannst doch schon alles!
>
> Ach herjeh, bin ich dir irgendwann auf die Füße getreten? Wenn dem so
> ist, war das sicherlich nicht meine Absicht. Sollte ich so "rüberkommen"
> alles besser zu wissen, muß ich meine Art zu schreiben ändern, denn

Sorry, haben den ;-) und :-) vergessen!

> drauflegen. Ich spiele im allerbesten Falle obere zweite Bundesliga,
> untere erste Bundesliga. Andere (eben hier vertretene Mitglieder des
> Forums) spielen da wirklich Champions- und Euroleague.
>
> Schau dir mal an (wenn du so querliest), was ein Jörg W. ein Yalu oder
> ein Frank M. drauf hat. Oder auch insbesondere ein Philip Klaus Krause.
> Das sind die wirklich richtig guten! (Auch wenn das manche vllt. anders
> sehen, von solchen Leuten lerne ich auch nach 40 Jahren noch).

Ach, die Kackordnung im Forum ist mir eigentlich ganz egal... mich 
interessieren nur Projekte, und dass man was lernen kann. Ich arbeite 
und lebe im Silicon Valley - da glaubt auch immer jeder er ist der 
Größte, und dann guckt man sich den Code an, und dann wird durch 0 
geteilt und was weiß ich nicht alles. Also, mit Wasser kochen doch alle. 
Ob hier nun einer erimittierter Elektrotechnik-Professor, 
Diesel-Motor-Steuerungs-"Optimierer" in der Aufomafia oder Hobby-Bastler 
ist - ist mir egal, solange das Projekt interessant ist, und gut 
durchgeführt ist. Das ist bei deinem Projekt sicherlich der Fall (für 
mich). Natürlich ist das hoch subjektiv. Andere Projekte hier sind mir 
komplett egal.

> hinzufügen geht auch, steuerbar über RS232 oder wenn man das mit einem
> ES32 realisieren würde, sogar über WLAN.

In der Tat habe ich daran auch gedacht.

> Allerdings wäre es dann kein CP1 mehr.

Eine gute Frage - ab wann ist es "nicht mehr das Original"? Für mich ist 
soetwas wie "The C64" z.B. komplett uninteressant, weil reine Software. 
Wo beim CP1 die Grenze ist, kann ich nicht sagen - müsste ich einmal 
direkt arbeiten mit Deinem CP1.

> Für mich ist das im Moment spielerei und ein Kasetteninterface werde ich
> sicherlich nicht hinzufügen.

Klar. Wie so vieles hier.

> externes I2C EEProm damit mehr als nur 2 Programme gespeichert werden
> können.

Da fände ich ein SDcard-Interface interessanter. Dann kann man Programme 
auch vom PC editieren / aufladen. Und würde dann lieber gleich einen 
ATmega mit mehr EEPROM Speicher nehmen, um Chipcount zu minimieren.

> Genausoviel Sinn macht ein CP1 Emulator. Macht Spaß das zu machen, aber
> wirklich etwas damit anfangen kann man nicht.

Wie mit 80% aller anderen Projekte hier.

> Speichererweiterung wäre schon eine sehr starke Veränderung des
> Maschineninterpreters: Der Adressbereich beträgt 8-Bit,

Das ist mir natürlich auch klar - der Original CP1 hat 128 Addressen. 
Mit Speichererweiterung waren es 256. Wie beim Microtronic. Meine Frage 
war - du hast also schon bis 0-999 Addressen implementiert? Die OpCodes 
für Addressen sind alle 3stellig, insofern wäre es einfach möglich. 
Falls Du natürlich intern nur ein Array mit 8Bit-Index für das RAM 
verwendest, geht's nicht. Ich vermute einmal, dass Deine ATmega da nicht 
genügend SRAM für hat. Denke, da wäre sonst ein größerer MCU 
empfehlenswert? Anderseits - wer braucht schon so viel Speicher für 
einen Lerncomputer...

> es steht immer noch die Frage im Raum: Wer arbeitet damit? (Antwort:
> Keiner natürlich).

Wer "arbeitet" mit den ganzen anderen Projekten hier? Auch keiner.

> Nach dieser Methode könnte sogar ein Stack realisiert werden. Alles in
> allem wäre das ein neues "Spielzeug" ;-) und müßtest das eigentlich dann
> CP2 nennen.

Nein, CP2 ist das Kassettenmodul, CP3 die Speicherweiterung, CP4 das 
Relaismodul, CP5 die IO-Erweiterung.

Vielleicht CP1+ ?  :-)

Gruß
Michael

von Andreas B. (bitverdreher)


Lesenswert?

Michael W. schrieb:
>> es steht immer noch die Frage im Raum: Wer arbeitet damit? (Antwort:
>> Keiner natürlich).
>
> Wer "arbeitet" mit den ganzen anderen Projekten hier? Auch keiner.
Das würde ich so nicht unbedingt sehen. In diesem Fall ist es halt ein 
Henne Ei Problem.
Aktuell bin ich auch auf der Suche nach Problemen (sinnvollen 
Projekten). Lösungen habe ich schon genug. ;-)

von Michael W. (Gast)


Lesenswert?

Andreas B. schrieb:
> Michael W. schrieb:
>>> es steht immer noch die Frage im Raum: Wer arbeitet damit? (Antwort:
>>> Keiner natürlich).
>>
>> Wer "arbeitet" mit den ganzen anderen Projekten hier? Auch keiner.
> Das würde ich so nicht unbedingt sehen. In diesem Fall ist es halt ein
> Henne Ei Problem.
> Aktuell bin ich auch auf der Suche nach Problemen (sinnvollen
> Projekten). Lösungen habe ich schon genug. ;-)

OK. Was sind denn die Top 10 Projekte, die hier Probleme lösen, für die 
es keine besseren, günstigeren, oder relevanteren kommerziellen Lösungen 
gibt?
(Bitte jetzt nicht die Wordclock, den MP3-Player für Kinder, oder den 
Taschenrechner bringen... wohl gemerkt: ich sage ja nicht, dass das 
keine tollen Leistungen und Projekte sind, lediglich, dass sie komplett 
irrelevant sind und "keiner sie wirklich braucht" - ich habe größte 
Hochachtung vor all diesen Projekten, bitte nicht falsch verstehen!)

von Andreas B. (bitverdreher)


Lesenswert?

Michael W. schrieb:
> OK. Was sind denn die Top 10 Projekte, die hier Probleme lösen, für die
> es keine besseren, günstigeren, oder relevanteren kommerziellen Lösungen
> gibt?

Das ist mir im wesentlichen schon klar.
Obwohl es schon einige Sachen so nicht zu kaufen gibt.
GPS Logger (gibt es so nicht zu kaufen), Wetterstation (mit DB 
Anbindung, auch nicht zu kaufen), Bluetoothgerätchen, Internetradio 
(ohne nach Hause telefonieren, auch selten als Kaufgerät) habe ich schon 
durch.

Auch obiges Gerät des TO gibt es nicht für diesen Preis zu kaufen. Daß 
er damit jetzt nichts anfangen kann, ist halt das Henne-Ei Problem, das 
ich schon erwähnte.

Etwas was ich irgendwie gebrauchen könnte, würde mir schon reichen. ;-)
Man kann immer etwas besser machen (für einem selbst zumindest) als in 
kommerziellen Geräten.

von Michael W. (Gast)


Lesenswert?

Andreas B. schrieb:
> Auch obiges Gerät des TO gibt es nicht für diesen Preis zu kaufen. Daß
> er damit jetzt nichts anfangen kann, ist halt das Henne-Ei Problem, das
> ich schon erwähnte.

Genau so ist es. Daher finde ich es interessanter und relevanter, als 
viele andere Projekte. Retro-Computing-Projekte halt. Der Wert eines 
solchen liegt ganz klar subjektiv im Auge des Betrachters. Aber selbst 
als Microtronic-Fan finde ich das CP1-Projekt interessant. Anderen wird 
es egal sein.

Und dass er damit nichts anfangen kann, glaube ich ja nicht. Sonst würde 
er seine Zeit wohl eher mit was anderem verbringen. Auch wenn der Weg 
das Ziel ist.

Ich würde mal vermuten, dass es dem TO eher um das Lostreten einer 
Diskussion geht... was hiermit gelungen ist.

von Michael W. (Gast)


Lesenswert?

Andreas B. schrieb:
> Man kann immer etwas besser machen (für einem selbst zumindest) als in
> kommerziellen Geräten.

... das würde ich (in dieser Generalität der Aussage!) STARK 
bezweifeln... ich zumindest kann's nicht, sorry. Ärgere mich schon lange 
über den hohen Bezinverbrauch meines Autos.

von Andreas B. (bitverdreher)


Lesenswert?

Michael W. schrieb:
> Ich würde mal vermuten, dass es dem TO eher um das Lostreten einer
> Dikussion geht...

Ich denke eher, es war der andere Thread, der vom müden Joe initiiert 
wurde.
Wenn man dann zufällig die Zutaten gerade in der Bastelkiste hat und es 
gerade weihnachtet, kann es ja schon losgehen. ;-)

von Michael W. (Gast)


Lesenswert?

Andreas B. schrieb:
> Michael W. schrieb:
>> Ich würde mal vermuten, dass es dem TO eher um das Lostreten einer
>> Dikussion geht...
>
> Ich denke eher, es war der andere Thread, der vom müden Joe initiiert
> wurde.
> Wenn man dann zufällig die Zutaten gerade in der Bastelkiste hat und es
> gerade weihnachtet, kann es ja schon losgehen. ;-)

... klar, das Ding war ja auch in 5 bis 6 Stunden fertig programmiert 
(OT). Wer's glaubt :-)

von Andreas B. (bitverdreher)


Lesenswert?

Michael W. schrieb:
> ... klar, das Ding war ja auch in 5 bis 6 Stunden fertig programmiert
> (OT). Wer's glaubt :-)
Oh, wenn einem der Ehrgeiz erst einmal gepackt hat.... Ich kann das 
nachvollziehen.

von Michael W. (Gast)


Lesenswert?

Andreas B. schrieb:
> Michael W. schrieb:
>> ... klar, das Ding war ja auch in 5 bis 6 Stunden fertig programmiert
>> (OT). Wer's glaubt :-)
> Oh, wenn einem der Ehrgeiz erst einmal gepackt hat.... Ich kann das
> nachvollziehen.

Na ja, ich hatte damals ca. 40 Stunden gebraucht, bis ich den 
Microtronic-Interpreter fertig hatte. Allerdings hat der Microtronic 
auch wesentlich mehr (und komplexere) Instruktionen.

von Ralph S. (jjflash)


Lesenswert?

Michael W. schrieb:
> Das ist mir natürlich auch klar - der Original CP1 hat 128 Addressen.
> Mit Speichererweiterung waren es 256. Wie beim Microtronic. Meine Frage
> war - du hast also schon bis 0-999 Addressen implementiert? Die OpCodes
> für Addressen sind alle 3stellig, insofern wäre es einfach möglich.

Nein habe ich nicht gemacht, und ich glaube auch, dass ich das nicht 
machen werde, auch wenn es nicht der große Aufwand wäre. Es ist alles 
nicht so sehr der Aufwand (sieht man mal vom Steckbrett ab, da hat mich 
das schon etwas Zeit gekostet). 999 Adressen zu dekodieren wäre 
eigentlich überhaupt kein Problem. Alle uint8_t ändern in uint9_t. 
Abfrage nicht nach größer als 255 sondern größer als 999.

Anstelle ATmega8 einen ATmega328 (der hat 2 kByte Ram) nehmen. Hier 
wären dann auch 1 kByte EEProm verfügbar, was für 4 Programme zum 
Speichern reichen würde. Irgendwo in meinen Sourcequellen hatte ich auch 
mal eine dynamische Speicherverwaltung für EEProm geschrieben gehabt, 
mit Dateilänge und Platzbedarf im EEProm als verkettete Liste. Dann 
wären mehr Programme speicherbar, weil ja nicht jedes den vollen 
Speicher auschöpft.

Im Moment läuft mein Aufbau auf dem Steckbrett, nur stimmt mein Timing 
nicht mehr (die eine Millisekunde), weil der TM1637 ein anderes Timing 
hat. Ich denke ich werde das über einen Timerinterrupt machen, dann 
brauche ich nicht wirklich "fummeln" dass die eine Millisekunde in etwa 
stimmt.

Machen könnte man vieles. Wenn ich mir meinen Aufbau so ansehe, ist das 
an sich viel zu "schön" um das wieder abzureisen und ich bin noch n 
bissi hin- und hergerissen, ob ich für so etwas tatsächlich eine Platine 
routen und noch "schlimmer" herstellen lassen soll. Irgendwie wäre es 
witzig das in der Schublade liegen zu haben.

Mal sehen...

von Ralph S. (jjflash)


Lesenswert?

Michael W. schrieb:
> ... klar, das Ding war ja auch in 5 bis 6 Stunden fertig programmiert
> (OT). Wer's glaubt :-)

Ich hatte 6 bis 8 Stunden geschrieben gehabt (in den Sourcen war ja 
schon das I/O Interface fertig, das mußte nur angepasst werden).

;-) jetzt sind es aber schon wieder ca. 6 Stunden für den Aufbau und das 
Ändern des I/O Interface auf TM1637, weil der, obwohl derselbe 
Hersteller wie TM1638, doch sehr anderst funktioniert.

von Andreas B. (bitverdreher)


Lesenswert?

Geh mal davon aus, daß er einen Großteil der SW schon für andere 
Projekte entwickelt hatte.
Das Nachdenken davor und die Recherche dürften in diesen 5-6h auch nicht 
drin sein. Schönrechnen tu ich mir meine Arbeitszeit für solche Projekte 
übrigens auch. ;-)

Edit:
Ralph S. schrieb:
> jetzt sind es aber schon wieder ca. 6 Stunden für den Aufbau
Und Schwuppdiwupp sind es schon 16h. ;-)

: Bearbeitet durch User
von Michael W. (Gast)


Lesenswert?

Ralph S. schrieb:
> tatsächlich eine Platine
> routen und noch "schlimmer" herstellen lassen soll. Irgendwie wäre es
> witzig das in der Schublade liegen zu haben.

Mach doch - ich würde in jedem Fall eine haben wollen von Dir. Aber 
bitte zusammengebaut; bin immer recht faul was das Zusammenbauen von 
Projekten anderer angeht. Meine Zeit benötigt ich für meine eigenen 
Projekte ;-)

von Andreas B. (bitverdreher)


Lesenswert?

Wenn Du es behalten willst hätte ich einen Vorschlag: Den Arduino mit 
Heißkleber hinten auf die Anzeigeplatine kleben und frei verdrahten. Das 
macht nicht viel Arbeit und bleibt so jahrzehntelang in der Schublade 
funktionsfähig.
Deine Nachkommen können dann raten was das mal für eine Bedeutung hatte.

von Schlaumaier (Gast)


Lesenswert?

Michael W. schrieb:
> Wer "arbeitet" mit den ganzen anderen Projekten hier? Auch keiner.

Da ich kein Geld verschwenden kann, habe ich noch nie ein Projekt 
gemacht das kein direkten Nutzen hat.  OK. Lebenswichtig ist keins. Aber 
alle Projekte haben einen Realen Nutzen.

Und ich denke das selbst meine Modellbauprojekte (mit Arduino für die 
Steuerungen und Beleuchtung) min. 10 Jahre in der Vitrine stehen dürfen.

Das aktuelle Projekt (weit Fortgeschrittene Planung) wird sogar direkt 
neben mein Bett liegen und im Schnitt 20 x am Tag benutzt werden.

von Michael W. (Gast)


Angehängte Dateien:

Lesenswert?

Schlaumaier schrieb:
> Michael W. schrieb:
>> Wer "arbeitet" mit den ganzen anderen Projekten hier? Auch keiner.
>
> Da ich kein Geld verschwenden kann, habe ich noch nie ein Projekt
> gemacht das kein direkten Nutzen hat.  OK. Lebenswichtig ist keins. Aber
> alle Projekte haben einen Realen Nutzen.
>
> Und ich denke das selbst meine Modellbauprojekte (mit Arduino für die
> Steuerungen und Beleuchtung) min. 10 Jahre in der Vitrine stehen dürfen.
>
> Das aktuelle Projekt (weit Fortgeschrittene Planung) wird sogar direkt
> neben mein Bett liegen und im Schnitt 20 x am Tag benutzt werden.

Du hast mein Kriterium für "Relevant" falsch verstanden. Es geht nicht 
darum ob Du ein Projekt, dass DU für DICH SELBST aufbaust, benutzt. Das 
wäre ja das mindeste bzw. reichlich bescheuert, wenn man Resourcen in 
etwas steckt, dass man dann nie benutzt. ES SEI DENN man hat einfach 
Spaß an dem Prozess und insbesondere dem Lernprozess, der beim Aufbau 
eines Projektes als Seiteneffekt abfällt, und dessen Wert sich monitär 
schlecht beziffern lässt.

Es geht daraum, ob das Projekt dass Du Dir aufbaust, in dieser Form 
nicht komerziell "besser, relevanter oder kostengünstiger", sprich 
rationaler, verfügbar ist auf dem Markt. Für den CP1 ist das nicht der 
Fall, insofern ist es relevant. Man kann es nicht kaufen in dieser Form, 
noch nicht einmal etwas Ähnliches.

Ich habe mir auch eine Alarmuhr aufgebaut, die ich jeden Tag 100x 
benutze (gucke drauf). Ist das Ding nun relevant? Nein. Ist es nicht.

https://blog.arduino.cc/2019/06/19/intuitive-arduino-clock-has-seven-alarms-and-three-led-displays/

von Schlaumaier (Gast)


Lesenswert?

Michael W. schrieb:
> Es geht daraum, ob das Projekt dass Du Dir aufbaust, in dieser Form
> nicht komerziell "besser, relevanter oder kostengünstiger", sprich
> rationaler, verfügbar ist auf dem Markt.

Mein aktuelles Projekt wird NIEMALS in irgendeiner ähnlichen Form auf 
den Markt kommen.

Was deine Aussage angeht. Etwas weiter oben habe ich den TO gefragt wo 
er das "China-Modul" her hat. Ich bin locker in der Lage dieses Modul 
nachzubauen. Aber der Kosten-/Nutzenfaktor geht weit über das Ziel 
hinaus.

Weshalb ich mir auch das Modul + 3 Modul ohne LED-Anzeige gekauft habe. 
Nur ist wie beim TO das Modul nur ein kleiner Teil des ganzen Projekt.

Ich mache nur die Platinen selbst die mir entweder zu teuer sind (ich 
kann's Preiswerter = nur Material) oder zu schwer zu beschaffen sind. 
Und die Platinen die ich brauche um die Module und Co. zusammen 
zuhalten. Meine wichtigster Footprint ist dabei der des Arudino-Nano. 
Für eine fertige 2 Euro Platine löte ich kein Chip auf eine Platine. ;)

Wobei mir persönlich die ganze Elektronik nur 30 % Spass macht. Viel 
mehr Spaß macht es, via Software das ganze so zu steuern das es für MICH 
Perfekt ist.

Kommerziell würde ich allein schon wegen der ganzen Rechtlichen 
Vorschriften NIEMALS eins meiner Teile verkaufen.

von Michael W. (Gast)


Lesenswert?

Schlaumaier schrieb:

> Ich mache nur die Platinen selbst die mir entweder zu teuer sind (ich
> kann's Preiswerter = nur Material) oder zu schwer zu beschaffen sind.
> Und die Platinen die ich brauche um die Module und Co. zusammen
> zuhalten. Meine wichtigster Footprint ist dabei der des Arudino-Nano.
> Für eine fertige 2 Euro Platine löte ich kein Chip auf eine Platine. ;)

Wage ich zu bezweifeln. Ich bekommen bei Seeed Studio 30 Platinen inkl. 
Shipping im 15x15cm Format, 2lagig, für 80 $... Das sind weniger als 2 $ 
per Platine wenn man Shipping abzieht.

> Kommerziell würde ich allein schon wegen der ganzen Rechtlichen
> Vorschriften NIEMALS eins meiner Teile verkaufen.

Sorry, Du hast es immer noch nicht verstanden. Um's Verkaufen gehts 
nicht. Sondern darum, ob Du etwas vergleichbares KAUFEN kannst.

von Schlaumaier (Gast)


Lesenswert?

Michael W. schrieb:
> Wage ich zu bezweifeln. Ich bekommen bei Seeed Studio 30 Platinen inkl.
> Shipping im 15x15cm Format, 2lagig, für 80 $... Das sind weniger als 2 $
> per Platine wenn man Shipping abzieht.

Das sind ja nach Kurs 160 Euro. Ich mache meine Platine !! für locker 
unter deine 2 Euro. Ich wage mal zu bezweifeln das dein SEEED dir 1 
einzelne kleine Platine macht. Und genau darum geht es. Um eine kleine 
Platine.

Das einzige mal wo ich 4 Platinen von gleichen Typ hergestellt habe, war 
die Platine 10 x 10 mm groß und eine Adapterplatine für ein 
Anschlusskabel eines Display. Die gab es mal fertig zu kaufen (Mouser 
hat sie sogar noch) aber da war der Aufwand etc. mir zu hoch.

Ich fertige die Platine erst wenn alles fertig ist. Dann mal eben 
beleuchten, 2 x baden und bohren. Das ganze dauert keine 1-2 Stunden je 
nachdem wie schnell ich arbeite. Dafür muss ich meine Platine nicht um 
den halben Planeten schicken  und 2 -4 Wochen drauf warten.

Aber das Thema habe ich schon in mehreren Threads hier diskutiert.  Und 
das ganze ich für mich eh nur ein Hobby wie Fotografieren. Ich mache es 
gern wenn ich Bock habe. Da kann es auch mal passieren das ich das ganze 
einige Jahre nicht anrühre.

von Michael W. (Gast)


Lesenswert?

Schlaumaier schrieb:
> Das sind ja nach Kurs 160 Euro. Ich mache meine Platine !! für locker
> unter deine 2 Euro. Ich wage mal zu bezweifeln das dein SEEED dir 1
> einzelne kleine Platine macht. Und genau darum geht es. Um eine kleine
> Platine.

Hmm... jetzt wird's etwas irrational.

OK... habe ich schon verstanden. Und finde ich auch sehr eindrucksvoll 
und super, wenn man das selber kann. Sinnvoll ist das heutzutage 
allerdings nicht mehr. Kannst Du VIAs, doppelseitig, etc.? Und wenn Du 
mal die Zeit berechnest, die Du alleine zum Löcherbohren per Hand 
aufwendest, oder die Kosten fürs Equipment und Chemikalien einpreist, 
kommst Du bestimmt auf mehr als 2 EUR... von der geringeren Komplexität 
solcher (einlagigen?) Platinen einmal abgesehen.

EDIT: ja, für eine einzelne Platine geht's nicht. 10 mindestens. Und 
davon wandern dann 8 oder so in die Tonne - manchmal mache ich ein paar 
Versionen für Bekannte / Freunde. Es stimmt, das Services wie OshPark 
WESENTLICH teuerer sind. Da müssen es mindestens 3 Platinen sein. Zum 
Preis von 30 bei Seeed :-)

Mich würde ja interessieren, was die komplexeste selbstgemachte Platine 
bei Dir ist. Wieviele Vias, wieviele Bohrungen, Abmessungen, Anzahl 
Verbindungen? Doppelseitig?

von Schlaumaier (Gast)


Lesenswert?

Michael W. schrieb:
> Und wenn Du
> mal die Zeit berechnest, die Du alleine zum Löcherbohren per Hand
> aufwendest, oder die Kosten fürs Equipment und Chemikalien einpreist,
> kommst Du bestimmt auf mehr als 2 EUR

hm. Nö. Ich habe max. 100 Löcher in einer Platine bisher gehabt. Der 
Rest ist SMD. Die Chemikalien werden ja nicht schlecht wenn man mal eine 
Platine badet. Das Zeug wird zwar irgendwann gesättigt aber das sind 
viele Platinen. Ich bringe alle 2-3 Jahre 2 Literflaschen mit Zeug zum 
Sondermüllauto. Das ist alles. Und das sind dann schon einiges an 
Platinen.

Kosten fürs Equipment : OK. Die Anschaffung für mein 20 Jahre alten 
Dremel waren schon hoch. Aber was der alles leisten musste (nicht nur 
Elektonik) ist enorm.  Und wenn mir kein Bohrer abbricht sind die Kosten 
auch überschaubar (3 Stück = 5 Euro im Baumarkt).

Die Kosten für die Chemie. Alle paar Jahre mal ein Starterset von 
Reichelt für ca. 10-15 Euro.

Und ZEIT: *O.K.* bei den Faktor hast du völlig recht. Aber, das ist 
HOBBY und Hobby ist halt die schönste Art seine Zeit zu verschwenden. ;)

Ansonsten läge ich in der Zeit vermutlich vor den Fernseher und würde 
PAY-TV gucken. ;) oder mein Geld bei "Freizeitaktivitäten" verschwenden, 
die z.T. nicht gut für meine Gesundheit sind, lt. Aussage der Regierung 
;)

von Michael W. (Gast)


Angehängte Dateien:

Lesenswert?

Falls es Euch interessiert - hier ist Matze sein Ding.

https://www.rigert.com/ee-forum/viewtopic.php?f=35&p=16040#p16040

Er hat damals (vorletztes Jahr?) den ersten CP1-Atmega Emulator auf die 
Beine gestellt.

Könnte mir gut vorstellen, dass dieser Beitrag jetzt wieder ignoriert 
wird, aber so ist es hier nun einmal :D

von Michael W. (Gast)


Lesenswert?

PS Wer Matze aus dem Baukastenforum nicht kennt muss sich mal durch 
Querlesen schlau machen. Der spielt MINDESTENS alleroberste Erste 
Bundesliga.

von Ralph S. (jjflash)


Angehängte Dateien:

Lesenswert?

"... ich habe fertig, ist wie Flasche leer"

Immer dann wenn man es nicht gebrauchen kann, "spinnt" mein Hauptrechner 
so dass ich meinen Schaltplan jetzt zig mal gezeichnet habe. Aber: was 
lange währt und nervig ist wird endlich fertig.

Mein kleines Miniprojekt mit dem Kosmos CP1 (auf Steckbrett).

Als IC's (wie oben erwähnt) werden lediglich ein ATmega8  88  168 / 
328 und ein Anzeigen- und Tastentreiberbaustein TM1637 (gibts für 30 ct. 
beim Chinesen des Vertrauens).

Prinzipiell war es das schon (wie man auf dem Schaltplan sehen kann). 
Damit es wirklich minimalistisch ist, wurde dem ATmega sogar ein Quarz 
verweigert und er läuft mit 8 MHz internem Takt. Zum ersten mal habe ich 
einen OPTI-Bootloader ohne Quarz am laufen, AVRDUDE kommt jedoch sehr 
gut damit zurecht:
1
avrdude -c arduino -p atmega8 -P /dev/ttyUSB0 -b 38400 B3 -V -U flash:w:kosmos_cp1_v31.hex

Die 10 Zifferntasten sind doppelt belegt, d.h. zum Anwählen einer 
Funktionstaste muß die Shifttaste gedrückt werden.

Im Hauptprogramm kann die maximale Anzahl der Speicherplätze angegeben 
werden, derzeit sind 128 eingestellt. Das hat den Grund (mehr wäre 
möglich) damit im internen EEProm 2 Programme gespeichert werden können 
(zum Original abweichende Funktion, da keiner mehr mit Kasetten als 
Speichermedium mehr arbeitet).

Genau 2 Pins sind noch verfügbar, hier wäre denkbar, ein I2C EEProm 
anzuschließen, damit mehr Programme speicherbar sind.

Ein Video vom Ganzen gibt es auch (sorry der schlechten Qualität wegen):

https://www.youtube.com/watch?v=RQkwm0jpxF0

Was man damit anstellen kann: das darf jeder selbst herausfinden. Das 
originale Manual von Kosmos war - damals typisch - didaktisch gut 
verfasst und hat wirklich halbwegs erläutert, wie ein Computer 
funktioniert. Das hat erstaunlicherweise heute noch Gültigkeit.

Für Spielfreudige liefert dieses Miniprojekt eine gute Basis, die 
Mnemonic des CP1 nach Herzenslust zu erweitern oder zu verändern. Au0er 
einem rudimentären ADD und SUB und bedingte Sprungbefehle ist da nichts 
vorhanden. Hier kann jeder nach gutdünken bspw. inc, dec, mul, div oder 
ähnliches hinzufügen.

Einzig die Konstanten für die max. Anzahl Opcodes muß hier verändert 
werden und kann dann beim Maschineninterpreter in "cpu_run" verändert 
werden.

Ich habe jetzt ein Weile damit gespielt und war in Nostalgie verfallen 
und ich werde tatsächlich mich dran setzen und eine Platine routen.

Viel Spaß denjenigen, die das nachbauen möchten,

JJ

von O. R. (oscherischery)


Lesenswert?

Schlaumaier schrieb:

> Da ich kein Geld verschwenden kann, habe ich noch nie ein Projekt
> gemacht das kein direkten Nutzen hat.  OK. Lebenswichtig ist keins. Aber
> alle Projekte haben einen Realen Nutzen.

Nun, da wird es mit den meisten Hobbys eng. Wer den ganzen Vormittag auf 
dem Rasen steht und kleine Bälle durch die Gegend schlägt schafft nichts 
produktives, wer auf Berge klettert oder mit dem Fahrrad runterperzt 
auch nicht. Und den halben Tag eine Schnur ins Wasser hängen um einen 
Fisch rauszuholen? Bei meinem Stundenlohn kann ich besser die Metro 
leerkaufen. Aber irgendwie ist der Sinn eines Hobbys ein anderer, oder?

Deshalb ist dieser Kosmos auch langweilig sobald er läuft. Der Weg ist 
das Ziel, d.h. das Austüfteln und Aufbauen. Nicht das Haben.

von Andreas B. (bitverdreher)


Lesenswert?

O. R. schrieb:
> Deshalb ist dieser Kosmos auch langweilig sobald er läuft. Der Weg ist
> das Ziel, d.h. das Austüfteln und Aufbauen. Nicht das Haben.
Für den, der es gemacht hat, ja.
Für den, der damit lernen will, fängt es damit erst an.

von Ralph S. (jjflash)


Lesenswert?

ich hätte nicht gedacht, dass so ein kleines Spaßprojekt eine Diskussion 
eröffnet(irgendwo oben hat irgendjemand geschrieben, dass ich wohl eine 
Diskussion "lostreten" wollte, dem ist nicht so).

Über den Sinn  Unsinn oder Relevanz  Nichtrelevanz muß und sollte man 
sich hier nicht streiten. Natürlich ist der Weg das Ziel und das 
Schwelgen in Nostalgie mit den Gedanken, was man früher damit hätte 
machen können. Auch die Gedankengänge die man hat, wie man das vllt. 
umbauen könnte. Oder eben doch eine Schaltung mit 8-stelliger Anzeige, 
damit man sehen kann, auf welche Adresse man gerade schreibt. Terminal 
für verbesserte Eingabe. ;-) sogar an einen Minimalassembler (mit vllt. 
veränderter und gängigerer Mnemonic um das dann auf den CP1 Emulator zu 
schieben).

Viele viele Möglichkeiten, aber wie gesagt, darüber was 
besser/schlechter ist und Sinn und Unsinn zu debatieren bei einem 
Hobby...

Im Gegensatz zum Vorredner mache ich viele Projekte die keine Relevanz 
haben oder unnötig sind. Bsp.: Ich habe einen sehr guten PADAUK 
Programmer mit allem was man sich wünscht für einen Programmer. Dennoch 
hab ich es mir in den Kopf gesetzt mit einem anderen Controller einen 
weiteren Programmer zu erstellen. Warum nur, wenn man doch mit einem 
Programmer wunschlos glücklich ist? Vllt. nur deshalb, weil andere 
diesen "wunschlos glücklich" Programmer nicht aufbauen können oder 
keinen Weg finden an einen Programmer erschwinglich zu kommen. 
Nützlicher wäre es hier, weiter die Padauk Controller zu evaluieren und 
was man damit anstellen kann.

Jedes Projekt auf µC.net sollte die Leute auf Ideen bringen etwas zu 
bewerkstelligen, zu lernen .... oder auch nur mit offenem Mund zu 
staunen.

von Michael W. (Gast)


Lesenswert?

Ralph S. schrieb:
> ich hätte nicht gedacht, dass so ein kleines Spaßprojekt eine Diskussion
> eröffnet(irgendwo oben hat irgendjemand geschrieben, dass ich wohl eine
> Diskussion "lostreten" wollte, dem ist nicht so).
>
> Über den Sinn  Unsinn oder Relevanz  Nichtrelevanz muß und sollte man
> sich hier nicht streiten. Natürlich ist der Weg das Ziel

Prima, dann sind wir uns ja einig :-) Schönes Projekt, habe ich von 
Anfang an gesagt.

Sehe ich anders, da DU doch derjenige warst, der immer gesagt hat - ach 
Mensch, was mach ich jetzt damit? Soll ich das wirklich machen? Soll ich 
jetzt ein PCB machen oder nicht? Und dann kamen andere die sagten wie 
viel Resourcenverschwendung soetwas ist und so weiter.

Das verstehe ich entweder als a) bitte um positives Reinforcement (bitte 
bitte, mache es doch! OK - hast Du von mir bekommen, und ich möchte 
immer noch eine PCB-Version bitte), oder als b) Aufforderung zur 
Diskussion.

NOCH VIEL SCHLIMMER wäre natürlich, wenn hier inzwischen einige 
Mitglieder im Forum der Meinung sind, sie müssten ihr Projekt vor den 
Allmächtigen Almighty Oberste Europa-Liga-Spielern proaktiv verteidigen, 
bevor sie verbale Prügel beziehen...

Sorry wenn ich das missverstanden habe.

Was mir an der "Diskussionskultur" hier überhaupt nicht gefällt, ist:
- Projekte die sowas ähnliches schon früher gemacht werden, werden 
einfach ignoriert und nicht mit einer Zeile kommentiert
- alle haben immer was rumzumeckern - macht doch selbst sowas Tolles wie 
der OT, anstatt immer Rumzumosern!
- Kackordnung - ist ja toll, wenn es hier so super Entwickler gibt - 
dann verwendet Euer Talent doch bitte darauf, andere (noch) nicht so 
tolle Entwickler konstruktiv und freundlich zu unterweisen!

> Jedes Projekt auf µC.net sollte die Leute auf Ideen bringen etwas zu
> bewerkstelligen, zu lernen .... oder auch nur mit offenem Mund zu
> staunen.

Ein schönes Schlusswort!

von Michael W. (Gast)


Lesenswert?

Schlaumaier schrieb:
> Kommerziell würde ich allein schon wegen der ganzen Rechtlichen
> Vorschriften NIEMALS eins meiner Teile verkaufen.

Mein Gott... wenn Steve Jobs damals auf die Bänker und Paragraphenfurzer 
einen gelassen hätte, hätten wir jetzt wohl kein IPhone... bzw. Apple 
wäre niemals aus der Garage rausgekommen. (Falls sie denn überhaupt 
angefangen hätten in der Garage).

Das ist GENAU das Problem in Deutschland, und der Grund, warum 
Deutschland technologisch den Anschluss verloren hat.

von Michael W. (Gast)


Lesenswert?

O. R. schrieb:
> Bei meinem Stundenlohn kann ich besser die Metro
> leerkaufen.

Na, super - wieviel verdienst Du denn pro Stunde. Nur für den Fall dass 
Du noch mehr Diskussion und Bestätigung benötigst? Können wir gerne 
drüber reden.

von Schlaumaier (Gast)


Lesenswert?

Michael W. schrieb:
> Mein Gott... wenn Steve Jobs damals auf die Bänker und Paragraphenfurzer
> einen gelassen hätte, hätten wir jetzt wohl kein IPhone... bzw. Apple
> wäre niemals aus der Garage rausgekommen. (Falls sie denn überhaupt
> angefangen hätten in der Garage).
>
> Das ist GENAU das Problem in Deutschland, und der Grund, warum
> Deutschland technologisch den Anschluss verloren hat.

Was bei einen IPhone nicht schlecht gewesen wäre ;) Davon abgesehen, wer 
die Geschichte von Apple kennt weiß das auch Apple an "Bänker und 
Paragraphenfurzer" fast verreckt wäre.

Und diese "Bänker und Paragraphenfurzer" sind genau die Leute die nix 
auf die Reihe bekommen aber anderen Leuten sagen wollen, wie sie was 
machen müssen. Der Grund ist, die Neuheit verschwindet in den 
Schubladen.

Ich will nicht wirklich wissen wie viele Geniale Projekte Typen wie ich 
zu Hause nutzen, wie aber wegen den ganze Rechtlichen Mist niemals die 
Wohnung verlassen werden.

von Andreas B. (bitverdreher)


Lesenswert?

Michael W. schrieb:
> Und dann kamen andere die sagten wie
> viel Resourcenverschwendung soetwas ist und so weiter.
Hmm, also ich sehe hier keinen einzigen Beitrag, der in diese Richtung 
zielt.

von Ralph S. (jjflash)


Angehängte Dateien:

Lesenswert?

Jetzt habe ich doch eine Platine geroutet (und die sogar schon 
weggeschickt,bin ich mal gespannt, wie lange das dauert bist die da 
ist).

Damit auf der Hardware etwas Spielraum zum Spielen (Achtung Wortwitz ;-) 
habe ich die Schaltung etwas erweitert:

- Es kann ein CH340G als USB2UART Bridge bestückt werden und somit wird 
kein externer Adapter benötigt.

- USB-Buchse dient zur Stromversorgung auch dann, wenn kein CH340G 
bestückt ist.

- Ein Quarzsockel kann bestückt werden, wenn das gewollt ist. In diesem 
Falle verhält sich die Platine dann wie ein China-Arduino Clone (je nach 
bestücktem Controller)

- Auf Port 1 sind die ISP-Pins um den Controller das erste mal zu 
flashen

- Es kann ein I2C EEProm bestückt werden, hierzu müssen dann 2 
Lötbrücken gelötet werden. Bei Betrieb mit EEProm darf kein Quarz 
verwendet werden (das EEProm verwendet die Leitungen an denen auch der 
Quarz angeschlossen ist).

Somit kann die Hardware, wenn man des CP1 überdrüssig ist, als einfaches 
AVR-Experimentierboard mit 7-Segmentanzeige, Tasten und 
Leuchtdiodenreihe (oder auch als Arduino... was ich nicht machen werde) 
verwendet werden.

Im Kopf habe ich ein paar Dinge, den CP1-Clone nach eigenem Gusto zu 
erweitern, somit hab ich dann wenn Langeweile aufkommt, etwas zum 
Werkeln. Aus diesem Grunde wird das dann auch mit einem ATmega328 
bestückt werden.

von Michael W. (Gast)


Lesenswert?

Ralph S. schrieb:
> Jetzt habe ich doch eine Platine geroutet (und die sogar schon
> weggeschickt,bin ich mal gespannt, wie lange das dauert bist die da
> ist).

Yippee!! Ich melde schon einmal Interesse an einem PCB an! Super Sache, 
vielen Dank für die Arbeit!

von Ralph S. (jjflash)


Angehängte Dateien:

Lesenswert?

Ich habe ein bisschen an dem Emulator gespielt (nachdem ich beim 
Padauk-Programmer nur gaaaaanz langsam vorwärts komme). Der CP1-Clone 
hat ein Terminalprogramm bekommen und ich habe mir erlaubt, die 
originale Mnemonic zu ändern (die natürlich kompatibel zu originalen CP1 
ist).

Aus Copyrightgründen hat das Zilog ja auch mal mit ihrem Z80 so gemacht 
gehabt. Die waren Softwarekompatibel (die CPU nicht Pinkompatibel) mit 
auch veränderter Mnemonic. Lustigerweise (obwohl schon lange kein 
Intel-Fan mehr) bin ich von der Mnemonic Intel-Afine. Von 8086 bis 
80386. MCS-48 und MCS-51.

Hm, von daher... kann jeder die Mnemonic ändern wie er mag.

Der Nachteil des Terminal ist: Es passt nicht mehr in einen ATmega8 
hinein. Die Dateien sind etwas "aufgeräumt", in cp1_config.h kann 
eingestellt werden, ob es das Terminal geben soll oder nicht.

Was das Terminal kann?

Es kann einen Maschinenbefehl mit ihrer Mnemonic eingegeben werden, 
z.Bsp.:

mvi a,90

geht dann.

Es kann die aktuelle Speicheradresse gesetzt werden und es kann der 
Speicherinhalt disassembliert werden.

Meine Mnemonic lautet (vllt. hat da ja jemand andere Vorschläge) ist im 
Anhang zu sehen.

Mal sehen, wann ich auf den CP1 wieder Lust habe, ein paar Ideen habe 
ich noch, um daraus (vllt. auch für heute) etwas brauchbares zu machen.

Im Moment läuft es mit einem ATmega168, schlicht deshalb weil ich mir 
einen 328er verfused habe (nicht mal weiß warum) und ich im Moment keine 
Möglichkeit habe, den zurück zu setzen. Momentan benötigt das Programm 
10396 Bytes.

von Ralph S. (jjflash)


Lesenswert?

Vergessen habe:

Das Terminal wird auf dem CP1 aktiviert mit:

7 - Run

(als drittes Festprogramm nach dem Selbsttest und dem Reaktionsspiel)

von O. R. (oscherischery)


Lesenswert?

Michael W. schrieb:
> O. R. schrieb:
>> Bei meinem Stundenlohn kann ich besser die Metro
>> leerkaufen.
>
> Na, super - wieviel verdienst Du denn pro Stunde. Nur für den Fall dass
> Du noch mehr Diskussion und Bestätigung benötigst? Können wir gerne
> drüber reden.

Herrlich, was man mit einem aus dem Zusammenhang gerissenen Zitat doch 
für Verwirrung stiften kann! Der komplette Text, in dem es um die 
Befürwortung des Hobbys als Freizeitbeschäftigung ohne Fokus auf 
wirtschaftliche Optimierung ging, liest sich doch ganz anders:

"Und den halben Tag eine Schnur ins Wasser hängen um einen
Fisch rauszuholen? Bei meinem Stundenlohn kann ich besser die Metro
leerkaufen. Aber irgendwie ist der Sinn eines Hobbys ein anderer, oder?"

von Michael W. (Gast)


Lesenswert?

O. R. schrieb:
> "Und den halben Tag eine Schnur ins Wasser hängen um einen
> Fisch rauszuholen? Bei meinem Stundenlohn kann ich besser die Metro
> leerkaufen. Aber irgendwie ist der Sinn eines Hobbys ein anderer, oder?"

O. R. schrieb:
> wirtschaftliche Optimierung ging, liest sich doch ganz anders:

Und die Aussage kann man nur mit Referenz auf Deinen astronomisch hohen 
Stundenlohn machen? Klingt für mich nach Prozerei.

von Michael W. (Gast)


Angehängte Dateien:

Lesenswert?

Ralph S. schrieb:
> Es kann einen Maschinenbefehl mit ihrer Mnemonic eingegeben werden,

Sehr schön. Obwohl die Eingabe von Opcodes bzw. direktes Arbeiten mit 
Maschinencode ja eigentlich auch Teil der Experience ist ;-) Aber sehr 
schön dass es die Möglichkeit gibt.

Mein Graymark 809 CPU Trainer (ein 8085) hat auch so eine 
Terminal-Schnittstelle.

von Soul E. (Gast)


Lesenswert?

Michael W. schrieb:

> O. R. schrieb:
>> wirtschaftliche Optimierung ging, liest sich doch ganz anders:
>
> Und die Aussage kann man nur mit Referenz auf Deinen astronomisch hohen
> Stundenlohn machen? Klingt für mich nach Prozerei.

Naja, wieviele Stunden müsstest DU arbeiten gehen um Dir einen Fisch 
leisten zu können, für den Du sonst einen Nachmittag angeln gehen 
würdest? Ich glaube, so hoch braucht der Stundenlohn nicht zu sein um 
dieses Hobby aus rein ökonomischer Sicht unwirtschaftlich zu machen. Von 
dem, was so mancher dann noch in seine Ausrüstung investiert wollen wir 
gar nicht sprechen.

Und das gilt schon irgendwie für die meisten Hobbys. Man macht es aus 
Freude daran, nicht um Geld zu sparen.

von Ralph S. (jjflash)


Lesenswert?

Was für eine Diskussion hier ! Ehrlich, ich schüttel den Kopf !

Im Moment bin ich an meinem PFS154 Programmer, auch wenn der CP1-Clone 
(heftig) gewachsen ist. Er hat jetzt 65 Opcodes und einen davon habe ich 
"int" genannt. Deshalb, damit ähnlich dem Vorgehen wie damals auf 
DOS-Maschinen, wo ein "int" auf Maschinenebene ein Bios-Call war (es 
wurde damals "Softwareinterrupt" genannt auf dem CP1-Clone Funktionen 
integriert sein können, die dann mittels diesem "int" aufrufbar sind.

Aber wie gesagt, im Moment bin ich an meinem PFS154 dran

von Michael W. (Gast)


Lesenswert?

Ralph S. schrieb:
> Was für eine Diskussion hier ! Ehrlich, ich schüttel den Kopf !
>
> Im Moment bin ich an meinem PFS154 Programmer, auch wenn der CP1-Clone
> (heftig) gewachsen ist. Er hat jetzt 65 Opcodes und einen davon habe ich
> "int" genannt. Deshalb, damit ähnlich dem Vorgehen wie damals auf
> DOS-Maschinen, wo ein "int" auf Maschinenebene ein Bios-Call war (es
> wurde damals "Softwareinterrupt" genannt auf dem CP1-Clone Funktionen
> integriert sein können, die dann mittels diesem "int" aufrufbar sind.
>
> Aber wie gesagt, im Moment bin ich an meinem PFS154 dran

Gute Idee. Leider ist das im Microtronic nicht möglich, da alle 
möglichen Opcodes schon belegt sind.

von Ralph S. (jjflash)


Lesenswert?

Für die nächsten Tage: Ciao

Irgendwann mach ich vllt. mal mit dem CP1-Clone weiter.

von reiche Eltern, Verwandte, Geheimdienst (Gast)


Lesenswert?

Michael W. schrieb:
> bzw. Apple
> wäre niemals aus der Garage rausgekommen.

waren sie auch nie drin. Das hat der andere Steve selbst erzählt. Das 
Zeug kam von HP und wurde da nur zwischengelagert.

Und die Entstehungsgeschichten von  google, facebook, microsoft, ... - 
sind genauso Blödsinn.

Beitrag #6540138 wurde vom Autor gelöscht.
von Michael W. (Gast)


Lesenswert?

Soul E. schrieb:
> Naja, wieviele Stunden müsstest DU arbeiten gehen um Dir einen Fisch
> leisten zu können,

Ich ess' gar kein Fisch. Zu viel Quecksilber und Schwermetalle gehen ins 
Gehirn, da habe ich schon vom Löten genug intus.

von Der müde Joe (Gast)


Lesenswert?

Ralph schrieb:

"Natürlich kann man das alles um den CP1 erweitern, nur dann ist es kein 
CP1 mehr."

Hallo, Ralph.
Ich stimme dir zu. Aber ich denke auch, dass eine gewisse Evolution 
erlaubt ist. Schönes Beispiel: Die Anzeige der Adresse. Oder die 
Erweiterung um den OR-Befehl.

Darum denke ich, die Erweiterung sollte ein Superset des originären CP1 
sein. Das heißt, das neue Gerät funktioniert genauso wie der alte CP1, 
plus die Erweiterungen. So kann die alte Anleitung verwendet werden. Das 
macht Spaß! :-)

von Michael W. (Gast)


Lesenswert?

Michael W. schrieb:
> Das Zauberwort heißt existierende Software,
> Anleitungsbücher & Elektronik-Experimente! Diese sind durchaus auch
> heute noch didaktisch empfehlenswert, für Einsteiger.

Ralph, hast Du schon einmal versucht, Experimente aus dem Anleitungsbuch 
anzuschließen? Ich hatte beim Microtronic-Emulator ein kleineres Problem 
mit zusätzlichen erforderlichen Pulldowns:

https://youtu.be/JfIkLdMjFq4

Zum Glück haben meine Projekt-Partner im "Microtronic 2nd Generation" 
Sister-Projekt (Frank und Manfred) das richtig gemacht, und die 
Eingangs/ Ausgangsstufen der GPIOs wie im Original nachgebaut, damit die 
Experimente maximal elektrisch kompatibel sind. Ich wollte mir 
allerdings die Transistoren sparen. Der CP1 hat sowas allerdings nicht. 
Da gehen die Ports direkt auf den Chip, richtig?

von dummer Unwissender (Gast)


Angehängte Dateien:

Lesenswert?

Wie man im Originalschaltplan sehen kann, geht CP1 - Port1 direkt zum 
8049 Controller, Port2 zum I/O Baustein 8155 (hier dann PortB).

Scheinbar wurde der verfügbarer Speicher im 8049 derart knapp, dass 
Port2 des CP1, jetzt nicht zu verwechseln mit Port2 / 8049, nur als 
Ausgang konfiguriert wurde und somit nur zwischen 1 und schaltet.

Port1 des 8049 ist ähnlich dem eines MCS-51 und kennt nicht wie heutige 
Controller so etwas wie ein "Datenrichtungsregister". Will man dort von 
einem Port lesen, ist zuvor der Ausgang auf 1 zu legen um dann den Pin 
abzufragen, ob dieser, obwohl man den zuvor auf 1 gesetzt hatte, nun 1 
oder 0 ist. Ein 3-state Modus gibt es auf Port1 und 2 des CP1 nicht.
Die am Port1 angeschlossene Elektronik muß die Leitung auf 0 ziehen.
Das erreicht man mit den eingebauten Pullup-Widerständen gut. Als 
Ausgang verschaltet müßte man jetzt einmal nachsehen, wieviel Strom bei 
jeweils 0/1 ein ATmega aufnehmen, bzw. liefern kann und wieviel Strom 
ein 8049 bzw. ein 8155 kann.

Allerdings glaube ich, dass ein AVR das alles so auch kann.

von Michael W. (Gast)


Lesenswert?

dummer Unwissender schrieb:
> Ein 3-state Modus gibt es auf Port1 und 2 des CP1 nicht.
> Die am Port1 angeschlossene Elektronik muß die Leitung auf 0 ziehen.
> Das erreicht man mit den eingebauten Pullup-Widerständen gut. Als
> Ausgang verschaltet müßte man jetzt einmal nachsehen, wieviel Strom bei
> jeweils 0/1 ein ATmega aufnehmen, bzw. liefern kann und wieviel Strom
> ein 8049 bzw. ein 8155 kann.

Du meinst, diese Pullup-Widerstände sind im 8049 "intern"? In der 
CP1-Schaltung kann ich sie nicht entdecken. Dass scheint also genau wie 
der interne Pullup im ATMega / AVR zu sein.

Und in der Tat - wenn man sich die Schaltungen im CP1-Anleitungsbuch 
ansieht, z.B. S. 84, sieht man, dass ein Taster an Port1/1 einfach durch 
Verbinden auf GND (-) den Kontakt herstellt. Also sind die Eingänge 
elektrisch "low active". Das macht es natürlich einfach.

Beim Microtronic sind die Eingänge leider "high active", und daher sind 
die internen AVR-Pullups nutzlos, und man braucht den normalen 
"pinMode(INPUT)" statt "pinMode(INPUT_PULLUP)". Und das erfordert dann 
Extra-Pulldown-Widerstände. Andernfalls gibt es "stuck bits", wie in 
meinem Video gezeigt.

Gut, dass das Problem für einen CP1-ATmega / AVR-Emulator nicht 
auftritt, und dass man einfach die internen Pullups nehmen kann! Das 
macht es einfacher.

Ja, was Ausgangsleistung der Ports angeht - alle Schaltungen im 
CP1-Anleitungsbuch, die was treiben, haben einen Transistor in der 
Schaltung.

von Soul E. (Gast)


Angehängte Dateien:

Lesenswert?

Michael W. schrieb:

> Du meinst, diese Pullup-Widerstände sind im 8049 "intern"? In der
> CP1-Schaltung kann ich sie nicht entdecken. Dass scheint also genau wie
> der interne Pullup im ATMega / AVR zu sein.

Das ist wie beim 8051. Intern ein Pullup (Stromquelle) nach VDD, und ein 
MOSFET der nach Masse schaltet. Zurückgelesen wird direkt am Pin. Um den 
Pin als Eingang zu nutzen setzt man ihn auf Output High (MOSFET aus) und 
übersteuert den Pullup.


> Gut, dass das Problem für einen CP1-ATmega / AVR-Emulator nicht
> auftritt, und dass man einfach die internen Pullups nehmen kann! Das
> macht es einfacher.

Da erreichst Du das gleiche Verhalten, wenn Du den internen Pullup 
einschaltest und nur den Low-Pegel aktiv treibst. D.h. Pin auf Output 
Low für Low und auf Input (mit Pullup) für High.

von Michael W. (Gast)


Angehängte Dateien:

Lesenswert?

Soul E. schrieb:
> Da erreichst Du das gleiche Verhalten, wenn Du den internen Pullup
> einschaltest und nur den Low-Pegel aktiv treibst. D.h. Pin auf Output
> Low für Low und auf Input (mit Pullup) für High.

Huch? Du sagst also, dass man einen positiven (high aktiven) Eingang am 
AVR emulieren kann, der sich wie folgende Schaltung verhält (Anhang)? 
Wie konfiguriere ich das?

Wohl gemerkt, nur mir Taster / Schalter und VCC-Verbindung dann. Der 
Schalter /Taster stellt also direkt eine Verbindung vom Pin zu VCC her.
Und das OHNE extra Pulldown?? Dabei ist natürlich wichtig dass, wenn ich 
den Taster loslasse, der Eingang sofort wieder auf 0  GND  Low geht 
(und nicht 5 Sekunden dafür braucht, und zwischen durch sogar 
"undefiniert" hin- und herschwingt, wie in meinem Video gezeigt).

Ich muss sagen, es würde mich SEHR überraschen, wenn man mit dem AVR 
einen internen Pulldown-Resistor konfigurieren könnte. Habe ich noch nie 
gehört. Pullup, ja. Pulldown ist immer extern. Oder spinne ich jetzt, 
oder habe was nicht richtig verstanden?

von Soul E. (Gast)


Lesenswert?

Wieso high-aktiv? Der Eingang eines 8039 ist low-aktiv, siehe Anhang 
https://www.mikrocontroller.net/attachment/488147/P1.PNG . Widerstand 
nach Plus, Transistor nach Masse. Dies sollte mit einem AVR emuliert 
werden, was mit internem Pullup und simuliertem open-drain möglich wäre.

Ein high-aktiver Eingang bräuchte einen Pulldown, also einen Widerstand 
gegen Masse und Transistor nach VDD. Den High-Pegel könnte man durch 
Output High darstellen, der Lowpegel erfordert aber einen externen 
Widerstand (und Pin auf Eingang).

von Michael W. (Gast)


Lesenswert?

Soul E. schrieb:
> Wieso high-aktiv? Der Eingang eines 8039 ist low-aktiv, siehe Anhang
> https://www.mikrocontroller.net/attachment/488147/P1.PNG . Widerstand
> nach Plus, Transistor nach Masse. Dies sollte mit einem AVR emuliert
> werden, was mit internem Pullup und simuliertem open-drain möglich wäre.
>
> Ein high-aktiver Eingang bräuchte einen Pulldown, also einen Widerstand
> gegen Masse und Transistor nach VDD. Den High-Pegel könnte man durch
> Output High darstellen, der Lowpegel erfordert aber einen externen
> Widerstand (und Pin auf Eingang).

Genau das habe ich doch oben geschrieben. Und sogar aufgemalt. Ich 
glaube, Du hast meine Beiträge nicht richtig gelesen... bzw. nich 
verstanden, was ich hier gefragt bzw. diskutieren wollte.

Oder ich habe Deinen Beitrag nicht verstande. ALSO - AVR kann nur 
Low-Aktiv mit internem Pullup. Dann sind die Logik-Level also 
invertiert. Beim Microtronic brauchte ich High-Aktiv - das geht nur mir 
externem Pulldown. Bis Du sagtest, dass kann man auch irgendwie mit 
internem AVR-Pullup / Down machen, was wohl nicht stimmt. DARUM ging es.

Ich sagte - SCHÖN, dass es beim CP1 Emulator low-aktiv ist. Daa ist 
EINFACHER in der Realisierung mit einem AVR dann als beim 
Microtronic-Emulator, weil man die internen AVR Pullups verwenden kann. 
Klar jetzt?

von Soul E. (Gast)


Lesenswert?

Michael W. schrieb:

> (...) Bis Du sagtest, dass kann man auch irgendwie mit
> internem AVR-Pullup / Down machen, was wohl nicht stimmt. DARUM ging es.

Mit dem AVR und dessen internem Pullup kann man das Verhalten des Port 1 
eines i8039 emulieren. Darum ging es.

Mit dem AVR kann man ohne Zusatzbeschaltung keine Open Source / 
Pulldown-Konfiguration bauen. So etwas habe ich nie behauptet und es ist 
aus https://www.mikrocontroller.net/attachment/488147/P1.PNG auch nicht 
herauszulesen.

> Ich sagte - SCHÖN, dass es beim CP1 Emulator low-aktiv ist. Daa ist
> EINFACHER in der Realisierung mit einem AVR dann als beim
> Microtronic-Emulator, weil man die internen AVR Pullups verwenden kann.
> Klar jetzt?

Da sind wir uns einig.

von Michael W. (Gast)


Lesenswert?

Soul E. schrieb:
> Mit dem AVR kann man ohne Zusatzbeschaltung keine Open Source /
> Pulldown-Konfiguration bauen. So etwas habe ich nie behauptet und es ist
> aus https://www.mikrocontroller.net/attachment/488147/P1.PNG auch nicht
> herauszulesen.
>
>> Ich sagte - SCHÖN, dass es beim CP1 Emulator low-aktiv ist. Daa ist
>> EINFACHER in der Realisierung mit einem AVR dann als beim
>> Microtronic-Emulator, weil man die internen AVR Pullups verwenden kann.
>> Klar jetzt?
>
> Da sind wir uns einig.

Prima, dann ist es jetzt klar.

von Michael W. (Gast)


Lesenswert?

Der müde Joe schrieb:

> Darum denke ich, die Erweiterung sollte ein Superset des originären CP1
> sein.

Na das eine Erweiterung keine Untermenge darstellt, ist irgendwie im 
Namen schon drin, oder? :D

von Michael W. (Gast)


Lesenswert?

Soul E. schrieb:
> Michael W. schrieb:
>
>> (...) Bis Du sagtest, dass kann man auch irgendwie mit
>> internem AVR-Pullup / Down machen, was wohl nicht stimmt. DARUM ging es.
>
> Mit dem AVR und dessen internem Pullup kann man das Verhalten des Port 1
> eines i8039 emulieren. Darum ging es.

Versuch' doch bitte mal beim Thema zu bleiben, und nicht so off-topic zu 
gehen. 8039 interessiert in dieser Diskussion überhaupt nicht. Ist ja 
schön dass Du Dich so gut auskennst in der Intel-Mikrocontroller 
Historie, aber relevant ist das für diese Diskussion nicht. Bitte 
genauer lesen bevor Du "off topic" antwortest, das ist sehr verwirrend 
und hilft der Diskussion nicht.

Was Deine originale Antwort auf meine Frage:

>> Gut, dass das Problem für einen CP1-ATmega >/ AVR-Emulator nicht
>> auftritt, und dass man einfach die internen Pullups nehmen kann! Das
>> macht es einfacher.

angeht (Soul E.):

>Da erreichst Du das gleiche Verhalten, wenn Du den internen Pullup
>einschaltest und nur den Low-Pegel aktiv treibst. D.h. Pin auf Output
>Low für Low und auf Input (mit Pullup) für High.

mit meiner Frage / Bemerkung zu tun hast, ist mir immer noch nicht klar. 
Zumal da überhaupt keine Erwähnung vom 8039 statt findet (wenn überhaupt 
8049). (Bitte jetzt keine Belehrung über 8049-Genese, ich kann selbst im 
Wikipedia über Intel-Mikrocontroller-Historie nachlesen...)

von Soul E. (Gast)


Lesenswert?

Michael W. schrieb:

> Versuch' doch bitte mal beim Thema zu bleiben, (...)

Nun, hier 
https://www.mikrocontroller.net/attachment/488120/original_circuit.png 
hatte jemand den Schaltplan des originalen CP1 gepostet. Und was sehen 
wir da? Einen i8039 in der Version mit internem ROM, d.h. einen i8049. 
Und eben dieser sollte mit einem AVR emuliert werden. Also, so ganz am 
Thema vorbei war das nun wirklich nicht.

Aber mach mal was Du willst.

von O. R. (oscherischery)


Lesenswert?

Michael W. schrieb:

> Was Deine originale Antwort auf meine Frage:
(...)
> mit meiner Frage / Bemerkung zu tun hast, ist mir immer noch nicht klar.

Was ist denn nun Dein Problem? Der CP1 basiert auf einem 8049, also 
einem 8039 mit internem Programmspeicher. Dieser hat einen Port mit open 
drain-Ausgängen. Es wurde gefragt ob man dessen Verhalten mit einem 
Atmel nachbilden kann. Die Antwort lautete "ja".

Dann hattet Du gefragt, ob auch ein umgekehrtes Verhalten (open source, 
high-aktiv) ebenfalls möglich wäre. Die Antwort darauf lautete "nein". 
Du hattest jemandem unterstellt das Gegenteil behauptet zu haben -- dies 
wurde richtiggestellt und stellte sich als Missverständnis heraus. Passt 
also soweit alles.


Wobei, wurde nicht dieses Projekt ohnehin als unsinnig tituliert, da man 
damit ja keinen Gewinn erzielen könne? Die Diskussion um den Sinn und 
Unsinn von Hobbys war sicherlich off-topic. Meinen Einwurf weiter oben 
konnte ich mir trotzdem nicht verkneifen -- meiner Ansicht nach sollen 
Hobbys primär Spaß machen und für Entspannung sorgen. Also, alle 
runterkommen und entspannen! Wir haben Wochenende ;-)

von Michael W. (Gast)


Lesenswert?

O. R. schrieb:
> Michael W. schrieb:
>
>> Was Deine originale Antwort auf meine Frage:
> (...)
>> mit meiner Frage / Bemerkung zu tun hast, ist mir immer noch nicht klar.
>
> Was ist denn nun Dein Problem?

Überhaupt kein Problem. Danke für die Richtigstellung. SChönes 
Wochenende.

von sonofjj (Gast)


Lesenswert?

und was hat das ganze noch mit dem dingens vom vadda zu tun?

von Ralph S. (jjflash)


Angehängte Dateien:

Lesenswert?

... so, Platinen sind heute gekommen und natürlich hab ich gleiche eine 
bestückt und zu meiner Überraschung hat sogar alles gleich funktioniert, 
obwohl ein Kondensator noch gar nicht drin ist (weil die, die ich habe 
zu hoch sind).

Im Anhang kann man sehen, wie die Mnemonic erweitert wurde und eine mir 
besser geläufige Mnemonic ist als die Originale. Die ersten 22 Opcodes 
machen natürlich dasselbe damit auch alles vom originalen CP1 
übernehmbar ist. Auch die Tastensteuerung ist dieselbe, auch wenn ich 
die Platine über das Terminal bediene (weil ich dort einen Step besser 
verfolgen kann).

Die Funktionsmöglichkeiten können (fast) beliebig über den Befehl "INT" 
erweitert werden. Hier ist es möglich, Funktionalitäten des ATmegas in 
den CP1 einzublenden.

Der CP1 hat jetzt:

- grundsätzlich 256 Speicherplätze (WORD)
- zusätzliche interne Struktur:
-- Register B, C, D, E, Flagregister PSW
-- 8 Level-Stack
-- 24LC128 EEPROM (32 komplette Programme + 2 Programme im internen 
ATmega)

Terminalprogramm mit:
- Zeilenassembler und Disassembler
- Registerstatusanzeige beim Beenden des Programms sowie nach 
Single-Step
- Laden und Speichern vom / zum EEProm
- Memory Dump

Softwareinterrupts gibts zu den Themen:

INT 1
- erweiterte Möglichkeiten für Verzögerungsschleifen mit 4 einstellbaren 
Zeitbasen

INT 2 und INT 3
- PWM Frequenzgeneratoren

INT 4
- PWM Frequenzgenerator für Servomotor

INT 8
- ADC Nutzung auf 8-Bit reduziert, Ausgabe in Akku wahlweise in Digits 
(max. 255), in % (max. 99) oder in 50 * 100 Millivolt

INT 9
- Abfrage der Tastatur, Möglichkeit auf Taste zu warten, feststellen ob 
eine Taste gedrückt ist oder eine Dezimalzahl über die Tasten einlesen

INT 10
- Digitmaske zum Dunkelschalten einzelner Digits
- Displaysteuerung in 8 und 16 Bit Anzeige jeweils in dezimaler und in 
hexadezimaler Darstellung
- Dezimalpunktsteuerung

--------------------------------

NTC Widerstände und LDR möchte ich noch hinzufügen eventuell auch noch 
IR-Empfänger.

--------------------------------

Irgendwie mutet das ganze nach: "Es werden 'Systemfunktionen' über 
Maschinensprache gescriptet.

Aber irgendwie machts Spaß

von Ralph S. (jjflash)


Lesenswert?

Beispielprogramm um mit einem Potentiometer / Trimmer die Stellung des 
Servomotors einzustellen:
1
000:   28.020   mvi b,020
2
001:   04.000   mvi a,000
3
002:   63.010   int 010       ; INT 10 Funktion 20: 
4
                              ; Dezimalpunktanzeige alle aus
5
003:   28.000   mvi b,000
6
004:   04.007   mvi a,007
7
005:   63.010   int 010       ; INT 10 Funktion 0: Displaymaske 7 
8
                              ; ==> nur die rechten 3 Digits anzeigen
9
006:   28.000   mvi b,000
10
007:   04.002   mvi a,002
11
008:   63.008   int 008       ; INT 8 Funktion 0: Init ADC fuer 
12
                              ; Input auf P2.2
13
; loop:                              
14
009:   28.001   mvi b,001
15
010:   63.008   int 008       ; INT 8 Funktion 1: Spannung auf P2.2
16
                              ; messen, 8-Bit Ausgabe auf Akku 
17
011:   28.001   mvi b,001
18
012:   63.010   int 010       ; INT 10 Funktion 1: Display, dezimale
19
                              ; Ausgabe Akku
20
013:   63.004   int 004       ; INT 4: Akku als Duty-Cycle Wert fuer
21
                              ; Servomotor
22
014:   03.100   cdel 100      ; Wartezeit
23
015:   09.010   jmp 009       ; das Ganze fuer immer wiederholen

von Andreas B. (bitverdreher)


Lesenswert?

Ralph S. schrieb:
> ... so, Platinen sind heute gekommen und natürlich hab ich gleiche eine
> bestückt und zu meiner Überraschung hat sogar alles gleich funktioniert,
Nicht schlecht! Und wann kommt die 32-Bit ARM Version? Man will ja 
schließlich mal alle ähnlichen Computer da drin haben (KIM-1 u.ä.)  ;-)

von Ralph S. (jjflash)


Lesenswert?

Andreas B. schrieb:
> Nicht schlecht! Und wann kommt die 32-Bit ARM Version? Man will ja
> schließlich mal alle ähnlichen Computer da drin haben (KIM-1 u.ä.)  ;-)

KIM-1 kenne ich natürlich auch nicht, aber ich habe mir das angesehen. 
Grundsätzlich sind solche Gerätchen / Platinen nicht so wirklich 
schwierig, im Falle von KIM-1 glaube ich wäre das auch nicht so 
besonders aufwändig, in vielen Dingen höchstwahrscheinlich besser als 
CP-1. Für 6502 gibts schon unzählige CPU-Emulatoren, die auch auf einem 
ATmega laufen.

Auf meiner Platine würde das allerdings nicht funktionieren (der KIM-1), 
weil der insgesamt 24 Tasten hat, ich aber auf der Platine mit der 
Lösung der Shift-Taste nur 20 Tasten erreiche.

Prinzipiell hatte ich schon vor Weihnachten darüber nachgedacht gehabt, 
ob ich mir mal eine universelle Platine mache mit Tastenfeld und 
7-Segmentanzeige, aber grundsätzlich habe ich das wieder verworfen 
gehabt, weil Elektronik heute eben doch eher ein TFT-Display hat, eine 
Platine mit STM32F303 (Cortex M4) mit 16-Tasten plus Shift-Taste habe 
ich für Experimente schon.

Diese Platine war allerdings, wie eingie andere auch ein Fehlentwurf und 
nur kurzfristig gedacht, weil der Controller ein STM32F303K8T6 ist in 
einem eher seltenen LQFP32 Gehäuse ist, der derzeit (vllt. auch wegen 
Corona) überall deutlich über 10 Euro kostet. Damals wollte ich noch 
nicht die 48 pol. IC's verlöten und dachte mir 32 reichen auch.

Hätte ich das anderst gemacht, könnte man deutlich mehr IC's darauf 
verlöten (u. a. den hochbilligen STM32F103):

Andreas B. schrieb:
> Und wann kommt die 32-Bit ARM Version?

Mit ein paar wenigen Änderungen, da ja bis auf PWM, 
Verzögerungsschleifen und UART alles Bitbanging ist, habe ich den CP-1 
auch schon auf einer Bluepill laufen lassen, einen Unterschied macht das 
aber zur ATmega Version keinen und wie gesagt: für einen 6502 wäre wohl 
auch der ATmega schnell genug.

Für den Moment "reicht" mir diese Version und wenn ich die Doku dazu 
geschrieben habe werde ich das wohl abschließen. Auch wenn es in dieser 
Entwicklungsstufe als reines Lernsystem heute wieder genutzt werden 
könnte habe ich für mich keinen Nutzen (wie oben schon gesagt: Der Spaß 
ist das Ding zu machen, nicht es zu gebrauchen):

Für ein heutiges Lernsystem müßte man als Hostprogramm eine GUI 
schreiben damit das angenommen werden würde, weil ich glaube, dass 
heutzutage kein junger Mensch mehr mit einem Terminal- / Monitorprogramm 
arbeiten möchte (auch wenn vieles damit schneller geht).

Außerdem stelle ich fest, dass dieses Teil in der Funktion sich auch 
irgendwie nach Arduino anmutet: Ich entwickle CP1 "Softwareinterrupts" 
und rufe die nur noch auf. Bei einem Arduino ist das ja ähnlich, nur 
deutlich hochflexibler. Installieren einer Library und verwenden, 
fertig. Bei dem CP1 kann halt nichts installiert werden, es muß immer in 
die Firmware in die Switch-Case Folge eingehängt werden.

Von daher - ich sage es nicht gerne - sollte man heute dann wirklich 
lieber  mit Arduino hantieren. Der Lerncomputer diente damals eher dazu, 
zu zeigen wie grundsätzlich Maschinensprache funktioniert (funktionieren 
kann). Macht man heute noch Maschinensprache (eher selten) macht, dann 
ist es sinnvoller, das auf einem realen System mit den entsprechenden 
Tools zu machen die um Lichtjahre besser sind als meine, um das auch 
wirklich einzusetzen.

von Michael W. (Gast)


Lesenswert?

Ralph S. schrieb:
> Von daher - ich sage es nicht gerne - sollte man heute dann wirklich
> lieber  mit Arduino hantieren. Der Lerncomputer diente damals eher dazu,
> zu zeigen wie grundsätzlich Maschinensprache funktioniert (funktionieren
> kann). Macht man heute noch Maschinensprache (eher selten) macht, dann
> ist es sinnvoller, das auf einem realen System mit den entsprechenden
> Tools zu machen die um Lichtjahre besser sind als meine, um das auch
> wirklich einzusetzen.

Man fragt sich natürlich, wer soetwas heutzutage noch kauft, und warum. 
Ja, es wurde verkauft, bei Tindie... und sogar recht erfolgreich:

https://youtu.be/mo3y1B_zerA

Das Subsystem CPU-Modell / Instruktionsset ist der vom "Science Fair" 
Microprocessor Trainer aus den 70ern, der auch als Gakken GMC-4 verkauft 
wurde.

https://www.old-computers.com/museum/computer.asp?st=1&c=1053

M.E. ist die Einfachheit dieser Lerncomputer und die Verbindung mit 
Elektronik-Experimenten und didaktisch gut gemachten Anleitungsbüchern 
für Kinder / Jugendliche der eigentlich Reiz. Zumindest war er es 
damals. Maschinensprache hat man auch damals schon mit "richtigen CPU 
Trainern" mit "echten CPUs" und "echter Maschinensprache" besser 
gelernt. Allerdings nicht für Kinder und Jugendliche.

Manchmal erreicht man mehr damit, wenn Dinge etwas vereinfacht werden.

Ich denke, soetwas wie der BBC micro:bit ist für die heutige Generation 
ziemlich geeignet.

von Der müde Joe (Gast)


Lesenswert?

Hallo, Ralph.
Zuerst mal, tolles Projekt! :-)

Du schriebst: "Damals wollte ich noch nicht die 48 pol. IC's verlöten"

Damit beziehst du dich auf die QFP-48-Gehäuse mit 0,5mm Pitch, gell? Ich 
denke auch, dass solche Pitches eher schwieriger zu verlöten sind. 
Zumindest von Hand. Ich wollte nur sagen, dass es auch noch die QFP-44 
und QFP-64 gibt, die haben 0,8mm Pitch. Die habe ich schon öfters von 
Hand verlötet, ohne Kurzschlüsse.

von Ralph S. (jjflash)


Lesenswert?

Der müde Joe schrieb:
> Damit beziehst du dich auf die QFP-48-Gehäuse mit 0,5mm Pitch, gell?

Mittlerweile weiß ich, wie ich die QFP-48 Gehäuse mit 0,4mm Pitch 
verlöten muß und das klappt auch sehr gut. Lötsauglitze sei Dank.

von Michael W. (Gast)


Lesenswert?

Ralph, kann ich einen zusammengebaut von Dir erwerben? Versand müsste in 
die USA... SMD kann ich nicht. Daher.

Wenn nicht - verstehe! Wollte trozdem gefragt haben, gefällt mir sehr 
gut!

von Ralph S. (jjflash)


Lesenswert?

Ach herjeh, zusammengebaut eher nicht. Zum einen fehlen mir für eine 
dritte bestückte Platine noch ein paar Bauteile (die zweite hat mein 
Sohnemann), und zum Anderen habe ich mehr als 2 Stunden gebraucht, um 
das Ding zusammen zu löten ( ;-) Sohnemann durfte selbst löten und der 
kann das auch).

Vllt. solltest du SMD - Löten einmal lernen (denn das sieht schwieriger 
aus, als es ist). Widerstände und Kondensatoren sind in der Größe 0805 
und die bestückt man (nach gewisser Übung) sogar deutlich schneller als 
bedrahtete Bauteile. Die IC's könnten etwas kniffliger werden (hier ist 
es der ATmega), aber da sind Kurzschlüsse beim Löten nicht so ein großes 
Problem, weil die mit Lötsauglitze, eventuell auch mit Flux getränkt 
(flüssiges Flußmittel), sehr gut entfernbar ist.

Ich habe die Platine bspw. mit einer einfachen und uralten Weller 
Magnastat TCP Lötstation gelötet, die ich seit meiner Lehrzeit (vor 40 
Jahren) schon habe.

;-) also (nicht so ganz ernst nehmen und ist auch nicht so böse 
gemeint): nicht so viel Programme coden, sondern mal üben, die 
Bauteilegehäuse der heutigen Zeit zu verarbeiten.

Michael W. schrieb:
> Wenn nicht - verstehe! Wollte trozdem gefragt haben, gefällt mir sehr
> gut!

Deshalb: sorry, aber zusammenbauen werde ich das nicht !

von Michael W. (Gast)


Lesenswert?

Ralph S. schrieb:
>
> ;-) also (nicht so ganz ernst nehmen und ist auch nicht so böse
> gemeint): nicht so viel Programme coden, sondern mal üben, die
> Bauteilegehäuse der heutigen Zeit zu verarbeiten.

Bin ich nicht. Ja, kommt auf die Liste der guten Vorsätze für 2021: 
SMD-Löten. Möglich sein sollte es schon irgendwie. Auch ohne Reflow 
Oven. Wir werden sehen. Ich bin halt Hobbyist / Maker und handwerklich 
nicht so fit wie Ihr Profis hier (ist jetzt ernst gemeint).

Gruß und bis demnächst mal wieder!

von Andreas B. (bitverdreher)


Lesenswert?

Michael W. schrieb:
> Ja, kommt auf die Liste der guten Vorsätze für 2021:
> SMD-Löten.
Fang am besten hier mal an:
https://www.mikrocontroller.net/articles/SMD_L%C3%B6ten
Alles halb so wild. Du wirst da auch nicht länger dran vorbeikommen. Die 
interessanten Bauteile gibt es bald nur noch in SMD. Ich habe es vor 
einigen Jahren auch immer vermieden. Mittlerweile würde ich nichts mehr 
in THT machen, wenn es irgendwie möglich ist. (auch Hobbyist)

von Ralph S. (jjflash)



Lesenswert?

Eigentlich wollte ich ja nicht mehr wirklich weitermachen (aber 
eigentlich gibt es das Wort "Eigentlich" nicht). Deswegen:

Der CP1 Clone wurde (sehr) stark erweitert. Insgesamt besitzt er nun 65 
Maschinenbefehle.

Im Unterschied zum Orignal habe ich an 2 Originalbefehlen Änderungen 
vorgenommen: ADD und SUB. Das Original gibt eine Fehlermeldung aus, wenn 
wenn der 8-Bit Bereich (0-255) über- oder unterschritten wird. Da dem 
CP1-Clone nun Flags zur Verfügung stehen, habe ich die Originalfunktion 
dahingehend geändert, dass der CP1 wie fast jeder andere Prozessor hier 
ein Carry-Flag setzt (das 9. Bit der Rechenoperation) und der Akku die 
unteren 8 Bit der Operation beinhaltet.

Dem CP1 wurde ein 8-Level-Stack hinzugefügt, sodass sich in der 
Befehlsliste nun auch ein CALL und ein RET befindet.

Desweiteren hat der CP1 einen erweiterten Registersatz erhalten, er 
beinhaltet nun zusätzlich universell verwendbare zusätzliche Register B, 
C, D und E. Für die Flags ein Program-Status-Wort mit den Flags Zero, 
Carry, Less und Greater.

Um die sehr mageren Möglichkeiten die mit 256 Word-Speicherplätzen 
möglich sind zu erweitern, habe ich dem CP1 etwas hinzugefügt, was den 
sogenannten Softwareinterrupts eines alten MS-DOS Systems sehr ähnelt. 
Die Funktionen eines Softwareinterrupts werden durch die Interruptnummer 
und im Register B die Interruptunterfunktion aufgerufen.

Software-Interrupt 1 : verbesserte Warteschleifen
Software-Interrupt 2 : 16-Bit PWM Frequenzgenerator
Software-Interrupt 3 : 8-Bit PWM Frequenzgenerator
Software-Interrupt 4 : PWM-Generator für Servomotor
Software-Interrupt 8 : ADC-Abfrage (eine Unterfunktion mit Auswertung 
NTC-Widerstand
Software-Interrupt 9 : Tastatur
Software-Interrupt 10 : Steuerung der 7-Segmentanzeige

-----------------------------------------

Zusätzlich zu den beiden originalen internen "Festprogrammen" eines 
Selbsttests und des "Reaktionsspiel" hat der CP1 Clone zusätzliche 
Festprogramme erhalten.

Ein Festprogramm wird beim Original mit

< 9 - RUN > für den Selbsttest und mit < 8 - RUN > für das 
Reaktionsspiel gestartet. Dieses Schema wurde beibehalten:

9 - RUN : Selbsttest
8 - RUN : Reaktionsspiel
7 - RUN : Start des Terminalmodus
6 - RUN : Verschieben eines Speicherbereiches
5 - RUN : Empfangen eines vom Host-PC (Linux) gesendeten Programms

Um das 5te Festprogramm des CP1 Clones nutzen zu können, wurde hierfür 
ein Assembler geschrieben, der es ermöglicht, auf dem Linux-PC ein 
Maschinenprogramm zu schreiben, dieses zu übersetzen und anschließend in 
den CP1-Clone zu übertragen.

Die Syntax dieses Assemblers ist:

cp1asm -a assemblerdatei.cp1 -l -u uploaddatei.bin -p serieller_port

Die Angabe von -l ist optional, sie erstellt eine Listdatei. Die Angabe 
von -u ist ebenfalls optional (sie bezeichnet die Binärdatei, die in den 
CP1 übertragen werden soll). Wird sie jedoch angegeben, so muß auch das 
Argument -p mit angegeben sein.

Beispiel, erstellen einer Binär- und Listdatei:

cp1asm -a cdwn.cp1 -l   (es werden Dateien cdwn.bin und cdwn.lst 
erstellt)
cp1asm -u cdwn.bin -p /dev/ttyUSB0

Mittels dieses Assemblers ist ein solches Programm möglich:
1
; -------------------------------------
2
;          countdown.cp1
3
;
4
;   Countdown Zaehler fuer den CP1+
5
; -------------------------------------
6
7
.org 0
8
start:
9
  mvi a,0
10
  out p2          ; P2 alle Bits = 0
11
  mvi b,0
12
  int 9           ; Dezimalzahl einlesen
13
14
  mov d,a         ; Zaehlerinhalt retten
15
16
  mvi a,3
17
  mvi b,0
18
  int 10          ; Displaymaske rechten beiden Digits aktiv
19
20
count_loop:
21
22
  mov a,d         ; Zaehler in Akku
23
  mvi b,1
24
  int 10          ; aktuellen Zaehler ausgeben
25
26
  mvi a,10
27
  mvi b,3         ; Timebase 0.1 s
28
  int 1           ; Warteinterrupt: 0.1 s * 10
29
30
  mov a,d         ; Zaehler restaurieren
31
  cpi a, 0        ; Zaehler 0 erreicht ?
32
  jz count_zero   ; Countdown Ende
33
  dec a
34
  mov d,a         ; Zaehler retten
35
  jmp count_loop
36
37
count_zero:
38
  mvi a, 1
39
  outb p2, 3      ; schaltet P2.3 auf 1 als Kennung
40
                  ; fuer Countdown erreicht
41
42
  ; die Anzeige "00" blinken lassen
43
44
blink:
45
  mvi a,3
46
  mvi b,0
47
  int 10          ; Displaymaske beide rechten Digits an
48
  call blink_wait
49
  mvi a,0
50
  mvi b,0
51
  int 10
52
  call blink_wait
53
54
  mvi b,2
55
  int 9           ; ist Taste gedrueckt ?
56
  jz start        ; dann neuen Countdown initieren
57
  jmp blink
58
59
blink_wait:
60
  mvi b, 3
61
  mvi a, 3
62
  int 1
63
  ret

Hieraus wird eine Binärdatei erstellt und mit der Option -l auch eine 
Listdatei:
1
 CP1ASM (c) 2021 R. Seelig
2
 ------------------------------------------
3
4
Zeile  Adr.   Opcode      Source
5
6
 000   000:               ; -------------------------------------  
7
 001   000:               ;          countdown.cp1  
8
 002   000:               ;  
9
 003   000:               ;   Countdown Zaehler fuer den CP1+  
10
 004   000:               ; -------------------------------------  
11
 005   000:                 
12
 006   000:               .org 0  
13
 007   000:               start:  
14
 008   000:   04.000        mvi a,0  
15
 009   001:   18.000        out p2          ; P2 alle Bits = 0  
16
 010   002:   28.000        mvi b,0  
17
 011   003:   63.009        int 9           ; Dezimalzahl einlesen  
18
 012   004:                 
19
 013   004:   38.000        mov d,a         ; Zaehlerinhalt retten  
20
 014   005:                 
21
 015   005:   04.003        mvi a,3  
22
 016   006:   28.000        mvi b,0  
23
 017   007:   63.010        int 10          ; Displaymaske rechten beiden Digits aktiv  
24
 018   008:                 
25
 019   008:               count_loop:  
26
 020   008:                 
27
 021   008:   34.000        mov a,d         ; Zaehler in Akku  
28
 022   009:   28.001        mvi b,1  
29
 023   010:   63.010        int 10          ; aktuellen Zaehler ausgeben  
30
 024   011:                 
31
 025   011:   04.010        mvi a,10  
32
 026   012:   28.003        mvi b,3         ; Timebase 0.1 s  
33
 027   013:   63.001        int 1           ; Warteinterrupt: 0.1 s * 10  
34
 028   014:                 
35
 029   014:   34.000        mov a,d         ; Zaehler restaurieren  
36
 030   015:   49.000        cpi a, 0        ; Zaehler 0 erreicht ?  
37
 031   016:   11.020        jz count_zero   ; Countdown Ende  
38
 032   017:   27.000        dec a  
39
 033   018:   38.000        mov d,a         ; Zaehler retten  
40
 034   019:   09.008        jmp count_loop  
41
 035   020:                 
42
 036   020:               count_zero:  
43
 037   020:   04.001        mvi a, 1  
44
 038   021:   18.003        outb p2, 3      ; schaltet P2.3 auf 1 als Kennung  
45
 039   022:                                 ; fuer Countdown erreicht  
46
 040   022:                 
47
 041   022:                 ; die Anzeige "00" blinken lassen  
48
 042   022:                 
49
 043   022:               blink:  
50
 044   022:   04.003        mvi a,3  
51
 045   023:   28.000        mvi b,0  
52
 046   024:   63.010        int 10          ; Displaymaske beide rechten Digits an  
53
 047   025:   64.034        call blink_wait  
54
 048   026:   04.000        mvi a,0  
55
 049   027:   28.000        mvi b,0  
56
 050   028:   63.010        int 10  
57
 051   029:   64.034        call blink_wait  
58
 052   030:                 
59
 053   030:   28.002        mvi b,2  
60
 054   031:   63.009        int 9           ; ist Taste gedrueckt ?  
61
 055   032:   11.000        jz start        ; dann neuen Countdown initieren  
62
 056   033:   09.022        jmp blink  
63
 057   034:                 
64
 058   034:               blink_wait:  
65
 059   034:   28.003        mvi b, 3  
66
 060   035:   04.003        mvi a, 3  
67
 061   036:   63.001        int 1  
68
 062   037:   65.000        ret

-------------------------------------------

Die Dokumentation für den Befehlssatz und für die Softwareinterrupts 
habe ich bereits geschrieben, eine allgemeine Dokumentation sowie eine 
Dokumentation des Terminalmodus ist in Arbeit.

Da ich gerade sehe, dass ich die Gerberfiles noch nicht hochgeladen 
habe, werde ich das noch nachholen (sie liegen auf einem anderen Rechner 
auf den ich gerade keinen Zugriff habe).

So, das ist es für den Moment und nun könnt ihr Euch mit Euren 
Negativkommentaren, Beschimpfungen und Bewertungen austoben.

An die "Normalen" unter Euch einen schönen Gruß,

Ralph

von Ralph S. (jjflash)


Lesenswert?

Hach, und natürlich gleich ein Fehler: Kommentar im Schaltplan unter 2. 
Der mit 2 ** gekennzeichnete Kondensator ist natürlich für einen Betrieb 
als Arduino-Platine zu bestücken und nicht zu entfernen.

von Michael W. (Gast)


Angehängte Dateien:

Lesenswert?

Ralph, wie kommt es eigentlich dass Dein EEPROM im Schaltplan am Quartz 
hängt... sollte das nicht SDA / SCL IIC sein (also PC5, PC4)??? 
Zumindest ist das die Verdrahtung die ich kenne.

EDIT: auch so, ja Du hast ja keinen Quartz... also verwendest Du die als 
Software IIC (?) Bit banging? Kann man machen. War mir nicht klar. Na 
ich bleib lieber bei den Hardware IIC Ports.

Übrigens - kluge Wahl die Doppelsegment-Anzeigen zu verwenden! Das 
reduziert den Verdrahtungsaufwand für einen Breadboard-Prototype enorm. 
Ich hatte die leider nicht zur Hand, sondern nur eine Kiste von 
Einzelanzeigen. Das Resultat ist dementsprechend gruselig, zumal der 
Microtronic hier auch 8 Ziffern spendiert bekommen hat :-)

Und noch ne Frage - wo hast Du den Lensfilter her? Ist das einfach nur 
ne rote Plexiglasscheibe? Ich habe zwar welche (s. Bild), aber die sind 
schon zerschnitten. Hätte gerne einen langen Streifen wie in Deinem 
Bild.

von Pat B. (pat_b)


Lesenswert?

Michael W. schrieb:
> Ralph, wie kommt es eigentlich dass Dein EEPROM im Schaltplan am Quartz
> hängt... sollte das nicht SDA / SCL IIC sein (also PC5, PC4)???
> Zumindest ist das die Verdrahtung die ich kenne.
>
> EDIT: auch so, ja Du hast ja keinen Quartz... also verwendest Du die als
> Software IIC (?) Bit banging? Kann man machen. War mir nicht klar. Na
> ich bleib lieber bei den Hardware IIC Ports.

Simme zu. XTAL für den EEPROM zu verwenden, ist vielleicht etwas 
unglücklich . Würde ich nicht so machen. Umso mehr, wenn das Board auch 
als Arduino Board verwendet werden soll wie vom Ralph beschrieben, und 
die Leute dann die Wire.h Library verwenden möchten... ich hoffe ja 
immer noch dass das ein Fehler im Schaltplan ist, aber nicht auf dem 
Board so.

: Bearbeitet durch User
von Ralph S. (jjflash)


Angehängte Dateien:

Lesenswert?

Michael W. schrieb:
> Ralph, wie kommt es eigentlich dass Dein EEPROM im Schaltplan am Quartz
> hängt... sollte das nicht SDA / SCL IIC sein (also PC5, PC4)???
> Zumindest ist das die Verdrahtung die ich kenne.

das sollte im Normalfall tatsächlich PC5, PC4 sein!

Weil ich aber an den herausgeführten Ports 1 und Ports 2 keinerlei 
Peripherie haben wollte damit die Ports auch so wie bei einem echten CP1 
voll verwendbar sind, sind mir schlicht die I/O Anschlüsse ausgegangen. 
Mich hatte es schon etwas geärgert, dass ich die PD0 (UART-RxD) als P2.7 
verwenden mußte, um einen vollständigen Port2 realisieren zu können, was 
aber der Funktionsfähigkeit dieses virtuellen Portpins ausserhalb des 
Terminalmodes keinen Abbruch tut.

Im Terminalmode wird dann dieser Pin leider zu einer logischen 1 und 
kann nicht als Portpin verwendet werden.

Ich hatte also schlicht keine weiteren Portpins zur Verfügung. Das 
Volumen des Datentransfers zu dem EEProm ist mit 512 Byte für die 
Speicherung eines Programms jedoch so gering, dass die reduzierte 
Geschwindigkeit nicht ins Gewicht fällt.

Michael W. schrieb:
> Übrigens - kluge Wahl die Doppelsegment-Anzeigen zu verwenden! Das
> reduziert den Verdrahtungsaufwand für einen Breadboard-Prototype enorm.

So klug war die auch nicht, dass es nur Doppelsegment-Anzeigen sind ist 
meiner "Ungeduld" geschuldet, weil ich schlicht keine 
Dreifachsegmentanzeigen zur Hand hatte (die habe ich zwar bestellt, sind 
aber immer noch nicht bei mir angekommen): Der Verdrahtungsaufwand hätte 
sich weiter reduziert gehabt.

Michael W. schrieb:
> Und noch ne Frage - wo hast Du den Lensfilter her? Ist das einfach nur

Die ist aus einem geschlachteten Gerät gewesen und ich hatte mir rotes 
Plexiglas bestellt gehabt um mir eine passendere Abdeckung basteln zu 
können. Trotz der bei EBAY ausgewiesenen Funktion des roten Plexiglases 
für den Betrieb mit LED produziert mir dieses Plexiglas eine derart 
große Unschärfe, das es unbrauchbar ist. Hier suche ich noch einen 
Hersteller, der größere Platten Plexiglas liefert, die genau für diesen 
Zweck geeignet sind.

Diese Woche werde ich einen Versuch aus dem Internet ausprobieren bei 
dem jemand scharzen Acryllack aus der Spraydose auf ein klares Plexiglas 
gesprüht hat und hiermit gute Ergebnisse erzielt hat. Schauen wir 
einmal, wie das funktioniert.

Pat B. schrieb:
> Simme zu. XTAL für den EEPROM zu verwenden, ist vielleicht etwas
> unglücklich . Würde ich nicht so machen. Umso mehr, wenn das Board auch
> als Arduino Board verwendet werden soll wie vom Ralph beschrieben, und
> die Leute dann die Wire.h Library verwenden möchten... ich hoffe ja
> immer noch dass das ein Fehler im Schaltplan ist, aber nicht auf dem
> Board so.

Wie oben beschrieben ist das auch auf dem Board so, weil ich schlicht 
keine  I/O Pins zur Verfügung hatte.

Am Wochenende habe ich mich mit Arduino beschäftigt und eine 
Boarddefinition geschrieben, die das CP1+ Board (wie ich das jetzt auf 
eine Anregung von Andreas getauft habe) in das Arduino Framework 
anbindet.

Hier dann vor allen Dingen mit dem Betrieb von tatsächlich nur 8 MHz 
internem Takt und einem Bootloader mit 38400 Bd.

Funktioniert gut.

Hier gibt es dann im Arduino eine Library mit den fest verdrahteten 
Funktionen es EEProms und einer kleinen Bibliothek für ein OLED-1306 
Display, welches dann einfach auf einen der beiden Ports gesteckt werden 
kann.

Hier muß ich allerdings noch die json-Datei an mein Github anpassen, 
deshalb hier erst einmal nur im Anhang

von Ralph S. (jjflash)


Lesenswert?

@Pat: grundsätzlich hätte ich jedoch für den TM1637 Baustein nicht die 
Anschlüsse PC4 und PC5 verwenden sollen, sondern 2 andere (weil auch der 
TM1637 per Bitbanging betrieben wird) und PC4 und PC5 als Portpins für 
Port 1 oder Port 2 verwenden.

Dann hätte man mit dem vorliegenden Board zumindest an die Portpins auf 
Port1 oder Port2 ein I2C Device anschließen können!.

So gesehen wirklich ein Designfehler an den ich schlicht nicht gedacht 
hatte und wohl daher kommt, als ich das erste mal mit einem TM1637 
hantiert hatte, versucht habe, diesen als I2C Device anzusprechen, das 
aber nicht funktionierte, weil es einfach kein echtes I2C Device ist. 
Der Baustein hat schlicht keine Geräteadresse und deshalb können die 
Anschlußpins des TM1637 nicht als Busleitungen verwendet werden.

So wie es ist, ist tatsächlich ein I2C Device für alle Zeiten nur über 
Bitbanging erreichbar.

Würde ich das Board noch einmal routen, würde ich zum einen 
7-Segmentanzeigen zu je 3 Digits routen und zusätzlich tatsächlich die 
Anschlüsse für I2C auf die Portpins legen.

Das EEProm würde ich allerdings wieder so verdrahten wie es ist.

Allerdings war die Option, die Hardware auch als Arduino verwenden zu 
können (leider) nicht das Hauptziel.

Ich hatte nicht über den Tellerrand geschaut und bemerkt gehabt, was man 
mit der Hardware noch alles anstellen kann.

von Planloser (Gast)


Lesenswert?

Insofern hätte der TM1638 einiges vereinfacht, da man den per SPI 
anspricht.
Kein Bitbanging, zwei Pins mehr frei...


Ralph S. schrieb:
> @Pat: grundsätzlich hätte ich jedoch für den TM1637 Baustein nicht
> die
> Anschlüsse PC4 und PC5 verwenden sollen, sondern 2 andere (weil auch der
> TM1637 per Bitbanging betrieben wird) und PC4 und PC5 als Portpins für
> Port 1 oder Port 2 verwenden.
>
> Dann hätte man mit dem vorliegenden Board zumindest an die Portpins auf
> Port1 oder Port2 ein I2C Device anschließen können!.
>
> So gesehen wirklich ein Designfehler an den ich schlicht nicht gedacht
> hatte und wohl daher kommt, als ich das erste mal mit einem TM1637
> hantiert hatte, versucht habe, diesen als I2C Device anzusprechen, das
> aber nicht funktionierte, weil es einfach kein echtes I2C Device ist.
> Der Baustein hat schlicht keine Geräteadresse und deshalb können die
> Anschlußpins des TM1637 nicht als Busleitungen verwendet werden.
>
> So wie es ist, ist tatsächlich ein I2C Device für alle Zeiten nur über
> Bitbanging erreichbar.

von Ralph S. (jjflash)


Lesenswert?

So, das CP1+ Board kann nun in eine Arduino IDE-Übernommen werden:


Datei -> Voreinstellungen -> zusaetzliche Boardverwalter_URL's
https://github.com/jjflash65/cp1arduino/raw/master/package_cp1_index.json

Hier stehen auch Beispielprogramme für

- printf
- TM1637
- LED's auf Port2
- OLED Display auf Port1

zur Verfügung

Planloser schrieb:
> Insofern hätte der TM1638 einiges vereinfacht, da man den per SPI
> anspricht.
> Kein Bitbanging, zwei Pins mehr frei...

Planloser schrieb:
> Insofern hätte der TM1638 einiges vereinfacht, da man den per SPI
> anspricht.
> Kein Bitbanging, zwei Pins mehr frei...

Nein, wäre es nicht. Ein allererster Entwurf hatte einen TM1638 (Arduino 
Nano mit einem Board mit 8 Anzeigen und 16 Tasten).

Der TM1638 benötigt zur Kommunikation mit einem Controller derer 3 I/O 
Anschlüsse, der TM1638 hingegeben nur 2.

Dieses war der Grund, weshalb ich den 1637 genommen hatte (um einen I/O 
Pin zu sparen, den ich dann für ein fehlendes Bit an Port 2 verwenden 
wollte). Zu meinem Erschrecken mußte ich dann jedoch feststellen, dass 
der TM1637 im Vgl. zu einem TM1638 nicht in der Lage ist, die Tasten zu 
scannen. D.h. es gibt keine Möglichkeit festzustellen, ob mehr als eine 
Taste gedrückt ist oder nicht. Aus diesem Grund wurde dann wieder ein 
zusätzlicher I/O Pin fällig, den ich für die Abfrage der Shift-Taste 
benötigt habe.

Die Verwendung eines TM1638 hätte also überhaupt gar nichts gebracht 
gehabt (weil ich die Anschlüsse des SPI's des Chips so oder so nicht 
herausgeführt hätte).

Es sollten schlicht 2 autarke virtuelle I/O Ports erzeugt werden, die 
einem CP1 ähnlich sind.

Die Programmierung mit abgesonderter Shifttaste, losgelöst vom TM1637, 
war dann sogar einfacher als einen Keyscan auf einem 1638 vorzunehmen.

Einzig (und das ist wie ich oben geschrieben habe) wirklich ein 
Designfehler von mir, weil beim Entwurf des CP1 Clones erst einmal nicht 
an die Verwendung des Boards als Arduino gedacht wurde, hätte man die 
Anschlüsse für I2C auf einen der CP1 Ports 1 oder 2 legen sollen um bei 
einer Verwendung des Boards als Arduino eben an diesen Ports Hardware 
I2C zu haben.

Fail by myself or: "Shit happens"

Nichts desto trotz habe ich mit dem Board jetzt unter Arduino ein 
bisschen gespielt (und unter reinem avr-gcc noch ein bisschen mehr) und 
es ist lustig zu sehen, dass mit dem Board vieles experimentiert werden 
kann und ich geneigt bin zu sagen: Als Einstieg in die Programmierung 
von Mikrocontrollern besser als ein originales Arduino-Uno Board 
geeignet, weil schlichtweg auf dem Board eben 8 Leuchtdioden, die 
7-Segmentanzeige und Tasten direkt verfügbar sind, ein Aufstecken eines 
OLED Display direkt ohne irgendeinen Adapter erfolgen kann).

Wer tiefer in die Materie einsteigt, kauft sich dann ein anderes Board 
oder baut seine Schaltungen zielgerichtet für den Anwendungsfall auf.

Außerdem nicht vergessen: Alles in allem kostet eine bestückte Platine 
(inkl. der Platine) so in etwa 10 Euro.

Hierfür kann man dann in Ansätzen lernen, wie ein Prozessor funktioniert 
(eben den CP1+ Modus wie ich das jetzt mal nennen mag) und danach dann 
C, C++ (egal ob in abgespeckter Form in Arduino oder in Reinform mit 
einer anderen IDE).

----------------------------

Mal abgesehen von dem einen I2C Designfehler würde ich das Board heute 
auch nicht anderst routen (okay, heute sind die 7-Segmentanzeigen mit 3 
Digits gekommen, die würde ich dann doch noch so routen) und deshalb 
glaube ich nicht, dass dieses Board jedem Anwendungsfall gerecht wird 
und dafür war das auch nicht gedacht.

Gedacht war es eigentlich für gar nichts, sondern war ein reines 
Spaßprojekt und ich habe evaluiert, für was man das noch alles brauchen 
kann.

Wie sich herausstellt benötigt die Dokumentation dieses Spaßprojektes 
deutlich mehr Zeit, als das gesamte Projekt in Hard- und Software 
zusammen. Leider!

von Planloser (Gast)


Lesenswert?

Ralph S. schrieb:
> Der TM1638 benötigt zur Kommunikation mit einem Controller derer 3 I/O
> Anschlüsse, der TM1638 hingegeben nur 2.
>
> Dieses war der Grund, weshalb ich den 1637 genommen hatte (um einen I/O
> Pin zu sparen, den ich dann für ein fehlendes Bit an Port 2 verwenden
> wollte). Zu meinem Erschrecken mußte ich dann jedoch feststellen, dass
> der TM1637 im Vgl. zu einem TM1638 nicht in der Lage ist, die Tasten zu
> scannen. D.h. es gibt keine Möglichkeit festzustellen, ob mehr als eine
> Taste gedrückt ist oder nicht. Aus diesem Grund wurde dann wieder ein
> zusätzlicher I/O Pin fällig, den ich für die Abfrage der Shift-Taste
> benötigt habe.


Die ISP-Pins werden doch laut Schaltplan gar nicht anders genutzt, oder 
habe ich da etwas übersehen?
Durch Verwendung des TM1638 würdest Du also die beiden Pins PC4/5 
gewinnen, wenn der TM1637 wegfiel.

von Ralph S. (jjflash)


Lesenswert?

Planloser schrieb:
> Die ISP-Pins werden doch laut Schaltplan gar nicht anders genutzt, oder
> habe ich da etwas übersehen?
> Durch Verwendung des TM1638 würdest Du also die beiden Pins PC4/5
> gewinnen, wenn der TM1637 wegfiel.

Zähle einfach mal die verwendeten Pins!

Ich habe:
1
2 * 8 I/0 für Port 1 und 2   = 16 I/O Pins
2
1 * 2 I/O für I2C            =  2 I/0 Pins
3
1 * 2 I/0 für UART           =  2 I/0 Pins
4
1 * 2 I/O für TM1637         =  2 I/0 Pins
5
1 * 1 I/0 für die Shifttaste =  1 I/0 Pin
6
                            ----------------
7
                               23 I/0 Pins

So, der ATMega hat, wenn man die Anschlüsse des Quarzes als I/O Pin 
verwendet und logsicherweise den Resetpin als Reset beläßt weil sonst 
eine typische Bootloaderaktivierung über den Resetpin nicht machbar ist 
genau 22 I/O Pins.

Hier ist also schon ein I/0 Pin zu wenig vorhanden, was der Grund ist 
warum ein PD0 (UART - Funktion) an Port 2.7 hängt. Außerhalb des 
Terminalbetriebs stört dies nicht, innerhalb des Terminal betriebs ist 
Port2.7 auf Dauer-High, weil ein Stopbit eben einen High-Pegel hat.

So, unter der Prämisse, dass an den Pins des Ports 1 und Ports 2 nichts 
angeschlossen sein soll, damit Experimente wie beim originalen CP1 
durchgeführt werden können, habe ich für die Peripherie auf dem Board 22 
- 16 = 6 I/O Pins zur Verfügung (eigentlich, wie bereits gesagt schon 
einer zu wenig, deshalb der PD0 auf Port 2.7).

Der Testaufbau wurde mit einem 28 pol. ATmega aufgebaut, das Board hat 
einen 32 pol. SMD Chip. Hier hätte ich das jetzt so routen können, dass 
die Shift-Taste an einen der Pins für ADC6 / ADC7 angeschlossen wird und 
diese Taste dann über den ADC eingelesen wird. Dann wäre der 
freigewordene PD5 der Pin von 2.7 geworden.

-----------------------------------------------

Geht man nun davon aus, dass es bei einem TM1638 diese Shift-Taste 
direkt am Controller nicht braucht, weil der TM1638 einen Key-Scan 
durchführen und zumindest innerhalb einer Gruppe feststellen kann, ob 
mehrere Tasten gleichzeitig gedrückt sind (was der TM1637 nicht kann), 
würde der Anschluß wieder frei werden. Allerdings benötigt der TM1638 
zur Kommunikation 3 I/O Pins (im Gegensatz zum TM1637) und dafür braucht 
es wieder einen PIN. Somit benötigen TM1637 und TM1638 für Ansteuerung 
von Display und Tasten 3 I/O Pins, egal wie auch immer die heißen oder 
welche Funktion die haben.

Die Pins der SPI-Schnittstelle liegen auf dem PORT1 (Bit 5..7). Weil ich 
aber am Port 1 wie gesagt keine Elektronik angeschlossen haben möchte 
(der Experimente wegen) müßten diese vom Port1 entfernt werden um den 
TM1638 zu bedienen. Hier füge ich dann die durch den TM1637 frei 
gewordenen Pins wieder ein. Gewonnen habe ich genau: gar nichts.

Vom Design her also: SPI Pins da lassen wo sie sind, an Port 1 (darüber 
schließe ich einen SPI - Programmer an, um den Bootloader für den ATmega 
zu flashen). Die beiden Pins die den TM1637 steuern (weil diese auch 
Hardware I2C beinhalten) mit 2 weniger wichtigen Pins aus Port1 / Port2 
tauschen. Einen Versuch machen, wie es sich auswirkt, wenn die 
Shift-Taste über den ADC erfasst wird um dann den hier frei gewordenen 
PD5 als Port2.7 zu verwenden, so dass der UART komplett vom Port2 weg 
ist.

Ein Austausch TM1638 gegen den TM1637 bringt in diesem Fall hier jedoch 
rein gar nichts, außer dass dieser größer ist und mehr Platz benötigt.

Der 1638 wäre dann die Wahl, würde man eine Platine mit 20 Tasten 
designen, damit die Funktionstasten von den Zifferntasten komplett 
getrennt ist.

Würde ich also eine zweite Platine routen, würden tatsächlich Änderungen 
vorgenommen werden.

Die Vorteile die man hier hätte sind aber für mich nicht derart 
bedeutend, als dass ich mir die Mühe mache das noch einmal zu routen 
(nicht ohne das vorher mit einem 32 pol. Chip getestet zu haben), die 
Platinen neu zu bezahlen und dann neu aufzubauen.

Hier auf meinem Tisch funktioniert die Platine mittlerweil mit einigen 
Experimenten mittels Arduino erstellt gut.

Die Verbesserungen die man bei einem Redesign erreichen kann lohnen aus 
meiner Sicht der Dinge den Aufwand nicht (weil sie wirklich sehr gering 
sind: I2C auf der Portleiste, evtl. UART-Pin weg von der Portleiste).

Es bleibt dir aber belassen, wenn du an dieser Platine Änderungen 
vornehmen willst, diese gerne vorzunehmen, die Gerber-Files sind ja 
gepostet. Allerdings glaube ich nicht dass du das tun wirst, weil ich 
annehme, dass du so eine Platine weder haben willst noch mit einer 
solchigen "arbeiten" möchtest.

von Ralph S. (jjflash)


Lesenswert?

Planloser schrieb:
> Die ISP-Pins werden doch laut Schaltplan gar nicht anders genutzt, oder
> habe ich da etwas übersehen?

Doch, werde sie: als Portpins des Port1 des CP1+ Clones

von Michael W. (Gast)


Lesenswert?

Ralph S. schrieb:
> Michael W. schrieb:
>> Und noch ne Frage - wo hast Du den Lensfilter her? Ist das einfach nur
>
> Die ist aus einem geschlachteten Gerät gewesen und ich hatte mir rotes
> Plexiglas bestellt gehabt um mir eine passendere Abdeckung basteln zu
> können. Trotz der bei EBAY ausgewiesenen Funktion des roten Plexiglases
> für den Betrieb mit LED produziert mir dieses Plexiglas eine derart
> große Unschärfe, das es unbrauchbar ist. Hier suche ich noch einen
> Hersteller, der größere Platten Plexiglas liefert, die genau für diesen
> Zweck geeignet sind.
>
> Diese Woche werde ich einen Versuch aus dem Internet ausprobieren bei
> dem jemand scharzen Acryllack aus der Spraydose auf ein klares Plexiglas
> gesprüht hat und hiermit gute Ergebnisse erzielt hat. Schauen wir
> einmal, wie das funktioniert.

Danke für die Info. Meine sind von hier:

https://www.bgmicro.com/9Z1648.aspx

Die sind super, aber wie gesagt leider schon zerschnitten :-(

von Michael W. (Gast)


Lesenswert?

Ralph S. schrieb:

> Hier gibt es dann im Arduino eine Library mit den fest verdrahteten
> Funktionen es EEProms und einer kleinen Bibliothek für ein OLED-1306
> Display, welches dann einfach auf einen der beiden Ports gesteckt werden
> kann.

Schöne Idee - jetzt fehlen nur noch INTs für Graphik-Funktionen :-)

Unser "Microtronic Next Generation" hat das kleine OLED ja auch, aber 
leider haben wir keine einfach Möglichkeit der Befehlserweiterung, da 
alle Opcodes prinzipiell belegt sind. Wir haben allerdings einige 
"sinnlose" Opcodes, also eigentlich "no-ops". Sowas with "addiere 0 zu 
Register x", "subtrahiere 0 von Register x", und "kopiere Inhalt von 
Register x nach Register x". Da diese nicht in "echten" Programmen 
verwendet werden, können wir diese mit Extra-Semantik bzw. zusätzlichen 
"Seiteneffekten" ausstatten.

Momentan verwenden wir diese "sinnlosen" Opcodes für Sound / Tonausgabe, 
prinzipell könnten wir allerdings auch andere Funktionen dort 
hineinverdrahten als Seiteneffekte (sowas wie "draw-line" mit Argumenten 
in einigen der 32 Register etc.)

von Ralph S. (jjflash)


Lesenswert?

Michael W. schrieb:
> Schöne Idee - jetzt fehlen nur noch INTs für Graphik-Funktionen :-)

Wäre absolut einfach zu machen. Die INTs zu erweitern ist im bestehenden 
Code absolut easy, einzig stellt sich die Frage wieviel Sinn das macht. 
Aus meiner Sicht der Dinge keinen. Hierfür ist die Struktur des CP1 
einfach zu schwach und das ganze Konstrukt (um ehrlich zu sein) ist 
wirklich nur zum reinen Lernen oder Verständlichmachen da.

Du hast halt nur 256 Programmzeilen, die zur Verfügung stehen und 
letztendlich verknüpft man dann nur noch mittels Registerzuweisungen 
einzelne in Softwareinterrupts versteckte Funktionen zu einem Programm.

Das Display aus der Maschinensprache heraus anzusprechen macht für mich 
nicht wirklich den Sinn, weil bspw. der CP1 u.a. sehr ungeeignet dafür 
ist auch nur Strings zu verarbeiten und darzustellen.

Damit dieses besser geht, müßte man bspw. den Cross-Assembler auch 
wieder erweitern, dass er in der Lage ist, mehrere Bytes hintereinander 
zu definieren. Ausgehend dann hiervon, dass eben nur 256 Programmzeilen 
zur Verfügung stehen würde bspw. ein String mit nur 20 Zeichen eben 
schon wieder 20 Zeilen vom Speicher wegnehmen. Willst du mehr als einen 
Text ausgeben wird das immer schlimmer.

Es hat schon seinen Grund, warum die Ausgabe eben "nur" ein 7-Segment 
Display ist..

Die Erweiterungen die ich mir für die Platine so überlege sind von daher 
"zweigleisig". Zum einen eben  für das, was man als CP1 anstellen kann, 
zum anderen was man unter Arduino anstellen kann.

Es ist das erste mal, dass ich mich mit dem Arduino-Framework näher 
beschäftige und darum, wie die Struktur von Arduino aussieht, wo welche 
Dateien abgelegt sein muß, damit das über das Framework erreichbar ist.

Manche Dinge (muß ich leider zugeben) sind beim Arduino erstaunlich 
praktisch, andere hingegen wieder hinderlich.

Da die Platine sich an Anfänger wendet wird sie eben auch als 
Arduino-Platine programmiert.

Momentan werkel ich an einem IR-Empfänger mit HX1838, was schon gut 
aussieht und dessen Funktionen dann wohl auch in den Softwareinterrupt 
(höchstwahrscheinlich Nr.9) wandern wird. Hierfür mache ich dann sogar 
solche Dinge, die ich normalerweise nicht mache: Die Portpins versorgen 
den Receiver mit Spannung. D.h. es benötigt 3 Portpins zum Betrieb, 2 
als Spannungsversorgung, einer als Datenpin.

Zumindest für Arduino wird die Wahl der Pins frei wählbar sein, im CP1 
Mode wird es wohl von mir fix vorgegeben sein. Damit lassen ich dann 
eben auch in der Maschinensprache leicht Steuerungen realisieren.

Nebenbei schreib ich auch immer noch n bisschen an der Doku (auch wenn 
ich da keine so große Lust darauf habe) und mittlerweile ist das CP1 
Projekt für mich ein "aus dem Loch bringer" in den ich immer wieder 
komme, weil ich hoch verbissen Momentan an meinem Padauk PFS Programmer 
hänge der mich einfach nicht losläßt (heute habe ich bspw. wieder 2 
Controller beim Versuch den 173er zu programmieren gegrillt).

;-) so gesehen ist das CP1 Projekt hier für mich so etwas wie ein 
"Erfolgsgarant" für mich bei dem ich mir sagen kann: "Es hat etwas 
funktioniert".

Für den CP1 ist also als nächstes vorgesehen:
- Fernbedienung mit NEC Protokoll (hier ein Dank an Frank M. der mich 
diesbezüglich zu ein paar Dingen aufgeklärt hat)
- setzen und auslesen einer I2C - RTC (DS3231)
- Melodieplayer (mittels bereits realisiertem Frequenzgenerator)
- RDA5807 Radio-Interface UKW

und eigentlich... sollten alle Erweiterungen bleiben gelassen werden, 
weil das absolut überladen wird, zumindest im CP1 Mode. Es ist dann 
komplett von dem entfernt, was ein CP1 mal war. Hier realisiert man ein 
veraltetes Bedienkonzept (was den Möglichkeiten der damaligen Zeit 
geschuldet war) mit den Möglichkeiten was heute machbar ist.

Besser wäre also nicht erweitern, sondern dokumentieren (aber das 
Erweitern macht halt deutlich mehr Spaß).

Irgendwo ganz oben hat es einer mal geschrieben gehabt: Der Spaß ist 
nicht, das Ding dann fertig zu haben, sondern der Weg dahin.

U.a. würde es mich reizen, den alten Synthesizer Chip SN76489 anzubinden 
wie er in der SG-1000 Konsole und im SC-3000 verbaut wurde (eben der 
typische Klang der 80er Jahre), der Chip wird immer noch geliefert.
Brauchen tut es natürlich keiner (wenn man sich anstrengt, kann auch ein 
ATmega so etwas in Software).

All diese Dinge lenken dann vom eigentlichen Einsatzzweck, dem Lernen, 
ab.

von Michael W. (Gast)


Lesenswert?

Ralph S. schrieb:
> Du hast halt nur 256 Programmzeilen, die zur Verfügung stehen und
> letztendlich verknüpft man dann nur noch mittels Registerzuweisungen
> einzelne in Softwareinterrupts versteckte Funktionen zu einem Programm.

Ja, mehr Speicherzellen wären nett...

> Manche Dinge (muß ich leider zugeben) sind beim Arduino erstaunlich
> praktisch, andere hingegen wieder hinderlich.

Der Editor ist natürlich nur für Masochisten, der Library-Verwalter, und 
Funktionen wie Bootloader brennen und das Hochladen auch über 
Standard-AVR-Programmer (USBTiny) etc. sind durchaus nett! So spare ich 
mir z.B., einen USB-FTDI-Chip auf's Board zu nageln. USBTiny reicht für 
ein Breadboard aus. So eine schlechte AVR-Plattform ist der Arduino also 
gar nicht. Ich editiere im Emacs und verwende die IDE nur zum Hochladen. 
Ich habe zwar auch win-avr und avrdude und das ganze Geklingel, aber 
Arduino ist schön einfach diesbzgl.

> ;-) so gesehen ist das CP1 Projekt hier für mich so etwas wie ein
> "Erfolgsgarant" für mich bei dem ich mir sagen kann: "Es hat etwas
> funktioniert".

Schön, nicht? Man muss sich ja auch mal an was freuen können!

> Für den CP1 ist also als nächstes vorgesehen:
> - Fernbedienung mit NEC Protokoll (hier ein Dank an Frank M. der mich
> diesbezüglich zu ein paar Dingen aufgeklärt hat)
> - setzen und auslesen einer I2C - RTC (DS3231)

Sehr sinnvoll, haben wir auch - speziell da der Microtronic schon 
Uhrzeitfunktionen hat! Nur eben keine gepufferte Echtzeituhr. Daher der 
DS3231.

> - Melodieplayer (mittels bereits realisiertem Frequenzgenerator)

Haben wir auch.

> U.a. würde es mich reizen, den alten Synthesizer Chip SN76489 anzubinden
> wie er in der SG-1000 Konsole und im SC-3000 verbaut wurde (eben der
> typische Klang der 80er Jahre), der Chip wird immer noch geliefert.

Ja, sicherlich ein anderes schönes Spaß-Projekt. Der SN76489 war ja 
einer von 3 Verdächtigen: AY-3-8912, SID, und dann der SN76489. Das 
war's ja so ziemlich damals. Der YM2151 kam später, und war nur in 
Sony's MSX (CM5) Musikcomputern soweit ich weiß.

Busch hatte damals Experimente mit dem Microtronic und dem SN76477n, der 
natürlich ein ganzes Stück primitiver ist, und nur monophon:

https://youtu.be/_e6eQX7ZDbY

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.