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

Broche en entrée qui sort une tension
Jérémy
Administrateur du site
Administrateur du site
Messages : 2750
Âge : 46
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#1 Message par 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 !!!

Broche en entrée qui sort une tension
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#2 Message par 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.

Broche en entrée qui sort une tension
Jérémy
Administrateur du site
Administrateur du site
Messages : 2750
Âge : 46
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#3 Message par 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 !!!

Broche en entrée qui sort une tension
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#4 Message par 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

Broche en entrée qui sort une tension
Jérémy
Administrateur du site
Administrateur du site
Messages : 2750
Âge : 46
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#5 Message par 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 !!!

Broche en entrée qui sort une tension
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#6 Message par 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

Broche en entrée qui sort une tension
Jérémy
Administrateur du site
Administrateur du site
Messages : 2750
Âge : 46
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#7 Message par 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 !!!

Broche en entrée qui sort une tension
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#8 Message par 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 4 invités