Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
06/24/08 04:00
Read: times


 
#156140 - Could use some help with LPC983 PWM code
Hi All,

I've spent way too much time trying to figure out how to program the P89LPC938 PWM hardware and could use some help from someone with experience. The code below results in a continuous string of "f" characters being sent out the serial port OK and the LED flashes OK but the PWM output pins P1.6 and P1.7 never wiggle and are both at ZERO.

I've read the user manual destructions and data sheet untill I'm blue in the face, tried several new chips and double checked the wiring. Must be nmissing something :-)


	AGC_PWM		EQU	P1.7
	XMITV_PWM	EQU	P1.6
	LED		EQU	P2.0


	MOV     P0M1,#00101110b	;x,x,CMP_Ref,x,CMP_V,Sonar_SigV,W_Temp,Tx_Pin
	MOV     P0M2,#00000001b		

	MOV     P1M1,#00000000b	;AGC_PWM,XMITV_PWM,x,DE,x,x,RxD,TxD
        MOV     P1M2,#11000001b	;p1.2,p1.3 open drain (must have ext. pullups)

	clr	a
        MOV     P2M1,a 		;Port2, mode Quasi Bi-directional
        MOV     P2M2,a		

        MOV     P3M1,a		;Port3, mode Quasi Bi-directional
        MOV     P3M2,a

	dec	a		;acc now=0ffh
	mov	p3,a
	mov	p2,a
	mov	p1,a
	mov	p0,a

	clr	Tx_Pin		;xmit OFF
	clr	XMITV_PWM	;XmitPwr 0 vdc
	clr	DE		;Set linea A/B to receive RS485

        mov	SCON,#01010000b	;8 bit uart, REN=1 rcv enabled
	mov	PCON,#10000000b	;SMOD=1

	MOV	TCON,#01010101b	;TF1,TR1,TF0,TR0,IntEdge1,IntType1,IE0,IT0
	MOV	IE,#00000000b	;Global,-,T2,Serial,T1,X1,T0,X0

	mov	BRGCON,#00000010b	;UART set to use Baud Rate Generator
	mov	BRGR1,#0		;0,48=115200, 2,240=9600, 5,240=4800 
	mov	BRGR0,#48		;1,112=19200, 0,176=38400
					;with 7.373Mhz clock
	mov	BRGCON,#00000011b	;enable Baud Rate Generator
	clr	RI

	MOV     SP,#EndVarList-1;Initialize stack pointer into RAM

	mov	a,WDCON
	clr	acc.2		;Stop Watchdog timer
	mov	WDCON,a
	MOV 	WFEED1,#0A5h 	;do watchdog feed part 1
	MOV 	WFEED2,#05Ah 	;do watchdog feed part 2

	
	setb	AGC_PWM		;P1.7
	setb	XMITV_PWM	;P1.6

	mov	TPCR2H,#00000000b	;Prescaler
	mov	TPCR2L,#01100011b

	mov	TCR21,#00000110b	;PLLDV=PLL divisor, N.  
					;PLLFreq=PCLK/(N+1)

	mov	CCCRB,#00000001b	;Enable PWM channel B
	mov	CCCRC,#00000001b	;Enable PWN channel C

	mov	TCR20,#10000000b	;Enable PLL
	setb	AGC_PWM		;P1.7
	setb	XMITV_PWM	;P1.6

	call	Dly50mS		;Wait for PLL to lock up

	mov	TOR2H,#00h	;16 bit timer reload value for PWM (Hi Byte)
	mov	TOR2L,#0ffh	;16 bit timer reload value for PWM (Lo Byte)
	mov	TCR21,#10000000b	;Latch in the TOR2H/L values

	mov	OCRBH,#00h	;CCU channel B Compare value (Hi byte)
	mov	OCRBL,#0fh	;CCU channel B Compare value (Lo byte)
	mov	TCR21,#10000000b	;Update duty cycle

	mov	OCRCH,#00h	;CCU channel C Compare value (Hi byte)
	mov	OCRCL,#0fh	;CCU channel C Compare value (Lo byte)
	mov	TCR21,#10000000b	;Update duty cycle

	mov	TCR20,#10000010b	;Asymmetrical PWM

	setb	p1.0
	setb	p1.1
	setb	es

STAAA:	clr	TI
	mov	sbuf,#'f'	;Send string of "f"'s to see if HW running
	jnb	TI,$
	djnz	r0,STAAA
	call	Dly50mS
	cpl	LED	
	jmp	STAAA


Dly50mS:			;50ms at 7.373Mhz
	push	2
	push	1
	push	0
	mov	r2,#3
DySc:	mov	r1,#240
DySf:	mov	r0,#0
	djnz	r0,$
	djnz	r1,DySf
	djnz	r2,DySc
	pop	0
	pop	1
	pop	2
	ret





List of 5 messages in thread
TopicAuthorDate
Could use some help with LPC983 PWM code            01/01/70 00:00      
   have you tried CodeArchitect?            01/01/70 00:00      
      http://www.codearchitect.org/            01/01/70 00:00      
         Code Architect            01/01/70 00:00      
      Code Architect            01/01/70 00:00      

Back to Subject List