Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Hello World, una variazione sul tema

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

5
voti

[1] Hello World, una variazione sul tema

Messaggioda Foto UtentePaolino » 3 nov 2013, 9:48

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 5563 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.
"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)

1
voti

[2] Re: Hello World, una variazione sul tema

Messaggioda Foto Utentemir » 3 nov 2013, 10:17

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:
Avatar utente
Foto Utentemir
66,0k 9 12 13
G.Master EY
G.Master EY
 
Messaggi: 21869
Iscritto il: 19 ago 2004, 21:10

2
voti

[3] Re: Hello World, una variazione sul tema

Messaggioda Foto UtentePaolino » 3 nov 2013, 13:14

Per così poco ...

Grazie, Foto Utentemir

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

[4] Re: Hello World, una variazione sul tema

Messaggioda Foto UtenteCseven » 10 nov 2013, 21:18

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
Avatar utente
Foto UtenteCseven
25 3 6
Frequentatore
Frequentatore
 
Messaggi: 284
Iscritto il: 25 apr 2009, 18:27
Località: Tv

2
voti

[5] Re: Hello World, una variazione sul tema

Messaggioda Foto UtentePaolino » 11 nov 2013, 12:57

Bene! Se hai qualche dubbio, sai dove siamo :ok:

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)


Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti