Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur le langage C !

Modérateur : Jérémy

UART Write Text erreur !
Jérémy
Administrateur du site
Administrateur du site
Messages : 2044
Âge : 39
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#11 Message par Jérémy » dim. 4 mars 2018 09:40 lien vers la Data-Sheet : Cliquez ici

Bonjour ,

Le problème, c'est que je n'arrive même pas a affiché un simple hello word en UART.


Tu veux l'afficher où ? avec un cordon sur hyperterminal ? ou sur un LCD ?
Car comme ca sur un LCD ca ne peut pas fonctionner
C'est en faisant des erreurs, que l'on apprend le mieux !!!

UART Write Text erreur !
venom
Avatar de l’utilisateur
Passioné
Passioné
Messages : 360
Âge : 32
Enregistré en : avril 2016
Localisation : . <------ ici
Contact :

#12 Message par venom » dim. 4 mars 2018 10:24 lien vers la Data-Sheet : Cliquez ici

Jérémy a écrit :Tu veux l'afficher où ? avec un cordon sur hyperterminal ? ou sur un LCD ?
Car comme ca sur un LCD ca ne peut pas fonctionner


Simplement sur un terminal.

@Paul.
Ok j’essaierai tes méthodes et vous afficherait ma fenêtre compilation :wink:






@++

UART Write Text erreur !
venom
Avatar de l’utilisateur
Passioné
Passioné
Messages : 360
Âge : 32
Enregistré en : avril 2016
Localisation : . <------ ici
Contact :

#13 Message par venom » lun. 5 mars 2018 22:37 lien vers la Data-Sheet : Cliquez ici

Bonsoir a tous,

Bon il y a du mieux. J'arrive a avoir un resultat sur le terminal. Mais comme la dernière fois avec le capteur du thermomètre, j'obtiens des hiéroglyphe :sifflotte: :lol: Je soupçonne encore une mauvaise configuration dans Project / Edit Project C'est bien ça ??? :cry:
¨9ËÝ€õ+Ñ´:Š = Hello World \r\n :sifflotte:

si non même résultat avec ton code paul. (hiéroglyphe).

voici quand même le contenue de ma fenêtre "Messages"

Code : Tout sélectionner

0 1 mikroCPIC1618.exe -MSF -DBG -pP16F887 -DL -O11111114 -fo8 -N"D:\MikroC\scan adress i2c\scan_adress_i2c.mcppi" -SP"C:\Program Files (x86)\mikroC PRO for PIC\Defs\" -SP"C:\Program Files (x86)\mikroC PRO for PIC\Uses\P16\" -SP"D:\MikroC\scan adress i2c\" "scan_adress_i2c.c" "__Lib_Math.mcl" "__Lib_MathDouble.mcl" "__Lib_System.mcl" "__Lib_Delays.mcl" "__Lib_CType.mcl" "__Lib_CString.mcl" "__Lib_CStdlib.mcl" "__Lib_CMath.mcl" "__Lib_MemManager.mcl" "__Lib_Conversions.mcl" "__Lib_Sprinti.mcl" "__Lib_Sprintl.mcl" "__Lib_Time.mcl" "__Lib_Trigonometry.mcl" "__Lib_Button.mcl" "__Lib_Keypad4x4.mcl" "__Lib_Manchester.mcl" "__Lib_OneWire.mcl" "__Lib_PS2.mcl" "__Lib_Sound.mcl" "__Lib_SoftI2C.mcl" "__Lib_SoftSPI.mcl" "__Lib_SoftUART.mcl" "__Lib_ADC_88X.mcl" "__Lib_EEPROM.mcl" "__Lib_FLASH_RW.mcl" "__Lib_I2C_c34.mcl" "__Lib_PWM_c21.mcl" "__Lib_SPI_c345.mcl" "__Lib_UART_c67.mcl" "__Lib_PortExpander.mcl" "__Lib_CANSPI.mcl" "__Lib_CF.mcl" "__Lib_GlcdFonts.mcl" "__Lib_Glcd.mcl" "__Lib_LcdConsts.mcl" "__Lib_Lcd.mcl" "__Lib_RS485.mcl" "__Lib_S1D13700.mcl" "__Lib_T6963C.mcl" "__Lib_SPIGlcd.mcl" "__Lib_SPILcd.mcl" "__Lib_SPILcd8.mcl" "__Lib_SPIT6963C.mcl" "__Lib_EthEnc28j60.mcl" "__Lib_EthEnc24j600.mcl" "__Lib_TouchPanel.mcl"  
0 1139 Available RAM: 352 [bytes], Available ROM: 8192 [bytes]  
0 122 Compilation Started scan_adress_i2c.c
30 1509 Generated baud rate is 9615 bps (error = 0.16 percent) scan_adress_i2c.c
53 123 Compiled Successfully scan_adress_i2c.c
0 127 All files Compiled in 188 ms  
0 1144 Used RAM (bytes): 5 (1%)  Free RAM (bytes): 347 (99%) Used RAM (bytes): 5 (1%)  Free RAM (bytes): 347 (99%)
0 1144 Used ROM (program words): 214 (3%)  Free ROM (program words): 7978 (97%) Used ROM (program words): 214 (3%)  Free ROM (program words): 7978 (97%)
0 125 Project Linked Successfully scan_adress_i2c.mcppi
0 128 Linked in 125 ms  
0 129 Project 'scan_adress_i2c.mcppi' completed: 375 ms  
0 103 Finished successfully: 05 mars 2018, 22:28:58 scan_adress_i2c.mcppi


Et voici mon dernier code "fonctionnel"

Code : Tout sélectionner

sbit led at RA4_bit;              // donne un nom a la patte RA4 du microcontorleur "led"

// procedure de paulfjujo pour les pic 16F
void UART1_Write_CText(const char *txt)
 {
   while (*
txt)
     {
     
UART1_Write(*txt++);
    
// Delay_us(500);
     
}
}

void main() {
  
OSCCON 0b01110101;            // oscilateur 8Mhz

  
C1ON_bit 0;                   // Disable comparators
  
C2ON_bit 0;

  
ANSEL  0;                     // Configure AN pins as digital
  
ANSELH 0;
  
TRISA 0x00;                   // tout les port A en sortie. Entrée = 1, sortie = 0

  
UART1_Init(9600);               // Initialize UART module at 9600 bps
  
Delay_ms(100);                  // Wait for UART module to stabilize

  //////////////////////////////////////////////////////////////////////////////
  //clignotement de la led en debut de code/////////////////////////////////////
  //////////////////////////////////////////////////////////////////////////////
  
led 1// allume la led
  
delay_ms(250);
  
led 0// eteint la led
  
delay_ms(250);
  
led 1// allume la led
  
delay_ms(250);
  
led 0// eteint la led
  
delay_ms(250);

  while (
1) {                    // Boucle infini
    
UART1_Write_CText("Hello World \r\n"); // on appel la procedure plus haut

    
led 1// allume la led
    
delay_ms(1000);
    
led 0// eteint la led
    
delay_ms(1000);
    }
  } 


Et l'image de Edit project
Sans titre.png







@++
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

UART Write Text erreur !
Jérémy
Administrateur du site
Administrateur du site
Messages : 2044
Âge : 39
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#14 Message par Jérémy » lun. 5 mars 2018 23:09 lien vers la Data-Sheet : Cliquez ici

Yop,

Franchement je ne vois pas d'erreur dans ton code !

L'astuce de Paul est trés bien mais , pour un petit test on peut s'en passer ! :sifflotte: En tout cas elle dérange pas .

Je ne vois qu'un problème HArd !

Tout de même quelques idée jeter au PIF !
Fais clignoter ta led sur 1 seconde ainsi tu te rendras mieux compte si le temps est a peu prêt bon .
Tu as des librairies essaye de les enlever et de ne laisser que l'UART .
Ton cordon est bien à la bonne alimentation ? il en existe des 3.3V et des 5V ?
Essaye sans la masse du cordon !
Tu as bien réglé ton logiciel hyper terminal ? genre 9600 bauds/ 8n1 / valeur ANSII ? une photo ?

Courage
C'est en faisant des erreurs, que l'on apprend le mieux !!!

UART Write Text erreur !
Temps-x
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 792
Enregistré en : juillet 2016
Localisation : Terre

#15 Message par Temps-x » mar. 6 mars 2018 00:52 lien vers la Data-Sheet : Cliquez ici

Bonjour,

Jérémy a écrit :
Source du message Tu as bien réglé ton logiciel hyper terminal ?


Effectivement ça peut être le problème, reste à voir OSCCON qui est régler à 8 Mhz, essai de diminuer la vitesse à 4 Mhz

Pour le C++ je sais pas, mais en ASM les registres TXSTA, SPBRG, RCSTA, RCREG sont importants.

==> A+
Quand la souris nargue le chat, c'est que son trou n'est pas loin.

UART Write Text erreur !
paulfjujo
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 981
Âge : 67
Enregistré en : juillet 2015
Localisation : 01120
Contact :

#16 Message par paulfjujo » mar. 6 mars 2018 09:21 lien vers la Data-Sheet : Cliquez ici

bonjour,


pour le test des leds , mets un delay de 1 à 2 seconde , de sorte que tu puisses verifier visuellemnt ce delai.
Si il est exact , FOSC est bien à 8MHZ
Nota : il est preferable de mettre ce test AVANT l'init de l' UART !

L'erreur en baud de 0,16% est largement acceptable par tous les terminaux PC.

apres OSCCON = 0b01110001; // oscilateur 8Mhz
rajoute un delay de 1 seconde ..pour etre sur que FOSC est bien stabilisée
ou mieux tester

Code : Tout sélectionner

r  
bit 2 HTS
: HFINTOSC Status bit (High Frequency – 8 MHz to 125 kHz)
= HFINTOSC is stable
= HFINTOSC is not stable

while(OSCCON.HTS==0);  // boucle en attendant de voir le flag à 1


avant de continuer


Rajoute dans l'init MCU :

Code : Tout sélectionner

TRISC=0b10111111;    // RC7 en entree RC6 en Sortie    

meme si normalement l' UART_init initialise déja les pins TX et RX

Quelle est ta tension d'alim PIC16F877 VCC ?

Cordon USB/TTL (5V) ou USB/LTTL (3,3V) ?
essai apres l'init d l'UART :

Code : Tout sélectionner


TXREG
='A'; Delay_ms(10);
TXREG='B';Delay_ms(10);
TXREG='C';Delay_ms(10);
TXREG='D';Delay_ms(10);
TXREG=13;Delay_ms(10);
TXREG=10;Delay_ms(10); 

UART Write Text erreur !
pspic
Débutant
Débutant
Messages : 27
Âge : 71
Enregistré en : septembre 2017
Localisation : 68

#17 Message par pspic » mar. 6 mars 2018 13:02 lien vers la Data-Sheet : Cliquez ici

Bonjour, pourquoi ne pas faire l'essai avec un quartz 8MHz externe au PIC (Oscillateur HS dans la config.)
Je viens de faire l'essai avec le code suivant en MikroBasic.

Code : Tout sélectionner

program MyProject
 'Test UART avec Easy Pic5 et Tools/Usart terminal à 9600 bauds, PIC16F887.
main:
UART1_INIT(9600)
while true
UART1_WRITE_TEXT("Essai")
delay_ms(2000)
wend
end.

UART Write Text erreur !
venom
Avatar de l’utilisateur
Passioné
Passioné
Messages : 360
Âge : 32
Enregistré en : avril 2016
Localisation : . <------ ici
Contact :

#18 Message par venom » mar. 6 mars 2018 13:04 lien vers la Data-Sheet : Cliquez ici

Bonjour a tous,

Merci de vous penchez sur le sujet. Voici mon dernier code qui a le même résultat (hiéroglyphe) :cry:

Code : Tout sélectionner

sbit led at RA4_bit;              // donne un nom a la patte RA4 du microcontorleur "led"

// procedure de paulfjujo pour les pic 16F
void UART1_Write_CText(const char *txt)
 {
   while (*txt)
     {
     UART1_Write(*txt++);
    // Delay_us(500);
     }
}

void main() {
  OSCCON = 0b01110001;            // oscilateur 8Mhz
  while(OSCCON.HTS==0);           // boucle en attendant de voir le flag à 1
  
  C1ON_bit 
= 0;                   // Disable comparators
  C2ON_bit = 0;

  ANSEL  = 0;                     // Configure AN pins as digital
  ANSELH = 0;
  TRISA = 0x00;                   // tout les port A en sortie. Entrée = 1, sortie = 0
  TRISC=0b10111111;               // RC7 en entree RC6 en Sortie
  
  
//////////////////////////////////////////////////////////////////////////////
  //clignotement de la led en debut de code/////////////////////////////////////
  //////////////////////////////////////////////////////////////////////////////
  led = 1; // allume la led
  delay_ms(2000);
  led = 0; // eteint la led
  delay_ms(2000);
  led = 1; // allume la led
  delay_ms(2000);
  led = 0; // eteint la led
  delay_ms(2000);
  
  
  UART1_Init
(9600);               // Initialize UART module at 9600 bps
  Delay_ms(100);                  // Wait for UART module to stabilize

  while (1) {                    // Boucle infini
    UART1_Write_CText("Hello World \r\n"); // on appel la procedure plus haut

    led = 1; // allume la led
    delay_ms(1000);
    led = 0; // eteint la led
    delay_ms(1000);
    }
  }


le delay de la led est bon.
Pour ce qui est de la tension du pic je suis a 5v j'utilise les modules breadbord qui vont bien.
Pour le cordon USB/TTL il est sur 5v aussi c'est celui-là

Pareil quand je connecte le cordon j'ai besoin de brancher les 4 fils ? ou juste le Rx suffi ? (j'ai le même résultat en ne mettant que le blanc et en branchant le blanc, rouge, noir)
Car quand j'ajoute le rouge et noir sur ma breadbord, le montage s'auto-alimente avec le cordon, sans alim externe. C'est quoi le mieux ?

Pour ce qui est de ce petit bout de code :

Code : Tout sélectionner

TXREG='A'; Delay_ms(10);
TXREG='B';Delay_ms(10);
TXREG='C';Delay_ms(10);
TXREG='D';Delay_ms(10);
TXREG=13;Delay_ms(10);
TXREG=10;Delay_ms(10);


Idem (hiéroglyphe). J'ai du zaper un truc c'est pas possible. :furieux: :mur:

pspic a écrit :Bonjour, pourquoi ne pas faire l'essai avec un quartz 8MHz externe au PIC (Oscillateur HS dans la config.)
Je viens de faire l'essai avec le code suivant en MikroBasic.

Code : Tout sélectionner

program MyProject
 'Test UART avec Easy Pic5 et Tools/Usart terminal à 9600 bauds, PIC16F887.
main:
UART1_INIT(9600)
while true
UART1_WRITE_TEXT("Essai")
delay_ms(2000)
wend
end.


Bonjour pspic. Merci du conseil. Je ne sais pas si j'ai ça en magasin :-D Mais j'y regarderai a l'occasion.(je n'ai jamais fait de montage avec un quartz externe) :oops:

Après dans le doute, j'ai un 16f628a qui traîne. Au moin pour tester un montage UART. Car il me faut un pic qui a UART et I2C






@++

UART Write Text erreur !
paulfjujo
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 981
Âge : 67
Enregistré en : juillet 2015
Localisation : 01120
Contact :

#19 Message par paulfjujo » mar. 6 mars 2018 14:08 lien vers la Data-Sheet : Cliquez ici

Pareil quand je connecte le cordon j'ai besoin de brancher les 4 fils ? ou juste le Rx suffi ? (j'ai le même résultat en ne mettant que le blanc et en branchant le blanc, rouge, noir)
Car quand j'ajoute le rouge et noir sur ma breadbord, le montage s'auto-alimente avec le cordon, sans alim externe. C'est quoi le mieux ?


evite d'utiliser le rouge (le +5V USB)
sur un montage simple , on peut se servir de l'alim du PICKIT2 ou
5V sur VDD 2em pin en partant du Repere =VPP
avec le Gnd 3em pin connecté aussi au VSS du PIC

si tu as 2 secondes de delay, no problemo avec FOSC 8Mhz .

tu n'as pas essayer avec TXREG .. sortie directe UART !

UART Write Text erreur !
venom
Avatar de l’utilisateur
Passioné
Passioné
Messages : 360
Âge : 32
Enregistré en : avril 2016
Localisation : . <------ ici
Contact :

#20 Message par venom » mar. 6 mars 2018 14:28 lien vers la Data-Sheet : Cliquez ici

Moi j'alimente en externe et branche uniquement le RX.
Le 16f887 à 2 VDD / VSS. J'alimente bien les 2 ???

Pour ce qui est de TXREG,si je les ai mis après uart_init pareil hiéroglyphe.

Pareil je suis bête, j'ai acheté. Un 16f887 alors que j'ai des 16f88 qui on UART et I2C :sifflotte: Au pire je peux tester l'UART avec un 16f88. Par ce que la ça devient bizarre comme phénomène.
Je sais que j'avais eu le tour avec mon projet de thermomètre, et tu m'avais envoyé le fichier cfgsch après ça a fonctionné. J'ai pas de paramètres spécial à faire dans edit projet ?



@++


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 14 invités