Sådan bruges TIMER funktionen på CodeVision

F

faeng

Guest
Jeg er ny for CodeVision og jeg ønsker at vide, at skrive TIMER ofunction.
Hvad kildekoden?

 
Jeg bruger codeVision et parti.
Jeg forstår ikke, hvad du vil gøre nøjagtig.

Hvad er timeren funktion, du vil skrive?

hilsen

 
Jeg gør Pulse Oximeter projektet og
Jeg ønsker at søge maksimal værdi og mindste værdi af bølge

Jeg ved ikke, hvordan indstilling Timer og kender ikke kildekoden til at skrive

Tak for Deres kommentar

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Smile" border="0" />
 
Se om du kan kun forklare dit projekt, så jeg kan hjælpe dig.

Ligesom hvis du kan blot skrive ned i trin hvad microcontroller bør gøre.

hilsenLagt efter 52 sekunder:En anden ting om brug Codevision

Du kan bruge projektet generation værktøj til at indstille timeren.

 
Mit projekt er overvågning procent af ilt, der er mættet med hæmoglobin; det foranstaltninger blod iltning af sensing Infrarød og Røde lys absorption
egenskaber deoxygenated og iltet hæmoglobin.

Det består af en sensing Sonden er knyttet til en patients finger, der er connectec at et system til beregning og visning af den procentdel af ilt mættet med hæmoglobin.
Jeg bruger følers Nellcor selskab og vise procent af ilt ved LCD.

Den microcontroller for oximeter nødvendig for at udføre følgende opgaver:
Kontrol sensoren lysdioder
Konvertere sensor output i en digital form
Modtage værdi fra A / D til at beregne og vise den LDC
Beklager, men du skal login for at se denne tilslutningskrav

 
Trin i microcontrollorDen førsteMicrocontroller skal kontrol-LED'erne Driver og derefter signalet fra sensoren i input Amplifier og derefter signalet fra input forstærker i Syncronous detektor og demodulator for en del IR og R
Beklager, men du skal login for at se denne tilslutningskrav

 
Trin 2- A / D modtage analoge signal og konvertere til digital IR og F til maksimal
- Sammenlign med samping til 5 værdi for maksimale
- Ryd Max og min til samping
- At søge maksimal værdi
- Analog til Digital Converter IR og R til minimum
- Sammenlign med Samping til 5 værdi for minimum
- At søge minimum værdi

 
faeng wrote:Trin 2- A / D modtage analoge signal og konvertere til digital IR og F til maksimal

- Sammenlign med samping til 5 værdi for maksimale

- Ryd Max og min til samping

- At søge maksimal værdi

- Analog til Digital Converter IR og R til minimum

- Sammenlign med Samping til 5 værdi for minimum

- At søge minimum værdi
 
Jeg har puls som denne, og jeg vil gerne vide, hvordan man kender maksimale ann minimum værdi.Hvordan skriver jeg programmet?Det gør jeg ved TTak for din kommentar
Beklager, men du skal login for at se denne tilslutningskrav

 
ok,
Jeg omsider kan forstå, hvad du vil gøre.

Du tager et varierende analogt signal, og du ønsker at kende maxima's og minima og ønsker at vide det tidspunkt mellem dem.

ok, jeg har et par spørgsmål til dig, før jeg kan give Dem en løsning.Hvor lang tid do u forvente T vil være?
i størrelsesordenen ms, os, sekunder eller minutter ...

Som AVR chip do u bruge?

du kontrollere http://www.atmel.com/dyn/resources/prod_documents/doc2502.pdf

Denne databladet for chip ATMEGA8535.

I dette faktablad, søge efter "Real Time".Du vil opdage, hvordan man kan gøre en reel Tidstælleren og hvordan du kan kontrollere den.

Behovet for realtid counter afhænger af den vifte af T.

Hilsen

 
Denne ret

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" />Jeg forventer T vil blive mins i intervallet.Jeg bruger AVR ATmega32.
Og dette datablad for chip ATMEGA8535.http://www.ecs.umass.edu/ece353/avr/doc2503.pdf

 
Hej,

Her er hvad du vil gøre:

Du vil indstille timer2 på chippen til reelle timer, henvises til databladet side 131 og læse om de værdier af register til opsætning timeren som realtid ok.

I codevision, du vil indstille timeren som en ekstern OSC og du vil tilføje 32k krystal på ben angivet i databladet side 131 på port C. Indstil prescaler til den maksimale værdi, således at tælle cyklusser er ikke for meget.

Nu i begyndelsen af programmet.Deaktivere timeren, og meningsmåling om input fra ADC og læse de værdier gøre en kode at søge efter maksimum og minimum.I første omgang søge efter maksimum, når maksimum er nået aktivere timeren.Du vil måske ønske at indstille timeren til at afbryde på overflow til store tid optælling.Derefter fortsætte valgstederne, indtil du finder den næste maksimale på dette tidspunkt tjekke værdien af timeren.Du har nu beregnet første T.

Gøre det samme for minima's som maxima's.Du får muligvis behov for at definere en stat bits (global bit) til at styre strømmen af dit program.

Hilsen

 
tak for din hjælp, og jeg har nogle spørgsmål, der
erJeg vil gerne vide, hvordan jeg skrive denne kode?

plaese hints til mig igen

tak

 
Først og fremmest Vil du vide hvordan man programmerer i C?

Hvis du kender, så her er hvad du vil gøre:

1 - Brug kode generation guiden i kode vision at skabe initialisering for dig.
Setup timeren som vi drøftede.Men ændre initialisering så det er stoppet, indtil du finder et maksimum.

2 - Opret en funktion for at få det mindste og andre for maksimum.

3 - Ring til disse funktioner til at kontrollere for minima eller maxima og starte timeren på minima og maksima.

That's all.

Prøv disse trin og sende mig den kode, og så kan vi diskutere mere.

Hilsen

 
Dette er mit program, men det
er ikke arbejde
/************************************************* ****
Dette program blev udarbejdet af det
CodeWizardAVR V1.24.6 Professional
Automatisk Program Generator
ฉ Copyright 1998-2005 Pavel Haiduc, HP InfoTech srl
http://www.hpinfotech.com
e-mail: kontor (at) hpinfotech.com

Projekt:
Version:
Dato: 15/5/2008
Udsteder: F4CG
Firma: F4CG
Kommentarer:Chip type: ATmega32
Program type: Anvendelse
Clock-frekvens: 14.745600 MHz
Memory model: Små
Eksterne SRAM størrelse: 0
Data Stack størrelse: 512
************************************************** *** /

#
include <mega32.h>
#
include <delay.h>
#
include <stdio.h>
# define PRØVEUDTAGNING 5
usignerede int read_adc (usignerede CHAR adc_input);
register statisk usignerede CHAR input_index = 0;
register statisk usignerede int abonnentkredsløb;
usignerede CHAR i, j, k, p;
usignerede int Vmax, Vmin;
usignerede int sampling_data1 [PRØVEUDTAGNING];
usignerede int sampling_data2 [PRØVEUDTAGNING];
usignerede s;
char str [16];

/ / Alfanumerisk LCD modul funktioner
# ASM
. EQU __lcd_port = 0x15; PORTC
# endasm
#
include <lcd.h>

/ / Timer 2 overflow interrupt service rutine
interrupt [TIM2_OVF] void timer2_ovf_isr (void)
(
if (input_index <PRØVEUDTAGNING) (
sampling_data1 [input_index] = ADCW;
/ / Sted din kode her

))

# define ADC_VREF_TYPE 0x00

/ / Læs AD konvertering resultat
usignerede int read_adc (usignerede CHAR adc_input)
(
ADMUX = adc_input | ADC_VREF_TYPE;
/ / Start AD konvertering
ADCSRA | = 0x40;
/ / Vent på AD konvertering til at fuldføre
mens ((ADCSRA & 0x10) == 0) ();
ADCSRA | = 0x10;
sampling_data1 [input_index] = ADCW;
if (input_index == 0) (/ / Initial
Vmax = ADCW;
Vmin = ADCW;
)
if (ADCW> Vmax) (Vmax = ADCW;)
if (ADCW <Vmin) (Vmin = ADCW;)
/ / input_index ;
/ / loop = 0;
else (sløjfe ;)
TCNT0 = 0xFB;
tilbagevenden ADCW;
)/ / Erklær din globale variabler her

void Main (void)
(
/ / Erklær din lokale variabler her

/ / Nulstil Kilde kontrol
if (MCUCSR & 1)
(
/ / Power-on Nulstil
MCUCSR = 0;
/ / Sted din kode her

)
ellers hvis (MCUCSR & 2)
(
/ / Eksterne Nulstil
MCUCSR = 0;
/ / Sted din kode her

)
ellers hvis (MCUCSR & 4)
(
/ / Brown-Out Nulstil
MCUCSR = 0;
/ / Sted din kode her

)
anden
(
/ / Watchdog Nulstil
MCUCSR = 0;
/ / Sted din kode her

);

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

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

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

/ / Port D initialisering
/ / Func7 = I Func6 = I Func5 = I Func4 = I Func3 = I Func2 = I FUNC1 = I Func0 = I
/ / State7 = T State6 = T State5 = T State4 = T State3 = T State2 = T State1 = T State0 = T
PORTD = 0x00;
DDRD = 0x00;

/ / Timer / Counter 0 initialisering
/ / Clock source: System Clock
/ / Clock værdi: Timer 0 Stoppet
/ / Mode: Normal top = FFH
/ / OC0 output: Afbrudt
TCCR0 = 0x00;
TCNT0 = 0x00;
OCR0 = 0x00;

/ / Timer / Counter 1 initialisering
/ / Clock source: System Clock
/ / Clock værdi: Timer 1 Stoppet
/ / Mode: Normal top = FFFFh
/ / OC1A output: Discon.
/ / OC1B output: Discon.
/ / Støj Canceler: Off
/ / Input Capture på Falling Edge
/ / Timer 1 Overflow Interrupt: Off
/ / Input Capture Interrupt: Off
/ / Sammenlign A Match Interrupt: Off
/ / Sammenlign B 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 initialisering
/ / Clock source: System Clock
/ / Clock værdi: Timer 2 Stoppet
/ / Mode: Fase korrekte PWM top = FFH
/ / OC2 output: Afbrudt
ASSR = 0x00;
TCCR2 = 0x40;
TCNT2 = 0x00;
OCR2 = 0x00;

/ / Eksterne Interrupt (s) initialisering
/ / INT0: Off
/ / INT1: Off
/ / INT2: Off
MCUCR = 0x00;
MCUCSR = 0x00;

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

/ / Analog sammenligner initialisering
/ / Analog sammenligner: Off
/ / Analog sammenligner Input Capture af Timer / Counter 1: Off
ACSR = 0x80;
SFIOR = 0x00;

/ / ADC initialisering
/ / ADC Clock-frekvens: 115.200 kHz
/ / ADC Spænding Reference: Aref pin
ADMUX = ADC_VREF_TYPE;
ADCSRA = 0x87;

/ / LCD modul initialisering
lcd_init (16);

/ / Watchdog Timer initialisering
/ / Watchdog Timer Prescaler: OSC/32k
WDTCR = 0x09;

/ / Global aktivere interrupts
# ASM ( "sei")

mens (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);
/ / Sted din kode her)

 
Dette er min nye kode til veed mix og min det arbejde, men jeg ved ikke,
hvordan du veed min puls, at jeg har sendt til dig/************************************************* ****
Dette program blev udarbejdet af det
CodeWizardAVR V1.24.6 Professional
Automatisk Program Generator
?Copyright 1998-2005 Pavel Haiduc, HP InfoTech srl
http://www.hpinfotech.com
e-mail: kontor (at) hpinfotech.com

Projekt:
Version:
Dato: 15/5/2008
Udsteder: F4CG
Firma: F4CG
Kommentarer:Chip type: ATmega32
Program type: Anvendelse
Clock-frekvens: 11.059200 MHz
Memory model: Små
Eksterne SRAM størrelse: 0
Data Stack størrelse: 512
************************************************** *** /

#
include <mega32.h>
#
include <delay.h>
#
include <stdio.h>
#
include <math.h>/ / Alfanumerisk LCD modul funktioner
# ASM
. EQU __lcd_port = 0x15; PORTC
# endasm
#
include <lcd.h>
# define PRØVEUDTAGNING 5
usignerede int read_adc (usignerede CHAR adc_input);
register statisk usignerede int input_index;
register statisk usignerede int abonnentkredsløb;
usignerede int i, j;
usignerede int k, p, l, m, n, o;
int sampling_data1 [PRØVEUDTAGNING];
int sampling_data2 [PRØVEUDTAGNING];
int sampling_data3 [PRØVEUDTAGNING];
int sampling_data4 [PRØVEUDTAGNING];
usignerede int s;
int str [16];
/ / Timer 0 overflow interrupt service rutine
interrupt [TIM0_OVF] void timer0_ovf_isr (void)
(
/ / Reinitialize Timer 0 værdi
TCNT0 = 0xFE;
/ / Sted din kode her
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

/ / Læs AD konvertering resultat
usignerede int read_adc (usignerede CHAR adc_input)
(
ADMUX = adc_input | ADC_VREF_TYPE;
/ / Start AD konvertering
ADCSRA | = 0x40;
/ / Vent på AD konvertering til at fuldføre
mens ((ADCSRA & 0x10) == 0);
ADCSRA | = 0x10;
tilbagevenden ADCW;
)

/ / Erklær din globale variabler her
usignerede int s;

void Main (void)
(
/ / Erklær din lokale variabler her

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

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

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

/ / Port D initialisering
/ / Func7 = I Func6 = I Func5 = I Func4 = I Func3 = I Func2 = I FUNC1 = I Func0 = I
/ / State7 = T State6 = T State5 = T State4 = T State3 = T State2 = T State1 = T State0 = T
PORTD = 0x00;
DDRD = 0x00;

/ / Timer / Counter 0 initialisering
/ / Clock source: System Clock
/ / Clock værdi: 172.800 kHz
/ / Mode: Normal top = FFH
/ / OC0 output: Afbrudt
TCCR0 = 0x05;
TCNT0 = 0xFE;
OCR0 = 0x00;

/ / Timer / Counter 1 initialisering
/ / Clock source: System Clock
/ / Clock værdi: Timer 1 Stoppet
/ / Mode: Normal top = FFFFh
/ / OC1A output: Discon.
/ / OC1B output: Discon.
/ / Støj Canceler: Off
/ / Input Capture på Falling Edge
/ / Timer 1 Overflow Interrupt: Off
/ / Input Capture Interrupt: Off
/ / Sammenlign A Match Interrupt: Off
/ / Sammenlign B 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 initialisering
/ / Clock source: System Clock
/ / Clock værdi: Timer 2 Stoppet
/ / Mode: Normal top = FFH
/ / OC2 output: Afbrudt
ASSR = 0x00;
TCCR2 = 0x00;
TCNT2 = 0x00;
OCR2 = 0x00;

/ / Eksterne Interrupt (s) initialisering
/ / INT0: Off
/ / INT1: Off
/ / INT2: Off
MCUCR = 0x00;
MCUCSR = 0x00;

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

/ / Analog sammenligner initialisering
/ / Analog sammenligner: Off
/ / Analog sammenligner Input Capture af Timer / Counter 1: Off
ACSR = 0x80;
SFIOR = 0x00;

/ / ADC initialisering
/ / ADC Clock-frekvens: 172.800 kHz
/ / ADC Spænding Reference: Int., Hætte.om Aref
ADMUX = ADC_VREF_TYPE;
ADCSRA = 0x86;

/ / LCD modul initialisering
lcd_init (16);

/ / Global aktivere interrupts
# ASM ( "sei")
mens (1)
(

while (input_index> = PRØVEUDTAGNING)
(
# ASM ( "cli") / / når modtaget 5 prøver - klar afbryder

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") / / når gøre alle ting -
enable interrupt
);
)
)

 

Welcome to EDABoard.com

Sponsor

Back
Top