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 ---
Modérateur : mazertoc
asm 16f84 recept tcde rc5 à modifier
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
Merci
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
Merci
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
asm 16f84 recept tcde rc5 à modifier
- paulfjujo
Expert- Messages : 2598
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonjour,
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
... des l'appui sur une autre touche que 1 .
AVANT d'enclencher le relais demandé,
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)
-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)
asm 16f84 recept tcde rc5 à modifier
asm 16f84 recept tcde rc5 à modifier
- paulfjujo
Expert- Messages : 2598
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonjour Satinas,
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
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
asm 16f84 recept tcde rc5 à modifier
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
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
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
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 modification obligatoire du code ASM pour ce que tu veux faire.
A+
Quand on met un code, on met un schéma, c'est plus simple pour la compréhension
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
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 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.
asm 16f84 recept tcde rc5 à modifier
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
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
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
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
Si tu veux seulement éteindre le relais, sans toucher aux autre relais, c'est
Si le pic fait un reset lors des commutations de relais, il vaut mieux les commuter un par un avec une petite temporisation.
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.
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 129 invités