Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
csde_rats
Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 02.11.2007, 13:54 Titel: [CC][gelöst] 4094 + 4021 |
|
|
Hi!
Ich habe mit meiner C-Control folgendes Problem:
ich habe vier 4094 auf einer Zusatz Platine so verbaut, dass alle den gleichen Clock und Data Anschluss haben, nur der Strobe Eingang ist für jeden explizit da.
Der Code um die in Daten gespeicherten Zustände in ein 4094 zu schreiben, lautet so:
Code: |
' Schreibt die in "Daten" gespeicherten
' Zustände in das Schieberegister
#Schieben
for N = 1 to 8
DatenPort = OFF
if (Daten AND 1) = 1 then DatenPort = ON
pulse CLK
Daten = Daten shr 1 '1 Bit nach rechts
next
if RegNum = 1 then pulse STR1
if RegNum = 2 then pulse STR2
if RegNum = 3 then pulse STR3
if RegNum = 4 then pulse STR4
return
|
N ist eine Bytevariable, genauso wie Daten und RegNum.
RegNum ist die Nummer des Registers von 1...4.
DatenPort ist der gemeinsame Datenanschluss, CLK der gemeinsame Clockanschluss.
Und STR1...STR4 jeweils die Strobeeingänge der Register.
Allerdings habe ich jetzt keine Ahnung, wie ich das zurücklesen kann...
Könnt ihr mir helfen? _________________ If hilfreicher_Beitrag then klick(location.here)
Klick
Zuletzt bearbeitet von csde_rats am 04.11.2007, 17:10, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
Skilltronic
Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
|
Nach oben |
|
|
csde_rats
Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 02.11.2007, 14:48 Titel: |
|
|
Ok, vielen Dank.
Mit "zurücklesen" meine ich das Auslesen der Zustände an den Eingängen des 4021.
In deinem Beispielprogramm zum 4021 wird das so gemacht:
Code: |
OUT 1020, 2 'Strobe an
OUT 1020, 0 'Strobe aus
FOR leitung = 7 TO 0 STEP -1 'Der IC sendet das hoechste Bit zuerst
'Darum laeuft die Schleife rueckwaerts.
ein = (INP(ba + 6) AND 16) / 16 'status(leitung) wird mit CTS ausgelesen
OUT 1020, 1 'Clock an
OUT 1020, 0 'Clock aus
LOCATE 12, 9 + leitung * 2 'Bildschirmanzeige
PRINT USING "#"; ein
NEXT
|
Aber da blicke ich nicht ganz durch!?
was ist ein?
Wie kombiniere ich ein mit den restlichen 7 Zuständen, dass man mit einer logischen Verknüpfung (and) überprüfen kann, ob ein Eingang gesetzt ist? _________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
|
Skilltronic
Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 02.11.2007, 15:05 Titel: |
|
|
Hallo,
In der Variablen "ein" wird der Status der 4021-Eingänge zwischengespeichert. Da CTS auf dem 5. Bit des Registers liegt und damit den Dezimalwert 16 hat, wird dieses Bit mit AND maskiert und der Wert durch 16 geteilt, um auf eine Anzeig 1 oder 0 zu kommen. Du könntest auch in ein Array einlesen und z.B. "ein" durch "status(leitung)" ersetzen, dann hast du es auch gleich schön getrennt. Wenn Du einen 8-Bit Wert haben möchtest, also die acht Eingänge des 4021 als Wert von 0-255, musst Du eben die dezimalen Stellenwerte jeweils addieren. Also
Code: |
OUT 1020, 2
OUT 1020, 0
ein = 0
FOR leitung = 7 TO 0 STEP -1
ein = ein + 2 ^ leitung * (INP(ba + 6) AND 16) / 16
OUT 1020, 1
OUT 1020, 0
NEXT
PRINT USING "###"; ein |
So sieht man auch, warum die Schleife rückwärts zählt.
Gruß
Skilltronic _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
|
csde_rats
Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 02.11.2007, 15:31 Titel: |
|
|
Danke!
Jetzt weiß ich was das Prog macht.
Code: |
#Lesen
if RegNum = 1 then pulse ISTR1
if RegNum = 2 then pulse ISTR2
for n = 7 to 0 step -1
Daten = Daten or DatenPort
pulse CLK
next n
return
|
Ich kann es jetzt nicht testen, da die beiden 4021 nicht da sind, also melde ich mich später mit einem Resultat wieder. _________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
|
Skilltronic
Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 03.11.2007, 14:54 Titel: |
|
|
Vielleicht machst Du das ja absichtlich so, aber Du könntest auch alle ICs, also 4094er und 4021er an eine einzige, gemeinsame Strobeleitung anschließen. Ein Eingang und drei Ausgänge reichen, um beliebig viele von diesen beiden Bausteinen anzusteuern. _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
|
csde_rats
Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 03.11.2007, 15:02 Titel: |
|
|
Ich weiß (bzw. habe das in deinen Beispielen gelesen/gesehen), dass das auch eine Möglichkeit wäre, allerdings wird mir dann der Steueraufwand (in dieser nicht grade leistungsfähigen Sprache) etwas zu hoch.
Ich habe hier immerhin 8 IO Ports, daher brauche ich mir den Aufwand nicht machen, denn 4 Ausgangs, und 2 Eingangsregister reichen, da ich nur 6 Zonenschalter, und deswegen auch 6 Zonen verarbeiten muss.
Heute ist immerhin eine weitere Materiallieferung von Conrad angekommen (sie enthält auch endlich den ZyXEL G-570S), sodass ich bald mit der Eingangsplatine anfangen kann (die Ausgabeplatine ist bereits fast fertig).
Insofern bin ich ja schon zufrieden, da alle Register sich eine Clock und Datenleitung teilen. _________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
|
Skilltronic
Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 03.11.2007, 15:36 Titel: |
|
|
csde_rats hat Folgendes geschrieben: | Ich weiß (bzw. habe das in deinen Beispielen gelesen/gesehen), dass das auch eine Möglichkeit wäre, allerdings wird mir dann der Steueraufwand (in dieser nicht grade leistungsfähigen Sprache) etwas zu hoch. |
Wie meinst Du das? Wenn du z.B. zwei 4094 in Reihe schaltest, musst Du in dem Beispielprogramm die Schleife anstatt von 0-7 einfach von 0-15 laufen lassen. Du sparst Dir ein Strobesignal. Wenn Du 4094 und 4021 an eine Strobeleitung hängst, kannst Du sogar gleichzeitig lesen und schreiben, was die Geschwindigkeit erhöht. _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
|
PMedia
Anmeldungsdatum: 14.08.2006 Beiträge: 2847
|
Verfasst am: 03.11.2007, 15:36 Titel: |
|
|
Darf man fragen was es wird wenns fertig wird? Hats noch was mit iCiv zu tun? Gar ein Dongle? |
|
Nach oben |
|
|
Skilltronic
Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 03.11.2007, 16:21 Titel: |
|
|
Hier ein Beispiel, wie man die sechs ICs mit einer Strobeleitung ansteuern kann.
Code: | DIM ein%(15)
DIM aus%(31)
OUT 1020, 2 'Strobe an
OUT 1020, 0 'Strobe aus
FOR leitung% = 0 TO 15
ein%(leitung%) = (INP(1022) AND 16) / 16 'lesen
OUT 1019, aus%(leitung%) * 64 'schreiben
OUT 1020, 1 'Clock an
OUT 1020, 0 'Clock aus
NEXT
FOR leitung% = 16 TO 31
OUT 1019, aus%(leitung%) * 64 'schreiben
OUT 1020, 1 'Clock an
OUT 1020, 0 'Clock aus
NEXT
OUT 1020, 2 'Strobe an
OUT 1020, 0 'Strobe aus |
Wenn permanent gelesen und geschrieben wird und es die Anwendung zulässt, kann man auch auf eines der beiden Strobesignale verzichten. Aus- und Eingabe sind dann immer um einen Zyklus verschoben. Wenn man nicht unbedingt Einsen und Nullen als Werte für ein% und aus% braucht, kann man auch auf das Teilen durch 16 bzw. das Malnehmen mit 64 verzichten.
PMedia hat Folgendes geschrieben: | Darf man fragen was es wird wenns fertig wird? Hats noch was mit iCiv zu tun? Gar ein Dongle? |
Ich habe mal eine Art COM-Dongle gebaut, mit einem seriellen EEPROM und ohne zusätzliche Stromversorgung. Schaltplan und QB-Steuerprogramm müsste ich noch irgendwo haben, falls Interesse besteht.
Gruß
Skilltronic _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
|
PMedia
Anmeldungsdatum: 14.08.2006 Beiträge: 2847
|
Verfasst am: 03.11.2007, 16:28 Titel: |
|
|
Skilltronic hat Folgendes geschrieben: |
PMedia hat Folgendes geschrieben: | Darf man fragen was es wird wenns fertig wird? Hats noch was mit iCiv zu tun? Gar ein Dongle? |
Ich habe mal eine Art COM-Dongle gebaut, mit einem seriellen EEPROM und ohne zusätzliche Stromversorgung. Schaltplan und QB-Steuerprogramm müsste ich noch irgendwo haben, falls Interesse besteht.
Gruß
Skilltronic |
Egtl meine ich CSDE_Rats... |
|
Nach oben |
|
|
Skilltronic
Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 03.11.2007, 16:34 Titel: |
|
|
PMedia hat Folgendes geschrieben: | Egtl meine ich CSDE_Rats... |
Ich evtl. auch _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
|
csde_rats
Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 03.11.2007, 17:42 Titel: |
|
|
Danke Skilltronic,
allerdings ist CC-BASIC genauso schnell wie hier beschrieben, mit QB wird das wohl kein Problem sein, aber bei 4 Mhz Taktfrequenz, so langsamen RAM, und so einer miesen Sprache... ...
PMedia hat Folgendes geschrieben: | Darf man fragen was es wird wenns fertig wird? Hats noch was mit iCiv zu tun? Gar ein Dongle? |
Nönö.
Ist nur so:
C-Control hat 16 I/O Ports. 8 Gehn fürs LCD Display drauf, also 8 übrig.
Clock + Data für alle Register gemeinsam = 6 übrig.
4 Ausgangsregister (=28 Ausgänge) = 2 übrig.
4 Eingangsregister (=32 Eingänge) = 2 übrig, da eins der Schieberegister die Strobes der Eingangsregister bedient. Also schon so ein *bisschen* wie Skilltronic es beschrieben hat, nur halt aus Geschwindigkeitsgründen nicht alles an einem Strobe
Ein Eingangsregister bedient u.a. 6 Zonenschalter + einen Schlüsselschalter.
Ein weiteres Eingangsregister bedient 6 Öffnerzonen
Und das nächste 6 Schließerzonen
Eines bleibt frei.
Ein Ausgangsregister bedient die Strobes der Eingangsregister
Ein weiteres Ausgangsregister bedient inetwa die Hälfte der StatusLEDs
Das nächste die andere Hälfte
Das letzte Ausgangsregister bedient dementsprechend die Alarmrelais usw.
Folglich wird das ganze eine Alarmanlage, mit 6 Zonen (jeweils Öffner+Schließer pro Kanal).
Das ganze kommt in einen 19" Aluminiumbaugruppenträger von CEAG.
Zusätzlich ist noch eine 6 Kanal Stromkreisüberwachungsplatine verbaut. (Indirekt ein Sicherungstester ) _________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
|
PMedia
Anmeldungsdatum: 14.08.2006 Beiträge: 2847
|
Verfasst am: 03.11.2007, 19:12 Titel: |
|
|
Sebastian hat Folgendes geschrieben: | [OT]C-Control und CONRAD... Das setz ich doch lieber auf ATMEL AVRs und Reichelt als "Zulieferer"... [/OT] |
Wenigstens einer, der Qualitätsware zu schätzen weiß |
|
Nach oben |
|
|
Skilltronic
Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 04.11.2007, 14:49 Titel: |
|
|
Hallo
csde_rats hat Folgendes geschrieben: | Ein Ausgangsregister bedient die Strobes der Eingangsregister |
Na ja, diese Verfahrensweise verbessert die Geschwindigkeit ja auch nicht unbedingt. So musst Du für einen einzelnen Strobeimpuls einen kompletten 8-Bit-Zyklus plus das Strobe für die Ausgänge abarbeiten. Bei vier 4021ern also schon 36 Takte nur für das Senden der Strobes und dann nochmal für jedes Register die acht Takte zum Auslesen, macht weitere 32 . Das sind insgesamt 68 Takte nur zum Auslesen der vier Eingangsregister.
Wie wäre es, wenn Du je zwei gleiche ICs hintereinander schaltest, also Zwei mal zwei 4021 in Serie und Zwei mal zwei 4094. Jede dieser vier Zweiergruppen bekommt eine eigene Datenleitung zur C-Control, also zwei Ein und zwei Ausgänge. Clock und Strobe teilen sich alle 16 ICs. Sind insgesamt auch nur sechs Digitalports an der C-Control und du kannst mit nur 17 Takten (16x Clock und 1x Strobe) alle Ein- und Ausgänge aller Schieberegister Lesen bzw. Setzen. Wäre bedeutend schneller und bestimmt auch einfacher zu programmieren.
Gruß
Skilltronic _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
|
csde_rats
Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 04.11.2007, 15:38 Titel: |
|
|
Hmmm auf die Idee bin ich ja noch nicht gekommen!
Also dann wie in deinem Tut je ein IC an Pin 9?
Werde ich gleich mal testen...
/EDIT:
9 UND 10 sind ja die beiden seriellen Ausgänge des 4094 / 4021. Wozu dient da denn Pin 10?
---
Mal eine andere Frage:
Kann man an den Ausgang eines 4094 direkt eine LED anschliessen? (CMOS Ausführung des ICs)
/EDIT:
Wenn ich die LED über einen 450 Ohm Widerstand anschliesse... kann man die noch leuchten sehn? _________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
|
Skilltronic
Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 04.11.2007, 16:01 Titel: |
|
|
csde_rats hat Folgendes geschrieben: | Hmmm auf die Idee bin ich ja noch nicht gekommen!
Also dann wie in deinem Tut je ein IC an Pin 9? |
Ja, bzw. Pin 11 bei den 4021.
csde_rats hat Folgendes geschrieben: | Mal eine andere Frage:
Kann man an den Ausgang eines 4094 direkt eine LED anschliessen? (CMOS Ausführung des ICs)
/EDIT:
Wenn ich die LED über einen 450 Ohm Widerstand anschliesse... kann man die noch leuchten sehn? |
Ohne Vorwiderstand darfst Du keine LEDs an die Ausgänge anschließen. Wie groß dieser Widerstand sein muss hängt von dem IC- und LED-Typ ab, also wieviel Strom der Ausgang liefern kann und wieviel die LED braucht, da gibt es Unterschiede, siehe Datenblatt. Dabei musst du auch den Gesamtstrom beachten der fließt, wenn alle acht LEDs eingeschaltet sind. Mit 450 Ohm bist du so bei 7mA, damit sollte es gehen. Also das sollte der 4094 abkönnen und die LED trotzdem noch hell genug leuchten lassen. Sollte. Aus rechtlichen Gründen muss ich aber darauf hinweisen, dass alle Angaben ohne Gewähr sind
Gruß
Skilltronic _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
|
csde_rats
Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
|
Nach oben |
|
|
|