Les PICs


 

Le but est d'essayer de regrouper les quelques astuces dont on peut avoir le souvenir ....
Tous les développements ont été effectués sur des PIC 16F877 4MHz ou 20MHz. Les ruses ne seront pas forcément valables pour tous les PIC. Toutes les ruses sont issue de la lecture de la documentation et/ou d'expériences diverses. Il ne sagit pas d'une documentation, mais plutot d'un condensé de 'ce qui peut servir', ou 'ce qu'il est bon de savoir'.
On peut aussi apparenter ça à une FAQ

Lorsqu'on réalise une carte à base de PIC, se pose toujours un certain nombres de questions, surtout celle qui est : 'pourquoi ça marche pas ?'

Qu'est-ce qui peut faire qu'un PIC ne se flashe pas ?

Pour flasher un PIC, il faut que :

Ce sont les 2 seuls points indispensables. Tout le reste n'influe pas. En résumé les broches suivantes doivent être gérées :

Il n'y a pas besoin d'avoir de quartz de monté et fonctionnel pour flasher le PIC, pas besoin de s'occuper des autres broches.

Le PIC est flashé, qu'est-ce qui peut faire qu'il ne démarre pas ?

Là, beaucoup de possibilités. La première chose à vérifier est si le quartz oscille.

Une fois flashé, le quartz n'oscille pas.

Pour voir si le quartz oscille, on peut utiliser soit un oscilloscope (là on est fixé), soit un multimètre. Avec un multimètre, on doit trouver environ VCC/2 sur chaque broche du quartz. On n'est pas sûr que le quartz oscille. Par contre si on ne trouve pas environ VCC/2 il y'a de fortes chances que le quartz n'oscille pas.

Si on trouve 0V, il peut y avoir un cours-jus avec la masse, Si on trouve +5V, il peut y avoir un cours-jus avec le VCC.

Le quartz peut ne pas osciller pour plusieurs raisons :

  • Erreur dans les bits de config du PIC. Erreur de loin la plus fréquente. Ces bits sont situés dans une zone spéciale et ne peuvent être écrit qu'au moment du flashage. On les détermine, soit dans le code C, soit dans le soft servant à flahser (dans ce cas, c'est le soft servant à flasher qui a e dernier mot). Il faut donc faire attention à bien voir quelles sont les bits REELLEMENT écrit dans le PIC. (notamment MPLAB, permet de les modifier/s'octroie le droit de les modifier lui même).
    Sous PCW ces bits sont déterminés par :
    #fuses
    ex : #fuses HS,PUT,NOWDT,NOLVP,NOBROWNOUT,NOPROTECT,NOWRT
    Celui correspondant à l'horloge est : HS. En fonction du type d'horloge (quartz rapide, quartz lent, réseau RC, etc,etc), il faut changer cette valeur par autre chose (cf datasheet du PIC).
  • PIC en reset permanent (broche MCLR en permanence à 0, ou du moins pas à 5V) (a vérfier au multimètre)
  • PIC en mode programmation haut voltage (broche MCLR > 13V)(mais bon là faut pas abuser, au pire du à un flasheur qui déconne)
  • PIC en mode programmation bas voltage, chose plus fourbe, contrôlée sur un 877 par la patte RB3. Si cette patte RB3 est à 1, le PIC est en programmation bas voltage et l'horloge arrêtée ,et le code ne s'execute pas. Donc soit :
    • mettre un pull down sur cette broche.
    • désactiver dans les bits de configuration, la programmation bas voltage.
  • Le quartz a bien démarré mais s'est arrêté par ce que le code a executé une instruction arrêtant le quartz. C'est subtile certes, mais il faut bien vérifier dans ce cas, que le code n'execute pas ce genre d'instruction, notamment involontairement, si on ne réalise pas une boucle dans le programme principal (le PIC peut sortir de la fonction main() et aller se prommener n'importe où en mémoire et rencontrer cette fameuse instruction).
  • Le problème peut aussi être matériel, avec un mauvais contact entre le quartz et le PIC et ou les 2 capas autour du quartz. Un cours-jus sur une des 2 broches du quartz. Dans tous les cas ce genre de problème peut se voir en testant soit la continuité avec l'alim (enfin la non continuité,etc etc)
  • Problème avec la valeur des capas autour du quartz.
  • Quartz défectueux. Très rare.

Une fois flashé, le quartz oscille, mais le programme ne marche pas.

Est-ce la plus simple des actions que l'on peut effectuer ?(mettre une sortie à 0 ou a 1) pour savoir si il y'a un problème ou pas.

Les autres problèmes

Quelques ruses matérielles :

Quelques ruses logicielles :(en particulier pour PCW)


Configuration de Make-TI pour un projet CCSC compilateur de PCW

La boite est nettement plus simple que celle nécessaire pour le DSP. Elle illustre la 'simplicité' et les limitation de PCW. Il n'est pas possible d'utiliser plus d'un seul fichier source C. (on peut séparer physiquement en plusieurs fichiers, mais le code sera OBLIGATOIREMENT inclus dans le fichier principal du projet. Seul ce fichier principal doit être déclaré dans le rpojet de LCC).

On renseigne ici :

Au niveau code ....