Bonjour à tous,
Voilà, je tente de faire du C, et j'ai un soucis de "facteur 16".
En testant le code ci-dessous, je tombe sur des durées de cycles environ 16 fois supérieur à ce qui est prévu.
Auriez vous une idée du problème ?
Merci pour votre aide
#include <pic16f62xa.h>
#define duree1 0x0019
#define duree2 0x001F //2 fois = 1kHz 1F4 ,ormalement
#define duree3 0xFFFF
#define RG RA3
#define OG RB0
#define VG RB1
#define RD RA1
#define OD RA0
#define VD RB4
#define FilBleu RB2
#define FilNoir RA7
int nombre;
void tempo(unsigned int duree);
void main(void)
{
PORTA=0x00;
PORTB=0x00;
CMCON=0b00000111;
EEADR=0b00000000;
OPTION=0b01001110;
OSCF=1; //4MHz soit 1us par instruction
T0IF=0; //
TRISA=0b11100000;
TRISB=0b00000000; //RB2 en sorite notamment
VRCON=0x00;//à enlever ?
FSR=0x0C; //à enlever ?
PORTA=0x00;
PORTB=0x00;
//Tâche principale
while(1){
FilBleu=1; //3 cycles
RG=1; //1 cycle
tempo(100);
FilBleu=0; //3 cycles
RG=0; //1 cycle
tempo(100);
}
}
void tempo(unsigned int duree)
{
// cycles
nombre=duree; //6 cycles
do
{
}
while(nombre--); //1 cycle * durée
}
-----