Resolució de problemes¶
El més comú és que els programes i els circuits no funcionen en el primer intent. Això passa fins i tot als més experimentats, ningú no es desfà de la 'Llei Murphy <https://es.wikipedia.org/wiki/ley_de_murphy>`__.
Els fracassos més freqüents i també els més difícils de trobar solen ser els més senzills. Són fallades de tipus Per què funciona aquesta televisió? Sense adonar -se que no està connectat.
A continuació, es mostra una llista dels errors més habituals de manera que pot orientar -se per trobar aquells fracassos que resisteixen i tanta feina.
Està connectat?¶
Hi ha múltiples versions d’aquest fracàs comú. En aquest moment cal destacar que la verificació s’ha de fer de manera que es garanteixi la bona connexió amb la fiabilitat total. No n’hi ha prou de veure si el cable està al seu lloc. També cal verificar que hi hagi continuïtat, s’ha de comprovar amb una política que arribi el senyal i que no hi hagi altres connexions no desitjades, com ara un curtcircuit. Abans de continuar buscant fallades més complexes, s’hauria de demostrar completament que la connexió és correcta. A continuació es troba una llista de versions molt comunes d’aquest problema.
El menjar està connectat i té la tensió correcta?¶
El control més senzill i segur consisteix a mesurar la tensió d’alimentació del circuit amb un canter. Si el circuit té un LED per comprovar la presència de menjar, també us ajudarà, però amb un LED no es pot assegurar que la tensió sigui correcta.
En general, no n’hi ha prou de saber que el circuit està connectat, perquè això pot enganyar. Imaginem una placa connectada a un cable USB que l’alimenta. Evidentment, la placa està connectada, però està connectat l’altre final del cable? El centre al qual està connectat el cable està connectat a l'ordinador? L’ordinador està en marxa? Es talla algun dels cables? Alguns dels interruptors d’encesa no estan en una posició ON o s’ha quedat a la meitat? El més segur és comprovar la tensió d’alimentació al circuit final.
El senyal analògic està connectat?¶
Com en el punt anterior, el més segur és mesurar el nivell de senyal que arriba al circuit. Quan s’intenta mesurar un senyal analògic, sempre mesura el mateix o només es rep el soroll. En aquest cas, heu de comprovar diverses connexions:
- La massa està connectada?
- Els senyals de referència de tensió estan connectats V+ i V-?
- Continua el cable que va del sensor al microcontrolador?
- Hi ha un curtcircuit que no permeti arribar el senyal?
El senyal està connectat al passador adequat?¶
La primera entrada de Puerto Ra0 i la segona RA1 pot provocar confusió en ocasions, el senyal està connectat a la seva entrada? Si hi ha una confusió al port d’entrada/sortida, comencen els problemes. Esteu connectat a RA o RB? En alguns microcontroladors és possible assignar les entrades/sortides als pints per programari, es configura el pin d'entrada/sortida?
Està connectada la resistència de desplegament o desplegable?¶
Algunes sortides han de tenir una resistència connectada a l'alimentació perquè la sortida pugui donar senyal. Aquest és el cas d'alguns circuits comparatius com LM311 (sortida del col·lector obert) o algunes sortides especials de microcontroladors (sortida de desguàs obert). La millor manera de comprovar l’operació correcta és comprovar la tensió del passador amb un canter. En aquests casos, una lectura detallada del full de característiques (full de dades) pot evitar cometre aquest fracàs.
El PIN està configurat com a entrada o com a sortida?¶
Una confusió en la configuració i podem passar hores buscant el problema. El més senzill és comprovar primer la configuració dels pins d’entrada i sortida.
- Es configura correctament el pin MCLR?
- Es configura correctament el pin LVP per a la programació de baixa tensió?
Hi ha alguna entrada d'aire que reculli soroll ambient?¶
Cal assegurar -se que totes les entrades digitals i les entrades analògiques estan connectades per defecte a la massa. Les entrades a l’aire poden provocar fallades intermitents molt difícils de trobar i un major consum del circuit. Especialment els pins MCLR i LPV poden causar fallades que provoquen el restabliment del microcontrolador si no es configuren correctament i es connecten a VDD o GND.
Es canvia la polaritat?¶
Alguns connectors obliguen a connectar una polaritat específica. En altres casos, un connector només té una posició, però els cables es canvien. Una dieta invertida pot destruir el circuit i un senyal analògic amb polaritat invertida no funcionarà. La polaritat és correcta?
Les entrades digitals poden estar actives a nivell alt o baix. És el nivell lògic correcte?
Si el pin de restabliment /MCLR està connectat amb una resistència de massa i un botó al positiu (viceversa de la seva connexió normal), res no funcionarà. No és habitual cometre aquest error i, pel mateix motiu, podeu perdre molt de temps intentant trobar aquest fracàs.
Si un port de microcontrolador està configurat amb entrades en pull-up (resistència positiva) i connecta els botons externs al positiu del menjar ... Cap funcionarà.
Hi ha curtcircuit?¶
L’autor pot indicar continuïtat als cables, però si hi ha un curtcircuit entre el circuit, el circuit no funcionarà. Per comprovar la continuïtat d’un component, s’ha de desconnectar el component del circuit. Heu de comprovar que no hi ha curtcircuits abans de comprovar si hi ha continuïtat.
Si aquest error és freqüent, hi ha dispositius específics per comprovar els curtcircuits. Des d’un sol miliomimeter fins a un complex reflectòmetre de domini de temps <https://es.wikipedia.org/wiki/reflect%C3%B3meter_de_de_de_de_tiempo> `` __ __
S'ha demostrat amb seguretat?¶
Val la pena tornar a insistir en aquest moment. En moltes ocasions se suposa que hi ha una connexió només perquè veiem el cable al seu lloc. Això no és suficient. El xec pot trigar molt poc i estalviar molt d’esforç i algun mal de cap.
És fàcil "veure " que dos terminals vermells i negres estan connectats correctament a l'autor ... fins que un aspecte més atent ens permet veure que els terminals estan connectats en mode de tensió, mentre s'intenta mesurar el corrent.
Es configuren correctament les variables i les constants?¶
Aquesta és una secció que genera freqüents i difícils de trobar perquè se suposa que hauria de funcionar correctament. El llenguatge predeterminat que es tractarà és el C, perquè és el llenguatge d’alt nivell més utilitzat per programar microcontroladors.
Les variables poden contenir dades?¶
Un bucle de repetició de 1000 no es pot fer amb una variable de 8 bits. Una variable de 8 bits amb un signe només pot comptar fins a 127. Els valors principals confonran el bucle quan el valor negatiu
signed char i;
for(i=130; i>0; i++) print i;
Aquest codi no imprimirà res, ja que i s’inicialitza amb un valor inferior a zero (i = 130 = -126 en format de 8 bits amb signe).
La base de numeració és correcta? Cal comprovar que utilitzem una base de numeració adequada
a = 0x11001100; // Se está utilizando base hexadecimal, aunque parezca binario
Hi ha definicions repetides o fora de context?¶
Si hi ha una definició de constant "#define " en un moment del programa i es defineix de nou en un altre punt, això pot comportar confusió quan es programi. Les definicions han d’aparèixer només una vegada.
Les variables locals d’una funció sobreposen les variables globals. Hem de trucar a variables globals perquè no coincideixin amb variables locals.
Les condicions estan escrites correctament?¶
Les condicions són una font freqüent d’errors. Alguns dels més freqüents són:
Escriure un únic igual és incorrecte
if (a = 1) // Incorrecto. Se asigna 1 a la variable 'a'
if (a == 1) // Correcto
if (0xF0 & 0x0F); // Incorrecto, resultado falso
if (0xF0 && 0x0F); // Correcto, resultado verdadero
if ((0xF0 != 0) && (0x0F != 0)); // Más correcto aún, la condición aparece explícita