Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

NE555 e duty cycle PWM a calare

Elettronica lineare e digitale: didattica ed applicazioni

Moderatori: Foto Utentecarloc, Foto Utenteg.schgor, Foto UtenteBrunoValente, Foto UtenteIsidoroKZ

0
voti

[41] Re: NE555 e duty cycle PWM a calare

Messaggioda Foto UtenteVRI » 8 gen 2014, 12:09

Alura :D
Sto realizzando il circuito su millefori, nel mentre sto provando a pasticciare con il programma:
Codice: Seleziona tutto
void main
{
OSCCON = 01000100  //Utilizzo dell'oscillatore interno da 1MHz ( Non ho capito cosa intendono con il terzo bit a partire dall'LSB  Pagina 40 DS
OSCTUNE = 00000000  //"Aggiustamento" dell'oscillatore ( nel mio caso non richiedo un clock con una frequenza stabile e precisa da 1MHz) Pagina 38 DS
TRISA = 00000001  // Pin RA0 configurato come INPUT Pagina 41 DS


Le prime timide e insignificanti righe...
Attendo un vostro benestare! ( Spero :D )
Grazie! Ciao!
Avatar utente
Foto UtenteVRI
754 2 7 9
Sostenitore
Sostenitore
 
Messaggi: 1259
Iscritto il: 14 giu 2011, 12:00

1
voti

[42] Re: NE555 e duty cycle PWM a calare

Messaggioda Foto UtentePaolino » 8 gen 2014, 14:59

Farei qualche osservazione e modifica.

Il codice (parziale) è quello che vedi qui:

Codice: Seleziona tutto
void InitPic (void);

void main (void)
{
   InitPic();
   while(1)
   {
   /* Qui ci va altro codice */
   }
}

void InitPic (void)
{
   OSCCON = 0x40; /* Oscillatore interno con Fosc a 1MHz */
   while (OSCCONbits.IOFS == 0); /* Attende frequenza stabile */
   ADCON1 = 0x06; /* Tutti i pin sono DIGITAL I/O */
   TRISA = 0x01; /* Solo RA0 input */
}


Meglio avere una routine di inizializzazione (InitPic, nel mio esempio).
Per impostare l'oscillatore internoa 1MHz il registro OSCCON deve valere 0x40 (che equivale a 0100 0000) in binario. Il bit IOFS, quello che non hai capito cos'è, è indicatore di frequenza stabile dell'oscillatore interno: se tale bit resta a valore 0, significa che la Fosc non è stabile.
Stai attento che PORTA ha anche la possibilità di leggere segnali analogici, quindi devi escluderli se vuoi usare RA0 come ingresso digitale.

Manca la sezione dei configuration bit! Dai una lettura al datasheet per quanto riguarda questo argomento.

Ciao.

Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong

-------------------------------------------------------------

PIC Experience - http://www.picexperience.it
Avatar utente
Foto UtentePaolino
32,6k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4226
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

0
voti

[43] Re: NE555 e duty cycle PWM a calare

Messaggioda Foto UtenteVRI » 8 gen 2014, 15:53

Paolino ha scritto:Meglio avere una routine di inizializzazione (InitPic, nel mio esempio).

Un "brutto" vizio da prendere :D

Paolino ha scritto: Il bit IOFS, quello che non hai capito cos'è, è indicatore di frequenza stabile dell'oscillatore interno: se tale bit resta a valore 0, significa che la Fosc non è stabile.

Giusto! Ecco perché era di sola lettura :ok:

Paolino ha scritto:Stai attento che PORTA ha anche la possibilità di leggere segnali analogici, quindi devi escluderli se vuoi usare RA0 come ingresso digitale.

Se non erro ora nella routine "InitPic" vado a dire che RA0 sarà ingresso, non analogico quindi dovrei essere a posto...Giusto?

Paolino ha scritto:Manca la sezione dei configuration bit! Dai una lettura al datasheet per quanto riguarda questo argomento.


Registro configuration word ( pagina 92 del manuale)
Codice: Seleziona tutto
CP = 1;
WRT = 11;
CPD = 1;
LVP = 1;
MCLRE = 1;
PWRTEN = 1;
WDTE = 0;
FOSC2 = 1;
FOSC0 = 00;


Due domande:
-1. Non ho capito a cosa servono i bit di configurazione BOREN e CCPMX
-2. Il listato che ho racchiuso nella finestra sopra è corretto a livello di sintassi? Posso già trascriverlo nella routine "InitPic" ?




Ti ringrazio per il tuo aiuto! :D
Ciao! O_/
Avatar utente
Foto UtenteVRI
754 2 7 9
Sostenitore
Sostenitore
 
Messaggi: 1259
Iscritto il: 14 giu 2011, 12:00

1
voti

[44] Re: NE555 e duty cycle PWM a calare

Messaggioda Foto UtentePaolino » 10 gen 2014, 10:28

Per quanto riguarda i configuration bits, ti puoi far aiutare da MPLABX. Nel menu WINDOW, selezionando la voce PIC MEMORY VIEWS e poi CONFIGURATION BITS, puoi selezionare il setup dei configuration bit e far generare il codice sorgente da copiare e incollare nel tuo codice. Così, mi è venuto fuori questo:

Codice: Seleziona tutto
// PIC16F819 Configuration Bit Settings

#include <xc.h>

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.

// CONFIG
#pragma config FOSC = INTOSCIO  // Oscillator Selection bits (INTRC oscillator; port I/O function on both RA6/OSC2/CLKO pin and RA7/OSC1/CLKI pin)
#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = ON       // Power-up Timer Enable bit (PWRT enabled)
#pragma config MCLRE = ON       // RA5/MCLR/VPP Pin Function Select bit (RA5/MCLR/VPP pin function is MCLR)
#pragma config BOREN = ON       // Brown-out Reset Enable bit (BOR enabled)
#pragma config LVP = OFF        // Low-Voltage Programming Enable bit (RB3/PGM pin has digital I/O function, HV on MCLR must be used for programming)
#pragma config CPD = OFF        // Data EE Memory Code Protection bit (Code protection off)
#pragma config WRT = OFF        // Flash Program Memory Write Enable bits (Write protection off)
#pragma config CCPMX = RB2      // CCP1 Pin Selection bit (CCP1 function on RB2)
#pragma config CP = OFF         // Flash Program Memory Code Protection bit (Code protection off)


    void InitPic (void);

    void main (void)
    {
       InitPic();
       while(1)
       {
       /* Qui ci va altro codice */
       }
    }

    void InitPic (void)
    {
       OSCCON = 0x40; /* Oscillatore interno con Fosc a 1MHz */
       while (OSCCONbits.IOFS == 0); /* Attende frequenza stabile */
       ADCON1 = 0x06; /* Tutti i pin sono DIGITAL I/O */
       TRISA = 0x01; /* Solo RA0 input */
    }


Come vedi, i configuration bit stanno in testa a tutto. Per il BOREN e CCPMX, leggi il datasheet: se poi hai dei dubbi ne parliamo.

Ciao.

Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong

-------------------------------------------------------------

PIC Experience - http://www.picexperience.it
Avatar utente
Foto UtentePaolino
32,6k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4226
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

0
voti

[45] Re: NE555 e duty cycle PWM a calare

Messaggioda Foto UtenteVRI » 10 gen 2014, 11:19

Grazie Foto UtentePaolino, ero a conoscenza della finestra per impostare i "configuration bits" ma non sapevo come utilizzarla :D Grazie!

Riguardo a quei due bit: CCPMX e BOREN sono riuscito a comprendere solo CCPMX: RB2 è il pin dedicato al modulo PWM ( master e slave), comparatore e "catturatore"? Pg. 67
Nel mio caso tornerà utile quando dovrò generare il segnale PWM per pilotare i transistor....
Grazie ancora :D
Avatar utente
Foto UtenteVRI
754 2 7 9
Sostenitore
Sostenitore
 
Messaggi: 1259
Iscritto il: 14 giu 2011, 12:00

Precedente

Torna a Elettronica generale

Chi c’è in linea

Visitano il forum: Nessuno e 48 ospiti