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 ---
Portier Audiophone bifilaire (200m)
- paulfjujo
Expert- Messages : 2828
- Âge : 74
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonjour à tous,
des nouvelles du front ..
Bad news ...
j'ai testé un decodeur DTMF 12F683 (programme en asm !)
il semblerait qu'il faut d'abord saisir des codes DTMF (via l'ADC) pour faire un gabarit
permettant par la suite de decoder le code d'un signal DTMF .....
Boof ..rien à tirer de ça .
et pas tres causant ..
j'ai mis le code ici pour tempsX, et l'ASM Team.
autre programmes, en C
https://www.romanblack.com/DTMF/DTMF_remote.c
et aussi https://www.romanblack.com/DTMF/DTMF_alg.htm
The Black DTMF triplet decoder.c
au final, allume ou pas une led ... impossible de faire confiance dans un programme où je n'y comprends rien ..
trop matheux, trop abstrait pour moi ..
trop de temps perdu sur ce point là, sans l'ombre d'un résultat..
il nous faut un specialiste en Maths Spe.
perso, je laisse tomber ..
la solution decodage DTMF hardware semble celle qui est de nos jours , la plus usité..
vu la date fraicheurs des quelques exemples rencontrés en version software . .... SGDG
à noter au passage, cet outil :
DTMF Generator
Phone dial tones online synthesizer. Dia l keyboard emulator.
ne prend AUCUNE place sur le PC ..
retournons à l'ordinogramme...
A suivre..
des nouvelles du front ..
Bad news ...
j'ai testé un decodeur DTMF 12F683 (programme en asm !)
il semblerait qu'il faut d'abord saisir des codes DTMF (via l'ADC) pour faire un gabarit
permettant par la suite de decoder le code d'un signal DTMF .....
Boof ..rien à tirer de ça .
et pas tres causant ..
j'ai mis le code ici pour tempsX, et l'ASM Team.
autre programmes, en C
https://www.romanblack.com/DTMF/DTMF_remote.c
et aussi https://www.romanblack.com/DTMF/DTMF_alg.htm
The Black DTMF triplet decoder.c
au final, allume ou pas une led ... impossible de faire confiance dans un programme où je n'y comprends rien ..
trop matheux, trop abstrait pour moi ..
trop de temps perdu sur ce point là, sans l'ombre d'un résultat..
il nous faut un specialiste en Maths Spe.
perso, je laisse tomber ..
la solution decodage DTMF hardware semble celle qui est de nos jours , la plus usité..
vu la date fraicheurs des quelques exemples rencontrés en version software . .... SGDG
à noter au passage, cet outil :
DTMF Generator
Phone dial tones online synthesizer. Dia l keyboard emulator.
ne prend AUCUNE place sur le PC ..
retournons à l'ordinogramme...
A suivre..
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Portier Audiophone bifilaire (200m)
Bonjour Paul et à tous,
Comme Paul aime dire, je plussoie :
La solution d'utiliser du hardware, qui de plus est peu cher, dispo, fiable, et simple à mettre en œuvre, reste bien meilleure.
Côté hardware justement, j'avais un peu forcé avec les 40106 et 40147 : il me manquait des ports. C'est vrai : Pas très élégant, surtout pour des Fantaspiciens!
Le travail, réorienté, porte désormais à leur suppression, pour confier au software du PIC la gestion complète, hormis la partie DTMF.
A suivre donc...
paulfjujo a écrit :Bad news ...
Comme Paul aime dire, je plussoie :
La solution d'utiliser du hardware, qui de plus est peu cher, dispo, fiable, et simple à mettre en œuvre, reste bien meilleure.
Côté hardware justement, j'avais un peu forcé avec les 40106 et 40147 : il me manquait des ports. C'est vrai : Pas très élégant, surtout pour des Fantaspiciens!
Le travail, réorienté, porte désormais à leur suppression, pour confier au software du PIC la gestion complète, hormis la partie DTMF.
A suivre donc...
Portier Audiophone bifilaire (200m)
- paulfjujo
Expert- Messages : 2828
- Âge : 74
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
Bonjour à tous,
je mets ici, une feuille excel comportant des formules, destinées à remplir une partie du code XC8
pour la definition des entrees /sorties du PIC
à gauche du tableau , la partie renseignement
à droite la partie contenant des formules ,permettant de transcrire en langage C MPLAB XC8
peut etre utile à d'autres applications...
on n'utilise pas ici, MCC qui genere une tonne de code ..
mais reset utile pour lever des incoherences, le PPS
Peripheral Pin Select (PPS) for 8-Bit Devices ne peut pas aiguiller n'importe quelle pin vers un peripherique donné..il y a des limites !
MCC alors envoie des warnings /alertes..
L'avantage aussi est qu'il fournit une image du PIC avec les affectations des pin ..
mais apres, on s'en passe..
Injection directe des #define pour les pins du PIC.
Sur ce tableau ,il y a la config des pins pour les 2 PICS : HOME et STREET
L'analogique est traité à part.
il va sans dire qu'il faut aussi rajouter les aiguillages PPS necessaires, ici NCO output.
La sortie TX doit etre par defaut sur RC6 (UART gére directement par soft , sans lib XC8)
RC7 ne sera pas aiguillée sur RX
signaler SVP d'eventuelles erreurs ...
nota: affectations non declarées définitives à ce jour !
Ouie. il y a effectivement des boulettes
c'est XC8 qui me le dit ...
TRISAbits.TRISA0=0; // ok
TRISAbits.TRISA1=0;
TRISAbits.RA2=0; // bad
TRISAbits.RA3=0;
je me melange les pinceaux avec MikroC .. qui est bien plus simple !!!
pourquoi faire simple ,quand on peut faire compliqué..
à suivre....
je mets ici, une feuille excel comportant des formules, destinées à remplir une partie du code XC8
pour la definition des entrees /sorties du PIC
à gauche du tableau , la partie renseignement
à droite la partie contenant des formules ,permettant de transcrire en langage C MPLAB XC8
peut etre utile à d'autres applications...
on n'utilise pas ici, MCC qui genere une tonne de code ..
mais reset utile pour lever des incoherences, le PPS
Peripheral Pin Select (PPS) for 8-Bit Devices ne peut pas aiguiller n'importe quelle pin vers un peripherique donné..il y a des limites !
MCC alors envoie des warnings /alertes..
L'avantage aussi est qu'il fournit une image du PIC avec les affectations des pin ..
mais apres, on s'en passe..
Injection directe des #define pour les pins du PIC.
Sur ce tableau ,il y a la config des pins pour les 2 PICS : HOME et STREET
L'analogique est traité à part.
il va sans dire qu'il faut aussi rajouter les aiguillages PPS necessaires, ici NCO output.
La sortie TX doit etre par defaut sur RC6 (UART gére directement par soft , sans lib XC8)
RC7 ne sera pas aiguillée sur RX
signaler SVP d'eventuelles erreurs ...
nota: affectations non declarées définitives à ce jour !
Ouie. il y a effectivement des boulettes
c'est XC8 qui me le dit ...
TRISAbits.TRISA0=0; // ok
TRISAbits.TRISA1=0;
TRISAbits.RA2=0; // bad
TRISAbits.RA3=0;
je me melange les pinceaux avec MikroC .. qui est bien plus simple !!!
pourquoi faire simple ,quand on peut faire compliqué..
à suivre....
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Portier Audiophone bifilaire (200m)
-
francois77
Passionné- Messages : 307
- Enregistré en : avril 2022
Portier Audiophone bifilaire (200m)
Portier Audiophone bifilaire (200m)
- paulfjujo
Expert- Messages : 2828
- Âge : 74
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
Bonsoir Satinas,
Effectivement XC8 à l'air de se contenter de la syntaxe "light"
on se demande pourquoi XC8 MCC rajoute toutes ces complications ...dans la definitions des pins ..
Mise à jour 20/10
Effectivement XC8 à l'air de se contenter de la syntaxe "light"
on se demande pourquoi XC8 MCC rajoute toutes ces complications ...dans la definitions des pins ..
Mise à jour 20/10
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Portier Audiophone bifilaire (200m)
- paulfjujo
Expert- Messages : 2828
- Âge : 74
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
Bonsoir Satinas,
Effectivement XC8 à l'air de se contenter de la syntaxe "light"
on se demande pourquoi XC8 MCC rajoute toutes ces complications ...dans la definitions des pins ..
Mise à jour 21/10
Effectivement XC8 à l'air de se contenter de la syntaxe "light"
on se demande pourquoi XC8 MCC rajoute toutes ces complications ...dans la definitions des pins ..
Mise à jour 21/10
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Portier Audiophone bifilaire (200m)
- paulfjujo
Expert- Messages : 2828
- Âge : 74
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonjour à tous,
Mise à jour 22/10
nota: colonne Init hardware : input .....vide
output : ..à completer par la valeur d'init et ;
l'usage des définitions implique que MCC n'est pas utilisé..
question au webmaster:
comment supprimer les post #116 et #117
Mise à jour 22/10
nota: colonne Init hardware : input .....vide
output : ..à completer par la valeur d'init et ;
l'usage des définitions implique que MCC n'est pas utilisé..
question au webmaster:
comment supprimer les post #116 et #117
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Portier Audiophone bifilaire (200m)
Portier Audiophone bifilaire (200m)
- paulfjujo
Expert- Messages : 2828
- Âge : 74
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonjour,
Prototype sur breadboard pour TEST IOC Interrupt on change PORTA sur : 7,6,5,4 et PORTC : 4
Attention si montage Pull Down , ne pas activer WPA ( pull up internes du PIC)
Config IOCA Port A .. sur front montant
config IOCC PORTC sur front MONTANT et DESCENDANT
bout de code
interrupt associée
j'ai préféré utiliser un Switch case ,plutot qu'un OU sur les differents flag
meme si c'est moins concis .
un avis ?
sortie sur terminal
Prototype sur breadboard pour TEST IOC Interrupt on change PORTA sur : 7,6,5,4 et PORTC : 4
Attention si montage Pull Down , ne pas activer WPA ( pull up internes du PIC)
Config IOCA Port A .. sur front montant
config IOCC PORTC sur front MONTANT et DESCENDANT
bout de code
Code : Tout sélectionner
CPrint(" Re-Init TMR4 100mS avec libre compteur Cpt4\r\n");
TMR4_Init_100ms();
CPrint(" Init IOC sur Front Montant PORTA RA4 ..RA7 et Montant/descendant sur RC4 \r\n");
//1 = ST input used for port reads and interrupt-on-change
INLVLA4=1; INLVLA5=1; INLVLA6=1; INLVLA7=1;
// Interrupt ON rising PORTA
IOCAP4= 1; IOCAP5= 1; IOCAP6= 1; IOCAP7= 1;
// No interrupt on Falling edge on RA4
IOCAN4= 0;IOCAN5= 0; IOCAN6= 0; IOCAN7= 0;
// IOCAN4= 1;IOCAN5= 1; IOCAN6= 1; IOCAN7= 1;
// No interrupt on Falling edge on RA4
// IOCAP4= 0; IOCAP5= 0; IOCAP6= 0; IOCAP7=0;
// IOCAN4= 1;IOCAN5= 1; IOCAN6= 1; IOCAN7= 1;
IOCAF=0;
INLVLC4=1;
IOCCP4= 1; // Interrupt ON rising edge RC4
IOCCN4= 1; // interrupt on Falling edge on RC4
IOCCF=0;
GIE = 1;
Count_IOCA=0;
Flag_IOCA=0;
Count_IOCC=0;
Flag_IOCC=0;
IOCIF = 0; // drapeau general interrupt
IOCIE= 1; //IOCIE: Interrupt-on-Change Enable bit
j=0;
CPrint(" Mode Bavard via pin RC7 : ");
if (RC7==0)
{ Bavard=1;
CPrint(" etat 1 => Désactivé !");
}
else
{ Bavard=0;
CPrint(" etat 0 => Actif !");
}
CRLF1();
CPrint(" Test Interrupt On Change sur RA4..RA7 et sur RC4 \r\n");
do
{
// show the status of RA5 input
if (Bavard==1)
{
CPrint(" A4="); UART1_Write(PORTAbits.RA4+48);UART1_Write(',');
CPrint(" A5="); UART1_Write(PORTAbits.RA5+48);UART1_Write(',');
CPrint(" A6="); UART1_Write(PORTAbits.RA6+48);UART1_Write(',');
CPrint(" A7="); UART1_Write(PORTAbits.RA7+48);UART1_Write(',');
CPrint(" C4="); UART1_Write(PORTCbits.RC4+48);
// UART1_Write(TAB);
CRLF1();
}
else
{
if (Cpt4 %16==0) CPrint("\r\nI am alive\r\n");
}
if (Flag_IOCA==1) // interrupt armed this bit !
{
// Infos_envoi_DTMF=(PORTA & 0xF0) >>4;// lu dans l'interruption
sprintf(txt,"\r\n IOC sur PORTA Count_IOCFA= %5d Infos_envoi_DTMF= %3d 0x%0X\r\n",Count_IOCA, (uint8_t)Infos_envoi_DTMF,(uint8_t) Infos_envoi_DTMF);
Print(txt);
Flag_IOCA=0;
Infos_envoi_DTMF=0;
}
if (Flag_IOCC==1) // interrupt armed this bit !
{
if(Bavard==1)
{sprintf(txt,"\r\n IOC PORT C4 =0x%X Count_IOCCF= %3d \r\n",(uint8_t) PORTC,Count_IOCC);
Print(txt);
}
CPrint(" Combiné ");
if(RC4==1) CPrint(" =1=E Raccroché \r\n"); else CPrint(" =0=F Decroché \r\n");
Flag_IOCC=0;
}
//if ((j%8==0) &&( j>0)) CRLF1(); // new empty line every 8 values
__delay_ms(1000);
IOCCF=0;
IOCIE=1; // re-arme interrupt for next test
j++;
}
while(j<200);
interrupt associée
j'ai préféré utiliser un Switch case ,plutot qu'un OU sur les differents flag
meme si c'est moins concis .
un avis ?
Code : Tout sélectionner
void __interrupt(irq(IRQ_IOC) ,high_priority) IOC_ISR(void)
{ static Byte cc;
// if ( (IOCAF4) || (IOCAF5) || (IOCAF6) || (IOCAF7) )
// {
// Infos_envoi_DTMF=(PORTA & 0xF0) >>4;
// Out_EnbDTMF=1; // Enable envoi code DTMF
// Flag_IOCA=1;
// Count_IOCA++;
// IOCAF=0;
// }
if ( (IOCIE) && ( IOCIF))
{
if(IOCAF & 0xF0)
{ // lecture et test des flag
switch (IOCAF)
{
case 16:
Infos_envoi_DTMF=1; Flag_IOCA=1; Count_IOCA++; break;
case 32:
Infos_envoi_DTMF=2; Flag_IOCA=1; Count_IOCA++ ;break;
case 64:
Infos_envoi_DTMF=3; Flag_IOCA=1;Count_IOCA++; break;
case 128:
Infos_envoi_DTMF=4;Flag_IOCA=1; Count_IOCA++;break;
default :
Infos_envoi_DTMF=0;Flag_IOCA=1;Count_IOCA++;break;
}
IOCAF=0;
}
// ------- Port C ------------
if(IOCCF4)
{
Count_IOCC++;
Flag_IOCC=1;
Etat_Combine=RC4;
IOCCF=0;
}
IOCIF=0;
//pour ne capturer qu'1 seule IT
IOCIE=0;
}
}
sortie sur terminal
Init IOC sur Front Montant PORTA RA4 ..RA7 et Montant/descendant sur RC4
Mode Bavard via pin RC7 : etat 1 => Désactivé !
Test Interrupt On Change sur RA4..RA7 et sur RC4
A4=0, A5=0, A6=0, A7=0, C4=0
A4=0, A5=0, A6=0, A7=0, C4=0
A4=1, A5=0, A6=0, A7=0, C4=0
IOC sur PORTA Count_IOCFA= 1 Infos_envoi_DTMF= 1 0x1
A4=0, A5=0, A6=0, A7=0, C4=0
A4=0, A5=1, A6=0, A7=0, C4=0
IOC sur PORTA Count_IOCFA= 2 Infos_envoi_DTMF= 2 0x2
IOC PORT C4 =0x6F Count_IOCCF= 5
Combiné =0=F Decroché
A4=0, A5=0, A6=0, A7=0, C4=0
IOC PORT C4 =0x6F Count_IOCCF= 6
Combiné =0=F Decroché
A4=0, A5=0, A6=0, A7=0, C4=0
A4=0, A5=0, A6=1, A7=0, C4=0
IOC sur PORTA Count_IOCFA= 3 Infos_envoi_DTMF= 3 0x3
A4=0, A5=0, A6=0, A7=0, C4=0
A4=0, A5=0, A6=0, A7=0, C4=0
A4=0, A5=0, A6=0, A7=1, C4=0
IOC sur PORTA Count_IOCFA= 4 Infos_envoi_DTMF= 4 0x4
A4=0, A5=0, A6=0, A7=0, C4=0
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Retourner vers « Le forum Fantas-PIC »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 6 invités