[PIC 16F877A] RD0, 1, 2, 3 à 1 tout le temps???
#1
Posté 26 avril 2010 - 11:06
Voilà pour mon ppe je voudrais faire fonctionner un robot avec un téléphone mobile. Donc je me suis munis d'un téléphone bluetooth (c'est mieux ) d'une carte avec un pic 16 f877a, un pont en h, et du module bluetooth. Le pont en H est commandé par les sorties RD0, RD1, RD2, RD3, seul soucis lorsque je lance la carte en 12V ces sorties sont à 1 alors que moi je veux qu'elles varient. J'ai beau changer tout le port à 0 cela ne marche toujours pas. Je code avec Flowcode et implante mon programme avec un e blocks. Je ne vois absolument pas d'où viens le soucis.
Merci de votre aide.
#2
Posté 26 avril 2010 - 04:50
Au cas où tu ne l'aurais pas fait, pense à nous faire une petite présentation de toi sur le forum dans la bonne rubrique (Ne répond pas ici en disant: "ah oui au fait, Je me présente, je m'appel Henri, Etc... ^^)!
Bref, Pour ton problème ce serait bien que tu nous post ton code source complet, comme ça on pourra voir si tu n'as pas une erreur quelque part ;)
#3
Posté 26 avril 2010 - 07:13
#4
Posté 26 avril 2010 - 08:06
lorsque je lance la carte en 12V[/quote]
Tu peux l'alimenter en 12 V un PIC ???
#5
Posté 27 avril 2010 - 10:02
Merci de vos reponses rapides.
Je n'ai pas le code source sous la main pour l'instant je le poste dès que possible mais après l'avoir épluché et reépluché je n'ai pas detecté d'erreur majeur.
[quote"Maïck "]Si tu veut commencer à te lancer dans des projets un peut complet, un conseil apprend le C et oublie flowcode... [/quote]
Je connais le C mais a cause d'un manque de temps je me suis tournée vers flowcode qui est complet et simple d'utilisation. Je pense que le probleme vient de flowcode mais je ne sais pas quoi utilisé d'autre on m'a conseillé un log de microchip (microchip Mclab je crois) mais j'aimerais votre avis. Que me conseillerez vous?
@franck9321: la carte que j'utilise doit etre alimenter entre 5 et 12V mais le pic en lui meme je ne sais pas.
Voila encore merci de votre aide.
#6
Posté 30 avril 2010 - 07:10
Tu en a plusieurs payant et gratuit. Certain disponible "limité" microchip en fournit un justement je crois...
Si tu es fan de linux (avatar ?) et démerde tu peut te débrouiller avec GCC.
#7
Posté 04 mai 2010 - 01:16
Sinon voici le code source de mon programme test rien de compliquer pour le moment mais c'est un test
#define MX_PIC
//Définir pour microcontrôleur
#define P16F877A
#define MX_EE
#define MX_EE_TYPE2
#define MX_EE_SIZE 256
#define MX_SPI
#define MX_SPI_C
#define MX_SPI_SDI 4
#define MX_SPI_SDO 5
#define MX_SPI_SCK 3
#define MX_UART
#define MX_UART_C
#define MX_UART_TX 6
#define MX_UART_RX 7
#define MX_I2C
#define MX_MI2C
#define MX_I2C_C
#define MX_I2C_SDA 4
#define MX_I2C_SCL 3
#define MX_PWM
#define MX_PWM_CNT 2
#define MX_PWM_TRIS1 trisc
#define MX_PWM_1 2
#define MX_PWM_TRIS2 trisc
#define MX_PWM_2 1
//Fonctions
#include
#pragma CLOCK_FREQ 19660800
//Configuration de données
#pragma DATA 0x2007, 0x3f3b
void main()
{
//Initialisation
adcon1 = 0x07;
//Code d'initialisation d'Interruption
option_reg = 0xC0;
//Boucle
//Boucle: Tant que1
while (1)
{
//Sortie
//Sortie: 0 -> PORT D
trisd = 0x00;
portd = 0;
//Sortie
//Sortie: 1 -> D0
trisd = trisd & 0xfe;
if (1)
portd = (portd & 0xfe) | 0x01;
else
portd = portd & 0xfe;
//Pause
//Pause: 2 s
delay_s(2);
//Sortie
//Sortie: 0 -> PORT D
trisd = 0x00;
portd = 0;
//Pause
//Pause: 2 s
delay_s(2);
if ((1) == 0) break;
}
mainendloop: goto mainendloop;
}
void interrupt(void)
{
}
[/code]
#8
Posté 05 mai 2010 - 02:29
Petite réponse courte, effectivement ca paraît juste !!! mais regarde ce pdf, je pense que ca peut t'aider : Programmation PIC en C
Désolé de ne pas apporter plus :(
#9
Posté 05 mai 2010 - 09:25
En tout cas ca pique les yeux... :colere:
Si c'est généré par flowcode ca ne va pas me réconcilier avec !
#10
Posté 05 mai 2010 - 10:02
#11
Posté 05 mai 2010 - 10:21
#12
Posté 05 mai 2010 - 10:32
enfin bon, c'est pas comme si c'etais la méthode recommandé par les standards.
#13
Posté 20 mai 2010 - 11:31
#14
Posté 21 mai 2010 - 05:54
#15
Posté 22 mai 2010 - 09:43
Pour ne pas faire de la polémique, j'ai simplement fait des recherches sur les références sur le normes C99 pour le langage C, et ce qu'il en ressort, c'est que personne n'a tort ou personne n'a raison :p :o :p ...
En fait ca dépend du contexte de ce que l'on veut programmer. C'est vrai que lorsque l'on apprend à programmer, on nous déconseille d'utiliser l'instruction "goto", donc généralement on ne l'utilise pas.
Voici un pdf (en Français) qui explique justement le deux cas : PDF Français Norme C99
Bonne lecture à tous...
PS: vu la qualité M--Dique de mes captures, regarder les pages 78 - 79... et tout le reste bien sur :heu:
#16
Posté 22 mai 2010 - 11:25
Dans mon cas, ça tombe sur les pages 80 - 81 :)
0 utilisateur(s) li(sen)t ce sujet
0 members, 0 guests, 0 anonymous users