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.
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)
L'age n'est pas un handicap .... Encore faut-il arriver jusque là pour le constater !
26/04/2009 - 12h03
Neantis
Date d'inscription
avril 2009
Âge
23
Messages
5
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.
//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;
}
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
26/04/2009 - 21h35
mister_e
Date d'inscription
août 2006
Localisation
Montréal, Québec, Canada
Âge
39
Messages
184
Re : Usart Rx ok Tx ne marche pas
Toujours lire la datasheet, en cas de doute relire la datasheet
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.
Steve
26/04/2009 - 22h42
Neantis
Date d'inscription
avril 2009
Âge
23
Messages
5
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)
26/04/2009 - 22h46
mister_e
Date d'inscription
août 2006
Localisation
Montréal, Québec, Canada
Âge
39
Messages
184
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
Dernière modification par mister_e ; 26/04/2009 à 22h49.