Usart Rx ok Tx ne marche pas
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Usart Rx ok Tx ne marche pas



  1. #1
    invite648a3132

    Exclamation Usart Rx ok Tx ne marche pas


    ------

    Bonjour à tous, (C'est la Reception et non pas la Transmission qui ne fonctionne pas, erreur dans titre du topic)

    Après beaucoup d'essai en vain je commence un peu à perdre patience sur mon montage. Je vous explique mon problème.


    Je travaille avec un PIC16F690 (sur la carte fournis avec le PicKit2) et un adaptateur USB->Série acheté chez selectronic.


    J'ai utilisé plusieurs compilateur pour voir si l'erreur ne venait pas de moi (CC5x et MikroC).


    J'arrive à envoyer des données vers le pc (envoi de caractère ou de résultat du convertisseur analogique numérique) Le problème est que je n'arrive pas à recevoir des donnée sur mon PIC, je fait un test tout simple qui consiste à lire la donnée recue et à la renvoyer à l'ordinateur mais sa ne marche pas.

    Je suis pourtant sur d'avoir fait comme il faillais (sous CC5X j'ai configurer moi même les registre, sur MikroC tout est fait automatiquement) et pourtant sa ne marche toujours pas.

    Sa va faire une semaine que je galère un peu sur ce point (recevoir des données sur le pic), Si quelqu'un peut me venir en aide je lui serait reconnaissant.


    Merci

    -----

  2. #2
    invitee05a3fcc

    Re : Usart Rx ok Tx ne marche pas

    1/ Tu retires ton PIC de la carte
    2/ Tu réunis par un strap les deux broches qui allaient sur TX et RX du PIC
    3/ Tu utilises HyperTerminal sur ton port COM virtuel

    - Tout ce que tu frappes au clavier est en écho sur l'écran
    - Si tu retires le strap ... plus d'echo
    Si ça marche : Tu as un problème soft sur ton PIC
    Si ça ne marche pas: Teste avec un PC avec un vrai port COM

    Si ça marche : Tu as un problème avec le convertisseur USB
    Si ça ne marche pas: Tu as un problème hard (cable, broches, interface RS232 sur le PIC , etc)

  3. #3
    invite648a3132

    Re : Usart Rx ok Tx ne marche pas

    Salut

    J'ai deja diagnostiquer tout sa (j'aurais du le preciser dans mon premier post)

    J'ai tester la connexion en sortie du MAX232 (Tx sur le RX) Ok, donc le Pic reçoit bien les touches frappées depuis hyperterminal.

    Je pense vraiment que j'ai un problème sur le pic (ou sur le soft) (j'ai malheureusement pas d'autre 16F690 pour tester si cela viens du pic ou de mon code).

    Je colle mon code utilisé sous CC5X si quelqu'un à le temps de jeter un coup d'oeil.

    --------------------------------------------------------------------------------------

    Fichier des fonctions séries :




    Code:
    //déclaration des signatures des fonctions
    void putc(unsigned char c);
    void puti(uns16 t);
    void serialInit();
    
    
    // putc(char c) function to transmit one char	
    void putc(unsigned char c) 
    	{ 
    	while(!TXIF)
    continue;
    	TXREG = c; // Put function parameter txc into the txreg
    return;
    	}
    
    // puti(uns16 t) function to transmit one uns16
    void puti(uns16 t){
    
    while(!TXIF)
    continue;
    	TXREG = t; // Put function parameter txc into the txreg
    
    return;
    }
    
    	
    unsigned char getch() {
    	/* retrieve one byte */
    	while(!RCIF)	/* set when register is not empty */
    		continue;
    	return RCREG;	
    }
    
    
    void getche(void) //fonction écoute Rx et renvoi sur Pc par Tx
    {
    	unsigned char c;
    	putc(c = getch());
    return;	
    }
    
    // Initialisation de serial
    void serialInit(){
    	
    	
    //CONFIGURATION	
    	BAUDCTL = 0b00000001;
    	SPBRG = 25; //9600 baud @ 8MHz
    	TXSTA=0b00100100; //full duplex asynchronous
    	RCSTA=0b10010000; //full duplex asynchronous
    	
    //INTERUPTION
    	RCIE = 1; // Autorisation d'intéruption reception
    	TXIE = 1; // Autorisation d'intéruption transmition
    	GIE = 1; // Autorisation d'intéruption globale
    	PEIE = 1;// Autorisation d'intéruption peripherique
    	return;
    		}
    
    	 
    -----------------------------------------------------------------------------------
    
    Fichier du main :
    
    
    
    
    		#include "DELAY.C"
    		#include "serial.c"
    		#include "A2D.c"
    		
    
    	void main (void){
    			
    		
    		TRISA = 0b00001001; // PORTA.0 utilisé pour CAN et PORTA.3 Bouton poussoir
    		TRISB = 0b11100000; // PortB.7 Tx et PORTB.5 Rx en entrée
    		TRISC = 0b00000000;
    
    
    		
    		PORTA = 0x08;
    		PORTB = 0b00000000;
    		PORTC = 0x00;
    
     serialInit(); // Initialisation du port serie
    	
    		
    	while(1){
    getche(): // Lecture Rx puis retour sur Tx pour le PC
    delay_ms(500);
    
    }
    }
    Merci d'avance
    Dernière modification par Jack ; 17/07/2014 à 18h21. Motif: Merci d'ajouter tout seul les balises code à l'avenir

  4. #4
    invite6ceed97c

    Re : Usart Rx ok Tx ne marche pas

    Toujours lire la datasheet, en cas de doute relire la datasheet

    datasheet
    http://ww1.microchip.com/downloads/e...Doc/41262E.pdf
    téléportons nous à la table 5, page 8 et regardons ce que ce PIC peut nous cacher.

    Pin TX... mm, pas grand chose a voir

    Pin RX... ah ben... il y a aussi une fonction Analogue (AN11) sur cette broche... mmm... intéressant. Que se passes-t-il si elle est activé par défaut? Oui tu y est, des problèmes

    Allons donc voir la Section Réservé au PORTB, section 4.3, page 71. Tiens donc, une boite grise attire mon attention...
    Note: The ANSELH register must be initialized
    to configure an analog channel as a digital
    input. Pins configured as analog inputs will
    read ‘0’.
    Effectuons une recherche pour ce régistre (CTRL+F), tout de go, nous sautons à pieds joints vers la table 4-3, page 82. La valeur par défaut nous signifie que AN11 est analogue.

    Daccord, mais.. est qu'activer le USART désactive la fonction analogue? Allez hop, cherchons la section USART.mmm.... section 12.1.2, page 158. Un peu de lecture et...... ah voila
    ... If the RX/DT pin is
    shared with an analog peripheral the analog I/O function
    must be disabled by clearing the corresponding ANSEL
    bit
    Et bien voila, on confirme qu'il nous faut désectiver la partie analogue, on retourne à la page 82. AN11 est le bit 3 de ANSELH.

    Code:
    ANSELH = 0;
    Voila, nous venons de désactiver AN<11:8> d'un seul coup.

    Étant donné que tu utilise des boutons poussoires, il serais fortement recommandé d'effectuer le même gener d'analyse pour les broches utilisés.

    Il te manque aussi les fusible de configuration dans ton code.

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

    Re : Usart Rx ok Tx ne marche pas

    MERCI !!!!

    J'ai rigolé en voyant la rigeur de ton message (que j'admire et que je vais tacher de suivre mainteant), j'avais fouillé dans le datasheet mais jamais cela me serait venu à l'idée de specifier que le pin etait pas analogique.

    Je dit sa mais dans mon fichier A2D.C (Fichier du convertisseur A/N) j'avais déclarer
    ANSELH = 0b00000000;
    (j'initialise les deux fonction dans mon main)

    Le seul problème c'est que je l'avais commenté......

    En tout cas tu m'a bien aidé sa faisait une semaine que j'etait dessus (oui j'ai du mal mais je débute )

    Le Pic met au moin une minutes à répondre aprés l'allumage, je pense que sa vien du fait que j'utilise l'autobaud generator, je regarderais donc si sans la procedure est plus rapide.

    Encore merci je t'en doit une (je doute que je puisse te rendre ce service en electronique mais demande toujours pour un autre sujet)

  7. #6
    invite6ceed97c

    Re : Usart Rx ok Tx ne marche pas

    Neantis,
    t'inquière... un simple merci m'a suffit

    Bonne continuation, et comme on dit par ici: Lâche pas la patate

  8. #7
    invitecc1144c9

    Re : Usart Rx ok Tx ne marche pas

    bonjour à tous! quelqu'un pourrait venir à mon aide s'il vous plait!
    Voilà, j'utilise un PIC 16F877 et j'utilise putty!
    Voilà, moi j'arrive à recevoir des données de mon PIC vers PC mais le contraire est impossible(PC vers PIC), j'arrive même pas à écrire sur putty!
    Le comble c'est que tout marchait bien sur la simulation sur proteus et là, en réel, ça plante complètement!
    Je ne sais pas ce qui se passe!
    Au niveau des condensateurs au niveau de mon MAX232, j'obtiens des + ou - 8.5V, 5V et le plus étonnant, j'obtiens mêmes des 3.2V.
    Comment faire pour m'en sortir, ça fait déja 2 semaines que j'essaye de faire l'impossible.
    Merci d'avance!

Discussions similaires

  1. navilog ne marche pas
    Par invite64157a37 dans le forum Sécurité et malwares : désinfectez votre machine
    Réponses: 2
    Dernier message: 25/06/2007, 12h06
  2. ça marche pas bien...!
    Par invitecb40bc0e dans le forum Électronique
    Réponses: 1
    Dernier message: 08/08/2005, 17h58
  3. regcleaner ne marche pas
    Par invite7ec69dd4 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 25/01/2005, 20h15
  4. realplayer ne marche pas !?
    Par invite4b0a0290 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 18/06/2004, 19h27
  5. ie ne marche pas
    Par invitec82836ed dans le forum Internet - Réseau - Sécurité générale
    Réponses: 4
    Dernier message: 05/03/2004, 16h34
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...