You are here

Shift regiszter CD4094 es PIC mikrokontroller

9 posts / 0 new
Last post
Lengyel Aron
Lengyel Aron picture

Sziasztok ,

Adott      egy    Léptető regiszter sorosról páruhamora alakít  az IC tipusa :  CD4094 . A feladatban szeretném PIC mikrokontrollerel vezérelni , a PIC tipusa PIC24FJ128GA204 . A fejlesző rendszer amivel dolgozom ,  az mikroC for dsPIC  a www.mikroe.com cégtől . 

A gondom   a CD4094 leptető regiszerrel ,hogy a STROBE bemenet hatására , nem tárolódik az IC (CD4094)  a kimenenti regiszterében a megfelelő nyolc bites adat . (Csatoltam ezen poszthoz adatlapot is  a CD4094.pdf a léptető regiszter IC adatlapja). Tehát a STROBE majd , OUTPUT ENABLE hatására nem jelenik meg semmilyen adat amit rá küldtem a regiszerre. 

Néztem az adatlapját a működési idődiagramját és azt láttam ,hogy a STROBE  , akkor kellene magas szinten lennie amikor az utolsó óra jel éppen lefutó éle zajlik le. Pontosan ez neheziti meg a programozást a CLOCK és STROBE egymáshoz viszonyitott impulzus élhelyzete .    -------  És erre szeretnék szegítséget kérni amelyet

nagyon szépen köszönöm ! ------

Kerestem a Google-n példákat erre ,amit találtam ,sajnos nem müködnek .  Az IC    jó    ,    és nincsen elkőtve az IC vezérlése nevezetesen : a CLK , DATA ,STROBE és OUTPUT ENABLE leptető regiszter  kivezetések . A mikrokontroller portjait teszteltem ezeken a pontokon és rendben találtam őket. Tehát a mikrokontroller PORT config is rendben van. 

Az a tiszteletbeli kérédsem , hogy segítséget szeretnék kérni ezen feladat megoldásában , hogyan lehet  egyetlen CD4094 léptető regisztert vezérelni PIC mikrokontrollerrel ,  esetleg működő minta forráskód ezzel kapcsolatosan . . 

Előre is köszönöm a segítséget Mindenkinek !

Üdv: Lengyel Jozsef

 

File attachment: 
Comments
PElek
PElek picture

Data     alacsony szinten tartod
Clk       alacsony szinten tartod
Strobe  alacsony szinten tartod
Enable  magas szinten.

Adatot mindig úgy tudsz küldeni, hogy az első adat a 8. bit, a második adat a 7.bit....stb
Ha beakarod kapcsolni a Q7 azaz 8.bitet, akkor a PIC-nek azt a lábát ami az adatra megy magas szintre állítod, és a PIC nek azt a lábát ami a Clk-ra megy küldesz egy magas / alacsony szintet, azaz ki/be kapcsolod. Ha be akarod kapcsolni a Q6 7. bitet, az adatot magasban hagyod és küldesz még egy be/ki jelet a Clk lábra.
Ha ezek után a maradék 6 bitet nem akarod bekapcsolni, csak a Clk lábon küldesz még 6x Be/ki jelet, majd amikor ezt az adatsort kiakarod tenni az IC kimenetére a Strobe lábra is küldesz a PIC-ről egy Be/ki jelet.

Néztem az adatlapját a működési idődiagramját és azt láttam ,hogy a STROBE  , akkor kellene magas szinten lennie amikor az utolsó óra jel éppen lefutó éle zajlik le. Pontosan ez neheziti meg a programozást a CLOCK és STROBE egymáshoz viszonyitott impulzus élhelyzete .    -------  És erre szeretnék szegítséget kérni amelyet

Nincs sem ferkvencia, sem semmilyen kötött órajelviszony, kivétel, hogy minden órajelek nem érhet egymásba, // egyszerűen fogalmazva... 
Akár félórás szünetekkel is küldhetsz adatot, vagy akár másnap is kiirhatod az adatmintát az IC kimenetekre.

Shift.reg programozása PIC-ben semmilyen problémába nem ütközhet, csak 3db kimenetet kell H/L szintre állítani, tetszőleges időben.

Shiftreg minta

 

1

Lengyel Aron
Lengyel Aron picture

Szia   PElek ,

Nagyon Szépen Köszönöm a Segítséget ! 

Ellenörzőm a forráskódót ,elsőköreben és  feltöltőm a PIC-re a programot utána és tesztelem.. 

Ilyen fajta shift regiszterekre emlékszem  ,hogy az Urbán Elektronikának volt egy SIEMENS SAB80C535 mikrokontroller alapú fejlesztő eszköze és abban volt három darab CD4094 . 

Még egyser nagyon szépen kösönöm a segyítséget  !

Üdv : Lengyel Jozsef

0

kovacsna
kovacsna picture
*

Szia!

Használtam ezt a tokot, csak én 7szegmenses kijelzőhöz
Kb abba szaladtál bele, amibe én is. Az idődiagrammot könnyű félre nézni.
Szóval...
Az output enable lábat fixen tedd magas szintre. Az a komplett kimenetet teszi HI Z állapotba, ha low az állapota. Neked erre nincs szükség most. Ez pl hét szegmenses kijelzőnél jön jól, ha villogtatni szeretnél egy digitet.
Az adatot az órajel felfutó élére kapuzza be a belső tárolójába. Viszont ez, akkor kerül a kimenetre ha a strobe-on van egy felfutó él.
Ameddig a STR low szinten van, a kineneten nincs változás, DE attól függetlenül az adatot beolvassa, ha van órajel.
Szóval az utolsó bit után az órajel következő felfutó éle előtt az str lábat fel kell húzni, mert akkor kerül át az adat a kimenetre. Majd vissza le kell húzni. Egyébként célszerű az utolsó bit után az órajelet leállitani.

Ameddig az str low szinten van, nem lesz változás a kimeneten.
Így elérhető, hogy adatot cserélsz a regiszerben, anélkül, hogy a kimenetei változnának.

A minimális jelszélességek, stb a manuálban benne vannak.
Arra figyelej, ha tolod ki az adatot, akkor az LSB bit megy ki előbb.
Pl:
11000101 :
Q1=1
Q2=1
Q3=0
.
.
Q7=0
Q8=1

Pl:

https://forum.arduino.cc/t/serial-shift-register-c-code/504748

KN

 

3

Lengyel Aron
Lengyel Aron picture

Szia kovacnsa , 

Nagyon Szépen Köszönöm a Segítséget !

Több adatlapot is letöltöttem a CD4094 IC-ről és ami részletesebbnek bizonyult az a Texas Instruments féle "old datasheet" . Van más gyártoknak is "Csak picit olyan mintha el nagyolt lenne" . 

Köszönöm szépen a magyarázatot amit írtál ,és igen könnyü elnézni a működési idődiagramot.

Amit a forumtársunknak is írtam  ,hogy ellenörzőm a forráskódot és feltöltöm a PIC-re . 

Ezzel a shift regiszterrel még nem dolgoztam ,de most legalább van lehetőség ,hogy figyeljem ennek a működését mert a munkámban szerepel ez a bizonyos shift regiszter.

Még egyszer Nagyon Szépen Köszönöm a Segítséget  !

Üdv : Lengyel Jozsef

 

0

Jaca
Jaca picture
*****

Szia!
https://www.circuitvalley.com/2011/12/two-wire-serial-lcd-16x2-graphics....
A legjobb példák a kijelzőmeghajtásoknál vannak, én is építettem ilyen áramkört, mert nem akartam annyi kimenetet használni a PIC-en. 
https://www.google.com/search?sca_esv=7a5549a4be5b5208&sxsrf=AHTn8zp-MMz...

Egy videó, talán érthető:
https://youtu.be/7RWaDvTeG7Y?t=177
 

0

Lengyel Aron
Lengyel Aron picture

Szia  Jaca ,

Köszönöm Szépen a segítséget !

Az utolsó videó amit csatoltál azt próbáltam ,sajnos az nem működik .... 

Amivel fejlesztek az mikroC for dsPIC  ez "C" nyelv  a package amit csatoltál az viszont pascal nyelv-re való ,sajnos a pascal nyelvet nem ismerem....

Nagyon szépen köszönöm  segítséget még egyszer !

Üdv : Lengyel Jozsef 

0

Jaca
Jaca picture
*****

Szia!

https://youtu.be/qkqTSReO-Ys?t=127
Gyakran futottam bele abba, hogy amit leprogramoztam, az nem ugyanúgy jelent meg a kimeneteken. Ilyenkor egy logikai analizátort rá szoktam kötni, ami nagyon jól meg tudja mutatni a hibákat. 
A másik módszerem, hogy nagyon primitíven írom meg a programot, amivel ki akarom próbálni.
OE=1
DATA=1
CLK=1
CLK=0

DATA=1
CLK=1
CLK=0

DATA=0
CLK=1
CLK=0
.
.
.
DATA=1
CLK=1
CLK=0
majd a nyolcadik után
STB=1
STB=0

Az is benne van, hogy túl gyors a PIC a CMOS IC-nek, és a CLK=1 után kell késleltetés, 500usec.

Keress az "arduino CD4094 example" szavakra, ezek szintén C nyelvben íródnak, ha az neked könnyebb, nekem a BSF PORTC,1 formátum jön be. :)

0

tvdoktor
tvdoktor picture

Hello

Esetleg próbálj egy másik soros to párhuzamos IC-vel,vagy a programba a kijelző/IC nem ok.

0

Sponsored links