Kysymys:
Voidaanko mikro-ohjaimia käyttää mielivaltaisesti matalilla kellotaajuuksilla?
endolith
2009-12-16 09:58:52 UTC
view on stackexchange narkive permalink

Esimerkiksi ATTiny13A: n tietolomakkeessa on lueteltu Minimitaajuus 0 MHz. Tarkoittaako tämä sitä, että kelloa voidaan käyttää millä tahansa mielivaltaisesti matalalla taajuudella ilman haitallisia vaikutuksia? Oletan, että se vetää pienemmän virran pienemmillä kellotaajuuksilla? Tarkoittaako 0 MHz, että voit pysäyttää kellon kokonaan, ja niin kauan kuin virtaa käytetään, se muistaa tilansa loputtomiin?

Haluaisin lisätä, tämä on erinomainen kysymys. Suurin osa vanhemmista EE: stä ei vie aikaa lukea ja miettiä tietolomakkeita, mikä on joko täydennys sinulle tai loukkaus heille, haluaisin viitata molempiin.
En ole täysin varma, onko sisäinen RC-oskillaattori sammutettu, ellet nimenomaisesti kehota sitä (eri virransäästövaihtoehtojen avulla). Etkö ole varma, mihin sitä käytetään, mutta ainakin EEPROM ja todennäköisesti ADC.
@jippie mitä sisäistä RC: tä sanot? Esimerkiksi ATMegaX: llä on järjestelmän kellon sisäinen RC (normaalisti 8Mhz, lisävarusteena saatavalla div 8 -esiasteikolla), sillä on vartijaoskillaattori. Järjestelmän kello on valittu sulakkeeksi ja on todennäköisesti pois päältä käytettäessä ulkoista kelloa. Muut, kuten sanoitte, saattavat olla poissa käytöstä virransäästötiloista, mutta epäilen pysähtyvän järjestelmän kellon.
Viisi vastused:
#1
+75
todbot
2009-12-16 10:07:32 UTC
view on stackexchange narkive permalink

Kyllä. Jos tietolomakkeessa lukee "täysin staattinen toiminta", voit kellottaa sen millä tahansa nopeudella, jopa 0 Hz. "Dynaamisella" sirulla on oltava kello tietyllä nopeudella tai se menettää tilansa.

onko sinulla esimerkki mikrosta, joka sallii tämän?
Piirisalamaa sisältävät mikro-ohjaimet voivat määrittää salaman miniminopeuden (ja enimmäisnopeuden) kirjoitettaessa salamaan. Salama ei kuitenkaan koske tätä.
Arvoisa herra, kysymyksessä mainittu Atmel AVR ATtiny -sarja on täysin staattinen, koska mielestäni suurin osa kaikista Atmel AVR -piireistä. Ja mielestäni suurin osa kaikista Microchipin PIC-mikrokontrollereista.
Haluaisin lisätä MSP430: t todbot-luetteloon. Suurin osa nykyaikaisista mikrokontrollereista tekee, dynaaminen tyyppi on päänsärky suunniteltavaksi, joten useimmat eivät.
Itse mielestäni ATTiny13A: n ADC ei toimi matalilla taajuuksilla, ehkä näytteen ja pidon kondensaattorin hajoamisen vuoksi? "Oletusarvoisesti peräkkäinen likiarvopiiri vaatii tulokellotaajuuden välillä 50 kHz - 200 kHz, jotta saadaan maksimaalinen resoluutio. ... ADC-moduuli sisältää esiasteen, joka muodostaa hyväksyttävän ADC-kellotaajuuden miltä tahansa 100 kHz: n ylittävältä prosessorin taajuudelta."
endoliitti - Olen samaa mieltä, ADC: t eivät yleensä toimi matalilla taajuuksilla. Sikäli kuin voin kertoa, kaikki muu käytännöllisesti katsoen kaikilla nykyaikaisilla mikrokontrollereilla toimii edelleen hyvin aina "0 Hz: iin asti", eli "tauko loputtomiin". Erityisesti monilla mikro-ohjaimilla on "vähän virtaa kuluva lepotila", joka pysäyttää kaikki kellot, kunnes jokin - tyypillisesti nappia painava henkilö - herättää sen ja se palaa takaisin sinne, mihin se jäi. Http://en.wikipedia .org / wiki / Static_logic_ (digital_logic)
RCA 1802 (http://fi.wikipedia.org/wiki/RCA_1802) oli AFAIK ensimmäinen mikro, joka sallii staattisen toiminnan jo vuonna 1976.
ADC: tä voidaan kuitenkin pitää oheislaitteena CPU-ytimen kelloalueen näkökulmasta. Staattinen toiminta ei näytä olevan iso juttu. Voit peittää peräkkäisen piirin yhdessä TTL-sirujen avulla, ja se toimii mielivaltaisesti alhaisilla kellotaajuuksilla. DRAM-muistin läsnäolo, joka tarvitsee päivitystä, luo haasteita.
@Kaz: NMOS-laitetta valmistettaessa on tehokkaampaa vetää väylä ehdoitta korkeaksi syklin puoliskolla ja sitten ehdollisesti vetää se matalaksi syklin toisella puoliskolla kuin käyttää passiivista vetoa, jonka on oltava riittävän vahvavedä väylä korkealle syklin aikana.Entinen lähestymistapa hukkaa virran suhteessa * todelliseen * väyläkapasitanssiin jokaisessa jaksossa, kun taas jälkimmäinen hukkaa virran suhteessa sen piirin todelliseen hankintavirtaan, jonka huonoimmassa (pienimmässä) virrassa hankintakyvyn on oltava riittävä pahimman -kotelon (suurin) väyläkapasitanssi.
@Kaz: Monet NMOS-laitteet, kuten 6502, käyttivät siis dynaamista logiikkaa esimerkiksi bussiajoon, eikä vain dynaamiseen "muistiin".Dynaamisen väyläajon käyttö tarkoittaa, että kapasitanssi / vuotosuhde on varmistettava, mutta muuten se sallii paljon anteliasemmat marginaalit monille muille valmistusparametreille kuin se olisi mahdollista täysin staattisessa suunnittelussa.
#2
+23
Kortuk
2009-12-16 10:41:34 UTC
view on stackexchange narkive permalink

Lähetän toisen vastauksen vain siksi, että edelliseen kysymykseesi ei vastattu aiemmin.

Todbot on täysin oikea. Se käyttää myös pienempää tehoa pienemmillä nopeuksilla. Se tarkoittaa myös, että jos toimitat kellon toiselta prosessorilta, voit esimerkiksi lopettaa sen toimittamisen milloin tahansa ja sitten aloittaa kellotuksen myöhemmin, niin kauan kuin et mene nopeammin kuin suurin nopeus, olet kunnossa.

Minulla olevat sirut saavat suuruusluokan muutoksen 32768Hz: n oskillaattorin ja 1MHz: n välillä. Minulla on ollut sovelluksia, joissa en tarvinnut nopeutta, tarvitsin vain toisen pienen kaverin, joka hoitaisi minulle perustietoja.

Toivottavasti tämä auttaa.

Olen aina halunnut käyttää mikrokontrollerin kellolinjaa painikkeella. Anna ihmisen olla kello. :) Vakavasti ottaen todella mukavia asioita näissä staattisissa malleissa on, että niiden virrankulutus on lineaarista kellonopeuden kanssa: hidasta kelloa ja käytä vähemmän virtaa. Tämä voi olla todella kätevää.
Kyllä, mutta haluan huomauttaa, että virrankulutus on lineaarinen funktio, jossa on offset, vaikka ilman kelloa he kuluttavat edelleen virtaa, varsinkin kun kaikkia lähtöjä käytetään. Saimme juuri uusia harjoittelijoita työhöni, ehdotan, että käytämme painonappia ja katsomme, mitä tapahtuu.
@todbot Hyvä idea. :-) Mutta muista purkaa painike.
Kokeile "jauhaa kammella" (kuten Jargon-merkityksessä: http://www.jargon.net/jargonfile/g/grindcrank.html): -)) (ja kyllä, monta vuotta sitten rakennin koodin läpi kun käytin Turbo Pascalia koulussa :-)
@todbot Se ei ole oikeastaan ​​kaukaa haettua tai vaikeaa, jos pystyt hyväksymään karkean abstraktion. On olemassa useita esimerkkejä ihmisistä, jotka käyttävät tällaisia ​​vempaimia opettaakseen tietokoneiden toimintaa. Myke Predkolla on todella hyvä kirja, ja se tulee jopa piirilevyjen mukana (vaikkakaan ei tietokoneprojektille): http://www.amazon.com/Digital-Electronics-Guidebook-Michael-Predko/dp/0071377816/ref=sr_1_1 = ie = UTF8 & qid = 1260970753 & sr = 8-1
-1
@Axeman - ammattikielten tiedosto väittää, että "jauhaa kampi" on myyttinen. Tässä on todisteita päinvastaisesta: http://www.computerhistory.org/babbage/. Oikealla oleva kampi ajaa tietokonetta; vasemmalla oleva ohjaa tulostinta. Voit saada paremman tuntuman asian koosta katsomalla videota kyseisellä sivulla; se on noin kahdeksan jalkaa pitkä.
@PeteBecker: Curta-laskimessa oli myös kampi, jota voitiin todella vetää ylös tai alas valitaksesi summa tai vähennys.
#3
+18
supercat
2011-04-09 22:11:49 UTC
view on stackexchange narkive permalink

Useimmat nykyaikaiset mikrokontrollerimallit toimivat minkä tahansa kellotulon mallin kanssa edellyttäen, että mikään korkea pulssi ei ole tietyn minimipituuden alapuolella, mikään matala pulssi ei ole tietyn minimipituuden alapuolella eikä matala-korkea-matala tai korkea-pulssi matala-korkea-pulssipari on tietyn pituuden alapuolella. Pohjimmiltaan tapahtuu, että sen jälkeen kun siru suorittaa kaikki tiettyyn kellon reunaan liittyvät toiminnot, siru on tilassa, jossa se ei tee mitään muuta kuin odottaa seuraavaa kellon reunaa. Jos seuraava kellonreuna ei saavu kymmenen päivän ajaksi (ellei sirulla ole ulkoista vahtikoiraa), siru on samassa tilassa kuin jos reuna olisi saapunut sillä hetkellä, kun siru oli valmis siihen.

Huomaa, että yleensä mikro-ohjaimen kellon keskeyttäminen vähentää virrankulutusta huomattavasti, mutta ei niin paljon kuin lepotilan käyttö. Useimpien mikrokontrollerien virrankulutus "ajotilassa" voidaan melko hyvin arvioida vakiona lepotilassa olevana virtana plus tietty määrä virtaa jaksoa kohden sekunnissa (mikä saattaa olla 'luonnollisemmin' ilmaistuna latauksena jaksoa kohti). Esimerkiksi sirulla voi olla lepovirta 10uA plus virta 0.1mA / MHz (100pC / jakso). Tällaisen sirun suorittaminen 10 MHz: llä tuottaisi 1,01 mA: n virran. Sen suorittaminen 1 MHz: llä tuottaisi 0,11 mA. Sen suorittaminen 100 kHz: llä tuottaisi 0,02 mA. Sen suorittaminen 1 Hz: n woudl-saannolla tuottaa 0,0100001 mA. Toisaalta siru voi tarjota univirtaa 1uA. Yleensä lepotilaan siirtyminen sammuttaa kokonaan sirun alueet, jotka eivät tee mitään hyödyllistä sirun ollessa nukkumassa, välttäen siten vuotovirtaa, joka sellaisilla alueilla saattaa olla. Joissakin tapauksissa se myös vähentää jännitettä sellaisille alueille kuin rekisteritiedostot tasolle, jossa rekisteritiedostot voivat pitää sisällönsä, mutta ei päästä niihin kovin nopeasti (koska niitä ei käytetä lainkaan, pääsynopeudella ei ole merkitystä) .

Joillakin vanhemmilla mikroprosessoreilla, mikrokontrollereilla ja muilla laitteilla oli korkein kellon aika ja / tai kellon matala aika. Tällaiset prosessorit käyttivät dynaamista logiikkaa piirien säästämiseksi. Harkitse esimerkkinä dynaamista logiikkaa siirtorekisteristä: tyypillinen staattinen rekisteribitti vaatii kahden transistoripiirin pitämään arvoa, kun taas dynaaminen rekisteribitti pitää arvoa lukutransistorin portissa. Kaksivaiheinen kellotettu dynaaminen siirtorekisteri voidaan toteuttaa NMOS: ssa käyttämällä neljää NFET: ää ja kahta vastusta bittiä kohti. Staattinen siirtorekisteri vaatisi kahdeksan NFET: ää ja neljä vastusta bittiä kohti. Dynaamisen logiikan lähestymistavat eivät ole läheskään niin yleisiä nykyään. 1970-luvulla portin kapasitanssi oli huomattava, eikä siitä päästy eroon. Siksi ei ollut mitään erityistä syytä olla käyttämättä sitä. Nykyään portin kapasitanssi on yleensä paljon pienempi, ja sirujen valmistajat yrittävät aktiivisesti vähentää sitä edelleen. Dynaamisen logiikan toimiminen luotettavasti vaatisi usein tarkoituksellista työskentelyä portin kapasitanssin lisäämiseksi. Useimmissa tapauksissa kapasitanssin lisäämiseksi tarvittavaa ylimääräistä sirualuetta voidaan käyttää yhtä tehokkaasti lisäämällä lisää transistoreita kapasitanssin tarpeettomuuden lisäämiseksi.

Mainitsette NMOS: n ja IIRC: n, dynaamisen logiikan suosion ja täydentävän MOS: n (CMOS) välillä ei ole vielä yhteyttä.
@jpc: Olen tutkinut kaavioita erilaisista NMOS-siruista - jotkut erittäin yksityiskohtaisesti, mukaan lukien Atari 2600 TIA, joka on todellinen nerokas työ - ihmiset löytävät siihen vielä uusia asioita kolme vuosikymmentä myöhemmin. Mielestäni yksi NMOS: n ja CMOS: n etu suunnittelun mukavuuden näkökulmasta on, että "läpivienti" (korkean ja matalan sivun taajuusmuuttajan vahingossa tapahtuva samanaikainen aktivointi) ei ole tekijä, vaikka tunnustan jonkin verran uteliaisuutta, miksi CMOS: ta ei käytetä riittävän matalalla jännitteellä, jotta tulon ylityspiste jätä korkeat ja matalat sivujärjestelmät pois päältä eikä aktivoi molempia.
@jpc: NMOS: ssa on mahdollista toteuttaa XOR-portti, jossa on kaksi transistoria ja kaksi vastusta, jos tulot ovat riittävän "vahvoja". Vaikka invertterit olisi lisättävä molempiin tuloihin, nelitransistorinen nelivastinen xor-portti olisi parempi kuin monet muut lähestymistavat. En ole kuitenkaan koskaan nähnyt käytettyä lähestymistapaa, vaikka suunnittelin samanlaisen piirin BJT: n avulla noin vuonna 1978 (suunnittelukonsepti toimisi paremmin MOSFETSin kanssa, mutta en tiennyt niistä mitään).
+1 - Minusta tuntuu, että todellinen helmi, jonka mainitsit täällä, on se, että matalat kellonopeudet säästävät virtaa, mutta eivät yhtä paljon kuin lepotilat, jotka on erityisesti suunniteltu optimoimaan virransäästö. Suoleni kertoo minulle, että säästät enemmän virtaa käyttäessäsi nopeaa oskillaattoria yhdistettynä lepotilan järkevään käyttöön, ylittäessäsi jatkuvasti todella matalalla taajuudella.
@JoelB: Se riippuu monista tekijöistä. Monissa prosessoreissa nopean kellon käynnistämisen ja sen tosiasiallisen käytön välillä on viive; tänä aikana tuhlataan voimaa. Jos jonkun pitäisi herätä esim. 100x / sekunti, voi olla parempi juosta hitaasti jatkuvasti kuin olla jatkuvasti käynnissä ja pysähtymässä. Toisaalta, jos joku aikoo käynnistää ja pysäyttää nopean kellon, voi olla hyvä minimoida käynnissä oleva aika siinä määrin kuin se voidaan tehdä tuhlaamatta ylimääräistä energiaa. Esimerkiksi...
... jos CPU: lla on "ydinjännitetila", joka voi toimia jopa 16 MHz: iin saakka, ja "matala ydinjännitetila", joka voi toimia jopa 4 MHz: iin, vaihtaminen "pysäytys" - ja "4 MHz" -tilojen välillä saattaa olla parempi kuin vaihtaminen "stop" - ja "1 MHz" -tilojen välillä, jos edellinen vaatisi vähemmän aikaa hereillä; vaikka siirtyminen 16 MHz: n tilaan vähentäisi herätysaikaa entisestään, se ei todennäköisesti kannata ylimääräisiä energiakustannuksia.
@supercat - Se riippuu ehdottomasti lukuisista tekijöistä (joitain määrittelemättömiä). Loppujen lopuksi energia on kuningas ja joudut räätälöimään kellosuunnitelman sovelluksesi / prosessorisi ja sen mukaan, kuinka paljon / usein prosessointi tapahtuu. Halusin vain tuoda esiin "metsä-puille" -näkökulman mainitsemalla lepotilan tässä keskustelussa. Suoleni kertoo minulle, että tuotantokoodia, jossa on 'while (1) {_ nop;}', on vielä paljon, että hyvää tarkoittavat insinöörit ajattelevat säästävänsä eniten virtaa ajamalla hitaammalla nopeudella sen sijaan, että lepotila otettaisiin käyttöön oikein.
@JoelB: Kommenttisi muistutti minua ongelmasta, jonka joillakin insinööritovereilla oli jonkin aikaa: järjestelmän äänilähtö surisi joskus ärsyttävästi. Kävi ilmi, että aina kun käyttöjärjestelmä havaitsi, että suorittimella ei ole mitään tekemistä, se laittoi sen nukkumaan. Tämä pienensi virrankulutusta, mikä puolestaan ​​antoi VDD: n mahdollisuuden nousta hieman. Joka 10 ms, CPU heräsi katsomaan, onko tekemistä enemmän. Ongelma korjattiin lisäämällä jotain: "do {} while (audio_powered_on ());" ennen tyhjäkäynnin "sleep ()" -lausetta, koska siinä tilanteessa energiansäästö * ei ollut * kuningas.
@supercat - Kuulostaa siltä, ​​että tämä tarina todistaa päinvastoin. Oikein määritelty / säännelty / suodatettu / irrotettu virtalähde olisi pitänyt suunnitella niin, että sillä ei olisi havaittavia vaikutuksia äänelle prosessorin odotetun käyttökuorman yli. Joten näyttää siltä, ​​että teho (tai tarkemmin sanottuna _ virtalähteen suunnittelu_) on edelleen kuningas. Suuri korjaus muuten!
Mitä tarkoitat unella, jolla on vähemmän virtaa kuin kellopysäytöllä?Esimerkiksi atmelillä ainoa asia, joka eroaa nukkumisesta ja ajamisesta, on se, mitkä kellot pysäytetään.Mikään muu ei voi tehdä unta?Ellei se leikkaa virtaa osiin?
@JoelB: Virtalähteen suodatuksella on kolme näkökohtaa: (1) estää roskaa sisälle pääsemästä;(2) estää roskaa pääsemästä ulkopuolelle;(3) estämään virranottomuutokset sisäisen jännitteen muuttumisesta.# 1: n optimointi vaikuttaa yleensä haitallisesti # 3: een.Jos laite olisi käyttänyt täysin erillisiä tarvikkeita äänelle ja suorittimelle, se olisi välttänyt ongelman, mutta vaatisi lisää virtalähdeelektroniikkaa;ongelmana oli, että CPU ja äänipiirit olivat saman suodattimen samalla puolella.
@SectoKia: Vaihtoehto ei ollut kellon pysäyttämisen ja nukkumisen välillä, vaan lepotilassa nukkumisen välillä ja turhien ohjeiden suorittamisen välillä tasaisemman virrankulutuksen varmistamiseksi.Vaikka monet suorittimet katkaisevat virtaa merkittäville osille pienitehoisemmissa lepotiloissa.
#4
+12
flup
2013-12-19 15:28:24 UTC
view on stackexchange narkive permalink

Kyllä, voit pysäyttää kellon kokonaan ja käynnistää sen myöhemmin myöhemmin ilman seurauksia. Voit jopa korvata kellon painikkeella ja käydä läpi ohjelman kirjaimellisesti askel askeleelta (taajuus: noin 0,1 Hz).

Teho on melkein lineaarinen taajuuden kanssa: 10 MHz: ssä mikro ohjain kuluttaa 10 kertaa kuin paljon tehoa kuin 1 MHz: ssä. Tämä ei kuitenkaan tarkoita, että 0 Hz: n taajuudella kulutus on kuitenkin täysin nolla. Staattinen haihtuminen on aina, mutta se on hyvin alhainen, tyypillisesti 1 uA tai vähemmän.

PS: Huomaa, että ADC: llä on pienin toimintataajuus. Jos taajuus on liian matala, kondensaattori, jonka yli jännite mitataan, purkautuu liikaa ja mittauksesi on väärä.

Paina nappia?Entä debouncing?
Tarjous on pakollinen.
#5
+10
Buzby
2013-04-17 15:08:18 UTC
view on stackexchange narkive permalink

Tulin myöhään tähän kysymykseen, ja se muistutti minua projektista, jonka näin jonkin aikaa sitten.

Se on lepakotunnistin, joka käyttää suurimman osan ajasta nollataajuudella toimivaa PIC: tä ja kellotetaan sitten. juuri tunnistamallaan signaalilla.

http://www.micro-examples.com/public/microex-navig/doc/077-picobat.html

[Tässä projektissa] (http://scanlime.org/2008/09/using-an-avr-as-an-rfid-tag/) signaali on sekä kello * että sirun teho *. :)


Tämä Q & A käännettiin automaattisesti englanniksi.Alkuperäinen sisältö on saatavilla stackexchange-palvelussa, jota kiitämme cc by-sa 2.0-lisenssistä, jolla sitä jaetaan.
Loading...