Forum: Mikrocontroller und Digitale Elektronik Presetten vom ICM7217c via AT MEGA


von Daniel H. (danielh)


Lesenswert?

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

von Daniel H. (danielh)


Lesenswert?

Hm, keiner ne Idee ? ;)

von holger (Gast)


Lesenswert?

Versuchs mal mit Analogschaltern CD4066.
Wenn das nicht geht mit 4 Reed-Relais.

von Hannes J. (Firma: _⌨_) (pnuebergang)


Lesenswert?

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.

von Stephan H. (stephan-)


Lesenswert?

Lc oder Lr nach Low.
Dann sind 1,2,4 und 8 als Input geschaltet aber Tristate !!!
Die brauchen Pull UP !

@Hannes,
100% Ack

von Daniel H. (danielh)


Angehängte Dateien:

Lesenswert?

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ß

von STK500-Besitzer (Gast)


Lesenswert?

>- 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...

von Stephan H. (stephan-)


Lesenswert?

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.

von Daniel H. (danielh)


Lesenswert?

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.

von STK500-Besitzer (Gast)


Lesenswert?

>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.

von Daniel H. (danielh)


Lesenswert?

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 ;)

von STK500-Besitzer (Gast)


Lesenswert?

>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.

von Daniel H. (danielh)


Lesenswert?

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.

von STK500-Besitzer (Gast)


Lesenswert?

>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
Noch kein Account? Hier anmelden.