Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur l'Assembleur !

Modérateur : mazertoc

Musique Rtttl avec NCO1
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 1862
Enregistré en : juillet 2016
Localisation : Terre

#1 Message par Temps-x » mar. 8 juin 2021 00:13

Bonjour tout le monde,

Comme promis je m'attaque à la mise des sons Rtttl dans le Pic18F27K42, j'ai donc utilisé comme je l'avais mentionné la norme NCO1 conseillé par notre confrère paulfjujo

Code pour une fréquence théorique de 1000 Hz

Code : Tout sélectionner


      BANKSEL PIR4                        
; bank 57

      bcf PIR4
,NCO1IF                     ; désacivation des interruptions sur NCO1 

      BANKSEL RC7PPS                      
; bank 58 

      movlw 0x26                          
; mode NCO1 
      movwf RC7PPS                        
; sortie sur RC7       

      BANKSEL NCO1CON                     
; bank 63

ini_nco1

      clrf NCO1CON                        
;

      clrf NCO1ACCU                       ;
      clrf NCO1ACCH                       ;
      clrf NCO1ACCL                       ;

      movlw 0x00                          ; 
      movwf NCO1INCU                      
;

      movlw 0xFF                          ; pour avoir 1000 Hz = H'FFFF'
      movwf NCO1INCH                      ; 
    
      movlw 0xFF                          
; 
      movwf NCO1INCL                      
;

      movlw B'00000100'                   ; source d'horloge 32 khz
      movwf NCO1CLK                       ; 
   
      bcf NCO1CON,PFM                     ; NCO1 fonctionne en mode fréquence d'
impulsion cycle à 50% (bit 0) 

      bcf NCO1CON
,NCO1POL                 ; le signal de sortie NCO1 n'est pas inversé (bit 4) 

      bsf NCO1CON,NCO1EN                  ; mise en service (bit 7)



Ci joins les fichier pour ceux qu'ils veulent l'essayer dans leur Pic18F27K42, avec cette fois-ci la source ASM complète : Prototype.zip

On se servant de la formule

Équation du NCO1.PNG

Je trouve pour 1000 Hz une valeur à mettre dans les registres H'FFFF' (65535), une fois fait, et le pic programmé je trouve au fréquencemètre 963 Hz.

Je m’aperçois que la formule ne fonctionne pas, je me retrouve avec une imprécision, il est donc impossible de ce fier à la formule pour créer des notes de musiques, qui demande beaucoup de précision.

Moi qui croyais avoir la possibilité de créer des mélodies avec cette méthode, c'est rappé, à moins que quelle qu'un connaisse le pourquoi de la chose.

Pour vous montrer la précision des notes, voici un tableau avec la fréquence des notes de musique

Fréquence des notes de musique.jpg





==> A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par Temps-x le mar. 8 juin 2021 12:24, modifié 3 fois.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Musique Rtttl avec NCO1
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1161
Âge : 67
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#2 Message par F6FCO » mar. 8 juin 2021 10:42

Hello,

J'ai cherché sur le net mais rien trouvé de bien clair, à part que c'est des sons complexes, tu peux expliquer ce que sont les sons rtttl ?
Une porte nand prend 2 bits en entrée... cochonne va !!! :langue:

Musique Rtttl avec NCO1
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 1903
Âge : 70
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#3 Message par paulfjujo » mar. 8 juin 2021 11:24

bonjour,

Temps-x a écrit :
je trouve pour 1000 Hz une valeur à mettre dans les registres H'FFFF' (65535), une fois fait, et le pic programmé je trouve au fréquencemètre 963 Hz.
Je m’aperçois que la formule ne fonctionne pas, je me retrouve avec une imprécision, il est donc impossible de ce fier à la formule pour créer des notes de musiques, qui demande beaucoup de précision.
Moi qui croyais avoir la possibilité de créer des mélodies avec cette méthode, c'est rappé, à moins que quelle qu'un connaisse le pourquoi de la chose.



Attention voir dataheet page 93
le 32KHz coorespondrait plutot à ... Frequence dispo 31Khz ou 31,25KHz

à verifier en mettant RA6 clockout dans la config bit ..et frequencemetre dessus
je retesterai aussi de mon coté en C ..
Aides toi, le ciel ou FantasPic t'aideras

Musique Rtttl avec NCO1
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 1862
Enregistré en : juillet 2016
Localisation : Terre

#4 Message par Temps-x » mar. 8 juin 2021 12:15

Re

F6FCO a écrit :Source du message tu peux expliquer ce que sont les sons rtttl ?


Voici une explication ICI

Le programme pour lire est composé des sons Rtttl avec des cours exemple ICI

paulfjujo a écrit :Source du message Attention voir dataheet page 93
le 32KHz coorespondrait plutot à ... Frequence dispo 31Khz ou 31,25KHz


Ok, pour voir si ta théorie est la bonne je prends 500 Hz comme fréquence de sortie avec un calcul sur une horloge de 31250 Hz

31250/((2*500Hz)*1048575) = 33554 décimal soit 0x8312 hexadécimal

:-D Essai en réelle... :roll: trouvé au fréquencemètre 494 Hz :sifflotte: bon on se rapproche de la vérité, manque 6 Hz... c'est énorme en musique(voir le tableau en post #1)

On inversent la formule je trouve une fréquence d'horloge de 30875 Hz c'est très près de 31000 Hz


Test sur RA6
CONFIG CLKOUTEN = ON ; Bit d'activation de la sortie d'horloge

J'ai rien qui sort...
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Musique Rtttl avec NCO1
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1161
Âge : 67
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#5 Message par F6FCO » mar. 8 juin 2021 14:45

Merci pour le lien,
J'ai été écouter la vidéo mais je n'ai pas perçé plus parce que mon neurone est actuellement branché conversion A/D et je suis monotâche.
Mais j'ai apprécié et çà rejoint un de mes (multiples) projets futurs. J'avais déjà bricolé avec de la musique simple ( viewtopic.php?f=20&t=683 ), l'idée sera de coupler 5 PIC qui feront chacun leur note pour simuler les 5 cordes d'une guitare et pouvoir ainsi jouer des accords et des partitions de guitare complexes, genre Flamenco ( j'aime bien le flamenco, des fois je me fais mal et çà y ressemble).
Mais bon c'est pour plus tard, on ne peut pas être partout :-)
Une porte nand prend 2 bits en entrée... cochonne va !!! :langue:

Musique Rtttl avec NCO1
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 1903
Âge : 70
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#6 Message par paulfjujo » mar. 8 juin 2021 17:54

Temps-x a écrit :...
Essai en réel... trouvé au fréquencemètre 494 Hz bon on se rapproche de la vérité, manque 6 Hz... c'est énorme en musique(voir le tableau en post #1)
On inversent la formule je trouve une fréquence d'horloge de 30875 Hz c'est très près de 31000 Hz


6/500=> erreur de 1,2%

Attention avec FSOC interne , on peut avoir + - 3% via le reglage de OSCTUNE ..
donc on pourrait corriger cette erreur .
FOSC interne peut aussi varier avec la valeur de VCC ( sur la gamme 3.3 à 5V)

reste à voir plutot avec un pilotage par Quartz au lieu de FOSC interne
si cela peut eviter des ajustements manuels.

:!!: j'ai pas encore testé de mon coté ...
Aides toi, le ciel ou FantasPic t'aideras

Musique Rtttl avec NCO1
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 1862
Enregistré en : juillet 2016
Localisation : Terre

#7 Message par Temps-x » mar. 8 juin 2021 19:35

Re

F6FCO a écrit :Source du message J'ai été écouter la vidéo mais je n'ai pas percé plus parce que mon neurone est actuellement branché conversion A/D et je suis monotâche.

C'est une veille vidéo, qui ne reflète pas la réalité, depuis le programme à considérablement était améliorer (voir la partition de chabb avec le nouveau programme ICI)

paulfjujo a écrit :Source du message reste à voir plutot avec un pilotage par Quartz au lieu de FOSC interne
si cela peut eviter des ajustements manuels.


Mon bute c'est de ne pas bidouiller manuellement, car je veux que tout le monde puisse profiter de ce programme quand il fonctionnera :sifflotte:

- on mets le programme dans le pic, on lit la partition qui se trouve en mémoire programme.

Je vais essayer avec un quartz à 20 Mhz, dans la soirée ....

paulfjujo a écrit :Source du message :!!: j'ai pas encore testé de mon coté ...


:roll: Prends ton temps Paul, rien ne presse :wink:

==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Musique Rtttl avec NCO1
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 1903
Âge : 70
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#8 Message par paulfjujo » mar. 8 juin 2021 20:14

Test reel avec appli en MikroC
Via le terminal , je peux modifier la source NCO1clock, l'INCREMENT ,
le mode de commande : via clavier terminal, ou valeur ADC 12 bit
et j'ai rajouté la possibilit de modif in line du OSCTUNE
gamme de -32 à + 31 pour -3% à +3%



Help
Help commandes :
NCO1CLK= (0 à 7) :
CONSIG=xxxxxxx 7 digits
INCREM=xxxxxxx 7 digits
MODE=x 0=Keyboard 1=Analog
OSCTUNE=+ ou -


NCO1CLK=4 (31KHz)

avec Osctune=0 j'ai 505Hz pour une consigne de 33825 correspondant bien à 500Hz ( en fait 499.999 !)
avec le clavier j'ai baissé jusqu'à OSCTUNE=-8 pour obtenir 500 HZ via mon analyser SQA 50MHz
A la limite on pourrait donc utiliser la liaison UART pour calibrer le LA 440HZ ..
et mettre le coeff correcteur OSCTUNE en EEPROM .. pour économiser un quartz + 2 capa

OSCTUNE=-
Mode 0=Keyboard NCO1CLK_Choix=4 Increment = 33825, Freq Output= 499.999
OSCTUNE=-
Decremente OSCTUNE)
OSCTUNE= -12
Mode 0=Keyboard NCO1CLK_Choix=4 Increment = 33825, Freq Output= 499.999
Mode 0=Keyboard NCO1CLK_Choix=4 Increment = 33825, Freq Output= 499.999

NCO1_18F27K42_500Hz_adjut_via_OSCTUNE.jpg


nota: j'ai bien ma sortie RA6 Clockout

_18F27K42_NCO1_tests_2021-06.zip
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aides toi, le ciel ou FantasPic t'aideras

Musique Rtttl avec NCO1
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 1862
Enregistré en : juillet 2016
Localisation : Terre

#9 Message par Temps-x » mer. 9 juin 2021 00:21

Re

Merci ! pour ton test,

Je vais faire un test en jouant sur le registre OSCTUNE, :roll: mais !! je me pose une question :?:

Si une fréquence est bonne parce qu'elle a été calibrer avec le registre OSCTUNE, par exemple dans ton cas c'est 500 Hz, les autres fréquence vont t'ils suivent le même décalage.....

Si les décalages se suivre, c'est tout bon, dans ce cas là ont peut écrire un petit programme pour réglage automatique du registre OSCTUNE

:roll: Pour un réglage automatique, j'ai une petite idée : On fabrique une fréquence de 1000 Hz avec le registre NCO1, puis le programme vérifie si il y a bien 1000 Hz, si c'est pas le cas le programme augment ou diminue la valeur de OSCTUNE, une fois fait le programme refait une vérification jusqu’à temps que la valeur soit bonne.

J'ai hâte d'écrire le programme avec réglage automatique, ça doit être marrant à faire, et surtout une bonne combine. :wink:

Je vais regarder pourquoi je n'ai pas de sortie sur RA6

Merci ! pour l'aide apporté.

==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Musique Rtttl avec NCO1
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 1903
Âge : 70
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#10 Message par paulfjujo » mer. 9 juin 2021 08:55

bonjour temps-X et à tous,

Temps-x a écrit :Si une fréquence est bonne parce qu'elle a été calibrer avec le registre OSCTUNE, par exemple dans ton cas c'est 500 Hz, les autres fréquence vont t'ils suivent le même décalage.....


l'erreur est proportionnelle en %, donc la correction doit s'appliquer à toutes les frequences

Temps-x a écrit : On fabrique une fréquence de 1000 Hz avec le registre NCO1, puis le programme vérifie si il y a bien 1000 Hz, si c'est pas le cas le programme augmente ou diminue la valeur de OSCTUNE, une fois fait le programme refait une vérification jusqu’à temps que la valeur soit bonne.
J'ai hâte d'écrire le programme avec réglage automatique, ça doit être marrant à faire, et surtout une bonne combine. :wink:


:!!: tu ne peux pas simplement ...
because ta mesure de frequence est AUSSI basée sur le timing FOSC
donc la proportionalitée est conservée , la mesure restera la meme

idea ! à moins de prendre une base de temps differente ..
exemple le 1Hz de la sortie SQWE RTC -> RB0 -> interrupt comptage pendant precisément 1 seconde
...independant de FOSC.
Aides toi, le ciel ou FantasPic t'aideras


Retourner vers « Langage ASM »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 6 invités