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
posuvný registr 74HC595
Re: posuvný registr 74HC595
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á.
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
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
Honza
Re: posuvný registr 74HC595
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.
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
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
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
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
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
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.Bylo by to identické, když bych jich zapojil dle stejného klíče víc?
jrt
Re: posuvný registr 74HC595
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.
O víkendu to budu stavět, tak se pak podělím o zážitky
Honza
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.
Stejnak to budu posílat jednotlivě každý bit uložený do proměnné, abych věděl, zda je stav HIGH nebo LOW.jrt píše: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.Bylo by to identické, když bych jich zapojil dle stejného klíče víc?
O víkendu to budu stavět, tak se pak podělím o zážitky
Honza