Bonjour,

Je vous explique mon problème:
Je veux faire tourner un moteur sur une sortie MLI du 16F877, pour cela j'ai un potar de 5kohms relié à une entrée analogique. Mon potar au +5v et à la masse.
Tous fonctionne bien MAIS je voudrais que quant mon potar est au milieu mon moteur ne tourne pas (signal MLI à 0) car en ce moment il est à 50%(tout à fait normal !) et que plus je monte mon potar plus le signal MLI augmente (marche avant du moteur).

Voici pour l'instant le code que j'obtiens:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
 
#include <16F877.h>
#fuses HS,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOCPD,NOWRT
#use delay(clock=6000000)
 
#byte porta   = 0x05
#byte portb   = 0x06
#byte portc   = 0x07
#byte portd   = 0x08
#byte porte   = 0x09
#byte PR2     = 0x92
#byte CCPR1L  = 0x15
#byte CCPR2L  = 0x1B
#byte CCP1CON = 0x17
#byte T2CON   = 0x12
#byte TRISA = 0x85
#byte TRISC = 0x87
#byte TRISB = 0x86
#byte TRISD = 0x88
#byte TRISE = 0x89
 
unsigned int8 mesure=0x00;
 
// declaration des fonctions //
void init(void);
unsigned char conversion(unsigned char voie);
 
/*******************************************************************/
void init(void)
{
TRISA=0xF1;     //broches RA1 RA2 RA3 en sortie
TRISB=0x00;     //broches toutes en sortie
TRISC=0b11111011;//broche RC2 en sortie
PORTA=0b011100;    // initialisation des ports d'entrées et sorties //
PORTB=0x00;
PORTC=0x00;
PR2= 0xFF;  //frequence de la MLI : 250Hz
T2CON=0x07; //validation timer 2 pour MLI
CCP1CON=0x3F;//validation mode MLI
}
 
void main(void)
{ init();
   delay_ms(500);
  setup_adc_ports(0x8E);  //configuration des entrées analogiques
  setup_adc(ADC_CLOCK_DIV_8);//choix de l'horloge du CAN
 
while(1)  //le programme se répète perpétuellement
  {  set_adc_channel(0); //choix entrée AN0 pour le CAN
     delay_us(10);       //délai 10microsecondes obligatoire
     mesure=read_adc();  //lecture résultat conversion
     CCPR1L=mesure;      //envoi de la valeur donnée par le CAN
                         //directement sur la sortie MLI
  }
}
Merci pour vos réponses