Pagina 1 di 1

Hello World, una variazione sul tema

MessaggioInviato: 3 nov 2013, 9:48
da Paolino
Ogni tanto, lettori de Pillole di microcontrollori PIC mi rivolgono qualche domanda, qualche chiarimento. Se posso, cerco di essere di aiuto. Questa volta è Foto UtenteCseven che mi chiede sostanzialmente come poter accendere un LED seguendo l'esempio di Hello World, impiegando PICKit3 e la scheda di valutazione che Microchip propone.

Cosa fa Hello World? Sul libro si punta ad accendere un singolo LED, connesso a RB0 di PIC16F876A, secondo questo schema semplificato:


Sulla scheda di Microchip, che utilizza un PIC18F45K20, invece, la porta RB0 è connessa ad un pulsante, secondo questo schema di collegamento:



Sempre su quella scheda, 8 LED sono connessi a PORTD, come indicato nel seguito:



Va detto inoltre che il PIC18F45K20, a differenza del PIC16F876A, dispone di un oscillatore interno, benché la scheda abbia a bordo un quarzo da 10MHz ed uno da 32KHz.

Lo strumento da impiegare per compilare l'esercizio è MikroC.

Fatte queste doverose premesse, ho "sparigliato un po' le carte". Dato che Foto UtenteCseven ha a disposizione 8 LED ho pensato di modificare il programma eseguendo uno shift register, ed eccolo qui:

Codice: Seleziona tutto
#define ALL_PORT_OUTPUT 0x00
#define ALL_PORT_INPUT  0xFF

/* Prototipi di funzione */
void InitPic (void);

void main()
{
    unsigned char index;
    InitPic(); /* Inizializza il PIC */

    /* Esecuzione dello shift register */
    while (1)
    {
        for (index=0;index<8;index++)
        {
            LATD = 0;
            LATD = (1<<index);
            delay_ms(200);
        }
    }
}

void InitPic (void)
{
    /* Oscillatore interno, 8MHz */
    OSCCON = 0x60;

    /* In attesa di frequenza stabile... */
    while (!IOFS_bit);

    /* Setup porte: PORTD tutta output */
    TRISD = ALL_PORT_OUTPUT;
}



Il programma originale si basava su PORTB, questo invece impiega PORTD. Inoltre si sfrutta l'oscillatore interno, che viene impostato a 8MHz.

Va detto inoltre che al momento stiamo utilizzando MikroC 6.00, mentre in origine si utilizzava la versione 2.50 ma questo non va inficiare gli effetti della compilazione, dato che si parla di un programmino davero semplice. Ad ogni modo queste sono le impostazioni di progetto dei configuration bit impiegate:

PIC18F45K20.JPG
PIC18F45K20.JPG (54.47 KiB) Osservato 5565 volte


Qualche riferimento:
PIC16F876A
PIC18F45K20
PICKit3 44-pin demoboard user's guide
Compilatore MikroC

Spero di aver aiutato a chiarire un po' le idee.

Ciao.

Paolo.

Re: Hello World, una variazione sul tema

MessaggioInviato: 3 nov 2013, 10:17
da mir
Paolino ha scritto: Se posso, cerco di essere di aiuto.

non sono pratico di PIC, ma caspita che aiuto ... :D , Foto UtentePaolino sei un Grande :ok:

Re: Hello World, una variazione sul tema

MessaggioInviato: 3 nov 2013, 13:14
da Paolino
Per così poco ...

Grazie, Foto Utentemir

Ciao

Paolo

Re: Hello World, una variazione sul tema

MessaggioInviato: 10 nov 2013, 21:18
da Cseven
Grazie Foto UtentePaolino per la guida :D ne farò buon uso.

Mi scuso per la risposta in ritardo, ho avuto problemi con l'alimentatore del notebook.

Grazie ancora per la disponibilità,

Claudio

Re: Hello World, una variazione sul tema

MessaggioInviato: 11 nov 2013, 12:57
da Paolino
Bene! Se hai qualche dubbio, sai dove siamo :ok:

Ciao

Paolo