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);
}