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)?
Startup con pulsante premuto per 3 secondi
Moderatore:
Paolino
3 messaggi
• Pagina 1 di 1
0
voti
0
voti
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
A quel punto fai quel che devi fare, tra cui rimettere in sleep mode il PIC
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

A quel punto fai quel che devi fare, tra cui rimettere in sleep mode il PIC

1
voti
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.
- 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.
-

Brianz
5.828 5 10 - CRU - Account cancellato su Richiesta utente
- Messaggi: 858
- Iscritto il: 24 mar 2016, 11:27
3 messaggi
• Pagina 1 di 1
Torna a Realizzazioni, interfacciamento e nozioni generali.
Chi c’è in linea
Visitano il forum: Nessuno e 14 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)


