Hi,
warum find ich im Netz nix zu selbstgebauten/umgebauten Taschenrechnern
basierend auf einem Mikrocontroller? Gesucht und gesucht, aber nichts
dergleichen gefunden.. Nur lande ich immer wieder bei von haus aus
programmierbaren 100€-Rechnern.. Kennt ihr zufällig was? Ich such
Projektergebnisse von leuten die das auch gemacht haben..
paUl schrieb:
> Hi,>> warum find ich im Netz nix zu selbstgebauten/umgebauten Taschenrechnern> basierend auf einem Mikrocontroller? Gesucht und gesucht, aber nichts> dergleichen gefunden.. Nur lande ich immer wieder bei von haus aus> programmierbaren 100€-Rechnern.. Kennt ihr zufällig was? Ich such> Projektergebnisse von leuten die das auch gemacht haben..
Weil es sich finanziell nie lohnen wird. Kostet ungefähr das Zehnfache,
sieht dann immer noch gebastelt aus und "frisst" unendlich viel
Freizeit.
Ein Beispiel:
http://www.elektor.de/products/books/e-books/programmierbare-taschenrechner.503602.lynkx
hm.. is in assembler.. C wär mir lieber.
vielleicht ließe sich auch einfach ein bestehender taschenrechner
erweitern, so dass ich zwischen original-taschenrechner und
mikrocontroller wählen kann..
wie sorg ich dann da dafür, dass es keine probleme gibt? wenn ich den
mikrocontroller aktivier, is ja nich automatisch alles von der
originalbeschaltung getrennt..
Helmut S. schrieb:
[...]
>> Weil es sich finanziell nie lohnen wird. Kostet ungefähr das Zehnfache,> sieht dann immer noch gebastelt aus und "frisst" unendlich viel> Freizeit.
Auch Tennisspielen wird sich in den meisten Fällen finanziell nie
lohnen, man landet auf der Weltrangliste höchstens auf Platz 100000 und
Tennisspielen frisst unendlich viel Freizeit.
Schon meine Eltern haben so argumentiert wie Du. Ich frage mich bis
heute, warum technische Hobbies immer irgend wie ökonomisch bewertet
werden. Es sind Hobbies! Was ist so schwer daran zu verstehen. Wenn
jemand in seiner Freizeit einen Taschenrechner selbst entwickeln möchte
- warum nicht? Andere bauen Flaschenschiffe, speieln Tennis, Golf,
Handball, Fußball, motzen ihren Golf oder Dreier-BMW mit zigtausenden
von Euro auf. Das wird akzeptiert.
> Ein Beispiel:> http://www.elektor.de/products/books/e-books/programmierbare-taschenrechner.503602.lynkx
ciao
Marcus
Marcus Woletz schrieb:
[...]
> heute, warum technische Hobbies immer irgend wie ökonomisch bewertet
ersetze "teschnische Hobbies" durch "Elektronikhobby"
und ergänze Liste akzeptierter Geldschlucker um "Modellbahn",
"Modellflug" etc. auch seine Klamotten selbst zu stricken ist zumeist
ökonomisch nicht sinnvoll ;-)
[...]
ciao
Marcus
>Wenn jemand in seiner Freizeit einen Taschenrechner selbst entwickeln möchte>- warum nicht?
Weil es in C ein Kinderspiel ist, also keine wirkliche Herausforderung.
C lieferet schon eine Menge mathematischer Funktionen mit.
Wenn man die in Assembler realisiert, ist das schon was anderes.
Willst du in einer Woche das Ding komplett fertig haben?
Marcus Woletz schrieb:
> Helmut S. schrieb:> [...]>>>> Weil es sich finanziell nie lohnen wird. Kostet ungefähr das Zehnfache,>> sieht dann immer noch gebastelt aus und "frisst" unendlich viel>> Freizeit.>> Auch Tennisspielen wird sich in den meisten Fällen finanziell nie> lohnen, man landet auf der Weltrangliste höchstens auf Platz 100000 und> Tennisspielen frisst unendlich viel Freizeit.
Schon richtig.
Aber gerade bei Taschenrechner und Bastlern ist die Situation doch die:
Irgendwie sinnvoll soll die Bastelei ja auch sein. Und es macht nun mal
wenig Sinn ein Gerät komplett aufzubauen (mit Gehäuse u.dgl.), das du
bei Tschibo um 1 Euro 80 kaufen kannst oder zur Kilopackung Kaffe als
Werbegeschenk mit dazubekommst.
Das Interessante bei einem Taschenrechner ist ja letztendlich die
Programmierung. Und die kann man genausogut auch auf einem PC ohne
irgendwelche externe Hardware machen. Sooo interessant sind
Matrixtastatur und LCD Anzeige dann auch wieder nicht, dass ein
Taschenrechner ein wochenendfüllendes Thema wäre. Da gibt es
Interessanteres.
Und deshalb (meine Meinung) findet im Web relativ wenig zu diesem Thema.
> paUl schrieb:>> das ganze soll natürlich einen sinn haben..>> ich will formeln speichern können und neben normalen rechnungen auch>> einfach formeln ausfüllen können..
Mal im ernst, für sowas hat man doch seinen guten alten HP48xx oder? :)
Wenn man aber dafür sorgen will, dass Rundungsfehler durch
Fließkommarechnung nicht auffallen, wird das ganze nicht mehr so
trivial. Das schafft noch nicht mal Excel, obwohl es da durch hohe
Rechenleistung und um ein vielfaches leichter wäre, nur mit Integer zu
rechnen.
Man trage in eine Spalte untereinander folgende vier Zahlen ein:
0,05
-0,07
0,02
0
Nun addiere man diese Zahlen. Das richtige Ergebnis ist 0.
OpenOffice.org macht es übrigens richtig. Nein, die rechnen intern auch
nicht mit Integer aber die verstehen es die Rundungsfehler nicht
erscheinen zu lassen.
Das ist doch ein schöne Projekt!
Da bekomme ich auch fast Lust was zu machen. Einen HP/TI/Casio kann ja
jeder auf dem Schreibtisch liegen haben. Aber ein selbstbau Rechner, am
besten ohne gehäuse, macht doch mal eindruck auf die Kollegen/Kunden ;-)
Auch in C kann man sich da schön mit beschäftigen. Schon einen
vernünftigen Parser für algebraische Ausdrücke zu schreiben (ohne
inspiration im Netz!!!) ist ne nette beschäftigung.
Karl heinz Buchegger schrieb:
[...]
> Schon richtig.> Aber gerade bei Taschenrechner und Bastlern ist die Situation doch die:> Irgendwie sinnvoll soll die Bastelei ja auch sein. Und es macht nun mal> wenig Sinn ein Gerät komplett aufzubauen (mit Gehäuse u.dgl.), das du> bei Tschibo um 1 Euro 80 kaufen kannst oder zur Kilopackung Kaffe als> Werbegeschenk mit dazubekommst.
Im Prinzip stimme ich Dir zu. Allerdings wird der OP schon einen Anreiz
haben, das durchzuziehen. Welcher Anreiz das auch immer sein mag. Ich
reagiere inzwischen leider ein wenig verschnupft, weil einfach immer mit
der ökonomische Keule draufgehauen wird. So gesehen müssten 99,9% aller
Elektronikbasteleien sofort eingestampft werden. Vielleicht ist es genau
diese Einstellung, die den massiven Einbruch bei den Elektronikbastlern
in den 90er-Jahren bewrikt hat.
[...]
ciao
Marcus
heinz schrieb:
> Das ist doch ein schöne Projekt!> Da bekomme ich auch fast Lust was zu machen. Einen HP/TI/Casio kann ja> jeder auf dem Schreibtisch liegen haben. Aber ein selbstbau Rechner, am> besten ohne gehäuse, macht doch mal eindruck auf die Kollegen/Kunden ;-)
Ne nix "ohne Gehäuse", wenn schon dann schönes Acrylglasgehäuse. ;)
und schöne Tasten ausdenken ..
und wenn ich da an die ganzen funktionen meines jetzigen taschenrechners
denk.. rechnen in anderen systemen, etc..
wie könnte ich denn eine umschaltung zwischen taschenrechnerelektronik
und eigenem mikrocontroller realisieren? das ganze teilt sich ja dann
teile der schaltung und ist damit ja nicht vollständig voneinander
getrennt..
Karl heinz Buchegger schrieb:
[...]
> Das Interessante bei einem Taschenrechner ist ja letztendlich die> Programmierung. Und die kann man genausogut auch auf einem PC ohne> irgendwelche externe Hardware machen.
Elektronikbasteln kann man dank immer ausgefeilterer
Simulationsprogramme (ich meine hier nicht unbedingt SPICE), mit denen
man das Elektronikbasteln komplett auf den PC verlagern kann. Trotzdem
sind das einfach nur Trockenübungen. Sowas würde mich nie reizen. Einzig
Spice ist interessant, um ein bestimmtes Verhalten von Teilen einer
Schaltung zu testen, bevor man dann alles in Hardware gießt. Aber rein
virtuell am PC zu experimentieren, würe mir einfach zu langweilig.
[...]
ciao
Marcus
STK500-Besitzer schrieb:
>>Wenn jemand in seiner Freizeit einen Taschenrechner selbst entwickeln möchte>>- warum nicht?>> Weil es in C ein Kinderspiel ist, also keine wirkliche Herausforderung.> C liefert schon eine Menge mathematischer Funktionen mit.
Ist es leider nicht. Der Grund: der heißgeliebte AVR-GCC macht leider
nur 32 bit Genauigkeit. Also müssen alle Mathefunktionen zu Fuß neu
programmiert werden. Und wenn mehr als nur die 4 Grundrechenarten
gefordert sind, ist das auch in C eine Herausforderung.
Gruß
Jadeclaw.
>Soooo einfach ist das auch in C nicht. Zumindest wenn man . vor -,>Funktionen, Klammern und ähnliches machen will.
Und soooo kompliziert nun auch wieder nicht. Einfach ein bisschen
rekursiven Code und das wars auch schon. BNF lässt grüssen.
Gruss Helmi
Marcus Woletz schrieb:
> Schaltung zu testen, bevor man dann alles in Hardware gießt. Aber rein> virtuell am PC zu experimentieren, würe mir einfach zu langweilig.
Ich rede auch nicht von der Elektronik, sondern vom C-Programm :-)
Marcus Woletz schrieb:
>Es sind Hobbies! Was ist so schwer daran zu verstehen. Wenn>jemand in seiner Freizeit einen Taschenrechner selbst entwickeln möchte>- warum nicht?
Auch wenn ich den Beitrag des Threadstarters nur überflogen habe:
Er will nicht ENTWICKELN -- er will irgendetwas abkupfern, was sich ein
anderer irgendwo anders abgekupfert hat. Und wie Herr Buchegger schon
bemerke, in C ist das eh recht trivial, jedenfalls wenn man Bibliotheken
anderer Leute verwendet. Na ja, immer noch besser als Videos gucken...
Jadeclaw Dinosaur schrieb:
> Ist es leider nicht. Der Grund: der heißgeliebte AVR-GCC macht leider> nur 32 bit Genauigkeit. Also müssen alle Mathefunktionen zu Fuß neu> programmiert werden. Und wenn mehr als nur die 4 Grundrechenarten> gefordert sind, ist das auch in C eine Herausforderung.
Ich glaube, dass zumindest früher viele Taschenrechner BCD Arithmetik
mit Mantisse und Exponent gemacht haben. Dazu noch 2 oder 3 nicht
angezeigte Schattenstellen um die Rundungsfehler im Zaum zu halten.
Hast du erst mal die 4 Grundrechnungsarten, gehen die restlichen
Funktionen nach dem Muster: Im Web ein Verfahren suchen, mit dem man das
Gewünschte mit den Grundrechenarten bzw. den Funktionen die man schon
hat berechnen kann.
Ist grundsätzlich eine schöne Übung.
> Er will nicht ENTWICKELN -- er will irgendetwas abkupfern,> was sich ein anderer irgendwo anders abgekupfert hat
He, he.
Persönlich denke ich, dass wir jetzt der Sache schon näher kommen :-)
Hallo Helmut,
Helmut Lenzen schrieb:
>>Soooo einfach ist das auch in C nicht. Zumindest wenn man . vor -,>>Funktionen, Klammern und ähnliches machen will.>> Und soooo kompliziert nun auch wieder nicht. Einfach ein bisschen> rekursiven Code und das wars auch schon. BNF lässt grüssen.
klar, deshalb füllt das Drachenbuch ja nur weit über tausend Seiten. OK,
ein recursive descent Parser ist nicht extrem kompliziert, aber man muss
sich schon ein klein wenig einlesen, um das Prinzip zu vrstehen.
Nur weil man den Parser in BNF notieren kann, heißt das noch lange
nicht, dass man das Ding dann auch als Programm umzusetzen vermag. Und
einfach durch bison etc. durchjagen dürfte mangels Speicherplatz im AVR
auch ein wenig eng werden, wenn auch noch anderes Zeug reinsoll.
>> Gruss Helmi
ciao
Marcus
Stefan Salewski schrieb:
[...]
> Er will nicht ENTWICKELN -- er will irgendetwas abkupfern, was sich ein
na ja, das ist doch von der ökonomischen Seite her gar nicht so verkehrt
;-)
[...]
ciao
Marcus
Marcus Woletz schrieb:
> klar, deshalb füllt das Drachenbuch ja nur weit über tausend Seiten. OK,> ein recursive descent Parser ist nicht extrem kompliziert, aber man muss> sich schon ein klein wenig einlesen, um das Prinzip zu vrstehen.
Schon klar.
Nur muss man nicht die komplette Theorie Compilerbau pauken um einen
Punkt vor Strich Taschenrechner zu bauen.
Im C++ Standardwerk vmo Stroustoup ist einer drinnen. Der Code ist ca.
eine halbe Buchseite groß (müsste jetzt nachschlagen)
> Nur weil man den Parser in BNF notieren kann, heißt das noch lange> nicht, dass man das Ding dann auch als Programm umzusetzen vermag. Und> einfach durch bison etc. durchjagen dürfte mangels Speicherplatz im AVR> auch ein wenig eng werden, wenn auch noch anderes Zeug reinsoll.
Es gibt auch Generatoren die einen rekursive-decent-Parser erzeugen.
Ein Parsergenerator (egal nach welchem Prinzip er arbeitet) ist doch mit
Kanonen auf Taschenrechner geschossen, zumal ein damit generierter
Parser (aber auch ein handgeschriebener RD-Parser) normalerweise dafür
ausgelegt ist, einen kompletten Term vorgesetzt zu bekommen, der dann
ohne weiteren Benutzereingriff zu einem Ergebnis oder einer Fehlermel-
dung verarbeitet wird.
Ein Taschenrechner ist aber im Vergleich zu einem typischen Compiler und
sogar einem Basic-Interpreter ein maximal interaktives Instrument. Man
kann bereits während der Eingabe Zwischenergebnisse sehen und teilweise
verarbeitete Eingaben bei Bedarf noch korrigieren. Ein eingegebener Term
ist nie abgeschlossen, da jederzeit weitere Operationen angehängt werden
können. Eine strenge Syntax gibt es bei einem Taschenrechner auch nicht.
Zumindest habe ich noch bei keinem der nach klassischem Muster arbeiten-
den Modelle die Meldung "Syntax Error" auf dem Display gesehen¹. Fast
jede denkbare Reihenfolge von Tastendrücken hat eine mehr oder weniger
sinnvolle Bedeutung. Im Zweifelsfall werden einzelne Tastendrücke eben
einfach ignoriert.
Bei der Implementierung einer Taschenrechnersoftware sollte man deswegen
weniger in Grammatiken, sondern direkt in Aktionen der Ausführungsein-
heit denken, die ein Gebilde ähnlich einem Kellerautomat ist. Man hat
also einen Zustand (repräsentiert durch eine oder mehrere Systemvariab-
len) und einen Stack für Zwischenergebnisse und halbfertige Operationen.
Man überlegt sich für jede einzelne Taste (so arg viele gibt es ja nicht
davon) in Abhängigkeit vom aktuellen Zustand und den obersten Stack-Ele-
menten eine Aktion, die in geeigneter Weise den Zustand und den Stack
verändert und den Anzeigeninhalt modifiziert.
Das Vorgehen hierfür ist ziemlich geradlinig und nicht besonders schwer,
wenn man sich erst einmal im Klaren darüber ist, was der Rechner hinter-
her im Detail tun soll. Da man aber bzgl. der wirklichen Details anfangs
meist nur eine schwammige Vorstellung hat, hilft es, einen bereits
existierenden Taschenrechner daneben zu legen und ggf. auszuprobieren,
wie dieser in bestimmten Situationen reagiert.
Kümmert man sich um diese Details nicht, hat man hinterher zwar ein
Gerät, das vielleicht richtig rechnet, aber trotzdem nicht das Look-
and-Feel hat, das man von einem "richtigen" Taschenrechner unbewusst
gewohnt ist.
So ein Taschenrechner ist sicher ein lustiges und nicht ganz nutzloses
Projekt, wenn man ein paar Spezialfunktionen einbaut, die in gewöhn-
lichen Taschenrechnern nicht findet, weil sie von der Masse der Käufer
nicht gewünscht werden. Ein Beispiel, was mir gerade so einfällt, wäre
ein fünfter Infixoperator (neben +, -, * und /), der x*y/(x+y), also die
Parallelschaltung von Widerständen oder die Reihenschaltung von Konden-
satoren berechnet. Oder gibt es das vielleicht schon?
Man kann zwar viele fehlende Funktionen auch mit einem programmierbaren
Rechner erschlagen, nur sind sie dann meist nicht so leicht zugänglich,
als wenn man dafür dedizierte Tasten an passender Stelle auf dem Bedien-
feld hat.
¹) Bei einigen neumodischen Geräten mag das anders sein, da diese
teilweise eingabezeilenorientiert (also ähnlich wie ein Basic-
Interpreter) arbeiten.
"CORDIC" (s. Wikipedia) lautet das Zauberwort, wenn es darum geht,
höhere mathematische Funktionen in den kleinstmöglichen Programmraum zu
quetschen...
...wenn man damit umzugehen versteht, bringt man so den kompletten Code
für arithmetische, logarithmische und trigonometrische
Gleitkomma-Funktionen in weniger als 8000 Bit (richtig gelesen...
...nicht etwa Byte ;-) ) unter. Beispiel: "HP-35" (s. Wikipedia).
Da bleibt selbst in kleineren PIC- und Atmel-Prozessoren noch viel Platz
für Nebenjobs wie Tastatur-Scannen und Display-Multiplexen.
MfG
Ein Link zum Link:
http://comwebnet.weimars.net/forum/showthread.php?tid=395
Sprechender Taschenrechner
Und in den 90zigern des letzten Jahrhundert ist das Elektronikbasteln
zurückgegangen durch den aufkommen des PCs, man fand halt ein nettes
"Spielzeug".
>>Autor: hst (Gast)>>Wenn man aber dafür sorgen will, dass Rundungsfehler durch>>Fließkommarechnung nicht auffallen, wird das ganze nicht mehr so>>trivial. Das schafft noch nicht mal Excel, obwohl es da durch hohe>>Rechenleistung und um ein vielfaches leichter wäre, nur mit Integer zu>>rechnen.>>Man trage in eine Spalte untereinander folgende vier Zahlen ein:>>0,05>>-0,07>>0,02>>0>>Nun addiere man diese Zahlen. Das richtige Ergebnis ist 0.
Bei mir macht da excel richtig...
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
0.05-0.07+0.02+0
= 0 <korrekt>
0.000000000000000000000000000000000000000000000000000005+1
= 1.000000000000000000000000000000000000000000000000000005 (korrekt)
;-)
Wem ein normaler Taschenrechner zu langweilig ist: man erweitere ihn um
CAS-Funktionen... bis man das Niveau eines modernen programmierbaren
CAS-Rechners erreicht hat geht einiges an Zeit ins Land.
Christian H. schrieb:
> bc 1.06> Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.> This is free software with ABSOLUTELY NO WARRANTY.> For details type `warranty'.> 0.05-0.07+0.02+0> = 0 <korrekt>> 0.000000000000000000000000000000000000000000000000000005+1> = 1.000000000000000000000000000000000000000000000000000005 (korrekt)>
Wer an Floating Point Programmierung mit der Annahme rangeht, dass diese
wie Mathematik funktioniert, hat schon verloren.
http://www.physics.ohio-state.edu/~dws/grouplinks/floating_point_math.pdf
Ich habe mal einen gebaut, hatte auch eine Webseite darüber, aber mit
Ende des Studiums wurde die abgeschaltet.
Ich habe einen wissenschaftlichen Taschenrechner auf Basis des HP-45
gebaut, inklusive Stoppuhr, Hardware war ein PIC 16F877A. Das Projekt
habe ich noch, falls Interesse besteht. Funktioniert allerdings in RPN,
dafür mit BCD-Arithmetik, alle wissenschaftlichen Funktionen etc.
Falls du einen eigenen Rechner bauen willst, noch ein Tipp zum
Operatorvorrang: Lies dir mal die Flowcharts (Fig 1 und Fig 2) hier
durch:
http://www.hpmuseum.org/journals/71a.htm
Helmut Lenzen schrieb:
>>Soooo einfach ist das auch in C nicht. Zumindest wenn man . vor -,>>Funktionen, Klammern und ähnliches machen will.>> Und soooo kompliziert nun auch wieder nicht. Einfach ein bisschen> rekursiven Code und das wars auch schon. BNF lässt grüssen.
Warum soll man da selbst was programmieren? Dafür gibt es LEX und YACC.
Ich habe vor Jahren selbst mal einen Rechner für die Kommandozeile damit
realisiert, hat richtig Spaß gemacht.