Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Sleep mode per PIC18f4550

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

1
voti

[1] Sleep mode per PIC18f4550

Messaggioda Foto Utentechri36 » 16 mar 2014, 22:14

Ciao a tutti :-) vorrei chiedervi una mano su come posso attivare la sleep mode sul mio pic18f4550 tramite un pulsante. Ho cercato esempi su internet ma per il mio PIC non ho trovato esempi. Da quel che ho capito serve un interrupt giusto? :-) o posso mandarlo in sleep mode anche senza interrupt usando un if o un while? :-)
Grazie mille in anticipo per l'aiuto :D
Avatar utente
Foto Utentechri36
5 2
 
Messaggi: 7
Iscritto il: 7 ott 2013, 15:42

2
voti

[2] Re: Sleep mode per PIC18f4550

Messaggioda Foto UtenteTardoFreak » 17 mar 2014, 0:05

La storia dell' if e del while non capisco cosa ci azzecchi con lo stato di sleep.
Quando la MPU è in sleep è ferma, viene poi risvegliata da un' interrupt, ad esempio un ingresso esterno di interrupt.
Sempre che tu la voglia far dormire davvero (lo si fa per motivi di consumo) altrimenti de devi solo fare in modo che aspetti qualcosa e non te ne frega niente dei consumi la "inluppi" e finito il chiasso.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

1
voti

[3] Re: Sleep mode per PIC18f4550

Messaggioda Foto Utentegiovannispina » 17 mar 2014, 0:50

chri36 ha scritto:Ciao a tutti :-) vorrei chiedervi una mano su come posso attivare la sleep mode sul mio pic18f4550 tramite un pulsante. Ho cercato esempi su internet ma per il mio PIC non ho trovato esempi. Da quel che ho capito serve un interrupt giusto? :-) o posso mandarlo in sleep mode anche senza interrupt usando un if o un while? :-)
Grazie mille in anticipo per l'aiuto :D


Ciao. Per svegliare un PIC tramite un pulsante ti basta collegarlo alla porta INT0 e poi accertarti che il PIC, prima che vada in modalità sleep, abbia il GIE (enable interrupt) settato a 1. Tutto qui. :)
Avatar utente
Foto Utentegiovannispina
126 1 3
 
Messaggi: 43
Iscritto il: 27 lug 2013, 12:31

0
voti

[4] Re: Sleep mode per PIC18f4550

Messaggioda Foto UtenteShockwaver » 17 mar 2014, 11:30

chri36 ha scritto:[...] attivare la sleep mode sul mio pic18f4550 tramite un pulsante. [...]

[...] posso mandarlo in sleep mode [...]

Spe' però da come hai scritto sembra che tu voglia mandare il PIC in sleep e non farlo uscire... ?%
Se così fosse ti basta un controllo sullo stato del pulsante nel ciclo principale del tuo programma che in caso avvia l'istruzione sleep con tutti gli annessi e connessi.
Farlo uscire poi è un altro conto e si fa come ti hanno suggerito prima Foto UtenteTardoFreak e succesivamente Foto Utentegiovannispina. Ricordati del delay. Trovi tutto sul datasheet
Anyone who has never made a mistake has never tried anything new
Two things are infinite: universe and human stupidity, and I'm not sure about the former
You did not really understand something unless you can explain it to your grandmother
A. Einstein
Avatar utente
Foto UtenteShockwaver
770 1 5 11
Expert
Expert
 
Messaggi: 859
Iscritto il: 3 mar 2010, 18:56

1
voti

[5] Re: Sleep mode per PIC18f4550

Messaggioda Foto UtentePaolino » 17 mar 2014, 11:46

Un'altra cosa molto importante. La modalità di sleep ha senso principalmente per motivi di riduzione dei consumi (come già fatto osservare da Foto UtenteTardoFreak). Invocare l'istruzione sleep non è però garanzia di consumi ridotti! Devi assicurarti di aver spento le periferiche che durante la modalità di sleep non servono, ad esempio il modulo ADC, qualche timer, la porta seriale, ecc. In questo modo, in sleep e con le periferiche spente, si ottengono davvero consumi minimi.
La scelta di cosa disattivare prima di sleep (che poi va riattivato al risveglio della CPU) dipende dall'applicazione.

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

[6] Re: Sleep mode per PIC18f4550

Messaggioda Foto UtenteShockwaver » 17 mar 2014, 12:00

Dimenticavo. Settare il bit GIE non basta, bisogna anche settare il relativo bit dell'interrupt per il risveglio. Nell'esempio di Foto Utentegiovannispina il bit INT0IE nel registro INTCON.
Rimane da capire cosa devi fare...
Anyone who has never made a mistake has never tried anything new
Two things are infinite: universe and human stupidity, and I'm not sure about the former
You did not really understand something unless you can explain it to your grandmother
A. Einstein
Avatar utente
Foto UtenteShockwaver
770 1 5 11
Expert
Expert
 
Messaggi: 859
Iscritto il: 3 mar 2010, 18:56

0
voti

[7] Re: Sleep mode per PIC18f4550

Messaggioda Foto Utentechri36 » 19 mar 2014, 23:10

Io vorrei che quando premo un pulsante su RB4 lui entri in sleep mode spegnendo un display che ho già configurato e tutto :) solo che non riesco a farlo andare in sleep mode :/
Avatar utente
Foto Utentechri36
5 2
 
Messaggi: 7
Iscritto il: 7 ott 2013, 15:42

0
voti

[8] Re: Sleep mode per PIC18f4550

Messaggioda Foto Utentegiovannispina » 20 mar 2014, 0:33

chri36 ha scritto:Io vorrei che quando premo un pulsante su RB4 lui entri in sleep mode spegnendo un display che ho già configurato e tutto :) solo che non riesco a farlo andare in sleep mode :/


Codice: Seleziona tutto
void main()
{
   // main loop

   for (;;) {
      // your code

      if (PORTB.B4)
         _asm { SLEEP }
   }
}


Dici così?
Avatar utente
Foto Utentegiovannispina
126 1 3
 
Messaggi: 43
Iscritto il: 27 lug 2013, 12:31


Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti