Programmation Atmel
Répondre à la discussion
Affichage des résultats 1 à 17 sur 17

Programmation Atmel



  1. #1
    invite659e17ac

    Programmation Atmel


    ------

    Bonjour,

    Encore un topic, mais faut bien ^^

    Le titre est clair je pense, et pourra servir plein de fois venant de ma part, sachant que je pars de zéro en programmation. (Enfin zéro.. j'ai quand même quelques notions..)

    Ma question s'adresse plutôt à des pro atmel, comme Ftorama par exemple .

    J'aimerai faire une lecture complète du port 0 de l'AT89S52, et j'ai déjà un petit bout de programme que je viens de faire, j'aimerai qu'on me dise si c'est bon, ou pas, car en pratique, ça marche pas

    Code:
    /**************************************/
    /*         Lecture du port0           */
    /**************************************/
    
    void lecture_data (void)
    {
      int lecture_data;
      lecture_data = P0;
    }
    
    
    /**************************/
    
    
    void main(void)
    {
     Config_interrupt_0();
     config_timer2();
    
     if (lecture_data==0x00)
      {
    	  while(1)
    	  {
    	  T0=0;
    	  Tempo_ms(100);
    	  T0=1;
    	  Tempo_ms(100);		
    	  }
      }
    }
    J'ai placé les bits de mon port0 à zéro, et rien ne se passe sur T0.

    Avez-vous des solutions?

    En vous remerciant =)

    -----

  2. #2
    invite29971eb1

    Re : Programmation Atmel

    Merci pour le compliment, mais je suis un pro AVR.

    Je n'ai pas touché une archi 8051 depuis 1999 c'est dire

    Je jète un oeil tout de même...un instant

  3. #3
    invite659e17ac

    Re : Programmation Atmel

    Ah c'est si vieux que ça?

    Merci Ftorama pour ton aide!!

  4. #4
    invite29971eb1

    Re : Programmation Atmel

    trop tard pour éditer.

    euh....t0, c'est la sortie de ton timer?

    Si c'est le cas, tu ne dois pas pouvoir l'accéder de cette façon, mais par le nom générique de la pin P3.4 et à condition qu'elle soit bien définie comme entrée-sortie normale, et non dédiée au timer.

    J'ai dans l'idée que t'as pas choisi le plus simple pour débuter....A quelques exceptions près (et encore), les 8051 sont largement des composants d'un autre âge

  5. A voir en vidéo sur Futura
  6. #5
    invite29971eb1

    Re : Programmation Atmel

    Citation Envoyé par Jehudiel Voir le message
    Ah c'est si vieux que ça?

    Merci Ftorama pour ton aide!!
    Si mes souvenirs sont bons, c'est une archi du début des années 80....

    Ouf Alzheimer m'épargne pour le moment
    http://fr.wikipedia.org/wiki/Intel_8051

  7. #6
    invite29971eb1

    Re : Programmation Atmel

    Je complète, déja en 99 c'était largement obsolète....Je grillais des EPROM à l'ancienne, avec effacement aux UVs et tout....

    Le système allait être remplacé, mais en attendant, je testais des algos sur cette vieillerie

  8. #7
    invite659e17ac

    Re : Programmation Atmel

    Oui, T0 est la sortie du timer, mais ça peut très bien en être une autre (j'arrive pas à régler le timer0 ou T1 pour avoir un rapport cyclique différent de 50%, ça doit pas être faisable je pense..).

    Mais effectivement, je l'ai pas déclaré comme étant le timer, donc c'est une sortie tout ce qu'il y a de plus normal.

    Maintenant j'ai essayé autre chose:

    Code:
    /**************************************/
    /*         Lecture du port0           */
    /**************************************/
    
    void lecture_CAN (void)
    {
    readcan = P0;
    }
    
    
    /**************************************/
    /**     Programme d'interruption     **/
    /**************************************/
    void detect0 (void) interrupt 0	
    {	
    	lecture_CAN ();
    }
    
    
    /***************************/
    
    void main(void)
    {
    Config_interrupt_0();
    config_timer2();
    
    if (readcan==0xFF)
     {
    	while(1)
    	{
    	T0=0;
    	Tempo_ms(1);
    	T0=1;
    	Tempo_ms(99);		
    	}
     }
    }
    Mais avec ceci, il attend même pas une interruption, et me balance directement le signal en T0...

  9. #8
    invite659e17ac

    Re : Programmation Atmel

    Arf EDIT to late..

    Donc, 1980, c'est effectivement vieux tout ça ^^ Mais bon, j'ai que lui sous la main donc je m'en contente

    Puis, avec de bonnes explications, le compliqué devient facile =)

  10. #9
    invite659e17ac

    Re : Programmation Atmel

    Bonjour,

    Petit remontage de topic (il va servir souvent celui là )

    La lecture de P0 est un succès total, pour une fois ^^

    Maintenant, là où j'ai un problème, c'est pour l'afficher sur le LCD.. En effet, mettons que mon port0 vaut 235 (en décimal). Ce que 'arrive pas à faire, c'est récupérer le 2, le 3 et le 5. Voici un petit bout de programme pour voir ^^

    EDIT: readcan est la valeur décimale de mon port0

    Code:
    char cent, diz, unit,rest;
    
    void valeur_can (void)
    {
    int rest,rest1;
    	cent = readcan / 100;
    	rest = readcan % 100;
    	diz = rest * 10;
    	rest1 = rest % 10;
            unit = rest1 * 10;
    	
    	cent = cent + 0x30;
    	diz = diz + 0x30;
    	unit = unit + 0x30;
    }
    Je pense que c'est une mauvaise utilisation du modulo, mais je sais pas trop comment il marche..

    En vous remerciant pour votre future aide =)

  11. #10
    invite29971eb1

    Re : Programmation Atmel

    [QUOTE=Jehudiel;2992159]
    Code:
    char cent, diz, unit,rest;
    
    void valeur_can (void)
    {
    int rest,rest1;
    	cent = readcan / 100;
            rest = readcan % 100;
    	diz = rest / 10;
    	unit = rest%10;
    	
    	cent = cent + 0x30;
    	diz = diz + 0x30;
    	unit = unit + 0x30;
    }
    Le modulo, c'est le reste d'une division entière, donc 35 % 10, ça donne 5, 235 % 100 ça donne 35

  12. #11
    invite659e17ac

    Re : Programmation Atmel

    ok, c'est le reste de la division quoi.

    Merci

  13. #12
    invite659e17ac

    Re : Programmation Atmel

    Bonjour à tous,

    Question simple: est ce que deux interruptions peuvent être effectués en même temps?
    Ou il y a une priorité sur l'interruption0 puis ensuite l'interruption1..

    Merci =)

  14. #13
    invite659e17ac

    Re : Programmation Atmel

    Bien le bonjour!

    Me revoici de nouveau, avec un léger problème, comme d'hab..

    Tout plein de chose ont avancé depuis la dernière fois, maintenant j'ai un bel écran LCD 4*20 qui fonctionne, avec la valeur de mon CAN qui s'affiche dessus.

    Maintenant, j'ai mis 2 CAN sur mon Atmel, l'affichage reste correct mais mon µC plante... Il arrive pas à gérer les 2 CAN en parallèle.. Ci joint un schéma du montage. Petite explication en même temps, les sorties 8 bits des 2 CAN rentre sur le même port, sinon j'ai pas assez de place :/ Les 2 CAN ne travaillent pas en même temps, je le précise au cas où ^^
    Je n'ai aucune diode à chaque sortie, vu qu'elles peuvent prendre 3 états, dont 'Z'. Est-ce une erreur de ma part? ou dois-je mettre des diodes rapide pour pas que le CAN voit ce que l'autre fait?


    Autrement pour le plantage du µC, vu que le montage est archaïque (le tout est sur une plaque d'essai, avec des fils un peu partout..), est-ce du aux parasites?

    Merci d'avance =)
    Dernière modification par Tropique ; 18/05/2010 à 15h06.

  15. #14
    Tropique

    Re : Programmation Atmel

    Bonjour,

    Merci de respecter les http://forums.futura-sciences.com/el...-sabonner.html, et de convertir l'image dans un format autre que le pdf (réservé aux documents complexes et multipages).
    Pas de complexes: je suis comme toi. Juste mieux.

  16. #15
    invite659e17ac

    Re : Programmation Atmel

    Autant pour moi :/
    Images attachées Images attachées  

  17. #16
    invite659e17ac

    Re : Programmation Atmel

    Un oubli (qui sert de up en même temps) le CAN est un AD7819

  18. #17
    bobflux

    Re : Programmation Atmel

    Hummm, sachant que atmel a une tonne d'AVR dotés de convertisseurs analogique numérique tout à fait compétents, pourquoi donc as-tu utilisé des ADC externes ?...

    > Je n'ai aucune diode à chaque sortie, vu qu'elles peuvent
    > prendre 3 états, dont 'Z'. Est-ce une erreur de ma part?

    Je n'ai passé que 30 secondes sur la datasheet, mais elle dit :

    /RD Read Pin. This is a logic input. When /CS is low and /RD goes low, the DB7–DB0 leave their high impedance state and data is driven onto the data bus.

    Donc OK pas de problème, tant que tu n'actives pas les 2 drivers des 2 ADC en même temps sur le bus, un seul parle à la fois.

    Avant tout je t'invite à vérifier soigneusement dans ton code que tu n'actives pas simultanément les deux. En effet si l'un sort 0x00 et l'autre 0xFF par exemple, et qu'ils sont activés en même temps (CS=0 et RD=0) tu as un court circuit et si ton alimentation est bien protégée (par exemple tu utilises un petit LDO), aucun circuit ne fume, mais l'alim chute et le uC plante.

Discussions similaires

  1. Programmation avec microcontroleur atmel en C
    Par inviteeab0141b dans le forum Électronique
    Réponses: 8
    Dernier message: 08/06/2009, 13h37
  2. Programmation ATMEL 8535
    Par invite199eaed0 dans le forum TPE / TIPE et autres travaux
    Réponses: 1
    Dernier message: 10/07/2008, 10h03
  3. Programmation Atmel Mac
    Par invite4277dea9 dans le forum Électronique
    Réponses: 0
    Dernier message: 08/06/2008, 13h04
  4. samples Atmel
    Par invite178930ab dans le forum Électronique
    Réponses: 4
    Dernier message: 04/07/2005, 11h49
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...