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 : Jérémy
Comprendre les bases de la programmation PIC
Salut,
soit output_bit(PIN_B5, !input(PIN_B5));
soit output_toggle(PIN_B5);
Le fait d'avoir un flag etat reflet de l'état de la pin n'est pas forcément superflu, car c'est plus facile à manipuler que PIN_B5.
Le fait que short soit une variable bit dans CCS est assez particulier, d'habitude c'est un entier.
soit output_bit(PIN_B5, !input(PIN_B5));
soit output_toggle(PIN_B5);
Le fait d'avoir un flag etat reflet de l'état de la pin n'est pas forcément superflu, car c'est plus facile à manipuler que PIN_B5.
Le fait que short soit une variable bit dans CCS est assez particulier, d'habitude c'est un entier.
Comprendre les bases de la programmation PIC
Comprendre les bases de la programmation PIC
Bonsoir et bonne année à tous,
Je suis en train de fabriquer un petit bidule que je nomme "temporisateur cyclique programmable".
Concrètement c'est pour activer un relais pendant "x" secondes toutes les "y" minutes. "x" et "y" étant des variables paramétrables par 8 interrupteurs.
J'utilise un PIC16F684, donc 2 ports A et C de 6 E/S chacun.
Mes 8 interrupteurs pour programmer "x" et "y" sont répartis de la sorte : 3 sur le port A, et 5 sur le port C.
Pour info mes interrupteurs sont câblés comme suit :
inter0 : RC2
inter1 : RC1
inter2 : RA5
inter3 : RA4
inter4 : RA3
inter5 : RC5
inter6 : RC4
inter7 : RC3
Sous forme de tableau ça donnerait ça :
Ca fait 3h que je cherche comment faire pour lire cet octet dispatché sur 2 ports différents. Peut-être un tableau ? Je ne sais pas.
Help ?
PS : je viens de lire le topic "Peut-on séparement gerer les bits en MikroC?" et j'ai l'impression que le problème n'est pas si différent.
Si j'ai bien compris il faudrait que je lise le portA et le portC en masquant les bits dont je n'ai pas besoin, que je stocke ça dans des variables puis que je les assemble pour créer mon octet. Si j'ai juste et bien je suis pas sorti de l'auberge !
D'autant plus qu'il faut que j'écrive le résultat en mémoire EEPROM, chose que je n'ai jamais faite non plus. 
J'ai testé ça mais sans succès, en plus il me dit qu'il manque une parenthèse fermée je pige pas...
Je suis en train de fabriquer un petit bidule que je nomme "temporisateur cyclique programmable".
Concrètement c'est pour activer un relais pendant "x" secondes toutes les "y" minutes. "x" et "y" étant des variables paramétrables par 8 interrupteurs.
J'utilise un PIC16F684, donc 2 ports A et C de 6 E/S chacun.
Mes 8 interrupteurs pour programmer "x" et "y" sont répartis de la sorte : 3 sur le port A, et 5 sur le port C.
Pour info mes interrupteurs sont câblés comme suit :
inter0 : RC2
inter1 : RC1
inter2 : RA5
inter3 : RA4
inter4 : RA3
inter5 : RC5
inter6 : RC4
inter7 : RC3
Sous forme de tableau ça donnerait ça :
Code : Tout sélectionner
Bit I 7 I 6 I 5 I 4 I 3 I 2 I 1 I 0
----------------------------------------------------------------------
PortA I I I 3 I 4 I 5 I I I
----------------------------------------------------------------------
PortC I I I 6 I 7 I 8 I 1 I 2 ICa fait 3h que je cherche comment faire pour lire cet octet dispatché sur 2 ports différents. Peut-être un tableau ? Je ne sais pas.
Help ?
PS : je viens de lire le topic "Peut-on séparement gerer les bits en MikroC?" et j'ai l'impression que le problème n'est pas si différent.
Si j'ai bien compris il faudrait que je lise le portA et le portC en masquant les bits dont je n'ai pas besoin, que je stocke ça dans des variables puis que je les assemble pour créer mon octet. Si j'ai juste et bien je suis pas sorti de l'auberge !
J'ai testé ça mais sans succès, en plus il me dit qu'il manque une parenthèse fermée je pige pas...
Code : Tout sélectionner
Ton = Ton | ((portC.2<<0) | (portC.1<<1) | (portA.5<<2) | (portA.4<<3) | (portA.3<<4) | (portC.5<<5) | (portC.4<<6) | (portC.3<<7)); Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Comprendre les bases de la programmation PIC
Bonsoir djviper16, satinas, et tout le forum,
En version ASM, 10 lignes et c'est fini
Voilà, tu as pu cas étudier ça, c'est paulfjujo qui va être content.
A+
paulfjujo a écrit :Source du messagesans aucune ligne de code ASM !!!
En version ASM, 10 lignes et c'est fini
Code : Tout sélectionner
clrf lieu
movf PORTA,W
andlw B'00111000'
movwf resA
call ecrit_eepromm lieu,resA
incf lieu,F
movf PORTC,W
andlw B'00111110'
movwf resC
call ecrit_eepromm lieu,resC
Voilà, tu as pu cas étudier ça, c'est paulfjujo qui va être content.
Comprendre les bases de la programmation PIC
Oh ! Mais je suis chiant je le veux en C moi
Pour le portC ça serait plutôt ça non ? :
J'ai écrit un truc qui a l'air de passer au niveau de la compilation, je vous tiens au jus :
Pour le portC ça serait plutôt ça non ? :
Code : Tout sélectionner
movf PORTC,W
andlw B'00111110'J'ai écrit un truc qui a l'air de passer au niveau de la compilation, je vous tiens au jus :
Code : Tout sélectionner
Ton = Ton | ((RC2<<0) | (RC1<<1) | (RA5<<2) | (RA4<<3) | (RA3<<4) | (RC5<<5) | (RC4<<6) | (RC3<<7));
Modifié en dernier par djviper16 le sam. 9 janv. 2021 00:49, modifié 1 fois.
Comprendre les bases de la programmation PIC
djviper16 a écrit :Source du message Pour le portC ça serait plutôt ça non ? :
Code : Tout sélectionner
movf PORTC,W
andlw B'00111110'
Exacte,
Modifié en dernier par Temps-x le sam. 9 janv. 2021 00:56, modifié 1 fois.
Comprendre les bases de la programmation PIC
oula il va y avoir du chemin à faire !
Par contre ton programme il me semble pas qu'il "réorganise" les bits.
Je pratique pas l'assembleur mais j'ai l'impression que tu prends les bits qui t'intéressent dans le portA et que tu les écris dans "resA" puis pareil avec le portC.
Mais moi je veux mes 8 bits dans un seul et même octet ou variable 8 bit (Ton), et dans le bon ordre
Par contre ton programme il me semble pas qu'il "réorganise" les bits.
Je pratique pas l'assembleur mais j'ai l'impression que tu prends les bits qui t'intéressent dans le portA et que tu les écris dans "resA" puis pareil avec le portC.
Mais moi je veux mes 8 bits dans un seul et même octet ou variable 8 bit (Ton), et dans le bon ordre
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Comprendre les bases de la programmation PIC
Re
resA et resC sont deux variables, et effectivement je prends juste les bits qui m'intéressent, puisse c'est ce que tu demandes.
Explique toi mieux, si j'ai compris tu veux tout mettre en une seule variable de 8 bits ?
resA et resC sont deux variables, et effectivement je prends juste les bits qui m'intéressent, puisse c'est ce que tu demandes.
djviper16 a écrit :Source du message Mais moi je veux mes 8 bits dans un seul et même octet ou variable 8 bit, et dans le bon ordre
Explique toi mieux, si j'ai compris tu veux tout mettre en une seule variable de 8 bits ?
Comprendre les bases de la programmation PIC
Temps-x a écrit :Source du message Explique toi mieux, si j'ai compris tu veux tout mettre en une seule variable de 8 bits ?
Exactement ! Regarde mon petit tableau au dessus, j'ai indiqué les bits qui doivent constituer la variable "Ton".
C'est bon j'ai enfin réussi à faire un truc qui fonctionne, j'y ai passé toute la soirée et la moitié de la nuit
Code : Tout sélectionner
if (RA2==0)
{
delay_ms(10);
Ton=0x00;
etatRC1=!RC1;
etatRC2=!RC2;
etatRC3=!RC3;
etatRC4=!RC4;
etatRC5=!RC5;
etatRA3=!RA3;
etatRA4=!RA4;
etatRA5=!RA5;
Ton = Ton | ((etatRC2<<0) | (etatRC1<<1) | (etatRA5<<2) | (etatRA4<<3) | (etatRA3<<4) | (etatRC5<<5) | (etatRC4<<6) | (etatRC3<<7));
if (Ton==0x5C)
{
RA1=1;
delay_ms(100);
RA1=0;
delay_ms(100);
RA1=1;
delay_ms(100);
RA1=0;
}
}
else
{RA1=0;}Il me reste encore à trouver le moyen de stocker cette variable "Ton" dans l'EEPROM.
Comprendre les bases de la programmation PIC
Bonjour à tous,
je ne parle pas le C et je ne sais pas quel compilateur tu utilises, mais en MikroBasic, et je pense que c'est pareil en MikroC, l'une des solutions, si j'ai bien compris ton problème, est de faire :
Ou alors, j'ai mal compris ton problème ...
je ne parle pas le C et je ne sais pas quel compilateur tu utilises, mais en MikroBasic, et je pense que c'est pareil en MikroC, l'une des solutions, si j'ai bien compris ton problème, est de faire :
Ou alors, j'ai mal compris ton problème ...
Modifié en dernier par PEDRO le sam. 9 janv. 2021 01:39, modifié 1 fois.
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 4 invités



