Vai al contenuto
PLC Forum


Pwm Pic - Risoluzione a 10Bit


sfinge

Messaggi consigliati

Salve a tutti!

Non riesco a capire dal datasheet di un Pic 16f876 come ottenere da un Pwm un risoluzione a 10Bit.

Vorrei utilizzare un'ingresso analogico a 10 Bit per avere appunto un Pwm a 10Bit.

Attualmente funziona a 8Bit, infatti sul Display vedo che il led collegato sull'uscita aumenta di luminosità fino

al passo 255 dopodichè si spegne e riprende ad incrementare fino al pass0 510 e cosi via per altre 2 volte fino a 1024.(I passi sono quelli del convetritore A/D dove ho collegato un Pot.).

Riporto una parte di codice:

TRISC2=0; //Imposto come uscita

PR2=0xFF //Imposta periodo dell'onda PWM

T2CON=0b00000101; //Abilita TIMER2 imposta prescaler a 4

CCP1CON=0b00001100; //Attiva PWM

for(;;){

CCPR1L=ADRESL; //Sposto valore basso di A/D su byte basso PWM

AppoggioAD=ADRESH & 0x3; //Ottengo solo Msb (bit 0 e 1) di A/D

AppoggioAD<<=4; //Sposto i due bit sui bit 4 e 5

CCP1CON=CCP1CON ^ AppoggioAD; //Xor per avere i bit 4 e 5 di A/D su Msb di PWM (Per risoluz. 10bit)

}

Qualcuno mi può aiutare?

Ciao Grazie!!

Link al commento
Condividi su altri siti

  • 2 weeks later...

purtroppo non conosco il pic, ma ho notato che nei commenti del codice imposti a 255 il periodo del PWM...non e' che tale valore viene utilizzato per stabilire anche la discretizzazione del PWM? il comportamento 4 volte ricorsivo sembra tipico di un comparatore che lavori con valori a 8 bit da una parte e 10 dall' altra :)

Link al commento
Condividi su altri siti

Dovresti indicare che frequenza di clock utilizzi poichè esiste un limite superiore alla risoluzione ottenibile. Mi sembra di ricordare che la formaula sia:

Risol. PWM in bit = log(Fosc/Fpwm)/log2

Link al commento
Condividi su altri siti

Ciao,

penso che tu abbia confuso il significato del registro CCP1CON<5:4>; questi due bit infatti contengono gli LSB e non gli MSB del periodo PWM; quindi gli 8 bit piu' significativi vanno nel registro CCPR1L e i due meno significativi in CCP1CON<5:4>. Forse devi giustificare verso sinistra il risultato del tuo ADC e quindi potrai copiare direttamente il registro ADRESH in CCPR1L, mentre i ADRESL<7:6> lo puoi spostare in CCP1CON<5:4>.

Ciao

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...