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 le langage C !

Modérateur : Jérémy

PIC18F27K42 et NCO1 Numerically Controlled Oscillator
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2596
Enregistré en : juillet 2016
Localisation : Terre

#11 Message par Temps-x » mar. 22 févr. 2022 02:05 lien vers la Data-Sheet : Cliquez ici

Bonsoir paulfjujo, et tout le forum,

paulfjujo a écrit :Source du message j'en rappelle ici , la procedure pour pouvoir l'utiliser sous C

:bravo: pour le tutoriel réalisé sur ton site Internet très bien expliqué, je vais ajouter dans Rttl.exe une version pour encodage des fichier Rttl en C+.

Personnellement j'ai pas eu le courage de faire un fichier d'Aide(help :furieux: ) de plus j'ai jamais su expliqué proprement les choses en trouvant les mots exacte, je possède malheureusement pas ce don.

Donc si j'ai bien compris il faut juste retirer les DB et rajouter une virgule en fin pour la fonction C+ ?

Les temps des notes tu les gères par interruption je suppose ? par pas de 1 milliseconde ?


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

PIC18F27K42 et NCO1 Numerically Controlled Oscillator
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#12 Message par paulfjujo » mar. 22 févr. 2022 10:12 lien vers la Data-Sheet : Cliquez ici

Bonjour Temps-X et à tous

Temps-x a écrit :Donc si j'ai bien compris il faut juste retirer les DB et rajouter une virgule en fin pour la fonction C+ ?
Les temps des notes tu les gères par interruption je suppose ? par pas de 1 milliseconde ?



Oui,
rajouter l' entete ex: unsigned char PinkPanther[]={
mais enlever tous les db
enlever aussi les 5 bytes Adresses Avant le nom du fichier , les 5 bytes adresse Apres le nom de fichier
mais Rajouter 0xFF,
et enlever les 5 bytes adresses en fin de fichier ..
mais rajouter ,0xFF};

on a pas besoin d'adresses dans les data du fichier Rttl
puisque les adressages de fichiers en C, sont contenu dans la liste de pointeur sur les tables
exemple :
char * Liste_Melodie[]= {Mission_Impossible,BOLERO,Smoke,PinkPanther,Alfred_Hitchcok};

pour jouer PinkPanther
void Play_Melodie(3,0); 3= element #3 de la liste et 0=pas de visu de detail (detail = frequence et duree)

Pink Panther en exemple
tous les db ont été enlevés
virgule rajoutée en fin de ligne
adresses mise en commentaires par //
et rajout des 0xFF = terminateurs...

unsigned char PinkPanther[]={
//0xFE,0xFD,0xFC,0xFB,0xFA,
0x50,0x69,0x6E,0x6B,0x50,0x61,0x6E,0x74,0x68,0x65,0x72,0xFF,
//0xFE,0xFD,0xFC,0xFB,0xFA,
0x00,0xA2,0xE8,0x00,0xBC,0x00,0xAC,0xCE,0x00,0xBC,0x00,
0x00,0x00,0x02,0xEE,0x00,0xC1,0xD1,0x00,0xBC,0x00,0xCD,0x6F,0x00,0xBC,0x00,0x00,
0x00,0x02,0xEE,0x00,0xA2,0xE8,0x00,0xBC,0x00,0xAC,0xCE,0x00,0xBC,0x00,0x00,0x00,
0x00,0x5E,0x00,0xC1,0xD1,0x00,0xBC,0x00,0xCD,0x6F,0x00,0xBC,0x00,0x00,0x00,0x00,
0x5E,0x01,0x12,0x39,0x00,0xBC,0x01,0x02,0xEA,0x00,0xBC,0x00,0x00,0x00,0x00,0x5E,
0x00,0xA2,0xE8,0x00,0xBC,0x00,0xAC,0xCE,0x00,0xBC,0x00,0x00,0x00,0x00,0x5E,0x01,
0x02,0xEA,0x00,0xBC,0x00,0xF4,0x46,0x02,0xEE,0x00,0x00,0x00,0x02,0xEE,0x00,0xE6,
0xAF,0x00,0x5E,0x00,0xCD,0x6F,0x00,0x5E,0x00,0xAC,0xCE,0x00,0x5E,0x00,0x99,0xD8,
0x00,0x5E,0x00,0xAC,0xCE,0x02,0xEE,
//0xFE,0xFD,0xFC,0xFB,0xFA
0xFF};

les delays sont effectivement en ms Delay_ms(1);

Remarque:
Actuellement , pour jouer une melodie RTTL , on est obligé d'attendre la fin pour continuer le deroulement du programme...
Une version synchronisée sur un timer 1mS , pourrait etre jouée en arriere plan
du programme principal

A voir si l'appli principale peut supporter d'être interrompu chaque millisecondes .. ( en plus d'autres timers et autres sources d'interrupts)
si on a une liaison UART à 9600 bs =>en Reception, 1 byte pouvant arriver chaque 1.04ms
avec un buffer hardware dans le PIC ! ==> No problemeo
mais à 115200 bds ou plus .. à verifier

Je n'en ai pas l'utilité pour l'instant , car ces "melodies" me servent aussi de tempo !
et je n'ai pas de duree critiques dans l'appli CLAVIER .. qui a déja 2 timers toujours actifs TMR4 à 0,5sec et TMR1 à 100mS

idea ! à suivre ....
Aide toi, le ciel ou FantasPic t'aidera

PIC18F27K42 et NCO1 Numerically Controlled Oscillator
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2596
Enregistré en : juillet 2016
Localisation : Terre

#13 Message par Temps-x » mer. 23 févr. 2022 01:30 lien vers la Data-Sheet : Cliquez ici

Bonsoir paulfjujo, et tout le forum,

paulfjujo a écrit :Source du message idea ! à suivre .


:-D Suite....

paulfjujo a écrit :Source du message rajouter l' entete ex: unsigned char PinkPanther[]={
mais enlever tous les db


Ok, c'est fait

paulfjujo a écrit :Source du message enlever aussi les 5 bytes Adresses Avant le nom du fichier , les 5 bytes adresse Apres le nom de fichier
mais Rajouter 0xFF,
et enlever les 5 bytes adresses en fin de fichier ..
mais rajouter ,0xFF};


Je vois que tu travailles avec une veille version :-) je t'expliquerais comment supprimer tout cela, car tout est prévu dans le programme, mais avant tout,

voici un exemple de ce que j'ai fait aujourd'hui pour le C+

Code : Tout sélectionner



//***********************************************************************************************
//************** titre de la mélodie, axelf, taille 121 octets, durée 0 min 5 sec ***************
//***********************************************************************************************
 
unsigned char axelf
[]={

      0xFF,0x61,0x78,0x65,0x6C,0x66,0xFF,0x00,0xC1,0xD1,0x01,0x77,0x00,0xE6,0xAF,0x00,
      0xD3,0x00,0xC1,0xD1,0x00,0xBC,0x00,0xC1,0xD1,0x00,0x5E,0x00,0xF4,0x46,0x00,0xBC,
      0x00,0xC1,0xD1,0x00,0xBC,0x00,0xAC,0xCE,0x00,0xBC,0x00,0xC1,0xD1,0x01,0x77,0x01,
      0x12,0x39,0x00,0xD3,0x00,0xC1,0xD1,0x00,0xBC,0x00,0xC1,0xD1,0x00,0x5E,0x01,0x33,
      0xB1,0x00,0xBC,0x01,0x22,0x69,0x00,0xBC,0x00,0xE6,0xAF,0x00,0xBC,0x00,0xC1,0xD1,
      0x00,0xBC,0x01,0x22,0x69,0x00,0xBC,0x01,0x83,0xA3,0x00,0xBC,0x00,0xC1,0xD1,0x00,
      0x5E,0x00,0xAC,0xCE,0x00,0xBC,0x00,0xAC,0xCE,0x00,0x5E,0x00,0x91,0x34,0x00,0xBC,
      0x00,0xD9,0x8E,0x00,0xBC,0x00,0xC1,0xD1,0x01,0xD4,0xFF
};

      


Est ce que ça va comme ça, n’hésite pas à me faire supprimer, ou ajouter des choses, mais essai de l'expliquer avec un exemple.


paulfjujo a écrit :Source du message Remarque:
Actuellement , pour jouer une melodie RTTL , on est obligé d'attendre la fin pour continuer le déroulement du programme...
Une version synchronisée sur un timer 1mS , pourrait être jouée en arrière plan
du programme principal


Voir ICI ou j'ai fait une version qui fonctionne en arrière plan(le code est en ASM)

paulfjujo a écrit :Source du message A voir si l'appli principale peut supporter d'être interrompu chaque millisecondes .. ( en plus d'autres timers et autres sources d'interrupts)

Normalement c'est au programmateur de vérifier tout cela et d'organiser le programme de t'elle façon qu'il n'y ait pas de No problemeo.

paulfjujo a écrit :Source du message si on a une liaison UART à 9600 bs =>en Reception, 1 byte pouvant arriver chaque 1.04ms

Avec 1,04ms faut faire cohabiter le NCO avec UART, car les 04 ne seront pas percevable par l'oreille humaine.

Enfin tout est une question de synchronisation, et je dirais même de Temps.

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

PIC18F27K42 et NCO1 Numerically Controlled Oscillator
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#14 Message par paulfjujo » mer. 23 févr. 2022 12:34 lien vers la Data-Sheet : Cliquez ici

Temps-x a écrit :

Code : Tout sélectionner



//***********************************************************************************************
//************** titre de la mélodie, axelf, taille 121 octets, durée 0 min 5 sec ***************
//***********************************************************************************************
 
unsigned char axelf
[]={

      0xFF,0x61,0x78,0x65,0x6C,0x66,0xFF,0x00,0xC1,0xD1,0x01,0x77,0x00,0xE6,0xAF,0x00,
      0xD3,0x00,0xC1,0xD1,0x00,0xBC,0x00,0xC1,0xD1,0x00,0x5E,0x00,0xF4,0x46,0x00,0xBC,
      0x00,0xC1,0xD1,0x00,0xBC,0x00,0xAC,0xCE,0x00,0xBC,0x00,0xC1,0xD1,0x01,0x77,0x01,
      0x12,0x39,0x00,0xD3,0x00,0xC1,0xD1,0x00,0xBC,0x00,0xC1,0xD1,0x00,0x5E,0x01,0x33,
      0xB1,0x00,0xBC,0x01,0x22,0x69,0x00,0xBC,0x00,0xE6,0xAF,0x00,0xBC,0x00,0xC1,0xD1,
      0x00,0xBC,0x01,0x22,0x69,0x00,0xBC,0x01,0x83,0xA3,0x00,0xBC,0x00,0xC1,0xD1,0x00,
      0x5E,0x00,0xAC,0xCE,0x00,0xBC,0x00,0xAC,0xCE,0x00,0x5E,0x00,0x91,0x34,0x00,0xBC,
      0x00,0xD9,0x8E,0x00,0xBC,0x00,0xC1,0xD1,0x01,0xD4,0xFF
};

      


Est ce que ça va comme ça, n’hésite pas à me faire supprimer, ou ajouter des choses, mais essai de l'expliquer avec un exemple.


presque OK, il suffit de supprimer le premier byte 0xFF ...
0xFF me sert de terminateur pour isoler le titre
et detecter la fin des datas..


Normalement c'est au programmateur de vérifier tout cela et d'organiser le programme de t'elle façon qu'il n'y ait pas de No problemeo.

je suis d'accord avec toi sur le principe ..
mais suivant l'application, le programmeur peut se retrouver dans une situation mal ou pas maitrisée ou inconnue:
et il faut alors utiliser PARACHUTE, BRETELLE ,CEINTURE .. dans le codage.
Aide toi, le ciel ou FantasPic t'aidera

PIC18F27K42 et NCO1 Numerically Controlled Oscillator
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2596
Enregistré en : juillet 2016
Localisation : Terre

#15 Message par Temps-x » jeu. 24 févr. 2022 02:28 lien vers la Data-Sheet : Cliquez ici

Bonsoir paulfjujo, et tout le forum,

paulfjujo a écrit :Source du message presque OK, il suffit de supprimer le premier byte 0xFF ...


On pouvais le faire dans l'ancienne version, mais voici ce que j'envisage de faire dans la nouvelle version que je vais faire, pour cette fin de semaine.

Config.jpg


paulfjujo a écrit :Source du message mais suivant l'application, le programmeur peut se retrouver dans une situation mal ou pas maitrisée ou inconnue:
et il faut alors utiliser PARACHUTE, BRETELLE ,CEINTURE .. dans le codage.


C'est tout le problème d'un organigramme mal conçu, ou le choix d'un microcontrôleur mal adapté à ce qui est prévu par l'organigramme.
Bref.... c'est le vrai métier d'ingénieur de mettre tout cela en pratique, pour nous, ou plus personnellement pour moi, j'en suis bien loin, et je plussoie
ton raisonnement.

==> 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:

PIC18F27K42 et NCO1 Numerically Controlled Oscillator
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2596
Enregistré en : juillet 2016
Localisation : Terre

#16 Message par Temps-x » sam. 26 févr. 2022 01:33 lien vers la Data-Sheet : Cliquez ici

Bonsoir paulfjujo, et tout le forum,

Voila c'est fait, tu peux télécharger la nouvelle version ICI pour le réglage voir ci-dessous, je pense que tu comprendras.

Configuration NCO.jpg


J'ai fait des d'essais, et je n'ai pas trouvé de bug, reste à voir par la suite.... :sifflotte:

==> 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:

PIC18F27K42 et NCO1 Numerically Controlled Oscillator
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#17 Message par paulfjujo » mar. 15 mars 2022 09:52 lien vers la Data-Sheet : Cliquez ici

bonjour temps X

Temps-x a écrit :Voila c'est fait, tu peux télécharger la nouvelle version ICI pour le réglage voir ci-dessous, je pense que tu comprendras.
J'ai fait des d'essais, et je n'ai pas trouvé de bug, reste à voir par la suite.... :sifflotte:


Testé avec ce fichier Dire Straits Walkoflife

//***********************************************************************************************
//************* titre de la mélodie, WalkOfLi, taille 176 octets, durée 0 min 7 sec *************
//***********************************************************************************************

unsigned char WalkOfLi[]={

0xFF,0x57,0x61,0x6C,0x6B,0x4F,0x66,0x4C,0x69,0xFF,0xFF,0x01,0xB3,0x1D,0x01,0x2C,
0x00,0x00,0x00,0x00,0x96,0x01,0xB3,0x1D,0x00,0x96,0x00,0x00,0x00,0x01,0x2C,0x00,
0x00,0x00,0x00,0x96,0x01,0x45,0xD0,0x00,0x96,0x01,0xB3,0x1D,0x01,0x2C,0x01,0x45,
0xD0,0x00,0x96,0x00,0x00,0x00,0x00,0x96,0x01,0x22,0x69,0x01,0x2C,0x00,0x00,0x00,
0x00,0x96,0x00,0x00,0x00,0x01,0x2C,0x00,0x00,0x00,0x00,0x96,0x01,0x45,0xD0,0x00,
0x96,0x00,0x00,0x00,0x00,0x96,0x01,0xB3,0x1D,0x01,0x2C,0x00,0x00,0x00,0x00,0x96,
0x01,0xB3,0x1D,0x00,0x96,0x00,0x00,0x00,0x01,0x2C,0x00,0x00,0x00,0x00,0x96,0x01,
0x45,0xD0,0x00,0x96,0x01,0xB3,0x1D,0x01,0x2C,0x01,0x45,0xD0,0x00,0x96,0x00,0x00,
0x00,0x00,0x96,0x01,0x22,0x69,0x01,0x2C,0x00,0x00,0x00,0x00,0x96,0x01,0x22,0x69,
0x00,0x96,0x01,0x45,0xD0,0x00,0x96,0x01,0x45,0xD0,0x01,0x2C,0xFF // virgule et 0xFF
};
c'est presque OK
il ne faut qu'un terminateur de titre et un terminateur de melodie , ici 0xFF

RTTL_convert_en_C.jpg
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aide toi, le ciel ou FantasPic t'aidera

PIC18F27K42 et NCO1 Numerically Controlled Oscillator
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2596
Enregistré en : juillet 2016
Localisation : Terre

#18 Message par Temps-x » mar. 15 mars 2022 19:43 lien vers la Data-Sheet : Cliquez ici

Bonsoir paulfjujo, et tout le forum,

:sifflotte: Tu as la version 27.02.2022, normal que ça ne va pas, je te conseille de télécharger la dernière version 05.03.2022, j'ai rajouté pas mal de chose
(à suivre, mais non, c'est à voir) :-D

Configuration général.jpg



J'ai vu que tu as avancé sur CLAVIER Matriciel DIGI 3000 revisité avec PIC18F27K42 ça prends tournure, on dirais que c'est fonctionnelle d'après ce que tu dis sur ta page Web :bravo:


==> 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:

PIC18F27K42 et NCO1 Numerically Controlled Oscillator
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#19 Message par paulfjujo » mar. 15 mars 2022 20:32 lien vers la Data-Sheet : Cliquez ici

bonsoir TempX et à tous,

OK, je vais retester cette version..

Pour le clavier digicode, je suis en train de terminer la version DIGIT4000 , bien remaniée ...
avec plus de fonctionalités à integrer et un tas de documents à mettre à jour.
... Bientot des nouvelles sur ce sujet

testé aujourd'hui 16/03

avec cette config

RTTL_convert_en_C-2022-0316.jpg



titre centré sur 255 pixel
caractere 1 pixel

pixel ou Byte ou caractere

:!!: .... C'est PRESQUE çà ! ...



//***********************************************************************************************
//************ titre de la mélodie, WalkOfLi, taille 278 octets, durée 0 min 6 sec ************
//***********************************************************************************************

unsigned char WalkOfLi[]={

0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20
,0x57,0x61,0x6C,0x6B,0x4F,
0x66,0x4C,0x69,0xFF,0x01,0xB3,0x1D,0x01,0x2C,0x00,0x00,0x00,0x00,0x96,0x01,0xB3,
0x1D,0x00,0x96,0x00,0x00,0x00,0x01,0x2C,0x00,0x00,0x00,0x00,0x96,0x01,0x45,0xD0,
0x00,0x96,0x01,0xB3,0x1D,0x01,0x2C,0x01,0x45,0xD0,0x00,0x96,0x00,0x00,0x00,0x00,
0x96,0x01,0x22,0x69,0x01,0x2C,0x00,0x00,0x00,0x00,0x96,0x00,0x00,0x00,0x01,0x2C,
0x00,0x00,0x00,0x00,0x96,0x01,0x45,0xD0,0x00,0x96,0x00,0x00,0x00,0x00,0x96,0x01,
0xB3,0x1D,0x01,0x2C,0x00,0x00,0x00,0x00,0x96,0x01,0xB3,0x1D,0x00,0x96,0x00,0x00,
0x00,0x01,0x2C,0x00,0x00,0x00,0x00,0x96,0x01,0x45,0xD0,0x00,0x96,0x01,0xB3,0x1D,
0x01,0x2C,0x01,0x45,0xD0,0x00,0x96,0x00,0x00,0x00,0x00,0x96,0x01,0x22,0x69,0x01,
0x2C,0x00,0x00,0x00,0x00,0x96,0x01,0x22,0x69,0x00,0x96,0x01,0x45,0xD0,0x00,0x96,
0x01,0x45,0xD0,0x01,0x2C,0xFF
};
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aide toi, le ciel ou FantasPic t'aidera

PIC18F27K42 et NCO1 Numerically Controlled Oscillator
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2596
Enregistré en : juillet 2016
Localisation : Terre

#20 Message par Temps-x » jeu. 17 mars 2022 02:14 lien vers la Data-Sheet : Cliquez ici

Bonsoir paulfjujo, et tout le forum,

paulfjujo a écrit :Source du message pixel ou Byte ou caractere


C'est bien des pixels qu'il s’agit

paulfjujo a écrit :Source du message :!!: .... C'est PRESQUE çà ! ...


Explique moi, car je ne comprends pas, d'après mes calculs, si tu prends 255 pixels pour une longueur de ton écran, la moitié à raison d'un pixel cela nous fait 127(arrondis).

Ce qui nous donne 127 - (Titre/2) = Cela nous fait 123 espaces(0x20), c'est bien ce que tu as + ((titre/2) = 4 pixels), ce qui nous donne 123 + 4 =127 pixels.

J'ai fait un essai sur une feuille de papier, et sur écran OLED on appliquent la même formule, et c'est tout bon, ça fonctionne bien, après il y a une tolérance de plus au moins 2 pixels, en fonction des nombres utilisés.(ne pas oublier l'espace qui peut avoir entre 2 caractères)

Maintenant si tu vois une meilleur formule je suis preneur, même si il faut ajouter un plus sur le programme.

Merci ! pour les essais.

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


Retourner vers « Langage C »

Qui est en ligne

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