1. #1
    Futur Membre du Club
    Homme Profil pro
    Jeune Ingenieur en apprentissage
    Inscrit en
    mars 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Jeune Ingenieur en apprentissage
    Secteur : Industrie

    Informations forums :
    Inscription : mars 2017
    Messages : 4
    Points : 6
    Points
    6

    Par défaut Programmer en C pour la commande d"un mosfet avec un ATMEGA2

    Bonjour à la communauté,

    Je suis nouveau sur votre site mais aussi nouveau en programmation. Ce n'est pas mon domaine de prédilection.

    J'ai un ATMEGA auquel je suis dois commander une "batterie" de MOSFET pour faire commuter des relais.

    J'ai donc attribué :

    #define MSG PK1
    #define MSG PK2
    #define MSG PK3
    #define MSG PK4

    et cetera !


    J'ai crée une fonction void :

    void MSG(void)
    {


    }

    Mais honnêtement je sais que le code n est pas vraiment difficile, je ne connais vraiment pas grand chose.

    Merci de m'aider en m'expliquant pour plus tard.

    Cordialement

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur électricien
    Inscrit en
    septembre 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur électricien

    Informations forums :
    Inscription : septembre 2008
    Messages : 327
    Points : 931
    Points
    931

    Par défaut

    Bonsoir Bastien

    Je suppose que tu sais ce que tu fais côté hardware. Je pars du principe que c'est des MOS N actif avec la sortie à 1.

    Tout ce que je t'explique est dans le datasheet du micro, il faudra le consulter pour les détails.

    Dans les explications j'utilise les nom des registres telle que définit dans avr/io.h qu'il faut inclure en début de fichier. Il y a plusieurs ports de 8 lignes, les ports sont désigné par des lettres et les lignes par leur numéro (de 0 à 7), dans les explication la lettre de port est remplacée par un x et le numéro de ligne par un n comme dans le datasheet.

    Au début du programme, il faut d'abord mettre les E/S utilisé en sortie: DDRxn à 1: Soit avec l'instruction DDRx = 0xFF; qui affect les 8 lignes d'un port, soit avec DDRx = _BV(PINxn) | _BV(PINxn); pour une affectation pin par pin; _BV(bit) est une macro équivalente à 1<<(bit).

    Pour passer une sortie à 1, il faut mettre à un le bit correspondant dans PORTx avec l'instruction: PORTx |= _BV(PINxn);, il est possible d'agir sur plusieurs ligne du même port en alignant les _BV(PINxn) avec un "ou" | entre eux.
    Pour passer une sortie à 0, il faut mettre à zéro le bit correspondant dans PORTx avec l'instruction: PORTx &= ~(_BV(PINxn));, de même il est possible d'agir sur plusieurs ligne du même port en ajoutant les _BV(PINxn).

    Après en fonction du concept tu peux encapsuler ces lignes dans des fonctions y incluant un mappage.

    [Edit:] Es-tu sûr de la désignation ATMega2, il n'existe pas. Je t'ai répondu de manière générale pour la famille AVR 8bits qui inclut les ATTiny et ATMega.

    Bonne soirée

    Delias

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Jeune Ingenieur en apprentissage
    Inscrit en
    mars 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Jeune Ingenieur en apprentissage
    Secteur : Industrie

    Informations forums :
    Inscription : mars 2017
    Messages : 4
    Points : 6
    Points
    6

    Par défaut

    Bonsoir Delias,

    Exactement ce sont des MOS N actif avec la sortie à 1.

    Merci beaucoup pour tes explications qui m'ont éclaircit les idées.

    Je vais aller consulter pour les détails de la datasheet.

    Excuse moi, j'utilise ATMEGA2560.

    Bonne soirée et encore merci de ton aide.

    Bastien

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 23/04/2014, 16h28
  2. Votre langage de programmation serveur préféré pour le Web ?
    Par Marc Lussac dans le forum Général Conception Web
    Réponses: 82
    Dernier message: 18/02/2009, 17h50
  3. Modifier une option pour la commande split
    Par vbcasimir dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 20/07/2005, 12h24
  4. Réponses: 4
    Dernier message: 13/07/2005, 14h32

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