Hallo, ich habe einen ICM7217C Up/Down Counter für Sieben-Segmentanzeigen. Dieser arbeitet nach dem Multiplexverfahren, und wird auch nach diesem presettet. Der wird allerdings auch nach dem Multiplexverfahren presettet, mir ist allerdings nicht genau klar, wie das geht. Ich habe einen At Mega8 am werkeln, und würde damit gerne den ICM presetten. Es muss nur eine Stelle eingestellt werden, der Rest ist egal. Sprich 0500, 0700, 0300. Im Datenblatt auf Seite 9 ist ein Testschaltkreis abgebildet, allerdings für den ICM7217 B und D. (B + D ist für CA 7-Segmente, A + C für CK). Auf Seite 14 zeigt die obere Abbildung, wie die Thumbwheels angeschlossen werden müssen. Diese würde ich wie gesagt gerne nicht verwenden, sondern mittels des AT MEGA 8 presetten, wie gesagt nur eine Ziffer. Ich hoffe, ihr versteht, was ich meine. Danke schonmal und Gruß //Ich habe festgestellt, das hochladen von PDFs klappt nicht so ganz. Hier der Link zum Datenblatt: http://www.intersil.com/data/fn/fn3167.pdf
Versuchs mal mit Analogschaltern CD4066. Wenn das nicht geht mit 4 Reed-Relais.
Mal 'ne Frage, wenn du einen Atmega8 mit am Start hast, warum dann noch den ICM7217C? Der Atmega8 kann zählen, vorwärts, rückwärts und seitwärts. Der ATmega8 kann LCD 7-Segment Anzeigen ansteuern wenn man nett zu ihm ist (zum Beispiel mit ein paar Widerstände und Transistoren). Ein Preset beim Zählen mit einem ATmega8 ist nun gar kein Problem. Da braucht man die ICM7217C-Wundertüte aus den 70er Jahren nun wirklich nicht für.
Lc oder Lr nach Low. Dann sind 1,2,4 und 8 als Input geschaltet aber Tristate !!! Die brauchen Pull UP ! @Hannes, 100% Ack
Hi, ansich sehe ich es auch so, dass es nur mit dem Atmel einfacher wäre, nur traue ich mit das Softwaremäßig nicht ganz zu. Ich beschreibe einfach mal was ich vorhabe, und wo ich bin, vieleicht hat ja jemand ne gute Idee. Gefordert sind: - 4 7-Segment Anzeigen (sollen die Zeit im mm:ss Format anzeigen), werden natürlich gemultiplext - 2 * 2 7-Segment Anzeigen (Jedes Paar soll eine Zahl (0 - 99) anzeigen) (werden zu 4t gemultiplext) - 2 Taster zum erhöhen der obigen Zahlenwerte - 2 Taster zum erniedrigen - 1 Taster zum Moduswechseln - 1 Resettaster. "Modis" sollen sein: Freies Spiel (Zeit zählt hoch, unbegrenzt), Spiel bis 10 (fertig, wenn einer der beiden Werte 10 erreicht, Zeit zählt parallel hoch), oder Zeitspiel (mehrere Presets (3, 5, 7) Minuten) wobei die Punkte hochgezählt werden können, solange die Zeit nicht um ist. Das lässt sich ja alles Softwaremäßig möglich. Ich habe mal grad den Schaltplan angehängt, wie ich es mir vorstellen könnte. Kurze Erklärung: Sl1 und Sl2 sind beides stiftleisten, an die die Taster angeschlossen werden sollen. Die einen sind am Frontpanel (Modus-Wähler, 2x dekrementieren sowie der Reset), die anderen beiden im Gerät selbst. Sie werden einfach gegen Masse geschaltet, Entprellung per Software. Ansonsten: 3 Schieberegister, das obere und untere analog zueinander mit BCD decoder (4511) auf 7-Segment sowie Transistoren zur Steuerung der jeweiligen Kathodenleitung. Das mittlere Schieberegister mit ein paar Wiederständen steuert einfach nur ein paar LEDs und ein SUmmer. (Andere Platine) SV2 geht auch auf eine andere PLatine, wo einfach nur die 7-Segmentanzeigen drauf sind. Was jetzt ganz nett wäre: 1.) Fallen euch Unstimmigkeiten im Schaltplan auf? 2.) Wie sollte ich die Software aufbauen? Habe noch nie wirklich nen uC programmiert, habe aber relativ ausführliche Erfahrung mit PHP, daher würde ich auch zu C tendieren, weil PHP und C vom Syntax sehr ähnlich sind. Danke schonmal und Gruß
>- 4 7-Segment Anzeigen (sollen die Zeit im mm:ss Format anzeigen), >werden natürlich gemultiplext >- 2 * 2 7-Segment Anzeigen (Jedes Paar soll eine Zahl (0 - 99) anzeigen) >(werden zu 4t gemultiplext) >- 2 Taster zum erhöhen der obigen Zahlenwerte >- 2 Taster zum erniedrigen >- 1 Taster zum Moduswechseln >- 1 Resettaster. Acht Siebensegmentanzeigen und 6 Taster. Dafür braucht man 21 Portpins, wenn man Charlieplexing oder Schieberegister benutzt noch weniger. Eine Uhr wurde von verschiedenen Leuten in der Codesammlung veröffentlich. Multiplexing dürfte im Tutorium beschrieben werden. Der Controller wird sich zu Tode langweilen...
bei insgesamt 8 Siebensegment Anzeigen fällt mir Max7219 oder 7221 mitsamt der Nachfolger ein. Ein Controller mit Max 72xx oder Schieberegistern mit evtl BCD Decodern wäre wohl doch das einfachste. Bleibt ja letztendich "nur" nen Timer. Mit dikreter Logik wirds doch deutlich aufwändiger.
Es geht ja darum: 4 von diesen Sieben-Segment Anzeigen werden für die Uhr benötigt. Die anderen beiden: Es gibt 2 Spieler, jeder hat ein Ergebnisstand. Nennen wir es E1 und E2. Dann gibts 4 Taster, T1 - T4 T1 inkrementiert E1 T2 dekrementiert E1 T3 inkrementiert E2 T4 dekrementiert E2 Diese Ergebnisse sollen also auf den anderen 4 angezeigt werden. Wie oben im Schaltplan zu erkennen, habe ich bereits Schieberegister und 2x 4511 decoder verwendet.
>Wie oben im Schaltplan zu erkennen, Da erkenne ich nur Fliegendreck... >4 von diesen Sieben-Segment Anzeigen werden für die Uhr benötigt. Es ist dem Controller ziemlich egal, zu welchem Programmteil die Anzeigen gehören. Die Anzeigen werden in einem Timer-Interrupt der Reihe nach mit dem gewünschten Wert an- und ausgeschaltet. Die Uhr kann man auch in diesem Timerinterrupt behandeln. Dann kann man auch gleich noch die Tasten abfragen und entprellen, wobei man das so macht, dass man nur ein Flag setzt, das in der Hauptschleife ausgewertet wird.
Tut mir leid, ich weiß nicht, wie ich den Schaltplan größer bekommen soll. Dass die alle zusammen "rausgeschaufelt" werden, ist mir schon klar. Allerdings sollte der Interrupt fürs entprellen ca alle 50ms eintreten, das ist mein Multiplexen ein bisschen zu wenig. Das Entprellen ist bei mir in 3 Zeilen erledigt, ausgewertet wird in der Hauptschleife. Am wichtigsten wäre mir erstmal eure Meinung zum Schaltplan ... Wenn mir noch einer sagt, wie ich den größer hinbekomme ;)
>Allerdings sollte der Interrupt fürs entprellen ca alle 50ms eintreten, >das ist mein Multiplexen ein bisschen zu wenig. Was spricht dagegen, die Anzeige alle 1ms zu wechseln? Das ergäbe eine Wiederholrate von 8ms und das liegt oberhalb 50Hz (ich habe jetzt keine Lust eine entsprechende Wiederholfrequenz auszurechnen). Auf jeden Fall kann man von dieser Frequenz/Periodendauer auch das Entprelltiming ableiten.
Wenn alle 50ms(!) ein Overflow Interrupt eintritt (wie ich es fürs multiplexen konfigurieren soll), wie soll ich denn mit dem Timer die anzeigen alle 1ms wechseln lassen? Ich könnte höchstens den Timer auf ~1ms einstellen, und ne Variable hochzählen lassen, und bei jeden 50sten Mal das Entprellen machen.
>Ich könnte höchstens den Timer auf ~1ms einstellen, und ne Variable >hochzählen lassen, und bei jeden 50sten Mal das Entprellen machen. Was spricht dagegen? AVR-Timer unterstützen den CTC-Mode. Da kann man sehr einfach alle Millisekunde einen Interrupt auslösen lassen und ein paar Variablen hoch- oder runterzählen lassen und Flags setzen...
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.