Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

PIC16F628 et rs232



  1. #1
    Yannux

    PIC16F628 et rs232

    Bonsoir à tous,

    J'ai écrit un petit programme en C pour tester la liaison rs232 avec mon PIC. En voici le code :

    Code:
    #include <system.h>
    
    #pragma DATA _CONFIG, _HS_OSC & _WDT_OFF & _CP_OFF & _LVP_OFF & _MCLRE_ON
    #pragma CLOCK_FREQ 4000000
    
    void main()
    {
    	
    	option_reg = 0x80;
    	
    	/* USART Configuration */
    	
    	set_bit(trisb, 2);
    	set_bit(trisb, 1);
    	set_bit(rcsta, SPEN);			/* Serial port activation */
    	clear_bit(txsta, 2);
    	spbrg = 51;					/* Baudrate 1200 with 4Mhz Clock */
    	clear_bit(txsta, SYNC);			/* Asynchronous mode */
    	set_bit(txsta, TXEN);			/* TXEN = 1 */
    	
    	txreg = 0x31;
    	
    	while(1)
    	{
    		while (!test_bit(pir1, TXIF));
    		txreg = 0x31;
    				
    	}
    	
    }
    Ce programme est censé m'envoyer en boucle le caractère ascii "1". Le problème est que l'hyperterminal ne reçoit rien, et à priori, ça ne vient pas du côté hard...

    Quelqu'un voit-il une erreur dans mon programme ?

    Merci d'avance,

    Cdlt,

    Yann.

    -----


  2. #2
    umfred

    Re : PIC16F628 et rs232

    je pense que tu devrais plutôt tester le bit TRMT du registre TXSTA à la place du bit TXIF du registre PIR (regarde les chronogrammes de la figure 12-6 et 12-7 (page 77 et 78 sur 170 de la datasheet du PIC) pour mieux comprendre)

  3. #3
    Yannux

    Re : PIC16F628 et rs232

    Bonsoir,

    Merci pour ta réponse. Cependant, je pense avoir trouvé. En effet, le quartz n'oscille pas à 4 Mhz, et je pense que cela vient de la valeur des capas que j'ai utilisé, car j'ai mis du 33 pf, ce qui dépasse le maximum préconisé dans la doc, à savoir 30pf...
    De plus, la platine d'essai de type labtec ne doit pas arranger les choses non plus

    De ce fait, je pense que le baudrate réel diffère trop de ce qu'attend le pc. Mais ne devrais-je pas recevoir des données quand même ? (même mauvaises)

    Pour informations, en simulation, dans MPLAB, cela fonctionne, le simulateur d'uart m'indique bien que j'envoi les 1...

  4. #4
    umfred

    Re : PIC16F628 et rs232

    Pour un quartz à 4MHz, il faut mettre _XT_OSC dans le mot de configuration (_HS_OSC c'est pour à partir de 8MHz)

Sur le même thème :

Discussions similaires

  1. USART du PIC16F628
    Par Patrick dans le forum Électronique
    Réponses: 2
    Dernier message: 01/06/2008, 15h28
  2. Rs232
    Par felix39 dans le forum Électronique
    Réponses: 5
    Dernier message: 11/12/2007, 19h37
  3. Problème PIC16F628
    Par Patrick dans le forum Électronique
    Réponses: 8
    Dernier message: 10/03/2007, 17h21
  4. Rs232
    Par souma29 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 25/01/2007, 22h52
  5. rs232-cl
    Par drinded 56 dans le forum Électronique
    Réponses: 1
    Dernier message: 18/01/2004, 21h32