 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
fricky Član


Pridružen-a: Pon 22 Sep 2003 15:37 Prispevkov: 260 Aktiv.: 1.09 Kraj: Ribniško Pohorje
|
Objavljeno: Ned Mar 18, 2007 5:36 pm Naslov sporočila: LPC2103 UART težava |
|
|
Želim pošiljat tekst na UART1 z LPC2103, spodnji program nekaj pošilja ampak dobim le neke čudne kvake.Računam narobe baud rate? (9600,8,none,1,none)
koda:
Koda: |
#include "LPC2103.h"
#define TX_BUFSIZE 80
static unsigned char txbuf[TX_BUFSIZE];
static unsigned char txptr = 0;
static unsigned char typtr = 0;
int a;
void UART1_Init(void)
{
// Fpclk = 14.745.600 MHz
// DLM,DLH = (Fpclk/4) / (9600*16) = 0x18
PINSEL0 |= 0x00050000; // Select UART1 RXD/TXD
U1FCR = 7; // Enable and clear FIFO's
U1LCR = 0x83; // 8N1, enable Divisor latch bit
U1DLL = 0x18; // baud rate fixed to 9600 @ PCLK = 14,7456 Mhz
U1DLM = 0;
U1LCR = 3; // Disable Divisor latch bit
}
static void SendString(char *text)
{
if (txptr == 0) // previous message send ?
{
typtr = 0;
while(*text)
{
txbuf[txptr++] = *text++;
if(txptr >= TX_BUFSIZE)
txptr = 0;
}
}
}
static void UART1_Tx_Int(void) // Called from the main loop
{
char i = 16;
if (U1LCR && 0x20) // transmit FIFO empty ?
{
while (i && txptr)
{
U1THR = txbuf[typtr++];
txptr --;
i --;
}
}
}
int main (void)
{
UART1_Init();
while (1)
{
SendString("Hello magnificent world of the LPC2000\r\n");
for (a=0;a<500000;a++);
UART1_Tx_Int();
}
} |
|
|
Nazaj na vrh |
|
 |
alessio Član

Pridružen-a: Pon 04 Dec 2006 8:39 Prispevkov: 363 Aktiv.: 1.60 Kraj: Ljubljana
|
Objavljeno: Ned Mar 18, 2007 10:18 pm Naslov sporočila: |
|
|
Nastavitve za baud rate 9600 so pravilne za fclk 14.7456MHz. Kakšno vrednost
kristala pa imaš na tiskanini? A je mogoče 12MHz?
Aleš |
|
Nazaj na vrh |
|
 |
fricky Član


Pridružen-a: Pon 22 Sep 2003 15:37 Prispevkov: 260 Aktiv.: 1.09 Kraj: Ribniško Pohorje
|
Objavljeno: Ned Mar 18, 2007 10:32 pm Naslov sporočila: |
|
|
quartz je 14,7456 MHz prav iz tega sem delal izračune.Testiral na treh različnih terminalih.Zaenkrat brez uspeha.Če spreminjam baud rate v terminalu se tudi podatki ki jih dobim spreminjajo, vendar nič uporabnega |
|
Nazaj na vrh |
|
 |
alessio Član

Pridružen-a: Pon 04 Dec 2006 8:39 Prispevkov: 363 Aktiv.: 1.60 Kraj: Ljubljana
|
Objavljeno: Pon Mar 19, 2007 8:43 am Naslov sporočila: |
|
|
Ali mogoče v startup.s ali crto.s omogočiš PLL? |
|
Nazaj na vrh |
|
 |
bostjang Član

Pridružen-a: Tor 03 Jan 2006 15:29 Prispevkov: 3473 Aktiv.: 14.63 Kraj: Postojna
|
Objavljeno: Pon Mar 19, 2007 9:49 am Naslov sporočila: |
|
|
Verjetno si pozabil upoštevati VPB Divider. Poglej v setup.s (če imaš Keil). Pri izračunu moraš upoštevati pclk, kot si napisal. Ni pa nujno, da je enak Fosc. Pri Keil uVision je privzeto M = 5, VPBDIV = 4. Torej imaš baud rate za 25 % prevelik, če nisi nič nastavljal.
pclk = cclk / VPBDIV (privzeto je 4)
cclk = Fosc * M (Keil privzeto je 5) |
|
Nazaj na vrh |
|
 |
fricky Član


Pridružen-a: Pon 22 Sep 2003 15:37 Prispevkov: 260 Aktiv.: 1.09 Kraj: Ribniško Pohorje
|
Objavljeno: Tor Mar 20, 2007 3:52 pm Naslov sporočila: |
|
|
Prav sta imela, to je bilo krivo in pa to da prvič uporabljam UART
Hvala! Zdaj dela |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 6 dni
Powered by phpBB © 2001, 2005 phpBB Group
|