Discussion in "ARM Development" started by    shyam    Dec 28, 2007.
Fri Dec 28 2007, 03:34 PM
#1
topics to be discussed
1. selction of pins for different function.
2. setting PLL .
3.setting baud rate.
4.sending a byte of data.
5. receiving a byte of data.
6. using in interrupt.
7.difference between polled and interrupt mode


any thing u wanna add??
Fri Dec 28 2007, 03:58 PM
#2
A small example programme to learn and test communication on hyperterminal . If till tomorrow i i could understand and test it on my board then i will feel bit satisfied
I believe you have made a proper list of topics further .

/* Include header file depending upon device been used */
#include<Philips\LPC2148.h>

void Initialize(void);
/* Macro Definitions */
#define TEMT (1<<6)
#define LINE_FEED 0xA
#define CARRIAGE_RET 0xD
/************************* MAIN *************************/
int main()
{
int i;
char c[]="Philips LPC";
Initialize()
/* Print forever */
while(1)
{
i=0;
/* Keep Transmitting until Null character('\0') is reached */
while(c[i])
{
U0THR=c[i];
i++;
}
U0THR=LINE_FEED;
U0THR=CARRAIGE_RET;
/* Wait till U0THR and U0TSR are both empty */
while(!(U0LSR & TEMT)){}
}
}
/*************** System Initialization ***************/
void Initialize()
{
/* 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 */
U0DLL=0x10;
U0DLM=0x0;
/* Clear DLAB */
U0LCR=0x3;
}
/*********************************************************/






[ Edited Fri Dec 28 2007, 07:06 PM ]
Fri Dec 28 2007, 04:01 PM
#3
I am looking forward for elaborate explanation on above subtopics . I do miss a lot words while typing a post and send it without checking . Please ignore myomissions.
Fri Dec 28 2007, 04:46 PM
#4

wow u r really being quick i wud prefer to take a step a time...
moreover it is always better to set PLL than using its default value....

we will certainly try to get ur programme running....

1. selction of pins for different function.

in lpc as u might have noticed one pin can be configured to serve as 4 different funtions ex.
P0.1/RXD0/PWM3/EINT0 it is one single pin..

these functions lets say are fun0 fun1 fun2 fun3.

edited[
P1 in lpc21xx donot have special functions they have just fun0 and fun1.
things to note: we r not considering JTAG yet.. actually PINSEL2 is the PINSEL associated for P1 but
fun1 is related for JTAG debug.. Pins 0 through 15 of port 1 are not available.
]
in all cases fun0 is GPIO

by default (unless the functionality is selected all pins have this fun0).
the functionality can be configured by using PINSEL register (32 bit).

edited
[

thus it wud be clear by now that P1 does not have a PINSEL corresponding to it....
oops!! forgot pinsel2 plz ignore this line :blush


]
in binary the functions can be numbered as 0 00
1 01
2 02
3 03
each pin thus has two pinsel bits corresponding to it..
thus it wud be clear now .. for 32 bit Port 1 2 PINSEL registers wud be required..
they are PINSEL0 & PINSEL1.

now to ajay's code.

void Initialize()
{
/* Initialize Pin Select Block for Tx and Rx */
PINSEL0=0x5;


writing 0x5 in binary we get.. 0x 01 01
the first two bits determine the function chosen
for P0.0 i.e. fun1 => UART0 TXD0
similarly the next two bits determine
the function chosen
for P0.1 i.e. fun1 => UART0 RXD0

thus ajay has selected his pair of RX/TX
!dance
!dance !dance


[ Edited Fri Dec 28 2007, 09:09 PM ]
Fri Dec 28 2007, 05:13 PM
#5
Slow and steady wins the race . You be slow and i am going to be steady . Ultimately we all will win.
Fri Dec 28 2007, 05:51 PM
#6


[ Edited Fri Dec 28 2007, 09:13 PM ]
Fri Dec 28 2007, 06:07 PM
#7
please note P0.31 is GPO Port only i.e. cannot be configured as input!
it is generally used as USB good link led signal!!
Fri Dec 28 2007, 06:25 PM
#8
2. setting PLL .

The PLL is used to multiply the external crystal frequency up to the maximum 60 MHz. It
is controlled by the constants M and P.


Within the PLL are two constants which must be programmed in order to determine the clock for the CPU and AHB. This clock is called Cclk. The first constant is a straightforward multiplier of the external crystal. The output frequency of the PLL is given by:
Cclk = M x Osc


In the feedback path of the PLL is a current-controlled oscillator which must operate in the range 156MHz – 320
MHz.. The second constant acts as a programmable divider which ensures that the CCO is kept in specification.
The operating frequency of the CCO is defined as:
Fcco = Cclk x 2 x P



well i had already submitted a design for lpc2138/48 if u find it ... u wud notice the crystall of frequency 14.745 Mhz.


so
- System should run at max. Frequency (60MHz) [limit: max 60 MHz]
- Choose multiplier M=4
so cclk = M * F_OSC= 4 * 14745000Hz = 58980000 Hz

- F_CCO must be inbetween the limits 156 MHz to 320 MHz
datasheet: F_CCO = F_OSC * M * 2 * P
- choose devider P=2 => F_CCO = 14745000Hz * 4 * 2 * 2
= 235920000 ~=236 MHz

now you can choose the multiplier and devider value for PLL depending on your crystall
Fri Dec 28 2007, 06:58 PM
#9
please note:


There are two PLL modules in the LPC2141/2/4/6/8 microcontroller. The PLL0 is used to
generate the CCLK clock (system clock) while the PLL1 has to supply the clock for the
USB at the fixed rate of 48 MHz. Structurally these two PLLs are identical with exception
of the PLL interrupt capabilities reserved only for the PLL0.



so @ ajay...
u should configure the PLL first...

lets see how to do it=>>>

Fri Dec 28 2007, 07:57 PM
#10
take a look at the code...

#define FOSC		14745000             
 /*on board crystall frequency */
#define PLL_M		4	                     
 /*Cclk = M x Osc  Cclk =60Mhz  Osc 14.745 Mhz M~4   */ 
#define MSEL		(PLL_M-1)
#define PSEL0 		5       
 /*see user manual PLLCFG*/
#define PSEL1 		6   
 /*see user manual*/

#define PLLE		0
 /*see user manual PLLCON*/
#define PLLC		1     
 /*see user manual PLLCON*/

#define PLOCK		10   
 /*see user manual PLLSTAT*/

#define PLL_FEED1	0xAA   
 /*constant*/ 
#define PLL_FEED2	0x55                 
 /*constant*/


void systemPllInit(void)
{
        // --- enable and connect the PLL (Phase Locked Loop) ---
	// a. set multiplier and divider
	PLLCFG = MSEL | (1<<PSEL1) | (0<<PSEL0);
	// b. enable PLL
	PLLCON = (1<<PLLE);
	// c. feed sequence
	PLLFEED = PLL_FEED1;
	PLLFEED = PLL_FEED2;
	// d. wait for PLL lock (PLOCK bit is set if locked)
	while (!(PLLSTAT & (1<<PLOCK)));
	// e. connect (and enable) PLL
	PLLCON = (1<<PLLE) | (1<<PLLC);
	// f. feed sequence
	PLLFEED = PLL_FEED1;
	PLLFEED = PLL_FEED2;
	
}


steps to initialise pll
1.
// --- enable and connect the PLL (Phase Locked Loop) ---
// a. set multiplier and divider
PLLCFG = MSEL | (1<<PSEL1) | (0<<PSEL0);
remember MSEL = M -1 cause to remove devide by zero error... the MSEL value is always +1 there will be other instances too... we will discuss as they come across..
2.
// b. enable PLL
PLLCON = (1<<PLLE);
every time you make a change in PLLCON register be sure to follow it up with a feed sequence to affect the changes done... else there wud be no effect and old status will be in effect... :-)
so..
// c. feed sequence
PLLFEED = PLL_FEED1;
PLLFEED = PLL_FEED2;//mandatory
3.
// d. wait for PLL lock (PLOCK bit is set if locked)
while (!(PLLSTAT & (1<<PLOCK)));
4.
// e. connect (and enable) PLL
PLLCON = (1<<PLLE) | (1<<PLLC);
// f. feed sequence
PLLFEED = PLL_FEED1;
PLLFEED = PLL_FEED2;

now your system is ready to work at the desired PLL frequencies... remember PLL settings shud be carefully done... as they help generate the frequencies for almost all on chip devices...

note: dont worry writing this function in your every code.. it will remain same as long as u use the same crystall...



[ Edited Fri Dec 28 2007, 09:01 PM ]
 saowangru like this.

Get Social

Information

Powered by e107 Forum System

Conversation

Tue Jan 14 2020, 07:08 AM
shubham kharade
when i am trying to simulate the program in Proteus 8 professional, I am getting some errors as cannot find module file dhtxx.md can u help me
Tue Dec 17 2019, 01:44 PM
Devangi
hello..i am programming industrial timer using 8051 with 24lc64 eeprom. i have query in storing the 3 diff value in eeprom with enter button. can anyone share c code ?
Tue Dec 17 2019, 10:30 AM
Andrius
Hello. Can anyone share the code in Bascon and scheme in Proteus?
Thu Nov 21 2019, 12:30 PM
raj2555
how to interface 8051 microcontroller with NRF24L01+ module
ExperimenterUK
Sat Oct 12 2019, 10:23 PM
Log in.. then post your code in the 8051 forum
Sat Oct 12 2019, 10:18 AM
Bhadra Sajikumar
i am doing a countdown timer with 8051 for my project, unfortunately our professor had to take a leave of absence before he could teach us most of it.. can someone explain the .asm code of it for me?
Mon Sep 23 2019, 07:37 AM
Nathaniel
I am doing a project for my schools wireless security system with cameras,sensors and spot lights using 8051 micro controller, could you help me out with the design and its source code.
Wed Sep 18 2019, 08:48 PM
Caryn Kover
Thank you for your time,
ExperimenterUK
Mon Aug 05 2019, 07:09 PM
@Ismail ..post in forum, give details
Mon Aug 05 2019, 04:33 PM
Ismail balghmi
Hello. Please I won't download

Downloads

Comments

usb5962
Sat Jan 11 2020, 10:42 AM
elt
Tue Jan 07 2020, 06:53 PM
mg3914697
Tue Jan 07 2020, 12:42 PM
afds43
Sun Dec 29 2019, 05:54 AM
Rupeshpatil
Fri Dec 27 2019, 06:14 PM
pyxus
Sat Dec 14 2019, 12:31 PM
Istika
Thu Dec 12 2019, 12:04 PM
nabiha_anaya
Sun Dec 08 2019, 09:16 AM

Online

Guests: 26, Members: 0 ...

most ever online: 182184
(Members: , Guests: 182184) on 06 Aug 2010: 05:37 AM

Members: 38115
Newest member: usb5962
Forum Activity
Billz Avatar
Posted By Billz
Sat Jan 11 2020, 05:43 PM
hi everyone please attached files are my c code fo...
ExperimenterUK Avatar
Posted By ExperimenterUK
Tue Jan 07 2020, 08:18 PM
Not a stupid question.Setting up "Eclipse" can be...
elt Avatar
Posted By elt
Tue Jan 07 2020, 07:06 PM
So i have just began learning programming micros a...
Billz Avatar
Posted By Billz
Mon Jan 06 2020, 09:22 PM
I think it would be better if you guys try to come...
ExperimenterUK Avatar
Posted By ExperimenterUK
Mon Jan 06 2020, 12:22 AM
Can you post a circuit diagram and any code you ha...
Billz Avatar
Posted By Billz
Sun Jan 05 2020, 08:17 PM
Need help regarding C code (specifically for PIC 1...
ExperimenterUK Avatar
Posted By ExperimenterUK
Mon Dec 30 2019, 06:42 PM
Can you give more details of your problem.
Rupeshpatil Avatar
Posted By Rupeshpatil
Fri Dec 27 2019, 06:21 PM
How to copy program my old microcontroller to new ...
ilylily07 Avatar
Posted By ilylily07
Thu Dec 12 2019, 02:26 PM
wil do.thank you for your advice!
ExperimenterUK Avatar
Posted By ExperimenterUK
Thu Dec 12 2019, 07:13 AM
Something like this ?https://www.bing.com/videos/s...