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
venom
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 953
Âge : 38
Enregistré en : avril 2016
Localisation : Klyntar
Contact :

#21 Message par venom » mar. 15 juin 2021 06:22

Bravo Temps-X,
Le résultat est top. Ça fonctionne bien :eek: :bravo:







@++
Mon site web
Mon discord : venom#4888

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

#22 Message par paulfjujo » mar. 15 juin 2021 09:14

bonjour,

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
Aide toi, le ciel ou FantasPic t'aidera

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

#23 Message par Temps-x » mar. 15 juin 2021 18:26

Bonsoir paulfjujo, venom, et tout le forum,



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


oops 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.....

Merci ! pour ton aide

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

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

#24 Message par Temps-x » mer. 16 juin 2021 00:53

Bonsoir paulfjujo, venom, et tout le forum,

Ça y et j'ai trouvé d’où venait mon erreur... :sifflotte: (ça venait du code ASM, sur une simple soustraction :-D ) 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+
: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 : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#25 Message par paulfjujo » jeu. 9 sept. 2021 12:21

bonjour TempsX et à tous,

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" 
--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 
(c1998-2011 Microchip Technology Inc.
Errors    0

MP2HEX 5.09
COFF to HEX File Converter
Copyright 
(c1998-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 time3s)
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(sloaded successfully.
2021-09-09 12:05:19 +0200 Programming...
*****************************************************

Calculating memory ranges for operation...

Erasing...

The following memory area(swill be programmed:
program memorystart address 0x0end address 0x27f
program memory
start address 0x8000end 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*+           
       


:bravo: pour ce gros travail réussi !
Aide toi, le ciel ou FantasPic t'aidera

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

#26 Message par Temps-x » jeu. 9 sept. 2021 14:38

Bonjour paulfjujo, et tout le forum,

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 :sifflotte: 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.


Merci ! pour ton essai

==> A+
Modifié en dernier par Temps-x le jeu. 9 sept. 2021 23:23, modifié 2 fois.
: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 : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#27 Message par paulfjujo » jeu. 9 sept. 2021 17:20

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

.......

oops Ach,So
:sifflotte: 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 ....
Aide toi, le ciel ou FantasPic t'aidera

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

#28 Message par Temps-x » jeu. 9 sept. 2021 19:23

Re
paulfjujo a écrit :Source du message on en fait quoi de ce titre (stocké en RAM) ?

:lol: 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.

:eek: Si tu as une note qui dure se temps là !! tu me préviens, :roll: 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 :sifflotte: 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+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

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

#29 Message par Temps-x » jeu. 9 sept. 2021 22:16

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

config-1.jpg


Une fois fait une fenêtre va s'ouvrir, comme l'image ci-dessous

config-2.jpg


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.
: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 : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#30 Message par paulfjujo » ven. 10 sept. 2021 11:49

bonjour TempsX et à tous,


:+1: 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

RTTL_ASM_C.jpg


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=+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<<|  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<<|  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.
Aide toi, le ciel ou FantasPic t'aidera


Retourner vers « Langage ASM »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 48 invités