Problème UART AVR
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

Problème UART AVR



  1. #1
    inviteee2a87e5

    Problème UART AVR


    ------

    Bonjour,

    Je cherche à communiquer avec mon atmega 162 par la liaison série, jusqu'au moment où il m'est apparu que l'engin à deux UART. C'est parfait, c'est ce que je voulais, mais du coup, je suis perdu :s

    J'arrivais à faire ma communication avec un atmega 16 (un seul UART) et je suis reparti de mon programme en le modifiant pour prendre en compte mon deuxième uart, sans succès. Voila mon code.


    Code:
    #include <avr/io.h> 
    #include <util/delay.h> 
    #include <avr/interrupt.h>
    #include <avr/signal.h>
    
    /* Prototypes */
    void InitUART (unsigned char baudrate);
    unsigned char ReceiveByte (void);
    void TransmitByte (unsigned char data);
    
    /* Main - simple program that recieves a character then
    transmits back the next character.  An example would be if you send in an A, the chip will return a B */
    int
    main (void)
    {
      unsigned char i;
      InitUART (51);               /* Set the baudrate to 2400 bps using a 8MHz crystal */
      while (1)
        {
          //TransmitByte (ReceiveByte () + 1);        /* Echo the received character + 1.  Example send in A then send out B */
    	  TransmitByte('a');
    	  //usart_puts(&s[0]);
    	  PORTA = 0x00;
    	  PORTB = 0x00;
    	  //for(int i =0; i<50000; i++){}*/
    	  _delay_ms(1000);
    	  PORTA = 0xFF;
    	  PORTB = 0x00;
    	  _delay_ms(1000);
          //for (i = 0; i < 200; i++);
        }
    }
    
    
    /* Initialize UART */
    void
    InitUART (unsigned char baudrate)
    {
      /* Set the baud rate */
      UBRR0L = baudrate;
    
      /* Enable UART receiver and transmitter */
      UCSR0B = (1 << RXEN0) | (1 << TXEN0);
    
      /* 8 data bits, 1 stop bit */
      UCSR0C = (1 << UCSZ01) | (1 << UCSZ00);
    
    }
    
    /* Read and write functions */
    unsigned char
    ReceiveByte (void)
    {
      /* Wait for incomming data */
      while (!(UCSR0A & (1 << RXC0)));
    
      /* Return the data */
      return UDR0;
    }
    
    void
    TransmitByte (unsigned char data)
    {
      /* Wait for empty transmit buffer */
      while (!(UCSR0A & (1 << UDRE0)));
    
      /* Start transmittion */
      UDR0 = data;
    }
    C'est relativement simple, car dans la majeure partie des cas, il suffisait de rajouter un 0 à la fin, genre UDR devient UDR0 mais ca veut pas. Je n'ai rien sur mon pc alors qu'il est sencé m'envoyer un 'a' toutes les secondes...

    A force d'être le nez sur le code, je dois rater une erreur grossière d'où mon appel à l'aide.

    Merci d'avance de votre coup de main !!

    Black

    -----

  2. #2
    inviteee2a87e5

    Re : Problème UART AVR

    Après quelques tests, il semble que le problème soit au niveau du max232N que j'utilise. J'ai mis une led sur les différentes pattes et j'obtiens les résultats suivants :
    - en sortie TX de l'avr, la led clignote (donc c'est OK, mon caractère passe bien)
    - en entrée RX de l'avr, la led reste allumée (je comprend pas trop pourquoi... help !!)
    - en entrée TX du max232N, si je tape une touche à mon pc, la led clignote
    - en sortie RX de l'avr, quand je tape une touche, rien...

    Je ne sais pas si ca vous aide à m'aider Je ne comprend plus rien en tout cas.

    Merci merci d'avance !!

  3. #3
    invited5b3bb8b

    Re : Problème UART AVR

    Bonjour, j'ai regardé votre code.
    Mais je ne comprends pas pourquoi vous mettez :

    Code:
    int
    main (void)
    En fait, c'est surtout le "int" qui me dérange. Moi, j'aurais plutôt mis quelque chose du genre :

    Code:
    void main (void)
    Sinon, sur quel avr travaillez-vous ?

Discussions similaires

  1. probleme uart pic24
    Par djwolf dans le forum Électronique
    Réponses: 3
    Dernier message: 02/06/2008, 23h07
  2. Uart
    Par invitedba2660f dans le forum Électronique
    Réponses: 1
    Dernier message: 17/04/2007, 00h03
  3. problème programmation ISP AVR
    Par thomasalbert1993 dans le forum Électronique
    Réponses: 2
    Dernier message: 26/10/2006, 14h05
  4. UART avr
    Par invite2b4da655 dans le forum Électronique
    Réponses: 8
    Dernier message: 18/05/2006, 18h07
  5. carte UART
    Par invitebbe21bea dans le forum Électronique
    Réponses: 0
    Dernier message: 09/03/2005, 22h48
Découvrez nos comparatifs produits sur l'informatique et les technologies.