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 .......
Sauvetage d'un vieux clavier matriciel
Babar64
Membre
Membre
Messages : 5
Enregistré en : juillet 2021

#11 Message par Babar64 » dim. 8 août 2021 15:44

Bonjour Temps-x et le Forum.
Oui, ce clavier permet de piloter 4 relais par code à 4 chiffres, en mode Monostable, ou Bistable
Les codes et configurations sont bien sûr programmables directement depuis le clavier.
Des dispositions anti "sabotage" sont également prévues.
En son temps, il sera peut-être possible de détailler ici une réalisation complète.
Amicalement à tous.

Sauvetage d'un vieux clavier matriciel
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 1968
Enregistré en : juillet 2016
Localisation : Terre

#12 Message par Temps-x » dim. 8 août 2021 16:33

Bonjour Babar64, et tout le forum,

Babar64 a écrit :Source du message Oui, ce clavier permet de piloter 4 relais par code à 4 chiffres, en mode Monostable, ou Bistable

Le choix du relais reste important si tu veux un mode monostable, ou bistable, le mieux est de prendre directement un relais bistable, le reste c'est le microcontrôleur qui le feras.

Babar64 a écrit :Source du message Les codes et configurations sont bien sûr programmables directement depuis le clavier.

Il faudra un écran LCD ou un programme PC pour programmer les codes pour chaque relais, ce qui implique une protection pour le cas d'un programme PC d'un mot de passe, idem pour le LCD
Babar64 a écrit :Source du message Des dispositions anti "sabotage" sont également prévues.

1) Ça faut voir au moment de la programmation du Pic, pour quand ne puisse lire e contenu de l'eeprom,
2) si code raté au bout de 3 fois = temps d'attente qui se rallonge avant de pouvoir retaper un nouveau code
Babar64 a écrit :Source du message En son temps, il sera peut-être possible de détailler ici une réalisation complète.

Oui, avant d'écrire un programme il faut réfléchir à tout cela, ton projet me fait pensée au coffre fort vendu pour 20 euros, est qui son fait a base de pic 16F84A voir ICI

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

Sauvetage d'un vieux clavier matriciel
Babar64
Membre
Membre
Messages : 5
Enregistré en : juillet 2021

#13 Message par Babar64 » ven. 13 août 2021 16:41

Bonjour emps-X, bonjour le Forum,

Temps-x a écrit :(...) Oui, avant d'écrire un programme il faut réfléchir à tout cela (...)
==>


Evidemment, et cette réflexion est terminée!
Le cahier des charges, un logigramme, et un simulateur en VBA "pour une première approche", sont finalisés, et validés.
L'excellente étude de faisabilité de paulfjujo a permis de valider également le schéma et PCB (sur 2 cartes double face, pour s'adapter facilement à tout type de clavier matriciel).
A partir d'un montage "labo", c'est maintenant au tour du code et de la programmation du PIC d'être finalisés.
Restera encore à assembler le tout pour un test "en vrai"!
A très vite, donc, avec une réalisation que j'espère intéressante ici :sifflotte: (avec codes, photos et pourquoi pas les fichiers Gerber...)
Bonne journée à tous.
PS : désolé pour cette réponse un peu tardive, mais ce projet prends du temps...

Sauvetage d'un vieux clavier matriciel
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 1959
Âge : 70
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#14 Message par paulfjujo » ven. 20 août 2021 15:31

bonjour à tous,

cà avance doucement , mais surement ..

MAJ de ma page web :
avec quelques explicages concernant l'usage de ce 18F27K42 ..

une remarque :
le C utilise la base 0 pour les index de table
alors que VBA utilise 1 (ou specifiquement 0 ) ( simulateur clavier en excel)
gymnastique pour faire coincider les index ....
de plus le relais 1 est sur le Bit 1 de poids 2
le relais 2 sur le bit 2 de poids 4 ...

d'ou l' indexation de commande de relais via :

Code : Tout sélectionner



avec 
 const unsigned char  Poids
[]={1,2,4,8,16,32,64,128};
sbit Relais_1 at LATB.B1;
sbit Relais_2 at LATB.B2;
sbit Relais_3 at LATB.B3;
sbit Relais_4 at LATB.B4;

 void Cde_Action_Relais()
 {
   int m;
   CPrint(" decodage Cde en cours  = ");
   ByteToStr(CdeEnCours,CRam1);Print(CRam1);CRLF1();
   if ((CdeEnCours>0) && (CdeEnCours<5))    // 1 à 4
   {
    // commande relais
           m=CdeEnCours;
           CPrint("Relais ");UART1_Write(m+48);
           k=  Config[m];   // 0  ou 1
           switch (k)
           {
           case 0:
               if ( MemoSortieRelais[m]==0)
                {
                 CPrint(" ON\r\n");
                 LATB=PORTB | Poids[m];    // relais
                  MemoSortieRelais[m]=1;
                }
                else
                
{
                  CPrint(" OFF  ");
                   LATB=PORTB & ~Poids[m];  // relais
                   MemoSortieRelais[m]=0;
                }
                break;
            case 1:    // monostable
                 CPrint(" ON pendant 1s\r\n");
                  LATB=PORTB | Poids[m];  // relay
                  MemoSortieRelais[m]=1;
                  Init_Timer0(30); // 30x100mS   3sec
                  while( Drapeaux.Tmr0_Elapsed==0);
                  CPrint(" puis OFF ");
                  LATB=PORTB & ~Poids[m];  // relay
                   MemoSortieRelais[m]=0;
                  break;
              default :
               Mlck=1;
                Etape=9;
            } //switch
       }
}
 


le codage étant vérifié préalablement (valeur numerique seulement 0 à 9 ) et codage verifié existant ,
AVANT d'envoyer une commande Action sur relais. Commande de type Toggle ou Monostable.

Nota : J'avais envisagé d'utilisé l' ASM ex: _asm btg LATB,1; // relais 1
ou _asm BSF LATB,1;
pour etre au plus pres du MCU ... :sifflotte: like Temps_X fashion

L'usage des "IVT interruptions vectorisées" , possible avec ce MCU, conforte mon choix :
plus facile, plus clair ..qu'en mode "Legacy"

*ACHTUNG coté config Projet MikroC :
Projet_MikroC_et_IVT_18F27K42.jpg


si on sauvegarde le fichier source avec un autre nom, dans le meme projet
"Interrupt mode" repasse en mode" Legacy" ..=> errors
malgré le fichier de config P18F27K42_Fosc_interne_with_PLL_64MHz_with_Vectored_IT.cfgsch
présent dans le directory du projet.


un autre un piege à ions :
concernant l'EEPROM , qui fait partie integrante de l'adressage de ce PIC
au niveau de MPLB IPE V5.30 utilisé conjointement avec le Pickit 4
( nota : Pickit3 pas vraiment compatible , meme si le MCU peut etre reconnu!)
il faut Préserver l'espace NVM (Non Volatile Memory) Eeprom de 0x310 000 à 0x310 03FF
sinon apres la compilation ,on telecharge le *.HEX en faisant d'abord une RAZ du contenu Programme et Eeprom.
J'ai utilisé l'index 0 de l'eeprom pour y mettre un flag =99 pour signaler si le programme Utilisateur
s'est servi de l'eeprom ou non .. afin d'y stocker le parametrage minimum dit "Usine "
ce qui n'empeche pas le probleme précité !
L'adressage Eeprom est sur 16 bits , et la donnéee EEprom sur 8bit !
on a donc que 512 bytes dispo en EEPROM
les fonction MikroC de la lib EEPROM : EEprom_Write , EEProm_Read semblent OK.

MPLAB_IPE_Memory_Setting_18F27K42.jpg


A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aides toi, le ciel ou FantasPic t'aideras

Sauvetage d'un vieux clavier matriciel
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 1968
Enregistré en : juillet 2016
Localisation : Terre

#15 Message par Temps-x » sam. 21 août 2021 15:33

Bonjour paulfjujo, et tout le forum,

paulfjujo a écrit :Source du message Nota : J'avais envisagé d'utilisé l' ASM

:+1: :bravo: de plus maintenant j'ai fourni l'éditeur avec le compilateur, il y a plus cas....

paulfjujo a écrit :Source du message pour etre au plus pres du MCU ... :sifflotte: like Temps_X fashion

C'est pas l'envi qui me manque, mais je suis sur plusieurs chose à la fois, une vraie girouette.

C'est un projet très intéressant,

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

Sauvetage d'un vieux clavier matriciel
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 1959
Âge : 70
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#16 Message par paulfjujo » mar. 24 août 2021 15:55

petit rectificatif EEPROM 18F27K42

c'est bien 1024 byte dispo en Eeprom (NVM) , avec adressage 16 bit pointant sur des bytes
l'Eeeprom contient 255 de partout si vierge.

Nota: la partie ecriture est lancée une fois pour initialiser l'EEPROM
puis mise en commentaire au 2 em chargement programme


Code : Tout sélectionner

/*
  // run une fois !
       CPrint("  TEST Write To Eeeprom \r\n");
      for (i=0;i<1023;i=i+16)
      {
         cx = (unsigned char) (i & 0x00FF);
         EEPROM_Write(i,cx);
         Delay_ms(5);
          WordToStr(i,CRam1);
           CPrint(" Write EEPROM @= ");
           Print(CRam1);Espaces;  
           ByteToStr(cx,CRam1); Print(CRam1);
           CRLF1();
       }
       */
       
       CPrint
("\r\n ------------------\r\n TEST Read Eeeprom \r\n");
      for (i=0;i<1023;i=i+16)
      {
         cx=EEPROM_Read(i);
         Delay_ms(5)  ;
           WordToStr(i,CRam1);
           CPrint(" read EEPROM @ ");
           Print(CRam1);Espaces;
           ByteToStr(cx,CRam1); Print(CRam1);
           CRLF1();
       }
          CPrint("\r\n End\r\n");
          while(1);
   





test relecture eeprom
en rechargeant le *.HEX
et cochant protection EEPROM dans MPLAB IPE !!

(0.002)
(0.000) ------------------
(0.003) TEST Read Eeeprom
(0.004) read EEPROM @ 0 0
(0.008) read EEPROM @ 16 16
(0.007) read EEPROM @ 32 32
(0.007) read EEPROM @ 48 48
(0.007) read EEPROM @ 64 64
(0.008) read EEPROM @ 80 80
(0.007) read EEPROM @ 96 96
(0.008) read EEPROM @ 112 112
(0.007) read EEPROM @ 128 128
(0.007) read EEPROM @ 144 144
(0.006) read EEPROM @ 160 160
.. etc
(0.008) read EEPROM @ 864 96
(0.007) read EEPROM @ 880 112
(0.008) read EEPROM @ 896 128
(0.007) read EEPROM @ 912 144
(0.008) read EEPROM @ 928 160
(0.006) read EEPROM @ 944 176
(0.008) read EEPROM @ 960 192
(0.007) read EEPROM @ 976 208
(0.007) read EEPROM @ 992 224
(0.007) read EEPROM @ 1008 240
(0.002)
(0.000) End

SINON, avec protection Eeeprom NON cochée dans MPLAB IPE
=> RAZ EEPROM

(0.000)
(0.000) ------------------
(0.000) TEST Read Eeeprom
(0.000) read EEPROM @ 0 255
(0.032) read EEPROM @ 16 255
(0.000) read EEPROM @ 32 255
....etc
(0.000) read EEPROM @ 928 255
(0.000) read EEPROM @ 944 255
(0.000) read EEPROM @ 960 255
(0.000) read EEPROM @ 976 255
(0.036) read EEPROM @ 992 255
(0.000) read EEPROM @ 1008 255
(0.000)
(0.000) End




Aides toi, le ciel ou FantasPic t'aideras


Retourner vers « Le forum Fantas-PIC »

Qui est en ligne

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