PIC18F4523 nastavení PWM na 4kHz

Zdravím všechny, potřebuji nastavit PWM na 4kHz pro piezo a nedaří se, jen to v něm škrkne, ale čistý tón nikde. Mám mcu 18F4523 běžící na 8 MHz (krystal), poradíte prosím.

Cau,jestly to aspon neco udela … Duty Cycle na 50% ?
jinak nastaveni TMRX (vetsinou TMR2) / CCP1CON / PWM rezim …
a pripojit to na spravnej pin

nevim jestly s toho neco vyctes 8) 18: SET_PWM1_DUTY(60); 0024 0E3C MOVLW 0x3c 0026 6EBE MOVWF 0xfbe, ACCESS 19: SETUP_CCP1(CCP_PWM); 0028 9494 BCF 0xf94, 0x2, ACCESS 002A 948B BCF 0xf8b, 0x2, ACCESS 002C 0E0C MOVLW 0xc 002E 6EBD MOVWF 0xfbd, ACCESS 20: setup_timer_2(T2_DIV_BY_4,120,1); 0030 0E00 MOVLW 0 0032 0905 IORLW 0x5 0034 6ECA MOVWF 0xfca, ACCESS 0036 0E78 MOVLW 0x78 0038 6ECB MOVWF 0xfcb, ACCESS
nebo
nastavit si prislusnej pin jako vystup
CCPR1 0X3C
CCP1CON 0X0C
T2CON 0X05
PR2 0X78
a vychazi cca 4100 cca, skousel sem to na 18f2320, snad ti to pomuze

Díky MiloPS3, zkusím to nastavit a dám vědět jaký je zvuk. :slight_smile:

Já jsem u PIC18F23K22 použil na CCP5 tohle:

PWM_ON	CLRF	CCPTMRS1
	MOVLW	.80
	MOVWF	PR2
	MOVLW	B'00111100'
	MOVWF	CCP1CON
	CLRF	CCPR1L
	MOVLW	B'00000101'
	MOVWF	T2CON
	MOVLW	.50
	MOVWF	CCPR1L

	RETURN

Potom v TRIS nahodit příslušný pin
Měl jsem to na regulaci podsvícení u LCD a funguje mi to.
Skoro stejnej zápis používám na ECCP modul

Můžeš sem prosím dát zapojení na regulaci podsvícení u LCD, to mě zajímá, jinak díky MiloPS3 už to krásně pípá, zvuk je čistý a výrazný. Nastavení PWM snad nikdy nepochopím, jak vy to děláte že vám to tak krásně všechno funguje. :smiley:

neni zac :wink: , obcas se taky zaseknu a vzhledem k tomu ze mam zaklady ASM a dokazu se prolouskat ENG datasitem + HELPem od C prekladace tak to de

PWM je hrozně jednoduchý na nastavení, pokud se do toho ovšem nepletou vychcávky typu více periferijních modulů na jednu tlapku.

ZApojení ani snad přiložit nemůžu jak je to jednoduchý. Anoda podsvícení na +5V, katodu jsem tahal na zem přes BC337 a do báze pouštěl přes odpor PWM. Žádný složitosti.

Tak to je jednoduché a u kterého registru měníš hodnotu aby se to rozsvěcovalo a zhasínalo, jak už jsem psal, PWM nechápu, myslím to nastavení…

Registr PR2 ti nastavuje periodu pulzů, to vychází z funkce TMR2.

CCPR1L - v tomto registru se nastavuje střída PWM, zjednodušeně.
0 = střída 0%, hodnota stejná jak v PR2 = max střída 100%.

Jo, díky moc, zkusím to.

jen doplnim , hodnota pro nastaveni stridy (CCPR1L) nesmi byt vetsi nez hodnota nastaveni periody (PR2)

A co se pak stane?

Edit:
Už jsem to našel:

jj, kdyz je schoda CCPR1L s TMR2 tak se vystup nuluje a kdyz je schoda TMR2 s PR2 tak se nuluje TMR2…
neboli pokud mas v penezence kilo tak si neco co stoji 2 kila nekoupis :laughing: