Comprobando si el microchip o el software están dañados

2

Construí un circuito con una pic18F4550, estoy tratando de encender 8 leds, pero no obtengo voltaje de salida de ningún pin de salida.

Sospecho que la foto podría romperse porque al crear el circuito cometí dos errores: - Conecté incorrectamente el regulador de 5 V y proporcioné 9 V a la imagen por primera vez. - en un lado de la imagen conecté la alimentación a vss y tierra a vcc

Sin embargo, después de notar mis errores y corregirlos, reprogramé la imagen y no obtuve ningún error (estoy usando MPlabX y PicKit2). Además, la foto no se está calentando ni nada de eso.

Revisé tres veces todos los cables y esquemas, pero solo hay 5v en los dos pines vcc y 0v en los puertos de salida.

Este es mi programa:

#pragma config XINST = OFF
#if defined(__XC)
    #include <xc.h>        /* XC8 General Include File */
#elif defined(HI_TECH_C)
    #include <htc.h>       /* HiTech General Include File */
#elif defined(__18CXX)
    #include <p18cxxx.h>   /* C18 General Include File */
#endif
#if defined(__XC) || defined(HI_TECH_C)

#include <stdint.h>        /* For uint8_t definition */
#include <stdbool.h>       /* For true/false definition */

#endif
#define NO_CLRWDT
#define SYSCLK          20000000
#define PLL             4
#define SYSCLK_PLL      (SYSCLK*PLL)
#define FCY             (SYSCLK_PLL/2)

#include "system.h"        /* System funct/params, like osc/peripheral config */
#include "user.h"          /* User funct/params, such as InitApp */

void main(void){
    TRISD = 0x00;
    TRISC = 0x00;
    PORTC = 0xFF;
    PORTD = 0xFF;
    while(1){
    }
}

¿Podría romperse mi foto? ¿Y cómo puedo revisar o depurar el problema? Soy novato en soft y electrónica.

    

2 respuestas

9

Gracias a mi amplia experiencia en problemas y facepalms al crear circuitos para PIC, si el chip aún se programa y verifica con éxito, es probable que esté bien.

El problema que tienes está en tu código. Aquí hay una lista de causas probables:

  1. No tiene establecidos los bits de configuración, por lo que los bits de FOSC se ejecutan de manera predeterminada. El FOSC predeterminado en un 18F4550 es un reloj externo. A menos que tenga un reloj externo conectado a OSC1 (que probablemente no tenga), su programa no se ejecutará.

  2. El temporizador de vigilancia está activado de forma predeterminada, lo que significa que se está ejecutando y se reinicia constantemente tu chip. Debería estar deshabilitado en los bits de configuración.

  3. No tienes un bucle infinito al final de tu código. Sin un bucle infinito, el programa llegará al final del espacio del programa y restablecerá el chip. Puedes hacer algo tan simple como poner "while (1)"; como la última línea en su función principal.

respondido por el Dan Laks
4

De los máximos absolutos en la hoja de datos:

Voltaje en cualquier pin con respecto a VSS (excepto VDD y MCLR) ... -0.3V a (VDD + 0.3V)

Voltaje en VDD con respecto a VSS .......................... -0.3V a + 7.5V

Entonces, sí, al poner -9V en Vcc ha excedido ese rango, y el fabricante ya no garantiza que el chip funcione. Incluso si tuvieras la polaridad correcta, todavía superas el rango. Eso no significa que esté roto, necesariamente, pero los errores pueden surgir de formas divertidas y la vida útil puede reducirse.

Si fuera yo, y estuviera a punto de dedicar un tiempo y un esfuerzo significativos a este desarrollo, y si las fallas en el camino fueran inconvenientes, cambiaría el chip. Si actualmente "funcionara" probablemente continuaría con el desarrollo e intercambiaría cuando llegaran los nuevos chips.

Trate de no ordenar un recuento de solo una de las partes. Es más barato, a largo plazo, comprar algunos cuando se considera el tiempo y los costos de envío.

    
respondido por el Scott Seidman

Lea otras preguntas en las etiquetas