Afficher un message
Vieux 01/04/2016, 09h06   #15
CSYSTEME
Membre trés attaché
 
Avatar de CSYSTEME
 
Date d'inscription: décembre 2011
Localisation: FRANCE , Montelimar
Messages: 974
Thanks: 771
Thanked 1 643 Times in 579 Posts
Pouvoir de réputation: 32
CSYSTEME has a brilliant futureCSYSTEME has a brilliant futureCSYSTEME has a brilliant futureCSYSTEME has a brilliant futureCSYSTEME has a brilliant futureCSYSTEME has a brilliant futureCSYSTEME has a brilliant futureCSYSTEME has a brilliant futureCSYSTEME has a brilliant futureCSYSTEME has a brilliant futureCSYSTEME has a brilliant future
Par défaut

bonjour

je vient de trouver un code sur un autre forum ,

si vous voulez le regarder et le decripter ,

/*********************************************
** Générateur signaux PMH **
**********************************************
** Circuit de mise au point pour **
** ODB / REGULATEUR de vitesse **
** **
** DEV : MEGA2560 **
**********************************************
** Pin / por - Signal **
** A0 - PC0 - Motor speed IN (analog) **
** 04 - PG5 - PMH OUT **
** 05 - PE3 - allumage OUT **
*********************************************/

volatile byte Cmpt_dent; // comptage des dents
volatile boolean moteur; // ON/OFF
volatile byte allumage; // postion allumage

void setup() {
TCCR1A = 0x03; // (WGM1 = Fast PWM)
TCCR1B = 0x18; // (WGM1 = Fast PWM CTC), clk = 0
TIMSK1 = 0x02; // INT sur OCR1A
OCR1A = 65530; // valeur de démarrage moteur
TCCR1B += 0x01; // Prescaler = 1/1, Fclk = 16MHz
DDRG |= 0x20;
DDRE &= 0xDF; // PE5 en entrée
DDRE |= 0x08; // PE3 en sortie
PORTE |= 0x20; // pullup sur PE5
DDRF &= 0xFE; // PF0 en entrée
DDRB |= 0x80; // led en sortie
allumage = 36;
}

ISR(TIMER1_COMPA_vect) { // appelée par T1 sur COMPA
if (Cmpt_dent > 38) { // secteur PMH
if (Cmpt_dent == 41) {
PORTG |= 0x20;
}
} else {
if ((Cmpt_dent & 0x01) == 1) { // dent impaire
PORTG |= 0x20;
} else { // dent paire
PORTG &= 0xDF;
}
}
if (Cmpt_dent == allumage) {
PORTE |= 0x08;
} else {
PORTE &= 0xF7;
}
Cmpt_dent++;
if (Cmpt_dent == 44) Cmpt_dent = 0; // 1 demi-tour fini
}


volatile word accelerateur, charge;

void loop() {
accelerateur = analogRead(A0);
// charge = analogGet(1);
Moteur_set_speed(accelerateur, charge);
}
{
long IC_Val;

IC_Val = 1090909 / accel;
// IC_Val = 1090909 / (accel - depression);
// allumage = depression;
OCR1A = IC_Val;

}

cordialement
CSYSTEME est déconnecté   Réponse avec citation
The Following 2 Users Say Thank You to CSYSTEME For This Useful Post:
Black gees (27/08/2018), manudiag (04/02/2019)