¿Cómo se determina si un nuevo microcontrolador es defectuoso?

11

Nunca he tratado con partes que son estrechas defectuosas de Digikey, pero 3 Atmel ATmega164A nuevos que he recibido han exhibido un comportamiento extremadamente extraño.

Lo reduje a algo que ver con el reloj y resultó que la señal de reloj resultante del oscilador interno supuestamente "calibrado de fábrica" ​​estaba fluctuando entre 650-700 kHz en lugar del sólido 1 MHz que se supone que es. Pude escribir en el byte de calibración para obtener esto muy cerca de 1 MHz (todavía con algo de jitter) y la mayoría de las cosas funcionan, pero los UART simplemente no se comportan correctamente, parecen emitir un flujo continuo de pulsos cortos sin importar lo que les pides que hagan.

He tratado con la versión de baja potencia de este microcontrolador antes (164P) con cero problemas y decidí dejarlo en su lugar y verificar la salida del reloj, y es un sólido de 1 MHz sin fluctuaciones. Me inclino hacia la conclusión de que estos chips 164A son defectuosos, pero ¿habría alguna otra prueba que pudiera intentar confirmar?


Editar: pensé que describiría el proceso por el cual estoy midiendo el reloj. He activado el bit de fusible de salida del reloj y he medido el pin apropiado con un analizador lógico de muestreo a una velocidad muy alta. Tengo un programa que escribe en el registro de calibración OSCCALy he podido probar y error a 1 MHz.


Edición n. ° 2: después de una investigación más profunda, parece que el microcontrolador comienza a actuar después de un cierto tamaño de programalímite. Un proyecto básico con un solo archivo fuente que parpadea con un LED parece estar bien, pero compilar y vincular cualquiera de mis otros archivos (por ejemplo, la biblioteca UART o lo que sea) sin siquiera hacer una llamada a la función de esos métodos hace que el microcontrolador se comporte El comportamiento descrito anteriormente. Las conexiones de alimentación están bien y se ha ejercido un desacoplamiento adecuado. No tengo tiempo para depurar esto por el momento, así que seguimos adelante con la versión de bajo consumo. No estoy seguro de dónde exactamente podría ser el problema 1) 164A y 164P no son compatibles con el código 2) El procedimiento de programación es diferente para estos dos uC 3) Las unidades están defectuosas. Confío en el diseño de nuestro tablero y descartaría problemas de energía. Desafortunadamente, realmente no puedo elegir una respuesta correcta, así que dejaré esta pregunta tal como está, tal vez yo ' Volveré al problema nuevamente en el futuro. Gracias a todos los que proporcionaron comentarios o respuestas perspicaces, podrían ser útiles para otra persona con problemas de uC listos para usar.

Jon L
fuente
No está directamente relacionado con su pregunta, pero vale la pena mencionarlo. Muchos fabricantes de circuitos integrados tienen una página de erratas que publican cuando encuentran errores en ciertas revisiones de silicio. Un error conocido que estaba en la errata que nunca revisé me pilló varias veces. Sin embargo, generalmente no son cosas tan grandes como un reloj que no funciona y, por lo general, se ofrecen algunas soluciones. Pero en su caso no hay erratas conocidas.
Kellenjb
1
@ Jon, si la versión de mayor potencia está rota y la versión de menor potencia funciona, existe la posibilidad de que no esté desacoplando bien su circuito y tenga problemas de integridad de potencia.
Kortuk
@Kellenjb, "No se conocen erratas" para este modelo en la hoja de datos (la última hoja de datos aparece, 06/11). Sin duda vale la pena mencionarlo de alguna manera, gracias.
Jon L
@ Jon Sí, eso es lo que quise decir con "Pero en tu caso no hay erratas conocidas".
Kellenjb
1
Secundaré lo que dijo Kortuk. Esto huele a una fuente de alimentación o un problema de desacoplamiento para mí.
Olin Lathrop

Respuestas:

3

Es raro tener ese tipo de falla. Es posible que espere ver un poco más de ruido en un pin, o que ese pin no funcione por completo. Pero tenerlo "de alguna manera funciona, pero no de una manera útil" es raro. Sospecho que hay problemas de diseño que están causando los problemas, y tienen algo que ver con una diferencia entre el 164A y el 164P. Como el jitter es alto, miraría cosas relacionadas con el poder. ¿Están conectados todos los pines de alimentación / gnd? ¿Están los pines de E / S accionados o tirados hacia arriba o hacia abajo? Etc.

Pero aún queda la posibilidad de que las partes sean malas. Es raro, pero no desconocido. La única forma real de saberlo es obtener algunas piezas más de un proveedor diferente y probarlas. Si funcionan, entonces debes investigar más a fondo y ver si los mataste en el manejo / soldadura o si realmente vinieron de Digikey mal.


fuente
2
Comprobaré todo tres veces cuando tenga la oportunidad. Yo también soy escéptico de mi propia conclusión, la idea de que esto no se detecte en la fábrica o la posibilidad de que se dañe en la transición parece muy poco probable ... informará de nuevo.
Jon L
En cuanto a las conexiones, todo se verifica. Editaré la pregunta para proporcionar más detalles ...
Jon L
2

Una vez tuve un problema muy similar con las piezas de referencia de Microchip. Estábamos estropeando la programación ICSP y estábamos encontrando una manera de borrar el ajuste del oscilador, causando graves errores en la precisión del reloj interno. Asegúrese de que su dispositivo de programación y / o herramientas de programación se estén conectando correctamente y se estén utilizando correctamente.

No hay una manera fácil de verificar la precisión del oscilador sin programar las partes, por lo que simplemente escribiría un programa trivial de alternar puertos (uno que no haga nada más que mover una línea de E / S) y que alguien más programe el partes, preferiblemente con hardware de programación diferente. Una vez que verifique el meneo, puede actualizar con su propio código y ver si el problema persiste.

Adam Lawrence
fuente
He activado el bit de fusible de salida del reloj y pone la señal del reloj en un pin en PORTB. Esto es lo que estoy muestreando para determinar la precisión del oscilador / reloj. Comprobaré dos veces el proceso de programación y las herramientas, gracias.
Jon L