Ejemplo n.º 1
0
int main(){
	
	// Equivalent au TP6-1, pour ecrire un message en memoire
	Memoire24CXXX mem;
	DDRB = 0xFF;
	
	char a[100]="Voici un message secret de la part de Antoine : QQ\n";
	char temp;

	mem.ecriture(0x00,(unsigned char*)&a[0],strlen(a));
	_delay_ms(5);
	mem.ecriture(strlen(a),0xFF); // Pour la fin de la lecture
	_delay_ms(5);
	
	// Eqiovalent au TP6-2, pour envoyer un message vers le PC
	
	initialisationUART();
	
	uint8_t i=0;
	
	mem.lecture(i,(unsigned char*)&temp);

	while (temp != 0xFF) {
		
		transmissionUART ( temp );
		i++;
		mem.lecture(i,(unsigned char*)&temp);
	}
	PORTB=0x01; //Verifiaction de la sortie du while apres la lecture du 0xFF
}
Ejemplo n.º 2
0
int main (){
	
	Memoire24CXXX mem;
	DDRB = 0xFF;
	char a[50]="*E*C*O*L*E* *P*O*L*Y*T*E*C*H*N*I*Q*U*E*";
	char b[50]={'\0'};
	uint8_t temp;
	uint8_t i=0;
	bool egalite=true;
	mem.ecriture(0x00,(unsigned char*)&a[0],strlen(a));
	_delay_ms(5);
	mem.ecriture(strlen(a),0x00);
	_delay_ms(5);
	mem.lecture(0,&temp);
	
	while(temp!=0){
		b[i]=temp;
		i++;
		mem.lecture(i,&temp);
	}
	//b[5]='a'; //Test pour non-egalite
	
	for (uint8_t j = 0; j<strlen(a); j++){
		if (a[j]!=b[j])
			egalite=false;
	}
	
	if(egalite)
		PORTB=0x01;
	else
		PORTB=0x02;
		
	return 0;
}
Ejemplo n.º 3
0
int main(){

        //Initialisation du USART
        initialisationUSART();
        //Initialisation du port B en sortie
        DDRB = 0xFF;
         
        //Déclaration de la chaîne que l'on veut écrire en mémoire, et d'une chaîne vide pour lire.
        uint8_t machaine[255]="Le robot du groupe 0340\n";
       
        
        //Construction (initialisation) d'un objet de type mémoire.
        Memoire24CXXX memoire;

        //Écriture de la chaîne en mémoire LETTRE PAR LETTRE:
        for(uint16_t i=0 ; i<255; i++){
              memoire.ecriture(i,  machaine[i]);
              _delay_ms(5); //Délais pour permettre a la mémoire de se placer.
        }

        char *data;
        for(int i=0; i<255; i++){
                 memoire.lecture(i,(uint8_t *) data,1);
                 transmissionUSART (*data);	
        }
	return 0;
}	
Ejemplo n.º 4
0
void Commande::charger(uint16_t indexMemoire) {
    //Lire instruction dans la memoire
    Memoire24CXXX maMemoire;
    maMemoire.lecture(indexMemoire, &instruction);
    maMemoire.lecture(indexMemoire+1, &operande);
}
Ejemplo n.º 5
0
/**
 * The main function. It does the logic.
 */
int main()
{
	init();

    bool begin = false;
    bool stop = false;

    // Instanciate all classes
    ledManager leds = ledManager();
    MoteurManager engines = MoteurManager();
    Piezoelectrique son = Piezoelectrique();
    Memoire24CXXX mem = Memoire24CXXX();

    Instruction instr;
    uint16_t base_pointer = 0;
    uint8_t boucle_iter = 0;

    for (uint16_t i = 0; i < program_size && !stop; i=i+2 ) {

        // Read the program data
        uint8_t program_data[2];
        mem.lecture(i, program_data, 2);

        instr = Instruction(program_data[0], program_data[1]);

        // If we received a dbt inscruction
        if (begin) {

            switch (instr.opcode) {
                case 0x2: // att (25ms * operand)
                    msleep(25*instr.operand);
                    break;

                case 0x44: // dal (led number)
                    leds.lightOn(instr.operand);
                    break;

                case 0x45: // det (led number)
                    leds.lightOff(instr.operand);
                    break;

                case 0x48: // sgo (fréquence)
                    son.setFrequency(instr.operand);
                    son.start();
                    break;

                case 0x09: // sar
                    son.stop();
                    break;

                case 0x60: // mar
                case 0x61: // mar
                    engines.arreter();
                    break;

                case 0x62: // mav (speed)
                    engines.avancer(instr.operand);
                    break;

                case 0x63: // mre (speed)
                    engines.reculer(instr.operand);
                    break;

                case 0x64: // trd
                    engines.tournerDroite();
                    break;

                case 0x65: // trg
                    engines.tournerGauche();
                    break;

                case 0xC0: // dbc (iterations)
                    base_pointer = i;
                    boucle_iter = instr.operand;
                    break;

                case 0xC1: // fbc (iterations)
                    if (boucle_iter > 0) {
                        boucle_iter--;
                        i = base_pointer;
                    }
                    break;

                case 0xff: // fin
                    //son.stop();
                    //engines.arreter();
                    stop = true;
            }


        } else if (instr.opcode == 0x01) {
            begin = true;
        }
        //usb.send(instr.opcode);
        //usb.send(instr.operand);
    } 

    for(;;){}

    return 0; 
}
Ejemplo n.º 6
0
int main()
{
  initialiser();
  del led(0);

  midi piezzo(&PORTB, &DDRB, 2, 0);
  Memoire24CXXX mem;  // objet mémoire
 
  uint8_t lu = 0, pointLecture = 0; // variables de lecture
  uint8_t compteur = 0, temp = 0; // variable boucle
  bool verifBoucle = false;
  led.clignoter(10,10);
    while(lu != 0x01)   //dbt
    {
        mem.lecture(pointLecture,&lu);
        pointLecture ++ ;
    }
    
    pointLecture++;
    mem.lecture(pointLecture, &lu);
    pointLecture++;

    while(lu != 0xFF)  //fin
    {
        switch(lu)
        {
            case 0x02 : //att
            mem.lecture(pointLecture, &lu);
            delais(25*(uint16_t)lu);
            pointLecture++;
            break ;

            case 0x44 :  //dal
            mem.lecture(pointLecture, &lu);
            led.allumer(1);
            pointLecture++;
            break;

            case 0x45 :  //det
            mem.lecture(pointLecture, &lu);
            led.eteindre();
            pointLecture++;
            break;

            case 0x48 :  //sgo
            mem.lecture(pointLecture, &lu);
            piezzo.jouerNote(lu-40);
            pointLecture ++;
            break;

            case 0x09 : //sar
            piezzo.arreterNote();
            pointLecture++;
            break;

            case 0x62 :  // mav
            mem.lecture(pointLecture, &lu);
	    PORTD |= 0x0C;     //0000 1100
            ajusterPWM(lu<<1, lu<<1);
            pointLecture++;
            break;

            case 0x60 :  //mar1

            case 0x61 :  //mar2

            ajusterPWM(0, 0);
	    delais(400);
            pointLecture++;
            break;

            case 0x63 : //mre
            mem.lecture(pointLecture, &lu);
	    PORTD &= (unsigned char) ~(3<<(2));

	    ajusterPWM(lu<<1, lu<<1);
            pointLecture++;
	    break;

            case 0x64 :  //trd
            ajusterPWM(200, 0);
	    _delay_ms(985);
	    ajusterPWM(0, 0);
	    delais(400);
            pointLecture++;
            break;

            case 0x65 :  //trg
            ajusterPWM(0, 200);
	    _delay_ms(831);
	    ajusterPWM(0, 0);
	    delais(400);
            pointLecture++;
            break;

            case 0xC0 :  //dbc
            mem.lecture(pointLecture, &lu);
            pointLecture++;
            compteur = lu + 1;
            temp = pointLecture;
            verifBoucle = true;

            case 0xC1 :  //fbc
            if(verifBoucle && compteur)
            {
                compteur-- ;
                pointLecture = temp;
            }
            else
	    {
	      pointLecture++;
	      verifBoucle = false;
	    }
            break;
        }

        mem.lecture(pointLecture, &lu);
        pointLecture ++;
    }

    return 0;
}