spacer.png, 0 kB

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

Rispondi
 
Strumenti discussione Modalità  visualizzazioe
  #1  
Vecchio 16-04-2008, 06.59.59
L'avatar di Myzhar
Myzhar Myzhar non è collegato
Robottaro master
 
Data registrazione: 07-04-2008
Residenza: Marina di Massa
Età : 42
Messaggi: 363
Potenza reputazione: 226
Myzhar La sua reputazione è oltre la sua famaMyzhar La sua reputazione è oltre la sua famaMyzhar La sua reputazione è oltre la sua famaMyzhar La sua reputazione è oltre la sua famaMyzhar La sua reputazione è oltre la sua famaMyzhar La sua reputazione è oltre la sua famaMyzhar La sua reputazione è oltre la sua fama
Predefinito Impostazione TMR1 per contare impulsi esterni (C18)

Salve,
sto sempre litigando con la lettura con PIC 18F4331 della frequenza emessa da un sensore RGB
(vd http://forum.roboitalia.com/showthread.php?p=30294)

In pratica attualmente sto utilizzando TMR1 per contare gli impulsi.
Ad ogni OverFlow di TMR1 incremento un contatore, ogni 100 msec aggiorno il valore totale:
Codice:
curr = int_cont*65536 + (TMR1L & 0x00FF) + ((int)TMR1H << 8);
dove int_cont è il contatore del numero di overflow avvenuti su TMR1.

Leggendo curr tramite porta seriale mi aspetterei di trovarvi un valore molto simile (la frequenza non è stabile), invece leggo valori diversi che si ripetono ciclicamente...

Il mio dubbio è che sia errata la configurazione di TMR1:
Codice:
void initTimer1( )
{
    TRISCbits.TRISC0 = 1;    // RC0 input
        
    PIE1bits.TMR1IE = 0;    // Interrupt disattivati
    
    T1CONbits.TMR1ON = 1;     // Timer acceso    
    T1CONbits.RD16 = 1;        // Timer a 16 bit se = 1
    T1CONbits.T1RUN = 0;    // TMR1 non system clock
    T1CONbits.T1CKPS1 = 0;    // prescaler 1
    T1CONbits.T1CKPS0 = 0;    // prescaler 1
    T1CONbits.T1OSCEN = 0;    // TMR1 oscillatore off
    T1CONbits.T1SYNC = 0;    // Clock esterno sincro
    T1CONbits.TMR1CS = 1;    // Clock esterno su RC0 ()
}
Avete suggerimenti?

Grazie
Walter
__________________
-------------------------------
_________ Myzhar _________
._______ Open Source _______.
.__________ Robot __________.
__ myzharbot.robot-home.it __
____ www.robot-home.it ____
-------------------------------
Rispondi citando
  #2  
Vecchio 16-04-2008, 08.47.52
L'avatar di Myzhar
Myzhar Myzhar non è collegato
Robottaro master
 
Data registrazione: 07-04-2008
Residenza: Marina di Massa
Età : 42
Messaggi: 363
Potenza reputazione: 226
Myzhar La sua reputazione è oltre la sua famaMyzhar La sua reputazione è oltre la sua famaMyzhar La sua reputazione è oltre la sua famaMyzhar La sua reputazione è oltre la sua famaMyzhar La sua reputazione è oltre la sua famaMyzhar La sua reputazione è oltre la sua famaMyzhar La sua reputazione è oltre la sua fama
Predefinito

Come sempre appena cerco aiuto sul forum la soluzione al problema mi arriva da sola poco dopo.

Semplicemente mi dimenticavo di azzerare TMR1 ad ogni lettura del conteggio degli impulsi

Lascio il thread perché la routine di inizializzazione può servire ad altri.
__________________
-------------------------------
_________ Myzhar _________
._______ Open Source _______.
.__________ Robot __________.
__ myzharbot.robot-home.it __
____ www.robot-home.it ____
-------------------------------
Rispondi citando
  #3  
Vecchio 17-05-2008, 13.25.11
L'avatar di calo
calo calo non è collegato
Moderator
 
Data registrazione: 14-06-2006
Residenza: EmiliaSiciliaRomagna
Messaggi: 802
Potenza reputazione: 86
calo E' un faro della comunità
Predefinito

Spulciando il sito di una board opensource basata su Atmega168 (il progetto si chiama Arduino, completo di relativo compilatore) ho trovato questa funzione:
http://www.arduino.cc/en/Reference/PulseIn

Per il C18 non esiste qualcosa di simile????
Rispondi citando
  #4  
Vecchio 17-05-2008, 14.32.27
L'avatar di astrobeed
astrobeed astrobeed non è collegato
Robottaro sostenitore
 
Data registrazione: 18-03-2004
Residenza: Roma
Età : 60
Messaggi: 3,377
Potenza reputazione: 352
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 calo Visualizza messaggio
Per il C18 non esiste qualcosa di simile????
Arduino usa un suo metalinguaggio derivato da C/C++ e gli AVR, con i pic se vuoi misurare un impulso lo puoi fare in hardware con i moduli CCP, le librerie del C18 gestiscono con apposite funzioni, totalmente scritte in ANSI C e disponibili in sorgente, tale modulo.
La funzione PulseIn lavora in software, non è che sia molto utile visto che tiene bloccato il processore fino alla fine del conteggio o per tutto il timeout, il modulo CCP non richiede tempo CPU fino a che non scatta il relativo interrupt.
__________________
Bye
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
impulsi radio - inviare segnale radio volo86 Arduino 4 15-02-2013 21.13.45
Impulsi per servocomandi jfaggioni Elettronica 4 30-11-2002 04.55.36


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


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