Communication série sur ATMEL 89S2051
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Communication série sur ATMEL 89S2051



  1. #1
    Tony78

    Red face Communication série sur ATMEL 89S2051


    ------

    Bonjour à tous,
    J'aimerais apprendre à manipuler l'interface série du microcontrôleur AT89S2051 pour faire communiquer mes montages avec mon PC.

    Dans un premier temps, j'aimerais simplement envoyer une donnée à mon microcontrôleur par le biais du PC, puis renvoyer cette donnée vers le PC...à partir du microcontrôleur (concept de l'echo ) avec les paramètres suivants : Mode 1, 9600bds(avec générateur interne), pas de parité, 1 bit d'arrêt.

    Sauriez-vous comment faire ?

    J'ai cherché dans la doc du microcontrôleur, il y a des infos, dont certaines nous renvoient sur un document "UART programming examples". J'ai tenté de compiler un exemple (en C) à partir duquel je pourrais partir, mais certains registres ne sont pas définis, et introuvables dans la doc du micro...

    Code:
    /**
    * @file $RCSfile: uart_int_brg.c,v $
    * Copyright (c) 2004 Atmel.
    * Please read file license.txt for copyright notice.
    * @brief This file is an example to use uart with internal baud rate
    * generator.
    * UART will echo a received data.
    * This file can be parsed by Doxygen for automatic documentation
    * generation.
    * Put here the functional description of this file within the software
    * architecture of your program.
    * @version $Revision: 1.0 $ $Name: $
    */
    /* @section I N C L U D E S */
    #include <AT892051.H>
    
    
    char uart_data;
    /**
    * FUNCTION_PURPOSE: This file set up uart in mode 1 (8 bits uart) with
    * internal baud rate generator.
    * FUNCTION_INPUTS: void
    * FUNCTION_OUTPUTS: void
    */
    void main (void)
    {
    	CKCON0 = 0x7F;
    	SCON = 0x54; /* uart in mode 1 (8 bit), REN=1 */
    	BDRCON &=0xEE; /* BRR=0; SRC=0; */
    	BDRCON |=0x0E; /* TBCK=1;RBCK=1; SPD=1 */
    	BRL=0xFD; /* 9600 Bds at 11.059MHz */
    	ES = 1; /* Enable serial interrupt*/
    	EA = 1; /* Enable global interrupt */
    	BDRCON |=0x10; /* Baud rate generator run*/
    	while(1); /* endless */
    }
    /**
    * FUNCTION_PURPOSE: serial interrupt, echo received data.
    * FUNCTION_INPUTS: P3.0(RXD) serial input
    * FUNCTION_OUTPUTS: P3.1(TXD) serial output
    */
    void serial_IT(void) interrupt 4
    {
    	if (RI == 1)
    	{ /* if reception occur */
    		RI = 0; /* clear reception flag for next reception */
    		uart_data = SBUF; /* Read receive data */
    		SBUF = uart_data; /* Send back same data on uart*/
    	}
    	else TI = 0; /* if emission occur */
    	/* clear emission flag for next emission*/
    }
    Et voici les erreurs que j'obtiens :
    Build target 'Target 1'
    compiling serie.c...
    SERIE.C(27): error C202: 'CKCON0': undefined identifier
    SERIE.C(29): error C202: 'BDRCON': undefined identifier
    SERIE.C(30): error C202: 'BDRCON': undefined identifier
    SERIE.C(31): error C202: 'BRL': undefined identifier
    SERIE.C(34): error C202: 'BDRCON': undefined identifier
    Target not created

    Je pense que le code a été fait pour un autre microcontrôleur. Ces registres ont-ils leurs équivalents sur le 89C2051 ?

    Merci,

    Tony

    -----

  2. #2
    Tony78

    Re : Communication série sur ATMEL 89S2051

    Bonjour,
    Hum...et sinon en plus simple, un petit programme qui m'enverrait un caractère du µC vers le PC toutes les deux secondes...quelqu'un saurait ?
    (Je n'y arrive vraiment pas tout seul ...)
    Merci,

    Tony

  3. #3
    Tony78

    Re : Communication série sur ATMEL 89S2051

    Personne ne sait ?

  4. #4
    invite7990ec44

    Re : Communication série sur ATMEL 89S2051

    il semble que les registres ne sont pas déclarer ou n'appartienne pas à de type de microcontroleur...
    il faut que tu charge la datasheet de ton microcontroleur...
    ca serait un uc de la serie 80C51.. je pourrait t'aider, mais la...

    pourquoi ne pas effectuer cette partie en assembleur.. tu comprendrais peut etre mieux...

    regarde la datasheet, la partie UART... les registres "SFR" pour essayer de comprendre le programme.

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

    Re : Communication série sur ATMEL 89S2051

    Après une lecture (fastidieuse) des datasheet du micro, de la famille 8051, et de l'utilisation du port série sur micro (oui, tout ca ^^), j'en ai déduit que mon micro n'a pas de générateur interne de bauds (Internal baudrate generator...ça passe mieux en anglais :P).
    J'ai essayé d'implanter un code tout fait, où le port série utilise le timer 1, mais...rien ne se passe au niveau du micro...c'est peut être ma carte qui fonctionne mal...

  7. #6
    inviteeb02b17a

    Re : Communication série sur ATMEL 89S2051

    Ca fonctionne toujours pas?
    J'espére qu'il y a un MAX232 (ou tout autre composent qui transforme les niveau 5V/RS232) entre ton AT89S2051 et ton PC!
    Le AT89S2051 est un micro 100% compatible avec tout autres 8051!!

    A tu un exemple de code (préférence asm) et le circuit utiliser?

Discussions similaires

  1. Communication PIC <-> PC port série
    Par Toufinet dans le forum Électronique
    Réponses: 7
    Dernier message: 27/05/2010, 15h13
  2. communication PC port serie freewre
    Par alainav1 dans le forum Électronique
    Réponses: 9
    Dernier message: 05/11/2007, 09h57
  3. Liaison série sur ATMEL
    Par Tony78 dans le forum Électronique
    Réponses: 2
    Dernier message: 19/04/2007, 20h38
  4. communication série avec 68HC11
    Par invitebef35db2 dans le forum Électronique
    Réponses: 5
    Dernier message: 30/01/2007, 21h42
  5. Communication serie Pic<->Pc
    Par inviteb3b25a26 dans le forum Électronique
    Réponses: 14
    Dernier message: 11/06/2004, 18h06
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...