Ik ben al een flinke tijd bezig met m'n PWM ding aan de praat te krijgen op een 16F88, maar ergens doe ik iets niet goed. Ik krijg het niet voor elkaar... Ik ben helemaal terug naar basic gegaan en doe nu de meest simpele routine die je kan verzinnen, maar ik denk dat er iets in mijn configbits verkeerd staat. Als iemand m'n fout zou kunnen aanwezen, eeuwige dank en roem natuurlijk. ;)


list		p=16F88
#INCLUDE 	"P16F88.INC"
__CONFIG	_CONFIG1, _CPD_OFF & _CCP1_RB3 & _CP_OFF & _DEBUG_OFF & _LVP_OFF & _MCLR_ON & 
			_PWRTE_ON & _WDT_OFF & _WRT_PROTECT_OFF & _INTRC_IO & _BODEN_OFF

org	0x00			; Startadres 0x00
	GOTO	INIT		; Ga naar Initialisatie
	org	0x04		; Startadres 0x04

INIT	clrf	CCPR1L		; Zet DC op 0
	clrf	PORTA		; Zet alles schoon
	clrf	PORTB		; Zet alles schoon
	bsf	STATUS,RP0	; Select Bank 1
	clrf 	ANSEL		; Alle uitgangen digitaal maken
	bsf	OSCCON,6	; Zet de interne oscilator...
	bsf	OSCCON,5	; op 4 MHz (pg.40)...
	btfss 	OSCCON,IOFS 	; En wacht tot hij is...
	goto 	$-1		; gestabiliseerd
	movlw	0x07		; Zet poorten digitaal en...
	movwf	CMCON		; zet de comparators uit
	movlw	b'00000111'	; Zet RA0-2 op Input...
	movwf	TRISA		; en de rest op Output
	clrf	TRISB		; Port B zijn uitgangen
	bcf 	STATUS,RP0	; Select Bank 0

	movlw	0x0C		; Zet de CCP module in...
	movwf	CCP1CON		; PWM mode (pg.81)
	movlw	0xF9		; Stel de PR2 waarde in...
	movwf	PR2		; op 249

START	call 	Blink
	goto 	START

Blink	movlw	0xFF		; Zet de Duty Cycle op...
	movwf	CCPR1L		; 100% (LED aan)
	bsf	PORTB,2		; Test LEDje aan
	call 	DELS5		; Wacht een halve seconde
	clrf	CCPR1L		; Zet DC op 0% (LED uit)
	bcf	PORTB,2		; Test LEDje uit
	call 	DELS5		; Wacht een halve seconde
	return

Het Test LEDje gaat netjes aan en uit, maar de PWM lijkt niks te doen. En ik kijk dan naar RB3 (Pin 9) waarvan ik eigenlijk verwacht dat deze een halve seconde aan gaat en een halve seconde uit, net als het Test LEDje.
Ik heb voor het overzicht de wachtroutine DELS5 niet vermeld.

Mischien helpt het als je ook TMR2 start:

		bsf	T2CON,TMR2ON

Op 19 januari 2009 14:57:05 schreef JoWi:
Mischien helpt het als je ook TMR2 start:

		bsf	T2CON,TMR2ON

Ik heb de genoemde statement onder INIT gezet, maar het heeft niet het gewenste resultaat opgeleverd, alhoewel ik wel met je eens ben dat het ook handig is om deze aan te zetten na het verder doorspitten van de tutorial. ;)

Dat je timer2 was vergeten te starten was een fout, maar niet de enige fout. Check eens in welke bank PR2 zit....

Heerlijk hoe blij je kan zijn met zoiets simpels hè. :D Als een kind met nieuw speelgoed.

JoWi had wederom gelijk. PR2 zit in Bank 1 en moet dus geconfigureerd worden alvoor je 'bcf STATUS,RP0' doet. Hoe makkelijk je over zulke dingen heen kan kijken. Maar ik heb geleerd en ga deze vraag niet nog een keer stellen.
Dank nogmaals voor alle moeite en de snelle reacties! :)