Bienvenu(e)! Identification Créer un nouveau profil

Recherche avancée

Erreurs dans le programme "irboard" !?

Envoyé par BBenj 
Erreurs dans le programme "irboard" !?
vendredi 22 mai 2009 17:48:34
Hello

J'ai soit trouvé des erreurs dans le programme recepteur IR, soit je comprend plus rien à l'assembleur...
Dans le code du recepteur IR je trouve:

#code ASM

rx
movlw h'08';
movwf boucle; le compteur qui va faire la boucle pour qu'on reçoive 8 bit
call pause1280; on fait une pause de 1280 µs le premier signal étant plus long comme ça on est sur que c'est bien le premier signal vu qu'un signal pendant l'envoie sera de maximum 1280µs, on met une pause un peu plus longue que 1280µs et le premier signal du 1450µs
btfsc PORTB, 0; si le signal est déjà repassé a 0 c'est que c'est le mauvais, le vrai signal étant plus long que 1280µs
goto main; mauvais signal!!!

bouclerx
btfss PORTB, 0;
goto bouclerx; attendre que le signal repasse a 0 ne pose pas de probleme, l'inverse si!
call pause640; attend 640µsec
rlf cle, 1;
btfss PORTB, 0; le signal est repassé a 1 apres la pause de 640µsec
goto rx1;
bcf cle,0;; le signal est toujours a 0;

rxend

#fin code ASM (petit bout :-) )


Un problème ici:

btfsc PORTB, 0; si le signal est déjà repassé a 0 c'est que c'est le mauvais, le vrai signal étant plus long que 1280µs
goto main; mauvais signal!!!

btfsc c'est "skip if clear", donc là si le signal est à 0, c'est que c'est mauvais mais on saute le "goto main"... donc on continu comme si c'était juste!!

ensuite:

btfss PORTB, 0;
goto bouclerx; attendre que le signal repasse a 0 ne pose pas de probleme,

là on doit attendre que le signal repasse à 0 non? donc c'est btfsc qu'il faut utiliser...

Pour finir:

btfss PORTB, 0; le signal est repassé a 1 apres la pause de 640µsec
goto rx1;
bcf cle,0;; le signal est toujours a 0;

là c'est "skip if set" donc à cet endroit si le signal est repassé à 1, c'est un 1 qui a été reçu donc logiquement c'est "goto rx1"... sauf que là on fait "bcf cle,0"... donc btfsc à utiliser non?

y'en a encore un après rxsend :
btfsc PORTB, 0; le signal doit être a 1, sinon le signal est perdu
goto main; signal incorrect!!!
decfsz boucle, 1; boucle jusqu'a 8 bit reçu

Voila c'est tout ce que j'ai regardé, mais si on suit le protocole, l'interprétation du signal est fausse...

(je casse tout là... :-/)

Bonne soirée!
Benj

Re: Erreurs dans le programme "irboard" !?
vendredi 22 mai 2009 21:39:50
Salut,

C'est difficile de se remettre dans l'assembleur et dans le code écrit y'a longtemps comme ça.... Mais vu que je me rappelle très bien que la carte fonctionne, je pense que le tout est dans l'interprétation du mot signal à l'état haut ou bas... Enfait je pense que le TSOP inverse le signal, c'est à dire que quand il reçoit une porteuse, sa sortie passe a l'état bas, et que quand il ne la reçoit pas sa sortie est à l'état haut. Ce qui fait que dans le code, quand j'indique le signal passe à l'état 0, c'est que la porteuse n'est plus envoyée et que donc la sortie du TSOP repasse à l'état 1.... (Waw j'en reviens pas de ce que j'écris à passé 23h...)

Tu peux peut-être le confirmé en revérifiant avec le TSOP mais a la lecture du datasheet de ce dernier, je pense que c'est ça.

Bon courage winking smiley

Benjamin
Re: Erreurs dans le programme "irboard" !?
samedi 23 mai 2009 09:06:16
Glups...

Exact la sortie est inversée... donc un "1" devient un "0"...
La datasheet le montre bien!
Autant pour moi! Ca m'apprendra à me renseigner un peu plus! :-$

Au moins maintenant je sais comment il marche, j'aurais pas cherché pdt de heures le pq que ça marche pas...! :-D

Bon WE
Benj
Re: Erreurs dans le programme "irboard" !?
samedi 23 mai 2009 12:58:06
Ne t'en fais pas, c'était pas super explicite non plus dans le code winking smiley

A++
Seuls les utilisateurs enregistrés peuvent poster des messages dans ce forum.

Cliquez ici pour vous connecter