MCU-UART0-UART1

Başlatan armsistem, 18 Haziran 2011, 19:38:09

armsistem

Arkadaşlar selam ; UART için çalışan kodlar aşağıdadır,  lakin üstadlar bir kaç sorum var.

- UART'a veri gönderdiğimiz kod.
int putchar (int ch) 			  /* Write character to Serial Port    */
{                  		
  if (ch == '\n')  {
    while (!(U1LSR & 0x20));
    U1THR = CR;              	   /* output CR */
  }
  while (!(U1LSR & 0x20));
  return (U1THR = ch);
}


- Okuma yaptığımız kod.

int getchar (void) 				/* Read character from Serial Port   */
{                    
  while (!(U1LSR & 0x01));
  return (U1RBR);
}



- Benim istediğim iki pc 'yi UART üzerinden konuşturmam lpc2365 ile yapmayı düşündüm PC-UART0 , c#.net üzerinden yaptığım program çalışıyor ; veri alıp gönderebiliyorum ,problem yok. PC-UART1 yine problem yok programım çalışıyor (KISMEN , her ikisinde de gönderdiğim veriyi okuyabiliyorum.) LPC2365(UART0-UART1)--> PCUART0 --> PCUART1
(LPC2365 + 2 PC) beraber kullanamadım UART1 (RX) veri gönderdiğim şifre '5354' UART1 (TX) aldğım veri '8765' olucak. UART1 (TX) aldığım veriyi tekrar UART0 (RX) göndericem UART0 (TX) 'FALSE' gelicek. - TX ve RX 'ten gelen veriyi if ile sorgulayamıyorum.ÜSTADLAR YARDIMLARINIZI BEKLİYORUM.




-Aşağıdaki kod UART için örnek onlarda çalışıyor.   



void u1_karakter_gonder (char ch){
while (!(U0LSR &0x20));
U0THR=ch;}


void u1_string_gonder(const char *ch){
while(*ch)
u1_karakter_gonder(*ch++);}









/*************************************************************/
/* PROJECT NAME: UART	                                    */
/* Project:      LPC2100 Training course                    */
/* Engineer:     T Martin      tmartin@hitex.co.uk          */
/* Filename:     main.c                                     */
/* Language:     C                      	                */
/* Compiler:     Keil ARM	V2.00b		                    */
/* Assembler:    				                            */
/*                                                          */
/************************************************************/
/* COPYRIGHT: Hitex UK Ltd 		2005						*/
/* LICENSE:   THIS VERSION CREATED FOR FREE DISTRIBUTION	*/
/************************************************************/
/* Function:                                                */
/*                                                          */
/* Example           							  			*/
/*															*/
/* 			Demonstrates RS232 Comms						*/
/*															*/	
/* Oscillator frequency 12.000 Mhz							*/
/* Target board Keil MCB2100								*/
/************************************************************/
#define CR     0x0D
#include <LPC21xx.H>
void init_serial (void);
int putchar (int ch);
int getchar (void);


unsigned char test;
int main(void)
{
VPBDIV = 0x02;						//Divide Pclk by two
init_serial();
while(1)
{
putchar(getchar());					//Echo terminal
}
}
void init_serial (void)			  	/* Initialize Serial Interface       */
{               	   
  PINSEL0 	= 0x00050000;         	/* Enable RxD1 and TxD1              */ 
  U1LCR 	= ;         			/* 8 bits, no Parity, 1 Stop bit     */
  U1DLL 	= ;         			/* 9600 Baud Rate @ 30MHz VPB Clock  */
  U1LCR 	= ;			        	/* DLAB = 0                          */
}

int putchar (int ch) 			  /* Write character to Serial Port    */
{                  		
  if (ch == '\n')  {
    while (!(U1LSR & 0x20));
    U1THR = CR;              	   /* output CR */
  }
  while (!(U1LSR & 0x20));
  return (U1THR = ch);
}
int getchar (void) 				/* Read character from Serial Port   */
{                    
  while (!(U1LSR & 0x01));
  return (U1RBR);
}