Programmer un ATMEGA 8515 pour petit projet industrielle

cs_joffrey57 Messages postés 7 Date d'inscription lundi 8 juin 2009 Statut Membre Dernière intervention 12 juin 2009 - 8 juin 2009 à 10:30
cs_badou007 Messages postés 3 Date d'inscription samedi 20 juin 2009 Statut Membre Dernière intervention 20 juin 2009 - 20 juin 2009 à 11:45
Bonjour,

Je suis acutellement en stage dans le cadre de ma 1ère année de BTS système électronique et j'ai donc un projet à traiter.
Mon projet consiste à éviter les remplacement systématiques sur des freins à disque. Au départ après avoir lu la documentation constructeur des freins, j'ai réflechi à ce que j'allais faire comme circuit electronique mais au final j'ai opté pour la solution d'un microcontroleur mais le seul souci c'est la syntaxe du programme pour moi , je sais ce que je veux faire à partir du signal qui m'est donné mais je n'arrive pas à l'écrire;(.
Pour les pièces jointes, j'attendrais d'être chez moi pour pouvoir vous les donner parce que je n'ai pas accès à certaines options(insérer une image...) du net au stage...

<hr />
Toujour plus loin , toujour plus haut

8 réponses

cs_joffrey57 Messages postés 7 Date d'inscription lundi 8 juin 2009 Statut Membre Dernière intervention 12 juin 2009
8 juin 2009 à 13:49
Comment fait-on pour laisser des documents de types .pdf ou .jpg parce que je ne trouve aucune option pour^^

Toujour plus loin , toujour plus haut
0
cs_joffrey57 Messages postés 7 Date d'inscription lundi 8 juin 2009 Statut Membre Dernière intervention 12 juin 2009
11 juin 2009 à 14:00
JE ME PERMET DE RELANCER LE SUJET AVEC LE NOUVEAU PROGRAMME MODIFIE. IL RESTE A VOIR COMMENT METTRE EN PLACE UN TIMER ET UNE INSTRUCTION DE SAUT QUI ME PERMET DE RETOURNER AU DEBUT DU PROGRAMME!

<code>:
/*****************************************************
This program was produced by the
CodeWizardAVR V1.25.7a Evaluation
Automatic Program Generator
© Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project :
Version :
Date : 05/06/2009
Author : Freeware, for evaluation and non-commercial use only
Company :
Comments:

Chip type : ATmega8515
Program type : Application
Clock frequency : 8,000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 128
*****************************************************/

#include <mega8515.h>
#include <delay.h>
#include <math.h>

#define freinV ~PINA.1
#define imageI ~PINA.2
#define convertiV ~PINA.3
#define economiV ~PINA.4
#define ledO ~PORTB.1
#define ledR ~PORTB.2
#define ledV ~PORTB.3
#define warning ~PORTB.4

// Declare your global variables here
unsigned char convertiV1,convertiV2,convertiV3,convertiV4,convertiV5,convertiV6,convertiV7,convertiV8,convertiV9;
unsigned char convertiV10,convertiV11,convertiV12,convertT1;

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port A initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=In
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=T
PORTA=0x00;
DDRA=0xFE;

// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTB=0x00;
DDRB=0xFF;

// Port C initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTC=0x00;
DDRC=0xFF;

// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTD=0x00;
DDRD=0xFF;

// Port E initialization
// Func2=Out Func1=Out Func0=Out
// State2=0 State1=0 State0=0
PORTE=0x00;
DDRE=0x07;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
EMCUCR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;

//Début du programme:

while((PINA.1<=0 && PINA.2<=0)) //test de tension(V) et de courant(I) pour détecter une présence de tension et de courant dans le système
{PORTB.1=1;
PORTB.2=0; //on initialise les led à 0 car on a déja fait un cycle //on initialise les led à 0 car on a déja fait un cycle
PORTB.3=0;} //on initialise les led à 0 car on a déja fait un cycle //Non alimenté alor led orange allumé

PORTB.1=0; //on éteint la le dorange si alimenté et allume la verte
PORTB.3=1;

//--------------------------------------------------------//

convertiV1=PINA.3; //on prend une valeur du signal

delay_ms(19); //on met une tempo de 19ms

convertiV2=PINA.3; //on reprend une autre valeur plus tard que la 1ère
convertT1=convertiV1-convertiV2;
if(convertT1>=0) //Pente montante du signal?
{PORTB.1=1;}
else
{PORTB.2=1;
PORTB.1=0;
PORTB.4=1;
return;}

delay_ms(18);

convertiV3=PINA.3;
convertT1=convertiV2-convertiV3;
if(convertT1<=0) //Pente montante du signal?
{PORTB.1=1;}
else
{PORTB.2=1;
PORTB.1=0;
PORTB.4=1;
return;}

delay_ms(19);

convertiV4=PINA.3;
convertT1=convertiV3-convertiV4;
if(convertT1<=0) //Pente montante du signal?
{PORTB.1=1;}
else
{PORTB.2=1;
PORTB.1=0;
PORTB.4=1;
return;}

delay_ms(18);

convertiV5=PINA.3;
convertT1=convertiV4-convertiV5;
if(convertT1<=0) //Pente montante du signal?
{PORTB.1=1;}
else
{PORTB.2=1;
PORTB.1=0;
PORTB.4=1;
return;}

delay_ms(19);

convertiV6=PINA.3;
convertT1=convertiV5-convertiV6;
if(convertT1<=0) //Pente montante du signal?
{PORTB.1=1;}
else
{PORTB.2=1;
PORTB.1=0;
PORTB.4=1;
return;}

//--------------------------------------------------------------//
//Meme principe avec une pente descendante

convertiV7=PINA.3;

delay_ms(6);

convertiV8=PINA.3;
convertT1=convertiV7-convertiV8;
if(convertT1<=0) //Pente descendante du signal?
{PORTB.1=1;}
else
{PORTB.2=1;
PORTB.1=0;
PORTB.4=1;
return;}

delay_ms(5);

convertiV9=PINA.3;
convertT1=convertiV8-convertiV9;
if(convertT1<=0) //Pente descendante du signal?
{PORTB.1=1;}
else
{PORTB.2=1;
PORTB.1=0;
PORTB.4=1;
return;}

delay_ms(6);

convertiV10=PINA.3;
convertT1=convertiV9-convertiV10;
if(convertT1<=0) //Pente descendante du signal?
{PORTB.1=1;}
else
{PORTB.2=1;
PORTB.1=0;
PORTB.4=1;
return;}

delay_ms(5);

convertiV11=PINA.3;
convertT1=convertiV10-convertiV11;
if(convertT1<=0) //Pente descendante du signal?
{PORTB.1=1;}
else
{PORTB.2=1;
PORTB.1=0;
PORTB.4=1;
return;}

delay_ms(6);

convertiV12=PINA.3;
convertT1=convertiV11-convertiV12;
if(convertT1<=0) //Pente descendante du signal?
{PORTB.1=1;}
else
{PORTB.2=1;
PORTB.1=0;
PORTB.4=1;
return;}

//--------------------------------------------------------//
//Encore une pente montante

convertiV1=PINA.3;

delay_ms(19);

convertiV2=PINA.3;
convertT1=convertiV1-convertiV2;
if(convertT1<=0) //Pente montante du signal?
{PORTB.1=1;}
else
{PORTB.2=1;
PORTB.1=0;
PORTB.4=1;
return;}

delay_ms(18);

convertiV3=PINA.3;
convertT1=convertiV2-convertiV3;
if(convertT1<=0) //Pente montante du signal?
{PORTB.1=1;}
else
{PORTB.2=1;
PORTB.1=0;
PORTB.4=1;
return;}

delay_ms(19);

convertiV4=PINA.3;
convertT1=convertiV3-convertiV4;
if(convertT1<=0) //Pente montante du signal?
{PORTB.1=1;}
else
{PORTB.2=1;
PORTB.1=0;
PORTB.4=1;
return;}

delay_ms(18);

convertiV5=PINA.3;
convertT1=convertiV4-convertiV5;
if(convertT1<=0) //Pente montante du signal?
{PORTB.1=1;}
else
{PORTB.2=1;
PORTB.1=0;
PORTB.4=1;
return;}

delay_ms(19);

convertiV6=PINA.3;
convertT1=convertiV5-convertiV6;
if(convertT1<=0) //Pente montante du signal?
{PORTB.1=1;}
else
{PORTB.2=1;
PORTB.1=0;
PORTB.4=1;
return;}

//-------------------------------------------------------------//

delay_ms(65); //tempo de 65ms

if(12frein fonctionne correctement , si led orange en vérification , si led rouge =>mauvais fonctionnement
}

<hr /><hr />
Toujour plus loin , toujour plus haut
0
cs_joffrey57 Messages postés 7 Date d'inscription lundi 8 juin 2009 Statut Membre Dernière intervention 12 juin 2009
11 juin 2009 à 14:01
C'est un programme en Language C pour précision

<hr />

Toujour plus loin , toujour plus haut
0
cs_joffrey57 Messages postés 7 Date d'inscription lundi 8 juin 2009 Statut Membre Dernière intervention 12 juin 2009
12 juin 2009 à 15:35
Toujour plus loin , toujour plus haut
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_joffrey57 Messages postés 7 Date d'inscription lundi 8 juin 2009 Statut Membre Dernière intervention 12 juin 2009
12 juin 2009 à 15:36
En parlant de chiffre, je me suis apercu que le microcontroleur que je veux utiliser n'est pas muni de convertisseur analogique numérique .
Il y en existe-t-il? Il me faudrait un micro avec 2 convertisseurs interne si possible.
J'ai deux signal a traiter en meme temps.

<hr />

Toujour plus loin , toujour plus haut
0
cs_badou007 Messages postés 3 Date d'inscription samedi 20 juin 2009 Statut Membre Dernière intervention 20 juin 2009
20 juin 2009 à 11:40
bonjour:
j'y connais pas grand chose mais il me semble que pour répéter indéfiniment une partie d'un programme il faut un "while(1){blabla....}"
donc si vous mettez tout ce qui est dans le main(), il sera répété :
void main(void)
{
while(1){..............}
}
Remarque : vous écrivez toujours 12
0
cs_badou007 Messages postés 3 Date d'inscription samedi 20 juin 2009 Statut Membre Dernière intervention 20 juin 2009
20 juin 2009 à 11:42
remarque:
vous mettez toujours 12
0
cs_badou007 Messages postés 3 Date d'inscription samedi 20 juin 2009 Statut Membre Dernière intervention 20 juin 2009
20 juin 2009 à 11:45
remarque :
pourquoi 12<PINAn<9 au lieu de 9<PINAn<12 ?
0
Rejoignez-nous