You are here

8031 mikrokontroller beindításában szeretnék segítséget kérni (MEGOLDVA !)

58 posts / 0 new
Last post
zus
zus picture

Helló ! A címben megénekelt 8031-et szeretném beindítani. Ehhez szeretnék klasszikus MCS-51 családú mikrokontroller programozásban jártas ember segítségét kérni. Hogy miről is lenne szó ?

Kezemhez nőtt két 80C31 mikrokontroller, a 8051-esek belső ROM/EPROM nélküli változata. Viszonylag régi motoros vagyok már a mikrokontroller szakmában, de még se 8031-et nem indítottam be, sem pedig 8051-est úgy, hogy a belső ROM-ot negligáltam. A szokásos idevágó irodalmakat kiolvastam a témában, ideértve a Rádiótechnika évkönyv 1992. évi számából a Madarász-féle hiánypótló összefoglalót is. Megépítettem egy egyszerű kisszámítógépet (80C31+74HCT573+27C256), amiben van egy darab LED a uC Port1 0. kivezetésén (1-es kivezetés).

A problémám a következő: megírtam egy tök egyszerű programot, ami kizárólag annyit csinál, hogy a Port1.0 kivezetésen levő LED-et villogtatja. Ez az egész kis program csak a kisérletezéshez kell (tényleg beindul-e uC külső EPROM-mal ?), illetve az áramkörbe tett uC tesztelésére. A programot az EPROM-ba szépen beírtam, de a készülék nem csinál semmit. Szkóppal vizsgálva, a 80C31 csinál valamit, az ALE és a PSEN lábakon vannak jelek, az összes IC-k kivezetésein mindenféle négyszögjel-impulzus kombinációk láthatóak, de mégsem működik. Olybá tűnik, hogy a 80C31 beindult, csinált egy reset-et, majd a legelső lépésnél megállt és valami miatt nem megy tovább, nem kérdezi le az EPROM-ot, bár a lekérdező jelek szépen mennek ki a processzorból.

Az ilyen klasszikus dolgot, hogy /EA lábat testre kell tenni (mert ekkor dolgozik a 80C31 a külső EPROM-ból) megcsináltam. Az összes doksi szerint ez elég ahhoz, hogy a uC a külső EPROM-ból dolgozzon. Mégsem megy. Több EPROM-ot próbáltam és több 8031-et is. Mi lehet a hiba ?

Biztos, hogy egy kábé 5 másodperces lépést hagyok ki, de mivel még ilyen 8031-et életemben nem hajtottam meg, nem tudom, hogy mi lehet az ?

A mellékelt rajz a kisgépet ábrázolja. A benne levő uC típusa nem érdekes, mert mind a 8031, mind pedig 8051 tökugyanúgy  működik, ha az /EA kivezetése testre kerül. A progit a komputerrel leszimulálva az megfelelően működik.

Köszi a segítséget.

File attachment: 
Comments
zus
zus picture

Kedves Mindenki ! Jó egy éve már, hogy ezzel a 80C31-es problémámmal felúsztam. Akkor sok segítséget és ötletet kaptam, de sajnos egyik sem jött be. Mostanság sikerült nagy nehezen egy Win98-as gépet faragnom, amivel tudok végre tisztességesen EPROM-ot égetni ! Pontosan úgy, ahogyan az a nagykönyvben meg van írva.

Tehát: az annak idején megépített kapcsolásom tökéletesen működik ! Az volt ugyanis a probléma, hogy a kis számítógépben levő EPROM-ba SEHOGY NEM TUDTAM BELETÖLTENI A TARTALMAT ! Van pár égető szoftverem és hardverem, amiknek kell a fizikai LPT vagy COM port. Csak hogy bármilyen mesterkedést is hajtottam végre, Winfos XP és 7 alatt képtelen voltam beégetni egy vacak EPROM-ot ! Mert a barom microfos elvette a portokat, helyettük meg maradt a nagy semmi !

Az volt legelsőnek a probléma, hogy bármilyen neten talált I/O drivert installáltam fel, nem működtek az EPROM égetőim. Se a "hozzávaló I/O driverek" (az égető szoftverhez való driverek) mellett, se pedig másmilyennel. Néha egyik-másik I/O driverrel kiolvasni esetleg sikerült valamit, de beírni tuti nem tudtam EPROM-ba. Viszont a szoftverek sok esetben azt mutatták (talán maga a hardver is), hogy az EPROM-ba a progi mégis beleépült, lehet használni. Nagy boldogan beletettem tehát az EPROM-ot az áramkörbe és nem történt semmi. Miért ? Mert igazából a beégetés meg sem történt ! Így egy üres EPROM került az áramkörbe, abban meg ugye csak FF-ek vannak (voltak). Azt meg a uC csak egy egyszerű semminek értelmezte (illetve MOV R7,A-nak). Ráadásul a nem megfelelő I/O driverek miatt, le se tudtam ellenőrizni a beégetést ! Csak most, a Win98-as gépen. Ekkor derült ki, hogy egy üres EPROM-mal próbáltam meg dolgozni, mikor ez a poszt született.

Van egy sereg régi 8x51 sorozatú mikrovezérlőm és vannak EPROM-jaim, amiket eddig nem tudtam használni a fentebbiek miatt. De most már tudom, úgyhogy a gondom megoldódott egy Win98SE oprendszerrel. Arra sajnos nincs lóvém, hogy százezer forintos hardvereket vásároljak ahhoz, hogy UV EPROM-ot, 8x51-eket tudjak égetni, mondjuk USB porton keresztül működtetett égetővel Win XP/7/10 alatt (ami nyilván mellette PIC és AVR cuccokat is tud égetni, de azokból nincs sok nekem). A "régi" mikrovezérlőket (pl. 80C31X2, 2,7V-5,5V táp, kis teljesítmény felvétel, 30-33 MHz órajel, úgyhogy annyira nem gagyi még), meg az EPROM-okat azzal égetem, amim van.

Tehát megköszönöm mindenkinek a segítséget, utólag is. A problémám megoldódott végre.

4

Jaca
Jaca picture
****

A Minipro TL866CS már elérhető áron van (nem a Plus), és gond nélkül írja a 27-es sorozatú EPROM-okat XP és Win7 alól is. Meg egy csomó mindent. Nézz utána, esetleg kérd azt szülinapra, házassági évfordulóra, vagy karácsonyra :)

1

zus
zus picture

Szia Jaca ! Megnéztem ezt a TL866-ot. Gondolkodom rajta, bár két mikrovezérlőt, amim van és az öreg égető simán kezeli, ez a gép nem ismeri. Lehet, hogy valami áthidaló típusként kellene égetnem azokat, de amíg ezt kiderítem, az sok idő lesz.

0

rreennaarrdd
rreennaarrdd picture

Melyik az a két mikrovezérlő?

0

zus
zus picture

Philips P87C654, meg a 82C524, 82C528. Ezek vannak még idehaza nekem. 16k meg 32k beépített uv eprommal. Legjobbak. De gondolom, hogy van nekik valami helyettesítőjük ebben az USB-s gépben.

0

rreennaarrdd
rreennaarrdd picture

A P87C654 elavult (meg a másik két típus is, csak azoknak elírtad a típusát, 87 kellett volna ott is a 82 helyett), 2004. végén leálltak vele, így nem valószínű, hogy ezt a chipet a mai, olcsónak számító programozók kezelni fogják, egyszerűen nem éri meg a fejlesztőknek, hogy ezekből beszerezzenek működőképes példányokat a teszteléshez. Értem, hogy neked ez van otthon, és világos, hogy egy csomó dologra ez is jó, de ezzel macerás a fejlesztés, az EPROM kezelése nehézkes és időigényes, emiatt ez komoly dolgokra nem ajánlott.
A cégnél EETOOLS Topmax II-t használunk, az ismeri a 654-et, de az a device programmer majd' 800$.

Legjobbak

Miben? :)

0

zus
zus picture

Ja, valóban elírtam a típust. Hogy miben jók ? Nekem arra, amire egyébként pl. a 89C51-eket használnám. A fejlesztés béna ? Na és ? Hova siessek ? Lemodellezem a dolgokat, bevésem az epromba és hajts. Ha szar az eprom tartalom, akkor meg egy-két óra napozás és aztán kábé 5 másodperc bevésés után egykettőre megjavul a dolog. Ha meg spéci igények kellenek, úgy mint, pl. A/D, akkor arra vagy céláramkört használok fel, amim szintén van a fiókomban, vagy pedig arra pazarlom el a jó kis Atmel vezérlőket. Ameddig egyszerű, de azért kivezetés számokat igénylő feladatokat kell megoldanom (értsd, amire a 89C51, 8515, 8538, stb. vezérlőket lehetne használni), arra ezek a 87C524-528-654-ek tökléletesek. Az a legkevésbé sem érdekel, hogy valami régi. Tudod, itt van elb@szva ez az egész világ és a benne élők gondolkodása: miért rossz az, ami régi ? Jól működik ? Igen. Lehet vele dolgozni ? Igen. Akkor meg kit érdekel, hogy régi ? Engem nem. Én nem dobok el valamit, csak mert régi, ha kifogástalanul működik és tudom ma is használni.

Másfelől meg, sikerült a Winfos 7 alatt beindítanom a régi ipari égetőm. Olyan faszán működik, hogy a hajam is lobog tőle ! Tökéletes ! Mellette a germicid lámpa, ha le kell barnítanom kicsit az epromokat.

0

rreennaarrdd
rreennaarrdd picture

Van pár égető szoftverem és hardverem, amiknek kell a fizikai LPT vagy COM port. Csak hogy bármilyen mesterkedést is hajtottam végre, Winfos XP és 7 alatt képtelen voltam beégetni egy vacak EPROM-ot ! Mert a barom microfos elvette a portokat, helyettük meg maradt a nagy semmi !

A "barom microfos" :) készített már néhány operációs rendszert, ki ezt szidja, ki azt, de most nem a Microsoft a hunyó, egyszerűen arról van szó, hogy az az alkalmazás, amit használnál/használtál, még akkor íródott, amikor nem létezett sem Windows XP, sem Windows 7, és olyan módon szólítja meg a hardvert, ami a modernebb Windowsokban szándékosan nem engedélyezett, ettől is lett pl. az XP stabilabb a Windows 98-nál. Régóta használok ilyen-olyan eszközprogramozókat, vannak olyanok szép számmal, amik gond nélkül működnek Windows 10 alatt is, de azt senki ne várja el, hogy kőkörszaki hardvereket is életre tud kelteni anélkül, hogy olyan operációs rendszeren használná, ami arra való. Virtuális környezetben is próbálkozhattál volna, egy COM port könnyen átadható a VM-eknek (akár VirtualBox, akár VMware a választás), a VMware még az USB-s eszközöket is támogatja, vagyis USB/RS232 adaptert is átadhatsz a virtuális Windows 98-nak (persze nem mindegyik gyártó megoldása fog működni így, csak az, amihez van driver Windows 98-hoz - szerencsére vannak ilyen chipek, pl. FT232, PL2303, CH340).

A "régi" mikrovezérlőket (pl. 80C31X2, 2,7V-5,5V táp, kis teljesítmény felvétel, 30-33 MHz órajel, úgyhogy annyira nem gagyi még), meg az EPROM-okat azzal égetem, amim van.

A 80C31X2 tkp. egy "mezei" mikrokontroller, abban nincs semmi, amit egy eszközprogramozóval kezelni tudnál, az ilyen értelemben nem programozható, a programot külső EPROM-ból (vagy akár EEPROM-ból stb) kell olvasnia.

Egyébként sokkal jobban járnál azzal, ha legalább olyan mikrovezérlőket használnál, amikben FLASH memória van programtárolásra, azokat úgy is programozhatod, hogy ki sem kell venned az IC-t az áramkörből, a programozó nagyon olcsó ezekhez, a fogyasztásuk sokkal kisebb, szóval sok előnyük van. Az ATMEL (már megvette őket a Microchip) is gyártott az MCS51-es családba tartozó mikrovezérlőket, de a saját fejlesztéseik még jobbak, inkább azokkal kellene ismerkedned (az Arduino sorozat tagjaiban is valamilyen ATMEGA mikrovezérlő dolgozik).
 

1

zus
zus picture

Helló ! Na, akkor kumulatíve válaszolok. 

Először is, azért használok MCS51-eket, mert  ABBÓL VAN IDEHAZA ! Ha pedig van idehaza belőlük, akkor arra, amire lehet, őket fogom felhasználni. A flashes mikrovezérlő nyilván jobb volna, de ingyen nem hullik az ölembe. 

Másfelől, azért használok egy profi, de "kőkorszaki" égetőt, mert a jövő hetet is képes beégetni. Csak sajnos Winfos 98 alatt, mert a barom microfos elvette a portokat ! Hagyjuk már ezt a baromságot, hogy az XP és a lemenői attól biztonságosabvak, hogy a portokhoz nem lehet hozzáférni direktben ! Azt meg még mgvárom, míg a virtuális gépek elérik direktben a portokat ! Azokat a portokat, amiket az anya oprendszer meg nem ér el, ugye ? Baromság. Annyi eszem nekem is van, hogy ha másképpen tudnám használni az égetőmet, a Win 98-at elfelejteném.

A direct i/o-t meg majd megnézem, bár nem várok tőle sokat. Másik olyan égetőre, ami az MCS51-eseket, az uv epromokat, a flash MCS51-eket is biztonsággal égeti Win XP/7/10 alatt, egyelőre nincs lóvém.

0

rreennaarrdd
rreennaarrdd picture

Ha pedig van idehaza belőlük, akkor arra, amire lehet, őket fogom felhasználni.

Természetesen így van, ezt senki nem tilthatja meg neked :)

A flashes mikrovezérlő nyilván jobb volna, de ingyen nem hullik az ölembe. 

Nagyon olcsók ezek manapság, főleg ahhoz képest, hogy mibe kerültek a "tieid" annak idején, és ezek a maiak "okosabbak, ügyesebbek, szebbek" :) - na meg sokkal könnyebb velük a fejlesztés, az USB-s programozó is filléres tétel hozzájuk.
 

a barom microfos elvette a portokat ! Hagyjuk már ezt a baromságot, hogy az XP és a lemenői attól biztonságosabvak, hogy a portokhoz nem lehet hozzáférni direktben ! Azt meg még mgvárom, míg a virtuális gépek elérik direktben a portokat ! Azokat a portokat, amiket az anya oprendszer meg nem ér el, ugye ? Baromság. Annyi eszem nekem is van, hogy ha másképpen tudnám használni az égetőmet, a Win 98-at elfelejteném.

 

Általában akkor szoktak ilyen sziklaszilárd véleménnyel lenni valamiről az emberek, ha nem nagyon értenek az adott témához. Ajánlom Tanenbaum könyveit, az egyik éppen az operációs rendszerekről szól, olvasgasd, talán attól kicsit árnyaltabb lesz a véleményed :)
Jó könyv még ez is:
https://regi.tankonyvtar.hu/hu/tartalom/tkt/operacios-rendszerek/ch01.html
https://regi.tankonyvtar.hu/hu/tartalom/tkt/operacios-rendszerek/operaci...

 

A direct i/o-t meg majd megnézem, bár nem várok tőle sokat. 

Annak idején ezt megvettük, egy rövid átmeneti ideig használtuk is XP-n (talán egy-két évig). Tökéletesen működött.

0

zus
zus picture

Remek, akkor ezt is megbeszéltük !

Hogy "annak idején" mennyibe kerültek az öreg mikrovezérlők, nem nagyon érdekel. Nemrég jutottam egy kisebb adaghoz belőlük, mivel máskülönben kihajították volna őket a kukába a hozzád hasonlóan "tudatosan" gondolkodó népek. Ráadásul, nem valami lerohadt dobozból vihettem egy penészes pincéből, hanem az IC-k saját gyári antisztatikus csöveiben vannak ÉS érintetlenek, tehár még sose voltak felhasználva ! "Vigyem isten hírével azt a pár ócska vacakot, ne is lássák őket ! Csak a helyet foglalják !" - volt a verdikt. Ennél nem tudok olcsóbban beszerezni a mai filléres 89Cxxx sorozatból. Pedig az ipari égetőm kifogástalanul égetné a 89Cxxx-eket is.

Nagyon örülök egyébként, hogy hozzájutottam öreg mikrokontrollerekhez. Nagyon régóta az MCS-51 családdal foglalkozom, kifejezetten szivesen mókolok velük. Amire és amennyire fel lehet őket használni, arra és annyira fogom őket használni. Persze, hogy örülnék egy kisebb doboznyi 89C51-52-nek ! Ha valahol leesne egy raktári polcról belőlük, úgy, hogy az a tudomásomra jutna, akkor a legelőször lehulló vezérlők még a levegőben lennének, mikor már ott lennék és alájuk tartanám a málhám ! Gondolod, hogy kihagynám ?

A direct i/o-t ismerem, de nem nagyon hiszek benne. Biztosan működik, de nekem inkább hol működött, hol meg nem. Már ha ugyanarról a direct i/o-ról beszélünk (amit ugyanis én használtam ilyen néven, azt egyszerűen letöltöttem a netről a saját weboldaláról és nem kellett megvenni - bár lehet, hogy a felhasználói feltételeik miatt kellett nektek megvennetek).

0

proba
proba picture

Ha ilyen gondom lenne, írnék az egyik 8031-re egy égető programot, ami soros porton fogadja az égetendő biteket, némi buszmeghajtó, meg tár segítségével tovább küldeném az Eprom , vagy a mikrovezérlő lábaira..  ( hidd el a soros portos kommunikáció bonyolultabb mint párhuzamosan a lábakra varázsolni az adatokat), utána egy 50ms-es impulzussal beégetni. 
Ha csak ezeket a példányokat akarod használni, a későbbiek során akármilyen gépen van usb-soros átalakító, egy terminál és kész.  Ez alapján még akár sikerülhet is https://pdf1.alldatasheet.com/datasheet-pdf/view/107779/INTEL/8031.html Az epromoké sem bonyolultabb, csak az égető feszültségre kell figyelni.

0

zus
zus picture

Az ötleted jó, csak éppen én nem vagyok programozó. Már látom is magam, amint a Winfos 7/10 alá vések egy eprom programozó szoftvert, olyat, ami a microfos által elvett portokon kommunikál. Ugyanis a 8031-re önmagában nem elég bármit is vésni. A winfos alatt fejlesztek, az alatt fordítok HEX/BIN file-ba és azt kell még akkor valahogy átvinnem a 8031-es égetőbe. És hogy viszem át az eprom tartalmat a 8031-es égetőbe ? Byte-onként beírom ? Sajnos, a realitás talaján kell maradnom. Az MCS51-gyel elboldogulok és ez minden.

A microfos által elvett portokon bukik meg az egész ! Ha azok meglennének Win XP/7/10 alatt, akkor semmi bajom nem lenne. Az öreg ipari égetőm is faszányosan muzsikálna. Meg vagyok átkozva az USB-vel.

0

proba
proba picture

Bármely winre van termiálprogram, Sőt a copy com1,,,,, /b is működik szerintem. Az átvitel megoldva. Egy gond van csak,, a mikrovezérlő tár kicsi, így valami átvitelvezérlés kell ( szerintem a hardveres működik még a copy paranccsal is ,(rts/cts ehez 1 plussz láb kell a mikrovezérlő részéről), hogy ne árassza el adattal a kontrollered. Ha oda értek a bitek, a programozó algoritmus simán fut a készülékeden. Szerintem az összes programozó így működik, már nem a PC állítja elő régen az időzítéseket. A pc rész csak annyi, file küldés a soros portra. Túl sok programozást nem igényel, akár a régi win terminálprogramja is tudja. Az USB soros átalakítóval is működik biztosan. Amúgy a WIN szerintem nem a soros portot vette el, csak azt a lehetőséget, hogy pontos időzítéssel használd,  illetve direkt vezérlőbit birizgáló programokat használj. Azt tuti nem tiltja, hogy bármilyen adatot szabvány protokollal küldözgess. A probléma esetleg a jelszint lehet, a szabvány +-12V helyett 5V szintet használ az átalakító.   Az előfordul, a programod drivere nem telepíthető, de nem a port teljes elérhetetlensége az ok. Terminálprogramból 1 byteot  is akár,  küldeni fogadni tudok.  

0

zus
zus picture

Szia ! Figyi, fentebb véstem rreennaarrdd kollégának már, hogy csak sikerült beindítanom az ipari égetőm a Winfos 7 alatt, így végre megoldódott a legnagyobb problémám az epromégetésben. Attól még a Win98-as gépmadarat megtartom arra az esetre, ha valami miatt mégsem menne az égetőm a Winfos 7 alatt. Akármi történhet.

0

Jaca
Jaca picture
****

A barom microfosban igaza van. Az nekem is magas, hogy miért irtották ki a hardveres elérést. Illetve nem is kiirtották, hanem kitiltották. Hogy emiatt lett stabilabb az xp vagy a win7? Nem hiszem. Sokkal inkább tudom elképzelni, hogy beült a legújabb gép elé valami ifjú titán, aki még nem hallott a soros és párhuzamos portról, és lövése sem volt ahhoz a kódhoz, ami azt lekezelte. Vélhetően túl egyszerű volt, hogy egy o 3f8 80 utasítással magasra lehet állítani egy számítógép csatlakozójának egyik lábát.

0

zus
zus picture

Jaca, nem attól lesz egy oprendszer biztonságos, hogy fizikai portokat nem tud fizikailag kezelni, hanem attól, hogy tisztességesen van megírva. Nem komoly matektudás nélküli programozó csodagyerekekkel kell oprendszert vésetni, ahogy a microfos teszi ! Állítom, hogy pl. a Borland százszor jobbbra meg tudott volna csinálni egy oprendszert.

Csak éppen a microfos egy szar cuccot agresszív marketinggel tol és ezzel tarolják a piacot. Még úgy is megéri neki, ha ellopnak ötleteket és utólag beperelik őket érte. Vagy kifizetik a perben megítélt lóvét, vagy pedig - ahogy a microfos szokta - megveszik az ötlet gazdáját. Így rohadtul könnyű az élvonalban maradni. A mindenféle gyártók ezért winfosra vésnek és ezért nincs semmi más alternatíva. Amúgy, az ablakozás az Xerox ötlet volt és a Win NT, amiből az XP és a lemenői kinőttek, AZ SEM a MICROFOS ötlete volt, hanem egy másik cégé, amit aztán a microfos megvett. Nincs versenytársa, ezért engedhet meg magának mindent.

A Microsoft Magyarország meg szintén megérne egy misét (posztot) a kormányzati korrupcióival egyetemben. A vezetője az el is ejtőernyőzött a kóter elől, pedig a microfos Amerikából küldött ide nyomozni embereket. De ez nem ennek a posztnak a tárgya, ahogyan a microfos feletti polemizálásunk sem.

A lényeg, hogy a jelen lehetőségeim között bombabiztosan működik a jó kis eprom égetőm és hurrá !

0

rreennaarrdd
rreennaarrdd picture

Nem azért írtam, hogy nem a Microsoft a hunyó, mert vitatkozni szerettem volna. Nekem finoman szólva sem kedvencem a Microsoft, de azért azt nem szabad elfelejteni, hogy biztonság és stabilitás terén a Windows 98 sokkal-sokkal gyengébb volt az XP-nél. Az XP előtt volt egy "gagyi" vonal (ezek mind MS-DOS-ra épültek, a Windows 1.0-tól egészen a Millennium Editionig), meg volt egy "komolyabb" irány, amit céges felhasználásra, valódi munkára és szerverek operációs rendszerének szántak (Windows NT 3.1-től a Windows 2000-ig). Az XP-vel megszűnt a gagyi vonal, a Windows 2000 stabilitását és biztonságát (vagy legalábbis az ezekre való törekvést) vitték vele tovább, aminek szükségszerű következménye volt, hogy a korábbi olyan alkalmazások, amik közvetlenül hozzáférhettek a hardverhez, már nem futottak XP alatt (természetesen ez a teljes NT vonalra igaz). Ez nem ifjú titánok tévedése volt, hanem mérnöki tervezés. Hogy jól sikerült-e megvalósítani? Erről megoszlanak a vélemények :) - én sok éven át szenvedtem a Windowsok hülyeségeivel, több mint 10 éve már csak akkor használok Windowst, ha muszáj (persze muszáj "néha"), de ettől még az XP nem tévedés volt, hanem tudatos váltás.
Nem bántásból mondom, olvass ezeknek utána, 3.0-tól kezdtem használni a Windowst, az XP (minden hülyeségével együtt) komoly megváltás volt az elődökhöz képest.
 

Vélhetően túl egyszerű volt, hogy egy o 3f8 80 utasítással magasra lehet állítani egy számítógép csatlakozójának egyik lábát.

Valóban túl egyszerű ez a megoldás, egy normális operációs rendszer, ami többfelhasználós, többfeladatos, ilyet nem enged meg. Sem a modern Windowsok, sem a UNIX-ok (az open source Linux és BSD világ sem), sem a MacOS (korábban OSX), ami részben szintén UNIX-on alapul) nem enged ilyet - teljesen jogosan.

 

1

Gyakorló
Gyakorló picture

Szia!
Ez egy lehetséges megoldás a közvetlen hw elérésre:
http://www.direct-io.com/
Üdv
Tamás

0

rreennaarrdd
rreennaarrdd picture

Ezt meg is vettük annak idején a cégnél, egy rövid ideig használtuk is. :)

0

Jaca
Jaca picture
****

Ez kb olyan, mintha a biztonságra hivatkozva egy autóban megszüntetnék a kormány és a kerekek mechanikus kapcsolatát.

0

rreennaarrdd
rreennaarrdd picture

Ha már autó: az autók nem lettek egyre biztonságosabbak? :)
Egy "kispolszkival" ugyanolyan bátran mernél nyomulni, mint egy mai autóval? A Zsiguli jobb volt a diagonál gumijaival egy mai Opelnél? :)
Amikor eljutunk egyszer oda, hogy hiába rántja el a kormányt a veled szemben haladó autó vezetője, hogy veled frontálisan tudjon ütközni, és az autó ezt nem engedi, az sem fog tetszeni? :)

Az operációs rendszerek témaköre nem egyszerű, de természetesen neked jogod van annak látni :)
 

1

Jaca
Jaca picture
****

És az mennyire biztonságos, hogy jön szembe a kamion, mellette egy kispolszki, a másik oldalon szakadék, és te nem tudod a kispolszki elé kormányozni az autód, mert az autó nem engedi? 

0

varga jano
varga jano picture
*****

A ms-t nem szeretjük . A terjedelmes op rendszerei miatt . De,sokan használják . A "kék halál"-t én is utálom . Viszont most win10 van az asztali gépemen . Azt csinálja amit szeretnék . A jövő nem könnyebb . Az új , korszerű , gépeken Csak USB-C csatlakozó van . Igy a hardver-szoftver fejlesztés egy kicsit nehéz . A hp gépemen futó (soros portos,usb2.0-as,régi,gép) ms programja teszi a dolgát.) Olyan driver-eket keresni , amit nem irtak meg lehet . De az idő drága dolog ,...
Jacának azt tudom mondani az autós hasonlatára .
Remélem,hogy az ilyen forgalmi szituációban a feleséged felébreszt rémálmodból !?? :)
​​​​​

0

rreennaarrdd
rreennaarrdd picture

Te egy másik világról írsz, olyanról, ahol még Windows 98-at használnak. Amelyikről én írtam, ilyen nem fordulhatna elő. Hogy mikor lesz ilyen, nem tudom, de soha nem lehetne, ha leragadtunk volna a Windows 98-nál.

1

proba
proba picture

Ezt már tovább gondolták, a vezető és a kormány kapcsolat megszüntetésére már vannak tervek. :)

0

zus
zus picture

Sziasztok ! Mivel sok választ kaptam, így kumulatíve válaszolok: mindenkinek megköszönöm a hozzászólását. Sokkal bentebb vagyok, mint egyébként. Működni ugyan még nem működik, de például a javasolt Timer2 megszakítást és az összes többi kezelést meg fogom csinálni. Majd megírom az eredményeket.

0

proba
proba picture

Ha csak egy bizonytalan tényezőt szeretnék, a portot ki be kapcsolgatnám, mindenféle időzítés nélkül. Ez könnyen detektálható, és szinte biztosan nulla szoftver hibával kivitelezhető. két értékadás egy ugrás. Ha ez megy, már talán biztos lehetsz benne, a programodon múlik a többi. Hardver, és portkezelési hiba talán már nincs.   

0

mszabo
mszabo picture

Szia!

Szerintem ez lesz a probléma oka mivel a ledet a port 1.0 és a vcc közé kötötted.:
T2 (P1.0): Timer/Counter 2 external count input/clockout (see Programmable Clock-Out).

Timer 2 external flag set when either a capture or reload is caused by a negative transition on T2EX andEXEN2 = 1. When Timer 2 interrupt is enabled, EXF2 = 1 will cause the CPU to vector to the Timer 2interrupt routine. EXF2 must be cleared by software. EXF2 does not cause an interrupt in up/downcounter mode (DCEN = 1).

A p1.0-án megszakítás generálódik, és nem tartozik hozzá megszakítást kezelő routin, ami miatt nem tér vissza a processzor a megszakítás elötti címhez.

A rajz első ránézésre jónak tűnik.

Mivel azt most nem tudom, hogy reset után mely regiszterek milyen értéket kapnak, így azt sem tudom biztosan, hogy a p1.0 okozhat e megszakítást, ezért én lekezelném az összes megszakítási vektort. Biztos ami biztos.

Egy ASM példa:

;INTERRUPT TABLA ************************************************************
ORG 0000H
                AJMP RESET
                ORG 003H
                AJMP INT_0
                ORG 00BH
                AJMP TF_0
                ORG 013H
                AJMP INT_1
                ORG 01BH
                AJMP TF_1
                ORG 023H
                AJMP RI_TI
                ORG 02BH
                AJMP TF2_EXF2

;A PROGRAM KEZDETE
;****************************************************************************
START:      MOV A,#STACK_START          ; initialize stack
                MOV SP,A
                SETB INT0
                CLR TESZT_BIT
                MOV C,TESZT_BIT
                MOV TESZT,C
                MOV TIME,#00H
;                CLR GYUJT                   ;TEKERCS GERJESZTESE
                ACALL BANK0                 ;0-.S REGISZTERBANK KIV.LASZT.SA
                ACALL INIT_INT              ;MEGSZAKIT.SOK .S PRIOLIT.SOK BE.LLIT.SA
                ACALL INIT_TIMER2           ;TIMER 2 INICIALIZ.L.SA 10ms ID.ZIT.SRE
                MOV DPTR,#0000H
ST_0000:        NOP
                AJMP ST_0000

SUBRUTINOK *****************************************************************

RESET:          AJMP START                  ;2us

INT_0:          RETI                        ;VISSZAT.R.S MEGSZAKIT.SB.L

TF_0:           RETI

INT_1:          RETI

TF_1:           RETI

RI_TI:          RETI

TF2_EXF2:  RETI                        ;VISSZAT.R.S MEGSZAKIT.SB.L

Remélem tudtam segíteni.
 

0

Jaca
Jaca picture
****

Szia!

Szimulátorban nekem addig nem csinált semmit, míg fel nem húztam egy 10k-val a P1.0 kimenetet. Az epromkezelés még nem volt benne.

0

Guest
Guest picture

Üdv!
Mi és hol a különbség? Mit csinál máshogyan?

0

zus
zus picture

Csak annyi a különbség, hogy valami miatt a VPP-t a uC vezérli, míg az enyémben az fix VCC-n van. Az EPROM adatlapja szerint az neki tökmindegy, hogy normál esetben a VPP GND vagy VCC. A másik különbség pedig a PSEN által vezérelt /OE+/CE.

0

Guest
Guest picture

Ez egy epromíró, ezért vezérli a VPP vonalat. A CE bmenet kezelése az érdekes számodra. A kiadott 16 címbitet csak a CE és az OE együttes aktív állapotában "látja" az eprom.

0

Jaca
Jaca picture
****

Szia!

http://dsp-book.narod.ru/ESD8031.pdf
A programot tudnád csatolni?

0

zus
zus picture

Persze. De sokra nem mész vele, mivel az egy egyszerű BASIC program. Nincs másom, amivel programozni tudom a 80C31-et.

A progi működik BELSŐ EPROM-os MCS-51-en, a komputeres szimuláció szerint ! De én ezt a 80C31-et szeretném beíndítani (máskülönben sincs 8x51-em, számítógéppel szimuláltam a progit - például a TopView-vel, amihez csatoltad a PDF-et). A gépmadár 4MHz-en ketyeg, biztos, ami biztos és hogy ne legyenek időzítési gondok az EPROM-nál.

Képtelen vagyok rájönni a hibára. A nyákot összehasonlítottam a neten fellelhető LS373-as és 573-as Ic-s nyákokkal, más EPROM-mal szerelt nyákokkal és az jó. Működő nyákkal is összehasonlítottam és aszerint is jó. Csak valahol a programozásban lehet a gond. Abban is biztos vagyok, hogy valami apró trükk, ami annyira triviális, hogy senki sem említi meg. Ezért nem lehet rátalálni.

File csatolás: 

0

Oszi11
Oszi11 picture

Szia!

Tegnap nem volt időm foglalkozni a programoddal, de mos visszafordítottam a programot és elég érdekes lett a kód. Lehet érdemes lenne mást futtatni. Írtam egy egyszerű kis progit assemblyben ami elvileg 2Hz-el villogtatja a LED-et ha el nem számoltam. Esetleg próbáld meg azzal hátha más az eredmény! 

Üdv,
     Oszi

File csatolás: 

0

Jaca
Jaca picture
****

Szia!

Amit küldtél programot, az nem 100-tól indul, hanem 0c0-tól. Nem tudom, ez befolyásol-e valamit.

0

Jaca
Jaca picture
****

A romstart az elején ki van kommentelve?
Valaha programoztam intelt, talán 8080-at, de csak gépi kódban.

Ja, a ledet úgy kösd be, hogy a katódot tdee a kimenetre, az anódot meg 10k-val tápra. Open Draines a kimenet.
https://www.tutorialspoint.com/embedded_systems/es_io_programming.htm
Illetve az összes portot fel kellene húzni 10k-val tápra. 

0

zus
zus picture

Te Jaca, ez eddig is így van, csak a felszopó ellenállás az nem 10k, mert akkor a LED nem csinál semmit, hanem 270R és akkor vállalhatóan világít (nem folyik ki tőle a szemem, de jól látható).

0

proba
proba picture

Nem tudom, a kimenet képes  e egy ledet meghajtani? Lehet minden működik, csak a terhelés túl nagy. Azt biztosan tudod, hogy a kimenet leginkább OC jellegű,  de a terhelhetősége nem nagy. A rádiótechnika könyv alapján biztosan életre lehet kelteni, minden bonyodalom nélkül, mert semmi egyéb dokumentációm nem volt annak idején róla, és működtettem. A kimenetekhez nem volt semmi extra beállítás. Esetleg az 1990-es évkönyvben lévő 8048- as család felépítését is megnézheted, hátha abban is említenek valami fontosat. 

0

zus
zus picture

Figyi, egy kopasz ledet csak meg tud hajtani. Nagyobb baj az, hogy az 1-es port 1. kivezetésén nincs semmi mozgás (ott van LED). Nem zizeg a kivezetés. Ott stabil magas szint van. Úgy gondolom, hogy ha működne a rendszer és nem tudna egy LED-et villogtatni, akkor melegedne a uC és szkóppal megnézve, a mért jelalaknak is ott kéne lennie, csak torzan.

0

Oszi11
Oszi11 picture

Szia!

A rajz amit feltöltöttél jó! Ilyen konfigurációban mennie kell. Ellenőrizd a buszok tartalmát. Ha készítesz egy olyan EPROM-ot ami csak nop utasítást tartalmaz látnod kell hogy végigszámolja a címeket az EPROM-on. Ha az ALE és a -PSEN működik akkor hozzá akar férni az ROM-hoz ellenőrizd a latch-t helyesen működik-e!

Üdv,
    Oszi

1

zus
zus picture

Szia Oszi11 ! Amikor mérem a cuccost, akkor azt láttam, hogy az ALE és a PSEN jelek kivezetésein négyszögjelek vannak. Az egyes buszok kivezetésein négyszög, illetve impulzusok kombinációi. ez idáig oké, mivel mondhatjuk azt, hogy az egymás után kiolvasott bájtok jelennek meg a buszon.
De minden ilyen kombó áll a szkóp ernyőjén, vagyis emberünk ugynazokat a dolgokat (ugyanazokat a bájtokat) ismételgeti. A legelején valahol egy végtelen ciklusba kerülhet a műszer. De csinál valamit, mivel mind az ALE, mind a PSEN jelek jelen vannak, a portokon a bájt kombinációknak megfelelő impulzusok is. Az AD0 kivezetés (port0.0 bit) pedig rendszertelenül pulzál, olybá tűnik, mintha a P0 port valahogy változtatná az értékét (a kivezetéseken levő bitkombinációkat). A rendszertelenség pedig akár lehetne a cím alsó bájtjainak változása is.

A külső memória olvasásánál az hiszem a PSEN jeleknek az impulzus szélessége a kiolvasott utasításoknak megfelelően változik, ha jól értettem az adatlapot. A lényeg, hogy nem egy ugyanolyan alakú-sorozatú négyszög jel sorozatot kell kapni, hanem változó impuzusszélességű jelsorozatot. Most emebrünk olyan az ALE és PSEN kivezetéseken, mint egy négyszögjel generátor. Az a baj, hogy továbbra sem tudom, hogy a programozásból mit hagytam ki ? Biztos vagyok benne, hogy valami nyomorult falg-et még valahol be kéne állítani ahhoz, hogy ez a vacak elinduljon. Sajnos nincs egy egy olyan leírásom, de még egy példaprogramom se (se Asm-ben, se C-ben vagy Pascalban, vagy Basic-ben), ami egy ilyen 80C31-es uC-t felprogramoz használhatóra. Úgy értem, hogy ami el is indul és működik szépen. Csak egy szem LED villogtatásáról lenne szó, de nem akarja az igazságot a rendszer. A kapcsolás szerintem is külön működik, a belevésett Led villogtató prigit is leszimuláltam komputeren legyálább három különböző progival és működik az is. A kettőt mégse tudom összehozni.

Egy Atmel 80C31X2-vel próbálkozom, de sima kopasz i8031-gyel is ugyanaz a probléma.

Ha egy kitörölt EPROM-ot teszek a gépbe, akkor az üres helyek megfelelnek NOP utasításnak ?

0

Oszi11
Oszi11 picture

Szia!

A utasítás olvasásakor memóriát úgy olvassa, hogy először kiadja a 16-bites címet a P0-ra  és  P2-re majd az ALE magas jele belépteti a latch-be a P0-tartalmát ALE alacsonyra vált, P0 bemenetbe kapcsol ez után a -PSEN alacsony szintre vált és engedélyezi a rom kimenetét. Memóriaíráskor a PSEN magas marad, hogy ne tegye tönkre a buszt. Ezeknek a jeleknek így kell ismétlődni minden utasítás olvasásnál.
Sajnos az üres EPROM nem jó mert az FF-el van tele de 00 kell,  mert az a NOP kódja. Van egy olyan lehetőség hogy az EPROM adatbuszának minden bitjét földre kötöd ellenállásokon keresztül. Nem elegáns de működik. Az ellenállások kellenek hogy ne legyen zárlat. Értékük nem fontos néhány kilóohmosok jók.
Csatoltam egy doksit, Benne vannak opkódok és a gépi kódok is vissza tudod ellenőrizni az EPROM tartalmát hátha ott a baj.

Üdv,
      Oszi

File csatolás: 

0

zus
zus picture

Szia ! Köszönöm az utasításgyűjteményt, majd elolvasom. Közben eszembe jutott az, hogy ugyan minden leírás azt írja, hogy a programkód 0000h-tól megy a 8031-nél. Nem lehet az, hogy ezt kicsit fentebb kellene kezdeni ? 1000h-nál mondjuk ? Mivel a 8031-ben vannak belső regiszterek is, amik valami memóriánál vannak elhelyzve. De pl. 0500h-nél vagy 1000h-nál már nincs semmi.

0

Oszi11
Oszi11 picture

Szia!

A belső registerek a belső ramban vannak a 128-as címtől kezdve, de valóban a program memória elején vannak a megeszakításvektorok ezek bedrótozott címek ahova az egyes megszakítások beugranak. A reset az 0000h ide érdemes egy JMP start  utasítást rakni ami elugrik a program elejére, ami az utolsó vektor után van (2BH ha minden igaz). Ha nem használtad ezeket a megszakításokat nem okozhatta problémát, de érdemes figyelembe venni.

Üdv,
      Oszi

0

zus
zus picture

Oszi bátyám, itt van ennek az AT80C31X2 a gépkönyve, amivel foglalkoznék. Akárhogy nézem, ez a nyomorult /EA=0 kivételével nem ír semmit a külső EPROM hozzáférésről. Még annyit se, hogy a megszakítások kezelése miatt legalább a 24H-tól célszerű indítani a progit (néhány bájt veszteség az EPROM-ban, na bumm). Kérlek, hogy nézd át, mert lehet, hogy valamit nem veszek benne észre. Az adatlapban a 33. oldalon ott vannak a külső memória olvasási jelealakok. Az ennél levő ALE és PSEN jeleket mértem, ilyenek, szerintem ennyire is vannak egymáshoz képest tájolva. Mindkét jel folyamatosan működik. Az adatvezetékeken is vannak jelek (az AD0 vagyis a 0-ás port 1. vezetékének az utolsó bitje folyamatosa, de rendszertelenül zizeg). Tehát, mintha emberünk olvasni szeretne, csak épp vagy nem tudja, hogy honnan, vagy valami végtelen ciklusba kerül a legelején.

File csatolás: 

0

Oszi11
Oszi11 picture

Szia!

Ebben az adatlapban szinte csak az extrák vannak benne. Az eredetit az Intel gyártotta úgy 40 évvel ez előtt. Ez egy tovább fejlesztett verzió a megszakítás rendszere is prioritásos és csak annyit mond 5 vectror van a megszakításokhoz és szabadon kapcsolgatható melyik milyen priorítással legyen elérhető. Gondolom az első 5 a sztandardból.

Üdv,
   Oszi

File csatolás: 

0

zus
zus picture

Hozzászólásokra válaszolva kumulatíve: először is köszönöm a válaszokat. A PDF-ek nem voltak meg, letöltöttem őket, köszönöm. Bármi adhat jó ötletet.

A gond az, hogy a progit komputeren leszimulálva, az működik ! Úgy, ahogy annak mennie kell. Ezzel együtt élesben nem működik és nem tudom, hogy miért. Minden leírás azt írja, hogy az /EA=0 esetére a 80C31 automatikusan a külső memóriából kezdi el szipkázni a programkódot. De amivel én játszok, az konkrétan sz@rik bármit is kiszipkázni az EPROM-ból. Több EPROM-ot leteszteltem és több 8031-et. Ismétlem: emberünk úgy tesz, mintha az elején kiszippantana egy szem kódot az EPROM-ból, aztán úgy marad. Életjeleket ad, a buszokon ott állnak az impulzus sorozatok, meg a négyszögek, de mintha egy végtelen ciklusban lenne a uC. Vagy megteszi az első lépést, aztán kiakad, mert még valami hiányzik a kódból. Mit tudom én, honnan szedje a következő lépést ? Nem tudom és ebben kérek segítséget.

A probléma vagy egy apró elkötés a rajzban, amit nem hiszek, mert több helyen utánanéztem és mindenütt így van összekötve a lényeg. Inkább arra gondolok, hogy egy apró programozási trükk még kell, PSW-t beállítani, vagy valami regisztert az induláshoz. Hátha kell port irányt is beállítani, mint a PIC-eknél vagy az Atmeleknél (bár MCS-51-ben eddig ezt nem kellett). Valami ilyesmire gondolok, amit azért nem tudok, mert még a büdös életben nem volt arra szükségem, hogy külső memóriás uC-vel operáljak.

0

zsugori
zsugori picture
***

szia
így nem lehet?

File csatolás: 

0

zus
zus picture

Figyi, a reset az így van a rajzomon is, az /EA-nak GND-n kell lennie, máskülönben VPP programozó jelet vár a rendszer VAGY a belső (itt a 80C31-nél nem létező) EPROM-ból válogatna.

0

zsugori
zsugori picture
***

0

Guest
Guest picture

0

kferi
kferi picture

Hát marha régen volt amikor erre írtam bármit. Talán még van is a fiókban.

0

ty
ty picture

hello, egy adatlapja csak van ennek a 8031-nek?

0

SzBálint
SzBálint picture
****

szia: ez lenne?

Bálint

File csatolás: 

0

zus
zus picture

Ez. A 80C31-es típus.

0

Sponsored links