UART1 подключается к компу через стандартную плату с FTDI когда отдельнго проверяю работу UART1 все отлично, идут пакеты, все работает, когда подключаю FTDI к USB порту, сигнал на вход RX FTDI пропадает(проверяю осцилографом) если через терменал непрерывно передавать на FTDI символы, то сигнал на RX снвова появляется, RX и TX не перепутаны. код инициализации UART1 и работы с ним:
#include <UART.h> //STACK OPERATIONS&UART unsigned int temp; int flag; void init_uart(){ PINSEL0|=(1<<16)||(1<<18);//(TXD UART1, RXD UART1) /* Enable FIFO's and reset them */ U1FCR=0x7; /* Enable DLAB(7 bit -> 1), set word length set to 8bits(bits"0","1"->11), */ U1LCR=0x83; /* Baud rate set to 9600 */ U1DLL=0x8e; U1DLM=0x0; /* Clear DLAB */ U1LCR=0x3;
} int push(char OpNum) { int temp=ptIN+1; if(temp==FIFO_Size){temp=0;} if(ptOUT==temp) return 0 ; else { FIFO[ptIN]=OpNum; ptIN=temp; return 1; } } unsigned char pop() { unsigned char OpNum; int temp=ptOUT+1; if (temp==FIFO_Size){temp=0;} if(ptIN==ptOUT) return(0); else { OpNum=FIFO[ptOUT]; ptOUT=temp; return(OpNum); } } int check() { if(ptOUT>ptIN) return(ptOUT-ptIN); else return (ptIN-ptOUT); } void AutoSent(void) { while(check()) { U1THR=pop(); while(!(U1LSR & TEMT)){}; } } void UART1SendStr(char const *Str) { while( *Str) { flag=push(*Str++); if(!flag) break; } while(!U1LSR&TEMT){}; AutoSent(); } //STACK OPERATIONS&UART
|