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 ---

Broche en entrée qui sort une tension

Forum général sur le langage C !

Modérateur : Jérémy

Jérémy
Administrateur du site
Administrateur du site
Messages : 2752
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

Broche en entrée qui sort une tension

Messagepar Jérémy » mer. 4 mai 2016 16:28

Bonjour à tous,

Je suis confronter à un problème étrange de configuration .

En effet sur la BROCHE RB2 de mon PIC , j'ai connecter un BP avec une pull-down de 10K .
J'ai configurer cette broche en entrée . et pourtant j'ai une tension constante de Vdd sur sur cette boche sans appuyé sur le BP.

Je pense à un problème de configuration car cette broche ( RB2) à été modifié pour ne pas servir de SDO1 .

Voici le schéma
etqsef.jpg


et un bout du programme simpliplfié :

Code : Tout sélectionner

//#############################       DECLARATION       ############################
#include "Oled_M.h"
#include "chiffre.h"

#define BP_G PORTB.B2
#define BP_M PORTB.B0
#define BP_D PORTB.B1

#define Led_rouge PORTA.B7
#define Led_verte PORTA.B0

#define NPN PORTA.B3
#define PNP PORTA.B2

#define OLED_RST PORTB.B3
#define OLED_CS PORTA.B1
#define OLED_DC PORTB.B5

//##################################################################################
//######################     PROGRAMME PRINCIPAL     ###############################
//##################################################################################
void main(){

     ANSELA = 0;            // PORTA en digital
     ANSELB = 0;            // PORTB en digital

     TRISA = 0b00110000 ;   // RA4 ( vide) et RA5(MCLR) en entrée
     TRISB = 0b11000111 ;   // RB0(BP_M), RB1(BP_D), RB2(BP_G) et RB6,RB7(ICSP) en entrée

     OSCCON = 0b01111110 ;  // reglage de L'OSC interne 16Mhz sans PLL
     SDO1SEL_bit = 1 ;          // Réglage de SDO1 sur RA6

     SPI1_Init();           // Initialisation du SPI
     Delay_ms(100);

     OLED_M_Init();         // Initialisation de l'ecran LCD
     Delay_ms(200);

//############################     BOUCLE INFINIE     ##############################
 while(1){


  if (BP_D == 1)
      Led_verte = 1;
      else
      Led_verte 
= 0;

  if ( BP_G == 1)    
      Led_rouge 
= 1;
      else
      Led_rouge 
= 0;

   if ( BP_M == 1){    
      Led_rouge 
= 1;
      Led_verte = 1; }
      else{
      Led_rouge = 0;
      Led_verte = 0;
     }
 }
 


C'est un programme de test, pour vérifier les fonctions principales.
résultat la Led_rouge est tout le temps allumée, j'ai bien 3.29V sur cette broche alors que je l'ai mise en entrée et que je n'appuie pas sur le BP bien évidemment .

En supprimant la ligne SDO1SEL_bit = 1 ; le BP fonctionne normalement.

J'en déduis que cette broche passe en sortie par un système non maitrisé pour ma part. Oui mais lequel ?
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

Broche en entrée qui sort une tension

Messagepar Guest » mer. 4 mai 2016 17:20

bonjour

Pas simple ce 16LF couteau suisse .Il peut faire beaucoup de chose, mais pas en même temps. Regarde APFCON1 bit 0 pour la DS c'est page 119 a tout hasard :wink:
Modifié en dernier par Anonymous le mer. 4 mai 2016 17:33, modifié 1 fois.

Jérémy
Administrateur du site
Administrateur du site
Messages : 2752
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

Broche en entrée qui sort une tension

Messagepar Jérémy » mer. 4 mai 2016 17:30

Hello maï,

Je viens de tester , rien a faire . Bizarre je continue mes investigations
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

Broche en entrée qui sort une tension

Messagepar Guest » mer. 4 mai 2016 17:31

Jérémy a écrit :Hello maï,

Je viens de tester , rien a faire . Bizarre je continue mes investigations
cela doit-être une histoire de positionnement de bits courage :-D

Jérémy
Administrateur du site
Administrateur du site
Messages : 2752
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

Broche en entrée qui sort une tension

Messagepar Jérémy » mer. 4 mai 2016 21:17

Me revoici,

J'ai enfin trouvé !!!!

Mais j'avoue que je vois la cause mais je ne comprends pas complétement. Si quelqu'un comprends le pourquoi du comment exact je suis preneur d'une petite explication .

en fait d’après ce que j'ai crû comprendre c'est la faute du SPI_Init. Je pense que pendant l'initialisation il passe la sortie RB2 en SDO , ce qui fait qu'elle est sortie.
En placant un TRISB.B2 = 1; juste après ca fonctionne parfaitement ; je fais donc comme ceci ;

Code : Tout sélectionner

 ANSELA 0;            // PORTA en digital
     
ANSELB 0;            // PORTB en digital

     
TRISA 0b00110000 ;   // RA4(vide) et RA5(MCLR) en entrée
     
TRISB 0b11000111 ;   // RB0(BP_M), RB1(BP_D), RB2(BP_G) et RB6,RB7(ICSP) en entrée

     
PNP 1;               // Mise au repos des transistors
     
NPN 0;               // Mise au repos des transistors

     
OSCCON 0b01111110 ;  // réglage de L'OSC interne 16Mhz sans PLL

     
SPI1_Init();           // Initialisation du SPI
     
SDO1SEL_bit ;      // Réglage de SDO1 sur RA6
     
TRISB.B2 1;          // A L'initialisation du SPI il configure SDO en RB2 il faut donc le repassé en Entrée
     
Delay_ms(100);
 
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

Broche en entrée qui sort une tension

Messagepar Guest » mer. 4 mai 2016 21:55

tu ne peux pas modifier le fichier h du spi? pour que l'init se face sur RA6? comme dans ma lib sur le LCD ou il suffit de modifier les define

Jérémy
Administrateur du site
Administrateur du site
Messages : 2752
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

Broche en entrée qui sort une tension

Messagepar Jérémy » mer. 4 mai 2016 22:18

tu ne peux pas modifier le fichier h du spi? pour que l'init se face sur RA6? comme dans ma lib sur le LCD ou il suffit de modifier les define

Je ne crois pas malheureusement !

MikroC doit garder secret ces librairies ! je nai pas de fichier h generer seulement pour cette focntion :oops:
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

Broche en entrée qui sort une tension

Messagepar Guest » jeu. 5 mai 2016 11:35

bonjour

OUI mais tu sais faire maintenant ,donc lib int()SPI jeremy :lol: ,et tu te montes tes propres LIB et la :bravo: c'est qu'une INTI

Tient j'ai trouvé cela:
http://www.ermicro.com/blog/?p=1846
pour t'aider a faire ta LIB SPI en C :langue: pour un 18F :langue:


Retourner vers « Langage C »

Qui est en ligne

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