lpc 2138 uart baud hesabı ??

Başlatan satilla, 27 Ağustos 2011, 14:25:54

satilla

can sıkıntısından birşeyler yapayım dedim ve uart için şu kodu derledim

#include <LPC213x.h>
#include "delay.h"




int i;
char c[]="Pic Proje";

int main()
 {
/* Initialize Pin Select Block for Tx and Rx */
PINSEL0=0x5;
/* Enable FIFO's and reset them */
U0FCR=0x7;
/* Set DLAB and word length set to 8bits */
U0LCR=0x83;

/* Baud rate set to 9600 */
U0FDR=0x21; //FDR 9600 ve 12 mhz icin
U0DLL=0x34;

U0DLM=0;


/* Clear DLAB */
U0LCR=0x3;

while(1)
{

i=0;
/* Keep Transmitting until Null character('\0') is reached */
while(c[i])
{
U0THR=c[i];
i++;
}


delay(500);
 }
}



12 mhz 9600 baud için

/* Baud rate set to 9600 */
U0FDR=0x21;
U0DLL=0x34;
U0DLM=0;



bunları hesapladım ancak isite sacma sapan karakterler cıkıyor
yaptığım hesap doğrumu?

10 mhz 9600 baud için sorunsuz çalıştırdım ancak 12 mhz için hesap yaptığımda olmadı


fatihinanc

Kainat dediğimiz kitap, yazıldığı dil ve harfler öğrenilmedikçe anlaşılamaz.  (Galileo Galilei)

satilla

12 mhz pclk
9600 baud için deneme yapıyorum ve hala saçma sapan değerler çıkıyor

satilla


satilla

Alıntı yapılan: gerbay - 05 Eylül 2011, 16:35:10
hocam yukarda PLL dedim ama birşey yazmadın, PLL ayarların nedir? kaynak kodu buraya koyabilir misin?

hocam zaten yukarda kodu koydygym için pllden bahsetmedim
yazdıgım programda pll'yi kullanmıyorum 12 mhz'lik harici kristal bağlı

yukarıdaki kod fdr registeri kullanılmadan yazılmış 10 mhz 9600 baud için çalışan kod
ancak kodu fdr registeri kullarak 12 mhz'de çalıştırmak istedigimde abuk sabuk degerler çıkıyor

satilla

hocam pll işine anlam veremiyorum, çünkü 10 mhz için yapılan hesapta program çalışıyor ve aynı startup kodlarını kullanıyorum
12 mhz için pll aktif olacak değil diye düşünüyorum, belki de başka birşey söylemek istiyorsunuz ama anlayamadım

http://hotfile.com/dl/128942161/fcdc564/genel.rar.html

vaktiniz varsa startup kodlarına bir göz atarmısınız, ayrıca proje simulasyonu da içerisinde

-Hasan-

Merhabalar;
Araya bir soru da ben sıkıştırsam kızmazsınız herhalde.

UART_PIN|=0x00050000;	// GPIO'dan P0.0 ve P0.1 UART için ayarlanıyor


ARM ' lar hakkında şimdilik bir bilgim yok. Ama programdaki bu satır dikkatimi çekti; ARM ' larda UART pinleri istenilen pine ayarlanabiliyor mu yani?

Teşekkürler.


Tagli

Bazı PIC'lerde de bu özellik var. Galiba PIC24H ve dsPIC33F'lerde idi, emin değilim. Ayrıca  bazı PIC18'lerde CCP2 pini için iki bacaktan birini seçmek mümkün.
Gökçe Tağlıoğlu

satilla

sorunu anladım ilginize tşk ederim lakin,
dedigniz gibi bölücüye 1 atadıktan sonra yani giren frekans çıkana eşit oldugunda yine aynı sorun mevcut ancak karakterler biraz daha okunur gibi

uart registerlarının dogru hesaplandıgını düşünüyorum eksik olan ne aklıma birşey gelmiyor
siz VPBDIV = 0x01;  atamasını yaptıktan sonra verdigim simulasyonda okunacak değerler gördünüz mü?

-Hasan-

Alıntı yapılan: Tagli - 06 Eylül 2011, 00:13:22
Bazı PIC'lerde de bu özellik var. Galiba PIC24H ve dsPIC33F'lerde idi, emin değilim. Ayrıca  bazı PIC18'lerde CCP2 pini için iki bacaktan birini seçmek mümkün.

Tagli Hocam; CCP pininin bazı PIC18 ' lerde istenilen pine ayarlandığını biliyordum. Benim PIC ' de böyle. Ama PIC24 ve dsPIC ile hiç çalışmadığım için bu özellik ARM ' larda mı var? diye düşündüm.

Cevaplarınız için teşekkür ederim.  :)

satilla

hocam hatamı buldum decimal bulduğum değerleri hex olarak yazıyormuşum

78 sayısını 0x78 olarak yazıyormuşum

fdr'yi denemedim birde fdr ile deneyecegim, expresso kitim gelsinde