spacer.png, 0 kB

Torna indietro   Roboitalia.com - Il primo portale in Italia sulla robotica amatoriale > Robotica di base > Informatica

Rispondi
 
Strumenti discussione Modalità  visualizzazioe
  #1  
Vecchio 20-04-2006, 19.01.35
dreammaster83 dreammaster83 non è collegato
Nuovo robottaro
 
Data registrazione: 22-11-2005
Residenza: Bari
Età : 36
Messaggi: 4
Potenza reputazione: 0
dreammaster83 E' per ora ancora un mistero
Predefinito contakm per auto con pic

Ciao, e' da un po' che non frequento il forum, mi sto cimentando in un nuovo progetto:
Si tratta di realizzare un contakm con tachimetro digitale, in un futuro vorrei aggiungere la possibilita di salvare i dati acquisiti.
Ho trovato un sensore che si monta in serie alla cordina originale del contakm dell'auto ed in uscita mi da un impulso per ogni giro della cordina.
La funzione principale quindi dovrebbe essere contare il numero di impulsi in un intervallo di tempo predefinito. data la distanza percorsa dal mezzo per ogni giro di cordina saprei quanti km ha percorso e dividendo questa distanza per l'intervallo di tempo saprei anche la velocita'.
Per il linguaggio sono indeciso fra pic basic pro e c (ccs c)
Qualcuno sa darmi una dritta per come contare il numero di impulsi? (possibilmente senza perderne nessuno).
Le due idee che mi vengono in mente sono:
in pb Pro usare la funzione count e di volta in volta incrementare una var globale la mia paura e' pero' che nel tempo che trascorre fra il termine di una istruzione count e la seguente mi perda qualche impulso..(tempo in cui faccio tutti i vari calcoli ed aggiorno dei display a 7 segmenti).
l'alternativa in c e' di creare un ciclo main in cui tengo aggiornati i display 7 segmenti dalla var globale e faccio tutti i calcoli, ed un interrupt che appena riceve un impulso mi incrementa di uno la var globale. con questa soluzione non saprei piu' con precisione l'intervallo di tempo ma preferisco rinunciare ad avere il calcolo della velocita' in favore di una misurazione piu' precisa della distanza percorsa. (la mia paura qui e' che gli interrupt avvengano cosi di frequente da accavallarsi o da non permettermi di eseguire le istruzione del ciclo main)
Quale vi sembra piu' affidabile delle due soluzioni?
Ne avete da proporre una terza?
purtroppo non mi sono mai cimentato con applicazioni in cui il tempo e la velocita' di esecuzione sono determinanti..
Ciao,
Luca

Ultima modifica di dreammaster83 : 20-04-2006 alle ore 19.05.20
Rispondi citando
  #2  
Vecchio 20-04-2006, 20.33.08
L'avatar di astrobeed
astrobeed astrobeed non è collegato
Robottaro sostenitore
 
Data registrazione: 18-03-2004
Residenza: Roma
Età : 60
Messaggi: 3,377
Potenza reputazione: 350
astrobeed La sua reputazione è oltre la sua famaastrobeed La sua reputazione è oltre la sua famaastrobeed La sua reputazione è oltre la sua famaastrobeed La sua reputazione è oltre la sua famaastrobeed La sua reputazione è oltre la sua famaastrobeed La sua reputazione è oltre la sua famaastrobeed La sua reputazione è oltre la sua famaastrobeed La sua reputazione è oltre la sua fama
Predefinito

Citazione:
Orginalmente inviato da dreammaster83
l'alternativa in c e' di creare un ciclo main in cui tengo aggiornati i display 7 segmenti dalla var globale e faccio tutti i calcoli, ed un interrupt che appena riceve un impulso mi incrementa di uno la var globale. con questa soluzione non saprei piu' con precisione l'intervallo di tempo ma preferisco rinunciare ad avere il calcolo della velocita' in favore di una misurazione piu' precisa della distanza percorsa. (la mia paura qui e' che gli interrupt avvengano cosi di frequente da accavallarsi o da non permettermi di eseguire le istruzione del ciclo main)
Non vedo problemi, la velocitÃ* di rotazione della corda che arriva al tachimetro non è certo enorme, al massimo può fare gli stessi rpm del motore quindi in hertz sono decisamente pochi, p.e. 12000 rpm = 200 hz.
Un pic non ha certo problemi a gestire 200 impulsi al secondo in ingresso, con l'interrupt non solo gestisci l'impulso ma nel contempo leggi un timer che hai precedentemente attivato in free run, in questo modo sai pure il periodo di ogni impulso e quindi la velocitÃ*, ogni volta che leggi il timer lo devi azzerare.
__________________
Bye
Rispondi citando
  #3  
Vecchio 20-04-2006, 20.44.16
dreammaster83 dreammaster83 non è collegato
Nuovo robottaro
 
Data registrazione: 22-11-2005
Residenza: Bari
Età : 36
Messaggi: 4
Potenza reputazione: 0
dreammaster83 E' per ora ancora un mistero
Predefinito

grazie per la spiegazione, mi resta solo un dubbio, e' impossibile che mentre sto gestendo un interrupt la cordina faccia un'altro giro?Nel caso fosse possibile cosa succederebbe?L'evento verrebbe messo in coda in attesa di essere gestito oppure perderei il dato?Ciao,Luca
Rispondi citando
  #4  
Vecchio 21-04-2006, 06.13.41
L'avatar di sergio_camici
sergio_camici sergio_camici non è collegato
Administrator
 
Data registrazione: 24-05-2002
Residenza: Binasco (MI)
Età : 54
Messaggi: 2,665
Potenza reputazione: 302
sergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua fama
Predefinito

Citazione:
Orginalmente inviato da dreammaster83
grazie per la spiegazione, mi resta solo un dubbio, e' impossibile che mentre sto gestendo un interrupt la cordina faccia un'altro giro?Nel caso fosse possibile cosa succederebbe?L'evento verrebbe messo in coda in attesa di essere gestito oppure perderei il dato?Ciao,Luca
Ma basta fare due conti...

Un pic a 4Mhz processa 1 milione di istruzioni al secondo.
1 milione diviso 200 (Hz) = 5000 istruzioni tra un impulso e l'altro.
Riesci a fare un incremento ed altri calcoli con meno di 5000 istruzioni?

ciao
S
__________________
ciao
Sergio
---
Hai deciso di costruire un robot? Bene...
Cominciamo dalle brutte notizie: non e' facile...
Rispondi citando
  #5  
Vecchio 21-04-2006, 07.38.18
dreammaster83 dreammaster83 non è collegato
Nuovo robottaro
 
Data registrazione: 22-11-2005
Residenza: Bari
Età : 36
Messaggi: 4
Potenza reputazione: 0
dreammaster83 E' per ora ancora un mistero
Predefinito

Ok, siete stati chiarissimi! :-)
Ora non mi resta che ristudiarmi bene l'uso degli interrupt e fare delle prove.
Ciao,
Luca
Rispondi citando
  #6  
Vecchio 16-06-2006, 12.55.20
dreammaster83 dreammaster83 non è collegato
Nuovo robottaro
 
Data registrazione: 22-11-2005
Residenza: Bari
Età : 36
Messaggi: 4
Potenza reputazione: 0
dreammaster83 E' per ora ancora un mistero
Predefinito

Ho fatto un po di prove secondo quanto detto:
ho usato un interrupt sul pin B0 (external interrupt)
ogni volta che si genera l'interrupt incremento di 1 una variabile globale.
Nel main invio sulla seriale il valore aggiornato della var.
In questa configurazione funziona, ho letto pero' sul forum del compilatore (ccs) che sarebbe meglio usare un interrupt del modulo ccp1 in modalita' capture in modo da generare un interrupt ogni X impulsi e non ad ogni in impulso. in effetti la macchina compie un metro ogni 100 impulsi (ad esempio)
ho letto l'app note 594 della microchip ma non mi ha chiarito molto le idee....
qualcuno potrebbe dare qualche chiarimento o una fonte piu' comprensibile dell'app note?(che oltretutto ha gli esempi solo in assembler..)
Ricordo che sto uando il compilatore c della ccs.
Ciao e grazie ancora dell'aiuto,
Luca.
Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione
Modalità  visualizzazioe

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code è Attivato
Le smilies sono Attivato
[IMG] è Attivato
Il codice HTML è Disattivato

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
problema amplificatore auto alex707 Elettronica 1 06-03-2009 12.31.27
motori alzacristalli auto accacca Motori e azionamenti 2 21-10-2007 15.08.24
accendere l'auto con telecomando Dark_Edo Elettronica 20 01-07-2007 09.44.37
K-FEE AUTO SPOT!!! Rammstein Discussioni off-topic 1 29-12-2004 15.06.28
PER R2D2 auto elettriche ghzrobot Discussioni off-topic 1 15-06-2003 21.10.22


Tutti gli orari sono GMT. Adesso sono le: 08.29.58.


Basato su: vBulletin Versione 3.8.8
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Realizzazione siti web Cobaltica Foligno
spacer.png, 0 kB