Pages: [1] 2   Go Down
Author Topic: 74HC595 & reboot  (Read 2305 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 1
Posts: 144
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour a tous,
J'ai pas mal avancé sur ce registre de décalage, cependant je rencontre un problème.
Lors de la mise en tension de l'arduino tous les pins des différents registre sont "passant" une fraction de seconde.
Une fois le setup atteint je fais un init des différentes états des pins du registre est c'est ensuite ok je reprend la main.

Le problème est bien lors de la mise en route de l'arduino.

Avez vous une astuce ?

merci


(j'ai pensé utiliser un pin de l'arduino qui servirait a "ouvrir" un NPN une fois le setup lancé permettant ainsi de contrôler l'alimentation des registres).
Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 144
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


j'ai trouvé un post qui semble avoir eu la même idée que moi :

Quote
The OE-Pin of the 74HC595 is pulled up via a 4.7k resistor to prevent output while switching on and booting.

cela semble la solution mais mon savoir en électronique me dit de ne pas tester cela seul !!!

si vous avez un schéma avant que je ne grille un truc smiley-wink
Logged

Offline Offline
Full Member
***
Karma: 3
Posts: 140
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

vas-y, tu ne risques rien
Jacques
Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 144
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

super ça marche ! je dois avouer avoir un peu flipper quand même... mais j'ai regardé le datasheet et effectivement la broche OE peut etre en LOW ou HIGH donc pas de soucis !!
 je vais finir par me familiariser petit à petit à toute cette électricité smiley-wink

donc voila, pour la pérennité :

pour éviter que le 74HC595 lors d'un reset ou démarage de l'arduino n'active toutes voir aléatoirement ses sorties il convient de mettre la broche OE en pull-up et non au gnd comme indiqué ici et là sur internet.

Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Un grand merci pour la diffusion de la résolution, je me posais la question depuis un moment aussi smiley
Logged

France
Offline Offline
Faraday Member
**
Karma: 36
Posts: 3435
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
pour éviter que le 74HC595 lors d'un reset ou démarage de l'arduino n'active toutes voir aléatoirement ses sorties il convient de mettre la broche OE en pull-up et non au gnd comme indiqué ici et là sur internet.
La broche OE tirée au plus ne fait que mettre les sorties en haute impédance. Donc les lignes derrières ne sont plus polarisées. Si ce sont des LEDs c'est sans effet puisque cela les éteints. Par contre si des circuits logiques sont connectés sur ces sorties alors là on ne maitrise plus rien.
Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 144
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
pour éviter que le 74HC595 lors d'un reset ou démarage de l'arduino n'active toutes voir aléatoirement ses sorties il convient de mettre la broche OE en pull-up et non au gnd comme indiqué ici et là sur internet.
La broche OE tirée au plus ne fait que mettre les sorties en haute impédance. Donc les lignes derrières ne sont plus polarisées. Si ce sont des LEDs c'est sans effet puisque cela les éteints. Par contre si des circuits logiques sont connectés sur ces sorties alors là on ne maitrise plus rien.

tu me rassures pas là du coup !

quel est ton conseil ? une solution alors ?
Logged

France S-O
Offline Offline
Edison Member
*
Karma: 41
Posts: 2180
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Généralement on agit de préférence sur la broche "Reset" (ou RAZ = Remise A Zéro en français).
En fonctionnement normal "Reset" doit être à l'état  "Haut".
Pour provoquer une remise à zéro des sorties pendant la phase de mise en route il faut momentanément mettre la broche "Reset" à l'état bas.

C'est faisable en câblant un réseau RC sur la broche reset :

             Capa = 100 nF             R= 10K ohms
GND <----------||-----------|--------/\/\/\----------->Vcc
                                        |     
                                  Reset

Si le temps de RAZ n'est pas suffisant essaye avec 100k

A la mise sous tension le condensateur n'est pas chargé il impose une tension nulle.
Le condensateur se charge jusqu'à atteindre 5V.
En général un circuit HCMOS bascule pour Vcc/2 soit ici 2,5V. Quand la tension aux bornes du condensateur dépassera 2,5V le registre à décalage sera "libéré".
Avec la constante de temps RC = 10k*100nF = 1ms le basculement devrait se produire à 0,3*RC = 300µs

Ucondensateur = Vcc*(1 - exponentielle(-t/RC) )
Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 144
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

aie cela commence mal je trouve pas de pin reset sur ce composant.

la seule solution que je trouve ici est la sur internet serais en gros de faire ce que je disais : controler le pin OE ou MR via l'arduino... smiley-sad
Logged

France S-O
Offline Offline
Edison Member
*
Karma: 41
Posts: 2180
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

D'accord c'est pas marqué exactement "reset" mais c'est bien présent dans les spécifications techniques:
entrée marquée  SRCLR  qui aboutit sur une entrée interne marquée R  (comme Reset)

et dans la table de vérité on lit  :

SRCLR = Low -> Shift register is cleared


* reset.png (37.47 KB, 841x288 - viewed 27 times.)

* reset2.png (37.35 KB, 769x492 - viewed 29 times.)
Logged

0
Offline Offline
God Member
*****
Karma: 2
Posts: 802
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

J'ai un peu de mal à comprendre le problème puisque je n'ai à mon souvenir jamais rencontré ce problème, aussi bien avec des 74HC ou des TPIC.

J'observe donc ce sujet dubitatif.

Lors de la mise hors tension, les registres sont réinitialisés de facto, me semble-t'il...

J'aimerais aussi savoir si chaque CI possède un condo de 100nF au plus proche, reliant la tension et la masse.

Bref!
Je vais reprendre ma platine et vérifier toussa.

Zoroastre.
Logged

Veuillez indiquer [RESOLU] dans l'entête du titre en éditant votre premier message smiley-wink

France
Offline Offline
Faraday Member
**
Karma: 36
Posts: 3435
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@zoroastre
Dans la famille 74xx il n'y a pas de reset automatique à la mise sous tension sur les circuits contenant des registres.

@ fred133084
Dans la cas particulier de 595 si tu analyses la datasheet, il est expliqué que:
 - la broche MR (master reset) met à zéro le registre à décalage lorsqu'on la met à zéro
 - la broche OE (Output Enable) active les sortie lorsqu'on la met à zéro
 - pour transférer l'état du registre à décalage vers les sortie, il faut appliquer un front montant sur STCP

Donc en toute rigueur pour mettre toutes les sorties à zéro il faut mettre:
 - MR à zéro
 - OE à zéro
 - faire un front montant sur STCP

Ensuite pour piloter le registre il faut mettre MR à un.

Maintenant est-ce que la perte de contrôle des sorties pendant quelques dizaines de millisecondes est-il un réel problème?
« Last Edit: March 11, 2013, 03:08:55 pm by fdufnews » Logged

France S-O
Offline Offline
Edison Member
*
Karma: 41
Posts: 2180
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@fred133084
Pour éviter toute confusion je précise que la broche MR dont te parles fdufnews n'est rien d'autre que la broche SRCLR dont je t'ai parlé.

Malheureusement le nom change selon le fournisseur :
NXP     -> MR        (Master Reset)
Texas  -> SRCLR    (Shift Register Clear)

C'est idiot mais il faut faire avec.
Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 144
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

en fait le probleme est lors de la mise sous tension de l'arduino. et non lors de la manipulation des registres une fois l'arduino "en service".

durant le laps de temps que l'ardiuno "boot" les différentes sorties des registres sont actifs ou pas.

et nous n'avons de ce fait aucune maitrise sur aucun pin. puisque l'arduino n'est pas encore démarré, mais en cours de démarrage.

oui bien entendu c'est génant, dans mon cas les registres pilotes mes volets roulants. en l'état actuel en cas de coupure de courant ils se mettent donc tous a se fermer, s'ouvrir, bref a faire n'importe quoi.

je regarde cette histoire de MR alors !
Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 144
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bon il y a du mieux.

une fois sur 5 (en gros) lors du reboot de l'arduino seul maintenant le premier registre réagit le temps du démarrage de l'arduino.
je suis par contre en 1µF

j'augmente du coup ?
Logged

Pages: [1] 2   Go Up
Jump to: