Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

[CC][gelöst] 4094 + 4021

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Profi-Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 02.11.2007, 12:54    Titel: [CC][gelöst] 4094 + 4021 Antworten mit Zitat

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, 16:10, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 02.11.2007, 13:28    Titel: Antworten mit Zitat

Hallo,

was genau meinst Du mit zurücklesen? Vielleicht hilft Dir das weiter:

http://www.skilltronics.de/versuch/elektronik_pc/4094.html

http://www.skilltronics.de/versuch/elektronik_pc/4021.html

Gruß
Skilltronic
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 02.11.2007, 13:48    Titel: Antworten mit Zitat

Ok, vielen Dank. lächeln

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 02.11.2007, 14:05    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 02.11.2007, 14:31    Titel: Antworten mit Zitat

Danke!
Jetzt weiß ich was das Prog macht. happy

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. lächeln
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 03.11.2007, 13:54    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 03.11.2007, 14:02    Titel: Antworten mit Zitat

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. lächeln
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 03.11.2007, 14:36    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
PMedia



Anmeldungsdatum: 14.08.2006
Beiträge: 2847

BeitragVerfasst am: 03.11.2007, 14:36    Titel: Antworten mit Zitat

Darf man fragen was es wird wenns fertig wird? Hats noch was mit iCiv zu tun? Gar ein Dongle?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 03.11.2007, 15:21    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
PMedia



Anmeldungsdatum: 14.08.2006
Beiträge: 2847

BeitragVerfasst am: 03.11.2007, 15:28    Titel: Antworten mit Zitat

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... grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 03.11.2007, 15:34    Titel: Antworten mit Zitat

PMedia hat Folgendes geschrieben:
Egtl meine ich CSDE_Rats... grinsen


Ich evtl. auch zwinkern
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 03.11.2007, 16:42    Titel: Antworten mit Zitat

Danke Skilltronic, lächeln
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... durchgeknallt ...


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 zwinkern
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 happy)
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 03.11.2007, 18:06    Titel: Antworten mit Zitat

[OT]C-Control und CONRAD... Das setz ich doch lieber auf ATMEL AVRs und Reichelt als "Zulieferer"... happy [/OT]
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!


Zuletzt bearbeitet von Sebastian am 03.11.2007, 18:56, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
PMedia



Anmeldungsdatum: 14.08.2006
Beiträge: 2847

BeitragVerfasst am: 03.11.2007, 18:12    Titel: Antworten mit Zitat

Sebastian hat Folgendes geschrieben:
[OT]C-Control und CONRAD... Das setz ich doch lieber auf ATMEL AVRs und Reichelt als "Zulieferer"... happy [/OT]

Wenigstens einer, der Qualitätsware zu schätzen weiß grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 04.11.2007, 13:49    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 04.11.2007, 14:38    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 04.11.2007, 15:01    Titel: Antworten mit Zitat

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 zwinkern

Gruß
Skilltronic
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 04.11.2007, 16:10    Titel: Antworten mit Zitat

Vielen Dank! lächeln
Damit habe ich jetzt alle Daten beisammen lächeln
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Profi-Forum Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz