Come si determina se un nuovo microcontrollore è difettoso?


11

Non ho mai avuto a che fare con parti difettose dello stretto di digikey, ma 3 nuovi Atmel ATmega164A che ho ricevuto hanno mostrato un comportamento estremamente strano.

L'ho limitato a qualcosa a che fare con l'orologio e ho scoperto che il segnale di clock risultante dall'oscillatore interno presumibilmente "calibrato in fabbrica" ​​stava oscillando tra 650-700 kHz invece del solido 1 MHz che dovrebbe essere. Sono stato in grado di scrivere nel byte di calibrazione per avvicinarmi molto a 1 MHz (sempre con un po 'di jitter) e la maggior parte delle cose funziona ma gli UART non si comportano correttamente, sembrano emettere un flusso continuo di impulsi brevi, non importa cosa chiedi loro di fare.

In precedenza ho affrontato la versione a bassa potenza di questo microcontrollore (164P) con zero problemi e ho deciso di rilasciarlo in posizione e controllare l'uscita del clock su quello, ed è un solido 1 MHz senza jitter. Sono propenso alla conclusione che questi chip 164A sono difettosi, ma ci sarebbero altri test che potrei provare a confermare?


Modifica: ho pensato di descrivere il processo attraverso il quale sto misurando l'orologio. Ho abilitato il bit del fusibile di uscita del clock e ho misurato il pin appropriato con un analizzatore di logica che campionava a una velocità molto elevata. Ho un programma che scrive nel registro di calibrazione OSCCALe sono stato in grado di provare ed errori a 1 MHz.


Modifica n. 2: dopo ulteriori accertamenti, sembra che il microcontrollore inizi a funzionare dopo una determinata dimensione del programmasoglia. Un progetto bare-bones con un singolo file sorgente che lampeggia un LED sembra essere OK, ma la compilazione e il collegamento in uno qualsiasi dei miei altri file (diciamo la libreria UART o altro) senza nemmeno effettuare una chiamata di funzione a quei metodi fa sì che il microcontrollore si comporti in il comportamento descritto sopra. Le connessioni di alimentazione vanno bene ed è stato esercitato il corretto disaccoppiamento. Al momento non ho tempo per eseguire il debug di questo, quindi siamo andati avanti con la versione a basso consumo. Non sono sicuro di dove possa essere esattamente il problema 1) 164A e 164P non sono compatibili con il codice 2) La procedura di programmazione è diversa per questi due UC 3) Le unità sono difettose. Sono fiducioso nel design della nostra scheda e escluderei problemi di potenza. Sfortunatamente, non riesco davvero a scegliere una risposta corretta, quindi lascio questa domanda così com'è - forse io ' Tornerò di nuovo al problema in futuro. Grazie a tutti coloro che hanno fornito commenti o risposte perspicaci, potrebbero essere utili a qualcun altro con problemi di controllo immediato.


Non direttamente correlato alla tua domanda, ma vale la pena menzionarlo. Molti produttori di IC hanno una pagina Errata che rilasciano quando trovano bug in alcune revisioni del silicio. Sono stato catturato alcune volte da un bug noto che era nell'errata che non avevo mai verificato. Questi di solito non sono grandi come un orologio che non funziona e di solito hanno un po 'di soluzione. Ma nel tuo caso non sono noti errori.
Kellenjb,

1
@jon, se la versione di potenza superiore è interrotta e la versione di potenza inferiore funziona, è possibile che non si stacchi bene il circuito e che si verifichino problemi di integrità della potenza.
Kortuk,

@Kellenjb, "Nessun dato errato" per questo modello nel foglio dati (ultimo foglio dati, 06/11). Sicuramente vale la pena menzionarlo, comunque, grazie.
Jon L

@Jon Sì, questo è ciò che intendevo per "Ma nel tuo caso non sono noti errori."
Kellenjb,

1
Riconoscerò ciò che ha detto Kortuk. Questo mi sembra un problema di alimentazione o disaccoppiamento.
Olin Lathrop,

Risposte:


3

È raro avere questo tipo di fallimento. Potresti aspettarti di vedere un po 'più di rumore su un pin o di avere quel pin completamente non funzionante. Ma averlo "in qualche modo funziona, ma non in modo utile" è raro. Sospetto che ci siano problemi di progettazione che stanno causando i problemi, e hanno qualcosa a che fare con una differenza tra 164A e 164P. Dato che il jitter è alto, guarderei le cose legate al potere. Tutti i pin power / gnd sono collegati? I pin I / O sono guidati o tirati in alto o in basso? Eccetera.

Rimane comunque la possibilità che le parti siano difettose. È raro, ma non inaudito. L'unico vero modo per dirlo è ottenere alcune parti in più, da un fornitore diverso, e provarle. Se funzionano, allora devi investigare ulteriormente e vedere se li hai uccisi durante la manipolazione / saldatura o se sono davvero venuti da Digikey male.


2
Controllerò tre volte tutto quando ne avrò la possibilità. Anch'io sono scettico sulle mie conclusioni, l'idea che ciò non venga catturato in fabbrica o la possibilità che sia stato danneggiato durante la transizione sembra altamente improbabile ... riporteranno indietro.
Jon L

per quanto riguarda le connessioni, tutto viene verificato. Modificherò la domanda per fornire maggiori dettagli ...
Jon L

2

Una volta ho avuto un problema molto simile con le parti Microchip di base. Stavamo incasinando la programmazione ICSP e stavamo trovando un modo per cancellare il trim dell'oscillatore, causando gravi errori nella precisione dell'orologio interno. Assicurarsi che il dispositivo di programmazione e / o gli strumenti di programmazione siano collegati correttamente e vengano utilizzati correttamente.

Non esiste un modo semplice per verificare l'accuratezza dell'oscillatore senza programmare le parti, quindi scriverei semplicemente un banale programma di attivazione / disattivazione della porta (uno che non fa altro che spostare una linea I / O) e chiedere a qualcun altro di programmare il parti, preferibilmente con hardware di programmazione diverso. Dopo aver verificato l'oscillazione, puoi eseguire il reflash con il tuo codice e vedere se il problema persiste.


Ho abilitato il bit del fusibile di uscita del clock e inserisce il segnale di clock su un pin su PORTB. Questo è ciò che sto campionando per determinare la precisione dell'oscillatore / clock. Ricontrollerò il processo di programmazione e gli strumenti, grazie.
Jon L
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.