Jste zde

Sérioparalelní CENTRONIX rozhraní k jednočipům x51

Popisované zapojení slouží jako rozhraní mezi obecným mikroprocesorovým systémem a standardní

tiskárnou - elektricky odděluje signály tiskárny a všechny je multiplexuje do jednoduché osmibitové sběrnice pro

mikropočítač.

Paralelní rozhraní umožňuje připojení všech tiskáren se standardním rozhraním Centronix a jejich plné ovládání. Datové vodiče přes IO1 a řídící signály přes IO2 jsou připojeny přímo na konektor pro připojení tiskárny - K2. Stavové bity  tiskárny jsou z konektoru K2 čteny přes oddělovací obvod IO3 vedeny na datovou sběrnici. 
Interface se ovládá pomocí 3 vodičů., připojených na další piny konektoru K1 – procesorová deska. Jedná se o čipselekty tří oddělovačů – PDT (datová sběrnice), PRO (řídící sběrnice) a PST (stavové bity) jsou vybírány z CPU například pomocí dekodéru 74138, který není součástí popisovaného interface. Řídící a stavové signály odpovídají svým umístěním v registrech jako v PC, což by mělo usnadnit práci autorům SW. Signál RESET nuluje datový a řídící registr. Řídící registr je nutné nastavit na správnou hodnotu ihned po spuštění z mikroprocesoru.

Jako oddělovače jsou použity standardní TTL obvody :

  • 74273 – 8. bitový klopný obvod D s nulováním
  • 74174 – 6. bitový klopný obvod D s nulováním
  • 74244 – 2x 4. bitový neinvertující buffer 

Sériové rozhraní je pro připojení k PC, nebo jakémukoliv zařízení se standardním rozhraním RS232. Umožňuje přenos jak XON/XOFF, tak i CTS/RTS. Rozhraní je tvořeno obvodem IO4 MAX232, který zajišťuje tvorbu potřebného napětí ± 12V a převod úrovní signálů. Signály RxD a TxD jsou připojeny na porty P3.0 a P3.1 a signály RTS a CTS na libovolné volné piny procesoru x51. Konektor pro připojení RS 232 tiskárny - K3 je zapojen jako  9 pinový CANON rozhraní RS232.

Konektor K1 slouží pro připojení desky rozhraní k desce CPU. Je důležité, aby velké pájecí plošky pod konektory K2 a K3 na návrhu plošného spoje nebyly připojeny na nulový vodič napájení. Je vhodné je připojit na zemnící vodič. Vše záleží na provedení napájecího zdroje celého zařízení. Celá destička je dost malá, takže ji udrží na boční stěně zařízení jen šroubky konektorů K2 a K3.

Bohužel zde není vyveden signál ACK na interrupt, jako je to u PC paralelního rozhraní. Pokud si někdo napíše program pro komunikaci po paralelním kabelu (pouze po čtyřech bitech, jako u přenosu PC-PC po paralelním rozhraní) je to možné. 
V sekci DOWNLOAD najdete kompletní podklady pro výrobu plošných spojů v .PDF souboru.

Toto rozhraní bylo navrženo pro připojení jakékoli tiskárny na měřící zařízení a pro komunikaci tohoto zařízení s nadřízeným počítačem (k čemuž lze elegantně využít osazeného RS232 převodníku).

Rozpiska součástek:

 IO1      74273
 IO2      74174
 IO3      74244
 IO4      MAX232
 C2-C6    keramika M1
 C1       10M/25V 
 C7,8,10  10M/6,3V
 C9,11    10M/16V
 C12-C19  keramika 47p
 K1       MLW20G
 K2       CAN25Z90 
 K3       CAN9V90


DOWNLOAD


centronix_interface_doc.pdf- Kompletní výrobní dokumentace k tomuto rozhraní.
 
 

Rutina pro tisk znaku a řetězce s použitím interface



unsigned char xdata RPRT;    // adresa cteni z ridiciho registru
unsigned char xdata DPRT;    // adresa zapisu do datoveho registru
unsigned char xdata WPRT;    // adresa zapisu do ridiciho registru

// TISKARNA
#define PINIT  0x004  // signal INIT tiskarny
#define PSLCT  0x010  // signal SLCTIN tiskarny
#define PFEED  0x002  // signal AUTOFEED tiskarny
#define PSTROBE  0x001  // signal STROBE tiskarny

#define PERROR  0x040  // signal ERROR tiskarny
#define PSELECT  0x008  // signal SELECT tiskarny
#define PPE  0x080  // signal PE tiskarny
#define PACK  0x010  // signal ACKNLG tiskarny
#define PBUSY  0x020  // signal BUSY tiskarny
#define PTIME  500  // cekani na ready tiskarny 0.5s

char tiskni(char znak)
 {
 citac=PTIME; // 0.5 s cekani na tiskarnu 
  // čítač je dekrementován v přerušení od čítače č. 1 rychlostí 1 kHz
 while (RPRT&PBUSY) // cekej na busy==0
    {
     if (citac==0)
       return(-1); // tiskárna ani po 0,5 s nebyla připravena přijmout znak
  }
 DPRT=znak; // posli na port znak
 WPRT=prtr^PSTROBE; // posli strobe (prtr je proměnná uchovávající stav řídícího registru)
 WPRT=prtr; // zrus strobe
 return (0); // tisk proběhl OK
 }

char tisks(char *retez)
 {
 char pp,i;
 pp=strlen(retez);
 for (i=0;i<pp;i++)
  {
   if (tiskni(retez[i])!=0)
      return(-1);
  }
 return (0);
 }


Napsal : Hůďa
Upravil a doplnil : Jan Řehák
Hodnocení článku: