[Projet] Jouer la musique de Tetris avec un Pic ;op - Page 2
Répondre à la discussion
Page 2 sur 2 PremièrePremière 2
Affichage des résultats 31 à 43 sur 43

[Projet] Jouer la musique de Tetris avec un Pic ;op



  1. #31
    invite7a49d0d5

    Cool Re : [Projet] Jouer la musique de Tetris avec un Pic ;op


    ------

    ps :

    le premier post de ce fil explique la "spécifité" de la configuration
    de la vitesse de l'oscillateur (FOsc) du 18F4550 selon le quartz...
    http://www.mikroe.com/forum/viewtopic.php?t=10646

    donc t'es bon avec :
    Oscillator = HS+PLL, USB
    CPU System Clock = 96MHZ PLL DIV 2
    Oscillator Selection = DIVIDED BY 12 (48Mhz INPUT)

    Pour avoir une horloge à 48Mhz... avec un Quartz 48Mhz...

    et l'on voit qu'avec le 18F4550 on peut atteindre cette vitesse (FOsc = 48Mhz)
    avec un "petit" Quartz 4Mhz, et Oscillator Selection = NO DIVIDE (4Mhz IN)...

    -----

  2. #32
    invite7a49d0d5

    Cool Re : [Projet] Jouer la musique de Tetris avec un Pic ;op

    re ps ;O]
    Citation Envoyé par vede Voir le message
    (...)
    tentes un exemple (petit programme) qui lance la PWM,
    avec PR2=80h et en fixant CPP1RL(duty) = 40h (duty = 50%)
    et sans plus modifier CCP1RL et CCP1CON (le duty)...
    un petit programme du style
    Code:
    void main(void)
    {
        PR2    = 0b10000000;  // Définit la fréquence du Timer2(PWM) = 93.5Khz
        CCPR1L = 0b01000000   // définit duty = 50%
        T2CON  = 0b00000100;  // Active le Timer2
        CCP1CON = 0b001100;   // PWM ON
        while(1)
        {
            // ben rien... mais on a environ 93Khz/50% fixe en sortie CCP1...
        }
    }
    tu peux aussi tenter de tester d'autres fréquences...
    en mettant PR2/2 dans CCPR1L pour avoir un duty de 50%...
    ;O]

    .

  3. #33
    skydarc

    Re : [Projet] Jouer la musique de Tetris avec un Pic ;op

    apres pas mal de test, je te confirme bien que j'ai 7.75kHz en sortie avec la configuration suivante de fusible:
    Fosc=HS
    CPU System Clock postscaler= 96MHZ PLL DIV 2
    96MHz precaler div = DIVIDED BY 12 (48Mhz INPUT).

    bref j'ai fait des regalage et j'arrive a eliminer ma frequence de font en mettant le prescaler a 6 et en ajoutant un delay dans ma boucle for.

    e, fait je crois comprendre que par le fait j'ai augmenté la frequence du PWM en changeant le prescaler, car ma frequence n'est plus audible, et j'ai ralenti ma lecture en ajoutant un delay.

    tout ca est un peu brouillon, mais le principal c'est que ca fonctionne. je vais ajouter un timer dans la boucle pour eviter de passer par un delay.

    pour info, je me suis appercu que je n'avais pas mis de delay dans ma premiere version de mon programme, cela veut dire que j'etais en limite de debit de lecture, et que ma boucle etais lue a 8kHz en natif.

    encore merci

  4. #34
    skydarc

    Re : [Projet] Jouer la musique de Tetris avec un Pic ;op

    bonjour,

    je reprends le contact simplement pour une petite info.

    j'en suis a lire correctement mes fichiers wav et j'ai pourtant 600cycles dans ma boucle donc le débit est plus que correcte.

    j'ai même une puissance sonore du tonnerre car j'ai ajouter un petit ampli de 1w (s'en est même assourdissant des fois ).


    par contre je rencontre un problème que j'ai du mal a résoudre. lorsque je change de fichier pour jouer un effet sonore, j'ai un claquement dans le HP. je pense que cela est du a un blanc dans les données envoyées dans le PWM.

    j'ai essayé de filtré avec un passe haut mais que nenni, il reste la. je me suis dit qu'avec un buffer je pourrais régler le problème, mais je n'ai aucune idée de la façon de procéder.

    je sais vaguement que je dois remplir un tableau et le vider lorsque les données n'arrivent pas mais bon c plus facile a dire qu'a faire.

  5. #35
    invite7a49d0d5

    Cool Re : [Projet] Jouer la musique de Tetris avec un Pic ;op

    Salut,

    d'abords il ne faut pas désactiver la PWM... ça fait un "plop"...

    moi j'avais réussi à bien atténuer avec un filtre passe bas 4Khz...

    sinon peut-être logiciellement, un prenant la dernière valeur
    et en la "variant" +/-1 pour "moduler la PWM... par exemple...
    ou peut-être en modulant la PWM avec 0/1 tant que pas de valeur...
    à tester...

    vede
    ;O]
    ___________
    ...

  6. #36
    skydarc

    Re : [Projet] Jouer la musique de Tetris avec un Pic ;op

    le probleme c'est que je crois pas la desactiver la PWM.

    pour la partie logiciel je vais essayer d'envoyer une info bidon en attendant les premieres octets du fichier sonore suivant. je te poste mon code tu me dis ce que tu en penses:

    unsigned char SD_PlayFile()
    {
    unsigned long PlaySector = DataSector+((StartCluster+Play Cluster)-2)*SectorByCluster; // calcule du secteur en court

    unsigned int r1,temp;
    unsigned int i,j=0,k=0;
    unsigned char retry=0;

    do
    {
    r1 = SD_SendCommand(0x51, PlaySector+NbrsSector, 0, 0xFF);//read command Cmd17.

    retry++;
    if(retry>10) return 1; //overtime,exit
    } while(r1 != 0x00);
    cs=0;
    while(SPI_WriteByte(0xff)!= 0xfe) //wait to receive the start byte.
    {
    if(retry++ >100) return 1; //overtime,exit
    }
    for(i=0; i<512; i++) //read 512 data
    {
    OctetLu++;
    temp = SPI_WriteByte(0xff);


    Delay10TCYx(60+playSpeed); // delay pour que la boucle tourne a 16kHz + ajout d'une varaible recupérée dans "config.txt" pour faire varier la vitesse de lecture

    if(OctetLu>40) // evite de lire l'entete du fichier wave
    {
    CCPR1L = temp >> 1; // module la PWM
    CCP1CONbits.DC1B1 = (temp%2); // module la PWM

    }

    if(OctetLu > TotalNbrsOctet) // si fin de lecture du fichier alors arret de la fonction et renvoi de 0
    {
    PlayCluster =0;
    NbrsSector =0;
    OctetLu=0;
    return 0;
    }
    }

    SPI_WriteByte(0xff); //false 16-bits crc
    SPI_WriteByte(0xff);

    cs=1;

    NbrsSector++;
    if(NbrsSector > 64){ReadFAT16();NbrsSector =0; } // si fin de cluster lecture de la fat pour continuer la lecture

    return 1;
    }

  7. #37
    invite7a49d0d5

    Cool Re : [Projet] Jouer la musique de Tetris avec un Pic ;op

    re ;O]

    en neffet... tu désactives pas la PWM...
    donc faudrait tenter en atténuant le signal PWM (en mettant duty = 1%)
    après la réception du dernier octet et dans l'attente du prochain
    fichier...
    dans l'attente d'autres avis...

  8. #38
    skydarc

    Re : [Projet] Jouer la musique de Tetris avec un Pic ;op

    cool j'ai enfin pu avoir un resultat correct. malheureusement la valeur "d'attente" du duty n'attenue pas pour tous les fichiers. il me reste deux options, soit je calcule d'une facon ou d'une autre la bonne valeur selon le fichier lu encourt, soit je lance une procedure qui fait lentement diminuer le duty (et qui le fais monter) a chaque transitions (une sorte de fading).

    en tout ca merci pour le tuyau, t'es un chef

  9. #39
    invite7a49d0d5

    Cool Re : [Projet] Jouer la musique de Tetris avec un Pic ;op

    rere ;O]

    c'est exactement ce que je pensais...
    idéalement un "fading" de la dernière valeur jusqu'à 1%...
    ET?
    un fading de 1% à la première valeur du nouveau fichier
    ;O] ;O] ;O]

  10. #40
    invite7a49d0d5

    Cool Re : [Projet] Jouer la musique de Tetris avec un Pic ;op

    rerere ;O]

    et vois aussi au niveau de tes fichiers audios...
    car si ils ont un "pic" dans les premiers/derniers échantillons...
    vaut mieux le(s) supprimer (avec Audacity par exemple, en zoomant...) ;O]

    en fait si tu "préparais" tes fichiers, en faisant un très court fading "volume" au début et à la fin
    ben plus besoin de coder le fading...

  11. #41
    invite7a49d0d5

    Cool Re : [Projet] Jouer la musique de Tetris avec un Pic ;op

    ps :

    oups...
    pas un fading du volume au début et à la fin du fichier...
    mais un fading des échantillons (zLast à 0 et 0 à zNext)...
    et oui... (parce que si volume = 0, échantillon = 127 ;O])...

    (avec le "crayon", en zoommant beaucoup ;O])

  12. #42
    invite29971eb1

    Re : [Projet] Jouer la musique de Tetris avec un Pic ;op

    Tetris à partir de 2m24:
    http://www.youtube.com/watch?v=m1pch...ayer_embedded#!

    mais toute la vidéo est à regarder vu le talent de ce mec....et le fait qu'il ait refait entièrement l'électronique du synthé, avec 2 AVRs seulement, 1 pour le clavier, l'autre pour la génération des sons, reliés par une interface MIDI

  13. #43
    skydarc

    Re : [Projet] Jouer la musique de Tetris avec un Pic ;op

    alors la je dis "chapeau bas monsieur". il a du en passer des heures.

    pour ma part j'ai enfin trouvé l'erreur.... je me mettrais des claques des fois.

    en fait cela n'a rien a voir avec une perte de donnée ou qqch du genre... j'ai simplement pas ete suffisamment loin dans l'élimination des premières octets d'entête des fichiers wav. toujours est il que je donne quand meme une valeur moyenne a mon PWM (soit 64 en décimales) et je m'arrange pour que tout mes fichiers sonores finissent et commencent a zéro.

Page 2 sur 2 PremièrePremière 2

Discussions similaires

  1. Avoir des acouphènes et jouer de la musique
    Par inviteaed394f0 dans le forum Santé et médecine générale
    Réponses: 2
    Dernier message: 06/07/2009, 11h23
  2. Projet PIC avec Proton +
    Par invitef06dda3e dans le forum Électronique
    Réponses: 2
    Dernier message: 15/01/2007, 17h22
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...