Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => ARM7 Mikrodenetleyici => Konuyu başlatan: fatal1ty - 18 Ocak 2009, 22:32:48

Başlık: lpc2103 Sorunlarım...
Gönderen: fatal1ty - 18 Ocak 2009, 22:32:48
Selamlar arkadaşlar, şubat tatiindeki 2haftalık süre içinde arm7 ile uğraşacağım, en başta uart, timer kesmeleri ve I2C olmak üzere uğraşmayı düşünüyorum.Sorunlarımı da buradan yazayım. En son ise en basit şekilde butün yazdığım programları buraya koymayı düşünüyorum. Yardımcı olursanız sevinirim...

Proteusta lpc2103'ü çalıştırıyorum; led işlemleri falan ile başladım.
Şimdi UART ile uğraşıyorum. Fakat proteusta bir türlü deneyemedim. Virtual terminal kullanıyorum. Fakat birşey gelmiyor. Osiloskop ilede bakayım dedim TX bacağına fakat birşey çıkmıyor.

Kullandığım kod aşağıda. Sizce sorun nerededir? Proteustan lpc'ye sağ tıklayıp 30mhz'ye ayarladım.

Şimdiden teşekkür ederim, iyi  çalışmalar...




#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('A'); //Echo terminal
}
}

void init_serial (void)  /* Initialize Serial Interface       */
{                
 PINSEL0 = 0x00050000;         /* Enable RxD1 and TxD1              */
 U1LCR = 0x00000083;         /* 8 bits, no Parity, 1 Stop bit     */
 U1DLL = 0x000000C2;         /* 9600 Baud Rate @ 30MHz VPB Clock  */
 U1LCR = 0x00000003;        /* 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);
}

Başlık: lpc2103 Sorunlarım...
Gönderen: Analyzer - 18 Ocak 2009, 22:58:17
Selam,

Aslında Keil'in MCB kartlarının örnekleri çalışıyor örnekler klasöründe ama tekrar vereyim. VT'nin RXD P0.8 ve TXD P0.9 pinine bağlı. Kullandığım işlemci LPC2138, PINSEL0 = 0x00050000; satırıyla pinler ayarlanabilir.
Kolay gelsin,

Analyzer


#include <LPC21xx.H>                     /* LPC21xx definitions               */
#define CR     0x0D

void init_serial (void)  {      /* Initialize Serial Interface       */
 PINSEL0 = 0x00050000;            
 U1LCR = 0x83;                /* 8 bits, no Parity, 1 Stop bit     */
 U1DLL = 97;                    /* 9600 Baud Rate @ 15MHz VPB Clock  */
 U1LCR = 0x03;                /* DLAB = 0                          */
}
int sendchar (int ch)  {                 /* Write character to Serial Port    */

 if (ch == '\n')  {
   while (!(U1LSR & 0x20));
   U1THR = CR;                          /* output CR */
 }
 while (!(U1LSR & 0x20));
 return (U1THR = ch);
}


int getkey (void)  {                     /* Read character from Serial Port   */

 while (!(U1LSR & 0x01));

 return (U1RBR);
}

void sendstring (char *string)
{
 while (*string)  {
   sendchar (*string++);
 }
}

void main (void) {
 
char str[] = "     ";
  IODIR0 |= 0x0000bff1;
  IODIR1  = 0xFFFF0000;                  
 
 init_serial();
   
  while(1)
  {
 
 sprintf(str,"ABCDE");
 sendstring(str);
 delays();
 sendchar(13);
 }

}
Başlık: lpc2103 Sorunlarım...
Gönderen: fatal1ty - 19 Ocak 2009, 10:14:31
Selamlar,
Proteusta sürekli uyarı alıyorum;
CPU clock frekansı 75 mhz, maksimum frekans olan 60mhz'i geçiyor.
Daha sonrada sistem aşırı yükten gerçek zamanlı çalışamıyor diyor.

Sistemi durdurduğumda ise bazı bacakların modellenmediği hatasını alıyorum fakat burda bir sorun yok sanırım...

Devrede kristal bağlı. Kristali 15mhz yaptım sizin programda, lpcyide 15mhz yaptım, keildende 15mhz'yi ayarladım. Fakat sonuç yine yok txden sinyal alamıyorum...
Başlık: lpc2103 Sorunlarım...
Gönderen: Analyzer - 19 Ocak 2009, 10:52:05
Alıntı yapılan: "farabiahmed"Selamlar,
Proteusta sürekli uyarı alıyorum;
CPU clock frekansı 75 mhz, maksimum frekans olan 60mhz'i geçiyor.
Daha sonrada sistem aşırı yükten gerçek zamanlı çalışamıyor diyor.

Sistemi durdurduğumda ise bazı bacakların modellenmediği hatasını alıyorum fakat burda bir sorun yok sanırım...

Devrede kristal bağlı. Kristali 15mhz yaptım sizin programda, lpcyide 15mhz yaptım, keildende 15mhz'yi ayarladım. Fakat sonuç yine yok txden sinyal alamıyorum...
Selam,

Dün gönderdiğim dosya yanımda değil ancak şunu söyleyebilirim. Clock divider, kullandığınız işlemcide 1/5 olduğundan 60/5 = 12 mhz'i geçmemeniz gerekir yoksa Proteus hata verir. Bacakların modellenmemesi sorunu simulasyon için önemli değil.
Zannediyorum, tx ve rx pinleri yanlış konfigüre edilmiş ve/veya tx ve rx bacakları yanlış bağlı. Tüm pinleri tekrar gözden geçirmekte fayda var. Eğer sorun devam ederse akşam kendi projelerimden bir tanesini ayıklayıp burada yayınlarım.

Analyzer

Edit : Dosyayı tekrar oluşturdum :

http://rapidshare.de/files/42443518/Blinky.rar.html
Çok hızlı data aktığı için 9600 sınırını aşıyor ve simulator data overrun'a düşüyor. Zamanlamaları ayarlarsanız problem kalmaz. (Vaktim bu kadarına müsaade etti)
Başlık: lpc2103 Sorunlarım...
Gönderen: ahmet2004 - 19 Ocak 2009, 12:49:17
PLL konfigürasyon ayarlarında kullanılabilecek mini program.

(http://img150.imageshack.us/img150/999/1901cs5.png)

http://www.4shared.com/file/81394729/6e2bd95f/LPC2000_PLL_Calculator_ahmet2004.html (http://www.4shared.com/file/81394729/6e2bd95f/LPC2000_PLL_Calculator_ahmet2004.html)
Başlık: lpc2103 Sorunlarım...
Gönderen: fatal1ty - 19 Ocak 2009, 17:50:38
Arkadaşlar ilginiz için çok teşekkür ederim,

SeriPorttan doğru olmasada birşeyler alabiliyorum, sanırım kristal ile ilgili bir sorun var U1DLL datasheette 14.7456mhz için 60 olması gerek diyor. Fakat yinede doğru sonuç alamıyorum...

Şimdiden çok teşekkür ederim, herkese iyi çalışmalar...
Başlık: lpc2103 Sorunlarım...
Gönderen: sakarya - 28 Ocak 2009, 20:35:19
Uart'n rx pinini pull-up yapmayı bir dene. Hem proteus'ta hem de gerçek kitte boşta kalan rx pini sorun çıkartmıştı bana.
Başlık: lpc2103 Sorunlarım...
Gönderen: fatal1ty - 04 Şubat 2009, 12:37:33
Sorun baudrateleri ayarlayan register değerindeymiş(DLL). Datasheetteki örnek uygulamadaki formülleri uygulayarak kendi KRistalime uygun olması gereken değeri buldum. Fakat oda çalışmadı. Saçma karakterler gönderiyordu. Daha sonra biraz deneyim dedim, kafamdan attım bir kaç denemeden sonra tutturdum.
Kristal: 19.6608mhz
Baudrate: 57600
DLL = 0x15 :D

____

LPCye programı atarken bootloader sayesinde seriporttan 9600baudrate ile atıyorum. Bu bootloader'ın 57600de program kabul edecek şekli lazım. Bu işi yapabilmem mümkünmüdür?
Başlık: lpc2103 Sorunlarım...
Gönderen: Analyzer - 04 Şubat 2009, 12:48:06
Selam,

Programı daha hızlı yüklemek için seri port değil de artık j-link ya da en azından sadece keil çalışıyorsanız u-link kullanmanızın zamanı gelmiş..

Analyzer
Başlık: lpc2103 Sorunlarım...
Gönderen: fatal1ty - 04 Şubat 2009, 19:31:05
Amacım hızın yanında kablosuz program yüklemek. Bilgisayarda seriporttan veri gönderen verici sistem var, arm'dada alıcı. Kablosuz programlama yapmak istiyorum.
Başlık: lpc2103 Sorunlarım...
Gönderen: microcozmoz - 05 Şubat 2009, 00:50:00
Sparkfun Wireless bootloading (http://www.sparkfun.com/commerce/news.php?id=223)

Kablosuz bootloader olayına sparkfunda rastlamıştım..
Başlık: lpc2103 Sorunlarım...
Gönderen: fatal1ty - 05 Şubat 2009, 00:56:12
Evet inceledim, onlar sanırım programlayıcısı ile ilgili mcu'nun bootloader'ı içine atılıyor ve seriporttan programlanıyor. Fakat LPCnin bootloader'ı nasıl atılıyor acaba? onun içinde jtag programlayıcımı lazım ki?
Başlık: Ynt: lpc2103 Sorunlarım...
Gönderen: mezire - 01 Nisan 2010, 21:46:22
selam .

programın şifresi var. nedir acaba ?