Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

prog ATmega en C : mettre données en flash



  1. #1
    gcortex

    prog ATmega en C : mettre données en flash


    ------

    Bonjour à tous,

    je souhaite afficher 1234 sur des afficheurs 7 segments, avec un buffer SPI.
    j'ai bien 4 symboles, mais je dois encore coder les segments des 10 chiffres:
    FC,60,DA,F2,26,B6,BE,E0,FE,F6. comment ?

    merci

    Code:
    #include <avr/io.h>
    
    void aff(int m, int c, int d, int u)
    {
    	int i;
    	int tab[10];
    	SPDR = tab[m];
    	for (i=0; i<255; i++);
    	PORTB = 0x04;
    	PORTB = 0x00;
    	PORTC = 0x08;
    	SPDR = tab [c];
    	for (i=0; i<255; i++);
    	PORTB = 0x04;
    	PORTB = 0x00;
    	PORTC = 0x04;
    	SPDR = tab [d];
    	for (i=0; i<255; i++);
    	PORTB = 0x04;
    	PORTB = 0x00;
    	PORTC = 0x02;
    	SPDR = tab [u];
    	for (i=0; i<255; i++);
    	PORTB = 0x04;
    	PORTB = 0x00;
    	PORTC = 0x01;
    }
    
    int main(void)
    {
        DDRC = 0x0F;
    	DDRB = 0x2C;
    	SPCR = 0x50;
    	while(1)
        {
            aff(1,2,3,4);
        }
    }

    -----

  2. Publicité
  3. #2
    cherwam07

    Re : prog ATmega en C : mettre données en flash

    Code:
    unsigned char tab[] = {0xFC,0x60,0xDA,0xF2,0x26,0xB6,0xBE,0xE0,0xFE,0xF6};
    Que tu peux même mettre en variable globale comme ça on empile pas 10 valeurs à chaque appel de la fonction.

    Enfin si j'ai bien compris la question...

  4. #3
    ftorama

    Re : prog ATmega en C : mettre données en flash

    Et pour le stocker en Flash:
    Code:
    unsigned char tab[] PROGMEM= {0xFC,0x60,0xDA,0xF2,0x26,0xB6,0xBE,0xE0,0xFE,0xF6};
    Toutes les infos ici:
    http://www.nongnu.org/avr-libc/user-.../pgmspace.html
    Quand un homme a faim, mieux vaut lui aprendre à pecher que de lui donner un poisson.

  5. #4
    gcortex

    Re : prog ATmega en C : mettre données en flash

    oui mais çà sera en RAM non ?

  6. A voir en vidéo sur Futura
  7. Comparatifs

    Gagnez du temps et de l'argent grâce à nos comparatifs de produits. Parmi nos sujets :
  8. #5
    cherwam07

    Re : prog ATmega en C : mettre données en flash

    Ah oui exact, désolé !
    Google propose ca : http://www.nongnu.org/avr-libc/user-.../pgmspace.html

    Ca m'a l'air de coller à ce que tu veux

  9. #6
    gcortex

    Re : prog ATmega en C : mettre données en flash

    là çà marche

    Code:
    #include <avr/io.h>
    
    int tab[]={0xFC,0x60,0xDA,0xF2,0x26,0xB6,0xBE,0xE0,0xFE,0xF6};
    	
    void aff(int m, int c, int d, int u)
    {
    	int i;
    	SPDR = tab[m];
    	for (i=0; i<255; i++);
    	PORTB = 0x04;
    	PORTB = 0x00;
    	PORTC = 0x08;
    	SPDR = tab [c];
    	for (i=0; i<255; i++);
    	PORTB = 0x04;
    	PORTB = 0x00;
    	PORTC = 0x04;
    	SPDR = tab [d];
    	for (i=0; i<255; i++);
    	PORTB = 0x04;
    	PORTB = 0x00;
    	PORTC = 0x02;
    	SPDR = tab [u];
    	for (i=0; i<255; i++);
    	PORTB = 0x04;
    	PORTB = 0x00;
    	PORTC = 0x01;
    }
    
    int main(void)
    {
        DDRC = 0x0F;
    	DDRB = 0x2C;
    	SPCR = 0x70;
    	while(1)
        {
            aff(1,2,3,4);
        }
    }
    merci je regarde ton truc

  10. Publicité

Discussions similaires

  1. Sur PIC18F2550, récupération des données en flash 0x5030
    Par jeanpe dans le forum Électronique
    Réponses: 3
    Dernier message: 16/09/2011, 20h32
  2. comment mettre variable dans flash PIC
    Par guizmo21 dans le forum Électronique
    Réponses: 23
    Dernier message: 22/06/2010, 10h12
  3. Mettre en pause une application flash
    Par pythales dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 05/09/2009, 18h27
  4. Mettre un prog "window" DANS Wine (Ubuntu)
    Par f6bes dans le forum Logiciel - Software - Open Source
    Réponses: 7
    Dernier message: 25/05/2009, 18h12
  5. IC Prog, 18fxxx et données eeprom
    Par Ziki dans le forum Électronique
    Réponses: 4
    Dernier message: 17/10/2007, 16h49
Découvrez nos comparatifs produits sur l'informatique et les technologies.