PICDEM 2 plus bouton RB0
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

PICDEM 2 plus bouton RB0



  1. #1
    invite01336075

    PICDEM 2 plus bouton RB0


    ------

    Bonjour,

    Je programme une PICDEM 2 plus demo board avec MPLAB et CC5X et j'essaye simplement de faire que quand on appuie sur le bouton RB0 des diodes s'allument.

    Mais le bouton poussoir RB0 est sur le bit 0 de la porte B et il y a aussi une DEL sur ce même bit. Et je ne sais pas comment faire alors?
    Il faut connaitre la priorité logique du bouton et de laDEL? Et comment faire alors?

    Et j'ai ensuite une autre question mais concernant le buzzer. Comment faire pour le faire fonctionner? Il faut lui envoyer un signal à une certaine fréquence?

    Merci d'avance,

    -----

  2. #2
    invite01336075

    Re : PICDEM 2 plus bouton RB0

    Qu'est ce qu'il faut ajouter à ce programme pour que sa fonctionne?

    Code:
    void main(void)
    {	
    TRISB=0b00000000;
    	while(1)
    	{
    	PORTB=0b00001100;
    		if(PORTB.0==0)
    		{
    		PORTB=0b00000011;
    		}
    	}
    }
    Je veux allumer RB3 et RB2 si on appuie pas sur le bouton et si on appuie je veux que RB1 et RB0 soient allumées. Je sais qu'il manque forcément quelque chose. Comment faire la différence entre la DEL et le bouton du bit 0 de la porte B?

  3. #3
    invite7a49d0d5

    Cool Re : PICDEM 2 plus bouton RB0

    Bonjour,

    tu ne peux pas utiliser RB0 en sortie (Led) et en entrée (BP) en même temps...

    donc faut mettre le bouton sur RB0, puis des leds sur RB1 à 4...
    puis mettre RB0 en entrée...
    TRISB = 0b00000001; // 1 = RBO IN
    et une résistance dite de "Pull Down"... 10K entre RB0 et la masse...

    et attention, c'est quoi ton PIC? car il faut aussi souvent
    désactiver le convertisseur analogique (ADC) et parfois
    aussi les comparateurs...

    exemple sur un PIC16F877, il faut désactiver l'ADC avec la ligne :
    ADCON0 = 0b00000110;
    et avec un 16F88 :
    ANSEL = 0b00000000;

    bon ensuite un petit texemple de programme :
    Code:
    void main(void)
    {	
    ANSEL = 0b00000000;
    TRISB = 0b00000001;
    	while(1)
    	{
    		if(PORTB.0==0)
    		{
    		  PORTB=0b000001100;
    		}
    		else
    		{
    		  PORTB=0b00011000;
    		}
    	}
    }
    vede
    ;O]
    ______________
    ...

  4. #4
    invite01336075

    Re : PICDEM 2 plus bouton RB0

    Ah ben tout simplement. J'aurais du y penser. Sa marche comme ça merci beaucoup !

    J'ai fais un programme pour tester ça.
    C'est en gros ce que je voulais mais je me demandais si on pouvait pas obtenir différents sons venant du buzzer. Et comment faire pour obtenir un son continu? Et par exemple si je veux lui demander de faire un la, je peux lui demander d'emettre un signal de fréquence 440 hz? (je crois que c'est la fréquence d'un la?)

    Code:
    void delay(uns16 millisec);
    
    void main()
    {
     TRISB=0x01;		
     TRISC.2=0;			
     OPTION = 0xCF; 
     GIE=0;	
    
    	
    
     while(1)
     {
    	while(PORTB.0==0) 
    		{
    		PORTC.2=1;
    		PORTB.1=1;
    		delay(500);
    		PORTC.2=0;
    		PORTB.1=0;
    		delay(500);
    		}
     }
    }
    
    void delay(uns16 millisec)
    
    {
        OPTION = 2 ;
        do {
            TMR0 = 0 ;
            clrwdt() ;  
            while ( TMR0 < 125) ;  
           } while ( --millisec > 0) ;
    }

  5. A voir en vidéo sur Futura
  6. #5
    invite01336075

    Re : PICDEM 2 plus bouton RB0

    En fait c'est bon pour l'instant je m'inquiéte pas pour mon post du dessus.
    En fait j'aimerais bien faire une sorte de métronome.
    J'aimerais faire que le buzzer bip à une certaine vitesse que l'on choisit quand le programme. Et qu'ensuite on puisse l'augmenter ou la diminuer grace à deux bouton. Mais j'arrive pas à ce que les boutons réagissent bien. Il faut que j'appuie plusieurs fois pour que sa marche ou que je garde appuyé.
    Je vois pas trop quoi faire..
    Voici mon programme :
    Code:
    void delay(uns16 millisec);
    void antirebond(void);
    
    unsigned tempo : 16;
    
    void main()
    {
    TRISB=0x01;		
    TRISC.2=0;	
    TRISA=0b11111111;		
    OPTION = 0xCF; 
    GIE=0;
    uns16 nb=500;	
    while(1)
    	{
    	if(PORTB.0==0)
    		{
    		nb=nb-100;
    		antirebond();
    		while(PORTB.0==0);
    		antirebond();
    		}
    
    
    	if(PORTA.4==0)
    		{
    		nb=nb+100;
    		antirebond();
    		while(PORTA.4==0);
    		antirebond();
    		}
    	PORTC.2=1;
    	PORTB.1=1;
    	delay(nb);
    	PORTC.2=0;
    	PORTB.1=0;
    	delay(nb);
    	}
    }
    
    void delay(uns16 millisec)
    
    {
        OPTION = 2 ;
        do {
            TMR0 = 0 ;
            clrwdt() ;  
            while ( TMR0 < 125) ;  
           } while ( --millisec > 0) ;
    }
    
    void antirebond(void)
    {
    for(tempo=0;tempo<5000;tempo++)
    ;
    }
    Merci d'avance!

  7. #6
    invite01336075

    Re : PICDEM 2 plus bouton RB0

    En fait j'ai compris pourquoi sa marchait pas bien. C'est parce qu'il ne teste pas si le bouton est pressé pendant qu'il fait clognoter les DEL. Il regarde puis il fait clignoter les DEL. Mais comment faire pour qu'il fasse les deux à la fois?
    Si je redemande de tester tout le temps c'est lourd et je pense pas que ce soit le meilleur moyen. Mais je vois pas comment faire.

    Et pour faire un zoli métronome j'aimerais que les DEL s'allument les unes à la suite des autres comme pour montrer chaque temps d'une mesure à 4 temps. Mais du coup je ne peux plus me servir du bouton RB0. Et je voulais savoir si il y avait pas moyen de faire un BIP plus sonnore avec le buzzer pour marquer le premier temps d'une mesure par exemple.

    EDIT : Je viens de penser aux interruptions. Je maitrise pas encore ça mais je pense que c'est de ça qu'il faut se servir. Je vais voir ça mais si quelqu'un peut m'expliquer sa m'aiderait bien !

    Merci

  8. #7
    invite7a49d0d5

    Cool Re : PICDEM 2 plus bouton RB0

    re ;O]

    aujourd'hui je ne pourrais t'aider plus...
    ça devrait se calmer à partir de demain...
    en attendant tu peux commencer à lire les excellents cours
    (partie 1 et 2) de Monsieur BigOnOff
    http://www.abcelectronique.com/bigonoff/
    ou encore fouiller dans mes posts pour trouver mes diverses tentatives
    d'explications du fonctionnement des timers et des interruptions
    http://forums.futura-sciences.com/se...archid=4176925

Discussions similaires

  1. Interruption RB0 (int_ext) avec compilateur CCS
    Par invite70684c77 dans le forum Électronique
    Réponses: 10
    Dernier message: 06/05/2009, 15h13
  2. Problème avec les broches spéciales RB0/INT et RA4/T0CKI
    Par Montd'est dans le forum Électronique
    Réponses: 5
    Dernier message: 21/12/2008, 19h14
  3. PIC18F4682 / INT RB0 / Mode Sleep
    Par jorg1n dans le forum Électronique
    Réponses: 24
    Dernier message: 12/12/2007, 22h24
  4. Interruption RB0
    Par invite91a05f0b dans le forum Électronique
    Réponses: 5
    Dernier message: 12/04/2007, 10h45
  5. bouton d'urgence ou bouton tactile?
    Par devilhacker dans le forum Électronique
    Réponses: 31
    Dernier message: 13/02/2007, 23h28
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...