Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Semplice lampeggio led con 12F683

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[1] Semplice lampeggio led con 12F683

Messaggioda Foto Utentestainless » 16 dic 2012, 19:47

Ciao a tutti, come da titolo voglio realizzare un semplice lampeggio led sulla porta GP2 di un pic12F683, questo il codice
Codice: Seleziona tutto
#include <htc.h>
#include "delay.c"

__CONFIG (FCMDIS & IESODIS & BORDIS & UNPROTECT & MCLRDIS & PWRTEN & WDTDIS & INTIO);

#define _XTAL_FREQ 8MHZ
#define LED GPIO2


void main (void) {

//selezione della frequenza dell'oscillatore interno a 8MHz
OSCCON=0b01110000;
//attendo che l'oscillatore si stabilizza
while(!HTS) {}

TRISIO=0b111111011;
GPIO=0;
ADCON0=0;


OPTION=0b10000011; //GPIO pull-ups disabilitate
INTCON=0b00100000; //disabilitato interrupt globale



while(1){
LED^=1;
DelayMs(250);
DelayMs(250);

}//fine while
}//fine main


dovrebbe eseguire all'infinito l'inversione di stato della porta dopo una pausa di circa 500ms ma non so perché la porta resta sempre a livello alto.
Ho controllato con l'oscilloscopio pensando alla routine di ritardo (che peraltro ha sempre funzionato su altri PIC) e in effetti l'uscita è stabile a livello alto.
L'ambiente di sviluppo è MPLAB IDE 8.86 e il programmatore PICkit2, il micro è montato su breadboard al quale è aggiunto solo il led con relativa resistenza limitatrice e alimento per le prove con lo stesso programmatore.
E' la prima volta che programmo questo PIC ho sbagliato forse la configurazione di qualche registro?
Avatar utente
Foto Utentestainless
35 4
New entry
New entry
 
Messaggi: 71
Iscritto il: 15 mar 2011, 20:56

1
voti

[2] Re: Seplice lampeggio led con 12F683

Messaggioda Foto UtentePaolino » 16 dic 2012, 22:28

Dopo aver compilato, controlla cosa dice la finestra dei configuration bits in merito all'oscillatore interno. Purtroppo non ho ancora installato XC8 e non riesco a vedere cosa accade, usando il tuo codice.

Altra domanda: puoi provare con MPLAB SIM e verificare cosa accade?

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

[3] Re: Seplice lampeggio led con 12F683

Messaggioda Foto Utentestainless » 16 dic 2012, 23:07

I bit FOSC<2:0> sono configurati come 100 quindi INTOSCIO oscillator: I/O function on GP4/OSC2/CLKOUT pin, I/O function on GP5/OSC1/CLKIN.
Con MPLAB SIM se elimino la riga while[!HTS] che non riesco a scavalcare, entra nel loop infinito ed esegue il ciclo che avevo previsto.
Avatar utente
Foto Utentestainless
35 4
New entry
New entry
 
Messaggi: 71
Iscritto il: 15 mar 2011, 20:56

1
voti

[4] Re: Seplice lampeggio led con 12F683

Messaggioda Foto UtentePaolino » 16 dic 2012, 23:12

Forse ho capito. Prova a disabilitare i comparatori interni:

Codice: Seleziona tutto
CMCON0 = 0x07;
ANSEL = 0;
TRISIO=0b111111011;
GPIO=0;
ADCON0=0;


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

[5] Re: Seplice lampeggio led con 12F683

Messaggioda Foto Utentestainless » 16 dic 2012, 23:29

Scusami Paolo non ho ancora apportato la modifica che mi hai suggerito perché ho rifatto la simulazione con MPLAB SIM e mi sono accorto che lo stato della porta effettivamente non veniva invertito.
L'istruzione
Codice: Seleziona tutto
LED^=1;

l'ho sostituita con la forma più spartana
Codice: Seleziona tutto
LED=1;
DelayMs(250);
DelayMs(250);
LED=0;
DelayMs(250);
DelayMs(250);

e funziona.
Eppure ho già usato in passato l'operatore XOR....
Avatar utente
Foto Utentestainless
35 4
New entry
New entry
 
Messaggi: 71
Iscritto il: 15 mar 2011, 20:56

1
voti

[6] Re: Seplice lampeggio led con 12F683

Messaggioda Foto UtentePaolino » 17 dic 2012, 7:08

La cosa è in effetti curiosa... Prova anche con la disabilitazione dei comparatori, scrica il fw e poi racconta cosa è accaduto.

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

[7] Re: Seplice lampeggio led con 12F683

Messaggioda Foto Utentestainless » 17 dic 2012, 23:09

Foto UtentePaolino non so che dirti, ho ricompilato il codice con l'operatore XOR e ora funziona :shock: probabilmente avevo fatto qualche errore che ho risolto senza neppure rendermene conto #-o .
Comunque ho seguito il tuo consiglio disabilitando i comparatori, dato che al momento non mi servono risparmierò una manciata di uA
O_/
Avatar utente
Foto Utentestainless
35 4
New entry
New entry
 
Messaggi: 71
Iscritto il: 15 mar 2011, 20:56

2
voti

[8] Re: Seplice lampeggio led con 12F683

Messaggioda Foto UtentePaolino » 17 dic 2012, 23:10

Bene, Foto Utentestainless: sono contento che sia tutto ok :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 3 ospiti