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.
Gero D. schrieb: > Schaltung und BASCOM-Sourcen dann, wenn sich jemand dafür interessiert. Ohne die hat es unter "Projekte & Code" nichts verloren.
Da hast Du natürlich recht. Wenn sich keiner dafür interessieren sollte, kann es aber sowieso gelöscht werden.
Hallo Gero, lass doch mal Deine Schaltung und das Programm sehen, man kann ja nur dazulernen.
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 ...
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.
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.
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).
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
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.
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!
Gero D. schrieb: > Hier der Schaltplan. Gero D. schrieb: > UNd hier die BASCOM Sourcen, Danke. Jetz kann's hierbleiben.
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.
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
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.
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
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.
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
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
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.
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.
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.
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.
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
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
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.
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 ...
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
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?
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...
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?
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
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.
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
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.
@Gero D. Können die ICs in Deinem Gehäuse gesockelt werden? Oder ist dann der Platz zu knapp?
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.
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
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
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.
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.
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.
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
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
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
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
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
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.
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.
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
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"
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.
das hat aber nur er, jeder andere sofort hätte ein USB Kabel
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
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?
Die "Praxiserprobung" hat gleich einmal einen dicken bug offenbart, bei der Eingabe wird die erste Nachkommastelle falsch ausgewertet. Ist korrigiert.
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.
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.
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
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.
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
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?
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.
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
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
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
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
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.
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.
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
2. Bild wurde verschluckt :-( ??! Display passen aber wie man sieht.
:
Bearbeitet durch User
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
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.
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 ...
... bitte schön. Ich packe dann heute/morgen Abend und es sollte am Donnerstag, spätestens Freitag in den Versand schaffen.
... okay das Sortieren ging schneller als gedacht. Jetzt besorge ich noch Kartons und verpacke das ganze Reichelt mäßig professionell :-)
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
Die Post hat gerade ein Päckchen abgeliefert, Dankeschön!
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.
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
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
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.
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.
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
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.
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 ...
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?
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
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
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.
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.
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.
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.
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.
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.
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
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.
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
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
Ok, das trennt die Kommandoausführung sauber von der Stackverarbeitung mit der gleichen Funktionalität :-) Ich habe es für mich mal so übernommen.
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.
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.
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
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.
> 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!
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.
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.
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
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.
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
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.
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+"
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
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.
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
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
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 ...
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
Das sieht gut aus mit dem "Lauflicht" bei der Programmabarbeitung :-)
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 :-(
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?
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.
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...
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ß!
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)
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.
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
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?
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
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.
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!
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.
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.
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.
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.
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ß!
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
Sieht gut aus! Ich schau mal, ob ich das am Wochenende ausprobieren kann.
Der Assembler/Disassembler benötigt ja eine Syntax, hier mal mein Vorschlag dazu.
Nachtrag, ich habe die Tabelle nochmals etwas korregiert, so dass sie "Boris.h" ähnlicher wird.
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 :-)
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
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.
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.
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.
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
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).
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.
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 ;-)
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
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.
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 :-)
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
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...
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@OSCL@Register@:71 Kalibrierung@der@Baudrate,@usgabe@des@OSCL@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 KalibrierungV–ABaudrate,P]®V‰•Adesj51ARegisterç99 KalibrierungV–ABaudrate,P]®V‰•Adesj5…LªÖVkÑ•ÉA:100 KalibrierungV–ABaudrate,¨×…‰•Adesj5…LªÖVkÑ•ÉA:1˜LCáK±+KÉ¥•ÉÕ¹Ader ¨Õ‘É…Ñ•±¨×…‰•Adesj5…LªÖVkÑ•ÉA:1˜¦HøK±+KÉ¥•ÉÕ¹Ader¨Õ‘ÉÅte,¨×ÅbeV ÖA§ª¨1ARegisterç1˜¦HøKalibrierungV–A¢X]–Åte,¨×ÅbeVÖA§ª¨1ARegisterç 1˜S¤K±+KÉ¥•ÉÕ¹AderTÕ‘ÉÅte,¨×ÅbeVÖA§ªT1ARegisterç1˜M#ñK±+KÉ¥•ÉÕ¹Ad erTÕ‘ÉÅte,¨kÅbeVÖA§ªT1ARe³Z.«ÉA:1˜S¤K±+KÉ¥•ÉÕ¹AderTÕ‘ÉÅte,¨kÅbe VÖA§ªT™ªÖ¥ÍÑ•Éó™ºjŠ
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.
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 ;)
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.
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.
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.
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.
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.
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?
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
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.
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.
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.
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?
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.
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.
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...
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.
Die Displaybeleuchtung braucht zwei Vorwiderstände. Und ich hätte gern noch den sechspoligen Programmierstecker...
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.
Gute Arbeit! Ich find auf den ersten und zweiten Blick keine Knackpunkte. Das ganze in Taschenrechnergröße zu bringen stelle ich mir knifflig vor.
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.
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
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.
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...
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.
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 :(
Joe G. schrieb: > ich je nach Interessenten hier im Forum mal mit 5 Leiterplatten. Ich würde eine wollen!
Marten Morten schrieb: > Als alternative zu Tastenbeschriftung wären vielleicht folgende > Tastenkappen interessant. Ich finde diese Kombination ganz gut: https://de.aliexpress.com/store/product/50pcs-lot-Square-PushButton-Tact-Switch-color-white-with-clear-cover-d-11-5-6mm-high/1952980_32527071767.html?spm=a2g0x.12010612.8148356.5.5b6d4518VIYZF3 https://de.aliexpress.com/store/product/200-PCS-LOT-touch-switch-6-6-7-3-PLUG-PIN-4pins-free-shipping/1952980_32534955696.html
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.
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
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 :-)
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.
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
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.
Für bessere Lesbarkeit gehört noch eine (rote) Plexiglasscheibe vor die 7-Segment Anzeige :)
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.
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.
Die Leiterplatten sind eingetroffen - es kann losgehen :-)
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.