IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Accès direct aux entrées / sorties


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut Accès direct aux entrées / sorties
    bonjour

    Avec Arduino, pour gagner du temps d'exécution il est possible de faire des accès directs sur les entrées et les sorties des 3 ports disponibles :
    https://www.arduino.cc/en/Reference/PortManipulation

    La question que me pose est de savoir s'il existe un registre qui permet d'accéder en lecture ou en écriture aux trois ports en même temps. C'est à dire au lieu de manipuler 3 ports (PORTB, PORTC, PORTD) de 8 bits, manipuler un registre de 24 bits (3x8) qui correspond aux 24 E/S disponibles.


    Le but est d'avoir une carte avec 24 E/S dont les états sont synchrones. Dans la datasheet de l' ATMega 328p je n'ai pas trouvé un tel registre, mais j'aimerais avoir une confirmation.

  2. #2
    Membre expérimenté Avatar de cedd70
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Mars 2012
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 154
    Par défaut
    Salut,

    j'ai jamais travaillé sur Atemega mais en lisant la doc je pense que tu peux en jouant avec clkI/O.

    Tu charges t'es registres et tu déclenche la clock, mais j'arrive pas à trouver si tu peux contrôler cette clock.

    Si déjà ça peut t'aider

    Je ne pense pas que tu puisses synchroniser autrement différents pins de plusieurs registre sur µC 8 bits

  3. #3
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 252
    Par défaut
    Salut,
    Je n'ai rien vu de tel dans la doc du ATMEGA328P (ce n'est pas possible non plus avec d'autres micro que je connais). Chez Microchip, tu as un registre LATCH mais il permet de "latcher" 8 bits E/S en même temps mais pas au delà.

    En s'inspirant de ce que propose cedd70 :
    Ce que tu souhaites faire doit être est possible mais avec de l'électronique a côté du micro, par exemple avec des 74HC573 http://assets.nexperia.com/documents...4HC_HCT573.pdf

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur électricien
    Inscrit en
    Septembre 2008
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur électricien

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 282
    Par défaut
    Bonsoir Auteur

    C'est un micro 8bits! Donc pas d'écriture simultanée de plus de 8bits, il y a quelques exceptions avec un registre temporaire pour les timers 16bits et c'est tous.
    J'ai commencé un peu le code en C pour cette famille, et généralement en écrivant les 3 à la suite (affectation directe, sans calcul), le Delta T c'est un coup d'horloge. Le compilateur charge jusqu'à 4 valeurs distinctes dans les registres puis fait les sorties à la suite sur les E/S.

    Reste une autre possibilité, mais qui tient du bricolage, c'est l'utilisation du bit PUD du registre MCUCR.
    Ce bit unique permet de désactiver l'ensemble des pull-up. Donc pour passer de 0 à une valeur quelconques des 24 sorties ou l'inverse, et pour autant que le circuit en face arrive à travailler avec les sorties de l'AVR configurées en entrée (0 = tri-state, 1 = Pull-up activé).

    Bonne soirée

    Delias

  5. #5
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    c'est bien ce qu'il me semblait

    Dans la datasheet au niveau du diagramme on voit un bloc "I/O port" pour les 3 ports B, C et D ce qui me laissait penser qu'un registre pouvait contrôler les 3 éléments.

    Citation Envoyé par Vincent Petit
    ce que tu souhaites faire doit être est possible mais avec de l'électronique a côté du micro, par exemple avec des 74HC573
    c'est ce qu j'ai fait avec des 74LS541 : toutes les voies sur les entrées et une voie "trigger" sur les broches E1 et E2 du composant. Mais je vois que 573 est plus pratique que le 541

  6. #6
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Un petit shield avec des composants traversants. Je tâcherai de poster un code pour le piloter.

    Je n'ai pas connecté D0 et D1 car ils sont utilisés pour la liaison série chez le UNO, le but étant d'envoyer sur le port série une commande pour activer telle ou telle sortie.
    Images attachées Images attachées  

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Enlever accès direct aux pages avec struts
    Par Verboz dans le forum Struts 1
    Réponses: 7
    Dernier message: 09/05/2007, 15h29
  2. Gérer l'acces direct aux tables suivant les utilisateurs
    Par kristof33 dans le forum Sécurité
    Réponses: 2
    Dernier message: 02/03/2007, 08h11
  3. Interdire l'acces directe aux fichiers php
    Par Never dans le forum Apache
    Réponses: 4
    Dernier message: 04/12/2006, 21h00
  4. htaccess : interdire l'accès direct aux fichiers php
    Par Cédricss dans le forum Apache
    Réponses: 5
    Dernier message: 08/10/2006, 11h29
  5. [TOMCAT] Comment empêcher l'accès direct aux fichiers
    Par thomine dans le forum Tomcat et TomEE
    Réponses: 17
    Dernier message: 14/04/2005, 10h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo