PIC18f4550 & PWM
sto provando l'esempio del pwm, ma non riesco a capire cosa c'è che non va...
Il led che ho collegato al Pin RC1 rimane sempre acceso.
Sto utilizzando un quarzo da 20 Mhz.
#include <p18f4550.h>
# include <pwm.h>
# include <timers.h>
#pragma config FOSC = HS
#pragma config WDT = OFF
#pragma config LVP = OFF
#pragma config PBADEN = OFF
#pragma config CCP2MX = ON
void main (void)
{
unsigned int i; //Variabile usata per creare un conteggio fittizio di pausa
unsigned char period; //Periodo del segnale pwm
int duty_cycle = 0; //Duty Cycle
//Imposto PORTA tutti ingrrssi
LATA = 0x01;
TRISA = 0x00;
//Imposto PORTC tutti ingressi ad RC1 come uscita
LATC = 0x00;
TRISC = 0;
OpenTimer2 (TIMER_INT_OFF & T2_PS_1_1 & T2_POST_1_1 ); //Apro il timer2 per il pwm
period = 249; //Imposto una frequenza di 20KHz
OpenPWM2 (period); //Apro il modulo pwm
while (1) { //Ciclo infinito
SetDCPWM2 (duty_cycle); //Aggiorno il duty cycle
duty_cycle++; //Aggiorno il duty_cycle
if ( duty_cycle > 1023) { //Controllo che non sia maggiore di 2^10
duty_cycle =0;
}
}
for (i=0; i<1000; i++) {
}
}
Non riesco a capire cosa sbaglio...
Cosa posso fare?
Si prega Accedi o Crea un account a partecipare alla conversazione.
- AlexGiul
- Autore della discussione
- Visitatori
Si prega Accedi o Crea un account a partecipare alla conversazione.
- AlexGiul
- Autore della discussione
- Visitatori
Pero' e' strano, perche' una parentesi di troppo rappresenta un errore che non sfugge al compilatore.
Ci deve essere stato anche qualcos'altro!
Saluti,
Mauro
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Mauro Laurenti
- Moderator
il motivo era che la pausa era fuori dal while...
Si prega Accedi o Crea un account a partecipare alla conversazione.
- AlexGiul
- Autore della discussione
- Visitatori
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.