www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

LPC2103 UART težava

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
fricky
Član
Član



Pridružen-a: Pon 22 Sep 2003 15:37
Prispevkov: 260
Aktiv.: 1.10
Kraj: Ribniško Pohorje

PrispevekObjavljeno: Ned Mar 18, 2007 5:36 pm    Naslov sporočila:  LPC2103 UART težava Odgovori s citatom

Ž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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
alessio
Član
Član



Pridružen-a: Pon 04 Dec 2006 8:39
Prispevkov: 363
Aktiv.: 1.60
Kraj: Ljubljana

PrispevekObjavljeno: Ned Mar 18, 2007 10:18 pm    Naslov sporočila:   Odgovori s citatom

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
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
fricky
Član
Član



Pridružen-a: Pon 22 Sep 2003 15:37
Prispevkov: 260
Aktiv.: 1.10
Kraj: Ribniško Pohorje

PrispevekObjavljeno: Ned Mar 18, 2007 10:32 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
alessio
Član
Član



Pridružen-a: Pon 04 Dec 2006 8:39
Prispevkov: 363
Aktiv.: 1.60
Kraj: Ljubljana

PrispevekObjavljeno: Pon Mar 19, 2007 8:43 am    Naslov sporočila:   Odgovori s citatom

Ali mogoče v startup.s ali crto.s omogočiš PLL?
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
bostjang
Član
Član



Pridružen-a: Tor 03 Jan 2006 15:29
Prispevkov: 3472
Aktiv.: 14.63
Kraj: Postojna

PrispevekObjavljeno: Pon Mar 19, 2007 9:49 am    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
fricky
Član
Član



Pridružen-a: Pon 22 Sep 2003 15:37
Prispevkov: 260
Aktiv.: 1.10
Kraj: Ribniško Pohorje

PrispevekObjavljeno: Tor Mar 20, 2007 3:52 pm    Naslov sporočila:   Odgovori s citatom

Prav sta imela, to je bilo krivo in pa to da prvič uporabljam UART
Hvala! Zdaj dela
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
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: 5 dni


Powered by phpBB © 2001, 2005 phpBB Group