Forum: Projekte & Code Noch ein Taschenrechner auf ATMega Basis


von Gero D. (srswift)


Angehängte Dateien:

Lesenswert?

Eigentlich verwendet ja kein Mensch mehr einen Taschenrechner. Aber da 
ein wahrer Bastler über die Frage "Wofür soll das gut sein?" erhaben 
ist, warum nicht?

Das Projekt hat eine Historie, die soll hier aber nicht im Fokus stehen. 
Die aktuelle inkarnation sollte
- UPN (Umgekehrte Polnische Notation) haben (wie die alten HPs
- leicht wissenschaftlich sein (Winkelfunktionen, Logarithmen, ...)
- mit den altmodischen Siebensegmentanzeigen leuchten (LED) - wegen der 
Nostalgie
- Halbwegs klein sein
- praktisch verwendbar sein.

Am Anfang hab ich ein wenig mit dem ATMega8 herumexperimentiert. Die 
Idee, eine eigene Mathematikbibliothek zu schreiben ist schnell zu den 
Akten gelegt worden, nachdem ich mir die verfügbaren Double-Funktionen 
im BASCOM angeschaut hatte. Meiner Meinug nach bleibt da kein Wunsch 
unerfüllt. Nur Leider war der Mega8 damit dann voll. Der ATMega 328 war 
dann der Prozessor meiner Wahl.

Die Suche nach "passenden" Siebensegmentanzeigen gestaltete sich auch 
ein wenig aufwändiger, am Ende hatte ich ein achtstelliges Modul mit 
MAX7219 auf dem Basteltisch. Eigentlich wollte ich das Multiplexen der 
einzelnen Anzeigeelemente ja den Prozessor machen lassen, aber der 
Siebensegmentcontroller ist wirklich ein nützlicher Zeitgenosse.

Am Ende brauchte mein BASCOM-Code nur 45% des Flashs des ATMega328.
Die 28 Tasten sind fast alle doppelt belegt, die Tasten werden gepollt. 
Die Speicher (ich gönne mir den Luxus von 10 Speichern) liegen im 
EEPROM, genau so wie die Einstellungen (rad/grd, Anzeigemodus)

Die Leiterplatte ist doppelseitig und 100x65mm groß. Damit konnte ich 
sie in der Freien Eagle-Version gerade noch layouten.

Das Gerät nimmt bei 5V Betriebsspannung und einer 88888888 in der 
Anzeige etwa 150mA, das ist natürlich der Tod jeder kleinen Batterie. 
Deshalb geht die Anzeige in einen "Schlafmodus", es wird nur ein 
Dezimalpunkt angezeigt.
Dabei geht dann die Stromaufnahme auf etwa 40mA zurück. Immer noch viel.

Die Stromsparmodi des ATMega verwende ich noch nicht.

Die Stromversorgung ist noch eine kleine Herausforderung. In der Theorie 
braucht das Gerät 5V. In der Praxis funktioniert es auch mit einer 
LiPo-Zelle. Dabei fließen im Ruhemodus 35mA und bei voller Anzeige etwa 
90.

Was fehlt noch? Ein Gehäuse, da muß ich mir noch etwas gutaussehendes 
ausdenken.

So, für Hinweise und Kritik bin ich dankbar. Schaltung und 
BASCOM-Sourcen dann, wenn sich jemand dafür interessiert.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Gero D. schrieb:
> Schaltung und BASCOM-Sourcen dann, wenn sich jemand dafür interessiert.

Ohne die hat es unter "Projekte & Code" nichts verloren.

von Gero D. (srswift)


Lesenswert?

Da hast Du natürlich recht. Wenn sich keiner dafür interessieren sollte, 
kann es aber sowieso gelöscht werden.

von Wilhelm M. (wimalopaan)


Lesenswert?

Minitrons hätte ich noch retro-iger gefunden ;-)

von Ralf-Peter G. (ralfpeter)


Lesenswert?

Hallo Gero,

lass doch mal Deine Schaltung und das Programm sehen, man kann ja nur 
dazulernen.

von Gero D. (srswift)


Lesenswert?

Wilhelm M. schrieb:
> Minitrons hätte ich noch retro-iger gefunden ;-)

Stimmt natürlich. Das beißt sich aber mit meinem Lasterhaft (halbwegs 
klein, praktisch verwendbar). Und wirklich beschaffbar sind die netten 
kleinen Röhren ja auch nicht wirklich ...

von Gero D. (srswift)


Angehängte Dateien:

Lesenswert?

Ralf-Peter G. schrieb:
> Hallo Gero,
>
> lass doch mal Deine Schaltung und das Programm sehen, man kann ja nur
> dazulernen.

Hier der Schaltplan. Im Prototyp ist natürlich kein 7805 als 
Festspannungsregler eingebaut, sondern ein LM 2931 Z-5, der ist aber 
anschlusskompatibel.

von Gero D. (srswift)


Angehängte Dateien:

Lesenswert?

Ralf-Peter G. schrieb:
> Hallo Gero,
>
> lass doch mal Deine Schaltung und das Programm sehen, man kann ja nur
> dazulernen.

UNd hier die BASCOM Sourcen, ist so sicher nicht schön, man sieht 
deutlich, dass die Software über viele Iterationen und mit einigen 
Irrwegen entstanden ist. Jetzt, wo sie halbwegs funktioniert, könnte sie 
ein Refactoring vertragen, (z.B. entweder Subs oder GOSUB, lokale 
Variablen, ...)

Man hat halt nie Zeit, etwas richtig zu machen, aber immer Zeit, etwas 
noch einmal zu machen.

von Theor (Gast)


Lesenswert?

Gero D. schrieb:
> Eigentlich verwendet ja kein Mensch mehr einen Taschenrechner. Aber da
> ein wahrer Bastler über die Frage "Wofür soll das gut sein?" erhaben
> ist, warum nicht?
> [...]

Ich finde Deinen Taschenrechner richtig nett. Eine hübsche Sache. Toll 
gemacht. :-)

(Die Displays sehen auf dem Foto richtig "strahlend" aus. Vielleicht 
könnte man den Strom noch um einiges reduzieren und es trotzdem gut 
ablesen).

von Frank K. (fchk)


Lesenswert?

Ein LCD wäre vielleicht sinnvoller gewesen. So eines z.B.: ebay 
#391500775918

Als Taster hätte ich die hier genommen:
https://www.reichelt.de/eingabetaster-schaltspannung-24v-ws-dit-1-ws-p7143.html?

fchk

von Michael B. (laberkopp)


Lesenswert?

Gero D. schrieb:
> Hier der Schaltplan

AVCC und AGND sollte man wohl anschliessen wenn man PORTC benutzt, auch 
ohne Analogfunktion zu nutzen.

Ansonsten schöne Platine.

Über die Verwendung von float-Funktionen wirst du dich noch ärgern,
1 ENTER 3 / 3 * sollte halt 1 ergeben.

von Gero D. (srswift)


Lesenswert?

Michael B. schrieb:
> Gero D. schrieb:
>> Hier der Schaltplan
>
> AVCC und AGND sollte man wohl anschliessen wenn man PORTC benutzt, auch
> ohne Analogfunktion zu nutzen.
>
> Ansonsten schöne Platine.
>
> Über die Verwendung von float-Funktionen wirst du dich noch ärgern,
> 1 ENTER 3 / 3 * sollte halt 1 ergeben.

Welche negativen Auswirkungen haben die offenen AVCC und AGND in der 
Praxis?

Mein Rechner gibt bei 1 ENTER 3 / 3 * genau 1 aus. Die Double-Lib ist, 
soweit ich gesehen hab, richtig gut!

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Gero D. schrieb:
> Hier der Schaltplan.

Gero D. schrieb:
> UNd hier die BASCOM Sourcen,

Danke. Jetz kann's hierbleiben.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Tolles Projekt!
Endlich mal ein UPN-Rechner :-) Ansonsten kannte ich als Nachbau nur die 
Serie von swissmicros. Könntest du noch eine kleine Ansicht der 
Tastenbelegung und die Eagle-Files hier reinstellen. Das würde die 
Nachnutzung erheblich vereinfachen.

von Matthias 🟠. (homa)


Lesenswert?

Finde das Projekt interessant. Reicht die freie Bascom Variante aus? 
Würde mich über den Quellcode freuen.
Als Tastatur Schablone könntest Du eine Pappe bedrucken, Löcher 
bohren/stanzen und mit Abstandshaltern an den vorhandenen Löchern in der 
Platine befestigen. Dann sieht der Prototyp nicht so unvollständig aus.

Da gab es eine zeitliche Überschneidung :-) - Danke für den Code!
Ja die Eagle Datei wäre auch noch toll ...

: Bearbeitet durch User
von Gero D. (srswift)


Angehängte Dateien:

Lesenswert?

So, hier die Tastaturbelegung. Und die Leiterplattenfiles.
Soweit ich weiß, unterstützt die BASCOM-Demoversion den Flash immer nur 
zur Hälfte, mit 45% ist der Taschenrechner da noch knapp drunter, es 
könnte also klappen. Ich hab die Vollversion, kann es also leider nicht 
überprüfen.

Das mit dem Dimmen der Anzeige ist eine Gute Idee, könnte ich als 
Zweitbelegung auf eine der Tasten legen ... Danke für die Idee.

Beide Chips unterstützen ja jeweils einen Ruhemodus, da könnte dann noch 
mal Strom gespart werden. Schaumerma.

von Enrico Eichelhardt (Gast)


Angehängte Dateien:

Lesenswert?

Wenn ich schon einen Taschenrechner selber bauen müsste, dann würde ich 
die Tastatur genauso bauen wie bei einem Telefon. Sonst muss man beim 
Tippen jedesmal umdenken.

Telefon:
123
456
789
 0

Taschenrechner:
789
456
123
0

von Joachim B. (jar)


Lesenswert?

Enrico Eichelhardt schrieb:
> die Tastatur genauso bauen wie bei einem Telefon. Sonst muss man beim
> Tippen jedesmal umdenken.

schon mal auf den Nummernblock deiner PC Tastatur geschaut?

Umdenken musst du eh immer, weder werden die die Nummernblöcke noch dein 
Telefon umbauen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Enrico Eichelhardt schrieb:
> dann würde ich die Tastatur genauso bauen wie bei einem Telefon.

Wenn Du ein dänisches Telephon nimmst, machst Du alles richtig.

https://i.etsystatic.com/13404655/r/il/77d15f/1028456476/il_570xN.1028456476_hcqf.jpg

von Josef G. (bome) Benutzerseite


Lesenswert?

Gero D. schrieb:
> So, hier die Tastaturbelegung.

Was ist mit Ziffern A bis F ?

Sind auch auf 7-Segment-Anzeigen darstellbar
mit Kleinbuchstaben b und d : A b C d E F

von Gero D. (srswift)


Lesenswert?

Josef G. schrieb:
>
> Was ist mit Ziffern A bis F ?
>
> Sind auch auf 7-Segment-Anzeigen darstellbar
> mit Kleinbuchstaben b und d : A b C d E F

Guter Einwand. Ich hab mich dagegen entschieden, die Hexadezimaleingabe 
und Darstellung mit einzubauen. Zum einen hätten die 6 zusätzlichen 
Ziffern die Tastatur
- entweder vergrößert. Bei meinem Schaltungsansatz wären noch vier 
weitere Tasten möglich, hätte das Kraut nicht fett gemacht, aber gefiel 
mir nicht.
- oder die Rechenfunktionen (Winkel, Logarithmus u.s.w) in die "zweite 
Reihe" verbannt. Dabei hätte ich die schöne Belegung der Rechentasten 
mit Funktion/Umkehrfunktion verloren
- eine 2. Funktionstaste und damit eine Dreifachbelegung. Das wollte ich 
(noch) nicht.

Dazu kommt noch, daß ich die Hexadezimalrechnung immer dann benötige, 
wenn ich eh am Rechner sitze. Die Winkelfunktionen brauch ich schon mal 
in der Werkstatt.

von Enrico Eichelhardt (Gast)


Angehängte Dateien:

Lesenswert?

Rufus Τ. F. schrieb:
> Wenn Du ein dänisches Telephon nimmst, machst Du alles richtig.

Gute Idee. Das Telefon auf den Taschenrechner auszurichten ist natürlich 
auch eine Möglichkeit. Das müsste dann auch noch mit TV Fernbedienungen 
so gemacht werden. Im Prinzip eine Einführung eines internationalen 
Standards für Nummernblöcke.

Joachim B. schrieb:
> schon mal auf den Nummernblock deiner PC Tastatur geschaut?

Ja, genau danach sollte man sich dann richten.

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Wenn UPN, dann sollte man ruhig auf die Erfahrungen von HP 
zurückgreifen. Als HP nach der zwanziger und dreißiger Serie die HP-10C 
(Voyager) Serie einführte war die Ergonomie für eine zügige UPN 
Bedienung perfekt. Diese wird heute noch verwendet, HP35 oder DM42 als 
Nachfolger des legendären HP41. Ich wage zu behaupten, ernsthafte UPN 
Nutzer mögen nur genau dieses Layout.
Im Prinzip ist jedoch die Tastenbelegung für einen Nachbau relativ egal, 
da Gero sein Programm so aufgebaut hat, dass die Funktion auf einen 
beliebigen Scan Code gemappt werden kann.

von Gero D. (srswift)


Angehängte Dateien:

Lesenswert?

Ein kleines Update der Software. Ein wenig Codebereinigung, Das Dimmen 
der Anzeige liegt jetzt als Zweitbelegung auf dem "+", ein 
Zufallszahlengenerator auf dem "*".

Für Hinweise / Fehlerkorrekturen bin ich dankbar.

von Gero D. (srswift)


Angehängte Dateien:

Lesenswert?

So richtig fertig ist ein Projekt ja eigentlich nie. Ein Gehäuse gehört 
für mich aber dazu, damit aus einer Leiterplatte ein Gerät wird. Also, 
dem 3D-Drucker ein Modell zu lesen gegeben und ihn einige Stündchen 
arbeiten lassen. Ein einzelliger LiPo-Akku, eine Ladebuchse und ein 
Schiebeschalter passen auch noch mit hinein.
Das kann sich schon fast sehen lassen. Hier und da hakelt es noch ein 
wenig.

Vor allem brauch ich aber noch eine Idee, die Tastenköpfe gescheit zu 
beschriften. Zweifarbiger Druck ist mir zu aufwändig. Edding scheidet 
wegen meiner schauerlichen Handschrift aus. Vielleicht hat ja hier 
jemand eine Idee.

Den gCode für einen Ultimaker 2+ könnte ich auf Wunsch ebenfalls zur 
Verfügung stellen.

: Bearbeitet durch User
von Steffen S. (dl7ate)


Lesenswert?

Hallo Gero,

das Projekt wird ja immer besser ?, vielen Dank für die darin gesteckte 
Arbeit und vor allem die Veröffentlichung.

Leider fällt mir auf die schnelle auch keine Lösung für die saubere 
(händische ?) Tastenbeschriftung ein, aber es ist ja noch früh am 
Morgen.

An den 3D–Druckerdaten hätte ich Interesse, seit X-Mas 2018 steht so ein 
Ding auch bei mir, alles andere für den Nachbau ist bereits vorbereitet.

Kurze Frage dabei : Hast Du noch eine Platine übrig ? Dann bräuchte ich 
die nicht extra in Auftrag geben, habe aktuell keine anderen Projekte 
zum "mitbeauftragen".

Viel Spaß und Erfolg weiterhin bei der Entwicklung, Steffen, '7ATE

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Tolle Sache!

Auch ich hätte Interesse an einer Platine bzw. an den Druckerdaten. Das 
Projekt scheint mir hervorragend geeignet, um mit Schülern etwas 
aufzubauen. Wenn es noch mehr Interessenten gibt, würde ich auch einen 
Satz Platinen bestellen. In Geros Variante „Boris V6“ habe ich noch 
AGND, AREF und AVCC beschaltet und das Layout angepasst.

von Matthias 🟠. (homa)


Lesenswert?

Ich habe bereits Platinen bestellt. Allerdings in der original Fassung 
von Gero. Wenn da melde ich mich, kann bis zu 6 Stück zum 
Selbstkostenbetrag abgeben ...

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Dann melde ich mich mal gleich für ein Exemplar.

von Joachim B. (jar)


Lesenswert?

Gero D. schrieb:
> Vor allem brauch ich aber noch eine Idee, die Tastenköpfe gescheit zu
> beschriften. Zweifarbiger Druck ist mir zu aufwändig. Edding scheidet
> wegen meiner schauerlichen Handschrift aus. Vielleicht hat ja hier
> jemand eine Idee.

ich hätte ja gesagt Photodrucker Canon Selphy da gibt es Ministicker 
selbstklebend
https://i1.adis.ws/i/canon/mini-stickers?w=536&qlt=70&fmt=jpg

von Matthias 🟠. (homa)


Lesenswert?

Ich suche gerade die Teile zusammen. Gar nicht so einfach. Da ich schon 
die Platinen bestelle und selber 4 brauche (Kinderprojekt), sich schon 2 
gemeldet haben sind "nur" noch 4 übrig.

Jetzt habe ich vor die Displays zu bestellen. Die sind aber nur im 50er 
Paket richtig preiswert.
Wer würde sich hier beteiligen? Bitte hier kurz posten. Dann bestelle 
ich!
Habe das hier gefunden CL 3641AH - Kann das mal bitte einer verifizieren 
- danke.

https://de.aliexpress.com/item/Common-Cathode-Red-4-Bit-0-36-Inch-Digital-Tube-3641AH-Nixie-Tube-Light-50pcs/32859321990.html?isOrigTitle=true


Taster bestelle ich auch! Wer will sich hier beteiligen?

@Gero D.: Auf Deinem Bild sind die mit schwarzem Taster, dann wären das 
die B3F-1020 ?! Ich würde aber aus Preisgründen die B3F-1000 nehmen. 
Druck 0.98 N ist gleich, allerdings die Bauhöhe nur 4,3 mm anstatt wie 
bei Dir dann 5mm. sehe ich das richtig? Sollte kein Problem darstellen, 
es sei denn mit dem Gehäuse von Dir. Bitte schreibe doch mal Deine 
Bauhöhe der Taster hierhin.

Den MAX 7219 CNG aufzutreiben ist auch nicht ganz günstig. Bisher bei 
Reichelt der beste Preis ... ODER auch hier

https://de.aliexpress.com/item/Free-shipping-1PCS-LOT-MAX7219CNG-MAX7219-DIP-24/32633586633.html?ws_ab_test=searchweb0_0,searchweb201602_5_10320_10065_10068_10547_319_317_10548_10696_453_10084_454_10083_433_10618_431_10304_10307_10820_10821_537_10302_536_10843_10059_10884_10887_100031_10319_321_322_10103,searchweb201603_56,ppcSwitch_0&algo_expid=4e944e36-cbd0-4640-ac08-f71b95e7a538-5&algo_pvid=4e944e36-cbd0-4640-ac08-f71b95e7a538

Dann mach so langsam aber nur eine Sammelbestellung Sinn, also wer von 
euch ist dabei?

von Gero D. (srswift)


Angehängte Dateien:

Lesenswert?

Hallo,

Ich hab aus meiner Prototypenbestellung 2 Platinen übrig, wer mag, kurze 
Nachricht. Meine Kosten dafür waren jeweils 16 Euro.

Mein Gehäusemodell braucht noch ein paar kleine Korrekturen, die Tasten 
im unteren Bereich klemmen immer mal. Auch insgesamt sin die Toleranzen 
noch nicht so, daß man beim Zusammenbauen hier und da ins Fluchen kommt. 
Das kann man besser machen. Also bitte etwas Geduld, die 3D-Modelle 
kommen noch.

Niedrigere Taster sind kein Problem. Im 3D-Modell müsste man dann nur 
die Tasten im unteren Bereich etwas aufdecken, das ist einfach gemacht, 
Ich würde die Tastenköpfe dann in unterschiedlichen Dicken modellieren.

Bei einer Sammelbestellung von Displaymodulen würde ich gern 4 Stück 
haben wollen...

von Joachim B. (jar)


Lesenswert?

Joachim B. schrieb:
> Gero D. schrieb:
>> Vor allem brauch ich aber noch eine Idee, die Tastenköpfe gescheit zu
>> beschriften.

zu meinem Vorschlag hast du keine Meinung?

von Steffen S. (dl7ate)


Lesenswert?

Matthias H. schrieb im Beitrag

> Jetzt habe ich vor die Displays zu bestellen. Die sind aber nur im 50er
> Paket richtig preiswert.
> Wer würde sich hier beteiligen? Bitte hier kurz posten. Dann bestelle
> ich! Habe das hier gefunden CL 3641AH - Kann das mal bitte einer
> verifizieren - danke.
>

Hallo Matthias,
ich schließe mich einer "Sammelbestellung" der Displays an.

Steffel

von srswift (Gast)


Lesenswert?

Joachim B. schrieb:
> Joachim B. schrieb:
>> Gero D. schrieb:
>>> Vor allem brauch ich aber noch eine Idee, die Tastenköpfe gescheit zu
>>> beschriften.
>
> zu meinem Vorschlag hast du keine Meinung?

Oh doch.

Danke für Deine Idee.

Die Oberfläche meiner Tastenköpfe ist durch den 3D-Druck recht rauh. Bin 
gerade dabei, unterschiedliche Aufklebefolien zu probieren, durch die 
Rauhheit halten diese aber nicht so optimal. Die Fläche ist mit 
9.6x5.6mm auch nicht so groß.

Am besten haben bisher die Wasserschiebebilder aus dem Plastmodellbau 
abgeschnitten. Aber ob / wie man die drucken kann, und wie ausdauernd 
die dann sind, weiß ich noch nicht.

von Gero D. (srswift)


Lesenswert?

Matthias H. schrieb:
> @Gero D.: Auf Deinem Bild sind die mit schwarzem Taster, dann wären das
> die B3F-1020 ?! Ich würde aber aus Preisgründen die B3F-1000 nehmen.
> Druck 0.98 N ist gleich, allerdings die Bauhöhe nur 4,3 mm anstatt wie
> bei Dir dann 5mm. sehe ich das richtig? Sollte kein Problem darstellen,
> es sei denn mit dem Gehäuse von Dir. Bitte schreibe doch mal Deine
> Bauhöhe der Taster hierhin.

Hallo,

ich hab am Ende dann RND 210-00187 Printtaster, THT, 1,57 N, 6 x 6 x 4,3 
mm aus dem reich...-Katalog verbaut. das dürfte den von Dir ausgesuchten 
ziemlich genau entsprechen.

gero

von Matthias 🟠. (homa)


Angehängte Dateien:

Lesenswert?

srswift schrieb:
> Die Oberfläche meiner Tastenköpfe ist durch den 3D-Druck recht rauh.

Probier doch Aceton zum glätten ... dann zusätzlich Modellbaukleber für 
die Aufkleber.


Ich habe hier versucht mal eine Sammelbestellungsübersicht zu erstellen 
...

Versand kann noch diskutiert werden, aber irgendwie muss das Zeug ja zu 
euch :-)
Zahlung geht via PayPal oder Überweisung - alles später wenn die Waren 
hier sind.

Gero D. schrieb:
> RND 210-00187 Printtaster

Okay das hat sich jetzt überschnitten, aber vielen Dank fürs raus 
suchen.
Die Tasten sind ja dann doch gleich hoch. Aber man müsste eher die 
yellow nehmen wegen dem N
https://www.mouser.de/datasheet/2/307/en-b3f-13826.pdf


Ist Mouser eigentlich mit MwSt oder muss die noch (habe ich jetzt getan) 
drauf gerechnet werden? Vorschlag wäre hier sonst 280 Taster 
Versandkosten frei zu bestellen, falls es genug Interesse gibt. Sonst 
ist für mich aber Reichelt die Alternative.

von Matthias 🟠. (homa)


Lesenswert?

@Gero D.

Können die ICs in Deinem Gehäuse gesockelt werden? Oder ist dann der 
Platz zu knapp?

von Gero D. (srswift)


Lesenswert?

Matthias H. schrieb:
> @Gero D.
>
> Können die ICs in Deinem Gehäuse gesockelt werden? Oder ist dann der
> Platz zu knapp?

Mit meinem Gehäuse definitiv zu knapp.

von R. S. (ic_tester)


Lesenswert?

Hallo zusammen,

erstmal tolles Projekt.

Matthias H. schrieb:
> Ich habe hier versucht mal eine Sammelbestellungsübersicht zu erstellen...

Gibt es schon eine grobe Übersicht was bei einer Sammelbestellung ein 
Bausatz dann ca. kosten würde.

Hätte auch Interesse dran.

Gruß ic_tester

von Gero D. (srswift)


Lesenswert?

Gero D. schrieb:
> Matthias H. schrieb:
>> @Gero D.
>>
>> Können die ICs in Deinem Gehäuse gesockelt werden? Oder ist dann der
>> Platz zu knapp?
>
> Mit meinem Gehäuse definitiv zu knapp.

Hab gerade noch mal nachgemessen, die Displays sind 7.2mm hoch. Ein 
gesockelter IC mehr als 8. Zumindest bei den mir vorliegenden Sockeln.

Die Displays bündig mit der Gehäuseoberfläche abschließen zu lassen 
sieht m.E. besser aus als irgendein Schacht.

gero

P.S. bei einer Sammelbestellung würde ich auch noch mal 2 Sätze Tasten 
abnehmen. Man weiß ja nie...

: Bearbeitet durch User
von Joachim B. (jar)


Lesenswert?

Joachim B. schrieb:
> ich hätte ja gesagt Photodrucker Canon Selphy da gibt es Ministicker
> selbstklebend
> https://i1.adis.ws/i/canon/mini-stickers?w=536&qlt=70&fmt=jpg

srswift schrieb:
>> zu meinem Vorschlag hast du keine Meinung?
>
> Oh doch.
> Danke für Deine Idee.

immerhin

> Am besten haben bisher die Wasserschiebebilder aus dem Plastmodellbau
> abgeschnitten. Aber ob / wie man die drucken kann

deswegen wegen drucken, die miniSticker vom Selphy
Ich weiss nur das die
1. gedruckt werden können &
2. finger- begrabbelfest sind

Ich hatte, Bilder und Sticker alles schon gedruckt und getestet, nur 
diese Ministicker noch nicht, gehe aber davon aus das die genauso 
finger- begrabbelfest sind wie alle anderen.

es werden 3 Farben per Thermotransfer aufgebracht und zuletzt die 
Schutzschicht.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Matthias H. schrieb:
> Ich habe hier versucht mal eine Sammelbestellungsübersicht zu erstellen
> ...

Vielen Dank! Für mich bitte auch je einen Satz Display, MAX7219 und 
Taster.

von Matthias 🟠. (homa)



Lesenswert?

Ronny S. schrieb:
> Gibt es schon eine grobe Übersicht was bei einer Sammelbestellung ein
> Bausatz dann ca. kosten würde.
>
> Hätte auch Interesse dran.
>
> Gruß ic_tester

Also einen genauen Preis zu sagen ist schwierig. Zur Zeit sind noch 
Bauteile aus der Sammelbestellung erhältlich. In der Zeile von 
feinmechaniker siehst Du die 13,65 für 1Set + weitere Kleinteile so wie 
den ATMEGA 328P-PU (alles ca. 3-4 EUR) die man auch noch braucht.

@ Gero D.: Kannst Du hier die Bestellnummern der Teile von Reichelt 
angeben?
Da ich dort eh den IC (ist im Angebot für 1,70) und weiteres bestelle 
kann ich hier die Sets bei Wunsch ergänzen.

Welche Schalter sind den jetzt gewünscht. Unterschiede siehe Bilde. Ich 
tendiere zu den B3F-1000 von Mouser, will das aber nicht alleine 
entscheiden.

Sammelbestellung ist aktualisiert - bitte mal selber prüfen.

von Gero D. (srswift)


Angehängte Dateien:

Lesenswert?

Ich hatte von Reichelt die

* Taster RND 210-00187
* ATMEGA 328P-PU
* LM 2931 Z-5.0

bezogen.

Weiter noch habe ich folgendes verbaut (und in das Gehäuse 
"hineinkonstruiert". Diese Teile (aus dem Modellbaubereich) hatte ich 
mehr oder weniger gerade zur Hand.

* einen 400mAh LiPo Einzeller

Conrad energy Modellbau-Akkupack (LiPo) 3.7 V 400 mAh Zellen-Zahl: 1 10 
C Softcase Flachstecker

* Eine Ladebuchse

Modelcraft 71314 Akku Stecker BEC

Der Schiebeschalter ist ein einpoliger Umschalter, ebenfalls aus dem 
Modellbaubereich, da sollten aber die verschiedensten Varianten 
funktionieren.

gero

von Matthias 🟠. (homa)


Lesenswert?

Gero D. schrieb:
> Ich hatte von Reichelt die
>
> * Taster RND 210-00187
> * ATMEGA 328P-PU
> * LM 2931 Z-5.0
>
> bezogen.

Ja Gero, das habe ich heraus gelesen. :-)
Aber suche mal bitte bei Reichelt die Kleinteile heraus. Da ist man 
sonst immer lange beschäftigt, Du kannst auf Deine alten Bestellungen 
schauen. Daher meine Frage nach den Bestellnummern der Cs, 
Spannungsregler, etc.
Danke!

Mir geht es bei den Tastern um die Druckempfindlichkeit. Daher meine 
Frage ob ich die Omron nehmen soll.
Konkret gefragt, nimmst Du auch 2 Sätze wenn ich die B3F-1000 von Mouser 
bestelle?

: Bearbeitet durch User
von Gero D. (srswift)


Lesenswert?

Matthias H. schrieb:

> Ja Gero, das habe ich heraus gelesen. :-)
> Aber suche mal bitte bei Reichelt die Kleinteile heraus. Da ist man
> sonst immer lange beschäftigt, Du kannst auf Deine alten Bestellungen
> schauen. Daher meine Frage nach den Bestellnummern der Cs,
> Spannungsregler, etc.

Mach ich heute Abend.

> Mir geht es bei den Tastern um die Druckempfindlichkeit. Daher meine
> Frage ob ich die Omron nehmen soll.
> Konkret gefragt, nimmst Du auch 2 Sätze wenn ich die B3F-1000 von Mouser
> bestelle?

Ich denk, die sind genau so gut geeignet. (wenn die Schaltlogik und 
Kontaktbelegung die gleiche ist). Ich nehme die beiden Sätze auf jeden 
Fall.

gero

von Gero D. (srswift)


Lesenswert?

So, hier der Kleinkram:

Elkos: Vorgesehen waren 470uF, 16V. Aus Platzgründen (Bauhöhe) habe ich 
nur 2x 220uF 6.3V verbaut. Die geringere Kapazität macht keine Probleme. 
Bei einzelligem LiPo-Akku genügen vor und hinter dem Spannungsregler 
6.3V. Ich habe in der Vergangenheit mit den kleinen SMD-Elkos, die mit 
geradegebogenen Beinchen "normal" durchgesteckt montiert werden, gute 
Erfahrungen gemacht.

2x Artikel-Nr.: S-V 220U 6,3 SMD-Elko, 220 µF, 6,3 V, 85°C, 1000 h, 20%
3x Artikel-Nr.: Z5U-5 100N Vielschicht-Keramikkondensator 100N, 20%
1x Artikel-Nr.: YAG 4FTE52-10K Widerstand, Metallschicht, 10 kOhm, 0204, 
0,4 W, 1%
1x Artikel-Nr.: RND 1N4148 Schalt-Diode, 100 V, 200 mA, DO-35
1x Artikel-Nr.: MPE 006-1-006 Präzision-Sockelstreifen RM 2,54 6-pol.

gero

von Matthias 🟠. (homa)


Lesenswert?

Danke gero!

Ich habe mal einen Reichelt Warenkorb gebaut:

https://www.reichelt.de/my/1550328

Das wären dann 3,26 im Firefox und 3,24 im Edge ??!! Je nach Browser 
:-))

Matthias H. schrieb:
> Ronny S. schrieb:
>> Gibt es schon eine grobe Übersicht was bei einer Sammelbestellung ein
>> Bausatz dann ca. kosten würde.

Also ic_tester das sind wie vorhergesagt <20 EUR
z.Zt. 1x Satz Sammelbestellung 13,65 + Reichelt 3,26 + Porto von 
Reichelt

von Gero D. (srswift)


Angehängte Dateien:

Lesenswert?

So, die Hakeligkeit des Gehäuses ist korrigiert. Die Ursache versteckte 
sich natürlich mal wieder zwischen den Ohren. Anbei die 3D-Daten (als 
stl und als Code für den Ultimaker2+ und 3.

von Gero D. (srswift)


Angehängte Dateien:

Lesenswert?

Und dann noch ein Paar Bilder von der Montage. Die Bohrungen müssen noch 
nachgebohrt werden. Der 3D-Druck hinterlässt hier und da Grate, die 
müssen natürlich weg. Besonders die Tasten brauchen etwas Zuwendung mit 
Sandpapier.

von Gero D. (srswift)


Angehängte Dateien:

Lesenswert?

Noch ein paar Details zum Gehäuse:
Mein Prototyp ist aus PLA mit der 0.4er Düse gedruckt. Dabei bin ich bei 
den cura-Vorgaben geblieben, nur den Füllgrad hab ich auf 50% gesetzt. 
Mein Druck war etwas unsauber, ich denke, da muss man noch mal an den 
Einstellungen drehen.
Das Akkufach ist mit 47x43mm groß genug, daß auch andere Akkus 
hineinpassen sollten.
Der Schiebeschalter entspricht in seinen Abmessungen dem T 215 
Schiebeschalter-Miniatur, Lötanschluss, 1x UM von Reichelt, der könnte 
eigentlich mit auf die Bestellliste.
Die Ladebuchse hatte ich weiter oben schon erwähnt. Ich hab absichtlich 
so etwas "exotisches" verbaut. Zum einen hab ich aus dem 
Modellbaubereich ein LiPo-Ladegerät mit genau so einem Ladekabel. Zum 
anderen wollte ich nicht irgendeine Gleichspannungsbuchse verbauen, 
nicht daß irgendjemand da einfach mal 12V anlegt und den Akku sprengt. 
Platzmässig würde auch noch eine kleine Ladeschaltung ins Gehäuse 
passen, dann wäre das etwas anderes...

So, die Tasten sind noch umbeschriftet, da sind noch Experimente im 
Gang. Ansonsten kann das Gerät jetzt in die Praxiserprobung gehen.

: Bearbeitet durch User
von Joachim B. (jar)


Lesenswert?

Gero D. schrieb:
> Die Ladebuchse hatte ich weiter oben schon erwähnt. Ich hab absichtlich
> so etwas "exotisches" verbaut.

warum das?

eine miniUSB hätte genügt, andere schaffen das auch:
Beitrag "Re: my new Flame"

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Joachim B. schrieb:
> warum das?

Gero D. schrieb:
> Ich hab absichtlich
> so etwas "exotisches" verbaut. Zum einen hab ich aus dem
> Modellbaubereich ein LiPo-Ladegerät mit genau so einem Ladekabel.

von Joachim B. (jar)


Lesenswert?

das hat aber nur er, jeder andere sofort hätte ein USB Kabel

von Gero D. (srswift)


Lesenswert?

Joachim B. schrieb:
> das hat aber nur er, jeder andere sofort hätte ein USB Kabel

Ohne Ladeelektronik im Gerät hätte jeder andere dann aber die Gefahr der 
Überladung des Akkus. Solange ich die Zelle direkt an der Buchse (bei 
Schiebeschalter AUS) habe, möchte ich keinen Stecker mit irgendeiner 
Spannung anstecken können.

Das Gehäuse hat genügend Raum für andere Buchsen und auch ein 
MCP73831T-Board findet garantiert ein Plätzchen. Jeder andere kann das 
anders machen.

: Bearbeitet durch User
von Joachim B. (jar)


Lesenswert?

Gero D. schrieb:
> Jeder andere kann das
> anders machen.

verstehe ich ja, es ist dein Baby, aber weil du es als Projekt 
eingestellt hast wäre etwas mehr Toleranz anderen gegenüber echt nett 
gewesen.
Ich für meinen Teil denke da eher was braucht die Mehrheit?

von Gero D. (srswift)


Angehängte Dateien:

Lesenswert?

Die "Praxiserprobung" hat gleich einmal einen dicken bug offenbart, bei 
der Eingabe wird die erste Nachkommastelle falsch ausgewertet. Ist 
korrigiert.

von Gero D. (srswift)


Angehängte Dateien:

Lesenswert?

Noch ein kleines Update der Software. Es behebt einen Anzeigefehler bei 
kleinen negativen Zahlen im Float-Modus und fügt auf der Tasten 7,8,9 
als Zweitbelegung Unrechnungskonstanten (ft>m, NM->km, mm->inch) hinzu.

von Gero D. (srswift)


Angehängte Dateien:

Lesenswert?

Für alle die, die sich nicht mehr so richtig erinnern können, wie ein 
Taschenrechner sich so anfühlt, hier ein kurzes Video vom aktuellen 
Stand des Prototypen.

von Matthias 🟠. (homa)


Angehängte Dateien:

Lesenswert?

So bin heute von der Reise zurück und es wurden heute früh schon die 
Platinen geliefert - im schönen rot!
Warenkorb bei Reichelt ist auch aktualisiert worden. (Die 2ct 
Preisunterschied waren, weil ich die Diode vergessen hatte)
https://www.reichelt.de/my/1550328

Jetzt warten wir nur noch auf den Rest, die Schalter bestelle ich dann 
jetzt bei Mouser am Montag.
Schönes Rest WE.

Grüße
Matthias

: Bearbeitet durch User
von Gero D. (srswift)


Angehängte Dateien:

Lesenswert?

Um jedem anderen auch eine Möglichkeit zu geben, sein USB-Kabel 
anzustöpseln hab ich mal ein neues 3D-Druckmodell gebaut. Hier passt 
jetzt ein Micro USB Lader TP4056 - Baustein hinein. Damit kann man dann 
den Akku per USB laden. Zum Slicen hab ich eine neuere cura-Version 
genommen, das gedruckte Gehäuse sieht dabei deutlich "sauberer" aus.

von Matthias 🟠. (homa)


Angehängte Dateien:

Lesenswert?

Letzte Woche sind die Taster von Mouser eingetroffen. Ja es kommt die 
MwSt noch drauf. Die Tabelle ist also richtig mit 6,10. Ich habe für 
jeden einen Taster mehr bestellt, kommen also noch ein paar Cent drauf.

Druckpunkt empfinde ich als super.
Die Sets sind fertig sortiert und in Tütchen verpackt.

Es sind noch 2-3 Taster Sets übrig, je nachdem ob @ic_tester mitmacht!? 
Bitte gib mal Meldung.

Jetzt warten ich noch auf die China Sendungen, sollten auch bald kommen 
... Status sieht ganz gut aus. Wenn dann alles da ist, vervollständige 
ich die Sets und schreibe euch wegen der Adresse und Zahlung an.

Wer hat den jetzt Interesse an dem Reichelt Warenkorb? Sonst muss jeder 
die Dinge selber bestellen.

: Bearbeitet durch User
von Gero D. (srswift)


Angehängte Dateien:

Lesenswert?

Mit der bisherigen Softwareversion bleibt doch einiges im ATMega 
ungenutzt. Fast die Hälfte des FLASH, von RAM und EEPROM gar nicht zu 
reden. Also die nächste Version könnte programmierbar sein.
Dabei ist nicht einer der HP-Klassiker das Vorbild, sondern dieses eher 
klobige Gerät.
Es war in den 80ern mein treuer Begleiter durch mein 
Maschinenbaustudium. Die äußere Erscheinung provozierte manches 
abfällige Grinsen. Die inneren Werte waren für mich entscheidend. Über 
die Zeit entstanden für diesen, von mir liebevoll als "Boris 
Michailowitsch" bezeichneten, Taschenrechner eine Vielzahl von kleinen 
Programmen. Von eher mathematischen wie Nullstellensuche, bestimmtem 
Integral u.s.w. bis hin zu Wälzlagerlebensdauer, Balkenbiegung, 
Trägheitsmomenten und linearen Gleichungssystemen mit 3 Unbekannten.

Das alles mit 14 Zahlenspeichern und 100 Programmschritten. Und das 
sollte doch der Eigenbaurechner auch können, oder?

von Gero D. (srswift)


Angehängte Dateien:

Lesenswert?

Im Zuge der "Programmierbarmachung" musste ich die Tastaturbelegung ein 
klein wenig modifizieren.
Der 10er-Logarithmus ist raus geflogen, dafür ist die Taste oben rechts 
jetzt Start/stop und Umschalten zwischen Programmieren und Rechnen.
Die Winkelfunktionen sind als Zweitbelegung auf die Ziffern 4-9 
gewandert.Dafür sind in der zweiten Reihe jetzt GOTO, und so weiter.

Die Software hat einige Verbesserungsrunden über sich ergehen lassen 
müssen. Jetzt scheint sie zu tun, was sie soll.

In kürze:
10 Zahlenspeicher
100 Programmschritte
16 Unterprogrammebenen
GOTO, GOSUB, IF<0, IF=0 und IF>0

Da die Zahlenspeicher im Programmmodus doch recht häufig geschrieben 
werden, hab ich sie im RAM gecached und schreibe sie nur wenn der 
Rechner auf Eingaben wartet zurück in den EEPROM.

So, für Hinweise und Fehlerberichte bin ich dankbar.

In der nächsten Zeit werde ich versuchen, meine alten Programme auf 
meinem neuen Rechner auszuprobieren. Auf Wunsch lasse ich Euch an den 
Ergebnissen teilhaben.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?


von Gero D. (srswift)


Lesenswert?

Joe G. schrieb:
> Es gibt sogar ein Online Tool [1] dafür bzw. eine passende Android App
> [2]
>
> [1]
> 
https://web.archive.org/web/20150709020059id_/http://mk-61.moy.su:80/emulator.html
>
> [2] https://play.google.com/store/apps/details?id=com.cax.pmk.ext

Cool, das kannte ich noch gar nicht! Danke.

"Richtige Hardware" fühlt sich aber noch ein kleines bischen besser an 
:-)

gero

von Gero D. (srswift)


Lesenswert?

Hier mal ein Kleines Beispiel für den Programmiermodus (Das waren noch 
Zeiten damals)
1
00  CLEARX
2
01  STORE 8
3
02  RECALL 7
4
03  RECALL 8
5
04  +
6
05  STORE 8
7
06  RECALL 7
8
07  1
9
08  -
10
09  STORE 7
11
10  IF X > 0 GOTO 02
12
11  RECALL 8
13
12  HALT

Das ist die (nicht ganz optimale) Implementierung der "Schuljunge Gauss" 
- Aufgabe, das Aufaddieren einer Zahlenreihe. Wenn im Speicher 7 Am 
anfang
100 steht, rechnet die Schleife die Summe der Zahlen von 1-100. Und hat 
nach
etwa 50 Sekunden die richtige Lösung 5050.
Schneller ist Gauss sicher auch nicht gewesen :-)

: Bearbeitet durch User
von Haspel (Gast)


Lesenswert?

Gero D. schrieb:

> Schneller ist Gauss sicher auch nicht gewesen :-)

Kann sich nur um Ironie handeln, da Gauss es so gerechnet hat:

n(n +  1) / 2 = 100(100 + 1) / 2 = 5050

von Matthias 🟠. (homa)


Lesenswert?

Matthias H. schrieb:
> Reicht die freie Bascom Variante aus?

Gero D. schrieb:
> Soweit ich weiß, unterstützt die BASCOM-Demoversion den Flash immer nur
> zur Hälfte, mit 45% ist der Taschenrechner da noch knapp drunter, es
> könnte also klappen. Ich hab die Vollversion, kann es also leider nicht
> überprüfen.

Also ich habe gerade die Demo ausprobiert. Sie tut es nicht :-( Grenze 
ist 4KB und leider nicht 50% vom Flash. Zum Glück lieferst Du die bin 
mit und ich werde erst einmal diese testen.

Wer ist jetzt an den Kleinteilen von Reichelt noch interessiert? Ich 
werde diese Woche bestellen.

von Gero D. (srswift)


Angehängte Dateien:

Lesenswert?

Das mit dem Gauss konnte ich natürlich nicht auf mir sitzen lassen. Eine 
kleine Programmanpassung macht den Taschenrechner im 
Programmausführungsmodus viel schneller. Damit ist die Gauss-Aufgabe in 
26 Sekunden erledigt.

Außerdem hatte die CLearX-Funktion im Zahleneingabemodus noch einen 
Fehler. Also hier die V2.8 der Software (Programmierbarer 
Taschenrechner) und die 1.12 (nichtprogrammierbar) in korrigierter Form.

von Gero D. (srswift)


Lesenswert?

Und dann hier noch mal ein weiteres kleines Programm.
Archimedes, der große griechische Gelehrte, hat sich zeitlebens mit der 
Kreiszahl Pi beschäftigt. Von ihm stammt das Rechenverfahren, sich der 
Zahl Pi anzunähern, indem man in den Kreis Vielecke einzeichnet. Am 
Anfang ein Gleichseitiges Dreieck. Damit hätten wir eine erste Näherung 
von Pi=3. Im nächsten Schritt verdoppeln wir die Eckenzahl auf 6, dann 
auf 12 u.s.w. Das Vieleck nähert sich immer mehr dem Kreis an und den 
Umfang kann man mit dem Satz des Phytagoras berechnen. Nach der 
10.Verdoppelung der Eckenzahl ist Pi dann schon so genau, daß zwar noch 
nicht die Genauigkeit der Double-Mathematik, aber immerhin die 
8-stellige Anzeige  an ihre Grenze kommt. Hie die Programmierung für 
meinen Taschenrechner:

50   1
51   STORE 4
52   3
53   STORE 5
54   1
55   1
56   STORE 6
57   RECALL 4
58   RECALL 5
59   *
60   RECALL 5
61   2
62   *
63   STORE 5
64   RECALL 4
65   ENTER
66   *
67   4
68   <->
69   -
70   SQR
71   2
72   <->
73   +
74   SQR
75   RECALL 4
76   <->
77   /
78   STORE 4
79   RECALL 6
80   1
81   -
82   IF > 0 GOTO 57
83   HALT

Nach 13 Sekunden wissen wir dann, wie groß Pi ungefähr ist.

Archimedes hat dafür länger gebraucht.

Interessantes zu diesem Rechenverfahren kann man im Heft 4 des Magazins 
"kleinstrechner-TIPS" von 1986 nachlesen :-)

: Bearbeitet durch User
von Matthias 🟠. (homa)


Angehängte Dateien:

Lesenswert?

es fehlen nur noch die ICs MAX7219CNG, dann wird versendet.

von Matthias 🟠. (homa)


Angehängte Dateien:

Lesenswert?

2. Bild wurde verschluckt :-( ??!

Display passen aber wie man sieht.

: Bearbeitet durch User
von Matthias 🟠. (homa)


Angehängte Dateien:

Lesenswert?

Der Rest ist jetzt auch da. Werde diese Wochenende aber noch nicht zum 
zusammenstellen kommen. Wird dann kommende Woche erledigt und gehen dann 
in den Versand...
Die Teilnehmer erhalten die Tage eine PN

von Matthias 🟠. (homa)


Angehängte Dateien:

Lesenswert?

So die PNs sind raus. Anbei die finale Tabelle. Falls noch einer ein Set 
will, einfach kurz eine PN an mich oder hier einen Kommentar 
hinterlassen.

von Matthias 🟠. (homa)


Lesenswert?

Da noch zwei mitmachen und ein Set wollen, sind die Taster jetzt 
aufgebraucht. Und es gibt nur noch eine Platine, da srswift noch eine 
nimmt!
Update der Tabelle folgt später ...

von Matthias 🟠. (homa)


Angehängte Dateien:

Lesenswert?

... bitte schön. Ich packe dann heute/morgen Abend und es sollte am 
Donnerstag, spätestens Freitag in den Versand schaffen.

von Matthias 🟠. (homa)


Angehängte Dateien:

Lesenswert?

... okay das Sortieren ging schneller als gedacht. Jetzt besorge ich 
noch Kartons und verpacke das ganze Reichelt mäßig professionell :-)

von Matthias 🟠. (homa)


Angehängte Dateien:

Lesenswert?

Anbei das Update als Tabelle.

@dl7ate: Du pingst mich an wenn ich versenden soll.

@amad: Leider hatte ich heute noch keinen Zahlungseingang, kann erst am 
Freitag wieder prüfen und dann versenden ...

Versandmarken sind gerade online gekauft. Hoffe morgen alles an DHL zu 
übegeben.

ENDE der Sammelbestellung. Ich nehme keine weiteren Anfragen mehr an. 
Danke für alle hier beim mitmachen :-)

LG
homa

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Die Post hat gerade ein Päckchen abgeliefert, Dankeschön!

von Matthias 🟠. (homa)


Angehängte Dateien:

Lesenswert?

So ich habe selber mal den Bausatz fertig aufgebaut und geflasht. Siehe 
da es klappt alles. Jetzt muss ich mir noch überlegen ob ich bascom als 
Vollversion kaufe, da die Testversion wie festgestellt leider nicht 
ausreicht.

von Matthias 🟠. (homa)


Angehängte Dateien:

Lesenswert?

So ich habe mal versucht die Tastenbelegung der nicht programmierbaren 
Version zusammenzutragen. Ich selber habe noch ver_1.9 geflasht, habe 
aber bei zusammensuchen der Infos festgestellt das die aktuelle die 
ver_1.12 ist.

Anbei die Grafik. Leider ist das pi auf Taste 3 verunglückt, scheint an 
meinem LibreOffice zu liegen. Werde mal updaten ...

Ich habe nicht jede Belegung verstanden, bin aber auch kein Mathe 
Experte.
Fehler bitte melden, ich bemühe mich die besten Symbole bzw. 
Beschriftung zu finden. Dies ist ja auch für den Fall eines Drucks dann 
nötig.

Enter ist unten rechts. So klappt auch 5 3+ okay, aber wofür ist dieser 
Kreispfeil?
https://de.wikipedia.org/wiki/Umgekehrte_polnische_Notation

Leider kann ich kein russisch, hier ist die Enter Taste mit B Pfeil hoch 
gekennzeichnet, den Kreispfeil sehe ich auch nicht: 
https://web.archive.org/web/20150709020059id_/http://mk-61.moy.su:80/emulator.html

Die Sonne auf dem + ist für die Helligkeit des Display.

bin/hex/dec fände ich auch toll ... ich glaube ich kauf bascom doch :-)
So macht das auch nur halb soviel Spaß.

@Gero: Warum ist die Null so klein und nicht normal? In dem Simulator 
ist die 0 doch auch normal.

: Bearbeitet durch User
von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Matthias H. schrieb:
> Leider kann ich kein russisch, hier ist die Enter Taste mit B Pfeil hoch
> gekennzeichnet, den Kreispfeil sehe ich auch nicht:

ENTER ist auf russisch входить "frhodit" ;-)
Der Pfeil bedeutet, dass der Eingabewert vom X-Register im Stack immer 
eins weiter geschoben wird. Der "Kreispfeil" ist nicht notwendig. Es 
läßt sich ja alles schön im Simulator [1] ausprobieren wenn der 
выключатель "Einschalter" links oben betätig wurde.

[1] 
https://web.archive.org/web/20150709020059id_/http://mk-61.moy.su:80/emulator.html

von Gero D. (srswift)


Lesenswert?

Hallo,

Matthias H. schrieb:
> So ich habe mal versucht die Tastenbelegung der nicht programmierbaren
> Version zusammenzutragen. Ich selber habe noch ver_1.9 geflasht, habe
> aber bei zusammensuchen der Infos festgestellt das die aktuelle die
> ver_1.12 ist.

Die 1.12 enthält auch einige Fehlerkorrekturen, ist empfehlenswert.

>
> Anbei die Grafik. Leider ist das pi auf Taste 3 verunglückt, scheint an
> meinem LibreOffice zu liegen. Werde mal updaten ...

Sieht gut aus. Ich hab für die 2.8 (programmierbar) eine 
Tastenbeschriftung zusammengestellt und dafür Decals (schwarz und weiß) 
bestellt. Die müssten in den nächsten Tagen hier sein. Wenn die gut 
aussehen, poste ich die Vorlage hier.

>
> Ich habe nicht jede Belegung verstanden, bin aber auch kein Mathe
> Experte.
> Fehler bitte melden, ich bemühe mich die besten Symbole bzw.
> Beschriftung zu finden. Dies ist ja auch für den Fall eines Drucks dann
> nötig.

>
> Enter ist unten rechts. So klappt auch 5 3+ okay, aber wofür ist dieser
> Kreispfeil?
> https://de.wikipedia.org/wiki/Umgekehrte_polnische_Notation

Rolldown. Damit kann man zyklisch durch die 4 Rechenregister rollen. 
x->t t->z z->y y->x

Der ist beim russischen Original und im Simulator als Zweitbelegung auf 
dem "."

> @Gero: Warum ist die Null so klein und nicht normal? In dem Simulator
> ist die 0 doch auch normal.

Das ist Spielerei von mir. Es gab mal (1979) einen 
Taschenrechnerschaltkreis namens U821D. Mit dem hab ich in meiner 
Jugendzeit herumexperimentiert. Der hatte zum Stromsparen die Ziffern 0, 
6, 9 in modifizierter Form.

Kann im BASCOM umgestellt werden, der Code ist als Kommentar mit 
enthalten.

Ich hab gestern einen neuen Tastensatz gedruckt, mit etwas mehr 
Toleranz. Da ist dann der Aufwand der "Nacharbeit" kleiner, damit die 
Tasten nicht klemmen. Auch dafür werde ich das 3D-Modell hier noch 
posten.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Gero D. schrieb:
> Rolldown. Damit kann man zyklisch durch die 4 Rechenregister rollen.

Ist das wirklich sinvoll? Da muss man ja unglaublich mitzählen. Wenn ich 
bei meinen HP's vergessen habe was im Stack steht, drücke ich die 0 und 
mehrmals ENTER und dann ist er leer.

von Karl (Gast)


Lesenswert?

Hi

kannst du die Beschriftungen nicht in die Tasten / Gehäuse drucken ? 
Also ich meine als Vertiefung?
Dann mit Farbe fluten...

Hätte den Vorteil das es sich nicht abnutzt

von Srswift (Gast)


Lesenswert?

Joe G. schrieb:
>
> Ist das wirklich sinvoll? Da muss man ja unglaublich mitzählen. Wenn ich
> bei meinen HP's vergessen habe was im Stack steht, drücke ich die 0 und
> mehrmals ENTER und dann ist er leer.

Ich verwende es schon gelegentlich. Dabei geht der Stack auch nicht 
kaputt. Nach 4mal Rolldown ist wieder alles wie es war. Und ich weiß 
wieder, was im z-Register steht.

von Srswift (Gast)


Lesenswert?

Karl schrieb:
> Hi
>
> kannst du die Beschriftungen nicht in die Tasten / Gehäuse drucken ?
> Also ich meine als Vertiefung? Dann mit Farbe fluten...
>
> Hätte den Vorteil das es sich nicht abnutzt

Das ist richtig, aber recht aufwändig. Vor allem weil es ein bunter mix 
aus verschiedenen Fonts wird. Unbeschriftet sind halt alle Tasten 
gleich. Schaub wir mal, wie sich die Decals machen ...

von Matthias 🟠. (homa)


Lesenswert?

Hallo Gero. Danke für die Erläuterungen. Sei doch so nett und stell mal 
Dein Layout zur Verfügung, dann kann ich das evtl. zusammenführen.
Hast Du das Paket schon abgeschickt?

Kann man hier eigentlich auch ods Dateien anhängen? Oder wie tauscht man 
die hier am besten aus?

Joe G. schrieb:
> ENTER ist auf russisch входить "frhodit" ;-)
> Der Pfeil bedeutet, dass der Eingabewert vom X-Register im Stack immer
> eins weiter geschoben wird. Der "Kreispfeil" ist nicht notwendig.

Danke fürs übersetzen. Der Kreispfeil wurde von Gero ja erläutert.
@Gero: Ich nehme an der liegt dann auch in der zweiten Ebene? Also immer 
F und die Taste zum durch rotieren?

von Gero D. (srswift)


Angehängte Dateien:

Lesenswert?

Matthias H. schrieb:

> Hast Du das Paket schon abgeschickt? Sollte morgen ankommen.

>
> Kann man hier eigentlich auch ods Dateien anhängen? Oder wie tauscht man
> die hier am besten aus?
>

Meine Tastaturbeschriftung als Bitmap. Ich bin gespannt, was nach dem 
Drucken ankommt, vor allem der "Weißdruck" für dunkle Tasten ist 
spannend.

Deine Beschriftung gefällt mir, vor allem die Sonne für das Dimmen und 
das Wurzelsymbol sind schöner als meine Buchstaben...

>
> Ich nehme an der liegt dann auch in der zweiten Ebene? Also immer
> F und die Taste zum durch rotieren?

Ja, Rolldown liegt als Zweitbelegung auf dem ENTER.

Das 3D-Modell der verbesserten Tasten poste ich dann in kürze.

: Bearbeitet durch User
von Matthias 🟠. (homa)


Angehängte Dateien:

Lesenswert?

Gero D. schrieb:
> Die Speicher (ich gönne mir den Luxus von 10 Speichern) liegen im
> EEPROM, genauso wie die Einstellungen (rad/grd, Anzeigemodus)

Toll das die Speicher im EEPROM liegen. Erreichbar über STO und 0-9, 
richtig? Bzw. RCL und 0-9.
Aber F C_all (Clear all) löscht die nicht mit. Gibt es eine Tastenkombi 
was die Default Werte wieder herstellt und alle Speicherplätze nullt?
Ich habe übrigens jetzt v1.12 gefasht. Wofür steht "c  4.1.11" was beim 
Starten kurz aufblinkt?

Gero D. schrieb:
>- eine 2. Funktionstaste und damit eine Dreifachbelegung. Das wollte ich
>(noch) nicht.

Idee: F Taste x1 drücken, Anzeige durch 2 Punkte .. (blinkend?!)
      F Taste zweite Mal drücken, 2te Funktionseben bzw. 3 Ebene, 
Anzeige durch 3 Punkte ... (blinkend?!)

Die F Taste drücken schaltet ja jetzt nur zwischen Standard und 
Funktionsebene hin und her, sprich wenn man doch keine Funktion nutzen 
will einfach F ein 2x drücken und mit der Eingabe fortfahren. Bei meiner 
Idee muss ich dann durch rotieren, die Anzeige erfolgt durch die Punkte 
in welcher Ebene man ist. (Und man braucht keine 2te F Taste!)
So könnte man selten genutzte Funktion in die dritte Ebene verbannen und 
evtl. die hex Eingabe auf die Tasten SIN COS TAN STO RCL legen und STO 
RCL auf Log und Ln und die Funktionen dann in die 2./3. Ebene z.B. F SIN 
und F F ASIN.
Ggf. könnte man das dann via Optionsparamater (wie die Helligkeit) 
einstellen ob die Taste zB. A/SIN/ASIN oder SIN/ASIN/A lautet oder das A 
nur im hex Eingabe Modus sofort kommt und ansonsten die Taste mit 
SIN/ASIN belegt ist.
Also hier könnte man Bedienungskonzept noch richtig weiter entwickeln. 
Ggf. bekommt man dann das Ganze in eine Version mit der Programmierbaren 
und der 3. Ebene und welcher Zahlen/Eingabe-Modus kombiniert und 
vereinheitlicht :-)

Themen Wechsel: Wieso schaltet der Rechner so schnell in die E- Angabe? 
10000-6400 zeigt schon beim Entern der 10000 10 E3 an. Ich empfinde das 
als nicht so schön. Kann man das im Quellcode parametrisieren und ggf. 
via Option einstellen (die dritte Ebene lässt immer mehr grüßen ;-)

Gero ich muss sagen, mit echter Hardware in der Hand macht das Projekt 
echt viel mehr Spaß, tolle Idee von Dir!

Nachtrag: Ich glaube ich habe noch einen Bug gefunden. Wenn die 
Energiesparoption nur Punkt anzeigen zuschlägt, während man die F Taste 
für die zweite Ebene aktiviert hat, aber noch keine Taste gedrückt hat, 
kommt der Rechner nach dem Aufwachen dann durcheinander. Beispiel 3 F 
x^2. Er nimmt dann die SQR obwohl die F Ebene als aktiv angezeigt wird.

: Bearbeitet durch User
von Gero D. (srswift)


Lesenswert?

Hallo Matthias,

viel nachdankenswertes. Danke!

Matthias H. schrieb:
> Gero D. schrieb:
>> Die Speicher (ich gönne mir den Luxus von 10 Speichern) liegen im
>> EEPROM, genauso wie die Einstellungen (rad/grd, Anzeigemodus)
>
> Toll das die Speicher im EEPROM liegen. Erreichbar über STO und 0-9,
> richtig? Bzw. RCL und 0-9.

Richtig!


> Aber F C_all (Clear all) löscht die nicht mit. Gibt es eine Tastenkombi
> was die Default Werte wieder herstellt und alle Speicherplätze nullt?

Speicher Löschen war bisher nicht vorgesehen. Könnte man machen.


> Ich habe übrigens jetzt v1.12 gefasht. Wofür steht "c  4.1.11" was beim
> Starten kurz aufblinkt?

Das ist die Versionsinfo. Hardware 4. Software 1.11. Sollte bei Dir 
eigentlich 4.1.12 sein.

> Gero D. schrieb:
>>- eine 2. Funktionstaste und damit eine Dreifachbelegung. Das wollte ich
>>(noch) nicht.
>
> Idee: F Taste x1 drücken, Anzeige durch 2 Punkte .. (blinkend?!)
>       F Taste zweite Mal drücken, 2te Funktionseben bzw. 3 Ebene,
> Anzeige durch 3 Punkte ... (blinkend?!)

Nachdankenswert. Die Drittbelegung der Tasten würde sich bei der 
Beschriftung aber nicht goo gut machen.

>
> Die F Taste drücken schaltet ja jetzt nur zwischen Standard und
> Funktionsebene hin und her, sprich wenn man doch keine Funktion nutzen
> will einfach F ein 2x drücken und mit der Eingabe fortfahren.

Richtig.

> Bei meiner
> Idee muss ich dann durch rotieren, die Anzeige erfolgt durch die Punkte
> in welcher Ebene man ist. (Und man braucht keine 2te F Taste!)
> So könnte man selten genutzte Funktion in die dritte Ebene verbannen und
> evtl. die hex Eingabe auf die Tasten SIN COS TAN STO RCL legen und STO
> RCL auf Log und Ln und die Funktionen dann in die 2./3. Ebene z.B. F SIN
> und F F ASIN.
> Ggf. könnte man das dann via Optionsparamater (wie die Helligkeit)
> einstellen ob die Taste zB. A/SIN/ASIN oder SIN/ASIN/A lautet oder das A
> nur im hex Eingabe Modus sofort kommt und ansonsten die Taste mit
> SIN/ASIN belegt ist.

Da hatten die Erfinder der Taschenrechner ganz schön harte Nüsse zu 
knacken. Je mehr Funktionalität in dem kleinen Kästchen drinsteckt, umso 
kniffliger wird die Mensch/Maschine - Schnittstelle.

> Also hier könnte man Bedienungskonzept noch richtig weiter entwickeln.
> Ggf. bekommt man dann das Ganze in eine Version mit der Programmierbaren
> und der 3. Ebene und welcher Zahlen/Eingabe-Modus kombiniert und
> vereinheitlicht :-)
>

> Themen Wechsel: Wieso schaltet der Rechner so schnell in die E- Angabe?
> 10000-6400 zeigt schon beim Entern der 10000 10 E3 an. Ich empfinde das
> als nicht so schön. Kann man das im Quellcode parametrisieren und ggf.
> via Option einstellen (die dritte Ebene lässt immer mehr grüßen ;-)

Damit bin ich auch nicht so ganz glücklich. Es ist der verwendeten 
Double-Bibliothek geschuldet. Ich hatte da eine Displayroutine in der 
Mache, die dem gewöhnlichen "Taschenrechnerfeeling" besser entspricht, 
bin mit dem Ergebnis jedoch nicht so wirklich zufrieden gewesen. Da 
merkt man mal, wie verwöhnt man ist, es sind nämlich einige 
"Spezialfälle" zu implementieren. Vorzeichen, führende und folgende 
Nullen ...

Ich fürchte, da muß ich unbedingt noch mal dran. Oder jemand anders. Den 
Sourcecode hab ich ja weiter oben gepostet.

>
> Gero ich muss sagen, mit echter Hardware in der Hand macht das Projekt
> echt viel mehr Spaß, tolle Idee von Dir!

Danke!

>
> Nachtrag: Ich glaube ich habe noch einen Bug gefunden. Wenn die
> Energiesparoption nur Punkt anzeigen zuschlägt, während man die F Taste
> für die zweite Ebene aktiviert hat, aber noch keine Taste gedrückt hat,
> kommt der Rechner nach dem Aufwachen dann durcheinander. Beispiel 3 F
> x^2. Er nimmt dann die SQR obwohl die F Ebene als aktiv angezeigt wird.

Muss ich prüfen und korrigieren.

von Gero D. (srswift)


Lesenswert?

Gero D. schrieb:


>> Ich habe übrigens jetzt v1.12 gefasht. Wofür steht "c  4.1.11" was beim
>> Starten kurz aufblinkt?
>
> Das ist die Versionsinfo. Hardware 4. Software 1.11. Sollte bei Dir
> eigentlich 4.1.12 sein.
>

Nachtrag:

Wenn man solche Sachen nicht "automatisch" macht, vergisst man es dann 
irgendwann.
1
'           1.11 Code Cleanup, Dokumentation, GPL-Text, Zusammengefasste Displaymodus-steuerung, Versionsstring
2
'           1.12 Cx-Behandlung im Zifferneingabemodus korrigiert
3
'
4
'----------------------------------------------------------
5
6
....
7
8
' Hardware/Softwareversion
9
Const K_version = "4.1.11"

Da müsste eine 4.1.12 stehen, dann würde sie auch angezeigt werden.

von Gero D. (srswift)



Lesenswert?

Ich hab den Fehler mit dem Schlafmodus bei gedrückter F-Taste behoben. 
Der Rechner geht jetzt nur in den Schlafmodus, wenn er nicht auf die 
Taste zum "F" wartet.

Hier wieder der BASCOM-Code und die Binärfiles.

von Gero D. (srswift)


Angehängte Dateien:

Lesenswert?

Und dann noch der 3D-Code der "verbesserten" Taste. Ist in den 
Abmessungen ein paar Zehntel kleiner. Damit gibt es dann weniger 
Nacharbeit und kein klemmen der Tasten mehr. Dafür gibt es jetzt ein 
Klappern. Aber das war beim russischen Vorbild genau so.

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Aufgebaut und funktioniert :-)

Dennoch zwei Hinweise zum Aufbau:

1. Eine ordentliche RESET-Beschaltung ist hilfreich. Manchmal startet 
der AVR nicht korrekt.
2.Unbedingt darauf achten, dass der AVR VOR dem einlöten auf „Intern RC 
Oszillator“ steht. Ansonsten muss man später zum Umprogrammieren einen 
externen Takt an Pin 9 Anlegen.

von Gero D. (srswift)


Lesenswert?

Hallo,

Danke für die Hinweise!

Joe G. schrieb:
> 1. Eine ordentliche RESET-Beschaltung ist hilfreich. Manchmal startet
> der AVR nicht korrekt.

Welche RESET-Beschaltung verwendet ihr denn? Mir sind solche Probleme 
(in nun schon einer zweistelligen Zahl von Projekten mit AVRs) bisher 
noch nicht aufgetreten. Unter welchen Bedingungen treten suche Probleme 
auf?

> 2.Unbedingt darauf achten, dass der AVR VOR dem einlöten auf „Intern RC
> Oszillator“ steht. Ansonsten muss man später zum Umprogrammieren einen
> externen Takt an Pin 9 Anlegen.

Guter Hinweis. Soweit ich weiß ist die Einstellung "Interner RC 
Oscillator 8MHz, Taktteilung / 8" der Auslieferungszustand des ATMega 
328.

Danke noch mal.

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Bei mir löste RESET nicht bei jedem Einschaltvorgang aus. Mit 10k gegen 
+5V und 100n gehen Masse geht es nun sicher.

Ich habe mir mal eine Variante mit großen 0,6 und 9 erzeugt :-) Was mir 
prinzipiell auffällt ist, nach der ersten ENTER Eingabe kann man nur 
raten, dass ENTER angenommen wurde. Beispiel:

2
ENTER (kein Blinken)
3
+

Das verursacht bei er Eingabe Unsicherheiten, ist die Ziffer angenommen? 
Meine HP’s gehen damit folgt um:

2
ENTER (2.000 bei FIX 4 oder 2.000000 00 bei ENG 9)
3
+

Es reicht aus meiner Sicht in der ENTER Funktion einmal BeepMe (siehe 
Anhang) aufzurufen.

: Bearbeitet durch User
von Gero D. (srswift)


Lesenswert?

Hallo,

ich schaue mir an.

Bin ohnehin gerade dabei, die Anzeigenfunktion "Nutzerfreundlicher" zu 
machen. Die Umschaltung in die "E"-Anzeige schon bei kleinen Zahlen ist 
doch verwirrend.

Dabei fällt wahrscheinlich das Enter-Beep gleich mit ab.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Hier [1] gibt es einen schönen Simulator, wo man auch wunderbar die 
Anzeigeformatierung ausprobieren kann.

[1] http://www.hp-15c.homepage.t-online.de/content_web.htm

von Gero D. (srswift)


Lesenswert?

Joe G. schrieb:
> 2
> ENTER (kein Blinken)
> 3
> +
>
> Das verursacht bei er Eingabe Unsicherheiten, ist die Ziffer angenommen?
> Meine HP’s gehen damit folgt um:
>
> 2
> ENTER (2.000 bei FIX 4 oder 2.000000 00 bei ENG 9)
> 3
> +
>
> Es reicht aus meiner Sicht in der ENTER Funktion einmal BeepMe (siehe
> Anhang) aufzurufen.

Ich würde das "Call BeepMe" nicht in die Subroutine Enter() einfügen, 
sondern besser in der Sub Exec_kdo() den case K_enter korrigieren

1
      Case K_enter                                          ' "Enter"
2
         If Z_inputflag = 0 Then
3
             Call Enter             
4
         End If
5
         Call Beepme

Dann blinkt es bei (jedem) eingegebenen Enter

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Ok, das trennt die Kommandoausführung sauber von der Stackverarbeitung 
mit der gleichen Funktionalität :-) Ich habe es für mich mal so 
übernommen.

von Gero D. (srswift)


Angehängte Dateien:

Lesenswert?

Meine Wasserschiebenbilder für die Tasten sind gekommen. Zum Glück ein 
paar zusätzlich zur Reserve, die Verarbeitung erfordert doch etwas 
Übung. Wie haltbar das ganze dann am Ende ist, muss die Praxis zeigen.

von Gero D. (srswift)


Angehängte Dateien:

Lesenswert?

Die Software hat auch noch eine kleine Weiterentwicklung über sich 
ergehen lassen müssen. Jetzt schaltet "F-Punkt" zwischen 4 Anzeigemodi 
nacheinander um.
1.) Float-Darstellung, erst bei sehr grossen/kleinen Zahlen wird auf "E" 
umgeschaltet
2.) Fix-2 Darstellung. Zwei Kommastellen mit Rundung
3.) "E" Darstellung, wie bisher auch
4.) HH:MM - Darstellung wie bisher auch

Und dann ist auch noch der "Beep" beim ENTER (wie oben beschrieben) 
korrigiert.

Wie bisher auch: Beide Softwarevarianten (Programmierbar und normal) zum 
herunterladen. Für Fehlerreports bin ich dankbar.

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Gute Erweiterungen Gero :-)

Für das „Rollen“ der vier Anzeigemodi wäre noch eine Darstellung für 
Mode 3 günstig. Vielleicht so:
Mode 1: „0.“
Mode 2: „0.00“
Mode 3: „E0“
Mode 4: „h          00.00“

Die Rundungsfunktionalität würde ich nur auf die Darstellung im Display 
begrenzen. Wenn meine Zahl also „0.001“ lautet sollte sie wie folgt 
dargestellt werden:
Mode 1: „0.001“
Mode 2: „0.00“
Mode 3: „1.0 E-3“
Wenn ich die Modi umschalte, sollte sich das nur auf die Darstellung im 
Display auswirken, die angezeigte Ziffer jedoch intern nicht verändern.

Für die Umschaltung in die U821D Darstellung habe ich einen 
Compilerswitch eingeführt.
SW1=1 schaltet in die „Normaldastellung“
SW1=0  in die U821D Darstellung

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Noch eine Anmerkung zum Sleepflag bzw. zur Sleeptime.
Meine Anzeige ist immer nach einer relativ kurzen Zeit, gefühlt 2-3 
Sekunden, in den Sleemode gegangen. Ich denke, hier liegt noch ein 
Fehler bei der Zeitkonstante vor. Die Zeit von ca. einer Minute erreiche 
ich nur, wenn ich die AVR Fuse CKDIV8 einschalte.

von Gero D. (srswift)


Lesenswert?

> Für das „Rollen“ der vier Anzeigemodi wäre noch eine Darstellung für
> Mode 3 günstig. Vielleicht so:
> Mode 1: „0.“
> Mode 2: „0.00“
> Mode 3: „E0“
> Mode 4: „h          00.00“

Überlegenswert. Dagegen spricht, dass wir ja nur 8 Anzeigestellen haben, 
da würde ich nur ungern eine "verschenken"

> Die Rundungsfunktionalität würde ich nur auf die Darstellung im Display
> begrenzen. Wenn meine Zahl also „0.001“ lautet sollte sie wie folgt
> dargestellt werden:
> Mode 1: „0.001“
> Mode 2: „0.00“
> Mode 3: „1.0 E-3“
> Wenn ich die Modi umschalte, sollte sich das nur auf die Darstellung im
> Display auswirken, die angezeigte Ziffer jedoch intern nicht verändern.

Genau so funktioniert es doch. Wenn Du zum Beispiel mal Pi ins 
x-Register lädst und durch die 4 Anzeigemodi schaltest, wirst Du sehen, 
dass der Inhalt von Rx von der Anzeige entkoppelt ist, gerundet wird nur 
für die Anzeige. Und wenn Du im Float-Mode dann F-Pi 10 * 31 - rechnest, 
siehst Du, dass die "versteckten" Stellen nachrücken und aus der letzten 
7 eine 65 wird.

>
> Für die Umschaltung in die U821D Darstellung habe ich einen
> Compilerswitch eingeführt.
> SW1=1 schaltet in die „Normaldastellung“
> SW1=0  in die U821D Darstellung

Schau ich mir an und übernehme ich in meinen Code.

> Noch eine Anmerkung zum Sleepflag bzw. zur Sleeptime.
> Meine Anzeige ist immer nach einer relativ kurzen Zeit, gefühlt 2-3
> Sekunden, in den Sleemode gegangen. Ich denke, hier liegt noch ein
> Fehler bei der Zeitkonstante vor. Die Zeit von ca. einer Minute erreiche
> ich nur, wenn ich die AVR Fuse CKDIV8 einschalte.

Bei mir ist das Fusebit "Divide Clock By 8" Standardmäßig Enabled.
Zumindest bei meinem Programmer schaltet
$prog &HFF , &H62 , &HD9 , &HFF
auf 8MHz Takt mit Teilung durch 8. Damit passt die Zeitkonstante (und 
nebenbei sinkt die Stromaufnahme)

Danke für die Hinweise!

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Gero D. schrieb:
> Genau so funktioniert es doch.

Das habe ich jetzt auch bemerkt, nachdem der Sleemode nicht mehr so 
schnell zugeschlagen hat ;-) Ja, genau so ist es gut mit der 
Darstellung.

> Überlegenswert. Dagegen spricht, dass wir ja nur 8 Anzeigestellen haben,
> da würde ich nur ungern eine "verschenken"

Die Darstellung mit dem "E" soll nicht Dauerhaft sein, nur beim 
Umschalten der Modi damit man erkennt, in welchem Mode man gerade ist.

> Bei mir ist das Fusebit "Divide Clock By 8" Standardmäßig Enabled.
OK, somit läuft alles auf 1MHz. Schnell genug ist er damit immer noch.

von Gero D. (srswift)


Angehängte Dateien:

Lesenswert?

So, hier noch einmal ein Foto der aktuellen (programmierbaren) Variante. 
Die Decals haben sich ganz ordentlich aufbringen lassen. Die Tasten sind 
ganz annehmbar. Wenn sich nicht noch dicke Bugs finden, kann man es so 
lassen.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Joe G. schrieb:
> Die Darstellung mit dem "E" soll nicht Dauerhaft sein, nur beim
> Umschalten der Modi damit man erkennt, in welchem Mode man gerade ist.

Ich habe mir deinen Code dazu nochmals angesehen. Du scrollst 
tatsächlich nur die Modi in der dafür vorgesehenen Funktion und diese 
Funktion wird dann auf die Darstellung angewendet. Somit ist eine 
zusätzliche Anzeige eher hinderlich. Bei der Eingabe von Pi ist die 
Funktion ja gut zu beobachten. Meine ursprüngliche Überlegung zielte auf 
eine HP-Funktionalität ab. Dort wird jedoch für den Mode eine 
Drittfunktion der Tasten genutzt und somit weiß man automatisch in 
welcher Ebene man ist. Deine Scrollfunktion ist eine gute Alternative 
:-)

PS: Wo hast du diese Schiebebildfolien erworben?

: Bearbeitet durch User
von Horst (Gast)


Lesenswert?

Hm, gäbe es die Möglichkeit, etwas Hardware anzusteuern? Zum Beispiel 
eine I2C-Schnittstelle nach außen zu führen? Und im programmierbaren 
Modus auszuwerten/verwenden?

Bin leider nicht so bewandert mit Programmierung.

Horst.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Horst schrieb:
> Hm, gäbe es die Möglichkeit, etwas Hardware anzusteuern?

Gero hat ja I2C und Rx/Tx nicht belegt. Für einen Taschenrechner halte 
ich die Rx/Tx Verbindung zu einem PC als die sinvollste Anwendung. 
Darüber könnte man (in der programmierbaren Variante) extern Programme 
laden so wie hier [1]

[1]  http://www.hp-15c.homepage.t-online.de/examples.htm

von Gero D. (srswift)


Lesenswert?

Hallo,

Joe G. schrieb:
> PS: Wo hast du diese Schiebebildfolien erworben?

hab ich bei www.druckeronkel.de bestellt. Die Herstellung der 
Druckvorlage war etwas kniffelig (Vektorgrafikprogramm erforderlich, 
umgewandelte Schriften, Farbmanagement damit der Weissdruck etwas wird). 
Hat mit etwas Hilfe aber am Ende ganz ordentlich geklappt.

von Gero D. (srswift)


Lesenswert?

Joe G. schrieb:
> Horst schrieb:
>> Hm, gäbe es die Möglichkeit, etwas Hardware anzusteuern?
>
> Gero hat ja I2C und Rx/Tx nicht belegt. Für einen Taschenrechner halte
> ich die Rx/Tx Verbindung zu einem PC als die sinvollste Anwendung.
> Darüber könnte man (in der programmierbaren Variante) extern Programme
> laden so wie hier [1]

Hardwareansteuerung hat ja unterschiedliche Aspekte. Die Kurze Antwort 
ist: Prinzipiell sind noch einige (viele) Funktionen des ATMega in 
diesem Projekt ungenutzt. Prinzipiell kann man es beliebig erweitern, 
sowohl Programmspeicher als auch RAM und EEPROM haben noch Platz für 
Erweiterungen.

Was fällt mir da ein?

* Die Möglichkeit, Programme auf Speichermedien (SD-Card, USB-Stick o.ä. 
auszulagern
* Die Kommunikation mit einem Computer  Drucker  anderen 
Taschenrechner
* Den Zugriff auf einen analogen Eingang (Spannungswert -> Rx)
* Digitaler Impulseingang (Zeitmessung, Zählen, ...)
...

Das aktuelle Projekt wird damit ein wenig überstrapaziert, aber der 
nächste Winter kommt bestimmt.

> [1]  http://www.hp-15c.homepage.t-online.de/examples.htm

Eine schöne Ideenquelle. Einige der Programme laufen unverändert/mit 
kleinen Anpassungen auch auf "Boris 4+"

von Gero D. (srswift)


Angehängte Dateien:

Lesenswert?

Kaum träumt man vom "fertig", schon findet man noch einen Fehler. Das 
Zusammenwirken von Cx und ENTER war noch unsauber. Ist jetzt behoben.

Ach ja, noch was. Meine neue Display-Routine ist ganz schön teuer. Viele 
Double-Rechnungen fordern ihren Preis. Die Rechengeschwindigkeit bei der 
Programmausführung leidet darunter. Die "Kleiner Gauss"-Aufgabe von oben 
benötigt im Modus "E" 23 Sekunden, im Fix2 derer 28 und im Float Modus 
nimmt sich der Taschenrechner ganze 46 Sekunden Zeit. Handgestoppt.

Das könnte man natürlich durch Abschalten der Anzeige bei der 
Programmausführung verbessern. Aber 1. Es handelt sich um einen 
Taschenrechner und nicht um einen Supercomputer. Und 2. sieht das 
Blinzeln der Anzeige beim Rechnen doch irgendwie scharf aus, oder?

: Bearbeitet durch User
von Gero D. (srswift)


Lesenswert?

Gero D. schrieb:
> Das könnte man natürlich durch Abschalten der Anzeige bei der
> Programmausführung verbessern. Aber 1. Es handelt sich um einen
> Taschenrechner und nicht um einen Supercomputer. Und 2. sieht das
> Blinzeln der Anzeige beim Rechnen doch irgendwie scharf aus, oder?

Nachtrag: Mit ausgeschaltetem Display braucht "Boris 4+" etwa 10s für 
die obige Aufgabe. Schaumermal.

von Rechnerknechter (Gast)


Lesenswert?

Super Projekt, das reizt mich glatt zum nachbauen.

Wäre es euch möglich auch eine Softwareversion zu programmieren mit der 
ich den Rechner auch konventionell bedienen kann?

12 <Plus> 5 <Ergebnis> 17

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Gero D. schrieb:
> Mit ausgeschaltetem Display braucht "Boris 4+" etwa 10s

Ist nicht schlimm, HP schaltet die Anzeige während der 
Programmausführung auch auf "Running".

: Bearbeitet durch User
von Gero D. (srswift)


Lesenswert?

Hallo,

Rechnerknechter schrieb:
> Super Projekt, das reizt mich glatt zum nachbauen.
>
> Wäre es euch möglich auch eine Softwareversion zu programmieren mit der
> ich den Rechner auch konventionell bedienen kann?
>
> 12 <Plus> 5 <Ergebnis> 17

Kurze Antwort: Das wird nicht gehen, weil der Rechner ja gar keine 
"="-Taste hat.

Lange Antwort: Im Prinzip ist das sicher möglich. Aber es würde eine 
vollständig neue Rechenlogik (Organisation der Rechenregister, 
Klammerebenen, Vorrangregeln...) erfordern. Und da ich ein Fan der 
Kopfstehenden Polen bin, werd ich diesen Aufwand nicht treiben. Mein 
Sourcecode ist offen, wer die Muße hat, kann es gern machen. Hier im 
Forum gibt es im übrigen ein Projekt, welches das ganze mit einer 
anderen Hardware bereits vorbildlich umsetzt ...

von Gero D. (srswift)


Angehängte Dateien:

Lesenswert?

Ich hab mal den "Original"-boris von 1980 die 100-Zahlen-Addieraufgabe 
rechnen lassen. Der blinzelt freundlich mit seiner grünen Röhre und 
meldet nach 4:50 Minuten das richtige Ergebnis.
Trotzdem hab ich mal eine Variante gebaut, bei der während der 
Programmausführung das Display nur mit den Dezimalpunkten spielt.
Für Geschwindigkeitsfanatiker. Immerhin kommen wir damit über die 
magische Grenze von 100 Operationen/s. BASCOM-code und Binärfile zum 
Download anbei.

Und dann hab ich hier noch eine Kopie meines EEPROMs zum flashen mit 
zwei kleinen Programmen zur Verfügung gestellt. Dieses Paket sollte mit 
allen programmierbaren Versionen ab 2.8 funktionieren.

Ab Adresse 0 das Zahlenreihen-Addierprogramm. Im Speicher 7 muss die 
Obergrenze stehen. Also:
1
0
0
STO 7
GOTO 00
RUN

Und 9.5 Sekunden später steht dort 5050.

Und dann noch ab Adresse 50 das Archimedesverfahren zur Berechnung von 
Pi.
(Siehe oben, oben hat es aber am Ende noch einen Fehler!)
In Speicher 6 muss die Anzahl der Iterationen stehen, bei 11 Iterationen 
kommt ein Pi mit 8 genauen Stellen heraus.

Also
1
1
STO 6
GOTO 50
RUN

Viel Spass!

: Bearbeitet durch User
von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Das sieht gut aus mit dem "Lauflicht" bei der Programmabarbeitung :-)

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Im RUN-Mode sollte die Funktion "Update_cache()" deaktiviert sein. Wenn 
man in einem Programm STO und RCL benutzt und sich dieses Programm in 
einer Endlosschleife befindet, dann ist der EEPROM des AVR bald hinüber 
:-(

von Gero D. (srswift)


Lesenswert?

Joe G. schrieb:
> Im RUN-Mode sollte die Funktion "Update_cache()" deaktiviert sein. Wenn
> man in einem Programm STO und RCL benutzt und sich dieses Programm in
> einer Endlosschleife befindet, dann ist der EEPROM des AVR bald hinüber
> :-(

Guter Einwand. Aber das sollte im aktuellen Programm (die 
Polling-Routine ist zugegebenermassen ziemlich unübersichtlich) genau so 
realisiert sein.
1
Sub Polling()
2
...
3
  If P_goflag = 1 Then           ' Wenn ein Programm ausgeführt wird
4
5
...
6
7
  Else
8
9
...
10
11
      If Pressedkey = 0 Then Goto Nokey
12
...
13
14
  End If
15
16
  Goto Weiter
17
18
  Nokey:  ' wenn wir nichts zu tun haben, koennen wir ja den Cache aufraeumen
19
    Call Update_cache()
20
...
21
22
  Weiter:
23
24
...
25
26
End Sub Polling

Hab ich da einen Denkfehler?

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Wenn Pressedkey innerhalb der Programmausführung nie 0 wird, ist alles 
gut. Ob das so ist, hatte ich nicht überprüft.

Nur zur Info, damit sicht nichts überschneidet. Ich baue gerade an einer 
Codeerweiterung um über die UART vom PC Programme in den EEPROM zu laden 
bzw. zu lesen.

von Gero D. (srswift)


Lesenswert?

Joe G. schrieb:
> Wenn Pressedkey innerhalb der Programmausführung nie 0 wird, ist alles
> gut. Ob das so ist, hatte ich nicht überprüft.
>

Pressedkey <> 0 bricht die Programmausführung ab. Damit sollte alles OK 
sein.

> Nur zur Info, damit sicht nichts überschneidet. Ich baue gerade an einer
> Codeerweiterung um über die UART vom PC Programme in den EEPROM zu laden
> bzw. zu lesen.

Grossartig!

Ich hab noch eine kleinigkeit im Test, die bezieht sich aber auf die 
Behandlung von ENTER und ROLLDOWN. Da ist boris4+ (noch) nicht 
kompatibel zu den HPs. Da gibt es dann in bälde einen Compileswitch zum 
Umschalten...

von Gero D. (srswift)


Angehängte Dateien:

Lesenswert?

www.hpmuseum.org hält hunderte Taschenrechnerprogramme zum download 
bereit.
Viele unglaublich  geistreiche Sachen. Absolut einen Besuch wert!

Und obwohl boris4+ kein HP ist, sind viele davon einfach anpassbar. 
Zumindest fast. Eine kleine Besonderheit ist mir aufgefallen. Es gibt 
zwei prinzipielle Varianten, wie das T-Register nach einer Berechnung 
behandelt wird. Entweder rutscht da von oben eine 0.0 in den Stack, oder 
der Inhalt bleibt erhalten und wird dupliziert. Die Götter der 
umgekehrten polnischen Notation sind sich da nicht einig. Aber HP hat 
sich für die zweite Variante entschieden (Elektronika zumindestens beim 
"Ur-Boris" auch). Der Unterschied wirkt sich nur bei Programmen der 
Rechenregister-Virtuosen  aus, aber da natürlich mordsmäßig. Meine alten 
Taschenrechnerprogramme aus den 80ern waren da nicht so anspruchsvoll 
:-)

Ich hab es zum Anlaß genommen, die Software in dieser Hinsicht per 
Compileswitch umschaltbar zu machen. Voreinstellung: HP-Kompatibel.

Hier zum herunterladen für Programmierbar und normale Variante.

Viel Spaß!

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Boris kann nun auch mit dem PC kommunizieren, um Programme zu laden und 
zu speichern. Die Funktionen sind zunächst noch ziemlich auf dem „Low 
Level“ aber man kann schon damit arbeiten.

1. Boris über die serielle Schnittstelle mit einem Terminal verbinden 
9600, 8N1
2. Kommando 0xAA versetzt Boris in den Terminalmode und die aktuelle 
Versionsnummer wird an das Terminal gesendet.
3. Kommando 0x53 „S“ sendet den Programmspeicher in Binärform an den PC
4. Kommand0 0x52 „R“ empfängt vom PC Binärdaten um sie im 
Programspeicher abzulegen. Ist die Übertragung korrekt erfolgt, kommt im 
Terminal die Ausschrift „ready“

Beispiel 1: Übertragen des Programmspeichers von Boris an den PC
0xAA   ->  4.2.13
0x53    ->  0x01 0x02 … insgesamt 200 Byte (auf PC abspeichern)

Beispiel 2: Übertragen eines Programmes vom PC an Boris
0xAA   ->  4.2.13
0x52   (200 Binärdaten vom PC senden)  -> ready

Anbei das kleine Beispielprogram von Gero als PC-File (Program_1.bor)

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Nachtrag für Gero. Alle ergänzten Stellen im Code habe ich mit -JG- 
gekennzeichnet. Damit sind sie leicht aufzufinden. Vielleicht sollten 
wir über eine Ablage bei github nachdenken.

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

V2.14: "Boris" zeigt seinen UART-Status nun auch auf dem Display an. 
Damit kann das Terminal einfacher bedient werden. Es gibt die drei 
Zustände:

0xAA -> "con" für connect - Boris wartet auf weitere Kommandos
0x53 -> "LOAD" Boris wartet auf Binärfile
0x52 -> "Save" Boris sendet Binärfile

Ich denke, diese Funktionalität ist ausreichend. Nun würde ich mich mal 
um ein PC-Programm zur vernüftigen Bedienung kümmern.

: Bearbeitet durch User
von Gero D. (srswift)


Lesenswert?

Gute Arbeit! Damit das ganze dann praktisch funktioniert müssten die 
beiden UART-Pins vom ATMega irgendwie aus dem Gehäuse herausgeführt 
werden und man braucht auf PC-Seite auch noch irgendeinen Anschluß. Wie 
hast Du das gemacht? Als richtige Serielle Schnittstelle / USB oder 
einfach auf TTL-Pegel?

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Ich habe einen einfachen USB 2.0 zu TTL Konverter (CH340) angeschlossen. 
Sowas gibt es auch gleich als Kabel [1]


[1] 
https://www.ebay.de/itm/PL2303HX-Kabel-FTDI-USB-to-TTL-Konverter-Modul-Adapter-Arduino-zu-UART-RS232/252797495606?hash=item3adbe7a936:g:MwoAAOSwarlb3s6V

von Uhu U. (uhu)


Lesenswert?

Gero D. schrieb:
> Damit das ganze dann praktisch funktioniert müssten die
> beiden UART-Pins vom ATMega irgendwie aus dem Gehäuse herausgeführt
> werden und man braucht auf PC-Seite auch noch irgendeinen Anschluß.

Oder baue einen Bluetooth-Adapter ein.

von Gero D. (srswift)


Lesenswert?

Joe G. schrieb:
> Ich habe einen einfachen USB 2.0 zu TTL Konverter (CH340) angeschlossen.
> Sowas gibt es auch gleich als Kabel [1]
>
>
> [1]
> 
https://www.ebay.de/itm/PL2303HX-Kabel-FTDI-USB-to-TTL-Konverter-Modul-Adapter-Arduino-zu-UART-RS232/252797495606?hash=item3adbe7a936:g:MwoAAOSwarlb3s6V

Das macht einen guten Eindruck. Ich beschaffe mir auch so ein Teil und 
dann:

- braucht das Gehäuse noch eine COM-Buchse.
- könnte man Programme auf dem PC vorbereiten. Die könnten dann 
natürlich länger und komplexer sein. Der ATMega hat noch Reserven, die 
100 Programmschritte und die 10 Speicher sind nur durch die 
Eingabemöglichkeiten über die Rechnertastatur und die Anzeige beim 
Editieren (8 Stellen = 2 Adresse, Leerzeichen, 3 Code und 2 Adresse 
begrenzt). Wenn das Programm von extern geladen wird, sind problemlos 
256 Programmschritte und 32 Speicher drin. Mit der Einschränkung, daß 
man nur mit dem Taschenrechner interaktiv nur an 100/10 herankommt. 
Gefällt mir. Ich schau mal, ob ich den Teil am Wochenende so machen 
kann...

Danke!

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Im Entwicklungsstadium ist so ein Kabel sehr hilfreich. Bei einer 
überarbeiteten Revision würde ich die USB-Ladebuchse gleich als 
Kommunikationsport nutzen und den USB/Seriell- Wandler auf die 
Leiterplatte bringen. Somit fällt eine zweite Buchse weg.

Bei der PC-Software gibt es ja unendlich viele Möglichkeiten. Die erste 
Version wird zunächst Programme laden und speichern können, sowie sie am 
PC anzeigen anzeigen.

von Gero D. (srswift)


Lesenswert?

Joe G. schrieb:
> Im Entwicklungsstadium ist so ein Kabel sehr hilfreich. Bei einer
> überarbeiteten Revision würde ich die USB-Ladebuchse gleich als
> Kommunikationsport nutzen und den USB/Seriell- Wandler auf die
> Leiterplatte bringen. Somit fällt eine zweite Buchse weg.

Das ist natürlich logisch und der richtige Weg. Erfordert aber eine neue 
Leiterplatte, der USB-Seriell-Wandler braucht auch etwas Fläche. Das muß 
man erst mal umsetzen. Alternativ wäre da auch eine SD-Card-Variante 
denkbar. Auch das erfordert aber eine neue Leiterplatte. Dabei könnte 
man auch gleich noch ein paar andere Ideen mit umsetzen. Zeit ...

Eine 3-polige Buchse ins Gehäuse zu quetschen und den Rest der Hardware 
unverändert zu lassen ist erstmal einfacher.

>
> Bei der PC-Software gibt es ja unendlich viele Möglichkeiten. Die erste
> Version wird zunächst Programme laden und speichern können, sowie sie am
> PC anzeigen anzeigen.

Dafür hab ich auch ein paar noch unfertige Codeschnipsel herumliegen. 
Einen Hex->Quellcode und einen Quellcode->Hex Umsetzer. Brauchen aber 
beide noch etwas Zuwendung.

von Gero D. (srswift)


Lesenswert?

Hier mal ein Beispiel, wie das bei mir auf dem PC aussehen könnte;
1
# Das ist ein Testprogramm zum erproben meines Boris-assemblaers
2
# Gartenzaun ist natürlich ein Kommentar
3
# Eine Zeile beginnt entweder mit einem Gartenzaun - Vollstaendig ignorieren
4
# mit einem whitespace
5
# oder mit einer Zeilennummer. Diese stellt dann nur den Index richtig
6
0 CX
7
# In Speicher 8 Summieren wir auf
8
1 STO 8
9
# Speicher 7 enthaelt die Obergrenze
10
2 RCL 7
11
3 RCL 8
12
4 +
13
5 STO 8
14
# Zaehler verringern
15
6 RCL 7
16
7 1
17
8 -
18
9 STO 7
19
# Wenn 0 noch nicht erreicht, weitermachen
20
10 IF>0 2
21
11 RCL 8
22
12 HALT

ich hab mir ein rudimentäres Programm zusammengenagelt (Linux, gcc), 
welches den obigen Quelltest in den entsprechenden boris4-code übersetzt 
und auch zurück vom Binärcode in den Quelltext. Bevor man das jedoch auf 
die Menschheit loslassen kann, muss es mehr als nur ein wenig aufpoliert 
werden...

Dabei hätte ich die Idee, daß ein "von aussen" kommendes Programm mit 
einem "Kennzeile" beginnt. Z.B.

NOP 64

Dieses Kommando kann man über die Tastatur nicht eingeben. Das könnte 
bedeuten, das Programm ist über die UART in den Rechner gekommen und hat 
64 Programmschritte. Anhand dieser Kennung könnte dann die Beschränkung 
auf die 100 Programmschritte abgeschaltet werden...

Erst mal nur eine Idee.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Gero D. schrieb:
> Dabei hätte ich die Idee, daß ein "von aussen" kommendes Programm mit
> einem "Kennzeile" beginnt. Z.B.
>
> NOP 64

Eine variable Blocklänge ist für die serielle Datenübertragung 
ungünstig. In diesem Fall ist das Protokoll komplizierter, weil erst die 
Datenlänge übermittelt werden muss und dann die Daten in Abhängigkeit 
der Datenlänge. Einfacher ist immer den kompletten Speicher übertragen. 
Bei der Übertragungsrate von 9600 oder schneller gibt es keine 
Zeitprobleme.

von Gero D. (srswift)


Angehängte Dateien:

Lesenswert?

Joe G. schrieb:

> Eine variable Blocklänge ist für die serielle Datenübertragung
> ungünstig. In diesem Fall ist das Protokoll komplizierter, weil erst die
> Datenlänge übermittelt werden muss und dann die Daten in Abhängigkeit
> der Datenlänge. Einfacher ist immer den kompletten Speicher übertragen.
> Bei der Übertragungsrate von 9600 oder schneller gibt es keine
> Zeitprobleme.

Damit hast Du natürlich recht.

Ich hab mal meine "Boris-Assembler/Disassembler" hochgeladen. Jeweils 
ein kleines C-Progrämmchen. Liest aus einer Datei den Speicherinhalt, 
der aus dem EEPROM ausgelesen wurde, und macht auf der Standardausgabe 
einen Programmquelltext draus. Das andere übersetzt den Quelltext in 
boris-code.
Beides baut bei mir unter Linux und Windows. Einen Schönheitspreis 
verdient man damit nicht, aber es tut.

Dabei noch ein Beispielprogramm. Ein Winddreieck-Rechner.

Viel Spaß!

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hier die erste Version vom "Boris-Commander". Mann kann nun mit dem Tool 
Programme auf Taschenrechner laden, sie vom Taschenrechner runterladen, 
im PC speichern, löschen...ein Assembler/Disassembler kommt noch.

Das Tool funktioniert sehr einfach.

- COM - Port öffnen
- Taschenrechner verbinden
- Programme lesen oder schreiben
- auf PC speichern und von ihm laden

von Gero D. (srswift)


Lesenswert?

Sieht gut aus! Ich schau mal, ob ich das am Wochenende ausprobieren 
kann.

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Der Assembler/Disassembler benötigt ja eine Syntax, hier mal mein 
Vorschlag dazu.

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Nachtrag, ich habe die Tabelle nochmals etwas korregiert, so dass sie 
"Boris.h" ähnlicher wird.

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Der Disassembler ist in den Boris-Commander eingebaut. Er kann auch ohne 
Taschenrechner genutzt werden. Einfach Programfile vom PC laden und 
zwischen der ASM und HEX Darstellung umschalten :-)

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Da das Programm recht groß ist und so ein Forum eigentlich für die 
Diskussion sein soll, die Software und die Beschreibungen ab jetzt hier 
[1]. Der Disassembler ist noch um einen Bug bereinigt.

[1] https://github.com/Feinmechaniker/UPN

von Gero D. (srswift)


Lesenswert?

Joe G. schrieb:
> Da das Programm recht groß ist und so ein Forum eigentlich für die
> Diskussion sein soll, die Software und die Beschreibungen ab jetzt hier
> [1]. Der Disassembler ist noch um einen Bug bereinigt.
>
> [1] https://github.com/Feinmechaniker/UPN

Dein BorisCommander gefällt mir. Funktioniert. Die feste Kodierung der 
100 Programmspeicher könnte man vielleicht mit einem "ENDE"-Kommando 
umgehen.
Auch wäre es möglicherweise eine gute Idee, auch die Zahlenspeicher mit 
zu übertragen.

Ich schau am Wochenende mal, ob ich noch eine passende Buchse in mein 
Gehäuse hineinbekomme. Für eine neue Leiterplatte reicht wahrscheinlich 
die die Zeit nicht.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Gero D. schrieb:
> Auch wäre es möglicherweise eine gute Idee, auch die Zahlenspeicher mit
> zu übertragen.

Könnte man machen, nur sehe ich keinen Sinn darin. Bei der Software ist 
es anders, die läßt sich am PC deutlich besser erstellen. Vielleicht 
baue ich auch noch gleich einen Simulator zum Assembler, dann kann man 
schon vorher am PC testen.

Mit der Integration der seriellen Schnittstelle kann auch gleich ein 
Bootloader auf den AVR gebracht werden. Damit kann über die serielle 
Schnittstelle auch immer eine neue Programmversion auf den AVR gebracht 
werden. Allerdings ist dafür ein kleiner Resettatser notwendig. Neben 
der RUN-taste ist noch Platz und ein kleines 1mm Loch im Gehäuse fällt 
nicht auf.

Eine weitere Idee geht mir noch durch den Kopf. Da I2C frei ist, könnte 
hier ein RTC angeschlossen werden. Die Stützbatterie es ja vorhanden und 
so kann auf Tastendruck (welche ist noch offen) das aktuelle Datum und 
die Uhrzeit angezeigt werden.

von Gero D. (srswift)


Lesenswert?

Joe G. schrieb:
> Gero D. schrieb:
>> Auch wäre es möglicherweise eine gute Idee, auch die Zahlenspeicher mit
>> zu übertragen.
>
> Könnte man machen, nur sehe ich keinen Sinn darin.

Der Sinn bestünde darin, Programmspeicher zu sparen. Mein kleines 
Winddreieck-Programm zum Beispiel hat am Anfang eine Umrechnung 
Knoten->km/h, das frißt durch die Eingabe der Umrechnungskonstanten 7 
Programmspeicherplätze. Und da sind wir mit 100 doch recht knapp.


>
> Mit der Integration der seriellen Schnittstelle kann auch gleich ein
> Bootloader auf den AVR gebracht werden.

Damit hab ich bisher keine Erfahrungen. Für die Entwicklungsphase reicht 
mir die Flash-Möglichkeit bisher aus, wenn der Taschenrechner dann 
"produktiv" ist, sollte ein Softwareupdate nicht gar zu häufig sein. 
Aber möglich wäre es.

Die Serielle Schnittstelle bietet aber noch weitere interessante 
Möglichkeiten. Dateneingabe in Register, Boris2boris-Verbindungen (für 
die Elektronika-52-Varianten des Original-Boris (die hat mehrere 
Expansion-ports) gibt es unzählige Anwendungen, die man auf den boris 
sortieren könnte...


>
> Eine weitere Idee geht mir noch durch den Kopf. Da I2C frei ist, könnte
> hier ein RTC angeschlossen werden. Die Stützbatterie es ja vorhanden und
> so kann auf Tastendruck (welche ist noch offen) das aktuelle Datum und
> die Uhrzeit angezeigt werden.

Ich hab auch den Kopf voller Ideen. Wobei ich mich jetzt erst mal auf 
folgendes konzentrieren werde:

Beim Versuch, Elektronik- oder HP-Programme (ich bin erschlagen davon, 
wieviel es da gibt!) auf den boris zu portieren, sind mir die folgenden 
Schwachpunkte des boris-Befehlssatzes aufgefallen:

* Rechnende Speicher (haben die meisten HPs). Dabei spart man 
Programmschritte. Ist für den Boris fast fertig.

* Indexierte Speicherzugriffe (haben die meisten HPs und auch die 
größeren Elektronikas) Überlege ich noch, das bräuchte unbedingt eine 
Taste.

* Sauberer Status der Einstellungen (grad/rad, Anzeigenmodus). Die 
Methode, einfach immer weiterzuschalten führt im Programmmodus zu nicht 
reproduzierbaren Zuständen. Dazu hab ich mir eine Lösung überlegt, muss 
noch.

* Mehr IF-Bedingungen, z.B. IF X=Y ... (haben die meisten HPs) spart 
Rechenschritte

Und dann noch all die Dinge, die eine neue Hardware erfordern würden...

Also, es gibt noch genug zu tun.


PS. Deine Syntaxverbesserung für Assembler/Disassembler gefällt mir, ich 
hab es weitgehend für meine C-Programme übernommen.

von Uhu U. (uhu)


Angehängte Dateien:

Lesenswert?

Joe G. schrieb:
> Allerdings ist dafür ein kleiner Resettatser notwendig. Neben
> der RUN-taste ist noch Platz und ein kleines 1mm Loch im Gehäuse fällt
> nicht auf.

Guck dir mal die Reset-Miemik am Arduino an - die lösen den Reset per 
USB über DTR aus.

Eine andere Möglichkeit wäre ein kleiner Reedkontakt, den man mit einem 
Magneten durchs Gehäuse auslöst.

: Bearbeitet durch User
von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Uhu U. schrieb:
> Guck dir mal die Reset-Miemik am Arduino an

Danke! Da hätte ich ja auch selber darauf kommen können, zumal ich das 
mit Propeller von Prallax sogar so mache.

Gero D. schrieb:
> Damit hab ich bisher keine Erfahrungen.

Meine Bascom-Version bietet das sogar im Menü an (MCS Bootloader)

> Der Sinn bestünde darin, Programmspeicher zu sparen.
An die I2C Schnittstelle könnte auch ein externes EEPROM (z.B. 
24LC1025). Damit vergrößert sich der Programmspeicher enorm (128Kbyte).

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Ich habe Boris mal mit einem Bootloader versehen. Zusätzlich zu Rx und 
Tx muss noch DTR über 100n in RESET (Pin1) eingekoppelt werden. Da der 
AVR nur mit 1 MHz arbeitet, kann als maximale Baudrate nur 9600 Baud für 
den Bootloader verwendet werden. Jetzt muss man den Bootloader nur noch 
auf den Taschenrechner bringen.

1.  Bootloader.hex oder Bootloader.bin mit einem ISP-Programer flashen.
Dazu Fuses wie folgt einstellen:
Low: 0x62
High: 0xDA
Extended: 0xFF

2.  Programme einfach über die serielle Schnittstelle laden. Das geht 
über BASCOM direkt oder über ein kleines externes Programm 
(Bootloader.exe). Hier natürlich den richtigen COM-Port und 9600 Baud 
einstellen.

Alle Tools wie üblich unter Github.

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Gero hat die Darstellungsnotation von FIX und RAD/DEG geändert, sowie 
„rechnende“ Speicher eingeführt. Da nicht jeder mit der Syntax von HP’s 
vertraut ist, hier einige Beispiele zu der Verwendung der Syntax. 
Beispiele und Dokumentationen auch zukünftig hier [1]

[1]   https://github.com/Feinmechaniker/UPN/tree/master/Doc

@Gero
In der Dezimalpunktdarstellung ist ein Bug. Gebe mal 0.0012.3 ein und 
dann ENTER ;-)

von Gero D. (srswift)


Lesenswert?

Joe G. schrieb:

> In der Dezimalpunktdarstellung ist ein Bug. Gebe mal 0.0012.3 ein und
> dann ENTER ;-)

Ist aber auch gemein, zwei Dezimalpunkte in einer Zahl einzugeben!

Danke, ich repariere! Leider gibt die Anzeige ein "Du spinnst wohl?" 
nicht her ...

: Bearbeitet durch User
von Gero D. (srswift)


Lesenswert?

Ist behoben. Wenn in der v2.16 jetzt mehrere Dezimalpunkte eingegeben 
werden, gewinnt der letzte...

Ein flashfertiges image und der BASCOM-code liegt auch wieder auf 
Github.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Gero D. schrieb:
> Ist behoben. Wenn in der v2.16 jetzt mehrere Dezimalpunkte eingegeben
> werden, gewinnt der letzte...

Danke! Das ist zunächst eine Lösung. Bei einem Sahnehäubchen würde die 
erste DP-Eingabe die folgenden Eingaben eines weiteren DP sperren. Das 
Regelwerk dazu ist jedoch deutlich komplizierter. So geht es auch :-)

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Es gibt wieder eine neue Version vom Boris-Commander.
Er hat jetzt einen Editor/Compiler integriert, mit dem Programme für den 
Taschenrechner erstellt werden können. Der Syntaxcheck richtet sich 
genau nach der Befehlvorrat der Tabelle „Befehlssatz“ im /Doc 
Verzeichnis. Natürlich können die erstellten Programme auch gleich 
wieder auf den TR hochgeladen werden.

: Bearbeitet durch User
von Gero D. (srswift)


Lesenswert?

Ich hab das Kommandozeileninterface von meinem (in "C" geschriebenen) 
boris4-Assembler/disassembler ein wenig aufgeräumt, so könnte man das 
ganze auf die Menschheit loslassen. -h zeigt eine kleine Hilfe an.

Der Befehlssatz ist unverändert.

Mit der Seriellen Schnittstelle hab ich noch so meinen Ärger. Ohne Quarz 
und ohne Kalibrierung des RC-Oszillators hab ich häufig 
Übertragungsfehler :-(

Der Teil ist offensichtlich noch nicht ganz fertig...

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Die Werkskalibrierung des RC-Oszillators liegt bei +/- 4%. Durch das 
OSCCAL-Byte kann sie auf 1% (für eine Spannung und ein Temperaturwert) 
erhöht werden. Diesen Wert sollte man ermitteln und in die Software 
eintragen. Um den optimalen OSCCAL Wert zu ermitteln, habe ich mal eine 
kleine Schleife geschrieben (OSCTest.bas/OSCTest.hex). Diese gibt 
einfach einen Text auf der seriellen Schnittstelle, sowie den 
Registerwert aus. Jetzt kann man schön beobachten, wie der Text von 
absolut unleserlich über fehlerhaft bis lesbar und wieder fehlerhaft bis 
unleserlich wird. Genau den Mittelwert (hier 86) trägt man in sein 
OSCCAL-Byte nun ein. Jetzt sollte der Übertragungsfehler nicht mehr 
auftreten.

KÁØiÂrieòõÞÏ@Ìer@‚ÁõÌrÁè•a
ÕÍ=  •B•ÍúM
a’•¥Í±•ÉÒþ6a
KÁØiâòieruÎÇ@Èer@‚ÁuÌòÁìeX@õsÇÁâe@Èes@ŸSƒœ@ReÏisì•ÉÒþ62
KÁÜibrieruÎÇ@Ìer@‚ÁuÌrÁìe\@usÇÁâe@Ìes@ŸSƒœ@ReÇister@:63
KÁÜibrieruÎÇ@Ìer@‚ÁuÌrÁìe,@usÇÁâe@Ìes@ŸSƒœ@Regisìer@:6l
KÁÜiârieruÎÇ@der@‚ÁudrÁte,@usgÁbe@des@ŸSƒL@Register@:65
KÁlibrierung@der@‚ÁudrÁte,@usgÁbe@des@ŸSƒL@Register@:66
KÁlibrierung@der@‚áudrÁte,@usgábe@des@ŸSƒL@Register@:67
Kálibrierung@der@‚ÁudrÁte,@usgÁbe@des@SÁL@Register@:6p
Kálibrierung@der@Âáudráte,@usgábe@des@SÁL@Register@:69
Kálibrierung@der@Âáudrate,@usgabe@des@OSÁL@Register@:7`
Kalibrierung@der@Baudrate,@usgabe@des@OSCL@Register@:71
Kalibrierung@der@Baudrate,@usgabe@des@OSCL@Register@:72
Kalibrierung@der@Baudrate,@Áusgabe@des@OSCÁL@Register@:73
Kalibrierung@der`Baudrate,@Ausgabe@des@OSCÁL@Register@:74
Kalibrierung`der`Baudrate,`Ausgabe`des`OSCAL`Register`:75
Kalibrierung der`Baudrate, Ausgabe`des`OSCAL`Register`:76
Kalibrierung der Baudrate, Ausgabe des OSCAL Register :77
Kalibrierung der Baudrate, Ausgabe des OSCAL Register :78
Kalibrierung der Baudrate, Ausgabe des OSCAL Register :79
Kalibrierung der Baudrate, Ausgabe des OSCAL Register :80
Kalibrierung der Baudrate, Ausgabe des OSCAL Register :81
Kalibrierung der Baudrate, Ausgabe des OSCAL Register :82
Kalibrierung der Baudrate, Ausgabe des OSCAL Register :83
Kalibrierung der Baudrate, Ausgabe des OSCAL Register :84
Kalibrierung der Baudrate, Ausgabe des OSCAL Register :85
Kalibrierung der Baudrate, Ausgabe des OSCAL Register :86
Kalibrierung der Baudrate, Ausgabe des OSCAL Register :87
Kalibrierung der Baudrate, Ausgabe des OSCAL Register :88
Kalibrierung der Baudrate, Ausgabe des OSCAL Register :89
Kalibrierung der Baudrate, Ausgabe des OSCAL Register :90
Kalibrierung der Baudrate, Ausgabe des OSCAL Register :91
Kalibrierung der Baudrate, Ausgabe des OSCAL Register :92
Kalibrierung der Baudrate, Ausgabe des OSCAL Register :93
Kalibrierung der Baudrate, Ausgabe des OSCAL Register :94
Kalibrierung der Baudrate, Ausgabe des OSCAL Register :95
Kalibrierung der Baudrate, Ausgabe des OSCAL Register :96
Kalibrierung der Baudrate, Ausgabe des OSCAL Register :97
Kalibrierung der Baudrate, Ausgabe des OSCAL Register :98
KalibrierungV–ABaudrate,P]®V‰•Adesj51ARegisterç99
KalibrierungV–ABaudrate,P]®V‰•Adesj5…LªÖVkÑ•ÉA:100
KalibrierungV–ABaudrate,¨×…‰•Adesj5…LªÖVkÑ•ÉA:1˜LCáK±+KÉ¥•ÉÕ¹Ader 
¨Õ‘É…Ñ•±¨×…‰•Adesj5…LªÖVkÑ•ÉA:1˜¦HøK±+KÉ¥•ÉÕ¹Ader¨Õ‘ÉÅte,¨×ÅbeV 
ÖA§ª¨1ARegisterç1˜¦HøKalibrierungV–A¢X]–Åte,¨×ÅbeVÖA§ª¨1ARegisterç 
1˜S¤K±+KÉ¥•ÉÕ¹AderTÕ‘ÉÅte,¨×ÅbeVÖA§ªT1ARegisterç1˜M#ñK±+KÉ¥•ÉÕ¹Ad 
erTÕ‘ÉÅte,¨kÅbeVÖA§ªT1ARe³Z.«ÉA:1˜S¤K±+KÉ¥•ÉÕ¹AderTÕ‘ÉÅte,¨kÅbe 
VÖA§ªT™ªÖ¥Íѕɐó™ºjŠ

von Soul E. (Gast)


Lesenswert?

Joe G. schrieb:

> (...) Jetzt kann man schön beobachten, wie der Text von
> absolut unleserlich über fehlerhaft bis lesbar und wieder fehlerhaft bis
> unleserlich wird.

Das ist doch mal ein pragmatischer Ansatz! Einfach eine PWM ausgeben und 
mit dem Frequenzzähler messen wäre ja langweilig.

von M. K. (sylaina)


Lesenswert?

soul e. schrieb:
> Das ist doch mal ein pragmatischer Ansatz! Einfach eine PWM ausgeben und
> mit dem Frequenzzähler messen wäre ja langweilig.

Nicht jeder Hobby-Bastler hat einen Frequenzzähler auf dem Tisch stehen 
;)

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Der Weg ist das Ziel :-)
Ich möchte nicht meinen konkreten Zusammenhang zwischen Frequenz und 
OSCCAL kennen um anschließend, ausgehend von einer korrekten Baudrate 
und der zulässigen Abweichung, die Frequenz und damit wiederum OSCCAL zu 
berechnen. Ich suche einfach und schnell genau den Registerwert, bei dem 
die serielle Schnittstelle korrekt synchronisiert - nicht mehr und nicht 
weniger.

von M. K. (sylaina)


Lesenswert?

Ich mach das genauso wie du wenn ich den Kalibrierwert suche, nur dass 
ich dafür ein C-Programm hab, kenne Bascom nur vom Hören her. Mit dieser 
Lösung kann man in der Zielschaltung direkt durch ablesen das 
entsprechende Byte herausfinden ohne Lang mit nem Frequenzzähler oder 
gar Oszi und Taschenrechner rumhampeln zu müssen. Wie schon gesagt, ich 
finde das völlig legitim.

von Gero D. (srswift)


Lesenswert?

Mir gefällt diese Kalibriermöglichkeit auch!
Könnte man als zusätzliche Funktion mit integrieren...

Mit dem Spannungsabhängigen RC-Oszillator ergibt sich aber mein Dilemma:

Damit das funktioniert, muss ich die Spannung wirklich stabilisieren. 
Also einen 3.xV Spannungsregler einbauen, anstelle meines 5V-Typen, der 
ja in der aktuellen einzelligen Version der Schaltung eher überflüssig 
ist, solange die Betriebsspannung unter 5V bleibt.

Damit hab ich dann z.B. eine Betriebsspannung von 3.3V. Der ATmega 
funktioniert damit sicher. Was der Displaytreiber / Display da macht, 
muss ich erst noch ausprobieren.

Ich werde einmal testen und berichten.

Eine Idee, wenn es dann immer noch zu übertragungsfehlern kommt, wäre 
ein "richtiges" Protokoll für die Übertragung. XMODEM bietet sich an. 
Ist einfach und der Code ist als OpenSource verfügbar. Wir sind zwar mit 
200 Bytes zu übertragender Datenmenge winzig, aber wer sagt denn, daß 
das so bleibt?
Ist aber erst mal nur eine Idee, ich werd meine 3 inzwischen gebauten 
Prototypen einmal mit kalibriertem Oszi auf Übertragungsfehler testen.

von Soul E. (Gast)


Lesenswert?

Gero D. schrieb:

> Damit das funktioniert, muss ich die Spannung wirklich stabilisieren.
> Also einen 3.xV Spannungsregler einbauen, anstelle meines 5V-Typen, der
> ja in der aktuellen einzelligen Version der Schaltung eher überflüssig
> ist, solange die Betriebsspannung unter 5V bleibt.

Man könnte die Kalibrierung ja bei verschiedenen Spannungen machen und 
interpolieren.

Die aktuelle Batteriespannung erfährt der Controller durch AD-Wandlung 
einer konstanten Größe. Je niedriger die als Referenz genutzte VDD, umso 
höher der gemessene Wert. Referenz kann eine interne Bandgap sein, so 
denn vorhanden, oder eine Diode, oder die Power-LED.

Wobei der Temperaturgang des internen Oszillators meist der größere 
Beitragsleister zur Gesamttoleranz ist. Und der stört auf dem 
Schreibtisch nicht, nur im Auto.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Ich denke, wir haben kein wirkliches Problem mit der Stabilität des 
RS-Oszillators. Wenn kein Datenaustausch stattfindet, ist die Frequenz 
egal. Wird ein USB/Seriell-Wandler angeschlossen, so sind automatisch 5V 
von der USB-Schnittstelle vorhanden. OSCCAL wird auf diese 5V 
kalibriert. So habe ich es bei mir gelöst und die Übertragung 
funktioniert stabil und sicher.

Ein Protokoll z.B. XMODEM löst das Problem nicht. Hier könnten nur 
Fehler erkannt und mögliche fehlerhafte Daten erneut gesendet werden. 
Ist jedoch die Datenübertragung aufgrund einer fehlerhaften Baudrate 
gestört, so heilt das Protokoll auch nichts.

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Anbei mal ein Diskussionsvorschlag.

CPU ist ein ATmega1284. Somit sind noch Reserven sowohl für die Software 
als auch für die Hardware. Der Programspeicher ist nicht mehr der 
interne begrenze EEPROM sondern ein externer I2C FRAM. Im Prinzip 
verhält er sich wie ein EEPROM nur schneller und nicht mit begrenzen 
Schreibzyklen. Bascom unterstützt ihn mit einer eigenen Lib, so dass 
dafür keine Programänderungen notwendig sind. Zusätzlich kann eine 
SD-Card angeschlossen werden und auch die USB-Schnittstelle kommt mit 
ins Layout. Da die CPU genug Ports frei hat, kann die Tastaturmatrix auf 
5x7 (vorerst) aufgeweitet werden. Mehr ist immer möglich. Damit könnte 
eine ähnliche Belegung wie beim HP42 erfolgen. Die Anzeige würde ich so 
belassen.
Was meint ihr?

von Gero D. (srswift)


Lesenswert?

Gute Ideen, manches davon hatte ich mir auch schon überlegt. Den 
größeren Prozessor hatte ich bisher noch nicht ins Auge gefasst, auch 
den Externspeicher nicht. Beides ist echt überlegenswert.
Die 7x5-Tastatur ist der logische Schritt, damit sind dann einige der 
Beschränkungen weg. Einfach zu realisieren. Die SD-Karte ist eigentlich 
schon"gebucht", damit (und den entsprechenden AVR-Routinen) hab ich ein 
wenig experimentiert. Funktioniert einwandfrei. Die USB-Schnittstelle 
könnte auch mit aufs Board, aber dann am besten gleich in Kombination 
mit einer Akku-Ladeelektronik.

Was ich noch anders machen möchte, ist das Display. Anstelle der 8 
Siebensegment-Stellen denke ich über eine mehrzeilige Dotmatrix-Anzeige 
nach. Damit könnte man die Genauigkeit der BASCOM-Double-Bibliothek 
ausnutzen, mehrere der Rechenregister anzeigen und vor allem im 
Programmiermodus hätte man mehr Freiheiten (z.B. statt dem Code die 
Mnemonik anzeigen, die vorhergehende und die folgende Anweisung auch 
noch mit darstellen.

Mir gefallen die EA DOGM163 beispielsweise recht gut. Im interaktiven 
Modus das X-Register in doppelter Zeilengrösse, darüber kleiner den 
Status (grad/rad, PC,...) und das Y-Register. Im Programmiermodus 3 
Programmzeilen als Befehle. Im Sleepmodus einfach die 
Hintergrundbeleuchtung aus. Funktioniert mit 5V oder 3.3V. 
SPI-Interface, da fällt der Anschluss für die SD-Karte praktisch fast 
mit ab.

Das alles erfordert aber eine neue Leiterplatte. Die bei all den 
Wünschen natürlich auch etwas größer wird. Damit brauch ich dann eine 
neue Layoutsoftware, das freie eagle hat bei 100x80 seine Grenze und ein 
Abo will ich nicht... Und ein neues Gehäuse.

Also: Es gibt viel zu tun!

: Bearbeitet durch User
von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Ich dachte ja auch an Arbeitsteilung :-) Als Besitzer der Eagle 
Vollversion unterliege ich keiner Beschränkung. Außerdem musst du ja 
nicht alles allein machen ;-)

Den Display Funktionsumfang zu erweitern finde ich gut. Allerdings 
scheint mir das EA DOGM163-A nur für drei feste Zeilen ausgelegt zu 
sein. Das EA DOGS104-A (4 zeilig im Normalmode) kann jedoch wahlweise 3 
Zeilen + 1 Zeile in doppelter Größe bzw. 2 Zeilen in doppelter Größe 
darstellen. Das Display läuft mit 3.3V, so dass das ganze System auf 
3.3V laufen könnte. Damit fallen auch die 5.0V zu 3.3V Pegelwandler für 
die Ansteuerung der SD-Card weg.

Ich erstelle mal eine Komplettschaltung für eine weitere Diskussion. Als 
Randbedingungen halte ich mal die folgenden Komponenten fest.
- Atemga 1284
- FRAM  FM 24C64B-G
- Micro-SD
- USB (Mini/Micro/USB-C) incl. Ladeelektronik und USB/Seriell-Wandler
- Display EA DOGS104-A
- 5x8 Matrix für Keypad (somit gibt es HP42 oder WP34S Kompatibilität 
bezüglich der Tastenanordnung)

Wünsche und Diskussionen dazu sind natürlich gerne gesehen.

von Uhu U. (uhu)


Lesenswert?

Joe G. schrieb:
> Ich dachte ja auch an Arbeitsteilung :-) Als Besitzer der Eagle
> Vollversion unterliege ich keiner Beschränkung. Außerdem musst du ja
> nicht alles allein machen ;-)

Da wäre doch KiCad angebrachter - das hat keinerlei Beschränkungen, ist 
frei verfügbar und kostet nichts.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Jeder nutzt das Werkzeug, welches er beherrscht und in seiner 
Werkzeugkiste hat. Bei mir ist es Eagle. Deinem Engagement mit KiCad 
steht doch nichts im Wege. Nach der Abstimmungsphase der Schaltung 
machst du das Layout in KiCad und ich in Eagle. Der Nachnutzer darf sich 
dann für sein Lieblingswerkzeug selbst entscheiden.

von Gero D. (srswift)


Lesenswert?

Joe G. schrieb:
> Den Display Funktionsumfang zu erweitern finde ich gut. Allerdings
> scheint mir das EA DOGM163-A nur für drei feste Zeilen ausgelegt zu
> sein. Das EA DOGS104-A (4 zeilig im Normalmode) kann jedoch wahlweise 3
> Zeilen + 1 Zeile in doppelter Größe bzw. 2 Zeilen in doppelter Größe
> darstellen. Das Display läuft mit 3.3V, so dass das ganze System auf
> 3.3V laufen könnte. Damit fallen auch die 5.0V zu 3.3V Pegelwandler für
> die Ansteuerung der SD-Card weg.

Ich hab mir die verschiedenen EA DOG Textdisplays vor einiger Zeit mal 
angeschaut, das EA DOGS104-A war mir zu klein. Zum einen gewinnt man bei 
einer Breite von 10 Zeichen gegenüber den 8 Siebensegmentanzeigen 
praktisch nur eine Stelle (Der Dezimalpunkt braucht auf dem 
Dotmatrixdisplay eine ganze Stelle). Zum anderen ist es insgesamt doch 
sehr klein und die Zeichengröße ist auch eher winzig.
Das 4*20-Display EA DOGM204-A war mir mit den vielen Kondensatoren, die 
es braucht dann zu unhandlich. Das DOGM163-A erscheint mir als guter 
Kompromiss, in der Größe fast wie die Siebensegment-LEDs und mir gefällt 
die Darstellung des X-Registers in doppelter große und darüber das 
Y-Register klein. Die Zeichengröße ist vergleichsweise groß und mit 
Beleuchtung gut lesbar. Und es hätte alle Vorteile (Spannung, 
Stromaufnahme, SPI-Schnisttstelle), die auch das kleinere hat.

Die Größe der SD-Karte (Micro oder normal) würde ich davon abhängig 
machen, wie groß die Leiterplatte am Ende wird. Mir gefällt die normale 
Karte besser als diese Fitzeldinger (mit dem Alter werden die Daumen 
immer dicker). Aber das sollte kein Kriterium sein.

Viel größer als boris4 sollte das Board aber nicht werden, damit es ein 
Taschenrechner bleibt. Vielleicht bietet sich ein Querformat an? Rechts 
die "Haupttasten" etwas größer, links oben das Display und darunter die 
seltener benutzten Tasten?

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Ich habe mal drei maßstabsgetreue Entwürfe gemacht. Das Betrifft sowohl 
die Tasten als auch die Displays und ihre Schriftgröße. Mir scheint das 
DOGM163 mit seiner Schrifthöhe von 3.6mm etwas klein. Das DOGM162 hat 
schon 5.6mm pro Zeile, aber nur zwei Zeilen. Das DOGM204 ist mit einer 
Schrifthöhe von 4.8 zwar etwas kleiner, hat jedoch mit 4 Zeilen und 20 
Zeichen ordentlich Platz. Die Ansteuerung geht auch über I2C oder SPI. 
Ich schwanke zwischen Variante 1 und Variante 2.

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Und noch ein Entwurf im Querformat, also das Format der beliebten 
Voyager-Serie (übrigens mein absolutes Lieblingsformat). Dieses Format 
hat den Vorteil, wunderbar eine „normale“ SD-Card unterzubringen.

von Gero D. (srswift)


Lesenswert?

Großartig, das ist auch main Favorit. Wobei mir aber das 3-Zeilige 
Display besser gefällt.

Laut Datenblatt sind die beiden Displays pinkompatibel, es wäre also nur 
eine Softwaresache. Das Dreizeilige hatte ich auf dem Steckbrett bereits 
am funktionieren. Braucht aber noch ein wenig...

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Anbei der erste Entwurf mit FRAM, SD-CARD und 3-zeiligen Display. Laut 
Datenblatt des St7036 geht hier tatsächlich der „double hight font“, so 
dass ich das DOGM 163 genommen habe. Es ist aber wie schon bemerkt 
Pinkompatibel. Wer mag, kann ja mal über die Schaltung schauen und auf 
Fehler achten. Es folgt noch die Ladeelektronik und das USB-Interface.

von Srswift (Gast)


Lesenswert?

Die Displaybeleuchtung braucht zwei Vorwiderstände. Und ich hätte gern 
noch den sechspoligen Programmierstecker...

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Srswift schrieb:
> Die Displaybeleuchtung braucht zwei Vorwiderstände.
Danke, hatte ich glatt übersehen, weil sie in der Lib fehlten.

> Und ich hätte gern noch den sechspoligen Programmierstecker...
Wenn du mit „den“ genau die Pinbelegung der jetzigen Platine meinst, 
dann nehme ich ihn erst mal so auf. Mal sehen wie er sich später 
unterbringen läßt. Perspektivisch würde ich lieber auf die einmalige 
Programmierung eines Bootloaders setzen und dann die Software über USB 
einspielen. Bei der jetzigen Version mache ich es auch nur noch so.

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Jetzt vollständig und mit Ladeschaltung + USB

von Gero D. (srswift)


Lesenswert?

Gute Arbeit! Ich find auf den ersten und zweiten Blick keine 
Knackpunkte.
Das ganze in Taschenrechnergröße zu bringen stelle ich mir knifflig vor.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Die LED’s für die Hintergrundbeleuchtung werde ich noch mit einem Mosfet 
abschaltbar machen. Vielleicht kann man sich auch einen kompletten E/A 
Schalter sparen und den Atmega in den Sleep-Mode schicken. Geweckt wird 
er dann über die „ON“ Taste.

von Gero D. (srswift)


Lesenswert?

Das mit der schaltbaren LED ist zweckmäßig. Ob man das dann per PWM noch 
dimmt, ist eher Geschmacksache, aber nicht unmöglich.

Auch das mit dem weggelassenen Einschalter ist Geschmacksache. Es ist 
natürlich bei der Gestaltung des Gehäuses dann und wann eine 
Herausforderung, den Schalter noch mit unterzubringen. Mein 
Boris4-Gehäuse wäre fast 10mm kürzer geworden, wenn ich auf den Schalter 
verzichtet hätte.
Ich persönlich mag den "harten" Ausschalter trotzdem. Ich verwende den 
Umschalter Ein/Aus auch zur Umschaltung Betrieb/Akkuladen. Damit nehme 
ich ein wenig Einfluß auf die Anzahl der Ladezyklen. Manch LiPo-Akku ist 
schon "totgezykled" worden. Wobei man das natürlich auch anders machen 
kann. Hängt auch davon ab, ob und wie man das Gerät dann wirklich in der 
Praxis einsetzt. Wie schon ganz oben geschrieben, mir ging es (auch) um 
den praktischen Einsatz des boris, nicht nur um den Nachweis, daß es 
geht. Mein boris4 ist inzwischen im praktischen Einsatz und bewährt sich 
für einige Spezialaufgaben ganz ordentlich...

Zur neuen Schaltung, ich hab mit dem Mega128 bisher noch keine 
praktischen Erfahrungen, laut Datenblatt sieht Deine Beschaltung 
vernünftig aus. Ob der Quarz sein muß? Im Interesse der seriellen 
Schnittstelle möglicherweise. Wenn Du das alles aufs Board bekommst, 
gerne.

: Bearbeitet durch User
von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Die Schaltung ist nochmals überarbeitet.
- Schalten der LCD Hintergrundbeleuchtung
- ON/OFF Button für Sleep-Mode
- Kleinigkeiten

Das Layout ist auch erstellt und bedarf nur noch einiger Optimierungen. 
Die Platinengröße beträgt derzeit 80mm x 127mm. Mit etwas Rücken kommt 
man noch auf 80mm x 125mm.

von Srswift (Gast)


Lesenswert?

Ich hatte es schon befürchtet, bei dieser Funktionsmenge geht es nur mit 
SMD, wenn man halbwegs kompakt bleiben will.

Damit hat dann aber mancher ein Problem. Ich zugegebenermaßen auch.

Aber vielleicht ist das ja ein Anlass, sich damit zu beschäftigen.

Ich bin in den nächsten Tagen unterwegs und hab wenig Zeit, hier 
reinzuschauen...

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Ohne SMD wird es leider nicht gehen. Ich habe jedoch keine kleinere 
Bauform als 0805 gewählt. Mit etwas Übung lässt sich das wunderbar 
bewältigen. Aber auch eine konventionelle Bauweise würde SMD beinhalten. 
Mini-USB und SD-Card gibt es ja als THT nicht.

Einige kleine Änderungen sind noch am Layout notwendig, dann würde ich 
einen Satz Leiterplatten bestellen. Da der Hersteller (China) nur 
Losgrößen beginnend ab 5 Stück anbietet, starte ich je nach 
Interessenten hier im Forum mal mit 5 Leiterplatten.

von Marten Morten (Gast)


Lesenswert?

Als alternative zu Tastenbeschriftung wären vielleicht folgende 
Tastenkappen interessant.

https://de.aliexpress.com/item/10PCS-6-6-7-3MM-H-9-8MM-With-2Caps-4PIN-DIP-SMD-Momentary-Tact-Button/32844335529.html

Zwischen der farbigen Kappe und der Klarsichtkappe könnte man dauerhaft 
eine Beschriftung einlegen.

Allerdings wird der ganze Taschenrechner dabei klobiger und Gehäuse und 
Platin müssten geändert werden. Kleinere habe ich nicht gefunden. 
Irgendwas ist ja immer :(

von Srswift (Gast)


Lesenswert?

Joe G. schrieb:
> ich je nach Interessenten hier im Forum mal mit 5 Leiterplatten.

Ich würde eine wollen!

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?


von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Schaltung und Layout sind nochmals überarbeitet. Die 
Spannungsstabilisierung übernimmt nun ein Regler mit einer Dropout 
Spannung von 70 mV. Somit wird der Akku besser genutzt. Die endgültige 
Größe beträgt nun 80mm x 127mm. Die Tasten haben ein Raster von 12mm, so 
dass 9x9 Keycaps verwendet werden können. Wenn kein weiteres Interesse 
besteht, bestelle ich nun 5 Muster.

von Gero D. (srswift)


Lesenswert?

Bevor es jetzt mit dem "Super-Boris" richtig losgeht, hab ich noch 
einmal die Boris4-Firmware aktualisiert. Es sind im wesentlichen 
Funktionen zum blockweisen lesen/schreiben über die serielle 
Schnittstelle (mit Prüfsummen und Blocknummern und Retry bei 
übetragungsfehlern, ähnlich dem XMODEM-Protokoll) hinzugekommen. Und als 
kleines Bonbon noch der Start eines Programms auf dem Taschenrechner 
über die serielle Schnittstelle. Das Frontend auf dem PC ist ein kleines 
C-Tool (Sourcecode für Windows und Linux).

Viel Spaß damit.

Die Files kann man auf

https://github.com/Feinmechaniker/UPN

finden.

: Bearbeitet durch User
von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Die Taster + Keycaps sind angekommen. Die Verarbeitung sieht recht 
ordentlich aus und damit halte ich zum ersten mal 
"taschenrechnergeeignete" Tasten in der Hand. Mit einer Größe von 8x8mm 
(Keykaps) bzw. 10x10mm (durchsichtige Abdeckkappen) haben sie auch eine 
gute "Taschenrechnergröße". Nun fehlen noch die Leiterplatten. Sie sind 
aber schon postalisch unterwegs :-)

von Jens G. (jensg)


Lesenswert?

Besten Dank für diesen Thread. Hier kann man viel lernen.

Hinweis zur Bauteilbeschaffung. Ich bestelle viel bei TME EU. Günstige 
Preise bei auch kleinen Stückzahlen.

von hotwolf (Gast)



Lesenswert?

Noch ein Vorschlag zur Tastenbeschriftung:
Anstatt Tastenkappen zu beschriften, habe ich gute Erfahrungen mit 
gravierten Acrylplatten gemacht. Mit einem Laser oder einer Fräse 
bekommt man eine ausreichend feine Auflösung für die Beschriftung in den 
Tastenzwischenräumen hin.

Mehr Fotos hier:
http://hotwolf.github.io/AriCalculator/

oder hier:
https://www.hpmuseum.org/forum/thread-7773.html

von Jens G. (jensg)


Lesenswert?

Liebhaber von "Original HP rpn Rechnern" können auch ein Emulator 
verwenden. Ein Projekt gibt es hier: http://www.teenix.org/

Als Prozessor wird ein PIC18F47K40 mit 15-Digit 7-Segment LED verwendet. 
Der Quellcode vom Programm liegt nicht vor - wohl aber das HEX-File für 
den PIC.

von Mario (Gast)


Lesenswert?

Für bessere Lesbarkeit gehört noch eine (rote) Plexiglasscheibe vor die 
7-Segment Anzeige :)

von Jens G. (jensg)


Lesenswert?

Mario schrieb:
> Für bessere Lesbarkeit gehört noch eine (rote) Plexiglasscheibe vor die
> 7-Segment Anzeige :)
Ich klebe das gelbe Kaptonband auf das LED-Display. Das streut den 
Lichtaustritt der LED und schont gleichzeitig die Oberfläche vom 
Display.

von Gero D. (srswift)


Angehängte Dateien:

Lesenswert?

Der Tip mit der roten Folie ist gut, die Lesbarkeit des Displays wird 
(nicht nur auf dem Foto) besser. Danke

Die Ansteuerung für das dreizeilige EA-DOG-Display funktioniert auf dem 
Experimentierbord ordentlich. Auch im Dreizeilenmodus ist die 
Alblesbarkeit überzeugend. Da kann eine Menge Zusatzkram mit dargestellt 
werden. Vor allem im Programmiermodus ist es ein deutliches Plus. Man 
sieht gleichzeitig die vorhergehende, die aktuelle und die nächste 
Zeile.

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Die Leiterplatten sind eingetroffen - es kann losgehen :-)

von Gero D. (srswift)


Angehängte Dateien:

Lesenswert?

Nein, das ist er noch nicht, der Boris_Voyager. In der Wartezeit auf die 
Leiterplatte hab ich ein wenig mit dem Display und der Software 
gespielt. Dabei ist eine Boris-5 Leiterplatte und Software entstanden. 
Die nimmt Rücksicht auf meine Beschränkungen:
- kleiner als 100x80
- keine SMDs
- ATMega 328P CPU

Funktional ist es der programmierbare boris-4 von oben. Mit folgenden 
Verschlimmbessernden:

- EA DOG 163-Display mit oder ohne Hintergrundbeleuchtung
- 8x4 Tastatur. Die Software unterstützt prinzipiell auch mehr Zeilen.
- USB-Schnittstelle mit MCP2221 Chip on board
- 3.3V Design
- 255 Programmschritte
- 32 Speicher

Die Software hat im wesentlichen die gleiche Funktionalität wie beim 
boris-4. Und kann die Basis für den Boris_Voyager bilden.

Die Software lade ich in den nächsten Tagen auf Github hoch (ein paar 
Tests mag ich noch machen vorher). Die Leiterplattendaten bei Interesse 
hier.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Ein schöner Testaufbau Gero!
Morgen soll Mouser noch die „Exoten“ wie FRAM und FT230 liefern und dann 
würde ich dir ein kleines Päckchen packen.

von Gero D. (srswift)


Angehängte Dateien:

Lesenswert?

Je länger ich mit boris5 experimentiere, um so besser gefällt mir diese 
Lösung. Das Display ist ein echter Gewinn.
Die Stromaufnahme mit Hintergrundbeleuchtung liegt bei 74 mA. Im 
Ruhemodus, ohne LED bei knapp über 1mA. Ohne Stomsparfunktion der Chips.
Für die weiter oben beschriebene Gauss-Aufgabe benötigt der Rechner 17 
Sekunden.
Der Hex-Modus und die Loop-Funktion ist bereits mit drin, Platz für die 
Index-Funktion ist noch frei.
Die Tastenbelegung hat sich natürlich geändert, leider auch der 
Befehlssatz. Die Winkelfunktionen sind wieder in die erste Reihe 
gerutscht, damit haben sie dann leider auch andere Codes.

Die BASCOM-Sourcen liegt auf Github:

https://github.com/Feinmechaniker/UPN/blob/master/Bascom/rpn_boris5_A328_v3.bas

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.