welke schuifregister ?

trix

Golden Member

hallo,
ik ben op zoek naar een soort schuifregister, ik dacht er een te hebben gevonden (74HC165) maar dat gaat toch niet werken ben ik bang.

wat ik wil is eigenlijk heel simpel:
32x input (vertikaal),
die loop ik 1 voor 1 af m.b.v. een clockpuls,
meteen wil ik de status v/d des betreffende ingang serieel naar een AVR klokken.

lijkt mij niet moeilijk, maar welk IC kan ik daar voor gebruiken ?

eigenwijs = ook wijs
trix

Golden Member

net even bekeken, kan inderdaad, maar dan moet ik de clockpuls omzetten in een bcd code, en je kan ze niet in cascade/in serie zetten.

eigenwijs = ook wijs

De HC150 lijkt niet erg gangbaar. Kan gewoon met vier 74HC165. Kun je in een slag 32 bits dowloaden.
Kan ook met slechts 1x 74HC165, maar dan moet je multiplexen. Soms kan de output dat gewoon.
De gegevens zijn wel erg summier. Je moet toch het een en ander klokken met PL (parallel load) en wegschuiven van de 32 bits. De klokslagen die zal je moeten tellen etc.

trix

Golden Member

dit kan mijn inziens toch niet met een 74HC165.
die heeft 8x een input, op het moment dat je een latch geeft (heet in de datasheet dacht ik anders) dan komen alle 8 op het ritme v/d clockpuls naar buiten. terwijl ik eigenlijk de 8x input 1 voor 1 naar buiten wil hebben.

edit:
klokp.1 -> status inp.1 -> serieel uit.
klokp.2 -> status inp.2 -> serieel uit.
klokp.3 -> status inp.3 -> serieel uit.
klokp.4 -> status inp.4 -> serieel uit.
.
.
.
.
klokp.31 -> status inp.31 -> serieel uit.
klokp.32 -> status inp.32 -> serieel uit.

[Bericht gewijzigd door trix op vrijdag 7 juni 2019 20:37:46 (33%)

eigenwijs = ook wijs
Hensz

Golden Member

Latch is inderdaad de Shitfd/Load-ingang.
Dan doet ie toch wat je wilt? De latch en de klok heb je zelf in de hand en zijn onafhankelijk van elkaar. Je hoeft geen free-running klok te gebruiken! Mocht je dat toch moeten/willen, dan kun je nog steeds met de clock inhibit-ingang (pen 15) bepalen wanneer jij het volgende bit wilt.

Don't Panic!
trix

Golden Member

ik zit net te bedenken dat het denk ik met and poortjes kan.
zal het eens proberen te tekenen.

eigenwijs = ook wijs
trix

Golden Member

ik denk zo dus.

de looplicht puls is 6 ms lang met een freqentie van 20 Hz 160 Hz.

eigenwijs = ook wijs
Arco

Special Member

Daar shift je toch niks mee? Kun je net zo goed alles aan mekaar knopen met diodes...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
trix

Golden Member

voldoet toch wel aan:
quote uit mijn 1e post:

wat ik wil is eigenlijk heel simpel:
32x input (vertikaal),
die loop ik 1 voor 1 af m.b.v. een clockpuls,
meteen wil ik de status v/d des betreffende ingang serieel naar een AVR
klokken.

wellicht is het woord schuifregister hier niet op zijn plaats.

op die inputs komen allemaal TSOP36 te hangen.

eigenwijs = ook wijs
trix

Golden Member

ga ik bekijken,...maar wat een k*t datasheet

eigenwijs = ook wijs

Kun je niet iets met een 74hc4067. Dat is een 16 ch analoge multiplexer.
je maakt een counter in je arduino die de ingang selecteert en dan verschijnt die ingang op de uitgang. Als je de counter op laat tellen verschijnen alle ingangen een voor een op de uitgang. die kun je dan inlezen in de arduino.

benleentje

Golden Member

Wat jij nodig hebt heet een multiplexer dan kan ook met een CD4014 maar je hebt ook 8 of zelf 16 voudige multiplexers.

Een 8 bit multiplexer heeft 3 ingagen en een 16 bit heeft 4 ingangen voor 32 bit heb je dan totaal 5 ingangen nodig

Mensen zijn soms net als een gelijkrichter, ze willen graag hun gelijk hebben.

Op 7 juni 2019 20:24:44 schreef trix:
dit kan mijn inziens toch niet met een 74HC165.

Jawel hoor! En als ik die 4014 datasheet lees, doen beide in essentie hetzelfde:

Een "load" signaal tikt alle parallelle inputs tegelijk in de flip-flops. Deze "load" ingangen zou je dus allemaal aan elkaar knopen tussen de chips. Dit signaal activeer je maar 1x om alle 32 ingangen uit te kunnen lezen.

Een "clock" signaal doet vervolgens alle (8) bitjes binnenin de chip 1 plek opschuiven. Het bitje wat 'vooraan' staat komt op de uitgang, en 'achteraan' wordt er v/d ingang eentje in geschoven. Voor deze signalen knoop je dus de uitgang van elke chip aan de ingang v/d volgende chip, behalve de laatste uitgang die stop je in jouw µC. Voordat je alle ingangen binnen hebt, moet de µC dit kloksignaal dus 32x aantikken.

Hoe die "parallel/serial control" zich verhoudt tot "clock" bij de 4014 is mij niet zo snel duidelijk (idd. lastig lezen die datasheet). Maar principe is hetzelfde.

Een (combinatie van) multiplexer(s) gebruiken is makkelijker qua programmering. En sneller als je in 1 specifieke ingang geïnteresseerd bent. Maar voor 32 ingangen ben je dan 5 'adreslijnen' voor de selectie nodig. Met de schuifregisters volstaat "load" + "clock". Oftewel: beetje meer werk qua programmering om 3 I/O pinnen te besparen. Hoeveel heb je daarvan beschikbaar?

trix

Golden Member

Op 7 juni 2019 22:59:15 schreef RetroTechie:
[...]

Een "load" signaal tikt alle parallelle inputs tegelijk in de flip-flops. Deze "load" ingangen zou je dus allemaal aan elkaar knopen tussen de chips. Dit signaal activeer je maar 1x om alle 32 ingangen uit te kunnen lezen.

maar ik wil ze niet allemaal tegelijk in lezen. ik wil ze 1 voor 1 op het ritme v/d klockpuls

maar wat is er mis met mijn getekende oplossing ? mischien "te simpel" ;)

eigenwijs = ook wijs

Op 8 juni 2019 18:55:10 schreef trix:
[...]
maar ik wil ze niet allemaal tegelijk in lezen. ik wil ze 1 voor 1 op het ritme v/d klockpuls

Dat is ook wat er gebeurt: dat "parallel load" signaal legt de toestand van alle 32 ingangen tegelijk vast - in die schuifregisters. De µC heeft dan nog niks.

Vervolgens ga je die rij bitjes opschuiven (binnen & tussen de IC's), en het bit wat 'vooraan' staat lees je met de µC. Bit voor bit dus. Zoals ook al door anderen gezegd: het tempo daarvan bepaal je zelf met dat kloksignal. 1 bit lezen, klok, 1 bit lezen, klok, ..., enz. Als ik erover nadenk: 31x klokken, bij de parallel load staat het voorste bit namelijk meteen al op de uitgang. Dus je hoeft de rest nog 'maar' 31x op te schuiven voor het laatste bitje te voorschijn komt.

Vergelijk met zo'n ruimtevaartuig die tijdens een fly-by in een uurtje een schat aan informatie vergaart (de "parallel load"), maar alle info nog aan boord heeft. En vervolgens nog 3 maanden bezig is om op een slakkengang de data over te seinen naar Houston (jouw µC).

Overigens heb je de laatste vraag nog niet beantwoord: zit je krap in de I/O pennen? :? Zo nee, is een paar multiplexers misschien toch makkelijker.

trix

Golden Member

nee, vooralsnog heb ik pennen voldoende.

maar is er iets mis met mijn getekende oplossing ? want dat blijft toch het simpelst.

eigenwijs = ook wijs
benleentje

Golden Member

Een Tsop36 geeft een hele reeks van pulzen af. Als je er 32 tegelijk hebt doen ze dan nog niet eens synchroon. Wil je dan een signaal van 30kHZ 32x uitlezen en ook nog asynchroon waardoor je minimaal 3x sneller moet uitlezen zit je aan 3 Mhz waarmee je de schuifregisters moet gaan klokken.

Mensen zijn soms net als een gelijkrichter, ze willen graag hun gelijk hebben.
Arco

Special Member

Klok hoeft inderdaad niet gelijk te lopen op alle TSOP's. Beter iedere TSOP direct aan een MCU pin, dan kan die de pulsen bekijken...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
trix

Golden Member

het enige wat die TSOP hoeft te doen is registreren licht (=0) of donker (=1).
puur een lichtsluis dus.

daar heeft hij 6ms de tijd voor en de volgende 6ms komt na ca. 50 ms

[Bericht gewijzigd door trix op zaterdag 8 juni 2019 21:18:19 (26%)

eigenwijs = ook wijs
trix

Golden Member

hallo.....daar ben ik weer.

wat ik zelf voorstelde met die and poorten heb ik getest, en met toevoeging van een schuif register werkt het ook,.....op een punt na.

de outputs van al die and poorten komen op een "rail" (serieel uit op tek.)
als 1 van die and poorten een 1 op die rail zet krijgt hij de rail niet hoog omdat al die ander and poorten de rail laag maken, eigenlijk een kort sluiting dus.

wat is hier de beste oplossing,...diodes mischien,of is hier een speciaal IC voor.

eigenwijs = ook wijs
Arco

Special Member

Daarvoor hebben ze de 7409 uitgevonden (OC outputs)... ;)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
trix

Golden Member

als 1 van de poorten waar is, dan word hij "high impedance"
terwijl de andere 3 de rail naar GND brengen, dan heb ik toch geen logische 1 op de rail ?

eigenwijs = ook wijs
Arco

Special Member

Dan neem je een 7403 (NAND) met een inverter erachter...

[Bericht gewijzigd door Arco op zaterdag 15 juni 2019 19:00:07 (14%)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com