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 ---
- 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 ---
Modérateur : mazertoc
Musique Rtttl avec NCO1
Bravo Temps-X,
Le résultat est top. Ça fonctionne bien
@++
Le résultat est top. Ça fonctionne bien
@++
Musique Rtttl avec NCO1
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonjour,
quelques détails à preciser (18F27K42) :
OSCTUNE n ' intervient plus sur FOSC .avec l'usage d'un QUARTZ .
ni LFINTOSC !
mais reste efficace avec HFINTOSC 31.25KHz
Problematique si Q=20MHz , car le MCU ne peut pas suivre avec PLL=1 , à 20x4=> 80MHz theorique , hors tolerances.
mais OK avec Q<=16MHz =>et avec PLL => 16x4 = 64MHz
quelques détails à preciser (18F27K42) :
Temps-x a écrit : attention : OSCTUNE n'intervient plus, si on utilise un QUARTZ ...
OSCTUNE n ' intervient plus sur FOSC .avec l'usage d'un QUARTZ .
ni LFINTOSC !
The Low-Frequency Internal Oscillator (LFINTOSC) is a factory-calibrated 31 kHz internal clock source.
mais reste efficace avec HFINTOSC 31.25KHz
The HFINTOSC is factory-calibrated. This internal oscillator can be adjusted in software by writing to the OSCTUNE register
Temps-x a écrit : De plus quand le quartz fonctionne, il faut absolument pas activer la PLL sur le registre OSCCON1, car ça diminue la vitesse du microcontrôleur.
Problematique si Q=20MHz , car le MCU ne peut pas suivre avec PLL=1 , à 20x4=> 80MHz theorique , hors tolerances.
mais OK avec Q<=16MHz =>et avec PLL => 16x4 = 64MHz
Musique Rtttl avec NCO1
Bonsoir paulfjujo, venom, et tout le forum,
tu as raison, je me suis fait avoir......
Bon, maintenant il faut que je regarde d’où provient mon erreur sur les temps des notes, si il y a erreur.....
pour ton aide
A+
paulfjujo a écrit :Source du message Problematique si Q=20MHz , car le MCU ne peut pas suivre avec PLL=1 , à 20x4=> 80MHz theorique , hors tolerances.
mais OK avec Q<=16MHz =>et avec PLL => 16x4 = 64MHz
tu as raison, je me suis fait avoir......
Bon, maintenant il faut que je regarde d’où provient mon erreur sur les temps des notes, si il y a erreur.....
pour ton aide
A+
Musique Rtttl avec NCO1
Bonsoir paulfjujo, venom, et tout le forum,
Ça y et j'ai trouvé d’où venait mon erreur... (ça venait du code ASM, sur une simple soustraction ) les temps son correct, et les notes aussi, tout est ok, je vais pouvoir vous parlez de tout cela en détail.
Je vous expliquerais comment il faut faire pour gérer une mélodie à partie d'un fichier Rtttl, pour le mettre dans votre pic, vous allez voir, c'est tout simple.
Je mets tout en Post #1 dans la semaine en court.
A+
Ça y et j'ai trouvé d’où venait mon erreur... (ça venait du code ASM, sur une simple soustraction ) les temps son correct, et les notes aussi, tout est ok, je vais pouvoir vous parlez de tout cela en détail.
Je vous expliquerais comment il faut faire pour gérer une mélodie à partie d'un fichier Rtttl, pour le mettre dans votre pic, vous allez voir, c'est tout simple.
Je mets tout en Post #1 dans la semaine en court.
A+
Musique Rtttl avec NCO1
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonjour TempsX et à tous,
je viens juste de recompiler ton source version 2
avec MPLABX
avec juste 3 petites modifs :
adaptation (hardware) à ma carte 18F :
changement affectation led1 -> Led sur RA4
changement sortie NCO -> RC0
rajout : togggle Led1 pendant la musique -> micro effet psychedelique !
pour ce gros travail réussi !
je viens juste de recompiler ton source version 2
avec MPLABX
Code : Tout sélectionner
make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make[1]: Entering directory 'C:/MPLABX_Projects/NCO1_TempsX_18F27K42_Test.X'
make -f nbproject/Makefile-default.mk dist/default/production/NCO1_TempsX_18F27K42_Test.X.production.hex
make[2]: Entering directory 'C:/MPLABX_Projects/NCO1_TempsX_18F27K42_Test.X'
"C:\Program Files (x86)\Microchip\MPLABX\v5.30\mpasmx\mpasmx.exe" -q -p18f27k42 -l"build/default/production/NCO_Prototype2_TempsX_rev_pf.lst" -e"build/default/production/NCO_Prototype2_TempsX_rev_pf.err" -o"build/default/production/NCO_Prototype2_TempsX_rev_pf.o" "NCO_Prototype2_TempsX_rev_pf.asm"
"C:\Program Files (x86)\Microchip\MPLABX\v5.30\mpasmx\mplink.exe" -p18f27k42 -w -m"dist/default/production/NCO1_TempsX_18F27K42_Test.X.production.map" -z__MPLAB_BUILD=1 -odist/default/production/NCO1_TempsX_18F27K42_Test.X.production.cof build/default/production/NCO_Prototype2_TempsX_rev_pf.o
MPLINK 5.09, LINKER
Device Database Version 1.49
Copyright (c) 1998-2011 Microchip Technology Inc.
Errors : 0
MP2HEX 5.09, COFF to HEX File Converter
Copyright (c) 1998-2011 Microchip Technology Inc.
Errors : 0
make[2]: Leaving directory 'C:/MPLABX_Projects/NCO1_TempsX_18F27K42_Test.X'
make[1]: Leaving directory 'C:/MPLABX_Projects/NCO1_TempsX_18F27K42_Test.X'
BUILD SUCCESSFUL (total time: 3s)
Loading code from C:/MPLABX_Projects/NCO1_TempsX_18F27K42_Test.X/dist/default/production/NCO1_TempsX_18F27K42_Test.X.production.hex...
Loading completed
**************************************
MPLAB IPE V5.30 + Pickit4
**************************************
Connecting to MPLAB PICkit 4...
Currently loaded versions:
Application version............00.05.41
Boot version...................01.00.00
Script version.................00.03.33
Script build number............0540a22e50
Target voltage detected
Target device PIC18F27K42 found.
Device Revision Id = 0xa0010000
Loading code from C:\MPLABX_Projects\NCO1_TempsX_18F27K42_Test.X\dist\default\production\NCO1_TempsX_18F27K42_Test.X.production.hex...
2021-09-09 12:05:13 +0200 - Hex file(s) loaded successfully.
2021-09-09 12:05:19 +0200 - Programming...
*****************************************************
Calculating memory ranges for operation...
Erasing...
The following memory area(s) will be programmed:
program memory: start address = 0x0, end address = 0x27f
program memory: start address = 0x8000, end address = 0x9a7f
configuration memory
EEData memory
User Id Memory
Programming/Verify complete
2021-09-09 12:05:35 +0200 - Programming complete
avec juste 3 petites modifs :
adaptation (hardware) à ma carte 18F :
changement affectation led1 -> Led sur RA4
changement sortie NCO -> RC0
rajout : togggle Led1 pendant la musique -> micro effet psychedelique !
Code : Tout sélectionner
;----------------------------------- "fréquence de la note" -----------------------------------
load_nco1
btg led1
clrf NCO1ACCU ;
clrf NCO1ACCH ;
clrf NCO1ACCL ;
tblrd*+
pour ce gros travail réussi !
Musique Rtttl avec NCO1
Bonjour paulfjujo, et tout le forum,
Attention dans la dernière version du logiciel Rtttl il y a 4 clés de 5 octets qui est paramétrable (au choix).
La clé est la même pour tous, Début du titre (5 octets) , Fin du titre (5 octets) et Début de la mélodie (5 octets), Fin de la mélodie (5 octets).
J'ai fait ça pour sauter d'une mélodie à une autre sans qu'il y et plusieurs adresse, de plus ça permet de noter tout les titres dans une liste.
Dans la dernière version en post #1 j'ai fait un exemple pour rechercher la clé, et pour jouer la mélodie, ou passer à la mélodie suivante en appuyant sur un bouton poussoir.
De plus Il y a aussi un exemple pour le mode SPI software pas encore fait pour le mode I²C, mais je compte le faire
J'aurais encore beaucoup de chose à t'expliquer, mais, on verras par la suite en fonction de ta demande.
Ce Pic18F27K42 est très capricieux au nouveau de sa ram, alors attention qu'on vous utilisez la ram de ce Pic.
Je vais modifier le logiciel Rtttl pour avoir l'option, ne pas avoir de clé, n'y de titre, ou, avoir une clé avec titre.
pour ton essai
A+
paulfjujo a écrit :Source du message je viens juste de recompiler ton source version 2
avec MPLABX
Attention dans la dernière version du logiciel Rtttl il y a 4 clés de 5 octets qui est paramétrable (au choix).
La clé est la même pour tous, Début du titre (5 octets) , Fin du titre (5 octets) et Début de la mélodie (5 octets), Fin de la mélodie (5 octets).
J'ai fait ça pour sauter d'une mélodie à une autre sans qu'il y et plusieurs adresse, de plus ça permet de noter tout les titres dans une liste.
Dans la dernière version en post #1 j'ai fait un exemple pour rechercher la clé, et pour jouer la mélodie, ou passer à la mélodie suivante en appuyant sur un bouton poussoir.
De plus Il y a aussi un exemple pour le mode SPI software pas encore fait pour le mode I²C, mais je compte le faire
J'aurais encore beaucoup de chose à t'expliquer, mais, on verras par la suite en fonction de ta demande.
Ce Pic18F27K42 est très capricieux au nouveau de sa ram, alors attention qu'on vous utilisez la ram de ce Pic.
Je vais modifier le logiciel Rtttl pour avoir l'option, ne pas avoir de clé, n'y de titre, ou, avoir une clé avec titre.
pour ton essai
A+
Modifié en dernier par Temps-x le jeu. 9 sept. 2021 23:23, modifié 2 fois.
Musique Rtttl avec NCO1
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
Temps-x a écrit :Le code est le même pour tous, Début du titre (5 octets) , Fin du titre (5 octets) et Début de la mélodie (5 octets), Fin de la mélodie (5 octets).
on ne doit pas parler du meme programme !
I2C , SPI ?
je parle de Prototype2.zip
melodie6
M i s s i o n I m p
db 0x4D,0x69,0x73,0x73,0x69,0x6F,0x6E,0x20,0x49,0x6D,0x70,0xFF,0x01,0x33,0xB1,0x00
titre delimité par 0xFF
si j'ai bien compris
ce tableau contient successivement
le titre ( de longueur maximale 50 chars ) , mais ici sur 11 caracteres
on en fait quoi de ce titre (stocké en RAM) ?
puis
note sur 3 octets ------- -> 24 bits du registre NCO1 accumulateur
durée sur 2 octets ---> Res16, Res8 entier 16 bits pour compteur de mS
1 ere note 0x01,0x33,0xB1 -> 78769 -> 1174Hz
1er duree 0x00,0x4F -> 79 mS ?
2em note 0x01,0x45,0xD0 -> 83408 -> 1292 Hz
2em duree 0x00,0x4F, -> 79mS
ainsi de suite ,jusqu'au 0xFF
.......
Ach,So
Grosse Meprise
J'avions pas vu ta version Prototype4.zip !
tout s'explique ..le titre, le SPI
J'ai un OLED SPI en commande ... pour voir et tester ta version 4 ....
Musique Rtttl avec NCO1
Re
Ce que tu veux..... tu peux l'afficher sur l'écran pour information de la mélodie écouté, longueur maximum du titre 50 octets
res16 et res8 fond à eux deux 65535 ms, ceux qui représente si je ne me trompe pas 65 secondes et 535 millisecondes.
Si tu as une note qui dure se temps là !! tu me préviens, je veux voir ça.
Les temps des fichiers Rtttl se compte en milliseconde, ce qui explique un pas de 1 ms au minimum
J'ai même commencé la version I²C dans le fichier Prototype4.asm, mais non fini, normalement ce que j'ai prévu c'est de faire fonctionner en même temps les deux type d'écran (SPI et I²C, tout est branché sur la breadboard)
J'ai était obligé de relire les cours du maître Bigonoff, fin de compte j'aime bien ce Pic18F27K42 car on peut pratiquement rediriger les configurations de protocole sur les pattes que l'on désir.
A+
paulfjujo a écrit :Source du message on en fait quoi de ce titre (stocké en RAM) ?
Ce que tu veux..... tu peux l'afficher sur l'écran pour information de la mélodie écouté, longueur maximum du titre 50 octets
paulfjujo a écrit :Source du message durée sur 2 octets ---> Res16, Res8 entier 16 bits pour compteur de mS
res16 et res8 fond à eux deux 65535 ms, ceux qui représente si je ne me trompe pas 65 secondes et 535 millisecondes.
Si tu as une note qui dure se temps là !! tu me préviens, je veux voir ça.
Les temps des fichiers Rtttl se compte en milliseconde, ce qui explique un pas de 1 ms au minimum
paulfjujo a écrit :Source du message Grosse Meprise
Javions pas vu ta version Prototype4.zip !
tout s'explique
J'ai même commencé la version I²C dans le fichier Prototype4.asm, mais non fini, normalement ce que j'ai prévu c'est de faire fonctionner en même temps les deux type d'écran (SPI et I²C, tout est branché sur la breadboard)
J'ai était obligé de relire les cours du maître Bigonoff, fin de compte j'aime bien ce Pic18F27K42 car on peut pratiquement rediriger les configurations de protocole sur les pattes que l'on désir.
A+
Musique Rtttl avec NCO1
Bonsoir paulfjujo, et tout le forum,
Voilà j'ai modifié le programme de Rtttl, pour le paramétré il faut aller en mode éditer une mélodie, par défaut il est paramétré sans titre, tu as la mélodie à l'état brute,
Au cas ou tu voudrais changer, tu devrais faire comme sur l'image ci-dessous
Une fois fait une fenêtre va s'ouvrir, comme l'image ci-dessous
Et la tu choisis Ne pas avoir de clé dans le titre, et la mélodie du code ASM nouvelle version téléchargeable ICI
A+
Voilà j'ai modifié le programme de Rtttl, pour le paramétré il faut aller en mode éditer une mélodie, par défaut il est paramétré sans titre, tu as la mélodie à l'état brute,
Au cas ou tu voudrais changer, tu devrais faire comme sur l'image ci-dessous
Une fois fait une fenêtre va s'ouvrir, comme l'image ci-dessous
Et la tu choisis Ne pas avoir de clé dans le titre, et la mélodie du code ASM nouvelle version téléchargeable ICI
A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Musique Rtttl avec NCO1
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonjour TempsX et à tous,
Ta derniere version RTTL.exe du 09/09 est d'un niveau tres achevé et peaufiné !
je m'en suis servie pour recuperer certain fichier RTTL -> transformé en ASM
juste un un petit coup de Notepad++ pour le transformer en C compatible
puis j'enleve les 2x5 octets adresses entourant le titre melodie en ascii, rajout de 0xFF (terminateur du titre)
et l'adresse de fin , remplacée par 0xFF terminateur
pour obtenir :
nota:
Curieux, lorsque je tappe certaines touches du clavier en etant sous l'appli Editeur notepad++ , j'entends des notes !
avec RTTL.exe actif en arriere plan.
Interception clavier par rapidQ ?
le code en C utilisé:
MikroC 18F27K42 , Fosc Interne 64MHz , NCO output sur RC0 , Interruptions IVT
le projet complet MikroC est dispo sur ma page
+ possibilité de definir directement la frequence via terminal ou potar sur ADC..
Ta derniere version RTTL.exe du 09/09 est d'un niveau tres achevé et peaufiné !
je m'en suis servie pour recuperer certain fichier RTTL -> transformé en ASM
juste un un petit coup de Notepad++ pour le transformer en C compatible
puis j'enleve les 2x5 octets adresses entourant le titre melodie en ascii, rajout de 0xFF (terminateur du titre)
et l'adresse de fin , remplacée par 0xFF terminateur
pour obtenir :
//***** Robbie Williams Somethin, taille 333 octets, durée 0 min 29 sec *******
unsigned char Something[]={
0x53,0x6F,0x6D,0x65,0x74,0x68,0x69,0x6E,0xFF,
0x00,0xD9,0x8E,0x01,0x2C,0x01,0x02,0xEA,0x01,0x2C,0x01,0x02,0xEA,0x01,
0x2C,0x01,0x02,0xEA,0x01,0x2C,0x01,0x02,0xEA,0x01,0x2C,0x01,0x22,0x69,0x01,0x2C,
0x01,0x22,0x69,0x01,0x2C,0x01,0x22,0x69,0x01,0x2C,0x01,0x22,0x69,0x01,0x2C,0x01,
0x45,0xD0,0x01,0x2C,0x01,0x45,0xD0,0x01,0x2C,0x01,0x45,0xD0,0x01,0x2C,0x01,0x45,
0xD0,0x01,0x2C,0x01,0x59,0x9C,0x01,0x2C,0x01,0x59,0x9C,0x01,0x2C,0x01,0x45,0xD0,
0x01,0x2C,0x01,0x02,0xEA,0x01,0x2C,0x01,0x22,0x69,0x01,0x2C,0x01,0x22,0x69,0x01,
0x2C,0x01,0x59,0x9C,0x01,0x2C,0x01,0x45,0xD0,0x09,0x60,0x00,0x00,0x00,0x04,0xB0,
0x00,0xE6,0xAF,0x01,0x2C,0x01,0x02,0xEA,0x01,0x2C,0x01,0x02,0xEA,0x01,0x2C,0x01,
0x02,0xEA,0x01,0x2C,0x01,0x02,0xEA,0x01,0x2C,0x01,0x22,0x69,0x01,0x2C,0x01,0x22,
0x69,0x01,0x2C,0x01,0x22,0x69,0x01,0x2C,0x01,0x22,0x69,0x01,0x2C,0x01,0x45,0xD0,
0x01,0x2C,0x01,0x45,0xD0,0x01,0x2C,0x01,0x45,0xD0,0x01,0x2C,0x01,0x45,0xD0,0x01,
0x2C,0x01,0x59,0x9C,0x01,0x2C,0x01,0x59,0x9C,0x01,0x2C,0x01,0x45,0xD0,0x01,0x2C,
0x01,0x02,0xEA,0x01,0x2C,0x01,0x22,0x69,0x01,0x2C,0x01,0x22,0x69,0x01,0x2C,0x01,
0x45,0xD0,0x01,0x2C,0x01,0x22,0x69,0x09,0x60,0x00,0x00,0x00,0x04,0xB0,0x01,0x02,
0xEA,0x01,0x2C,0x01,0x59,0x9C,0x01,0x2C,0x01,0x59,0x9C,0x01,0x2C,0x01,0x59,0x9C,
0x01,0x2C,0x01,0x59,0x9C,0x01,0x2C,0x01,0x83,0xA3,0x01,0x2C,0x01,0x83,0xA3,0x01,
0x2C,0x01,0x83,0xA3,0x01,0x2C,0x01,0x83,0xA3,0x01,0x2C,0x01,0xB3,0x1D,0x01,0x2C,
0x01,0xB3,0x1D,0x01,0x2C,0x01,0xB3,0x1D,0x01,0x2C,0x01,0xB3,0x1D,0x01,0x2C,0x02,
0x05,0xD4,0x01,0x2C,0x01,0xCD,0x5F,0x01,0x2C,0x01,0xB3,0x1D,0x01,0x2C,0x01,0xCD,
0x5F,0x01,0x2C,0x01,0xB3,0x1D,0x02,0x58,0x01,0x83,0xA3,0x01,0x2C,0x01,0x83,0xA3,
0x09,0x60,0x00,0x00,0x00,0x04,0xB0,0xFF
};
nota:
Curieux, lorsque je tappe certaines touches du clavier en etant sous l'appli Editeur notepad++ , j'entends des notes !
avec RTTL.exe actif en arriere plan.
Interception clavier par rapidQ ?
le code en C utilisé:
MikroC 18F27K42 , Fosc Interne 64MHz , NCO output sur RC0 , Interruptions IVT
Code : Tout sélectionner
char * Liste_Melodie[]= {Mission_Impossible, BOLERO,Something };
unsigned int Index=0;
void Play_Melodie(char Num)
{
unsigned int Index=0;
char *pM;
pM=Liste_Melodie[Num] ;
NCO1EN_bit=0;
do
{
cx=*(pM+Index); ;
if (cx==0xFF) break ;
Index++;
}
while(Index<50);
*(txt+Index)=0;
strncpy(txt,pM,Index);
CPrint( "Melodie : ");
Print (txt);
i=Index+1;
do
{
// WordToStr(i,CRam1);
// Print(CRam1); Espaces; UART1_Write('='); UART1_Write('>'); UART1_Write(' ');
cx=*(pM+i) ;
if ( cx==0xFF) break;
NCO1INCU= cx ;
cx=*(pM+i+1) ;
if ( cx==0xFF) break;
NCO1INCH= cx ;
cx=*(pM+i+2) ;
if ( cx==0xFF) break;
NCO1INCL= cx ;
cx=*(pM+i+3) ;
if ( cx==0xFF) break;
k= cx ;
k=k<<8;
cx=*(pM+i+4) ;
if ( cx==0xFF) break;
k=k +cx;
NCO1EN_bit=1;
for (j=0;j<k;j++) Delay_ms(1);
NCO1EN_bit=0;
i=i+5;
}while(cx!=0xFF) ;
CPrint( " ..End\r\n");
}
............ main() ....
.. etc ....
CPrint(" Init Generateur de Frequence NCO ,sortie RC0 => Buzzer piezo\r\n");
Init_NCO(); //Init generateur de frequenc sur sortie RC0 =Buzzer piezo
...etc ...
CPrint (" ATTENTION : modif choix NCO1CLK =4 => 31KHz !! \r\n");
NCO1_Clock_Choix=4; // 4=31250Khz
NCO1CLK= PWS_Valeur<<5 | NCO1_Clock_Choix ;
Play_Melodie(0);
Delay_ms(1000);
Play_Melodie(1);
Delay_ms(1000);
Play_Melodie(2);
CPrint (" ATTENTION : retour à choix NCO1CLK=3 => 500KHz !! \r\n");
NCO1_Clock_Choix=3; // 3= 500 Khz
NCO1CLK= PWS_Valeur<<5 | NCO1_Clock_Choix ;
..etc ...
le projet complet MikroC est dispo sur ma page
+ possibilité de definir directement la frequence via terminal ou potar sur ADC..
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 127 invités