Come utilizzare la funzione TIMER sul CodeVision

F

faeng

Guest
Sono di nuovo per CodeVision e vorrei sapere per scrivere ofunction TIMER.
ciò che
è il codice sorgente?

 
Io uso codeVision una partita.
Non capisco che cosa vuoi fare esattamente.

Qual è la funzione del timer che si desidera scrivere?

saluti

 
I facendo Pulse ossimetro progetto e
Voglio cercare valore massimo e valore minimo di onda

Non so come l'impostazione del timer e non si conosce il codice sorgente di scrivere

Grazie per voi commento

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Sorriso" border="0" />
 
Se vuoi, se si può spiegare il progetto in modo che io possa aiutarvi.

Come se si può scrivere in quanto la procedura microcontrollore dovrebbe fare.

salutiAggiunto dopo 52 secondi:Un'altra cosa su come utilizzare Codevision

È possibile utilizzare il progetto strumento di generazione di impostazione del timer.

 
Il mio progetto è il monitoraggio della percentuale di ossigeno che è saturo di emoglobina; ossigenazione del sangue che le misure da sensori a infrarossi e il Rosso di assorbimento della luce
proprietà di deoxygenated ossigenati e di emoglobina.

Essa consiste in una sonda di rilevamento collegata ad un dito
del paziente che è connectec ad un sistema di calcolo e visualizzazione della percentuale di saturazione di ossigeno con l'emoglobina.
Io uso del sensore Nellcor società e mostrano percentuali di ossigeno dal display LCD.

Il microcontrollore per l'ossimetro necessario per svolgere i seguenti compiti:
Il sensore di controllo LED
Convertire l'uscita del sensore in una forma digitale
Ricevere valore A / D per calcolare e visualizzare il PMS
Siamo spiacenti, ma è necessario il login per visualizzare questo attaccamento

 
Fasi di microcontrollorIl primoMicrocontrollore deve controllo LED driver e poi il segnale in ingresso dal sensore e poi Amplificatore segnale in ingresso amplificatore Syncronous e Demodulatore rilevatore a infrarossi per una parte, e R
Siamo spiacenti, ma è necessario il login per visualizzare questo attaccamento

 
fase 2- A / D a ricevere il segnale analogico e la conversione al digitale IR e R per la massima
- Confronto di samping a 5 per il massimo valore
- Cancella Max e Min di samping
- Cercano di raggiungere il valore
- Convertitore da analogico a digitale IR e R per minimo
- Confronto di Samping a 5 per il valore minimo
- Cercare il valore minimo

 
faeng ha scritto:fase 2- A / D a ricevere il segnale analogico e la conversione al digitale IR e R per la massima

- Confronto di samping a 5 per il massimo valore

- Cancella Max e Min di samping

- Cercano di raggiungere il valore

- Convertitore da analogico a digitale IR e R per minimo

- Confronto di Samping a 5 per il valore minimo

- Cercare il valore minimo
 
Ho impulso di questo tipo e vorrei sapere come sapere ann massimo valore minimo.Come scrivere programma?So che rendono TGrazie per il tuo commento
Siamo spiacenti, ma è necessario il login per visualizzare questo attaccamento

 
ok,
Finalmente ho capito cosa volete fare.

Potete prendere un diverso segnale analogico e volete saperne di massimali e minimi e desidera conoscere il tempo tra di loro.

ok, ho un paio di domande per voi prima che io posso darvi una soluzione.Come fare a lungo e si attendono T sarà?
nella gamma di ms, noi,
i secondi o minuti ...

Quale chip AVR do u use?

si prega di controllare http://www.atmel.com/dyn/resources/prod_documents/doc2502.pdf

Questa la scheda per il chip ATMEGA8535.

In questa scheda, ricerca per la "Real Time".Potrai trovare il modo di fare una vera e propria contro il tempo e come si può controllare.

La necessità di contrastare in tempo reale dipende dalla gamma di T.

Saluti

 
Tale diritto

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Molto Felice" border="0" />Mi aspetto che sarà T min nel range.Io uso ATmega32 AVR.
E questo per la scheda chip ATMEGA8535.http://www.ecs.umass.edu/ece353/avr/doc2503.pdf

 
Salve,

Ecco cosa si vuole fare:

Potrai impostare il timer2 il chip ad una vera e propria del timer,
fare riferimento alla pagina 131 e la scheda leggere i valori del registro di configurazione del timer come un vero e proprio tempo ok.

In codevision, si imposta il timer di un altro Osc e si aggiunge la 32K cristallo sui piedini indicata nella scheda a pagina 131 sulla porta C. Impostare il prescaler per il valore massimo in modo che il conteggio dei cicli non troppo.

Ora per l'inizio del programma.Disattivare il timer, e sondaggio sul contributo da ADC e leggere i valori di effettuare una ricerca per codice di massima e minima.In un primo momento, la ricerca per ottenere il massimo, quando la massima è stata raggiunta consentire il timer.Si potrebbe voler impostare il timer per interrompere overflow in tempo per le grandi conteggio.Poi continuare seggi fino a trovare il prossimo massimo in questo momento di verificare il valore del timer.Ora avete calcolato la prima T.

La stessa cosa vale per i minimi come maxima's.Potrebbe essere necessario per definire uno stato di bit (bit globale) per controllare il flusso del vostro programma.

Saluti

 
la ringrazio per il vostro aiuto e ho qualche dubbio che
laVorrei sapere come scrivere questo codice?

plaese accenni a me di nuovo

grazie

 
Prima di tutto, lei sa come programmare in C?

Se si conosce, quindi ecco a voi quello che vuole fare:

1 - Utilizzare la procedura guidata di generazione di codice in codice per creare la visione di inizializzazione per voi.
Impostazione del timer come abbiamo discusso.Ma cambiare modo di inizializzazione è bloccato fino a trovare un massimo.

2 - Creazione di una funzione per ottenere il minimo e massimo per gli altri.

3 - Bando di tali funzioni per controllare i minimi o massimi e avviare il timer a minimi o massimi.

That's all.

Prova questi passaggi e di inviarmi il codice e quindi si può discutere di più.

Saluti

 
Questo è il mio programma ma non è il lavoro
/************************************************* ****
Questo programma è stato prodotto dalla
CodeWizardAVR V1.24.6 Professional
Programma Generatore automatico
ฉ Copyright 1998-2005 Pavel Haiduc, HP InfoTech srl
http://www.hpinfotech.com
e-mail: office (at) hpinfotech.com

Progetto:
Versione:
Data: 15/5/2008
Autore: F4CG
Azienda: F4CG
Commenti:Tipo di chip: ATmega32
Tipo di programma: Applicazione
Frequenza di clock: 14.745600 MHz
Memoria modello: Piccolo
SRAM dimensioni esterne: 0
Dati Stack dimensioni: 512
************************************************** *** /

# include <mega32.h>
# include <delay.h>
# include <stdio.h>
# define CAMPIONAMENTO 5
unsigned int read_adc (unsigned char adc_input);
static unsigned char registro input_index = 0;
registro static unsigned int loop;
unsigned char i, j, k, p;
unsigned int Vmax, Vmin;
unsigned int sampling_data1 [CAMPIONAMENTO];
unsigned int sampling_data2 [CAMPIONAMENTO];
unsigned s;
char str [16];

/ / Modulo LCD alfanumerico funzioni
# asm
. __lcd_port equ = 0x15; PORTC
# endasm
# include <lcd.h>

/ / Timer 2 overflow interrompere il servizio di routine
interrompere [TIM2_OVF] timer2_ovf_isr nullo (void)
(
if (input_index <CAMPIONAMENTO) (
sampling_data1 [input_index] = ADCW;
/ / Luogo il codice qui

))

# define ADC_VREF_TYPE 0x00

/ / Leggi il seguito di conversione AD
unsigned int read_adc (unsigned char adc_input)
(
ADMUX = adc_input | ADC_VREF_TYPE;
/ / Avvia la conversione AD
ADCSRA | = 0x40;
/ / Attesa per l'AD di conversione per completare
while ((ADCSRA & 0x10) == 0) ();
ADCSRA | = 0x10;
sampling_data1 [input_index] = ADCW;
if (input_index == 0) (/ / iniziale
Vmax = ADCW;
Vmin = ADCW;
)
if (ADCW> Vmax) (Vmax = ADCW;)
if (ADCW <Vmin) (Vmin = ADCW;)
/ / input_index ;
/ / loop = 0;
else (loop ;)
TCNT0 = 0xFB;
ADCW andata e ritorno;
)/ / Variabili globali Dichiarare il tuo qui

void main (void)
(
/ / Dichiarare le variabili qui il tuo locale

/ / Reset Fonte controllo
if (MCUCSR & 1)
(
/ / Power-on Reset
MCUCSR = 0;
/ / Luogo il codice qui

)
else if (MCUCSR & 2)
(
/ / Reset esterne
MCUCSR = 0;
/ / Luogo il codice qui

)
else if (MCUCSR
e 4)
(
/ / Brown Out Reset
MCUCSR = 0;
/ / Luogo il codice qui

)
altro
(
/ / Reset Watchdog
MCUCSR = 0;
/ / Luogo il codice qui

);

/ / Input / Output Ports inizializzazione
/ / Port A inizializzazione
/ / Func7 In Func6 = = = In Func5 In Func4 In Func3 = = = In Func2 In FUNC1 = A = A Func0
/ / State7 = State6 T = T State5 = State4 T = T State3 = State2 T = T State1 = T = T State0
PORTA = 0x00;
DDRA = 0x00;

/ / Port B inizializzazione
/ / Func7 In Func6 = = = In Func5 In Func4 In Func3 = = = In Func2 In FUNC1 = A = A Func0
/ / State7 = State6 T = T State5 = State4 T = T State3 = State2 T = T State1 = T = T State0
PORTB = 0x00;
DDRB = 0x00;

/ / Port C inizializzazione
/ / Func7 In Func6 = = = In Func5 In Func4 In Func3 = = = In Func2 In FUNC1 = A = A Func0
/ / State7 = State6 T = T State5 = State4 T = T State3 = State2 T = T State1 = T = T State0
PORTC = 0x00;
DDRC = 0x00;

/ / Port D inizializzazione
/ / Func7 In Func6 = = = In Func5 In Func4 In Func3 = = = In Func2 In FUNC1 = A = A Func0
/ / State7 = State6 T = T State5 = State4 T = T State3 = State2 T = T State1 = T = T State0
PORTD = 0x00;
DDRR = 0x00;

/ / Timer / Counter 0 inizializzazione
/ / Orologio fonte: orologio di sistema
/ / Orologio valore: Timer 0 Arrestato
/ / Modo: Normale superiore FFH =
/ / OC0 uscita: Disconnesso
TCCR0 = 0x00;
TCNT0 = 0x00;
OCR0 = 0x00;

/ / Timer / Counter 1 inizializzazione
/ / Orologio fonte: orologio di sistema
/ / Orologio valore: 1 Timer Arrestato
/ / Modo: Normale superiore = FFFFh
/ / OC1A uscita: sospesa.
/ / OC1B uscita: sospesa.
/ / Rumore Canceler: Off
/ / Input Capture su Falling Edge
/ / Timer 1 Overflow Interrupt: Off
/ / Input Capture Interrupt: Off
/ / Confronta A Match Interrupt: Off
/ / B Confronta Match Interrupt: Off
TCCR1A = 0x00;
TCCR1B = 0x00;
TCNT1H = 0x00;
TCNT1L = 0x00;
ICR1H = 0x00;
ICR1L = 0x00;
OCR1AH = 0x00;
OCR1AL = 0x00;
OCR1BH = 0x00;
OCR1BL = 0x00;

/ / Timer / Counter 2 inizializzazione
/ / Orologio fonte: orologio di sistema
/ / Orologio valore: Arrestato Timer 2
/ / Mode: Fase corretta PWM top FFH =
/ / Output OC2: Disconnesso
ASSR = 0x00;
TCCR2 = 0x40;
TCNT2 = 0x00;
OCR2 = 0x00;

/ / Interrupt esterne (s) di inizializzazione
/ / INT0: Off
/ / INT1: Off
/ / INT2: Off
MCUCR = 0x00;
MCUCSR = 0x00;

/ / Timer (s) / Counter (s) Interrupt (s) di inizializzazione
TIMSK = 0x40;

/ / Analog Comparator inizializzazione
/ / Analog Comparator: Off
/ / Analog Comparator input Acquisizione da Timer / Counter 1: Off
ACSR = 0x80;
SFIOR = 0x00;

/ / ADC inizializzazione
/ / ADC frequenza di clock: 115,200 kHz
/ / ADC tensione di riferimento: AREF pin
ADMUX = ADC_VREF_TYPE;
ADCSRA = 0x87;

/ / Inizializzazione modulo LCD
lcd_init (16);

/ / Timer watchdog inizializzazione
/ / Timer watchdog prescaler: OSC/32k
WDTCR = 0x09;

/ / Global consentire interrupt
# asm ( "sei")

while (1)
(
sampling_data1 [input_index] = read_adc (0);
delay_ms (700);
)
lcd_gotoxy (0,0);
sprintf (str, "% u", Vmin);
lcd_puts (str);
lcd_gotoxy (4,0);
sprintf (str, "% u", Vmax);
lcd_puts (str);
/ / Luogo il codice qui)

 
Questo è il mio nuovo codice per mescolare e veed min funziona, ma non so
come il mio polso veed che ho inviato a voi/************************************************* ****
Questo programma è stato prodotto dalla
CodeWizardAVR V1.24.6 Professional
Programma Generatore automatico
?Copyright 1998-2005 Pavel Haiduc, HP InfoTech srl
http://www.hpinfotech.com
e-mail: office (at) hpinfotech.com

Progetto:
Versione:
Data: 15/5/2008
Autore: F4CG
Azienda: F4CG
Commenti:Tipo di chip: ATmega32
Tipo di programma: Applicazione
Frequenza di clock: 11.059200 MHz
Memoria modello: Piccolo
SRAM dimensioni esterne: 0
Dati Stack dimensioni: 512
************************************************** *** /

# include <mega32.h>
# include <delay.h>
# include <stdio.h>
# include <math.h>/ / Modulo LCD alfanumerico funzioni
# asm
. __lcd_port equ = 0x15; PORTC
# endasm
# include <lcd.h>
# define CAMPIONAMENTO 5
unsigned int read_adc (unsigned char adc_input);
registro static unsigned int input_index;
registro static unsigned int loop;
unsigned int i, j;
unsigned int k, P, L, M, N, O;
int sampling_data1 [CAMPIONAMENTO];
int sampling_data2 [CAMPIONAMENTO];
int sampling_data3 [CAMPIONAMENTO];
int sampling_data4 [CAMPIONAMENTO];
unsigned int s;
int str [16];
/ / Timer 0 overflow interrompere il servizio di routine
interrompere [TIM0_OVF] timer0_ovf_isr nullo (void)
(
/ / Timer reinizializzare valore 0
TCNT0 = 0xFE;
/ / Luogo il codice qui
sampling_data1 [input_index] = read_adc (0);
sampling_data3 [input_index] = read_adc (0);

/ * Lcd_clear ();
lcd_gotoxy (12,1);
sprintf (str, "% u", sampling_data1 [input_index]);
lcd_puts (str); * /
input_index ;
)
# define ADC_VREF_TYPE 0xC0

/ / Leggi il seguito di conversione AD
unsigned int read_adc (unsigned char adc_input)
(
ADMUX = adc_input | ADC_VREF_TYPE;
/ / Avvia la conversione AD
ADCSRA | = 0x40;
/ / Attesa per l'AD di conversione per completare
while ((ADCSRA & 0x10) == 0);
ADCSRA | = 0x10;
ADCW andata e ritorno;
)

/ / Variabili globali Dichiarare il tuo qui
unsigned int s;

void main (void)
(
/ / Dichiarare le variabili qui il tuo locale

/ / Input / Output Ports inizializzazione
/ / Port A inizializzazione
/ / Func7 In Func6 = = = In Func5 In Func4 In Func3 = = = In Func2 In FUNC1 = A = A Func0
/ / State7 = State6 T = T State5 = State4 T = T State3 = State2 T = T State1 = T = T State0
PORTA = 0x00;
DDRA = 0x00;

/ / Port B inizializzazione
/ / Func7 Out Func6 = = = Func5 Out Out Out Func4 = = Func3 Out Func2 Out FUNC1 = = = Func0 Out Out
/ / State7 = 0 State6 = 0 State5 = 0 State4 = 0 State3 = 0 State2 = 0 State1 = 0 State0 = 0
PORTB = 0x00;
DDRB = 0xFF;

/ / Port C inizializzazione
/ / Func7 In Func6 = = = In Func5 In Func4 In Func3 = = = In Func2 In FUNC1 = A = A Func0
/ / State7 = State6 T = T State5 = State4 T = T State3 = State2 T = T State1 = T = T State0
PORTC = 0x00;
DDRC = 0x00;

/ / Port D inizializzazione
/ / Func7 In Func6 = = = In Func5 In Func4 In Func3 = = = In Func2 In FUNC1 = A = A Func0
/ / State7 = State6 T = T State5 = State4 T = T State3 = State2 T = T State1 = T = T State0
PORTD = 0x00;
DDRR = 0x00;

/ / Timer / Counter 0 inizializzazione
/ / Orologio fonte: orologio di sistema
/ / Orologio valore: 172,800 kHz
/ / Modo: Normale superiore FFH =
/ / OC0 uscita: Disconnesso
TCCR0 = 0x05;
TCNT0 = 0xFE;
OCR0 = 0x00;

/ / Timer / Counter 1 inizializzazione
/ / Orologio fonte: orologio di sistema
/ / Orologio valore: 1 Timer Arrestato
/ / Modo: Normale superiore = FFFFh
/ / OC1A uscita: sospesa.
/ / OC1B uscita: sospesa.
/ / Rumore Canceler: Off
/ / Input Capture su Falling Edge
/ / Timer 1 Overflow Interrupt: Off
/ / Input Capture Interrupt: Off
/ / Confronta A Match Interrupt: Off
/ / B Confronta Match Interrupt: Off
TCCR1A = 0x00;
TCCR1B = 0x00;
TCNT1H = 0x00;
TCNT1L = 0x00;
ICR1H = 0x00;
ICR1L = 0x00;
OCR1AH = 0x00;
OCR1AL = 0x00;
OCR1BH = 0x00;
OCR1BL = 0x00;

/ / Timer / Counter 2 inizializzazione
/ / Orologio fonte: orologio di sistema
/ / Orologio valore: Arrestato Timer 2
/ / Modo: Normale superiore FFH =
/ / Output OC2: Disconnesso
ASSR = 0x00;
TCCR2 = 0x00;
TCNT2 = 0x00;
OCR2 = 0x00;

/ / Interrupt esterne (s) di inizializzazione
/ / INT0: Off
/ / INT1: Off
/ / INT2: Off
MCUCR = 0x00;
MCUCSR = 0x00;

/ / Timer (s) / Counter (s) Interrupt (s) di inizializzazione
TIMSK = 0x01;

/ / Analog Comparator inizializzazione
/ / Analog Comparator: Off
/ / Analog Comparator input Acquisizione da Timer / Counter 1: Off
ACSR = 0x80;
SFIOR = 0x00;

/ / ADC inizializzazione
/ / ADC frequenza di clock: 172,800 kHz
/ / ADC tensione Riferimento: Int., Cap.su AREF
ADMUX = ADC_VREF_TYPE;
ADCSRA = 0x86;

/ / Inizializzazione modulo LCD
lcd_init (16);

/ / Global consentire interrupt
# asm ( "sei")
while (1)
(

while (input_index> = CAMPIONAMENTO)
(
# asm ( "cli") / / 5, quando ha ricevuto i campioni - chiara interrompere

k = sampling_data1 [1];
p = sampling_data1 [2];
j = max (k, p);
sampling_data2 [1] = j;

l = sampling_data3 [1];
m = sampling_data3 [2];
n = max (l, m);
sampling_data4 [1] = n;

o = max (j, n);

p = o ;lcd_clear ();
lcd_gotoxy (7,1);
sprintf (str, "% u", o);
lcd_puts (str);

lcd_gotoxy (5,0);
sprintf (str, "% u", j);
lcd_puts (str);

lcd_gotoxy (10,0);
sprintf (str, "% u", n);
lcd_puts (str);

j = 0;
delay_ms (400);
lcd_clear ();
input_index = 0;
# asm ( "sei") / / se non tutte le cose -
enable interrompere
);
)
)

 

Welcome to EDABoard.com

Sponsor

Back
Top