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
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.
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.
neni zac , 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