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 ---
Idée, bugs, propositions .......
Portier Audiophone bifilaire (200m)
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2828
Âge : 74
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#111 Message par paulfjujo » ven. 14 oct. 2022 16:13

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.
12F683_DTMF_DECODE_1Abis_VO.zip


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.

exit 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 . .... :sad: SGDG

à noter au passage, cet outil :
DTMF Generator
Phone dial tones online synthesizer. Dia l keyboard emulator.
ne prend AUCUNE place sur le PC ..
DTMF_Generator_Venea.jpg


retournons à l'ordinogramme...
A suivre..
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aide toi, le ciel ou FantasPic t'aidera

Portier Audiophone bifilaire (200m)
Babar64
Avatar de l’utilisateur
Amateur
Amateur
Messages : 128
Âge : 74
Enregistré en : juillet 2021
Localisation : Sud-Ouest

#112 Message par Babar64 » dim. 16 oct. 2022 12:45

Bonjour Paul et à tous,
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! :geek:

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...
:idea: Pourquoi faire compliqué quand on peut faire inextricable

Portier Audiophone bifilaire (200m)
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2828
Âge : 74
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#113 Message par paulfjujo » mar. 18 oct. 2022 18:01

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

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

:sifflotte: signaler SVP d'eventuelles erreurs ...

nota: affectations non declarées définitives à ce jour !



New Affectation_Pin_2022-1018.zip


Affectation_Definitions_Pins_18F27K42_via_excel_20221018.jpg


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

Portier Audiophone bifilaire (200m)
francois77
Passionné
Passionné
Messages : 307
Enregistré en : avril 2022

#114 Message par francois77 » mar. 18 oct. 2022 19:55

Bonsoir,

Les fusibles ont fondues ..... dans mon cerveau

trop compliqué pour moi , mais bravo pour ce projet collectif

A+

Francois

Portier Audiophone bifilaire (200m)
satinas
Expert
Expert
Messages : 1262
Enregistré en : novembre 2015

#115 Message par satinas » mar. 18 oct. 2022 21:53

Bonsoir,
Dans xc8 il y a plus simple pour adresser les registres des pins, voir fichier pic18f27k42.h
Pour l'assembleur pic-as associé à xc8, c'est dans pic18f27k42.inc
TRISA0, LATA0, RA0
ANSELA0, WPUA0, INLVLA0, SLRA0, ODCA0

Portier Audiophone bifilaire (200m)
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2828
Âge : 74
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#116 Message par paulfjujo » mer. 19 oct. 2022 19:20

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

New Affectation_Pin_2022-1020.zip


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

Portier Audiophone bifilaire (200m)
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2828
Âge : 74
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#117 Message par paulfjujo » ven. 21 oct. 2022 07:55

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

Affectation_Definitions_Pins_18F27K42_via_excel_20221021.jpg


New Affectation_Pin_2022-1021.zip
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aide toi, le ciel ou FantasPic t'aidera

Portier Audiophone bifilaire (200m)
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2828
Âge : 74
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#118 Message par paulfjujo » sam. 22 oct. 2022 08:34

bonjour à tous,

Mise à jour 22/10

Affectation_Definitions_Pins_18F27K42_via_excel_20221022.jpg


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

New Affectation_Pin_2022-1022.zip


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

Portier Audiophone bifilaire (200m)
satinas
Expert
Expert
Messages : 1262
Enregistré en : novembre 2015

#119 Message par satinas » dim. 23 oct. 2022 06:49

Bonjour, c'est le type de data _bit qui a permis de pointer sur un bit en registre, en spécifiant son adresse sous la forme adr_reg*8+num_bit. C'était déjà présent dans CCS et MikroC.

Portier Audiophone bifilaire (200m)
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2828
Âge : 74
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#120 Message par paulfjujo » lun. 24 oct. 2022 17:28

bonjour,

Prototype sur breadboard pour TEST IOC Interrupt on change PORTA sur : 7,6,5,4 et PORTC : 4

Proto_Big_breadboard_Audiophone_18F27K42_2022-1024.jpg


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

Affectation_Pins_HOME_18F27K42_schema_20221024.jpg


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 .

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


Retourner vers « Le forum Fantas-PIC »

Qui est en ligne

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