Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

progetto microcontrollore

Tipologie, strumenti di sviluppo, hardware e progetti

Moderatore: Foto UtentePaolino

0
voti

[21] Re: progetto microcontrollore

Messaggioda Foto Utentedarkweader » 8 lug 2012, 19:24

Avrei un dubbio concettuale, scusate se i termini non sono precisi, ma sto ancora studiando questa parte, vorrei giusto levarmi questo dubbio

Allora volendo realizzare un orologio:

L'idea era di utilizzare il Timer1 come Counter sfruttando un oscillatore secondario (32.7KHz) immagino sappiate già per quale motivo,

precarico il registro ad un valore tale per cui quando va in overflow sia passato 1 secondo, quando accade viene generato un interrupt e vado a svolgere le dovute operazioni, ovvero incremento i secondi , i minuti o le ore.

Supponendo di voler inserire una modalità "SVEGLIA" quando viene premuto il tasto viene generato un interrupt esterno che mi fa andare alla routine relativa "ImpostaSveglia".

quindi il PC punta alla porzione di codice relativa alla routine, finché l'operatore non imposta la sveglia, il PC resterà in questa "porzione di codice"

Il Timer1 continuerà a contare, ma i secondi, i minuti o le ore non verranno incrementate, e quindi avrò la perdita del "orario"

quindi dove ho capito male? o come si dovrebbe "fare"?
Avatar utente
Foto Utentedarkweader
61 2 7
Frequentatore
Frequentatore
 
Messaggi: 271
Iscritto il: 8 mag 2011, 17:32

0
voti

[22] Re: progetto microcontrollore

Messaggioda Foto UtenteTardoFreak » 8 lug 2012, 21:49

Queste cose si fanno non sotto interrupt (parlo della gestione sveglia) ma implementando una macchina a stati.
A dire il vero tutta la macchina orologio/sveglia e relative regolazioni si implementa con una macchina a stati.
E a dirla tutta più o meno tutti i programmi per microcontrollori implementano una o più macchine a stati.

Ho in animo di scrivere un articolo su questo ma ... non trovo il tempo anche perché vorrei scriverlo bene. :(
"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

0
voti

[23] Re: progetto microcontrollore

Messaggioda Foto Utentedarkweader » 9 lug 2012, 2:15

praticamente la continuazione di "scrivere un programma per un microcontrollore"
Avatar utente
Foto Utentedarkweader
61 2 7
Frequentatore
Frequentatore
 
Messaggi: 271
Iscritto il: 8 mag 2011, 17:32

0
voti

[24] Re: progetto microcontrollore

Messaggioda Foto Utentedarkweader » 9 lug 2012, 9:34

quello che vorrei realizzare nel complesso è una cosa simile:
http://www.youtube.com/watch?v=SWO_yplgAdw

più l'aggiunta di alcune cose, tipo il controllo sulla batteria e in caso fare andare l'orologio in modalità risparmio energetico;

Le basi teoriche penso di averle, ovvero ho studiato le varie periferiche del micro, o visto diversi esercizi, che nel complesso singolarmente coprono tutto il progetto, mi manca solamente:

- la generazione dei toni
-ADC, per il sensore di temperatura

Solo che ho problemi a mettere insieme il tutto, volevo realizzare il progetto per "passi" ovvero, prima realizzare solo l'orologio, poi aggiungere la temperatura, successivamente la sveglia e quindi il menù (senza un tono particolare) in fine aggiungere uno o due toni differenti.

Tuttavia per fare ciò penso di dover scrivere il codice in un certo modo, sin dall'inizio, per poter inseguito espandere il progetto...


Hai qualche consiglio su questo? è possibile approcciarmi al problema in questo modo?


La macchina a stati di cui mi parlavi, praticamente sarebbe realizzare una sorta di multitasking? ho trovato in rete qualcosa sui PIC, giusto per capire di cosa si tratta

http://stor.altervista.org/PIC/page4/pic16f84_4.htm

Tuttavia non capisco perché dici che non si devono usare gli interrupt
Avatar utente
Foto Utentedarkweader
61 2 7
Frequentatore
Frequentatore
 
Messaggi: 271
Iscritto il: 8 mag 2011, 17:32

1
voti

[25] Re: progetto microcontrollore

Messaggioda Foto UtenteTardoFreak » 9 lug 2012, 10:15

Calma calma, andiamo per ordine.
Cerco di essere sintetico.

Interrupt sui pulsanti.
E' assolutamente inutile in questa applicazione. Ricordati che il programma di un micro esegue di continuo un ciclo infinito di funzionamento. All' inizio di questo ciclo si leggono gli ingressi e poi si esegue il passaggio di funzionamento. Non serve usare l' interrupt perché lo puoi fare benissimo con questo metodo chiamato polling.

Macchina a stati.
Se ci pensi bene il tuo orologio non ha un solo stato di funzionamento ma può essere in diversi stati (ridotti all' osso):
(A) Visualizzazione ora. Lo stato "normale", per intenderci.
(B) Regolazione ore orologio.
(C) Regolazione minuti orologio.
(D) Regolazione ore sveglia.
(E) Regolazione minuti sveglia.
In più ha un flag, una variabile che può assumere due diversi valori (0 o diverso da 0) che ti indica se la sveglia sta squillando. Zero se non sta squillando, diverso da 0 (1 ad esempio) se sta squillando.

Alla partenza sarai nello stato (A) dove di continuo viene aggiornato il display con l' ora, verifica che sia stata raggiunta l' ora della sveglia (se si mette a 1 la variabile del suono) e ci rimane fino a quando non sente la pressione di un pulsante.
Se premi il tasto di regolazione dell' ora vai nello stato (B) e li esegui il compito di regolazione delle ore dell' orologio. Alla successiva pressione del pulsante di regolazione dell' ora passi allo stato (C) e rgoli, un ulteriore pressione aggiorna i registri ore e minuti e ti riporta nello stato (A).
Stessa cosa per la regolazione della sveglia.

A grandi liee è questo il modo in cui devi organizzare il programma, spero di essere stato chiaro. Purtroppo devo sistemare una modifica al volo e correre da un cliente.

Il multitasking è un' altra faccenda ed è meglio che in questa fase lo lasci perdere. Poi non c' entra niente con il lavoro che devi fare.

Ci risentiamo più avanti. O_/
"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

0
voti

[26] Re: progetto microcontrollore

Messaggioda Foto Utentedarkweader » 9 lug 2012, 22:43

sto avendo dei problemi ad impostare il "clock di sistema",
vorrei imparare a settare l'oscillatore interno calibrato, e l'oscillatore esterno a quarzo;

volevo fare la prima prova con quello interno, impostando una frequenza di oscillazione di 4MHz, allora ho letto il datasheet, quando sono andato a caricare il programma sul micro attraverso AVRStudio4, nella sezione bit fuses non mi tornava nulla di quello che ho letto sul datasheet;

Ho un po' le idee confuse, è possibile settare entrambi gli oscillatori completamente da AVRstudio?

Quello che viene riportato sul datasheet è per settarli via software?
Avatar utente
Foto Utentedarkweader
61 2 7
Frequentatore
Frequentatore
 
Messaggi: 271
Iscritto il: 8 mag 2011, 17:32

0
voti

[27] Re: progetto microcontrollore

Messaggioda Foto Utentedarkweader » 10 lug 2012, 0:53

Sembra essere molto più semplice settare l'oscillatore esterno con il cristallo, oltre ad essere più preciso di quello interno ed essere quello che poi voglio andare ad utilizzare;
Cercherò quindi di provare prima con questo

va montato il cristallo insieme ai condensatori, i cui valori di capacità sono indicati nella tabella: tra 12-22pF
userò quelli da 22pF non ho trovato ulteriori indicazioni su come scegliere tali capacità, oltre ovviamente al range di frequenza in cui si trova la frequenza di oscillazione del cristallo

i fuse da settare sono :

il fuse CKOPT
e i fuses CKSEL3..1

non capisco da dove vadano settati,
del primo non so se devo programmarlo o meno:


Quando CKOPT è programmato, l'uscita dell'oscillatore "will oscillate will a full rail-to-rail swing on the output"(???).
Questa modalità è adatta quando si opera in un ambiente molto rumoroso o quando l'uscita XTAL2 aziona un secondo buffer di clock.Questa modalità ha una vasta gamma di frequenza.
Quando CKOPT non è programmato , l'oscillatore ha uno swing di uscita più piccolo.
Questo riduce il consumo energetico notevolmente.
Questa modalità ha una gamma di frequenza limitata e non può essere utilizzato per pilotare clock buffers.

suppongo che vada programmato.(???)

gli altri fuse vanno impostati asseconda di CKOPT, c'è una tabella che non è difficile da interpretare se CKOPT=0 che ha quanto ho capito significa, che il bit fuse è programmato allora CKSEL3..1= 101, 110,111 per frequenze tra 1 e 16 MHz, quindi non so quale delle tre utilizzare per CKSEL.

da quanto ho capito questa è la proceduta che andrebbe seguita se si vogliono settare i fuses via software.


Quando collego l'stk al PC, e connetto la stessa attraverso AVRStudio4, la situazione è un po' diversa:

Immagine2.png
Immagine2.png (76.79 KiB) Osservato 5028 volte


come si può vedere dall'immagine è selezionabile CKTOPT suppongo vada spuntato se lo vogliamo programmare, poi bisogna impostare SUT_CKSEL

nel menù a tendina ci sono le possibili "alternative" il mio dubbio è tra High Freq. e Medium Freq. (???)
e non ho la minima idea di quale sia lo "start up time" adeguato.




Sempre che sia giusto settare cosi il oscillatore esterno con il cristallo, devo fare qualcos'altro???


inoltre dalla schermata sono selezionabili altre due finestre

Immagine3.png
Immagine3.png (48.06 KiB) Osservato 5028 volte


potreste indicarmi in quali casi intervenire su queste?
mi pare che in "advanced" si utilizza per l'oscillatore interno calibrato, che ho visto ha una procedura un po' complicata che non ho capito affondo...o sbaglio?

E HWsetting?

Queste ultime due domande sono di minore importanza, se la risposta è troppo lunga o sono troppe domande, non le considerate :D


O_/
Avatar utente
Foto Utentedarkweader
61 2 7
Frequentatore
Frequentatore
 
Messaggi: 271
Iscritto il: 8 mag 2011, 17:32

0
voti

[28] Re: progetto microcontrollore

Messaggioda Foto Utentedarkweader » 22 lug 2012, 1:23

RISOLTO :mrgreen:
Avatar utente
Foto Utentedarkweader
61 2 7
Frequentatore
Frequentatore
 
Messaggi: 271
Iscritto il: 8 mag 2011, 17:32

Precedente

Torna a Realizzazioni, interfacciamento e nozioni generali.

Chi c’è in linea

Visitano il forum: Nessuno e 7 ospiti