Preload av skiftregister

Planering och tankar kring eventuella framtida projekt.
Användarvisningsbild
ToB
Inlägg: 678
Blev medlem: 22 februari 2004, 10:32:58
Skype: tobias_bjork
Ort: Sollentuna

Preload av skiftregister

Inlägg av ToB »

Jag ska använda ett skiftregister (595) som ringräknare men hur sjutton sätter man den i startläge, d.v.s hur får man in en etta och resten nollor?

Jag tar också gärna emot tips på klocka, Någonstans från 100 Hz och uppåt, inte noga alls. Vad är enklast, 555:a?
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Inlägg av Micke_s »

Sätter in en 74HC74 kanske där set går låg vid uppstart.
Går enkelt att fixa med en kondensator och en resistor mot vcc.
Se till att klockningen också styrs av samma kondensator.
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Har den något garanterat läge vid power-on ? T.ex "bara nollor"?
I så fall räcker det med att klocka en *en* etta.
Annars måste du klocka genom hela "ringen" med känd
indata.
Användarvisningsbild
ToB
Inlägg: 678
Blev medlem: 22 februari 2004, 10:32:58
Skype: tobias_bjork
Ort: Sollentuna

Inlägg av ToB »

Jag tror inte att registren har något givet värde. Jag har inte läst så noga i databladet men det verkade inte så när jag testade lite igår.
Det som däremot finns är reset, d.v.s alla nollor, men det blir ändå en liten procedur på några steg för att 'ladda' den.
Användarvisningsbild
bengt-re
EF Sponsor
Inlägg: 4829
Blev medlem: 4 april 2005, 16:18:59
Skype: bengt-re
Ort: Söder om söder
Kontakt:

Inlägg av bengt-re »

Många skiftregister har en parallel load. Kolla på 74395 - dock så går det åt dubbelt så många kretsar eftersom pinnarna inte räcker annars.

Kör man med 395án (eller annan Parallel in/serial in/
parallel out) skiftregister så lägger man isf hårt parallel ingångarna till önskad startstate och RC-klockar in en parallel load.

7495,7496, 74194, 74195, 74299 och som sagt 74395 har alla möjligheterna att göra det du vill fast på lite olika sätt.
Användarvisningsbild
ToB
Inlägg: 678
Blev medlem: 22 februari 2004, 10:32:58
Skype: tobias_bjork
Ort: Sollentuna

Inlägg av ToB »

Konstigt att jag inte tänkte på det själv, att det finns skiftregister med parallell-load.

74299 verkade ju bra, både 8 bitar parallell in *och* ut.
595:an har ju dock latchar på utgångarna, något jag behöver, men det går ju att lösa med en separat krets (74273).

Det jag inte riktigt kan lista ut är hur jag ska bära mig åt med "förladdningsdelen".
Eftersom både parallella in- och utgången är på samma pinnar så måste "förladdningskretsen" kopplas bort då den gjort sitt för att inte påverka utgångarna. Eller?!
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Jag vet inte, men det verkar som om det enklaste snart är att
någon slänger ihop ett litet prog till en AVR eller PIC som fixar detta.
Du vill ha en 8-bitars ringräknare med en "1" som rullar runt, eller hur ?
Hur snabbt ?
Användarvisningsbild
anlamotte
Inlägg: 859
Blev medlem: 5 augusti 2003, 15:54:34
Ort: Stockholm
Kontakt:

Inlägg av anlamotte »

Har man väl lärt sig att programmera uC's lite lagom så blir man lätt bortskämd. Många saker går ju att lösa väldigt enkelt på det viset istället för en handfull logikkretsar.

:lol:
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Inlägg av Micke_s »

Exempel på AVR kod för rinnande ljus.

Kod: Markera allt

#include <io.h>
#include <util/delay.h>
#include <stdint.h>


int main(void){
   uint8_t i=0;
   DDRB = 0xFF; /* all out */

   for(;;){
      PORTB = 1<<i;
      i++;
      if(i>=8)i=0;

      /* some delay */
      _delay_ms(250);
      _delay_ms(250);
      _delay_ms(250);
      _delay_ms(250);
   }
}
Edit: ska vara = och inte != (lite förkyld och förvirrad idag).
Senast redigerad av Micke_s 24 augusti 2007, 19:42:02, redigerad totalt 1 gång.
syltkaka
Inlägg: 188
Blev medlem: 9 december 2006, 18:55:09
Ort: Göteborg

Inlägg av syltkaka »

Känner mig lite petig men det bör inte vara någon "|=' vid PORTB. Så småningom kommer ju alla pinnar vara höga hela tiden. Ett vanligt '=' ska det vara.
Användarvisningsbild
ToB
Inlägg: 678
Blev medlem: 22 februari 2004, 10:32:58
Skype: tobias_bjork
Ort: Sollentuna

Inlägg av ToB »

Jojo, att lösa det med en uC blir ju väldigt lätt, nästan för lätt.
Den här apparaten ska bara utföra en uppgift, om och om igen och alltid på samma sätt och då känns det lite overkill med en uC.

Det är lite roligare att försöka få ihop det med "dumma" komponenter.
Det blir lite mer pussel.

Men det är klart, det kan ju vara intressant att bli klar också :)
Användarvisningsbild
anlamotte
Inlägg: 859
Blev medlem: 5 augusti 2003, 15:54:34
Ort: Stockholm
Kontakt:

Inlägg av anlamotte »

Om du bara är ute efter funktionen med en etta som rullar runt skulle väl en dekadräknare (johnson) vara perfekt.. t.ex 4017
Senast redigerad av anlamotte 24 augusti 2007, 18:02:02, redigerad totalt 1 gång.
rehnmaak
Inlägg: 2204
Blev medlem: 13 december 2005, 01:43:41

Inlägg av rehnmaak »

Kör en logisk NOR på utgång 1-7 och dra utgången till DS. Så länge det finns en etta på någon av utgång 1-7 så är DS "0" annars "1".
Användarvisningsbild
ToB
Inlägg: 678
Blev medlem: 22 februari 2004, 10:32:58
Skype: tobias_bjork
Ort: Sollentuna

Inlägg av ToB »

anlamotte skrev:Om du bara är ute efter funktionen med en etta som rullar runt skulle väl en dekadräknare (johnson) vara perfekt.. t.ex 4017
Räknar inte en Johnson-räknare:
0000
0001
0011
0111
1111
1110
1100
1000
?

Idén att det kan finnas andra sätt att generera en "rullande" etta är bra. Jag kanske har snöat in mig på fel spår.
En binär-räknare och en dekoder är ett annat alternativ.

EDIT: Jag hade fel, 4017 är en johnson-räknare och sekvensen är precis som jag vill ha.
Jag såg att ämnet har behandlats tidigare

Perfekt, tack för hjälpen.... tills vidare :wink:
Skriv svar