Hallo, wenn ichs im Betreff nicht schreiben darf, dann hier ;-) ich bin absoluter Anfänger. Habe jetzt das erste Jahr TG hinter mir und dort wohl so halbwegs (hoffe ich zumindest) die Grundkenntnisse der Digitaltechnik gelernt. Theorie habe ich jetzt satt g und will das auch mal praktisch probieren. Das ganze soll eine Lichtsterung werden. Ich gebe am LPT Port ein 4bit Signal aus, mit dem ich 16 lampen ein und auschalten will. Wenns dann Funktioniert würde ich das ganze später gerne erweitern mit ner 7Segment anzeige oder LCD ;-) je nachdem wie ich das blicke g. Daher dachte ich so nen atmel hört sich dafür doch gar nicht so schlecht an. Jetzt stell ich mir allerdings die Frage ob ich das 4bit Signal im Atmel schon decodieren soll, oder ihn quasi nur als zwischenspeicher einsetzten soll und von 74HC 4514 << diesem IC dann decodieren lasse. Hätte mir das dann so vorgestellt: Ich will z.b: lampe 1 und 2 einschalten, über den Computer sende ich dann 0001 0010 (irgend en "übernehmen signal" natürlich noch) der avr gibt jetzt an den ausgabepins dann immer abwechselnd 0001 0010 aus (geh ja mal davon aus dass das ganze relativ schnell hintereinander passiert ;-) ). Diese Ausgabe wird dann vom 74HC 4514 decodiert und schält den entsprechenden Optokopller (http://www.knollep.de/Hobbyelektronik/projekte/25/index.htm << die schlatung würd ich dann zum lampen schalten verwenden) jetzt weiß ich nur nicht, ist das unbedingt die schönste Art so? So würde der Ausgabepin ja immer kurz auf low schalten. :( ... aber würde das den triac der am ende des ganzen steht überhaupt intersieren? Bzw. würde ein Kondensator abhilfe schaffen? Wenn ja was für einer? ... Oder ne ganz andere variante ... ich decodier das ganze schon im avr ... nur irgendwie empfinde ich das als Pinverschwendung (bräuchte dann ja über 20 pins). g ... vor allem wenn ich später mal noch ne Anzeige dazu machen will. Oder wie macht man sowas "standartmäßig"? g Vielen Dank schonmal. Toni
Das geht einfacher. Es gibt Schieberegister mit s.g. Strobe (4094). Diese Dinger sind kaskadierbar, also hintereinander Schaltbär. http://www1.jaycar.com.au/images_uploaded/CD4094BC.PDF Jedes dieser Teile hat 8 Ausgänge, die du seriell über 3 Steuerleitungen setzen bzw löschen kannst. Fuktionieren tut das folgendermaszen: Ausgangszustand: alle drei steuereingänge low Zuest legst du den Pegel für Q8 an die DATA-Leitung. Jetzt gibst du einen taktimpuls auf Clock (low->hi->low) Nun legst du den Pegel für Q7 auf data. taktimpuls. Pegel für Q6 auf Data taktimpuls Pegel für Q5 auf Data takt Q4 takt Q3 takt ... ... Q1 takt. Das Register ist nun mit den Daten gefüttert. Ein Low-High-Übergang auf STROBE legt die gefütterten Daten auf die Ausgänge. Die Ausgänge bleiben solange erhalten, bis neue Daten gefüttert wurden und erneut ein low-high-Übergang auf strobe gegeben wurde. Die Dinger sind beliebig oft kaskadierbar. Auf diese Art und Weise kannst du dir mit 3 Steuereingängen beliebig viele ausgänge basteln. Allaska?
vielen dank :) doch kein avr g schade eigentlich ;-). Oder den davor hängen und ncoh andere Scherze damit machen? g naja mal so einfach wie mgölich anfangen. Größten Teils ist mir das klar, nur wie ich da jetzt zwei hintereinander hänge ist mir noch ein rätsel. Sollte ich dafür dann den seriell port am PC nehmen? (oder ginge auch lpt?) Hast du ein Tut für den Seriellen Port, wie ich den mit VB programmiere? Clock logischerweise kein quarz oda? einfach vom VB-Programm steuern. Für was ist aber Enable Output ... versteh ich das so richtig, dass ich den einfach auf 5V lege? Thx schonmal. Toni
Du kannst die ganz einfach in Reihe schalten: Sämtliche Register bekommen CLOCKS' und STROBES' jeweils das selbe Signal. Das DATA-Signal von deinem PC bekommt aber nur das erste Register. Das zweite Register bekommt sein Data-Signal aus dem Qs des Ersten. Das Dritte register sein Data-Signal aus dem Qs des zweiten...usw... Mit dem OutputEnable-eingang kann man die Ausgänge auch bei bedarf auch hochohmig schalten. Wenn dus nicht brauchst, legst du den Eingang einfach auf VCC. Das Ganze geht eigentlich nur über den LPT. Beim Seriellen Port lassen sich die Ausgänge so nicht programmieren, das man sie hier verwerten könnte. Ich hab auch ne IO.DLL, um über VB den Parport auch ansteuern zu können.
Warum sollte das seriell nicht gehen? Natürlich, die Pegel passen erst einmal nicht. Abgesehen davon bietet die serielle Schnittstelle 2 frei programmierbare Ausgänge (DTR,RTS), eine u.A. als Takt verwendbare Leitung (TxD) und diverse Eingänge. Es ist natürlich nicht sonderlich schnell. Hier wohl egal.
Genau da ist der wunde Punkt! Die 4094'er brauchen 3 Leitungen und ich denke nicht, das man mit einem nicht Kontrollierbaren Takt zu brauchbaren Ergebnissen kommt. Ist im Grunde genommen auch wurscht. Gewünscht war LPT und so ist es auch am Einfachsten.
So langsam kommt wieder Hoffnung in mir hoch, dass das sogar für mich schaffbar ist ;-). Noch eine Sache +g ... durch meine praktische Erfahrung = 0 ... habe ich immer so meine Probleme beim Teile besteleln ... finde bei Reichelt nicht den IC mit der genau gleichen bezeichnung ... http://www.reichelt.de/inhalt.html?ACTION=6;LASTACTION=3;SORT=artikel.artnr;GRUPPE=A2237;WG=0;SUCHE=4094;ARTIKEL=74HCT%25204094;START=0;END=16;STATIC=0;FC=668;PROVID=0;TITEL=0;ARTIKELID=3401 << kommt der aufs gleiche raus? Toni PS: LPT ist gut ;-) da findet man wenigstens gengu tuts dazu g
Nein, das ist die "teure" Highspeed-version ;) Die normalen Register findest du in der IC-CMOS-Rubrik Gib mal in die Suche "MOS 4094" ein. Die kostet nur 28ct. Besser ist das.
@niels: Was ist da nicht kontrollierbar? 0xFF über die serielle ausgeben gibt genau eine Puls auf TxD.
A.K: Und woher weisst du, wann die Pegel-wechsel kommen um die DATA-Leitungen zu bedienen? Mag ja sein, das man das mit viel Tüftelei irgendwie irgendwann hinbekommt, aber das ist wesentlich zu umständlich.
ähh..moment...wenn ich 0xFF auf dem seriellen port ausgebe, kommen doch mindestens 8 Pulse?! (imho sinds sogar mit startbit 9)
Ich bin einigermassen sicher, dass RTS/DTR-Control und Datenübertragung im Treiber serialisiert werden. Andernfalls kann RTS nicht als Transmittersteuerung verwendet werden, und manches Modem guckt nur blöd wenn Daten ohne DTR kommen. Aber wenn Du es drauf anlegst, kannst Du auch ein Monoflop an TxD hängen, mit halber Bytelänge als Dauer. getriggert auf der negativen Flanke von TxD. 0x00 ist dann eine 0 und 0xFF eine 1, an der hinteren Flanke vom Monoflop. Ein bischen Hardware, aber aus so ziemlich jeder Programmierumgebung und jedem Rechner toteinfach anzusteuern - auch jenen die, wie heute üblich, keinen Parallelport mehr haben.
@niels: setzen, Sechs ;-). Asynchrone Übertragung hat im Gegensatz zu MFM/Manchester/... keinen Takt im Signal. Bei 0xFF kommt erst mal H (Ruhe), dann 1 Takt lang L als Startbit, dann 9 Takte lang H für Daten und Stopbit. Bei 0x00 sieht's ähnlich aus, nur dauert der L-Zustand da 9 Takte. Wenn Du partout mehere Pulse haben willst, probier's mal mit 0xAA.
g noch en ganz intelligente Frage zum Schluss ... Bei Reichelt find ich ja nur MOS 4094 << den hier ;-) ohne weitere angaben. Im datenblatt steht dass es vier verschiedene Bauformen gibt ... nur welcher ist dann das den ich bei reichelt bestell? ... mit nem smd dingens könnt ich net wirklich viel anfangen :/. Toni
Im Papierkatalog gibt's ein MOS 4094 und ein SMD 4094, also ist MOS 4094 die Version im DIP-Gehäuse.
So gehäust war wohl das richtige g ... jetzt nur noch eine Frage, ich hoffe die letzte ;-) ... Was ist der Unterschied der Outputs Qs und Q's ... Qs kommt ja das signal für den zweiten 4094 dann ... Q's dann auf GND? toni
@Toni, ich würde Dir nicht den "MOS 4094" empfehlen, sondern den 74HCT4094 wenn Du das Teil an den Druckerport anschließen willst. Der Grund dafür: Die HCT-Reihe kommt mit TTL-kompatiblen Eingangsspannungen zurecht, die HC oder auch alten "MOS"-Serien nicht. D.h. wenn Du z.B. eine Druckerschnittstelle mit 5V/TTL-Pegel oder 3.3V/CMOS-Pegel oder 5V/CMOS-PEGEL hast, funktioniert der HCT garantiert immer. Ausserdem ist HCT (und HC) deutlich robuster als "MOS". "MOS" kann von einmal scharf anschauen schon kaputt gehen.
:( zu spät ... bestellung ist schon da und ich schon am basteln :/ hoffe doch schwer dass es trotzdem irgendwie funktionieren wird. Robus wäre zwar gut, bei meinen ersten Gehversuchen ... aber irgendwie wirds schon hinhauen ;-) .... Reichelt wird mir wohl wegen nem IC kein paket schicken g nur g unterschied zwischen Q's und Qs? Toni
Qs ist direkt der Ausgang des letzten Flipflop Schieberegisters. Qs' folgt diesem einen halben Takt später (andere Flanke). Verwendet man für die Kaskadierung Qs' statt Qs, dann hat man auch bei langsamer Taktflanke garantiert keine Stabilitätsprobleme.
So Schaltung habe ich nun aufgebaut, und es scheint zu funktionieren. Dachte ich bis gestern zumindest. Hab mir dann mal nen qbasic programm geschrieben zum testen, und leds an die ausgänge gehängt.(Q0 - Q7) (über transitor und so) das Programm macht nun folgendes: Man gibt: z.B. 01101011 ein jetzt gibt das Programm am ltp aus: data: 0 clock: 1 clock: 0 data: 1 clock: 1 clock: 0 usw usw. strobe: 1 strobe: 0 ... soweit so gut mach ich jetzt z.B. 11111111 << gehen alle leds an so wies sein soll auch 000000 << funktioniert zumindest meistens. Auch sachen wie 11110000 00001111 funktionieren aaaaber: 10000000 << da fängt das komische an ... jetzt geht irgend eine led an ... manchaml die vierte manchmal die fünfte dann kanns passieren dass auf 0000000 gar nichts passiert. mach ich nach 10000000 gleich 11110000 gehen erst mal alle aus, beim nächsten versuch funktioniert es "meistens" ... kurz gesagt alles seeeehr unlogisch .... und ich versteh einfach net was da net geht :/ Hab ich den IC schon geschrottet? (aber warum funktioniert dann manches?) Hoffe auf euere Hilfe. toni
Qs' ist doch invertiert ?! Oder leb ich da seit ein paar Jahren falsch? ;) Keine Angst, die MOS4094 sind schon OK... Und was ist das mit dem Seriellen Port ?! Wenn ihr den Port über seine Register betreibt, kann man den genauso nutzen wie den Parallel-port... siehe hier http://franksteinberg.de/progss.htm#serielleSS
args *g* net dein ernst oda? Jetzt hab ich halt schonmal Qs' angelötet ;-) ... naja was solls ;-) ... Zu meinem obigen Problem ... ich vermute jetzt dass es der IC war ... hab mich überwunden und den zweiten und letzten draufgesteckt ... obwohl ich den dann um einiges mehr in den händen rumgeknetet und gebogen habe (blöde pins passen doch nie in den sockel g) scheint er nun zu funktionieren jubel find die ausgabe zwar en bissel komisch ... bei 10000000 gibts dann rigendwo bei Q4 oda so high ;-) aber es funktioniert! Also vielen Dank :) mal schauen wie's weitergeht g Toni
"Qs' ist doch invertiert ?!" Wenn das Datasheet nicht an mehreren Stellen gleichzeitig lügt, ist das Signal ist das gleiche qie Qs, wird aber an der invertierten Taktflanke gespeichert.
Wenn man selbst unsicher ist, über das was man tut, ists nie verkehrt, anderen mal über die Schulter zu gucken. http://www.haecksen.org/~sphaera/blinkenmini/schematic.gif in der software zur ansteuerung würde ich noch pausen einbauen, damit die signale eindeutig sind (cmos ist auch in der regel nicht so schnell) alle ausgänge 0 (ausgangszustand) pause data 1 pause clock 1 pause clock 0 pause data 0 pause clock 1 pause clock 0 pause strobe 1 pause strobe 0 pause . .
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.