[ Megoldva ] PROM égetése arduinoval

Egy PROM-ot szeretnék felprogramozni az itt található kapcsolás alapján. Mivel nekem megvan a stabil 10.5V-om, csak azt a részét használnám, ami az arduino GPIO-ja által vezérelve kapcsolná ki/be a 10.5V-ot, valamint kikpacsolt állapotban egy másik GPIO-val (Sense) képes visszaolvasni az adott adatláb állapotát. Az alapkapcsolást ez az ábra mutatja. Ezt megépítettem, működik is.

A problémám azzal van, hogy lejjebb kiegészítette ezt a kapcsolást a Sense visszaolvasás lehetőségével, ami nálam nem úgy működik, ahogy szerintem kellene.

Megépítve a Sense kiegészítést is, de égetés alatt a Sense vonalon megjelenik a 10.5V, ami direktben rá lenne kötve az arduino GPIO-jára.

Ezt nem merném így az arduinora kötni.

Rossz ez a kapcsolás? Vagy jó, csak én nem értek valamit? Valahogy meg lehet oldani, hogy a Sense vonbalon sose jelenjen meg 5V feletti feszültség? Vagy csak én parázok, és éles üzemben ez jó lehet? Rá lehet így kötni egy arduinora?

Hozzászólások

Szerkesztve: 2025. 07. 30., sze – 20:47

Erzek nemi diszkrepanciat a

"The final version is a little slow (~2us) but works well:"

es a

"I redrew the schematic just to make things clearer:"

alatti rajzok kozott

Nekem ugy tunik az utobbi a jo, ott az adatvonalak 5V-on vannak kezelve (VCC), itt a 7805-os GND laba fixen foldon van. A masik 7805-osnek a GND-je van eltolva egy tranzisztorral, az csinalja a VPP-t (ha jol ertem ezen a labon vagy 12V van vagy 5V a VPPctrl allapotatol fuggoen).

(egyebkent szerintem mindket rajz eleg trehanyul lett megcsinalva, nem egyertelmu egyik sem teljesen, pl. a masodiknal szerintem negy kulon vonal van, egyforma aramkorok, az alkatreszek referencia szama kulonbozik (ez OK) de mindegyikhez D0, R0 es S0 tartozik...) 

/sza2

Digital? Every idiot can count to one - Bob Widlar

Valóban eléggé következetlen a rajz, de azt tudni, hogy a PROM-ot 10.5V-tal kell égetni. A második rajzon egy külön GPIO vezérli, hogy 5V vagy 10.5V jusson a felső VCCP vonalra. Ez azonban - szerinem - nem változtat azon, hogy égetés közben a felső VCCP-n és így a Sense lábon is 10.5V lesz.

Ha arra gondolsz, hogy amikor a Data-n megjelenik a kb. 10V (a BC328 miatt valamivel kevesebb, mint a VCCP), akkor a Sense-n is ugyanannyi lesz - terheletlenül. Viszont ha áram folyik rajta, a 22kOhm-os ellenálláson esik valamennyi feszültség, így talán nem nyírja ki az Aduinot. Nem egy normális szintillesztő, az biztos (a fenti dióda csak védő szerepben van ott, mert amíg a égető feszültség kevesebb, mint a VCCP, addig az zárva van).

A kulcsszó a "talán". Mérni valóban terheletlenül mértem a Sense kimeneten megjelenő feszültségszintet. Van rá módszer az éles teszten kívül, hogy megbizonyosodjam róla, nem teszi-e tönkre majd az arduino-t?

Egy 5V-os zener megnyugtató lenne rá? Jó gondolat? Vagy felesleges? Netán elront valamit?

Nem tetszik ez a project, tobb gond is van vele. A "sensing"-es resznel a vedodiodak nem csinalnak semmit, a tap fole nem engedne elvileg, de itt meg egy tap van, az valt 5 es 10.5 V kozott.

Az ujrarajzolt valtozatnal a biteknel gondolom a ket VCC kozul a jobb lenne a VPP (10.5 V-os programozo feszultseg). Az 1N4148-as nyitofeszultsege az adatlap szerint maximum 1V, az 5V-os tapfeszhez kepest ez 6V-ig ereszti rossz esetben az Arduino labat (tipikusan 5.7 V-ig). Elvileg 5.5V-ig mehetne, de ha 5V a tapfesz, az IC-n beluli clamping diodak hamarabb megfogjak. Igy ennek semmi ertelme.

A forumban felmerult zenerek nem gyorsan valtozo jelre vannak optimalizalva (elvileg a kisebb teljesitmenyuek meg valamennyire jok erre is), ez is csak az egeto sulyat (meg itt a kapacitasat) noveli.

A programja is kicsit fura, a PROM-ba szant adat be van egetve, az Arduino flash-eben tarolodik. Ez akkor jo, ha sokszor kell ugyanazt beegetni, es onallonak kell lennie. A legtobb Arduino (itt gondolom Nano vagy Uno) kepes PC-s USB-s kapcsolatra, annak tobb ertelme lenne szerintem.

A strange game. The only winning move is not to play. How about a nice game of chess?

Általában fix adat kerül a PROM-ba. Két PROM-ot kell megírni, és a fórumok szerint erre kevesen képesek.

Közben annyiban bonyolódott - vagy egyszerűsödött - a helyzet, hogy kiderült, ez a PROM égető, bár a 74S571-esre készült, de mégsem jó az MH74S571-es PROM-hoz, amilyen nekem van.

A nálam lévő TESLA által gyárott a változatnál nem az adatbiteket kell 10.5V-ra emelni, hanem a VCC-t, és az adatbiteket földre kell húzni. Ez jóval egyszerűbb így, és kihagyható a Sense hekkelés.

Cserébe az is kiderült, hogy az Arduino Nano-nak pont eggyel kevesebb lába van, mint amennyi kellene. Az új módszernél meg kettővel kevesebb. Így most azzal küldök, hogy lehet-e olyan kapcsolást csinálni, amivel egyetlen GPIO képes lenne output üzemmódban lehúzni földre az adatlábat, input üzemmódban pedig olvasni a rajta lévő értéke.

Egyelőre nincs megoldásom.

Shift regiszterrel siman. De amugy minden pint ket iranyban szeretnel hasznalni? Ha nem (pl. cimbusz bitjeinek altalaban eleg az egyik irany), akkor egy kicsit egyszerubb lesz.

SN74595-os konnyen illesztheto mikrokontrollerhez, ez jo outputnak.

166-os meg inputra jo. A ketto kombinalhato es lancolhato. A szokasos LS, HCT es tarsai itt is leteznek.

A Ben Eater-fele EEPROM egetos videoban a hasznalatat is lathatod. (az egesz csatornat ajanlom egyebkent azoknak, akiket erdekel a gepek mukodese, meg ez a low-level vilag)

A strange game. The only winning move is not to play. How about a nice game of chess?

Kellett egy idő, mire rájöttem, hogy a shift regiszterrel a címbusz bitjeit lehet generálni, így két bittel bittel tudok 8-at előállítani. Mekkora ötlet! :) Eszembe nem jutott volna soha, az biztos.

Pici szépséghiba, hogy 9 bites a címbuszom, de így is felszabadul annyi bit, hogy már megoldható.

Közben az az ötletem támadt, hogyha a prom adatlábát egy invertáló tranzisztoron keresztül vezetem vissza a lehúzást vezérlő GPIO-ra, akkor szintén jó megoldást kaphatok. Ezt azért még kipróbálom, mert egyszerűbb lenne az arduino kód.

A 3 pines modot ajanlom. Kell egy adat, egy clock (ezzel lepteted), meg egy, amivel engedelyezed/attoltod a shift regiszterbol az output latch-be. Kulonben vegigmaszik a labain, ami zavaro lehet (figyelni kell a sebessegekre). Arduinon meg amugy is van hardware-es SPI, meg ott a shiftOut parancs, mindketto lekezeli a lenyegi reszt.

A strange game. The only winning move is not to play. How about a nice game of chess?

Az egyszerűség kedvéért végül egy arduino mega lappal készült el az író, így van elég GPIO mindehez.

Mégsem sikerült az írás.

Mint kiderült, bár a 10.5V-ot a tranzisztoros kapcsolás jól kapcsolta, terheletlenül 10.5V jutott a PROM-ra, mégis égetés alatt a 10.5V-ból már csak 8V maradt úgy, hogy a 10.5V-os forrás továbbra is 10.5V volt. Vagyis csak a tranzisztoros kapcsolóban veszhetett el az a 2V, ami terhelés nélkül nem veszett el... fura,

Közben találtam egy másik kapcsolási rajzot is ehhez a PROM típushoz, ahol az 5V-ot és a 10.5V-ot egy mezei relé segítségével kapcsolják a PROM-ra amikor szükséges. Hát, ez azért elég csúnya megoldás, de lehet, hogy C tervnek megtartom.

Magamtól most IRLML6402 mosfetre tervezem cserélni a tranzisztorokat, hátha ez veszteség nélkül tudja biztosítani terhelés alatt is a kapcsolást, de ha valakinek van jobb ötlete, szívesen meghallgatom. Igazából nem értem, miért tűnik el terhelés alatt az a 2V.

terheletlenül 10.5V jutott a PROM-ra, mégis égetés alatt a 10.5V-ból már csak 8V maradt

Mekkora áram kell ennek a szörnynek? Gondolom, katalóguslapból kiolvasható.

 a tranzisztoros kapcsolóban veszhetett el az a 2V, ami terhelés nélkül nem veszett el... fura

Miért lenne fura? A tranzisztor egy áramvezérelt áramgenerátor, már, ha nem viszik telítésbe.

egy mezei relé segítségével kapcsolják a PROM-ra

Ezt ne! Pereg avagy prellezik a kontaktus, stb.

 Magamtól most IRLML6402 mosfetre tervezem cserélni a tranzisztorokat

Mindkettőt? A bipolárist tartalmazó rajzon az egyik pnp, a másik npn. Ezt akarod két p-csatornásra? Mindegy az, hiszen három lába van? Vagy hogy?

Mondom, hogyan méretezd!

Rafinált módon, spórolandó az ellenállásokkal, a BC547-tel kialakítottak egy áramgenerátort. Nem tudom, a mikrokontroller 3.3 V-ot vagy 5 V-ot ad-e a port lábára, mindenesetre az ottani feszültség mínusz 0.7 V van a tranzisztor emitterén, ezt osszd el 10 kΩ-mal, az lesz az emitter áram. Ha a tranzisztor erősítése h21, akkor a kollektoron kifolyó áram az emitter áramának h21 / (1 + h21) -szerese, ha jól sejtem, szóval gyakorlatilag a teljes emitteráram. Picivel kisebb.

Ez folyik be részben a BC328 bázisába, részben a 4.7 kΩ-ba. A 4.7 kΩ feszültsége 0.7 V, tehát az ellenállás árama 0.7 V / 4.7 kΩ = 149 µA. Ha az MCU tápja 3.3 V, akkor az emitter ellenálláson (3.3 - 0.7) V / 10 kΩ = 260 µA folyik. Legyen a kollektoráram 249 µA, akkor a BC328 bázisárama 100 µA. Ez nem túl nagy, 100-szoros áramerősítés esetén 10 mA már kihozza a tranzisztort a telítésből. Viszont, ha lecseréled a 10 kΩ-os emitter ellenállást mondjuk 2.2 kΩ-ra, akkor 1.18 mA lesz az emitteráram, a kollektoráram úgy 1.1 mA körüli, abból elmegy 149 µA, még mindig marad 0.95 mA. Ez szerintem már elég. Ha nem, az emitter ellenállást 1 kΩ-ig csökkentheted, az alá ne menj.

Fog működni, nem kell a MOSFET. Lehet azzal is, de más kapcsolástechnikával, mert a MOSFET feszültségvezérelt eszköz.
 

Ne csak arra figyelj, mi hova van kötve, értsd meg a működését, majd számold ki az alkatrészek kívánt értékét, azaz méretezd!
 

Itt a 10 kΩ-ról 2.2 kΩ-ra való csere szinte biztos, hogy meg fogja javítani.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Köszönöm a választ, de közben a MOSFET-es verziót elkészítettem, és gyönyörűen működik!

Amúgy kb 0.5A áram folyik rajta égetéskor, de erről is ellentmondásos adatokat találtam (0.2A-0.8A) épp úgy, mint az égetési feszültségről. Úgy tűnik, mintha ugyanazon típusszám alatt lenne egy régebbi meg egy újabb TESLA gyárotta PROM is és ezek írása eltérő lenne.

De a lényeg, hogy az enyém 10.5V-tal íródik, ez most már biztos.

Először azt akartam, hogy a két tranzisztort együtt váltom ki egy-egy P-MOSFET-tel, de aztán kiderült, hogy ez így nem megy. Végül mindkét feszültséghez (5V és 10.5V) került egy IRLML6402, a GATE felhúzva a SOURCE feszültségére egy 4.7k ellenállással, és ezt húzza le a földre egy 2N7000, amit közvetlenül az 5V-os GPIO-val kapcsolok. A közösített DRAIN, amin meg kijön az 5V vagy 10V, az 10k-val lehúzva a földre. Persze az első tesztnél a 10V kapcsolása rögtön zárlatot is csinált, így az 5V-os DRAIN és a 10V-os DRAIN közé bekerült egy 1N5819 dióda is, hogy ne túl sokat vegyen el az 5V-ból.

Ezzel a felállással nagyon szépen működik.

Ennek ellenére örülnék valami egyszerűbb megoldásnak, valami relé-szerű, de vagy SSR-rel vagy valami optikai kütyüvel. Talán a AQY212EH? A prellezés ebben az esetben nem gond szerintem, mert először fel kell kapcsolni a 10.5V-ot, utána lehúzni földre az írandó adatvonalat, és csak ezek után indítani az égetést a \CE láb lehúzásával. Itt lehet annyi időt hagyni neki, hogy a relé biztonsággal átálljon. Találtam is pici kompakt reléket, amit be lehetne építeni. De nem tudom, mennyire lenne zajos, hány kapcsolást bír egy ilyen, mennyire megbízható a kapcsolása. Tehát tényleg csak C tervben volt benne.

Egyelőre örülök, hogy megy. Ha hozzájutok, szeretném publikálni, mert annyira nincs sehol, és ahhoz már jó lenne a legegyszerűbben kivitelezhető megoldás, hogy más, hozzám hasonló kontár is meg tudja építeni.