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

asm 16f84 recept tcde rc5 à modifier
elektrax
Débutant
Débutant
Messages : 77
Enregistré en : septembre 2015

#1 Message par elektrax » mer. 22 juin 2022 05:22

bonjour,
la tcde rc5 "easyhome" elektor 07/2006 fonctionne tres bien : choix relais bascule ou impulsion 1 seconde, 1 tsop1836 (36khz est la norme rc5 ?) 1x 16f84 et 4 relais, si j'ai bien compris il garde en mémoire l'état des relais et réactive la derniere configuration a la mise sous tension, je n'en suis pas certain.
mon cahier des charges :
-uniquement mode bascule on/off
-a la mise sous tension, aucun relais activé
-appui sur une touche qui ont été pgmées auparavant de 1 a 4 pour faire simple : 1 relais 1, 2 relais 2 etc..
- admettons que le relais 1 ait été activé, lorsqu'on appuie sur une autre touche 2,3,4, il faudrait que le relais 1 se désactive AVANT d'enclencher le relais demandé, bien sur, sans rien changer a l'asm, on peut désactiver le relais "en cours" en appuyant sur la touche correspondante puis enclencher le relais suivant,
c'est moins "easy" ...
- si on appuie sur 1 touche qui concerne un relais déjà activé : soit on désactive le relais, soit on ne fait rien
c'est pour choisir une source audio ou video, ou les 2 avec des relais a plusieurs contacts, parmi 4
l'asm fait 643 lignes, on peut supprimer tout ce qui concerne le mode impulse
toute info sur les lignes à modifier sont bienvenues
asm.txt en PJ

RC5tcde.asm.txt


Merci
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

asm 16f84 recept tcde rc5 à modifier
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2597
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#2 Message par paulfjujo » mer. 22 juin 2022 10:00

bonjour,

-a la mise sous tension, aucun relais activé


les relais passent forcement à zero au moment de l'init MCU
car les pins sont en entrées par defaut ,avant d'etre configurées dans l'init programme.

L'etat PORTB est pourtant sauvegardé en EEPROM et lu au démarrage programme ?

il ne peut donc y avoir qu'UN SEUL RELAIS ACTIF

admettons que le relais 1 ait été activé,
lorsqu'on appuie sur une autre touche 2,3,4,
il faudrait que le relais 1 se désactive

... des l'appui sur une autre touche que 1 .
AVANT d'enclencher le relais demandé,

si on appuie sur 1 touche qui concerne un relais déjà activé :
soit on désactive le relais, soit on ne fait rien

c'est contradictoire avec ..-uniquement mode bascule on/off

à la premiere lecture du programme
la gestion individuelle des 4 relais me parait lourde ..
autant traiter directement le PORT
en utilisant des masque AND et OR. pour le mode Toogle.
( oubli du mode pulse)
Aide toi, le ciel ou FantasPic t'aidera

asm 16f84 recept tcde rc5 à modifier
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#3 Message par satinas » mer. 22 juin 2022 11:08

Bonjour, de quelle façon les 5 dip switches sont t-ils utilisés ?
Décris exactement ce que fait l'appli actuelle, ce sera plus simple pour s'y retrouver dans ce programme.
De toute façon, il vaut mieux le refaire à zéro, ce sera plus instructif et évolutif.

asm 16f84 recept tcde rc5 à modifier
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2597
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#4 Message par paulfjujo » mer. 22 juin 2022 11:56

bonjour Satinas,

satinas a écrit :Bonjour, de quelle façon les 5 dip switches sont t-ils utilisés ?
Décris exactement ce que fait l'appli actuelle, ce sera plus simple pour s'y retrouver dans ce programme.
De toute façon, il vaut mieux le refaire à zéro, ce sera plus instructif et évolutif.


les dip switch pour pulse ou toogle ?

d'accord sur ce principe , mieux vaut repartir "from Scratch"
de plus avec un petit bout de schema ..
et reference telecommande ?

ici,test avec Marrantz codage Philips RC5
visu du codage sur LCD ou terminal PC
logiciel de test telecommande avec une simple photo-diode
permet de bien MESURER les timmings coté telecommande emetteur RC5
Aide toi, le ciel ou FantasPic t'aidera

asm 16f84 recept tcde rc5 à modifier
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#5 Message par satinas » mer. 22 juin 2022 12:28

Code : Tout sélectionner

#define SW_1    PORTA,0       ; input dip swich 1
#define SW_2    PORTA,1       ; input dip swich 2
#define SW_3    PORTA,2       ; input dip swich 3
#define SW_4    PORTA,3       ; input dip swich 4
#define SW_5    PORTA,4       ; input dip swich 5

#define IN_RC5  PORTB,7       ; input rc5
#define LED     PORTB,6       ; output led
#define REL_1   PORTB,3       ; output relais 1
#define REL_2   PORTB,2       ; output relais 2
#define REL_3   PORTB,1       ; output relais 3
#define REL_4   PORTB,0       ; output relais 4

Ils auraient dû utiliser B4/B5 au lieu de B6/B7 qui servent à la programmation ICSP.

asm 16f84 recept tcde rc5 à modifier
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2616
Enregistré en : juillet 2016
Localisation : Terre

#6 Message par Temps-x » mer. 22 juin 2022 21:02

Bonsoir elektrax, satinas, paulfjujo, et tout le forum,

Quand on met un code, on met un schéma, c'est plus simple pour la compréhension :wink:

Télécommande Easy Home-1.jpg

J'ai regardé vite fait le code, et je vois qu'il coupe les interruptions au démarrage de son programme, sans jamais les remettre en fonction.

Je ne savais pas que ceci était possible tout en se servant des fonctions existante, comme quoi on apprend tout les jours :-D

RB7 pour la réception du code de la télécommande IR, RB6 à une Led pour confirmation d'une réception.

Le code de la télécommande peuvent être mémorisé dans l'eeprom.

Je viens de comprendre ce que tu veux faire :-D modification obligatoire du code ASM pour ce que tu veux faire.


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:

asm 16f84 recept tcde rc5 à modifier
elektrax
Débutant
Débutant
Messages : 77
Enregistré en : septembre 2015

#7 Message par elektrax » jeu. 23 juin 2022 05:12

bonjour à vous,

désolé pour le schéma, merci Temps-X
"aucun relais activé à la mise sous tension" n'est pas crucial, recharger le dernier état est aussi bien
les dipswitch sont utilisés différement si on est en mode programmation ou en mode service
pour chaque test OUTPUTx on met les sorties relais à zero avant d'activer

Code : Tout sélectionner

        bcf       STATUS,RP0        ; Select Bank0 (00h - 7Fh)

;**************************************************************************
output0 test*****************
        btfss  Compare,0        ; Test 1st bit 
        goto   Output_test_1    
; If zero goto teste another output 
        
;si la comparaison n est pas bonne entre le code reçu et le code enregistré
        
;on passe au test suivant  Output_test_1
        btfss  Compare
,1        ; test 2nd bit
        goto   Output_test_1    
; If zero goto teste another output
        btfss  PORTA
,0            ; test du bit 0 portA  dipswitch num 1 saute la prochaine ligne si le bit est a 1 
        
; si le bit est à 0 on fait goto output_toogle 0
        goto   Output_toogle_0  
; In fuction of input in porta selects toogle or pulse
;Output_pulse_0 
        bsf    PORTB
,0            ;
        call   Delay_1sec        ;
        bcf    PORTB,0            ;
        goto   Output_test_1    ; Generates output pulse 
        call   Delay_1sec        
; wait 1 second

Output_toogle_0
        
; ICI on pourrait remettre à zero  les autres sorties relais du portB ?
        ;RB1 RB2 RB3
        
        bcf    PORTB
,1
        bcf    PORTB
,2
        bcf    PORTB
,3
        
                
; delay ?
        
        movf   PORTB
,W            ;
        movwf  Portb_in            ;
        bcf    Portb_in,0        ;
        btfss  PORTB,0            ;
        bsf    Portb_in,0        ;
        movf   Portb_in,W        ;
        movwf  PORTB            ;
        call   Save_portb        ; Toggle output and save portb in eeprom
        call   Delay_1sec        
; wait 1 second
;**************************************************************************output1 test*****************
Output_test_1


meme chose pour les autres output_test
si on appuye sur la touche concernant un relais déjà activé il sera désactivé, çà devient trop compliqué pour moi

Merci

asm 16f84 recept tcde rc5 à modifier
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#8 Message par satinas » jeu. 23 juin 2022 07:10

Bonjour à tous

Il y a 4 relais et 4 switches associés, et un 5ème switch apprentissage infrarouge. Chacun des relais à son code infrarouge de pilotage stocké en eeprom. En mode service :
- si le switch est ouvert, la réception du code inverse l'état du relais.
- si le switch est fermé, la réception du code déclenche relais ON 1 seconde puis relais OFF.
En plus des 4 codes relais, il y a un 5ème code stocké, il déclenche un OFF général des relais.
Chaque fois que l'état d'un relais est modifié ou lors du OFF général, l'état des 4 relais est stocké en eeprom. Il est ainsi restitué au démarrage.
Pour stocker un code associé à un relais, il faut fermer le switch associé 1 à 4 et le switch apprentissage 5, puis envoyer le code avec la télécommande. Pour stocker le code OFF général relais, il faut fermer les switches 1,2 et le switch apprentissage 5, puis envoyer le code avec la télécommande.

Adresses de stockage eeprom :
00-01 code relais 1
02-03 code relais 2
04-05 code relais 3
06-07 code relais 4
08-08 dernier état des 4 relais
09-10 code 4 relais OFF

Dans ta modif actuelle, quand on envoie le code du relais :
- si le relais était OFF, il passe à ON et les 3 autres relais passent en OFF.
- si le relais était ON, il passe à OFF et les 3 autres relais passent en OFF.
Pour éviter le delay

Code : Tout sélectionner

Output_toogle_0
        movf   PORTB,W            ; copier états des 4 relais vers Portb_in
        movwf  Portb_in
        bcf    Portb_in,1         ; on éteind les 3 autres relais
        bcf    Portb_in,2
        bcf    Portb_in,3
        bcf    Portb_in,0         ; toggle Portb_in,0
        btfss  PORTB,0
        bsf    Portb_in,0
        movf   Portb_in,W         ; copier Portb_in vers PORTB
        movwf  PORTB
        call   Save_portb         ; save portb in eeprom
        call   Delay_1sec         ; wait 1 second


Si tu veux seulement éteindre le relais, sans toucher aux autre relais, c'est

Code : Tout sélectionner

Output_toogle_0
        movf   PORTB,W            ; copier états des 4 relais vers Portb_in
        movwf  Portb_in
        btfsc  Portb_in,0         ; si on met le relais OFF
        goto   Output_0           ; on passe au toggle Portb_in,0
        bcf    Portb_in,1         ; sinon on éteind les 3 autres relais
        bcf    Portb_in,2
        bcf    Portb_in,3
Output_0
        bcf    Portb_in,0         ; toggle Portb_in,0
        btfss  PORTB,0
        bsf    Portb_in,0
        movf   Portb_in,W         ; copier Portb_in vers PORTB
        movwf  PORTB
        call   Save_portb         ; save portb in eeprom
        call   Delay_1sec         ; wait 1 second

Si le pic fait un reset lors des commutations de relais, il vaut mieux les commuter un par un avec une petite temporisation.

asm 16f84 recept tcde rc5 à modifier
elektrax
Débutant
Débutant
Messages : 77
Enregistré en : septembre 2015

#9 Message par elektrax » sam. 25 juin 2022 06:32

Meri pour les infos

je teste çà au cours de la semaine

Bon w-e à tous


Retourner vers « Langage ASM »

Qui est en ligne

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