Stránka 1 z 1

posuvný registr 74HC595

Napsal: 18 lis 2015, 17:19
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

Re: posuvný registr 74HC595

Napsal: 18 lis 2015, 19:23
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á.

Re: posuvný registr 74HC595

Napsal: 18 lis 2015, 20:07
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

Re: posuvný registr 74HC595

Napsal: 18 lis 2015, 21:42
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.

Re: posuvný registr 74HC595

Napsal: 18 lis 2015, 22:16
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

Re: posuvný registr 74HC595

Napsal: 19 lis 2015, 22:36
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 :)

Re: posuvný registr 74HC595

Napsal: 19 lis 2015, 22:46
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.

Re: posuvný registr 74HC595

Napsal: 20 lis 2015, 13:44
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