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 l'Assembleur !

Modérateur : mazertoc

Bizarrerie sur Usart
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2719
Enregistré en : juillet 2016
Localisation : Terre

#1 Message par Temps-x » sam. 25 févr. 2023 15:45

Bonjour tout le forum,

Voici un schéma tout simple, communication avec l'usart

Usart.png


Le seule problème, c'est quand je branche le microcontrôleur comme sur le plan ci-dessus, oops Le microcontrôleur se retrouve alimenté, pouvez vous m'expliquer le pourquoi :?:

L'entrée de l'usart (RX) du microcontrôleur serait t'elle endommagé ?

Voici le code à tout hasard

Code : Tout sélectionner

;***********************************************************************************************

    Errorlevel-302                        ; Supprime le message "Ensure that bank bits are correct" 

    radix dec                             
; par defaut en mode décimal

    list p
=18f26K22                       ; processeur utilisé                  
    
#include <p18f26K22.inc>              ; Définitions des constantes

;***********************************************************************************************

;
 CONFIG11H
     CONFIG FOSC 
= INTIO67  
     CONFIG FCMEN 
= OFF 
     CONFIG IESO 
= OFF
; CONFIG2L
     CONFIG PWRTEN 
= OFF 
     CONFIG BOREN 
= OFF 
     CONFIG BORV 
= 190
; CONFIG2H
     CONFIG WDTEN 
= OFF 
     CONFIG  WDTPS 
= 1
; CONFIG3H
     CONFIG CCP2MX 
= PORTC1                         
     CONFIG PBADEN 
= OFF
     CONFIG CCP3MX 
= PORTC6
     CONFIG HFOFST 
= OFF
     CONFIG T3CMX 
= PORTC0     
     CONFIG P2BMX 
= PORTC0
     CONFIG MCLRE 
= INTMCLR
; CONFIG4L
     CONFIG STVREN 
= ON 
     CONFIG LVP 
= OFF 
     CONFIG XINST 
= OFF 
     CONFIG DEBUG 
= OFF
; CONFIG5L
     CONFIG CP0 
= OFF 
     CONFIG CP1 
= OFF 
     CONFIG CP2 
= OFF 
     CONFIG CP3 
= OFF
; CONFIG5H
     CONFIG CPB 
= OFF 
     CONFIG CPD 
= OFF
; CONFIG6L
     CONFIG EBTR0 
= OFF
; CONFIG6H
     CONFIG EBTR1 
= OFF
; CONFIG7L
     CONFIG EBTR2 
= OFF
; CONFIG7H
     CONFIG EBTR3 
= OFF
;***********************************************************************************************

;------------------------------
 information sur le brochage Usart ------------------------------

;-------------------------------------
 RC6 = TX, RC7 = RX --------------------------------------

;***************************************
 assignations ***************************************** 


#DEFINE dc      LATA,0                 ; RA0 ==> sélection du mode : commande = 0 , donnée = 1
#DEFINE cs      LATA,1                 ; RA1 ==> activer ou désactiver la transmission
#DEFINE rst     LATA,2                 ; RA2 ==> reset de l'écran

#DEFINE sck     LATC,3                 ; RC3 ==> horloge de synchronisation 
#DEFINE mosi    LATC,4                 ; RC4 ==> envoyer les données sur écran oled 128x64

#DEFINE led1    LATB,3                 ; RB4 led verte, témoin de mise en fonction de l'appareil

#DEFINE seet    LATA,0                 ; pour emettre niveau haut

;********************************* "déclaration des variables" *********************************

     CBLOCK H'20'                          ; bank0  
      loop0               
:1    
      loop1               
:1
      loop2               
:1
      loop3               
:1
      loop4               
:1
      loop5               
:1                    
      loop6               
:1
      loop7               
:1
      loop8               
:1                    
      loop9               
:1                

      indique             
:
      avance              
:1

      buzzer              
:1

      res16               
:1
      res8                
:1

      unité               
:1      
      dizaine             
:1
      centaine            
:1
      millième            
:1
      dix_millième        
:
       
      afficheur           
:1

      virgule             
:1

      passage             
:1
       
      reference           
:1

      delay               
:
    
      dividende           
:1      
      diviseur            
:1
      quotient            
:1
      reste               
:1  
      
      temps               
:2
      tmps                
:2

      durée               
:1

      adresse_hig         
:1
      adresse_low         
:
        
      donner              
:
 
      bits                
:1
      envoyer             
:1
    
    ENDC

;********************************** "déclaration des macros" ***********************************
;*************************
 "Macro pour se positionner dans un tableau" ************************* 

tableau MACRO adresse

      movlw UPPER
(adresse)                ; 
      movwf TBLPTRU                       
;
      movlw HIGH(adresse)                 ;
      movwf TBLPTRH                       ; 
      movlw LOW
(adresse)                  ;
      movwf TBLPTRL                 
     
    ENDM

;** "Macro pour faire une durée de temps, qui peut aller de 10 ms minimum  à 2550 ms maximum "** 

delay_s MACRO valeur1

      movlw valeur1                       
; 
      movwf durée                         
; durée du temps défini par la valeur1 

      call _10ms

    ENDM

;** "Macro pour faire une durée de temps, qui peut aller de 1 ms minimum  à 255 ms maximum "** 

delay_ms MACRO valeur1

      movlw valeur1                       
; 
      movwf durée                         
; durée du temps défini par la valeur1 

      call _1ms                           
;

    ENDM

;** "Macro pour faire une durée de temps, qui peut aller de 1 µs minimum  à 255 µs maximum "** 

delay_µs MACRO valeur1

      movlw valeur1                       
; 
      movwf durée                         
; durée du temps défini par la valeur1 

      call _1µs                           
; 250 ns

    ENDM

;******************************* "adresse de depart après reset" *******************************

    ORG H'0'
      bra debut

    ORG H
'8'                              ; interruption haute priorité
      retfie FAST        
    ORG H
'18'                             ; interruption base priorité     
      retfie FAST

 
debut
;***************** "configuration de la bank sélectionné du microcontrôleur" *******************

      movlb 0x0F                          ;  BSR pointe sur la banque 15  

;******************** "configuration de l'oscillateur du microcontrôleur" ********************** 

      movlw B
'01110100'                   ; oscillateur à 16 Mhz, fréquence stable si PLL (16 * 4)= 64 Mhz
;     movlw B'01100100'                   ; oscillateur à 8 Mhz, fréquence stable si PLL (* 4) = 32 Mhz
;     movlw B'01010010'                   ; oscillateur à 4 Mhz, fréquence stable  
;     movlw B'01000010'                   ; oscillateur à 2 Mhz, fréquence stable  
;     movlw B'00110010'                   ; oscillateur à 1 Mhz, fréquence stable  

      movwf OSCCON
      
      movlw B
'00000000'                   ;
      movwf OSCCON2                       ;

;****************************
 configuration du registre OSCTUNE ********************************

      movlw B'01000000'                   ; bit 6 à 1 : PLL * 4
      movwf OSCTUNE                       
; bit 6 à 0 : PLL désactivé
                                         
;*************************** configuration du registre ANSELA ********************************** 

      movlw B
'00100000'                   ; en mode numérique : 7(RA5) 
      movwf ANSELA                        
; en mode E/S       : 2(RA0), 3(RA1), 4(RA2), 5(RA3)

;****************************
 configuration du registre ANSELB ********************************* 

      movlw B
'00000000'                   ; en mode numérique : 
      movwf ANSELB                        
; en mode E/S       : 21(RB0), 22(RB1) 23(RB2), 24(RB3), 25(RB4), 26(RB5)  
             
;**************************** configuration du registre ANSELC ********************************* 

      movlw B
'00000000'                   ; en mode numérique :
      movwf ANSELC                        ; en mode E/S       : 13(RC2),  14(RC3), 15(RC4), 16(RC5), 17(RC6), 18(RC7)  

;*************************** configuration du registre ADCON0 ********************************** 

      movlw B
'00000000'                   ; b0 = ADON mise en service le convertiseur 0 = arrêt : 1 = marche   
      movwf ADCON0                        
; b1 = GO/DONE indique la fin de la conversion analogique, et permet de lancer la conversion
                                          
; b2 à b6 = réglage de la sélection du canal

;*************************** configuration du registre ADCON1 ********************************** 

      movlw B
'00000000'                   ; b2 à b3 = 00 : sélection de la tension de reférence, Vref+ = Vss   
      movwf ADCON1                        
; b0 à b1 = 00 : sélection de la tension de reférence, Vref- = Vdd 
                                          
;*************************** configuration du registre ADCON2 ********************************** 

      movlw B
'00001101'                   ; b0 à b2 = FOSC/64    
      movwf ADCON2                        
; b3 à b5 = 16 TAG 
                                          
; 
                                          
; b7 = détermine si le résultat de la conversion
                                          
; sera justifié à droite = 1 ou à gauche = 0  

;***********************************************************************************************

      movlw B'00000000'                   ; comparateur 1 off
      movwf CM1CON0 

      movlw B
'00000000'                   ; comparateur 2 off
      movwf CM2CON0 

;***************** configuration des registres TRISA & TRISB & TRISC & TRISE ******************* 

      movlw B
'00100000'                   ; RA0(2), RA1(3), RA2(4), RA3(5), RA4(6), RA5(7), RA6(10), RA7(9)  
      movwf TRISA                         
; 

      movlw B
'11110111'                   ; RB0(21), RB1(22), RB2(23), RB3(24), RB4(25), RB5(26), RB6(27), RB7(28)
      movwf TRISB                         ; 

      movlw B
'10000001'                   ; RC0(11), RC1(12), RC2(13), RC3(14), RC4(15), RC5(16), RC6(17), RC7(18)     
      movwf TRISC                         
;               
            
      movlw B
'00001000'                   ; RE3(1) 
      movwf TRISE                         
;
                                          ; VSS(8), VSS(19), VDD(20) 
;******************************* configuration du registre T1CON *******************************
    
      movlw B
'10000100'                   ; mode asynchrone, division par 0
      movwf T1CON             

;***********************************************************************************************

      movlw D'103'                        ; 9615 bauds(103 décimal, holorge 64 Mhz)
      movwf SPBRG1                        ; 19230 bauds(51 décimal, horloge 64 Mhz)
                                           
                                          
; 8 bit, transmition activé, mode asynchronouse, basse vitesse   
      movlw B
'00100000'                   ;  
      movwf TXSTA1                        
; TXSTA1, TX1STA, TXSTA = H'0FAC' 

      movlw B
'10010000'                   ; réception ouvert, 8 bits, mode asynchrone  
      movwf RCSTA1                        
; RCSTA1, RC1STA, RCSTA = H'0FAB' 
          
;******************************* configuration du registre T1CON *******************************
    
      movlw B
'10000100'                   ; mode asynchrone, division par 0
      movwf T1CON                         
; comptage sur l'entrée RC0

;******************************* configuration du registre PIE1 ********************************

      movlw B'
00000000
      movwf PIE1                          ; b0 = 0 désactivé le débordement du timer1

;**************************** configuration du registre INTCON2 ******************************** 

      movlw B'
00000000'                   ; B7 = 0 résistances en service
      movwf INTCON2                       ; interuption base priorité

;**************************** configuration du registre WPUB *********************************** 
                                        
     movlw B'
11110111'                    ; tirage de résistance sur        : RB0(21), RB1(22), RB2(23), RB3(24), RB4(25), RB5(26), RB6(27), RB7(28)  
     movwf WPUB                           ; pas de tirage de résistance sur :

;**************************** configuration du registre RCON *********************************** 

      movlw B'
00000000'                   ; 
      movwf RCON                          ; 

;**************************** configuration du registre INTCON *********************************      

      movlw B'
00000000'                   ; hors service interruption
      movwf INTCON                        ; 

;************************************ départ du programme **************************************

      movlb 0x00                          ;  BSR pointe sur la banque 0  

;***********************************************************************************************  
     
      clrf PORTA
      clrf PORTB
      clrf PORTC
   
      clrf LATA
      clrf LATB 
      clrf LATC                                 

      movf RCREG,W                        ; lectures pour vider le tampon
      movf RCREG,w                        ;
      movf RCREG,w

;**************************** " témoin visuel de mise en fonction" *****************************

      movlw D'
4'                          ; pour 2 clignotements
      movwf loop5
clignote
      btg led1   
      delay_s 50                          ; macro : 500 ms temps de visionnage
      decfsz loop5,F                      ; 
      bra clignote  

;***********************************************************************************************     




;***********************************************************************************************     
terminer
      nop 
      bra terminer

;************************************** "reception Usart" **************************************
rx_rec
      btfss PIR1,RCIF                     ; caractère reçu 
      bra rx_rec                          ;

      movf RCREG,W                        ; transmettre le caractère reçu dans W
    
      return

;************************************** "émission Usart" ***************************************
tx_emi 
      btfss TXSTA,TRMT                    ;
      bra tx_emi                          ;
                                          
      movwf TXREG1                        ;

      return

;********************** "pause de 10 millisecondes pour horloge de 64 Mhz" *********************
_10ms
      movlw D'
201'                        ;
      movwf loop1                         ;

      movlw D'
208'                        ;
      movwf loop2                         ;

      decfsz loop1                        ;
      bra $-D'
2'                          ;
      decfsz loop2                        ;
      bra $-D'
6'                          ;

      decfsz durée,F                      ;
      bra _10ms                           ;

      return              

;********************** "pause de 1 millisecondes pour horloge de 64 Mhz" **********************
_1ms
      movlw D'
198'                        ;
      movwf loop1                         ;

      movlw D'
21'                         ;
      movwf loop2                         ;

      decfsz loop1,F                      ; 
      bra $-D'
2'                          ;
      decfsz loop2,F                      ;
      bra $-D'
6'

      decfsz durée,F                      ;
      bra _1ms                            ;

      return
;********************** "pause de 1 microseconde pour horloge de 64 Mhz" ***********************
_1µs                                      
      movlw D'
4'                          ; 
      movwf loop1                         ; 

      decfsz loop1,F                      ; 
      bra $-D'
2'                          ; 

      decfsz durée,F                      ; 
      bra _1µs                            ; 

      return               

      End


==> A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Bizarrerie sur Usart
francois77
Passionné
Passionné
Messages : 307
Enregistré en : avril 2022

#2 Message par francois77 » sam. 25 févr. 2023 17:38

Bonjour Temps-x

tu retrouves une tension ou ton pic fonctionne ?

A+

Bizarrerie sur Usart
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2719
Enregistré en : juillet 2016
Localisation : Terre

#3 Message par Temps-x » sam. 25 févr. 2023 18:11

Bonsoir francois77, et tout le forum,

J'ai oublié de dire que mon pic est alimenté en 3.6 volts, le module CH340 renvoi du 5 volts sur la broche RX de mon Pic, :roll: je pense pas que cela pose problème (reste à voir avec les spécialistes de l'usart)

A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Bizarrerie sur Usart
francois77
Passionné
Passionné
Messages : 307
Enregistré en : avril 2022

#4 Message par francois77 » sam. 25 févr. 2023 18:19

Hello,

Tu ne peux pas alimenter ton pic en 5volts ?

A+

Bizarrerie sur Usart
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2719
Enregistré en : juillet 2016
Localisation : Terre

#5 Message par Temps-x » sam. 25 févr. 2023 18:31

Re

Pour les essais j'utilise une pile li-ion 4.2 (au plus haut) et 3 volts (au plus bas), après faut recharger l’accu.

Bien sur que je peux utiliser le 5 volts pour les essais, mais est ce que ça peut endommager le pic si on envoi du 5 volts sur sa broche RX alors qu'il est alimenté en 3.6 volts ?

==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Bizarrerie sur Usart
satinas
Expert
Expert
Messages : 1262
Enregistré en : novembre 2015

#6 Message par satinas » sam. 25 févr. 2023 18:45

Bonsoir,
Ce n'est pas conseillé d'envoyer du 5V si le pic est alimenté en 3,6V. Dans le datasheet, chapitre "Electrical specifications", il est indiqué qu'il ne faut pas dépasser Vdd+0,3V sur les inputs. Heureusement il y a une diode de protection vers Vdd, elle devient passante et peut alimenter le pic s'il y a assez de courant.
Pic non alimenté Tu retrouves quelle tension sur le Vdd du pic ?
Diodes protection.png
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

Bizarrerie sur Usart
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2719
Enregistré en : juillet 2016
Localisation : Terre

#7 Message par Temps-x » sam. 25 févr. 2023 19:12

Bonsoir satinas, et tout le forum,

Je trouve 2.45 volts

:sifflotte: En gros si j'ai compris, c'est des choses à ne pas faire.

Je comprends mieux avec le schéma que tu as mi, ça explique pas mal de chose, Merci ! pour ta réponse.

==> A+
Modifié en dernier par Temps-x le sam. 25 févr. 2023 19:16, modifié 1 fois.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Bizarrerie sur Usart
satinas
Expert
Expert
Messages : 1262
Enregistré en : novembre 2015

#8 Message par satinas » sam. 25 févr. 2023 19:15

Cela donne quoi avec l'adaptateur FTDI switché en 3,3V ?

Bizarrerie sur Usart
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2719
Enregistré en : juillet 2016
Localisation : Terre

#9 Message par Temps-x » sam. 25 févr. 2023 19:17

Je vais tester tout de suite

==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Bizarrerie sur Usart
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2719
Enregistré en : juillet 2016
Localisation : Terre

#10 Message par Temps-x » sam. 25 févr. 2023 19:27

Re

Voila les résultats, FTDI switché en 3,3V, le pic n'est plus alimenté, mais je retrouve 1.28 volts sur la ligne VDD

Comme il me reste un Pic18F26k22 vierge, je vais faire l’essai voir si j'ai le même résultat

==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:


Retourner vers « Langage ASM »

Qui est en ligne

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