Fórum témák

» Több friss téma
Fórum » LPT vezérlés... Másképpen
Lapozás: OK   3 / 3
(#) Zoli_bácsi válasza szabics hozzászólására (») Dec 19, 2008 /
 
Igen, a BIOS alapállapotba hozza. Csak hogy ne kelljen kikapcsolni a gépet. Akkor az a verzió maradna, hogy kívülről fogok definiálni egy alapállapotot. Mondjuk mind 0. Kapcsolókkal, vagy a kapcsolókkal párhuzamosan kötött vezérlő IC-vel. Elképzelhető, hogy négy bemenetet használok, s akkor ABCD bináris adat kell az alapállapothoz.
(#) szabics válasza Zoli_bácsi hozzászólására (») Dec 19, 2008 /
 
a diódátés invertert nem nagyon értem a rajzon. A többit igen.
ha bekapcsolod a gépet az egy alap. miért nem jó az az alapnak? Van valami oka?
(#) Zoli_bácsi válasza szabics hozzászólására (») Dec 19, 2008 /
 
A negáció kiegyenlítésére, de látom rosz helyre raktam. a 15-ös és 10-es lábra kell tennem. A dióda nem kell.

Szeretnék egy független reset-et is, ezért kellen alapállapot a gép bekapcsolásától függetlenül. Ha valami gond van. Csak biztonsági okokból.
(#) szabics válasza Zoli_bácsi hozzászólására (») Dec 19, 2008 /
 
ha szabad javasolnom a következő megoldást: 10 láb kimemte erer egy 100 Ohmos ellenállás a másik végén egy optocsatolóban lévó tranyó kollektorára megy, a tranyó kollektora pedig a negatívra . Az optócsatoló bemeneti diódát pedig hajtahatod H vagy L szinttel . Azokkal én sorbaszoktam rakni egy ledet ami jelzi a port illetve a kapcsoló állapotát. is. Igy a port védve van.
(#) szabics válasza szabics hozzászólására (») Dec 19, 2008 /
 
a 15 lábra edig úgy van kötve hogy a tranyó emitter a soros elelnálláson keresztül a portra a kollektor pedig a + ra. A többi ugyanaz. Az a reset mit resetelne? az előzős hozzászólásban javitanék.
a kollektor egy ellenáláson keresztül a portra az EMITTER a negatívra
(#) Zoli_bácsi válasza szabics hozzászólására (») Dec 19, 2008 /
 
Értem. Persze ez csak elméleti rajz. Akarod mondani a 10 láb kimentre egy egy 100 Ωos ellenállás a másik végén egy optocsatolóban lévó tranyó kollektorára megy, a tranyó emittere a negatívra. Ezt minden bemenetnél természetesen így oldanám meg. Ahol negálni kell, ott egy invertert használnék, hogy a kapcsolók mindegyike pozitív logikájú legyen.

Pascalban programoztál LPT?
(#) szabics válasza Zoli_bácsi hozzászólására (») Dec 19, 2008 /
 
Évekkel ezelőtt , most a basic-l játszom Kaptam egy basic interpertter tartalmazó I8052 -t é pic-t. Ebből adódóan a pc-n futó programokat is abban iogatom. De ha tudok segitek: mit akarsz resztelni a resettel?
(#) Zoli_bácsi válasza szabics hozzászólására (») Dec 19, 2008 /
 
Ez először csak egy port kártya lenne, nincs kitalálva semmihez, amit vezérelne. Úgymond univerzális eszköz. Azért gondoltam a reset funkcióra a bemeneten, hogy ha bármi gond adódik a vezérlés alkalmával, ismét alapállapotba lehessen hozni a bemeneteket. Teszt céljából sem lenne egy utolsó dolog, mondjuk a fejlesztés alkalmával, lenne egy reset funkció. Így nem kéne kikapcsolni a gépet.
(#) malterdj hozzászólása Márc 18, 2012 /
 
Üdvözletem. Kaptam egy elég érdekes feladatot. Van egy elég régi LPT portra tervezett panel, ami lámpák fel és lekapcsolását hivatott végezni. Működését tekintve először egy 74138-as nak egy jelet, hogy melyik lábára megy az utasítás, utána egy 74259-es-nek ad utasítást a tárolásra, eldobásra, végül egy 7406-os elosztja, hogy melyik lámpát kapcsolja (pontosabban annak a nulláját) és felkapcoslódik a lámpa. Eddig jó is volna, de random módon mást is kapcsol. De csak néha. Nincs valakinek valami tippe? Amiket megpróbáltam:
-csináltam egy olyan lábat, ami nem végez semmit, ha arra megy jel és az felkapcsolva beállítani az összes lábat és lekapcsolni
-próbáltam alapállapotba hozni a portot és utána kiküldeni az utasítást
-ennek a kettőnek a kombinációja
-a parancs után üres jelet kiküldeni
-BIOS-ban kipróbált módok: ECP, EPP, Bi-directional, Printer (nincs több lehetőség)
Ami zavar az egészben, hogy csak néha jön ki a hülyesége.
Csatolom a kódot is:
  1. #include <stdio.h>
  2. #include <windows.h>
  3. #include <iostream>
  4. #include <sstream>
  5. using namespace std;
  6. typedef short _stdcall (*inpfuncPtr)(short portaddr);
  7. typedef void _stdcall (*oupfuncPtr)(short portaddr, short datum);
  8.  
  9. int str2int (const string &str) {
  10.  stringstream ss(str);
  11.  int n;
  12.  ss >> n;
  13.  return n;
  14.  }
  15.  
  16. int main(int argc, char *argv[])
  17. {
  18.      HINSTANCE hLib;
  19.      inpfuncPtr inp32;
  20.      oupfuncPtr oup32;
  21.      short x;
  22.      int i;
  23.      hLib = LoadLibrary("inpout32.dll");
  24.      if (hLib == NULL) return -1;
  25.      inp32 = (inpfuncPtr) GetProcAddress(hLib, "Inp32");
  26.      if (inp32 == NULL) return -1;
  27.      oup32 = (oupfuncPtr) GetProcAddress(hLib, "Out32");
  28.      if (oup32 == NULL) return -1;
  29.  
  30. i=0x378;
  31. int xx,be;
  32.  
  33. if (argc>1){
  34. xx=str2int(argv[1]);
  35.     be = inp32(i);
  36.     be+=64;
  37.     (oup32)(i,be);
  38.     (oup32)(i,64);
  39.     Sleep (500);
  40.     (oup32)(i,xx);
  41. }
  42. FreeLibrary(hLib);
  43. return 0;
  44. }


Kötését tekintve úgy működik, hogy
1. adatláb: nincs bekötve
2. adatláb: 74138-as (melyik 74259-es van vezérelve)
3. adatláb: 74259-es (tárol/töröl)
4-6. adatláb: 74259-es (melyik lába legyen programozva)
7. adatláb: 74138-as (úgymond az üres állapotért)

A válaszokat előre is köszönöm.

Ja és 16 lámpát kell kapcsolni.
(#) Medve válasza malterdj hozzászólására (») Márc 18, 2012 /
 
Hello, úgy tűnik, zavart szed fel. Én kondenzátorokat tennék az adat és órajel és táp vonalakra a test felé, először 100pF-ot.
(#) malterdj válasza Medve hozzászólására (») Márc 18, 2012 /
 
Köszönöm a válaszod. Van egy 10 mikroF-os (nem tudom, hogy gépeljem a mikro-t) kondi a testen. Van reális esélye, hogy megdöglött?
(#) Medve válasza malterdj hozzászólására (») Márc 18, 2012 /
 
Jobb híján használj u betűt. Jó olyan is oda, de legyenek kisebb kapacitások is.
(#) zombee hozzászólása Jún 30, 2012 /
 
Sziasztok!

Új(de inkább régi-új) vagyok az LPT témában, most pedig egy kis problémába futottam bele.
Saját terv alapján építettem egy olyan átalakítót, amit rá lehet dugni egy PC LPT portjára, a másik oldalon
pedig RS-232-n(pontosabban egy USB-s COM port emulátoron) küldi át a nyomtatandó karaktereket.

A dolog háttere, pontosabbam értelme az, hogy van egy ipari gyártósori gép aminek szintén
LPT portja van, és arra egy mezei párhuzamos(Centronics-szabványú) nyomtató van rádugva.
A papírtekercsre a gyártott készülék paramétereit, hibáit(akár 100-200 soros is lehet!) nyomtatja ki.
Sokszor a lista legvégén olvasható a valódi hibaok, ennek kivárása nagyon fárasztó, ezért építettem a cuccot.

Ez működik PC-n(TeraTerm ablakban szépen megjeleníti a nyomtatandó szöveget), de sajnos
az ipari gép már nem ilyen véleményen van, mivel pár karakter "kinyomtatása" után kifagy a nyomtatóportja.
A gép egyébként hibátlan, mivel a régi sornyomtatóval továbbra is együttműködik és nyomtat vele.

Én arra gondolok hogy a jeleket nem jól használja, nem jó sorrendben vagy valami hasonló.
Hardver: egy ATMega168-ra vannak a legfontosabb vonalak kötve, ez D0-D7, /strobe, /ack, busy.
Amikor kap egy karaktert, EZT a sorrendet követem. A busy jel alatt küldöm el a karaktert a soros porton, majd ezután nyugtázom(ack). A többi státuszvonal(/error, paper end, select out) a földre vagy a tápra van kötve, az alapján hogy hol kell lenniük hogy a gép azt higgye, működő nyomtatóval van dolga. Egy kis érdekesség, PC-nél nem kell ACK, a BUSY elég neki, a tesztgép viszont megkívánja mindkettő használatát.

A soros port 9600kbps, tehát egy karakter kb. 1ms alatt megy át, míg a nyomtató soremelés nélkül
kb. 20-30ms alatt nyomtat ki egy karaktert. Lehet probléma az, hogy a nyomtatóm túl gyors?
Következő: »»   3 / 3
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem