Hallo, ich habe folgendes Problem: ein Zähler-IC-Dekade gibt eine Zahl(variabel) aus die als Teiler einer anderen Zahl (konstant) verwendet werden soll. Beispiel: Eine Zählerdekade (4 ICs= 4 Ziffern) hat bis zu einer Bestimmten Zahl gezählt und dann gestoppt (4536). Jetzt soll diese Zahl verwendet werden um den Wert 100000 mit eben der Zahl des Zählers zu teilen: 100000/4536= 22,048 Das ganze möchte ich in CMOS bauen, notfalls auch mit TTL aber nicht mit Mikrocontroller. Fällt dazu Jemandem etwas ein? kann man das vielleicht mit einem Johnsonzähler irgendwie mit Schieberegistern kombinieren? Wenn das zu abstrakt war, es geht darum diese Schaltung hier zu verbessern: http://www.ctc-labs.de/html/body_velocount.html Ein Geschwindigkeitsmesser der aus 2 Lichtschranken besteht, und die Zeit in µs ausgibt. Ich will aber das die Zahl in Meter pro Sekunde ausgegeben wird, um schneller zu messen und nicht andauern umzurechnen. Ist das irgendwie mit Standart Logik-ICs möglich?
Jan T. schrieb: > Das ganze möchte ich in CMOS bauen, notfalls auch mit TTL aber nicht mit > Mikrocontroller. Ich würde mir das nicht als TTL-Grab antun wollen. Ein µC ist klein und macht das aus dem Handgelenk. Jan T. schrieb: > Ist das irgendwie mit Standart Logik-ICs möglich? Ja. Viel Spaß.
Michael schrieb: > Jan T. schrieb: >> Das ganze möchte ich in CMOS bauen, notfalls auch mit TTL aber nicht mit >> Mikrocontroller. > > Ich würde mir das nicht als TTL-Grab antun wollen. Ein µC ist klein und > macht das aus dem Handgelenk. > Jan T. schrieb: >> Ist das irgendwie mit Standart Logik-ICs möglich? > Ja. Viel Spaß. Schade nicht sehr hilfreich, dann formuliere ich es mal anders: Wie ist es mit Logik ICs möglich?
Indem du die nötige Algebra auf die elementaren Operationen zurückführst, die mit TTL möglich sind, und das stückweise in HW zusammensetzt. Das wird in der Praxis sicher keinen Sinn machen. Jeder, der halbwegs mit seiner Zeit hinkommen muß, wird das mit einem MC oder FPGA o.ä. lösen. Wenn du das unbedingt aus sportlichem Ehrgeiz und ohne technischen Grund diskret machen willst, wirst du dich selbst durchbeissen müssen.
Jan T. schrieb: > Das ganze möchte ich in CMOS bauen, notfalls auch mit TTL aber nicht mit > Mikrocontroller. Suche mal nach rate-multiplier. CD4089 arbeiten binär, es gibt/gab aber auch dezimale. Damit ist das recht einfach. Oder Du baust Dir selber einen passenden.
@ Willi , Vielen Dank das sieht nützlich aus! :-) also so wie ich das bisher verstanden habe muss ich mir eine ALU für division selbst zusammen basteln...
Ja genau. Ich denke deine Platine wird auch rech groß werden mit den DIL-ICs.
Jan T. schrieb: > also so wie ich das bisher verstanden habe muss ich mir eine ALU für > division selbst zusammen basteln... Eine ALU braucht man nicht. Ein dezimaler Rate-multiplier (HEF4527 von Valvo) liefert pro 10 Eingangsimpulse die am BCD-Eingang liegende Zahl an Ausgangsimpulsen. Durch Kaskadierung kommt man auf 2, 3 oder mehr Dezimalstellen. Ein Zähler am Ausgang zählt die Ausgangsimpulse und liefert damit das Ergebnis.
> Ist das irgendwie mit Standart Logik-ICs möglich?
Das ist doch neumodischer Tand. In der guten alten
Zeit haette man das mit einem Analogrechner geloesst.
Olaf :)
Ok danke, das sind dann schon mal 2 ICs. (wobei der 4527 der neuersein wird) Leider habe ich in beiden Datenblättern kein Beispiel für eine Division gefunden.
Olaf schrieb: > Das ist doch neumodischer Tand. In der guten alten > Zeit haette man das mit einem Analogrechner geloesst. Ach wo, das hätte man elektromechanisch gelöst ;-). Ein Schrittmotor konvertiert die Zählimpulse in eine Zeigerbewegung und die Beschriftung vom Zeiger wird passend vorgenommen. Das kann man übrigens auch als Ansatz für eine Bastellösung verwenden. Statt Zeiger nimmt man heute eine grössere Anzahl LEDs in Reihe. Dem Taktgeber macht man dekadisch einstellbar.
Hallo, ich habe früher mal soetwas mit einem EPROM/FLASH gelöst (Schlagzahluhr fürs Rudern). Da kann man dann auch gleich den 7Segement Deokder mit integrieren und das demultilplexing für die Anzeige Nimmst Du binär Zähler oder decimal Zähler Bausteine gehen wir mal von deinem Bsp aus brauchst du 13 bit für den Zählerstand und 2-3 bit für die Auswahl der darzustellenden Stellen. Ein kleines C-Programm kann dann dir den Flash-Inhalt ausrechen, dann brennen Fertig ist. Jetzt würde man natürlich eine CPLD/FPGA dafür nutzen, wenn es kein µC sein soll. Gruß bastler
Olaf schrieb: > Das ist doch neumodischer Tand. In der guten alten > Zeit haette man das mit einem Analogrechner geloesst. Für die Nachkommastellen hätte man aber erst einmal die Chopperrelais' ölen müssen :-)
Danke für den Hinweiß :-) aber mit kein µC meinte ich eigentlich das ich von programmieren und µController generell keine Ahnung habe. Das mit den CMOS ICs bekomme ich noch hin, ist zwar etwas größer aber dafür einfacher - wie LEGO ;-)
Jan T. schrieb: > Das mit den CMOS ICs bekomme ich noch hin, Da bin ich mir nicht mehr so sicher :-)
ja wer Lust hat kann auch LEGO löten, aber den Atemschutz nicht vergessen... ;-)
Jan T. schrieb: > aber mit kein µC meinte ich eigentlich das ich von programmieren und > µController generell keine Ahnung habe. Dann wäre das doch ein schönes Einstiegsprojekt mit einem 2x16 LCD Modul und einem kleinen µC.
Willi schrieb: > Eine ALU braucht man nicht. Ein dezimaler Rate-multiplier (HEF4527 von > Valvo) liefert pro 10 Eingangsimpulse die am BCD-Eingang liegende Zahl > an Ausgangsimpulsen. Der Ansatz ist interessant, aber werden Eingangsfrequenz und BCD-Eingang dabei nicht multipliziert statt dividiert?
Dann werden sich hier aber wieder alle die Köpfe einschlagen welches Controller der bessere ist usw ;-) Ich kenne das gebashe in anderen Foren wie z.B. von Linux vs Windows (Ati vs Nvidia usw..), ist zwar Sinnlos aber viele können es nicht lassen. Ich habe eine starke Abneigung gegen abstraktes programmieren. Bei den CMOS kann ich mir alles noch bildlich vorstellen. Klingt vielleicht komisch für alle die schon Meisterprogrammierer sind und hier ihre Scherze einschieben. Die Controller die Ich gesehen habe, da wirkt das eher wie ein PC Programm schreiben (C oder Assembler) und da ist für mich nix zu machen. Wenn das nicht "halbwegs" ähnlich wie Logik CMOS ist kann ich mir gedanklich da keine Brücke bauen.
Eine Schaltung zur Division ist halt wirklich aufwendig. Da ist der Weg mit dem EPROM schon nicht so schlecht. Mit Standard Logic ICs sollte man schon so mit etwa 10-50 ICs rechnen, je nach Auflösung und Genialität der Schaltung. Die Rechenfunktionen aus der TTL Serie sind außerdem vermutlich auch zunehmend schwer zu bekommen (vor allem in einer Stromsparenden CMOS Version), weil es einfach keiner mehr braucht.
ich schätze für den Teiler brauche ich 6-8 IC zusätzlich und die reine Messschaltung hat 6 IC's macht zusammen mind 12 ICs. Aber besser als nix :-) Ich frag mich nur ob das wirklich so schwer ist, oder ob mann nicht einen simplen Divide-by-N IC per preset auf die gemessenen µS stellen kann und dann mit vielleicht 2 ICs auskommt statt mit 6. Da hilft wohl nur ausprobieren :-)
Jan T. schrieb: > Das mit den CMOS ICs bekomme ich noch hin, ist zwar etwas größer aber > dafür einfacher - wie LEGO ;-) Lego kann auch rechnen: http://www.geeky-gadgets.com/lego-calculator/ Aber Du möchtest wohl eher so was bauen: http://acarol.woz.org/difference_engine.html http://acarol.woz.org/antikythera_mechanism.html Gruß John
Jan T. schrieb: > Ich frag mich nur ob das wirklich so schwer ist, Offensichtlich so scher das du hier fragen musst. Es hat schon seinen Grund, das erst die "großen" CPUs einen HW dividierer drin haben und dort dann auch meist mehrere Takte für verbraten werden, das lässt sich einfach nicht sinnvoll in diese Schaltung integrieren, da die ganze Funktion davon abhängt das einfach in jedem Takt etwas passiert (oder auch nicht wenn der Takt gesperrt ist). Jan T. schrieb: > Die Controller die Ich gesehen habe, da wirkt das eher wie ein PC > Programm schreiben (C oder Assembler) und da ist für mich nix zu machen Aha... also man kann erstmal µC auch in Assembler programmieren, das ist dann auch nicht anders als HW Bausteine zu verdrahten, ansonsten erschließt sich mir nicht wieso ein simples:
1 | int ergebnis = 1000/zählerstand; |
einen jetzt dermaßen mental überfordern sollte.
Edi R. schrieb: > Der Ansatz ist interessant, aber werden Eingangsfrequenz und BCD-Eingang > dabei nicht multipliziert statt dividiert? Zumindest Einer, das aufgepasst hat. Es wird beides gemacht. Zum einen durch 10 geteilt dann aber doch wieder mit der anliegenden Zahl multipliziert. Das ist hier wohl nicht so geschickt. Oder man legt den Kehrwert an :-) Also neues Verfahren: fortlaufende Subtraktion des Divisors von 100000, bis ein Unterlauf erfolgt. Ergebnis ist dann Anzahl der Subtraktionen - 1 wegen 'borrow'. Das waren echt harte Zeiten, als es noch keine µCs gab!
Willi schrieb: > Das waren echt harte Zeiten, als es noch keine µCs gab! Nö, im Gegenteil, die waren einfacher als heute. Man nahm ganz banal eine althergebrachte Stoppuhr, baute eine andere Skala dran, und war fertig. Das beherrschte man wohl schon vor einem halben Jahrtausend und es verzierte manche Zeiger-Armbanduhr als Hilfs-Skala aussenrum. Erst seit Digitalisierung mit Zahlenanzeige statt Skala zermartern sich die Leute das Hirn, wie man es möglichst umständlich numerisch dividiert kriegt. Davor hat man das nicht zur Laufzeit gemacht, sondern dies vorneweg den "Compiler" erledigen lassen (lies: beim Zeichnen der Skala).
Hier mein Vorschlag (das Prinzip wurde ja schon genannt: fortlaufende Subtraktion). Der Rückwärtszähler wird auf 100000 voreingestellt und der Aufwärtszähler zählt so oft bis zum Messergebnis, bis der Rückwärtszähler "0" erreicht hat (Auf- Rückwärtszähler zählen gleichzeitig). Die Anzahl der Durchläufe entspricht der Vorkommastelle. Der Aufwärtszähler enthält jetzt den "Rest". Dieser wird um eine Stelle nach links versetzt in den Rückwärtszähler übernommen (Multiplikation mit 10 -> "borrow"). Und im Ergebnis wird jetzt das Komma gesetzt. Jetzt wieder zählen bis der Rückwärtszähler "0" erreicht hat. Die Anzahl der Durchläufe entspricht der ersten Nachkommastelle. Für jede weitere Stelle: wieder den Rest *10 in den Rückwärtszähler übernehmen und Zählen. Ich hoffe das war einigermaßen verständlich. Gruß John
Und wo kommt der Kasten "Steuerung" her wenn der TE doch unter keinen Umständen etwas Programmieren möchte? ;)
Läubi .. schrieb: > Und wo kommt der Kasten "Steuerung" her wenn der TE doch unter keinen > Umständen etwas Programmieren möchte? ;) Die Steuerung besteht selbstverständlich auch nur aus diversen Zählern, Flipflops und Vergleichern etc.
Jan T. schrieb: > Das ganze möchte ich in CMOS bauen, notfalls auch mit TTL aber nicht mit > Mikrocontroller. Bleibt nur die Frage: Warum will sich das jemand freiwillig antun?
Ich würde mal sagen: Was der Bauer nicht kennt, das frisst er nicht. Man kann das tote Pferd ja solange schlagen, bis es sich wieder bewegt.
Klaus Wachtler schrieb: > Ich würde mal sagen: Was der Bauer nicht kennt, das frisst er nicht. Ja genau. Alles was ich nicht kenne fresse ich nicht.
Läubi .. schrieb: > Jan T. schrieb: >> Ich frag mich nur ob das wirklich so schwer ist, > > Offensichtlich so scher das du hier fragen musst. Es hat schon seinen > Grund, das erst die "großen" CPUs einen HW dividierer drin haben und > dort dann auch meist mehrere Takte für verbraten werden, das lässt sich > einfach nicht sinnvoll in diese Schaltung integrieren, da die ganze > Funktion davon abhängt das einfach in jedem Takt etwas passiert (oder > auch nicht wenn der Takt gesperrt ist). Offensichtlich doch nicht, wie der Vorschlag von John Bauer zeigt ;-) Im Titel steht ich suche eine Tipp, welche Möglichkeiten es gibt mit Logikbausteinen das Problem zu lösen. Die Idee mit den 2 Zählern werde ich demnächst ausprobieren wenn ich Zeit habe. > Jan T. schrieb: >> Die Controller die Ich gesehen habe, da wirkt das eher wie ein PC >> Programm schreiben (C oder Assembler) und da ist für mich nix zu machen > > Aha... also man kann erstmal µC auch in Assembler programmieren, das ist > dann auch nicht anders als HW Bausteine zu verdrahten, ansonsten > erschließt sich mir nicht wieso ein simples: >
1 | int ergebnis = 1000/zählerstand; |
einen jetzt dermaßen mental > überfordern sollte. 1. das was ich gesehen habe ist definiv nicht das Gleiche wie CMOS verdrahten! (welcher µC ist angeblich ähnlich?) 2. Es geht darum die Geschwindigkeit von Projektilen zu messen. Ich habe damit vor, viele Messungen in Reihe kurz hintereinander durch zu führen. Dabei würde eine Pause stören,unpraktissch sein und auch in einigen Fällen das Ergebnis verfälschen. Wenn jemand in max. 1 Sekunde oder auch weniger 1/x im 4 stelligen Bereich im Kopf rechnen kann, dann glaube ich das nicht ohne Beiweiß. Nur mit Prozessor schrieb: > Jan T. schrieb: >> Das ganze möchte ich in CMOS bauen, notfalls auch mit TTL aber nicht mit >> Mikrocontroller. > > Bleibt nur die Frage: Warum will sich das jemand freiwillig antun? Die Frage ist obsolet, die Habe ich schon beantwortet bevor Sie gestellt wurde. Klaus Wachtler schrieb: > Ich würde mal sagen: Was der Bauer nicht kennt, das frisst er nicht. > Man kann das tote Pferd ja solange schlagen, bis es sich wieder bewegt. und Ich würde mal sagen der Klaus frisst wahrscheinlich zuviele µC ;-) Die Idee mit dem Pferd ist pervers; wie man von Logik-ICs auf Tierschändung kommt? wohl eine Charakterfrage , auf jeden Fall sehr makaber... zum Schluss möchte ich mich noch für die konstruktiven Beiträge bedanken: John Bauer Willi (Gast) ein bastler (Gast) Ulrich (Gast) Zu den Leuten die hier infantile Kommentare geposted haben sage ich mal folgendes: Es ist nicht der Sinn eines Forums andere Leute vermeintlich lächerlich zu machen, sondern sich gegenseitig zu helfen. Das habt ihr wohl noch nicht mitbekommen oder absichtlich überlesen. Narzissmus bei "Fach"-Nerds ist wohl sehr verbreitet und verzehrt die eigene Wahrnehmung....
Jan T. schrieb: > Ich habe eine starke Abneigung gegen abstraktes programmieren. > Bei den CMOS kann ich mir alles noch bildlich vorstellen. Ich hatte schon fast einen Beitrag abgesendet, in dem ich auf ein FPGA verweisen wollte (wie das: http://www.lothar-miller.de/s9y/categories/24-Rechnen und das: http://www.lothar-miller.de/s9y/categories/44-BCD-Umwandlung), bin dann aber aufgrund der Vehemenz, mit der du Einzelgatter propagiert hast, wieder davon abgekommen. Ich finde es bemerkenswert, dass DU anhand eines Haufens schwarzer Plastikklumpen anschaulich die Funktion einer Platine nachvollziehen kannst. Ich brauche da immer deutlich länger, wenn ich vor einem Board mit 200 TTLs sitze... BTW1: Jan T. schrieb: > Es ist nicht der Sinn eines Forums andere Leute vermeintlich lächerlich > zu machen, sondern sich gegenseitig zu helfen. Nicht schaden kann aber, auch mal über die vermeintlich abwegigen Kommentare nachzudenken. > und verzehrt (Autokorrektur --> verzerrt) die eigene Wahrnehmung.... Nicht-Nachdenken bei ausgeprägtem "Ich-will-das-aber-genauso-machen" (in der Chemie bekannt als Nanobeschichtung, woran alles abperlt) führt auch zu dem beschriebenen Effekt... BTW2: Jan T. schrieb: > Die Idee mit dem Pferd ist pervers; wie man von Logik-ICs auf > Tierschändung kommt? Nur DU bist darauf gekommen... :-o Andere sehen darin ein altes Sprichwort, das Bauern schon lange vor der Einführung des Traktors kannten... > wohl eine Charakterfrage , auf jeden Fall sehr makaber... Also eher eine Frage das Allgemeinwissens... ;-)
Alternativ kann man die Aufgabe mit einem EPROM loesen. Man befuellt das EPROM mit den gerechneten Werten. Der Eingangswert ist die Adresse.
Jan T. schrieb: > Es ist nicht der Sinn eines Forums andere Leute vermeintlich lächerlich > zu machen, sondern sich gegenseitig zu helfen. Hallo Jan, aus dem Verlauf des Thread scheint sich immer deutlicher herauszukristallisieren, dass keine wirklich nützlichen Beiträge zu dem von dir gewählten Titel des Threads kommen, weil offensichtlich keine (bekannte?) handhabbare Lösung existiert. Kein Wunder, dass die Hilfe deshalb in dem Versuch besteht, dich von deinem ursprünglichen Plan abzubringen und auf eine mit einfachen Mitteln und ein bisschen Offenheit für den aktuellen Stand der Technik gangbaren Weg zu führen. mfg Michael
Jan T. schrieb: > Offensichtlich doch nicht, wie der Vorschlag von John Bauer zeigt ;-) Hättest du dir den Vorschlag mal genauer angeschaut, wäre dir dieses kleine Kästchen "Steuerung" aufgefallen, welches man wohl besser Ablaufsteuerung genannt hätte, und da liegt genau der Punkt: Hier ist eine Statusmaschine nötig, die man natürlich auch in CMOS realisieren KÖNNTE, dann machst du aber nix anderes als das was ein Controller schon enthält nochmal in CMOS nachzubauen nur mit dem Nachteil, das das "Programm" fest verdrahtet ist. Auch würde sowas mitnichten in einem Takt ablaufen (deshalb auch die nötige Ablaufsteuerung). Jan T. schrieb: > Ich habe damit vor, viele Messungen > in Reihe kurz hintereinander durch zu führen Was ist viele und was ist kurz hintereinander? Ein Standardcontroller langweilt sich doch dabei und kann nebenher noch die Division durchführen und das ganze wird nicht größer als 'ne Streichholzschaltel im Vergleich zu dem benötigtem Kuchenblech für deine "diskrete" Lösung. Jan T. schrieb: > das was ich gesehen habe ist definiv nicht das Gleiche > wie CMOS verdrahten! Kommt halt drauf an was man für Ähnlich erachtet. EInmalö kann man CPLDs/FPGAs z.B. auch Graphis Programmieren auf Gatterebene, ansonsten finde ich das ein
1 | and r10, r11 |
mit ein klein wenig Phantasie als die Verdrahtung eines Undgatters gesehen werden kann wenn man sich die Register einfach als 8-bit breite "Kabel" vorstellt. ABer ist ja letztendlich dein Bier, aber eine Division ist ganz sicher nichts was man mal eben als fertigen Baustein findet.
Lothar Miller schrieb: > Jan T. schrieb: >> Ich habe eine starke Abneigung gegen abstraktes programmieren. >> Bei den CMOS kann ich mir alles noch bildlich vorstellen. > Ich hatte schon fast einen Beitrag abgesendet, in dem ich auf ein FPGA > verweisen wollte (wie das: > http://www.lothar-miller.de/s9y/categories/24-Rechnen und das: > http://www.lothar-miller.de/s9y/categories/44-BCD-Umwandlung), bin dann > aber aufgrund der Vehemenz, mit der du Einzelgatter propagiert hast, > wieder davon abgekommen. Ich finde es bemerkenswert, dass DU anhand > eines Haufens schwarzer Plastikklumpen anschaulich die Funktion einer > Platine nachvollziehen kannst. Ich brauche da immer deutlich länger, > wenn ich vor einem Board mit 200 TTLs sitze... hier ist auch nur die Rede von ca 12 und nicht 200 :-) > BTW1: > Jan T. schrieb: >> Es ist nicht der Sinn eines Forums andere Leute vermeintlich lächerlich >> zu machen, sondern sich gegenseitig zu helfen. > Nicht schaden kann aber, auch mal über die vermeintlich abwegigen > Kommentare nachzudenken. >> und verzehrt (Autokorrektur --> verzerrt) die eigene Wahrnehmung.... > Nicht-Nachdenken bei ausgeprägtem "Ich-will-das-aber-genauso-machen" (in > der Chemie bekannt als Nanobeschichtung, woran alles abperlt) führt auch > zu dem beschriebenen Effekt... Du fühlst dich anscheinend angesprochen, langsam wird es lächerlich. Es geht nicht darum "Ich-will-das-aber-genauso-machen", sondern 1.ich kann es nicht anders und 2.dauert die Einarbeitung in µC und das Programmieren unverhältnissmäsig lang. (von 0 auf 100 in wiewiel Monaten/Jahren??) Daher die angesprochene Nanoschicht hast du wohl selbst, weil du die Problematik auf eine Nanoschicht zurückführst, anstatt auf die reale Aufgabe. > BTW2: > Jan T. schrieb: >> Die Idee mit dem Pferd ist pervers; wie man von Logik-ICs auf >> Tierschändung kommt? > Nur DU bist darauf gekommen... :-o > Andere sehen darin ein altes Sprichwort, das Bauern schon lange vor der > Einführung des Traktors kannten... >> wohl eine Charakterfrage , auf jeden Fall sehr makaber... > Also eher eine Frage das Allgemeinwissens... ;-) DU beziehst dich auf Allgemeinwissen und bestreitest, das tote Tiere zum Spass zu schlagen keine Tierschändung ist...Ja alles klar ;-). Anstatt sich Traktoren einzuführen, wäre ein Abbau der Nanoschicht zur sinvolleren Aufnahme von "Allgemeinwissen" angebracht ;-). Hier postet wohl immer der gleiche "Gast" oder auch sein "Freund".... Schau dir mal die Antwort von Micheal und Läubi an, und nimm dir das zum Vorbild. ----------------------------------------- Michael schrieb: > Jan T. schrieb: >> Es ist nicht der Sinn eines Forums andere Leute vermeintlich lächerlich >> zu machen, sondern sich gegenseitig zu helfen. > > Hallo Jan, > aus dem Verlauf des Thread scheint sich immer deutlicher > herauszukristallisieren, dass keine wirklich nützlichen Beiträge zu dem > von dir gewählten Titel des Threads kommen, weil offensichtlich keine > (bekannte?) handhabbare Lösung existiert. Kein Wunder, dass die Hilfe > deshalb in dem Versuch besteht, dich von deinem ursprünglichen Plan > abzubringen und auf eine mit einfachen Mitteln und ein bisschen > Offenheit für den aktuellen Stand der Technik gangbaren Weg zu führen. > mfg > Michael Hallo, vielen Dank für den Hinweiß und die nützliche Antwort. Zu dem Plan muss ich sagen das bisher Niemand der "µC-Fanatiker" (oder auch der normalen µC-Nutzer) einen Vorschlag gemacht hat welcher µC sich z.B. für mich eignen würde ohne die Logik nach einem Programmierschema zu gestallten, sondern auch grafischer Basis so wie man es mit CMOS auch machen kann. Wenn man sich das grafisch wie z.B. einem Modualsynthesizer aufbauen könnte wäre das sehr gut. Es lohnt sich jedoch nicht für eine einzige Aufgabe ca. 1 Jahr sich damit zu beschäftigen C oder generell programmieren zu lernen (und in Boards und µC zu investieren). Sicher wird es auch Leute geben die das in 6 Monaten hinbekommen ... Ich bin aber nicht der Programmierer Typ und habe aber auch noch ein Privat- und Berufsleben. Wie gesagt es geht hier um eine einzige "Hobby"-Aufgabe wo nutzen und Aufwand entscheidet und nicht die Größe der Platine :-) (um es vorweg zu nehmen, 12 CMOS ICs verdrahten dauertweniger als 1 Tag bei mir) ------------------------------------------------------- Läubi .. schrieb: > Jan T. schrieb: >> Offensichtlich doch nicht, wie der Vorschlag von John Bauer zeigt ;-) > > Hättest du dir den Vorschlag mal genauer angeschaut, wäre dir dieses > kleine Kästchen "Steuerung" aufgefallen, welches man wohl besser > Ablaufsteuerung genannt hätte, und da liegt genau der Punkt: Hier ist > eine Statusmaschine nötig, die man natürlich auch in CMOS realisieren > KÖNNTE, dann machst du aber nix anderes als das was ein Controller schon > enthält nochmal in CMOS nachzubauen nur mit dem Nachteil, das das > "Programm" fest verdrahtet ist. > > Auch würde sowas mitnichten in einem Takt ablaufen (deshalb auch die > nötige Ablaufsteuerung). Wenn das Programm fest ist, habe ich kein Problem damit. Es soll ja 1 Gerät mit einer bestimmten Aufgabe werden die nicht verändert wird. > Jan T. schrieb: >> das was ich gesehen habe ist definiv nicht das Gleiche >> wie CMOS verdrahten! > Kommt halt drauf an was man für Ähnlich erachtet. EInmalö kann man > CPLDs/FPGAs z.B. auch Graphis Programmieren auf Gatterebene, ansonsten > finde ich das ein
1 | and r10, r11 |
mit ein klein wenig > Phantasie als die Verdrahtung eines Undgatters gesehen werden kann wenn > man sich die Register einfach als 8-bit breite "Kabel" vorstellt. > > ABer ist ja letztendlich dein Bier, aber eine Division ist ganz sicher > nichts was man mal eben als fertigen Baustein findet. Vielen Dank für den Hinweiß, ich habe mal kurz nachgeschaut und die FPGAs scheinen eher Richtung mini PC zu driften , die CPLDs eher das was ich evt verwenden könnte. Mir ist wichtig für eine einzige Aufgabe nicht gleich einen PC mit USB,Ethernet usw zu bauen (überspitzt gesagt), wenn es normale Logikgatter dafür auch reichen würden.(nur eben mit einem Größenunterschied) Bisher habe ich auf der Link sammlung nur das Modkit gefunden (http://www.mikrocontroller.net/articles/Linksammlung) Gibt es noch weitere "grafische" Programmiermöglichkeiten?
Ich glaube nicht, dass 12 ICs reichen. Auch wenn mein Vorschlag recht übersichtlich aussieht, braucht man dafür bestimmt 20 bis 30 ICs (mindestens). Auch wenn Du zwei Tage brauchen würdest, das ganze zu verdrahten, brauchst Du zuerst die konkrete Schaltung. Und um diese zu entwickeln reicht ein Wochenende nicht aus. Hast Du einen Simulator? Dieser ist für die Entwicklung bestimmt sehr nützlich: http://ozark.hendrix.edu/~burch/logisim/
Jan T. schrieb: > Du fühlst dich anscheinend angesprochen, Ja. Aber du hast den Hintersinn offenbar nicht verstanden.... Seis drum. Jan T. schrieb: > Es geht nicht darum "Ich-will-das-aber-genauso-machen", sondern > 1.ich kann es nicht anders und Die Abhilfe dazu heißt: Lernen. Und die Zeit, die du in solche Hardwarebasteleien vergräbst, könntest du in uC-Programmierung investieren. > Wie gesagt es geht hier um eine einzige "Hobby"-Aufgabe wo nutzen > und Aufwand entscheidet Ist das dein letzes Projekt? Du kannst dir nicht vorstellen nochmal so eine Aufgabe angehen zu wollen? Willst du auch in 10 Jahren alles noch mit TTL-ICs aufbauen? > 2.dauert die Einarbeitung in µC und das Programmieren ... lang. Nur zur Erinnerung: ich war der mit VHDL und den CPLDs/FPGAs... > (von 0 auf 100 in wiewiel Monaten/Jahren??) Mit uCs mit deinen Vorkenntnissen (Platine mit 20 ICs in 1 Tag gefädelt) schaffst du deine Aufgabe ohne vorkenntnisse in luftigen 2 Wochen. Mit FPGAs dauert es markant länger und der Weg ist ein wenig steiniger. Aber es ist Hardware und macht Spass... ;-) Jan T. schrieb: > Vielen Dank für den Hinweiß, ich habe mal kurz nachgeschaut und die > FPGAs scheinen eher Richtung mini PC zu driften , die CPLDs eher das was > ich evt verwenden könnte. Nur sind CPLDs leider 1. am Aussterben und 2. für deine Aufgabe eigentlich zu klein. Ich habe es gerade eben ausprobiert: >>> Beispiel: >>> Eine Zählerdekade (4 ICs= 4 Ziffern) >>> hat bis zu einer Bestimmten Zahl gezählt und dann gestoppt (4536). >>> Jetzt soll diese Zahl verwendet werden um den Wert 100000 >>> mit eben der Zahl des Zählers zu teilen: 100000/4536= 22,048 Ok, du willst drei Nachkommastellen, d.h. als Integer-Division wird das dann 100000000/4536000=22048 und anschliessend wird das Komma entsprechend gesetzt (BTW: einfacher wäre es hier den Divisor 100000 um den Faktor 1024 hochzuskalieren, denn dann ist die Hochskalierung des Dividenden ein einfaches Umverdrahten). Das heißt: du brauchst einen Teiler mit 28 Bit Eingangsbreite. Der passt nicht in ein "übliches" mit 144 Makrozellen, weil schon 147 FFs gebraucht werden. Wenn du keine Nachkommastellen willst, dann hättest du 17 Bits, das resultiert in 93 FFs, trotzdem pass das Design wegen der Routing-Ressourcen nicht in ein Xilinx 9500 CPLD. Ein XCR3256XL-7-TQ144 würde aber reichen... ;-) > Mir ist wichtig für eine einzige Aufgabe nicht gleich einen PC mit > USB,Ethernet usw zu bauen (überspitzt gesagt), wenn es normale > Logikgatter dafür auch reichen würden. > (nur eben mit einem Größenunterschied) Als kleine Nachdenk-Hilfe und evtl. Fortbildungs-Anstoß: ich brauchte da mal ein Signal, das ca. 5 Minuten nach dem Einschalten kommen musste. Randbedingung: so gut wie kein Platz. Alle Versuche, das mit einem 555er oder CMOS-ICs zu machen, fielen zu groß aus. Irgendwann nahm ich dann einen 6-Pin uC im SOT63 Gehäuse, dessen internen Oszillator, und fertig war die Laube. Ein Programm mit 10 Zeilen (vorrangig eine Schleife um ein Delay) war nach 10 Minuten geschrieben.
Jan T. schrieb: > 1.ich > kann es nicht anders und 2.dauert die Einarbeitung in µC und das > Programmieren > unverhältnissmäsig lang. (von 0 auf 100 in wiewiel Monaten/Jahren??) Du mußt nicht auf 100%, für Deine Aufgabe reicht es, wenn Du 10% schaffst. Du kannst ja erstmal nur die Division in SW machen und wenn Du dann Blut geleckt hast, auch die Zeitmessung und Anzeige. Heutzutage hat ja eigentlich jeder in der Schule schon mal programmiert, also ganz unbedarft kannst Du ja nicht sein, Bei MCs sind 2 Programmiersprachen populär, C oder Bascom. Neben der Division brauchst Du noch 2 Funktionen, die dezimal nach binär wandeln und zurück, da eine CPU immer nur binär rechnet. Aber die sind bereits in den Bibliotheken drin, muß man nicht selber schreiben. Du mußt Dir erstmal garnichst kaufen. Lade Dir von Atmel das AVRStudio4 und den WINAVR runter, installiere es und probier mit dem Simulator rum. Oder lade die Bascom-Demo runter. Ich hab früher auch viel mit Logik-ICs gemacht, aber sowas kann ich nicht aus dem Ärmel schütteln bei erträglichem Aufwand. Peter
@Jan T: Die Welt ist pöse. Alle sind pöse. Keiner will Dir verraten wie es mit den von Dir angestrebten einfachen Mitteln möglich ist Dein Problem zu lösen, Sowas Dummes aber auch. Wenn ein Hammer das einzige Werkzeug ist das man besitzt, fängt alles um einen herum an wie ein Nagel auszusehen.. Du willst Rechnen und wunderst Dich darüber das Leute Dir einen Rechner für die Aufgabe nahe legen. Wenn Du mit CMOS Logik ICs klar kommst, kommst Du auch mit Assembler und µC klar, Du mußt nur wollen, nach einer guten Woche funzt das Ding und es kann mehr als die Division, z.B. die ganze Anzeige multiplexen und evtl. Tasten abfragen. Du mußt nur wollen, helfen werden Dir dann hier sicher Einige. Wenn Du natürlich nur CMOS Logikgatter verdrahten kannst und auch nicht lernen willst: Keine Hände, keine Kekse! Evtl. ist Dir ja die AM29C01 oder 74C181 primitiv genug um Dich einzuarbeiten, ach so ja, man braucht dazu noch eine Ablaufsteuerung vorzugsweise mit Mikroprogrammspeicher aka Steuerwerk, Datenbusse, Datenspeicher für Festwerte und veränderliche Daten, Taktgeneratoren und mehrere Hände voll Logik-ICs und Treiber.. Gruß, Holm
Hallo Jan, Du kannst den anderen ruhig glauben. Ich bin auch der Meinung, dass Du in der Zeit, die Du brauchen würdest das ganze mit CMOS-ICs aufzubauen, Du dich genau so gut in die µC-Programmierung einarbeiten könntest. Ich greife desshalb mal den Vorschlag mit den EPROMs auf. Die von - ein bastler (Gast) - Ulrich (Gast) - Multi Oschi (Firma: ooh) (hacky) kamen. Vor vielen Jahren hatte ich mal einen Decoder für eine Matrixanzeige mit EPROMs gebaut, das war vom Prinzip ähnlich. Und ich denke, dass dies die einfachste Lösung ohne µC ist. Die zwei 4520 braucht man, weil deine Schaltung Zähler mit 7-Segment-Decoder verwendet. Für die EPROMs ist ein Binärcode zur Ansteuerung wesentlich günstiger. Angesteuert werden die vier Binärzähler von Clock und Reset aus der bestehenden Schaltung. Die EPROMs enthalten, für jeden Zählerstand, die berechnete Geschwindigkeit in m/s (pro EPROM zwei Dezimalstellen). Für die 4511 benötigt man 7-Segmentanzeigen mit gemeinsamer Kathode. Aus reinem Interesse hab ich mal ein Programm geschrieben, welches die EPROM-Daten berechnet. Hat ca. 1/2 Stunde gedauert. Die Daten befinden sich im Anhang. Der Messbereich reicht von 1,526 m/s (65535 µs) bis 990.099 m/s (101 µs) 1..100 µs werden als 0__.__0 dargestellt (überlauf) 0 µs wird als 00_.___ dargestellt Gruß John
Und wie soll er jetzt die EPROMs brennen? Er hat noch nicht programmiert, er will nicht programmieren, wozu sollte er da einen EPROM-Brenner haben? Du hast ihm ja jetzt schon Arbeit abgenommen, aber ich denke, für Jan bleibt das ganze Teufelszeug. Trotzdem, welchen µC würdet ihr vorschlagen? Den AVR Butterfly? Der ist fertig mit Display. Oder ...
Jan T. schrieb: > 1.ich kann es nicht anders Du meintest: Du willst es nicht anders. Das ist ein Unterschied. > 2.dauert die Einarbeitung in µC und das Programmieren > unverhältnissmäsig lang. (von 0 auf 100 in wiewiel Monaten/Jahren??) Etwas so einfaches sollte selbst für einen Anfänger in ein oder zwei Tagen machbar sein. Aber wenn man schon morgens mit einer Verweigerungshaltung aufsteht, dann ist natürlich Hopfen und Malz verloren.
@Jan Wenn Du schon 4 ICs brauchst um die Impulse zu zaehlen, dann glaubst Du doch nicht ernsthaft mit 12 ttl ICs eine Division zu schaffen.
Jan, mir ist egal, ob und mit welchem Aufwand Dein Vorhaben praktisch umgesetzt werden kann - ich finde es auch als reine Denksportaufgabe interessant. Hast Du schonmal was von "stochastischer Mathematik" gelesen? Man kann Zahlen nämlich auch anders als als Binärzahlen darstellen: Nämlich einfach als Anzahl Impulse in einem Zeitfenster fester Länge. Also: Eine 10 wird dargestellt, indem innerhalb des festen Zeitfensters 10 Impulse gesandt werden. Damit man mit solchen Impulsfolgen auch rechnen kann, muss man dafür sorgen, das die Impulse untereinander keinen festen Abstand haben, sondern statistisch über das Zeitfenster verteilt sind. Daher das Adjektiv "stochastisch". Additionsglieder bestehen bei dieser Technik aus einem einfachen OR-Gatter; Subtraktionsglieder aus einem AND. Multiplikationen und Divisionen sind aufwendiger, es geht aber auch. Die Anwendungsmöglichkeiten sind interessant: Das Nervensystem codiert seine Botschaften ja auch nicht in Binärzahlen, sondern als Impulsfolgen. Ciao, mare_crisium
John Bauer schrieb: > Aus reinem Interesse hab ich mal ein Programm geschrieben, welches die > EPROM-Daten berechnet. Hat ca. 1/2 Stunde gedauert. Da ich gerade mit AVR Studio spiele, habe ich eine halbe Stunde verbracht, um die gesamte Meßaufgabe in einen ATmega88 zu packen. INT0 und INT1 sind die Eingänge für die Lichtschranken und die Ausgabe erfolgt mit einem LCD 2x16, was die Zeit (1. Zeile) und Geschwindigkeit (2. Zeile) anzeigt. Mit obigem Beispielwerten kommen bei 4.5360ms allerdings 22.046 m/s heraus :-) Wenn mal wieder schlechtes Wetter ist, packe ich es ggf. in die Codesammlung.
Es geht auch mit adder, inv und xor CMOS IC. Hab mal die parallele Schaltung im unteren Drittel auf der Seite: http://www.cs.umbc.edu/~squire/cs411_l10.html in Logisim nachgebaut. http://ozark.hendrix.edu/~burch/logisim/ Ist aber nur 7bit / 4bit. 100000 braucht 17bit. Das ist mir aber schon im Simulator zu viel Aufwand :-) Wer Lust hat kann die Schaltung ja noch erweitern. Den full adder kann man auch noch zerlegen: http://en.wikipedia.org/wiki/Adder_%28electronics%29
Harald M. schrieb: > > Hast Du schonmal was von "stochastischer Mathematik" gelesen? > Da hab' ich einen Fehler gemacht: Der Fachausdruck heisst "stochastische Rechentechnik". War schon spät gestern. Ciao, mare_crisium
Hallo, vielen Dank für die vielen Tipps, logisim sieht interessant aus. Kann man damit auch Entwürfe irgendwie in einen µC übertragen? (oder ist das nur für Lehrzwecke bestimmt?) @Lothar Miller zu der Genauigkeit, die muss nur 1 Meter/s sein und darf zusätzlich eine Toleranz von +-1m haben und die Kommastellen brauche ich nicht. Das meiste was ich messen will ist in der Regel 50m/s oder schneller (Armbrust,CO2 Softair,Luftdruckgewehr, und später für ein Coilgunprojekt) Ich habe gerade gesehen es gibt auch 8 Pin µC mit weißwasichfürfeatures :-) http://ww1.microchip.com/downloads/en/devicedoc/40040b.pdf @ John Bauer ich hatte zwischendurch auch die Idee die Division mit einer "Übersetzungstabelle" zu umgehen , aber das war dann zu aufwändig, jedenfalls ohne einen großen Speicher. Danach hatte ich die Idee Mit dem cd4018 cmos einen Teiler aufzubauen, und falls das funtioniert wie ich mir das denke dann würde ich probieren diesen auf 16 Bit vergrößern. (http://pdf1.alldatasheet.com/datasheet-pdf/view/26855/TI/CD4018.html) Wie soll dein Vorschlag so mit den eproms funtionieren, ich dachte das sind nur Speicher? (bzgl. dem auslesen der Werte) Welches Programm benutzt du für das Diagramm? @ Dirk, danke ich habe mir das Board mal angeschaut, ich habe auch etwas gefunden das vielleicht besser ist: Arduino Einsteigerset. (und das dann mit Modkit bearbeiten) @ Nur mit Prozessor Wie schon gesagt ich habe einfach die Schwierigkeit von Digital Elektronik auf die C-Prgrammierung zu kommen, das ist für mich ein komplett anderes Fach. Das sollte man nicht missverstehen, ich kann mich zwar gut in Logikschaltungen reindecken und modifizieren aber die "Handhabung" bzw die Denkweise in C ist komplett anders. Ich hatte auch mal vor 2 Jahren angefangen mich in C einzulesen habe dann aber nach 8 Kapiteln abgebrochen weil ich keinen Sinnbezug zur Praxis herstellen konnte. Für mich liegen da schon Welten zwischen C und Digital Logik. daher bitte keine verweigerungsreininterpretationen mehr :-) @ Holm Tiffe für die beiden ICs gibts gar keine Datenblätter bei alldatasheet.com. Das ist aber auch egal, weil es die nicht mehr bzw. nur noch zu Sammlerpreisen gibt ;-). Der 74C181 ist noch auf einem meiner orginal T.I. Wandposter aufgeführt (aus den 70ern hab es geerbt) xD Ich werde mir dann mal Assembler anschauen für µC danke für den Tipp
Jan T. schrieb: > Wie soll dein Vorschlag so mit den eproms funtionieren, ich dachte das > sind nur Speicher? (bzgl. dem auslesen der Werte) > Welches Programm benutzt du für das Diagramm? Richtig. Ein EPROM ist nur ein Speicher. Der 27C512 hat 16 Adressleitungen (Eingänge) und 8 Datenleitungen (Ausgänge). An den Adressleitungen liegt der gemessene Wert in µs (Binär), und am Ausgang der gespeicherte Wert in m/s. Zum Beispiel ist im EPROM in Adresse 4536 der Hex-Wert 0x22 gespeichert. Der Wert an den Datenleitungen wird über die zwei BCD-7Sgegmentdecoder und den LED-Anzeigen angezeigt. Wenn zwei Stellen reichen, dann brauchst Du nur ein EPROM. Die Werte hab ich mit einem kleinen BASIC-Programm ausgerechnet.
Jan T. schrieb: > Ich habe gerade gesehen es gibt auch 8 Pin µC mit weißwasichfürfeatures > :-) Di gibts sogar mit 6 Pins... > Ich hatte auch mal vor 2 Jahren angefangen mich in C einzulesen habe > dann aber nach 8 Kapiteln abgebrochen weil ich keinen Sinnbezug > zur Praxis herstellen konnte. Das funktioniert mit LESEN nicht. Und zudem gibts zu C soviele zigtausend schlechte Bücher, die würde sogar ich nach 2 Kapiteln weglegen... Für C gilt immer noch: K&R "Programmieren in C" muß man haben. > Das sollte man nicht missverstehen, ich kann mich zwar gut in > Logikschaltungen reindecken und modifizieren aber die > "Handhabung" bzw die Denkweise in C ist komplett anders. Das ist aber auch nur wie wenn du Brot kaufen willst: in der einen Sprache (Hardware/Deutsch) heißt das "Brot", in der Anderen (Software/Italienisch) heißt das "Pane". Du weißt also schon, was du willst, und brauchst nur eine neue Sprache (=C) um das deinem Baustein mitzuteilen. > Ich werde mir dann mal Assembler anschauen für µC danke für den Tipp Auch ne Möglichkeit, erst mal Portugiesisch (=Assembler) zu lernen... ;-)
Jan T. schrieb: > Ich werde mir dann mal Assembler anschauen ... Du wolltest zwei Zahlen dividieren. Damit wünsch ich dir viel Spaß bei Assembler. Jan T. schrieb: > Ich hatte auch mal vor 2 Jahren angefangen mich in C einzulesen habe > dann aber nach 8 Kapiteln abgebrochen weil ich keinen Sinnbezug > zur Praxis herstellen konnte. Jetzt hast du ja einen Praxisbezug.
noch zwei Vorschläge: 1. man kann einen Analog-Dividierer aus einem Analog-4-Quadranten-Multiplizierer in der Rückkoplung eines Operationsverstärkers bauen. 2. Der CORDIC-Algorithmus wurde 1959 erfunden und kann je nach Beschaltung viele mathematische Funktionen, darunter auch die Division. http://www.mikrocontroller.net/articles/AVR-CORDIC die Schaltung besteht hauptsächlich aus Schieberegistern (und Datenmultiplexern, wenn man es nicht komplett parallel betreibt).
Hi >Du wolltest zwei Zahlen dividieren. >Damit wünsch ich dir viel Spaß bei Assembler. Wo ist da das Problem? Division bis 16/16 Bit gibt es als AppNote von Atmel. 32/32Bit findet man hier im Forum. MfG Spess
Eine Division in ASM ist eine gute Uebung. Die kann man erst mal im Simulator testen.
Such nach "reziproker Frequenzzähler" (reciprocal frequency counter), da wird auch dividiert. http://www.mshopf.de/proj/avr/freq_meter.html http://elm-chan.org/works/uctr/report.html
Jan T. schrieb: > ich kann mich zwar gut in > Logikschaltungen reindecken und modifizieren aber die > "Handhabung" bzw die Denkweise in C ist komplett anders. Da muss ich dir Recht geben, sie ist in der Tat anders: Viel einfacher. Aber gut, jedem das seine. Wenn du dir unbedingt von hinten durch die Brust ins Auge schießen willst, wird dich niemand aufhalten.
@Jan T. Im Grunde haben Dir alle hier zu einer Auswertung mit Mikrocontroller geraten und für die meisten Leute hier sind Hard- und Software dafür ein Kinderspiel. Exemplarisch habe ich einen Beitrag in die Codesammlung gestellt: Beitrag "Stoppuhr – Geschwindigkeit – Pulsweite mit Atmega88" Bei einer so einfachen Schaltung kommt niemand auf die Idee, endlose Zähler+Gatter zu verdrahten, um am Ende nur eine "halbe" Lösung zu bekommen. Vielleicht kommst Du jetzt auf den Geschmack, mehr in Richtung Software zu gehen. Den Lötkolben brauchst Du trotzdem noch :-)
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.