Le PIC continue de se réinitialiser: est-ce que je vois des effets secondaires de l'utilisation de la maquette?

11

J'utilise PIC18F4680 et j'ai des problèmes pour l'exécuter à partir d'une source d'horloge externe à 40 MHz ou d'un cristal à 10 MHz en mode HSPLL. L'utilisation d'un cristal à 10 MHz en mode HS semble convenir et un cristal à 5 ​​MHz en mode HSPLL fonctionne également très bien.

Ce qui se passe, c'est que le PIC démarre, fonctionne pendant quelques secondes, puis s'arrête pendant un certain temps et redémarre. La période totale du cycle est d'environ 5 secondes à partir de laquelle le PIC fonctionne cesse de fonctionner au début de la seconde seconde.

J'ai également remarqué que parfois, lorsque j'ajoute un condensateur suffisamment grand déchargé au bus d'alimentation de la maquette, le PIC fonctionne correctement. Le point intéressant est que cela ne se produit que si j'ajoute le condensateur alors que le PIC fonctionne déjà. Si j'alimente la maquette avec le condensateur là-bas ou si je place un condensateur qui n'a pas été complètement déchargé, le problème persiste.

J'ai lu sur certains sites que des problèmes similaires au mien peuvent survenir en raison de la consommation d'énergie accrue du PIC sur une fréquence plus élevée et une tension de fonctionnement la plus basse la plus élevée. Dans ces cas, s'il y a de courtes chutes de tension sur l'alimentation, elles sont plus susceptibles d'atteindre la tension de fonctionnement la plus basse du PIC sur cette fréquence, c'est donc une bonne idée d'avoir des condensateurs supplémentaires sur la planche à pain pour résoudre ce problème. Depuis pleine charge à 40 MHz, les utilisations entières de circuit autour de 64 mA, ma première idée était de mettre un peu de condensateurs au tantale en espérant qu'ils seraient assez grand et avoir ESR assez bas pour résoudre le problème. L'un n'a pas aidé et le second n'a pas aidé non plus. J'ai donc ajouté 100 μ F10 μF100 μFcondensateur en aluminium et cela n'a pas aidé non plus. Ensuite , j'ai ajouté un condensateur en aluminium sans effet. À la fin, j'ai ajouté un condensateur électrolytique en aluminium de 1 mF, puis pour la première fois, le circuit a bien fonctionné jusqu'à ce qu'il soit éteint et rallumé. Je dois également noter qu'à des fins de test, j'utilise un Vcc de 5,5 V, qui est la tension nominale la plus élevée pour ce microcontrôleur. Cela devrait me laisser de la place jusqu'au 4,2 V qui est la tension de fonctionnement la plus basse à 40 MHz470 μF

Ensuite, je l' ai lu que peuvent causer quelques problèmes, donc je mets parfois des sorties flottantes résistances de traction vers le bas à toutes les broches non utilisées et cela n'a pas aidé non plus . Après que je l' ai lu que , parfois , il pourrait y avoir des problèmes si les entrées de l' oscillateur flottaient, j'ai donc essayé de les connecter à la masse à l' aide des 10 M Ohm résistances et cela n'a pas aidé.10 kΩ10 MΩ

En raison de la longueur du fil allant de la sortie de l'oscillateur à l'entrée de l'oscillateur au PIC, je m'attendais à des problèmes, mais je ne m'attendais pas à des problèmes avec le cristal à 10 MHz qui est très proche des broches de l'oscillateur sur le PIC. Aussi avec le cristal, je m'attendrais à des problèmes en mode HS aussi, si la distorsion du signal de l'oscillateur due à la maquette était le problème, mais en mode HS, le PIC fonctionne bien.

J'utilise normalement des condensateurs de 33 pF pour les cristaux, mais j'ai aussi essayé avec 15 pF et je n'ai détecté aucun changement.

Je dois également noter que ce PIC a un moniteur d'horloge à sécurité intégrée et un basculement d'oscillateur interne / externe. J'ai essayé de les activer tous les deux, en espérant qu'ils confirmeraient au moins que le problème est avec l'oscillateur, mais ils n'aident pas le problème. Il n'y a aucune différence, qu'ils soient allumés ou éteints.

J'ai également désactivé à des fins de test la minuterie du chien de garde, la réinitialisation du brunissement et la réinitialisation du dépassement / dépassement de la pile. Je pense que j'ai désactivé toutes les sources de réinitialisation pour cette puce. De plus, le programme est dans une boucle infinie, donc il ne se termine pas.

Le PCF8583 n'a aucun problème et continue de fonctionner correctement même lorsque le PIC se réinitialise, mais d'un autre côté, il a une tension minimale beaucoup plus faible.

Malheureusement, je n'ai pas d'oscilloscope, mais j'ai fait des tests avec une carte son (taux d'échantillonnage de 96 kHz) et j'ai remarqué que lorsque le RTC est activé, il y a un bruit de 25 Hz sur la ligne électrique. Le programme que j'utilise rapporte quelque 300 mV crête à crête, mais je ne sais pas à quel point lui faire confiance et je ne sais pas si cela suffirait à causer des problèmes pour le PIC. Quand tout est éteint, le bruit est d'environ 100 mV crête à crête, donc ça devrait aller.

Au cas où cela aiderait, voici l'image de la planche à pain elle-même: (clic droit -> voir l'image en taille réelle) entrez la description de l'image ici

Alors, quelqu'un a-t-il une idée de ce qui se passe ici?

En fin de compte, je pourrais simplement exécuter le PIC à 20 MHz, mais si j'avais besoin de plus de puissance de traitement, j'aimerais pouvoir le faire fonctionner à 40 MHz.

MISE À JOUR

J'ai placé un autre régulateur sur la planche à pain elle-même et le bruit capté par la carte son est maintenant beaucoup plus faible (environ 50 mV crête à crête), mais cela n'a pas influencé le problème principal.

AndrejaKo
la source
1
Hmm, j'allais suggérer WDT et brown-out, mais vous les avez désactivés. Savez-vous qu'il y a des errata avec le brownout pour ce PIC? Je n'ai jamais essayé d'exécuter un PIC aussi vite sur une planche à pain. Nous utilisons le 18F4580 tout le temps avec un oscillateur 10 MHz et HSPLL. Ils fonctionnent bien.
Rocketmagnet
2
Oubliez la planche à pain (je ne les utilise jamais) et utilisez un PCB approprié, cela vous fera gagner beaucoup de temps.
Leon Heller
3
@Leon Heller Cela peut gagner beaucoup de temps, mais en ce moment, le PCB est plus cher que mon temps, d'autant plus que je n'ai même pas de liste de tous les principaux composants que j'utiliserai.
AndrejaKo
1
@AndrejKo Cela ressemble à l'un de ces problèmes qui me donne envie de me recroqueviller en boule et de pleurer. Êtes-vous sûr que votre temps vaut si peu? Je ferais juste le PCB - c'est aussi tellement amusant!
AngryEE
1
@AndrejaKo: Si cela ne vous dérange pas d'attendre environ une semaine, j'ai eu beaucoup de succès avec cette commande de PCB de groupe: dorkbotpdx.org/wiki/pcb_order . Si vous ne voulez pas créer le vôtre, c'est
Chris Laplante

Réponses:

12

Ceci est un conseil assez ancien, et je ne sais pas s'il sera pertinent pour votre micro, mais il y a environ 4 ans, j'ai fait un projet avec un PIC18F qui a rencontré d'étranges réinitialisations parasites. Après avoir lu le rapport et joggé ma mémoire, voici ce qui semble l'avoir résolu:

Avez-vous le Low Voltage Programming Enablebit de configuration activé? Votre PGMépingle est-elle sur PORTB? Si tel est le cas, vous pouvez envisager de désactiver les deux entrées Low Voltage Programming Enableet Port B A/D Enableles entrées numériques lors de la réinitialisation. Selon mon ancien rapport, ce qui se passait, c'est que nous sommes partis PORTBflottants alors qu'ils étaient des entrées analogiques et avons déclenché la PGMbroche. Avec le recul, je ne sais pas si ce diagnostic était correct, mais nous avons fini par terminer ce projet avec succès, donc cela peut valoir le coup.

Jon L
la source
Intéressant! Il y a quelques minutes, j'ai remarqué que la connexion du programmateur affectait le problème et maintenant cette réponse. J'ai désactivé le port BA / D et le LVP et cela fonctionne bien jusqu'à présent. Cela pourrait être une sorte d'interaction étrange sur la broche PGM.
AndrejaKo
@AndrejaKo, cela semble très familier de ce que j'ai vécu. J'espère qu'il reste stable ... le matériel capricieux peut être extrêmement frustrant lorsque vous essayez de faire quelque chose: S
Jon L
1
Eh bien, ça fonctionne bien depuis 21 minutes et 30 secondes. J'espère que ça restera comme ça. Je vais le laisser fonctionner toute la nuit et voir s'il se réinitialise.
AndrejaKo
Génial! Je suis content que cela ait résolu le problème.
abdullah kahraman
1
J'ai fait ma journée, j'ai passé une journée entière à essayer de comprendre pourquoi mon PIC 16F887 se réinitialisait toutes les quelques secondes. La basse tension du circuit a été réglée et la broche PGM flottante a détecté du bruit déclenchant la réinitialisation. +1 représentant pour vous
Gianluca Ghettini
7

Avec une configuration comme celle-ci, il nous sera presque impossible de dire exactement ce qui ne va pas. Ce que nous pouvons dire, cependant, c'est ce qui ne va pas. Il y a beaucoup de mauvaises choses, ou du moins pas aussi bonnes que froides. N'importe laquelle de ces choses pourrait être la véritable source de votre problème, mais elle pourrait également nécessiter la combinaison de problèmes qui, lorsqu'ils sont additionnés, équivalent au problème que vous voyez.

La seule véritable façon de déboguer cela est de corriger tout ce que vous savez être mauvais, que ce soit le pistolet fumant ou non. Finalement, le problème sera résolu d'une manière ou d'une autre.

Lorsqu'un MCU comme celui-ci ne fonctionne pas correctement, vous devez presque toujours vous concentrer sur les bases: alimentation, horloge et réinitialisation. Avec une planche à pain, tous les trois sont suspects!

Le suspect n ° 1 pour moi est l'horloge à 40 MHz. 40 MHz est assez rapide pour passer sur un fil flottant dans l'air. Il est également rapide de se fourrer dans une planche à pain, où le "système de distribution de signaux" n'est pas vraiment conçu pour des vitesses élevées. S'il s'agissait d'un PCB, je vous dirais de vous assurer que votre impédance de trace est cohérente et de terminer correctement vos signaux. Malheureusement, vous ne pouvez pas vraiment faire cela sur une planche à pain. La meilleure chose que je puisse vous dire est de garder vos fils aussi courts que possible, puis de les rendre encore plus courts! Utilisez un o-scope sur le signal d'horloge, sondé directement sur la broche PIC, avec le fil GND de la sonde également directement sur la broche GND la plus proche sur le PIC. Cela vous en dira beaucoup sur votre horloge.

(Essayez d'emprunter un o-scope si vous le pouvez. Il va être difficile de déboguer des choses sans un.)

Le suspect n ° 2 est le pouvoir. La puissance est également un énorme problème avec les plaques d'essais, car l'inductance et la résistance du fil sont relativement élevées. Là encore, gardez les fils courts. Je note également que vous n'avez pas de capuchons de découplage sur l'oscillateur 40 MHz. Pour l'OSC, j'irais avec un 0,1 uF et quelque chose de plus grand (4,7 uF à 100 uF) en parallèle. Votre PIC peut également utiliser quelque chose de plus grand en parallèle avec les plafonds de 0,1 uF. Normalement, les bouchons plus grands ne seraient pas nécessaires, mais rien n'est normal avec une planche à pain.

Le suspect n ° 3 est réinitialisé. Vous ne nous avez donné aucune information sur le signal de réinitialisation, et je dirais que c'est le plus bas de ce que je soupçonne, mais vous devriez quand même le vérifier. Mettez un o-scope dessus et voyez ce qui se passe. Vous pourriez peut-être simplement utiliser un voltmètre. Si la tension sur la broche de réinitialisation est proche du niveau de seuil, vous devez la corriger.

Passons maintenant en revue les choses que vous avez essayées:

Vous avez fait beaucoup d'expériences avec la pose de bouchons sur les lignes électriques, avec peu ou des résultats confus. C'est l'un de ces moments où vous n'avez qu'à mettre des bouchons là-bas et ne vous inquiétez pas s'ils font quelque chose de positif ou non. Il se peut que votre alimentation soit bruyante, mais ce n'est qu'une des nombreuses causes du problème. Ajoutez des bouchons plus grands en parallèle avec les bouchons 0,1 uF au PIC. Ajoutez des bouchons à l'oscillateur 40 MHz. Assurez-vous que les fils sont aussi courts que possible. Passez ensuite à la chose suivante.

Des plafonds supplémentaires sur l'alimentation sont l'une de ces choses qui ne risquent pas de causer de problèmes. C'est pourquoi vous pouvez simplement en mettre et ne pas trop vous en soucier. Surtout avec des bouchons 10-100 uF.

Plus tard, une fois que tout fonctionne, vous pouvez retirer ces bouchons un par un et voir si le problème revient. S'il ne revient pas, les bouchons n'étaient pas le problème. Mais pour l'instant, vous devez supprimer cela comme un problème potentiel, mais en ajoutant des bouchons.

Bien que les broches flottantes puissent être un problème, elles sont rarement un problème suffisamment important pour provoquer le crash d'un MCU. Cela vaut la peine d'être corrigé, car cela provoque d'autres problèmes, mais il est très peu probable que ce soit le problème ici. Remarque: un moyen simple d'empêcher les broches inutilisées de flotter est de les définir comme sorties! Haut ou bas, peu importe. Mais si le PIC pilote ces broches, elles ne peuvent pas flotter.


la source
2
Une bonne réponse. Tous ces longs fils désordonnés m'ont juste fait penser qu'essayer de faire fonctionner cela sur une planche à pain méchante ne valait pas le temps et la misère.
Rocketmagnet
Belle liste! Je rendrai compte des résultats lorsque je le parcourrai.
AndrejaKo
4

Vous n'avez pas mentionné la broche PGM (parfois appelée LVP). Cela doit être lié bas ou LVP désactivé dans les octets de conifig.

Êtes-vous sûr que ce PIC peut prendre 40 MHz directement? Certains ne peuvent atteindre 40 MHz que via la PLL interne. Je n'ai pas vérifié la fiche technique mais vous devriez. Même si c'est le cas, je ne m'attendrais pas à ce que 40 MHz sur une planche à pain se comportent bien. Je pense que vous devriez pouvoir faire fonctionner le PIC avec un cristal de 10 MHz et le 4x PLL interne si vous faites attention à la planche à pain et mettez les bouchons de dérivation aux bons endroits.

Ce genre de question revient régulièrement. Au lieu de répéter tous les problèmes typiques, consultez /electronics//a/29620/4512 .

Olin Lathrop
la source
On dirait que nous avons deux bonnes réponses ici :)
abdullah kahraman
2

Je dois être d'accord avec David. Il y a tellement de longs fils, et 40 MHz sur une planche à pain est assez optimiste. Je ne peux pas croire que votre temps vaille vraiment si peu que vous ne pouvez pas vous permettre de faire un petit prototype de PCB . Ces choses ne coûtent qu'environ 30 £ chez PCB Train . Je suis sûr qu'il y aura quelqu'un près de chez vous qui pourra vous fournir des produits similaires.

Pourquoi ne pas faire ça. Concevez un PCB qui a le PIC, l'oscillateur et le régulateur comme composants SMD, puis une charge entière de bandes de cartes de perf. De cette façon, vous pouvez toujours faire votre prototypage, mais assurez-vous que le PIC est satisfait.

Conseil de perf de prototype de PC

Rocketmagnet
la source
2
Ah, j'adore la 3D d'Altium! Soit dit en passant, 30 £ peuvent être élevés pour un étudiant :) Il vaut mieux utiliser une carte de perf ou mieux, un PCB fait maison.
abdullah kahraman
1
Si je parviens à faire un PCB fait maison, je vais certainement essayer avec cette idée.
AndrejaKo
2
@AndrejaKo - Cool. Donnez-nous une coche alors :) - Ou même simplement mettre deux rangées de bandes de broches, de sorte que vous pouvez le brancher sur une planche à pain.
Rocketmagnet
1

si vous avez un générateur F de variable externe, envisagez de l'utiliser pour tester la disposition / puce pour les problèmes. et trouvez un F externe qui cause une panne. Et rappelez-vous que les câbles de masse étendus agissent comme une antenne pour la diaphonie du bruit.

Tony Stewart Sunnyskyguy EE75
la source
0

la sonde ressemble à u besoin d'une sonde logique, dvm ou portée ... http://search.digikey.com/us/en/products/DP%2052/BKDP52-ND/227492

Mettez le capuchon sur la puce d'horloge V + / gnd et envisagez une paire torsadée pour 40 MHz si loin. Le pic xtal a une entrée et une sortie .. vérifier le niveau DC de sortie inversée = v / 2? .. Pic se réchauffe-t-il? Ha..

Je suggère le mode Xtal PLL à 10 MHz à 40 MHz pour éviter les problèmes de mise en page.

"Le mode HSPLL utilise l'oscillateur en mode HS pour des fréquences jusqu'à 10 MHz. Une PLL multiplie ensuite la fréquence de sortie de l'oscillateur par 4 pour produire une fréquence d'horloge interne jusqu'à 40 MHz. La PLL n'est disponible pour l'oscillateur à cristal que lorsque le FOSC3: les bits de configuration FOSC0 sont programmés pour le mode HSPLL (= 0110). "

Tony Stewart Sunnyskyguy EE75
la source
En fait, j'ai essayé d'utiliser HSPLL et le cristal 10 MHz, mais en mode HSPLL, il montre les mêmes résultats que l'oscillateur. Cela fonctionne très bien en mode HS.
AndrejaKo
De plus, le PIC ne chauffe pas pendant l'utilisation, pour autant que je puisse voir.
AndrejaKo