PWM dekoding

K

k1_zav

Guest
Hei.
Jeg har en ADXL202 og vil dekode dens PWM utgang.

Jeg bruker en ATmega8 og en LCD-skjerm for visning av data.

Så jeg har et problem og jeg kan ikke løse det.Dens utgang er 1,44 og ikke endres når ADXL rotere eller riste eller ...

Jeg dont vite hvor er problemet.
Av det jeg bruker Codevision AVR kompilatoren.

Dette er min avbryte tjenesten rutine (jeg bruker ekstern avbruddsordrelinje 1 og skriving fangst):

"# Asm (" CLI ");
tidtaker = TCNT1;
counter ;

/ / MCUCR = 0x0C: avbruddsordrelinje på stigende kanten
/ / MCUCR = 0x08: avbruddsordrelinje på fallende kantif (MCUCR == 0x0C)
(
/ / The avbruddsordrelinje var stigende kanten
/ / Det neste avbruddsordrelinje vil være på fallende kant
MCUCR = 0x08;

perioden = tidtaker - counter_start;
counter_start = tidtakeren;

duty_cycle = pulse_width / perioden;
)
ellers
(
/ / The avbruddsordrelinje var fallende kanten
/ / Det neste avbruddsordrelinje vil være stigende kanten
MCUCR = 0x0C;

counter_stop = tidtakeren;
pulse_width = counter_stop - counter_start;

);

GIFR | = 0x80;
# asm ( "sei") "Så etter at jeg bruker timer0 overflyt avbruddsordrelinje til refresah LCD.

Behage hjelpe meg.
Takk.

 
Hallo,
Hvorfor ikke besvart?
Jeg også interessert i denne saken,
Hvordan beregne puls varighet?

Jeg bruker ATmega8 Microcontroller, prøver å gjøre robot kontrolleren på radioen kontroll.fra mottakeren dekoder er pulser av 1 ms til 2 ms.bety midten 1.5 ms.
Jeg trenger å telle pulser som vil generere et PWM signal til roboten motorer.
Hvis for eksempel pulser
1 ms - full tilbake
1.5 ms - Stopp
2ms - full fremover

hvordan du gjør dette ved hjelp CodeVisionAVR?

 

Welcome to EDABoard.com

Sponsor

Back
Top