Bonjour tout le monde,
Je cherche à réaliser une sorte de métronome avec ma carte PICDEM 2 plus démo board.
Voici en gros ce que je veux :
Faire bipper le buzzer à une certaine vitesse en allumant une DEL sur chaque temps pour représenter les 4 temps d'une mesure à 4 temps.
Puis j'aimerais pouvoir faire augmenter ou diminuer le tempo grace aux deux boutons. Bon et si j'arrive à faire tout ça j'essaierai d'afficher des trucs sur l'écran.
J'arrive à faire bipper mon buzzer commeje veux en allumant une DEL sur chaque temps. Maintenant mon problème vient du réglage de la vitesse avec les boutons. Déjà je ne peux pas me servir des deux boutons et avoir les 4 DEL à la fois, parce que un bouton et une DEL sont connectés sur le même bit RB0 de la PORTB.
Pour détecter les appuis sur les bouton j'ai pensé aux interruptions mais j'ai l'impression que le bouton RA4 ne peut pas en déclencher.
Voici mon programme pour l'instant :
J'ai quelques problèmes avec les interruptions. Déjà si je veux modifier une variable de mon programme principal alors que je suis dans l'interruption comment faire?Code:void delay(uns16 millisec); void antirebond(void); #define Cmd_Option 0x00 #include "int16CXX.H" unsigned tempo : 16; #pragma origin 4 interrupt int_server(void) { int_save_registers if (INTF==1) { nb=nb+200; INTF=0; } int_restore_registers } void main() { TRISB=0x01; TRISC.2=0; TRISA=0b11111111; OPTION = 0xCF; GIE=1; uns16 nb=500; while(1) { PORTC.2=1; PORTB=0b00000000; delay(nb); PORTC.2=0; PORTB=0b00000010; delay(nb); PORTC.2=1; PORTB=0b00000100; delay(nb); PORTC.2=0; PORTB=0b00001000; 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++) ; }
Je programme en C avec MPLAB v7.5 et CC5X.
-----