Domanda:
Perché il mio microcontrollore lo attraversa quando non è collegato?
tgun926
2014-08-01 19:16:15 UTC
view on stackexchange narkive permalink

MCU: ATTiny13

Ho notato questo dopo aver provato a eseguire il debug del motivo per cui premendo il mio interruttore (collegato tramite R2, un resistore pulldown da 507kOhm) il LED si attenua mentre è premuto. L'interruttore era alimentato dalla stessa linea di alimentazione dell'ingresso Vcc al microcontrollore.

Dopo aver scollegato l'ingresso Vcc (Pin 8), ho notato che il LED era ancora acceso quando l'interruttore era premuto. Se tolgo una connessione dal pin di terra 4, il LED è ancora acceso, ma meno luminoso.

Il circuito sotto rappresenta ciò che ho osservato. L'interruttore è stato rimosso per semplificare il problema:

enter image description here

Perché succede e come posso fermarlo? Interferisce con l'output quando il pulsante è premuto.

Ecco un'immagine del circuito su una breadboard. La linea di alimentazione (5V è il filo rosso, la terra è nera):

enter image description here

Sembra un problema di costruzione.In base a questo schema, non è possibile che il LED si accenda con Vcc scollegato.Ovviamente, senza il pin Vcc del micro collegato, non succederà molto nulla.
Puoi mostrare l'interruttore nel tuo circuito?
@ScottSeidman lo switch è collegato tra Vcc e il nodo al pin 3 e R2, tuttavia ciò avviene senza uno switch fisico.
@MattYoung - no, non è questo il caso.Questo circuito è al di fuori dell'uso consentito, ma probabilmente funzionerà.Sembra che il circuito precedente sia stato semplificato, rimuovendo l'interruttore, per comprendere questo particolare comportamento sconcertante se non visto prima (ma ben noto).
Sicuramente questo non è l'intero circuito.Quasi certamente uno dei pin I / O è trattenuto su Vdd o viene tirato su Vdd.
@ChrisStratton Avevo l'impressione che Vcc fosse totalmente disconnesso.Se solo il pin Vcc è scollegato, allora sì, i diodi di bloccaggio hanno senso.
@OlinLathrop No, questo è ciò che è sulla breadboard.R2 è 680 kOhm.
Il collegamento di un pin I / O a una tensione superiore a VCC porta a un comportamento indefinito in caso di molti microcontrollori.Il microcontrollore è in uno stato indefinito e tutto può succedere.
No, chiaramente non può essere quello che hai effettivamente collegato.Se fosse collegato secondo la tua descrizione, non ci sarebbe alcuna fonte di alimentazione, e quindi non ci sarebbe modo per il LED di accendersi.Forse la parte inferiore di R2 è effettivamente collegata a Vdd?
@OlinLathrop ho aggiunto un'immagine del circuito.Il nero è 0V, il rosso è Vcc (5V)
E proprio come sapevamo sarebbe stato il caso, uno dei pin del microcontrollore è legato a Vdd.
@OlinLathrop Non vedo una differenza tra lo schema e la breadboard, potresti spiegarmi?
Devi perfezionare sia il testo che il diagramma.Anche se fornisci alcuni indizi nei commenti, essi sono completi.il lettore dovrebbe essere in grado di guardare il diagramma e vedere cosa stai facendo, leggere il testo e comprendere le varie condizioni che si applicano.|Dici "Vcc non è connesso" - che è un'affermazione completamente ambigua.Vcc può significare un pin con quel nome o un voltaggio - e in questo caso significa ENTRAMBI."Vcc_supply" non è connesso a Vcc_processor_pin MA è connesso a "qualche altro pin del processore a cui non ha motivo valido per essere connesso"....
... Se stai facendo cose casualmente casuali, come minimo dovresti descrivere chiaramente le cose casuali casuali che stai facendo e perché pensi che questa casualità abbia un senso.es. PERCHÉ collegare Vcc_supply a PB4?Perché pensi che questo abbia senso?Perché in qualche modo sei sorpreso che il risultato sia spazzatura?Cosa stavi cercando di fare in questo modo?Perché non farlo in modo legale e non casuale?
@RussellMcMahon La domanda ha senso adesso senza dover decifrare i commenti?
Possiamo vedere che il pin 3 è collegato a Vdd, nonostante tu abbia affermato che non lo è.Come tutti hanno cercato di dirti, questo alimenta parzialmente il microcontrollore tramite il diodo di protezione del lato alto sul pin 3. Ciò che fa il micro in quella situazione non è definito, quindi non dovrebbe sorprendere che abbastanza corrente lo esca dal pin 5per illuminare visibilmente il LED.Davvero non vedo il mistero qui.È quello che tutti hanno detto fin dall'inizio.
Cinque risposte:
Chris Stratton
2014-08-01 19:22:19 UTC
view on stackexchange narkive permalink

Gli ingressi di molti dispositivi CMOS moderni hanno diodi di protezione ESD dai pin I / O alle guide di alimentazione, che sperano di deviare le sovratensioni transitorie all'alimentazione prima che causino danni.

Un effetto collaterale di questo è che il chip può, almeno in una certa misura, essere alimentato tramite un pin I / O, una volta che il pin si solleva abbastanza contro l'alimentazione (non fornita) per polarizzare in avanti il ​​diodo. Anche nelle tecnologie senza diodi di protezione esplicita, potrebbe accadere in una certa misura, anche se spesso ha portato a un funzionamento molto inaffidabile (errore classico - dimenticare di alimentare un chip e vederlo "una specie" di lavoro - l'ho fatto io stesso con un flash SPI in passato Gennaio che in qualche modo non ha mai avuto terreno e avrebbe fornito le risposte attese fino a quando non ho provato a scrivere posizioni flash).

In genere non vuoi alimentare un chip in questo modo - è al di fuori dei valori massimi assoluti e il diodo di protezione potrebbe non essere dimensionato per supportare l'intera corrente di funzionamento. A volte lo vedi, sia in esperimenti intenzionali, come un esperimento emulatore di tag ATTiny RFID alimentato da RF, o accidentalmente in casi come il tentativo di misurare il consumo di energia di un MCU inattivo e averlo in realtà traggono energia dalla tua porta seriale di debug piuttosto che dalla fornitura che stai cercando di misurare.

Grazie, ha senso per me.È lo stesso motivo per cui il LED si attenua quando alzo la tensione del pin di ingresso?Devo solo usare una resistenza in serie per abbassare la tensione di ingresso per risolvere questo problema?
Non è stato possibile rispondere senza vedere lo schema e il codice del programma.Sembra la sua stessa domanda.
Buona risposta.L'ho fatto anche con i processori Microchip.Bugger del tempo a capirlo la prima volta.
Ben Voigt
2014-08-01 20:45:04 UTC
view on stackexchange narkive permalink

La scheda tecnica del tuo dispositivo ha questa tabella:

enter image description here

In questa tabella, VCC indica la tensione applicata al pin VCC, non la rete nel circuito che hai etichettato VCC.

Poiché non hai applicato alcuna tensione al pin VCC, non devi applicare più di 0,5 V a nessun altro pin. La tua connessione PB4 sta violando questa regola.

Kamil
2014-08-02 03:58:14 UTC
view on stackexchange narkive permalink

La corrente scorre attraverso i diodi di bloccaggio interni.

I circuiti interni (semplificati) hanno questo aspetto:

enter image description here

In questo documento Atmel (nota applicativa casuale contenente informazioni sui diodi di serraggio) è possibile leggere:

Per proteggere il dispositivo da tensioni superiori a VCC e inferiori a GND, l'AVR dispone di diodi di serraggio interni su I / O pin (vedere la Figura 1). I diodi sono collegati dai pin a VCC e GND e mantengono tutti i segnali di ingresso entro la tensione di funzionamento dell'AVR (vedere la Figura 2). Qualsiasi tensione superiore a VCC + 0,5 V verrà forzata fino a VCC + 0,5 V (0,5 V è la caduta di tensione sul diodo) e qualsiasi tensione inferiore a GND - 0,5 V verrà forzata fino a GND - 0,5 V.

placeholder
2014-08-01 20:31:49 UTC
view on stackexchange narkive permalink

Solo un addendum alla risposta corretta di Chris Strattons.

Stai davvero alimentando il dispositivo attraverso i diodi di protezione. Esistono diversi modi per fornire protezione ESD e tutti prevedono l'uso di diodi sui pin per il collegamento a una guida all'interno. Quindi il tuo percorso di conduzione e la potenza interna del tuo chip sarà di almeno 1 diodo al di sotto della "potenza" fornita sul pin.

Puoi testarlo misurando il pin Vcc che sarà di circa 0,7 V inferiore a Vcc.

Quando si scollega la massa, si fa passare meno corrente attraverso i diodi di protezione e si sposta il punto di funzionamento della tensione fornita al LED. Ma un po ', quindi questo potrebbe non spiegare la differenza.

I diodi di protezione sono progettati per gestire gli ampere di corrente durante un colpo ESD, quindi stanno bene con questo piccolo rivolo.

Il tuo pericolo nel far funzionare il chip in questo modo è che potresti indurre il latch up, ma la maggior parte dei chip sono progettati per essere in grado di NON agganciarsi in queste condizioni, quindi non è un problema. Ma una possibilità.

Un altro pericolo dipenderà dalla natura esatta della protezione ESD sul chip. Se si tratta di uno stile di bloccaggio e si ha un evento dV / dT elevato, la pinza potrebbe scattare e mandare in cortocircuito l'alimentazione. Ma anche questo è improbabile.

"I diodi di protezione sono progettati per gestire gli ampere di corrente durante un colpo di ESD, quindi stanno bene con questo piccolo rivolo".Questo è un punto di vista fallace.Uno sciopero ESD è un transitorio, che consiste in una carica piuttosto piccola, quindi una bassa dissipazione di energia, anche se la tensione e la corrente istantanee sono grandi.La corrente continua attraverso questi diodi causerà problemi di calore che non si verificano durante il transitorio ESD.
"I diodi di protezione sono progettati per gestire gli ampere di corrente durante un colpo di ESD, quindi stanno bene con questo piccolo rivolo".non sono sicuro di essere d'accordo.Ho visto schede tecniche (ad esempio FPGA spartani Xilinx) che consentono di utilizzare i diodi di protezione con un resistore in serie per lo spostamento di livello, ma specificano una corrente massima abbastanza bassa, che è necessario utilizzare per dimensionare il resistore.IIRC il limite sarebbe intorno all'illuminazione di un singolo LED, anche se si trattava di una tecnologia a grana più fine, quindi potrebbe essere più alto per questa parte, se Atmel avesse scelto di caratterizzarla.
Quello che non sai è che ho _progettato_ io stesso queste celle I / O che fanno parte di alcune librerie standard e sono stato guidato da una persona il cui design ESD / IP è nel _Most_ moderno IC.Hai solo bisogno di guardare i SEM delle parti finali durante uno sciopero ESD per rendersi conto di quanto sia sciocco dire che le correnti durante un evento sono basse o che la corrente alta non ha significato.La maggior parte del metallo in una struttura ESD serve a ridurre la resistenza alla conduzione.La corrente è corrente e l'escursione di tensione non può essere superata durante un evento ergo, bassa resistenza.
L'apparente conclusione che ciò implica che è possibile alimentare in sicurezza il chip non segue.Perché, ad esempio, Xilinx ti dice che il limite di corrente attraverso i diodi di protezione Spartan 3 * che ti consentono di trasmettere la polarizzazione * è di soli 10 mA?http://www.xilinx.com/support/answers/19146.htm
@placeholder: Chi ha detto che "le correnti durante un evento sono basse"?Una bassa resistenza in questo scenario rende effettivamente il riscaldamento durante il flusso continuo * peggiore *, poiché la dissipazione di potenza è $ V ^ 2 / R $.Questo in contrasto con un evento ESD in cui la carica trasferita è praticamente fissa e la resistenza non influisce sulla dissipazione totale di energia.Ciò che fornisce la bassa resistenza è che pochissima carica sceglierà qualsiasi altro percorso.Ma quella bassa resistenza nel percorso non significa che ci sia una buona dissipazione termica ...
@BenVoigt Tutte le tensioni devono essere mantenute sul chip a valori bassi altrimenti farai scoppiare l'ossido di gate o potenzialmente innescherai un latchup (cosa possibile con le correnti molto alte).Tutto questo significa v. Bassa resistenza.È interessante notare che il limite è sulla struttura dei contatti e non sul Si (rispetto al flusso di corrente).Per un HBM alto (e nemmeno una specifica eccezionale) la struttura deve gestire 1,3 A e questo significa un array di 80 x 80 contatti nei diodi ESD.QUELLA non è una piccola struttura.Il tuo argomento per V ^ 2 / R non è valido.
@ChrisStratton Non lo consiglio, infatti è lì.Inoltre faccio riferimento al tuo articolo che dice che non dovresti.Rispetto a Xilinx, non confondere le specifiche che esistono per impedire il latchup (Vdd pilotato a bassa impedenza) a uno scenario _possibile_ con i pin Vdd non collegati.
@placeholder: Tutta la vostra analisi HBM fa supposizioni che non sono applicabili a correnti continue.Per ESD, l'energia è $$ q \ Delta V $$.Per questa domanda, è $$ \ int \ frac {V ^ 2} {R} dt $$
@BenVoigt una struttura che gestisce grandi amperaggi continuerà a farlo.
@placeholder: Ma questo non è progettato per gestire una grande * media * corrente, solo un impulso momentaneo.C'è un'enorme differenza tra un impulso e una corrente continua rispetto al carico termico.
@BenVoigt Vorrei avere un po 'più di tempo per poter entrare in chat.Si tratta di strutture enormi e le tensioni devono essere limitate, per sottolineare, la struttura di contatto deve essere composta da 6400 diodi in parallelo (ciascuno capace di mA) in un esempio di un prodotto di spedizione._Non puoi_ pompare alta corrente a bassa tensione a meno che non la accendi con una scintilla, qualsiasi cosa inferiore a quella non la riscalda.
Alcuni dispositivi sono costruiti in modo tale che la trasmissione di più milliampere nel VDD attraverso i diodi di protezione funzionerà correttamente senza effetti collaterali negativi.Tuttavia, non tutti i dispositivi sono progettati in questo modo.Ricordo un chip logico CMOS che ho usato che sembrava implementare la protezione per ogni coppia di ingressi utilizzando un po 'di materiale di tipo P per ogni ingresso e un po' di materiale di tipo N tra di loro.L'effetto di ciò era che l'alimentazione di 1 mA in un pin pilotato sopra il binario mentre l'altro pin era basso avrebbe fatto sì che il circuito si comportasse come un transistor PNP tra i pin di ingresso.
@supercat che è chiamata struttura PNP laterale in CMOS e talvolta viene utilizzata (anche se è una struttura parassita) con un Hfe appena superiore a 1.
@placeholder: Indeed;il punto era che le strutture di protezione sono progettate per proteggere il chip e possono funzionare in modi che non ci si aspetterebbe e che potrebbero essere dannosi per alcune applicazioni.
Russell McMahon
2014-08-02 15:32:33 UTC
view on stackexchange narkive permalink

Probabilmente stai alimentando il dispositivo attraverso i suoi diodi di protezione MA la cosa importante è che stai facendo qualcosa che è "illegale" e completamente al di fuori delle specifiche e tutto può accadere e non dovresti essere sorpreso se lo fa.

Il tuo schema circuitale è SBAGLIATO.
Questo è lo schema circuitale REALE che stai utilizzando:

enter image description here

Questo è un versione hardware di "garbage in, garbage out".

Se fai qualcosa di casuale e ottieni un risultato casuale dovresti essere felice: l'universo funziona come ti aspetteresti.

Più avanti forse ...



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...