sono sicuro che la mia domanda sia stupidissima ma vorrei togliermi il dubbio. Sto facendo un po' di esercizio e vorrei vedere un led aumentare e diminuire la luminosità tramite PWM. Sto utilizzando il Pierin.
Ho scritto il codice (che dovrebbe funzionare, devo solo caricarlo sul Pierin) ma mi succede una cosa strana. Il codice così come lo posto funziona ma, se aggiungo dopo la parentesi graffa finale (quella di chiusura del main) il seguente commento:
- Codice: Seleziona tutto
// fine main
mi restituisce errore di compilazione. Levandolo funziona
- Codice: Seleziona tutto
// File di definizione dei registri del micro.
#include "p18f47j53.h"
// File di configurazione dei fuses
#include "configurazione.h"
// Mappatura delle interrupt
#include "mappa_int.h"
// Header del main
#include "main.h"
//------------------------------------------------------------------------------
// Variabili globali
//------------------------------------------------------------------------------
#pragma udata
//------------------------------------------------------------------------------
// Funzione di servizio delle interrupt ad ALTA priorità
//------------------------------------------------------------------------------
#pragma code
#pragma interrupt highPriorityInterrupt
void highPriorityInterrupt()
{
// Verifica quale flag ha causato l' interrupt
// Esegui la parte di codice di servizio dell' interrupt
// Azzera il flag che ha causato l' interrupt
// ...
}
//------------------------------------------------------------------------------
// Funzione di servizio delle interrupt a BASSA priorità
//------------------------------------------------------------------------------
#pragma interruptlow lowPriorityInterrupt
void lowPriorityInterrupt()
{
}
//------------------------------------------------------------------------------
// Prototipi delle funzioni
//------------------------------------------------------------------------------
#pragma code
//------------------------------------------------------------------------------
// Funzioni
//------------------------------------------------------------------------------
#pragma code
//------------------------------------------------------------------------------
// MAIN FUNCTION
//------------------------------------------------------------------------------
void main(void)
{
// Variabile usata per creare un conteggio fittizio di pausa
int i;
// Periodo del segnale PWM
unsigned char period;
// Duty Cycle
int duty_cycle = 0;
// -------- Inizializzazione delle periferiche --------
// Imposto PORTB tutti ingressi ed RB1 come uscita
LATB = 0x00;
TRISB = 0b00000000;
// -------- Attivazione delle periferiche --------
// Imposto una frequenza di 20KHz
period = 249;
// PR2 (2 perché relativo al timer 2) viene settato col periodo
PR2 = period;
// Setto il duty cicle
CCPR4L = duty_cycle;
//Modulo CCP4 settato in modalita' PWM con ultimi due bit meno significativi a 0
CCP4CON = 0b00001100;
// Attivszione timer2 con pre e post scaler a 1
T2CON = 0b00000100;
// -------- Ciclo infinito di funzionamento --------
for(;;)
{
// Aggiorno il duty cicle
CCPR4L = duty_cycle;
// Incremento il dutycycle
duty_cycle++;
// Controllo che non sia maggiore di 2^10
if (duty_cycle > 1023) {
duty_cycle =0;
}
// Pausa
for (i=0; i<1000; i++) {
}
}// Fine for
}
P.S. visto che ci siamo c'è un modo per utilizzare in uscita il LED su port D, invece di utilizzare l'uscita esterna su port B?
Grazie in anticipo,
Emanuele

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)


