AT89C2051 + seriova komunikace

zoodiskus@mbox.vol.cz zoodiskus
Středa Březen 17 12:03:11 CET 2004


Tak jsem nasel problem o kterem jsem psav v "Ovladani serioveho portu ve Visual C++"
Jakmile v PC otevru seriovy port je TX (tj. RX na AT89) nastaven z 0 na 1, to je celkem OK a 
pokud nasleduje nejaka komunikace vse funguje. Problem nastane v okamziku  kdy 
zavru port tehdy dojde k zmene TX z 1 na 0 a AT89 prestane reagovat ( tj. pri pokusu o komunikaci je jiz tato bez odezvy ).
Je celkem jedno zda po otevreni portu dojde ke komunikaci nebo port ihned uzavru. Zkratka pokud se pri zavreni portu zmeni Rx na AT89
z 1 na 0 AT89 zatuhne.


Komunikace je  v AT 89 resena takto (komunikace 19200, Q=11.059):

nastaveni

void com_initialize (void)	        // inicialise serial
{
INT_DISABLE;

PCON  = SMOD_;				/* 0x80=SMOD: set serial baudrate doubler */
SCON  = 0x50;    		        /* setup serial port control SM0 = 0; SM1 = 1; REN=1 */
TMOD |= 0x20;  			        /* TMOD: timer 1, mode 2, 8-bit reload */
TH1   = 0xFD;      		        /* TH1: FD reload value for 19200 baud @ 11.059MHz */
TR1   = 1;                 		/* TR1:  timer 1 run */
ES    = 1;				/* enable serial interrupts */
PS    = 0;				/* set serial interrupts to Hi priority */

r_in  = 0;		
INT_ENABLE;
}

obsluha preruseni

static void com_isr (void) interrupt 4 using 2	// interrupt service for S1
{
if (RI != 0)
  {
   RI = 0;
   buff[r_in++] = SBUF;				
  }

if(r_in==10)					// po prijeti 10 bytu nastavi packet_rec flag 
  {
   r_in=0;
   p_rec=1;
  }
}

Hlavni smycka nedela nic a ceka na rijem 10 bytu, pote vyhodnoti jejich platnost,zda jsou urcena prave tomuto modulu a
pak teprve neco dela.

Napada nekoho v cem by mohl byt problem ???



Velmi dekuji

		Novotny


P.S. Program Portmon nastavi pri svem spusteni Tx na 1 a i pri jeho vypnuti zustane Tx 1 coz je duvod proc mi to z Portmonem chodi.
     To ze Tx zustava na 1 je take asi duvod proc nelze PC po pouziti Portmonu uspat.

 





Další informace o konferenci Hw-list