Aller au contenu


Photo
- - - - -

[PIC 16F877A] RD0, 1, 2, 3 à 1 tout le temps???


  • Veuillez vous connecter pour répondre
15 réponses à ce sujet

#1 Batcher

Batcher

    Nouveau membre

  • Membres
  • 4 messages

Posté 26 avril 2010 - 11:06

Bonjour

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 MikeFr

MikeFr

    Membre occasionnel

  • Membres
  • Pip
  • 82 messages

Posté 26 avril 2010 - 04:50

Salut Batcher, bienvenue sur le forum!
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 Maïck

Maïck

    Membre passionné

  • Membres
  • PipPipPip
  • 390 messages
  • Gender:Male
  • Location:Suisse

Posté 26 avril 2010 - 07:13

Si tu veut commencer à te lancer dans des projets un peut complet, un conseil apprend le C et oublie flowcode...

#4 frank9321

frank9321

    Membre occasionnel

  • Membres
  • Pip
  • 133 messages

Posté 26 avril 2010 - 08:06

[quote"Batcher"] d'une carte avec un pic 16 f877a,

lorsque je lance la carte en 12V[/quote]

Tu peux l'alimenter en 12 V un PIC ???

#5 Batcher

Batcher

    Nouveau membre

  • Membres
  • 4 messages

Posté 27 avril 2010 - 10:02

[flood]Sa y est je me suis presenter je le fait d'habitude mais là je n'avais pas vu le topic.[/flood]

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 Maïck

Maïck

    Membre passionné

  • Membres
  • PipPipPip
  • 390 messages
  • Gender:Male
  • Location:Suisse

Posté 30 avril 2010 - 07:10

Le MPLAB de microchip fonctionne mais c'est pour l'assembleur, il faut lui ajouter un compilateur C.

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 Batcher

Batcher

    Nouveau membre

  • Membres
  • 4 messages

Posté 04 mai 2010 - 01:16

J'ai chercher des exepmles de compilateru C dont ccs c16 et autre mais payant a chaque fois en avez vouz un gratuit a me proposer?
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 philou-RX

philou-RX

    Habitué

  • Membres
  • PipPip
  • 261 messages
  • Gender:Male
  • Location:Riviera - Vaudoise
  • Interests:Electronique / Informatique / Robotique / BD / et surtout les boissons fermentées au houblon

Posté 05 mai 2010 - 02:29

Hello à tous,



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 Maïck

Maïck

    Membre passionné

  • Membres
  • PipPipPip
  • 390 messages
  • Gender:Male
  • Location:Suisse

Posté 05 mai 2010 - 09:25

Euh c'est toi qui a coder ça ou c'est généré par flowcode ??

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 webshinra

webshinra

    Membre passionné

  • Membres
  • PipPipPip
  • 510 messages

Posté 05 mai 2010 - 10:02

on note que les goto en C sont la seule manière propre de sortir de deux boucles imbriquée.

#11 Maïck

Maïck

    Membre passionné

  • Membres
  • PipPipPip
  • 390 messages
  • Gender:Male
  • Location:Suisse

Posté 05 mai 2010 - 10:21

Je sais pas comment tu code mais en faisant des while avec la bonne condition dedans tu n'a pas besoin de sortir de manière bourrin avec des goto...


#12 webshinra

webshinra

    Membre passionné

  • Membres
  • PipPipPip
  • 510 messages

Posté 05 mai 2010 - 10:32

bha écoute, tu me montre une manière propre de deux boucle imbriquée simultanément et on en reparle?

enfin bon, c'est pas comme si c'etais la méthode recommandé par les standards.

#13 Tixlegeek

Tixlegeek

    Membre occasionnel

  • Membres
  • Pip
  • 116 messages

Posté 20 mai 2010 - 11:31

Je serai curieux de savoir quelles normes préconisent le goto en C....



#14 frank9321

frank9321

    Membre occasionnel

  • Membres
  • Pip
  • 133 messages

Posté 21 mai 2010 - 05:54

Le manuel du C99 utilise les goto. Notamment, comme la dit webshinra, dans des boucles imbriquées. Pour revenir moyennement au sujet, c'est vrai que le code présenté ici est assez horrible. 'fin bref.

#15 philou-RX

philou-RX

    Habitué

  • Membres
  • PipPip
  • 261 messages
  • Gender:Male
  • Location:Riviera - Vaudoise
  • Interests:Electronique / Informatique / Robotique / BD / et surtout les boissons fermentées au houblon

Posté 22 mai 2010 - 09:43

Salut à tous,



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



Image IPB [/left]

Image IPB[/left]





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 biohazard2

biohazard2

    Habitué

  • Membres
  • PipPip
  • 184 messages

Posté 22 mai 2010 - 11:25

[quote"philou"]regarder les pages 78 - 79[/quote]
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