posuvný registr 74HC595

Postup stavby, dotazy, úspěchy, slepé uličky a zkušenosti
Odpovědět
Janek90

posuvný registr 74HC595

Příspěvek od Janek90 »

Ahoj všem,
měl bych malý dotaz, jak přesně funguje posuvný registr 74HC595? Potřeboval bych jich ovládat 16 jedním arduinem. A abych se přiznal, nejsem moudrý z toho, jak přesně budu adresovat na jednotlivé posuvné registry. Jak daný registr "zjistí" že je to na něj. Našel jsem si, myslím, dobrý návod, http://bildr.org/2011/02/74hc595/ ale to je jen pro dva 74HC595. Bylo by to identické, když bych jich zapojil dle stejného klíče víc?
Předem díky za rady.

Honza
MartinL
Příspěvky: 252
Registrován: 24 úno 2013, 14:13
Kontaktovat uživatele:

Re: posuvný registr 74HC595

Příspěvek od MartinL »

Posuvný registr funguje tak, že na jeden drát (SER) dáš hodnotu a impulsem na SRCLK jej zapíšeš. Pro jeden shift registr toto musíš udělat 8krát abys zapsal všechny hodnoty pro výstupy. Potom nastavením RCLK se provede nastavení hodnot na výstupech.
Pokud zapojíš více shift registrů za sebou (dle odkazu, teoreticky libovolný počet) pracuješ stejně, jen nezapisuješ 8krát, ale 8xpočet registrů (pro 16 shift registrů tedy 8x16 = 128 bitů). Ostatní zůstává.
Janek90

Re: posuvný registr 74HC595

Příspěvek od Janek90 »

Jo, takže vlastně pokaždé zapíši 128 hodnot (respektive počet podle počtu shiftů) a první zapsaná hodnota bude na posledním shiftu na poslední pozici a poslední zapsaná hodnota bude na první shiftu na první pozici. Je to tak?

Honza
micer
Příspěvky: 180
Registrován: 12 čer 2014, 19:14

Re: posuvný registr 74HC595

Příspěvek od micer »

Ano, je to tak.
Jediný potenciální problém může být v tom, že vyslání 128 bitů už nějakou dobu trvá. Pokud by bylo potřeba, aby to reagovalo velmi rychle, tak je otázka, zda to bude stíhat. Kbyby byl problém s obsluhou pomocí jednoduché programvé smyčky (FOR cyklu), tak se to dá sakra hodně zrychlit použitím instrukcí (knihoven) pro SPI.
Janek90

Re: posuvný registr 74HC595

Příspěvek od Janek90 »

To jsem rád, že jsem to dobře pochopil :-)
Vysílání 128 bitů by mě nemělo časově omezovat, protože to bude ovládat "jen" LEDky a navíc to bude řídit procesor o taktovací frekvenci 20 MHz. Takže pokud se nepletu, doba instrukce by měla být někde kolem 0,2 mikro sekund. Což bude více než dostatečné.
Moc díky za pomoc.

Honza
Uživatelský avatar
gilhad
Příspěvky: 262
Registrován: 29 kvě 2015, 00:36
Kontaktovat uživatele:

Re: posuvný registr 74HC595

Příspěvek od gilhad »

1/20MHZ=0.05us

Ale jednak potrebujes i nejake instrukce na nacteni/vypocet posilanych dat, navic pokud pouzivas nejakou knihovnu, tak ta vetsinou obaluje to posilani nejakyma kontrolama a zabezpecenim spravneho rezimu a ... a ... takze odeslani zabere podstatne vic nez par instrukci. A samotne posilani je taky slozitejsi vec (nastavit hodnotu, poslat pulz, ukoncit pulz, nastavit dalsi bit). to vsechno se podepisuje na skutecne prenosove rychlosti.

Na druhou stranu 20MHz/128 bity = 156 250 - kdyz tohle cislo podelis poctem taktu na poslani jednoho bitu, tak ti vyjde, kolikrat za sekundu muzes poslat cely retezec. I kdyby ta knihovna byla dost macata, tak porad to budou spis stovky ci tisece, nez desitky celych prenosu za sekundu, pro blikani LED je to snad dost :)
Uživatelský avatar
jrt
Příspěvky: 1921
Registrován: 17 úno 2013, 17:13

Re: posuvný registr 74HC595

Příspěvek od jrt »

Bylo by to identické, když bych jich zapojil dle stejného klíče víc?
Jen pozor na to, že: This code will only support up to 4 shift registers. Because of it taking in a binary number, it is limited to 32 characters.
jrt
Janek90

Re: posuvný registr 74HC595

Příspěvek od Janek90 »

Nebudu používat knihovnu, tohle bych mohl zvládnout napsat sám ;-)
Co se týče doby instrukce, nejsem si jistý, jestli u Atmelu taky není nějaká dělička jako třeba u PICku (pak by to nebylo 1/20 MHz ale třeba 1/(20 MHz/4) ). Navíc to budu používat jen na on/off jednotlivých led, takže žádné "zuřivé" blikání to nebude. ;-)
jrt píše:
Bylo by to identické, když bych jich zapojil dle stejného klíče víc?
Jen pozor na to, že: This code will only support up to 4 shift registers. Because of it taking in a binary number, it is limited to 32 characters.
Stejnak to budu posílat jednotlivě každý bit uložený do proměnné, abych věděl, zda je stav HIGH nebo LOW.

O víkendu to budu stavět, tak se pak podělím o zážitky :-)
Honza
Odpovědět