Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Startup con pulsante premuto per 3 secondi

Tipologie, strumenti di sviluppo, hardware e progetti

Moderatore: Foto UtentePaolino

0
voti

[1] Startup con pulsante premuto per 3 secondi

Messaggioda Foto Utentekiltro » 14 apr 2016, 13:40

Buongiorno a tutti,

sono nuovo alla programmazione dei microcontrollori e mi sto attualmente cimentando con il 12F509, Baseline a 8 bit.
Sto seguendo alcuni tutorial trovati in rete, ma per ora non ho trovato ancora nulla che mi spieghi come realizzare questo:

Alla pressione di un pulsante PER PIU' DI 3 SECONDI parte il codice principale che fa accendere un led.
Stessa cosa per lo spegnimento, premendo il pulsante PER PIU DI 3 SECONDI il led si spegne.

Voi come lo realizzereste?
Mettendo il PIC in sleep in presenza di alimentazione per svegliarlo dopo i 3 secondi di pressione e viceversa per lo spegnimento?
Come posso impostare i 3 secondi di attesa sotto i quali il LED non si accende (o non si spegne)?
Avatar utente
Foto Utentekiltro
15 3
New entry
New entry
 
Messaggi: 77
Iscritto il: 8 feb 2013, 19:02

0
voti

[2] Re: Startup con pulsante premuto per 3 secondi

Messaggioda Foto UtenteIlGuru » 29 apr 2016, 10:07

Il 12F509 ha un timer da 256bit ed un clock interno a 4MHz il che vuol dire 1 ciclo macchina ogni micro secondo.
Con queste due informazioni puoi programmare TMR0 e facendolo partire da 6 ogni volta che scatta l'interrupt del timer puoi incrementare un contatore di 2 byte ogni 250 micro secondi.

Con il PIC in sleep, quando premi il tasto lo risvegli con un interrupt on change e confronti lo stato del pin collegato al pulsante ed il valore del contatore.
Se il tasto è ancora premuto quando il contatore supera il valore 12.000 significa che il pulsante è stato premuto per un T > 1 \mu s \times 250 \times 12000 = 3000000 \mu s = 3 s

A quel punto fai quel che devi fare, tra cui rimettere in sleep mode il PIC
\Gamma\nu\tilde{\omega}\theta\i\ \sigma\epsilon\alpha\upsilon\tau\acute{o}\nu
Avatar utente
Foto UtenteIlGuru
5.482 2 10 13
G.Master EY
G.Master EY
 
Messaggi: 1924
Iscritto il: 31 lug 2015, 23:32

1
voti

[3] Re: Startup con pulsante premuto per 3 secondi

Messaggioda Foto UtenteBrianz » 29 apr 2016, 10:25

12F509 è un Baseline è ha alcune limitazioni:
- non dispone di interrupt
- il Timer0 non può essere una sorgente di wakeup perché in sleep non è attivo.
- nei Baseline il wakeup da sleep equivale ad un reset e modifica sia TRIS che OPTION
Col che occorre reinizializzare e se necessario discriminare la causa del reset.

Quindi:
- POR: inizializzazioni processore. Abilitazione pin change wakeup
- sleep
Al wakeup per cambio stato pin:
- avvio conteggio
- durante lo svolgimento del conteggio, verifica dello stato del pulsante : se on per >tempo richiesto, accende LED
- attesa apertura contatto + debounce
non vedo la necessità di mandarlo in sleep con il LED acceso dato che il consumo di questo sarà superiore a quello del micro
- attesa chiusura contatto e ripetizione del conteggio
- se >tempo, led off e passa in sleep dopo avere abilitato il pin change.
Avatar utente
Foto UtenteBrianz
5.828 5 10
CRU - Account cancellato su Richiesta utente
 
Messaggi: 858
Iscritto il: 24 mar 2016, 11:27


Torna a Realizzazioni, interfacciamento e nozioni generali.

Chi c’è in linea

Visitano il forum: Nessuno e 14 ospiti