LPT vezérlés Pascalban, asm betéttel
2012-02-19T20:01:47+01:00
2012-02-22T23:50:58+01:00
2022-07-19T04:37:26+02:00
  • Nagyon király az a robot!
    Mutasd a teljes hozzászólást!
  • Igen lenne kérdésem.

    Áruld már el, mért nem ezzel kezdted?

    Itt nem lehet semmilyen kérdést feltenni, mert az is flamebe fordul szinte mindig. Nem lehet még álláshirdetést sem feladni, mert azzal is ugyanez történik.
    Ha meg akarok tudni valamit, akkor például megnézem ezeket inkább:

    Léptetőmotor
    vagy
    Léptetőmotorok bekötése

    Mégis miért irkálnék ide? Nekem ez csak munka. Úgyhogy felőlem szapulhatsz nevezheted akármilyen kamunak is
    Mutasd a teljes hozzászólást!
  • de írok.

    Nem szeretem a centronics motorokat.
    Nem is láttam olyat.
    De egy linket küldhetnél...

    Sőt a léptető motorokat sem szeretem.
    Szervó párti vagyok.

    Amire te gondolsz, hogy vissza olvasni: azt a zárt hurkú vezérlés esetén kell. Amikor van valami pozíció visszajelzésed, de azt sohasem a motor adja. Valamilyen jeladó (mágneses vagy optikai) szolgáltatja a pozició/szög adatokat.
    Léptető motornál ritkán alkalmaznak vissza csatolást mivel elvárható, hogy le is lépi amit kell.
    Nyomtató porta unipoláris léptető motort lehet kötni.
    Ahol a tekercseken folyó áram iránya sohasem változik.
    Jobbak a bipolár motorok, de oda kettős táp, vagy teljes híd meghajtó kell.
    Irtál még szög/lépést ami szintén téves volt.
    Az átlagos az 400 vagy 200 lépéses vagyis 1,8 vagy 0,9 fokos.
    De ez senkit nem érdekel. Mert léptető motorokat mikrolépésmodban szoktuk használni. Ez a mechanikának is jobb.

    Ha van konkrét e világi kérdésed szívesen válaszolok.
    De kérlek ne találj ki definiciókat.

    Az a duma, hogy te nem vagy hülje, csak tudományos felmérést végzel az nagyon gyenge....
    Mutasd a teljes hozzászólást!
  • Semmi áron nem írsz le konkrétumot, igaz?
    Mutasd a teljes hozzászólást!
  • és melyik jobb szerinted mint centronics


    Sok fajta valóvilágban létező motort láttam/használtam már.

    De mivel te egy saját zárt belső világban élsz, azt, hogy ott mi létezik és milyen paraméterekkel bír, nem tudhatom.

    Specifikáld légyszíves kifelé, hogy a te belső bolygódon milyen technikai paraméterei vannak a "centronics motornak".
    Ha ezt megteszed akkor tudok összehasonlítást végezni, földi motorokkal.
    Mutasd a teljes hozzászólást!
  • Mutasd a teljes hozzászólást!
  • "Szóval lehet láttam már motort. (igaz nem centronics volt)"

    Lehet, hogy jobb lett volna, ha nem flamelsz, hanem leírod, hogy milyen motort láttál, és melyik jobb szerinted mint centronics
    Mutasd a teljes hozzászólást!
  • Ne ez már tényleg nem flame. Ha észreveszed a hibát javítsd nyugodtan. Vagy ha nem értesz egyet, mert szerinted nem úgy van akkor azt írd le.
    Amit leírtál az korrekt és jó is
    Mutasd a teljes hozzászólást!
  • Na, ez már egy értelmes kérdés. A baj csak az, ebből is flame party lesz. A google a barátod


    Ez így gyenge duma...
    Szakos indoklást várnék!

    Lövésed sincs az egészről


    De amikor azt mondtam neked, hogy iszom az egészségedre:
    iszom az ...

    Az egy link.
    Ami konkrétan az asztalomnál készült.
    Szóval lehet láttam már motort. (igaz nem centronics volt)
    Mutasd a teljes hozzászólást!
  • Amikor azt mondtam, hogy
    de másképp nem fog sikerülni.
    egyértelműen arra értettem, hogy nem hiszem, hogy drivert fog ehhez írni.

    Ezenkívül még további 4 port áll rendelkezésre. Ezen lehet vezérelni állapotbitet (statusbit) és még 5 porton mennek a kontrollbitek.

    Ha már kontrollbitről beszélsz, akkor nem mondhatod, hogy azok 5 porton mennek, még akkor sem, ha éjjel van és fáradt vagy. Ugye én nem vagyok flamelő és sejtem mit akartál mondani, de sehogy sem jó: kontrollbit nem 5, hanem 4, statusbit pedig nem 4, hanem 5 van.

    Nem szeretném ismételni amit a többiek már elmondtak, de veled "csak" annyi a baj, hogy nálad túl gyakori a
    Bagatel kis elírás
    . Na de fel a fejjel, itt mindenki hüle, te nagyon jó vagy, ne is törődj velük, csak flamelnek veled.
    Mutasd a teljes hozzászólást!
  • Akkor ezt a zöldséget bizonyára valaki más írta:

    Egyébként itt konkrétan 2 dolgot kell megoldani.
    1: az érkező adatokat paritással ellenőrizni kell, csak ezután mehet ki, különben marhaságok lesznek.
    2: a visszatérő adatokat szintén ellenőrizni kell paritásra, hogy stimmel -e az adat. A visszatérő adatokat ezután comparálni kell a kimenő jelekkel. Így lehet megtudni, hogy fizikailag is megtörtént-e pontosan a művelet.
    Mutasd a teljes hozzászólást!
  • Ez meg aztán csudi jó egészen kis fogyasztó. 12 voltos-ra gondolsz? Már látom is ahogy elfüstöl. Leírtam már korábban mekkora fesz. mehet max.

    Egy kis fogyasztóról írtak. Mi köze ennek a 12V-hoz, meg a maximális feszültséghez?
    Mutasd a teljes hozzászólást!
  • "Lövésed sincs az egészről

    Lehet.
    Épen ezért érdekelne, hogy mit akarsz/tudsz olvasni egy léptetőmotorról?"

    Na, ez már egy értelmes kérdés. A baj csak az, ebből is flame party lesz. A google a barátod
    Mutasd a teljes hozzászólást!
  • "Valami paritás vagy ilyesmi téma?" Ez egy kérdés volt, nem állítás. Nem tudtok magyarul? Nem ismeritek a kérdőjelet?
    Ez csak flame, amit csináltok Úgyhogy ez például innentől nyelvtani hasfájás.

    Itt a 90% csak flammel nem ír semmi értelmeset. Hülyeségekbe köttök bele, de minek is? Nagy rakás unatkozó kókler

    Érdekes, ha felmegyek egy angol nyelvű fórumra, mindig van megoldás és szinte sosincs flame.
    Mutasd a teljes hozzászólást!
  • Mutasd a teljes hozzászólást!
  • "Mi van a paritással?" <- Az is egy nyelvtani hiba, nem ér beleflameelni
    Nemhogy inkább tanulnál a mestertôl :D -> http://prog.hu/tudastar/147200/Programinditas+bootolva.html
    Mutasd a teljes hozzászólást!
  • Mi van a paritással? (Akár az érkező, akár a visszatérő adatokat tekintve.)
    (De beszélhetsz arról is, hogy hogyan fejezed ki a kimenet terhelhetőségét voltban...)
    Mutasd a teljes hozzászólást!
  • vezérlő áramkör az nem ugyanaz mint a meghajtó


    Én tudom!
    A kérdező pc-ről akarja vezérelni, ehhez kell neki meghajtó, pl egy tranzisztor mező.

    Lövésed sincs az egészről


    Lehet.
    Épen ezért érdekelne, hogy mit akarsz/tudsz olvasni egy léptetőmotorról?
    Mutasd a teljes hozzászólást!
  • "Egyszerűen bemegy a BIOS-ba és megnézi melyik megszakítási címre van állítva a parallel port (LPT). Ha például LPT1-re akkor az IRQ 378h."

    Igen elismerem, ezt elírtam, mert belejvítottam az éjjel és nem vettem észre, hogy kimaradt egy jókora darab. Deutsch kis javított és igaza is volt/van.

    A többi meg mind nyelvtani flame. Nem fogok könyvet írni ide, minden kis flame bajnok örömére.

    Csak példaképp: a vezérlő áramkör az nem ugyanaz mint a meghajtó. Ha már kritizálsz valamit, legalább tudd, hogy mit irogatsz.
    Erről ennyit: "Valami borzalom amiket irkalsz."

    A többi az már olyan szintű, hogy arra nem is érdemes reagálni. Lövésed sincs az egészről

    További jó szórakozást!
    Mutasd a teljes hozzászólást!
  • Tételesen:

    Igen ehhez kell egy vezérlő áramkör

    Nem vezérlő, hanem meghajtó.


    Az viszont megoldható, hogy PIC-ét programozz be egy lpt porton keresztül pascallal.


    Ezt nem érteni...

    Ha komolyabban is érdekel a téma, akkor a fő probléma inkább az, hogy a nyomtatóból kiszerelt léptetőmotorokat hogy mérd be?


    Hogyan? És mi vele a probléma?

    Megjegyzem: a centronics motorok egész jók ilyen vezérlésekhez.


    Centronics motorok???

    Ha pascal keretprogram használatával asm-ben írná a programot, akkor megszakítással közvetlenül tud portot címezni


    Portot csak megszakításból lehet címezni?
    És írni lehet simán is?

    Egyszerűen bemegy a BIOS-ba és megnézi melyik megszakítási címre van állítva a parallel port (LPT). Ha például LPT1-re akkor az IRQ 378h.


    Ez ugye vicc.

    Mivel a léptetőmotorok általában 2 fokos (vannak még 1 fokos és fél fokasak is) szögelfordulással lépnek, elég sokat kell ahhoz szögfüggvényekkel számolni.


    Ez megint nettó b4romság.

    Ha csak 2 motort akarunk egyszerre szinkronban vezérelni, akkor még az RS-232.


    He?

    Azt azonban nem értem, hogy miért csak kiküldeni akar? Annak mi értelme? Mondjuk ledeket villogtatni jó, de léptetőmotort úgy nem lehet vezérelni, hogy csak kiküldesz adatokat.


    Mit akarhat az ember olvasni egy léptetőmotorról?

    Ha nem írsz megszakítás rutint a visszatérő adatoknak, hogy hozod szinkronba a motorokat?


    Mondjuk úgy, hogy szinkronban vezérlem őket...

    Valami paritás vagy ilyesmi téma?


    Ez már megint mi?
    Kevered a dolgokat nagyon...

    Leírtam már korábban mekkora fesz. mehet max.

    Most akkor megy vagy jön a fesz?

    Ha mégis tuti biztonságot akar, akkor biztosíték kell.


    Persze, mert az megvédi a félvezetőt...

    az érkező adatokat paritással ellenőrizni kell, csak ezután mehet ki, különben marhaságok lesznek.


    Az érkező adatok hova mehetnek ki?

    a visszatérő adatokat szintén ellenőrizni kell paritásra, hogy stimmel -e az adat.


    Ugyanaz mint az első pont?

    léptető motorok szinkronba hozása

    Az a vezérlés dolga...

    Csináltál már ilyet?

    Nem.

    Ha nem, akkor minek dumálsz és szólsz le bárkit is. Nagyon úgy tűnik nekem, azt se tudod miről van szó.


    Oké. bocsi
    Iszom az egészségedre
    Mutasd a teljes hozzászólást!
  • Akkor flame helyett. Írd le, hogyan csinálnád. Fejtsd ki bővebben szorgalmasan.
    Én azt tartom borzalmasnak, hogy semmi gyakorlati dolgot nem írkáltok csak flameltek. Megmodjátok a hülyeségekkel tarkított frankót. Csináltál már ilyet? Ha nem, akkor minek dumálsz és szólsz le bárkit is. Nagyon úgy tűnik nekem, azt se tudod miről van szó.
    Mutasd a teljes hozzászólást!
  • Valami borzalom amiket irkalsz.
    Teljes keptelenseg.
    Miért?
    Nincs rosszabb mint amikor a butaság szorgalommal párosul.
    Mutasd a teljes hozzászólást!
  • Ja hogy c-ben mondod! While ciklus. Így egy kicsit könnyeben el tudom már képzelni. Leragadtam kicsit az asm-nél, bocsesz.

    Egyébként itt konkrétan 2 dolgot kell megoldani.
    1: az érkező adatokat paritással ellenőrizni kell, csak ezután mehet ki, különben marhaságok lesznek.
    2: a visszatérő adatokat szintén ellenőrizni kell paritásra, hogy stimmel -e az adat. A visszatérő adatokat ezután comparálni kell a kimenő jelekkel. Így lehet megtudni, hogy fizikailag is megtörtént-e pontosan a művelet.
    Mindez azért fontos, mert enélkül nem lehet szinkronba hozni a motorokat.

    Az egyszerűség kedvéért nézzünk egy 2D-s példát, mire kell a léptető motorok szinkronba hozása:
    Ha akarunk húzni/vágni/marni/stb... egy ferde vonalat, például a 0 alappontból egy 45 fokos szöget bezáró egyenest, akkor az 'x' irányban meghajtó motornak pontosan annyit kell fordulnia, mint az 'y' irányt meghajtó motornak, egyidőben.
    Na ezt még tényleg nem nehéz leprogramozni, de mondjuk egy 3D hullámos vonal, már sokkal izgalmasabb, nespa?

    Ez már inkább mechatronika, mint lentebb is írtam.
    Mutasd a teljes hozzászólást!
  • Sima "mezei" egyenáramú motor? Hát az legfeljebb majd ki/be kapcsolja és kész Ilyen alapon inkább kössön rá ledeket és akkor fizikailag is látja mikor pilácsol. Ráadásul mivel egyben dióda is, nem kell félni hogy leégeti a portját Sőt nem kell semmiféle visszatérő adatokat vizsgálni sem

    Azért abban egyet értesz, hogy egy dióda csak egy irányban engedi át az elektronokat? Mit gondolsz, ha bemegy a porton a fesz, akkor ott miket kell védeni? Kis szines bigyókat?
    "portra meg egyszeruen csak nagyon kis fogyasztot szabad kotni"
    Ez meg aztán csudi jó egészen kis fogyasztó. 12 voltos-ra gondolsz? Már látom is ahogy elfüstöl. Leírtam már korábban mekkora fesz. mehet max.

    Egyébként ha dióda nem jó megoldás, csak addig, amíg kísérletezik.
    Viszont ott a link szépen megnézheti, hogy hol mennyi fesz. mehet max. Ha mégis tuti biztonságot akar, akkor biztosíték kell.

    Sőt, amit belinkeltem, ott van kódolás is, amivel lehet a parallel portot tesztelgetni, gyakorolni. Még ledeket sem rákötnie ehhez.
    Mutasd a teljes hozzászólást!
  • Arra gondoltam, hogy, ha mondjuk bejövő adatod van, akkor vagy onnan tudod, hogy az van, hogy egy while ciklussal figyeled a portot, hogy változott-e, vagy írsz egy megszakításkezelő rutint, ami automatán le fog futni, ha esemény van
    Mutasd a teljes hozzászólást!
  • Jol belelovalltad magad, de szerintem 'számtek órán' nyilván nem egy komplett step/dir vezerlest fognak csinalni, mima mezei egyenaramu motor lesz ez.

    (a dioda pedig a tekercsen kapcsolaskor jelentkezo negativ aramot 'veszi fel', hogy az ne tegye tonkre az azt meghajto tranzisztort, a portra meg egyszeruen csak nagyon kis fogyasztot szabad kotni)
    Mutasd a teljes hozzászólást!
  • Igaz bekevertem, kicsit előre szaladtam a gondolatmenetben;) kösz hogy kijavítottál portot akartam írni. Így nem ment félre a dolog legalább. Már összefolynak a dolgok egy maratoni kódolás után
    Meg már én is jó régen csináltam ilyet utoljára:)

    Azt nem is írtam, hogy nehezebb asm-ben, mint mondjuk c-ben. Szerintem az nem egyszerű hogy 3 motort vezérelj szinkronban, ami egy ívet ír le pl. Persze ez relatív. Van akinek könnyű, van akinek nehéz. Ha profi programozó lenne, tudná hogyan kell Lehet elbeszélünk egymás mellett

    "Csak a 0-ás ringben futó kód írhat portot, de a pascal program xp alatt egy 3-as ringben futó "emulátorban" fut. Így nem tudod írni a portokat pascal programból olyan egyszerűen."
    De azért szerinted is megoldható xp alatt, nem? Csak nem egyszerű. Én csak azt írtam, hogy lehet. Azt nem hogy pascalban is csinálnám. Ezt csak témaindító miatt írtam Tehát azzal, így nem értek egyet, "hogy nem fog sikerülni". Amúgy az io.dll jófelé visz, ebben igazatok van mindketőtöknek. Nem is értem minek ezen vitázni. Nem írtam, hogy az io.dll felejtős xp alatt.

    Azt azonban nem értem, hogy miért csak kiküldeni akar? Annak mi értelme? Mondjuk ledeket villogtatni jó, de léptetőmotort úgy nem lehet vezérelni, hogy csak kiküldesz adatokat.

    Ha már az IRQ bekerült a képbe véletlenül, biztos egy Frajdi elszólás volt
    "Ehhez a portszámhoz általában a 7-es IRQ tartozik." Ezzel meg te írtál butaságot. IRQ7-est más eszköz is használhatja. Pont ezért írtam, hogy nézze meg a BIOS-ban, hogy mi mire van állítva. (Most elkezdhetjük a flame partyt, hogy ki mire emlékszik/ír rosszul, ha gondolod De szerintem, nem érdemes, mert azért elég jól vágod miről van szó.)
    Szóval folytatva: "Az IRQ az az alacsony szintű rutin, ami lekezeli a port eseményeit." És nem az kell? Asm-ből indultunk ki. Alacsony szintű rutin kell a port kezeléshez, nem?

    A másik: "Akkor van értelme, ha nem akarsz figyelőrutint, ciklust írni, hanem írsz egy megszakítás rutint, ami lekezeli a bejövő adatokat." Ezt nem vágom mire gondolsz pontosan. Mit értesz figyelőrutin alatt? Írhatnám, hogy szerintem ez butaság, amit írtál, de flame helyett inkább kíváncsi vagyok mire gondoltál mert ez így nem teljesen világos. Mivel én még mindig asm-ből indulok ki, még szép hogy megszakítás rutin. Erről beszéltem, vagy mi? Ezzel eggyütt, azért roppant mód érdekelne mire gondoltál pontosan ebben a mondatban?

    Ha nem írsz megszakítás rutint a visszatérő adatoknak, hogy hozod szinkronba a motorokat? Ezért nem értem, mi akar lenni ez a figyelőrutin. Valami paritás vagy ilyesmi téma?

    "Szép idők voltak, jó rá visszagondolni."
    Hát igen, az még a hőskorban volt Ezért hát tényleg ne flameljünk. Úgyhogy mégegyszer, kösz hogy kijavítottál Máskor jobban figyelek Bagatel kis elírás, de egy kezdőt jól megzavarhat. Bocsesz

    A többit majd holnap, mert már tényleg kipurcanok Vagyis már ma
    Mutasd a teljes hozzászólást!
  • Az oprendszer felügyel mindent és nem engedi meg minden nyavajás programnak, hogy portokat meg memóriát írjon össze vissza, mert azzal a rendszer biztonságát veszélyeztetné, amellett vírusveszélyes is. Csak a 0-ás ringben futó kód írhat portot, de a pascal program xp alatt egy 3-as ringben futó "emulátorban" fut. Így nem tudod írni a portokat pascal programból olyan egyszerűen. Ehhez kell az io.dll, amit @sanya írt, ami nyit egy gate-et, amin keresztül már megoldható a dolog, de ez nem ide tartozik...

    A megszakítás és a port száma az nem ugyanaz. :D Butaságot írtál. Az IRQ az az alacsony szintű rutin, ami lekezeli a port eseményeit. Ez általában soros porthoz van használva (IRQ 4), hogy a modem, stb. kommunikációk kezelje és helyet csináljon a pufferban. A 0x378 az a port száma, ahová a biteket küldöd. Ehhez a portszámhoz általában a 7-es IRQ tartozik. Akkor van értelme, ha nem akarsz figyelőrutint, ciklust írni, hanem írsz egy megszakítás rutint, ami lekezeli a bejövő adatokat. Itt a srác csak kiküldeni akar egyelőre, így neki ez nem kell.

    Amúgy semmivel sem nehezebb asm-ben megírni, mint pascalban, én C-ben meg C++-ban és asmben programoztam főleg ilyeneket annak idején. Sok dolog sokkal jobban kézre is esik, amikor bináris adatot írogatsz meg bitműveleteket csinálsz, mint pascalban. Arról nem is szólva, hogy aztán jönnek majd az AVR-ek és az ARM-ek, ott meg C lesz meg ASM.
    Szép idők voltak, jó rá visszagondolni.
    Mutasd a teljes hozzászólást!
  • Ezzel így nem értek egyet. Ha pascal keretprogram használatával asm-ben írná a programot, akkor megszakítással közvetlenül tud portot címezni. Egyszerűen bemegy a BIOS-ba és megnézi melyik megszakítási címre van állítva a parallel port (LPT). Ha például LPT1-re akkor az IRQ 378h.
    Ahogy Deutsch is írta, van lehetősége 25 lábas LPT csatiból 8 szálat adat küldésre felhasználni (a másik nyolc a föld hozzá). Ezenkívül még további 4 port áll rendelkezésre. Ezen lehet vezérelni állapotbitet (statusbit) és még 5 porton mennek a kontrollbitek.
    Ha jól emléxem technikailag a vezérléshez:
    A magas szint, amikor 1-est küldesz porton 4.5 és 5 volt között van. Az alacsony szint, amikor 0 értékű bit megy a porton 0 és 0,5 volt között kell lennie. (Lehet, hogy az alacsonyszint 0,5 és 1,5 volt között van, erre most hirtelen nem emléxem, de be lehet mérni könnyen;))

    Rajzolni ide most nem fogok, de itt egy link, ahol jól látható a képen, hogy melyik láb hova van kiosztva.

    Parallel port kiosztása

    Megjegyzem, azért egy ilyen programot írni assemlyban nem egyszerű. Mivel a léptetőmotorok általában 2 fokos (vannak még 1 fokos és fél fokasak is) szögelfordulással lépnek, elég sokat kell ahhoz szögfüggvényekkel számolni. Könnyebbség viszont, hogy nincs szükség 1 motor vezérléséhez 8 bit szélességre. Ez igen jól tud jönni, mert dimenziónként legalább 1 motort kell vezérelni. Ami még nyalánkság, hogy a motorok vezérlésének szinkronban kell lenniük. Ha csak 2 motort akarunk egyszerre szinkronban vezérelni, akkor még az RS-232. A régi soros port is alkalmas a feladatra.

    Ha azonban megküzdesz ezekkel a problémákkal több 100e értékű plottert is készíthetsz magadnak. Sok szerencsét hozzá
    Mutasd a teljes hozzászólást!
  • Ha DOS, win98 vagy annál is régebbi oprendszer van a gépeden, akkor egyszerű, de másképp nem fog sikerülni.
    Ha windows alatt akarod matatni a portot, keress rá az io.dll-re google-n, azzal nagyon egyszerű dolgod lesz, az bármilyen windows alatt tud LPT-t vezérelni. Van egy jópár megoldott témám LPT-vel kapcsolatban, nézd meg őket.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd