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.
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.