Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => ARM7 Mikrodenetleyici => Konuyu başlatan: armsistem - 18 Haziran 2011, 19:38:09

Başlık: MCU-UART0-UART1
Gönderen: armsistem - 18 Haziran 2011, 19:38:09
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);
}