AVR Input Capture rejtely
Fuzesi Arnold
arno at externet.hu
Sun Jan 8 16:51:08 CET 2006
#pragma vector=TIMER1_CAPT_vect
__interrupt void CAPT_handler(void)
{
static uint
rising=0;
if(gbi(TCCR1B,ICES1) ){ //rising edge
outLED_PWM=1;
rising=ICR1;
cbi(TCCR1B,ICES1); //switch to falling
}
else if(!gbi(TCCR1B,ICES1) ){ //falling
uint falling=ICR1;
outLED_PWM=0;
sbi(TCCR1B,ICES1); //switch to rising
falling-=rising;
if(falling<32768){
icr1=falling;
icr1_update=1;
}
}
}
outLED_PWM szepen koveti a bejovo jelet...szoval nem esik ki
"szinkronból"....
Total nem értem miert vannak 65000-res kulonbsegek...
mint pl ezek:
> icr1, rising, falling
> ICR:ffe1,27d,25e
> ICR:ffe3,15e,141
Biztos en vagyok a hulye, csak nemtom hol...
Arnold
----- Original Message -----
From: "Fuzesi Arnold" <arno at externet.hu>
To: <avr-hun at x-dsl.hu>; <elektro at tesla.hu>
Sent: Sunday, January 08, 2006 4:19 PM
Subject: AVR Input Capture rejtely
> Sziasztok!
>
>
> ICP labon az alabbi jelalak ms (azaz a proci jocskan gyorsabb)
> nagysagrendben:
> 000111100000000000000000111100000000000000000011
>
> Kód:
> uint icr1;
>
> __interrupt void CAPT_handler(void)
> {
> static uint
> rising=0;
> if(gbi(TCCR1B,ICES1) ){ //rising edge
> rising=ICR1; //save timestamp
> cbi(TCCR1B,ICES1); //switch to falling edge
> }
> else if(!gbi(TCCR1B,ICES1) ){ //falling edge
> uint falling=ICR1; //save timestamp
> sbi(TCCR1B,ICES1); //switch to rising
> icr1=falling-rising; //calc dist
> icr1_update=1;
> }
> }
>
> Miért ad ez vissza vajon ilyen eredmenyt?
> icr1, rising, falling
> ICR:ffe1,27d,25e
> ICR:ffe3,15e,141
> ICR:17,e1,f8
> ICR:14,200,214
> ICR:ffef,3bf,3ae
> ICR:ffef,2a0,28f
> ICR:ffee,62,50
> ICR:11,be,cf
> ICR:11,2fc,30d
>
> Azaz mit keresnek benne negativ, vagy ha ugy tetszik baromi nagy szamok?
>
> A falling kesobb van mint a rising, azaz ha barmikor kivonom a fallingbol
> a risinget, akkor egy kicsi szamot kell kapjak.
> Akkor is ha kozben a timer tulszaladt 65535-on...tulcsordul.
>
> Nem ertem mit keres benne 27d, 25e....Mitől mér ilyen nagy időket? Mikor a
> falling élnél szamolok mindent, és az az megelőző rising él
> 10-20 távolsagra lehetett csak előtte...
>
> A fenti algoritmusban lehet valami hiba?
> Egyszerűen nem jövök rá micsoda...
>
> Vagy a proci nem vesz észre minden élt?
>
> Arnold
>
> _______________________________________________
> Avr-hun mailing list
> Avr-hun at x-dsl.hu
> http://www.x-dsl.hu/cgi-bin/mailman/listinfo/avr-hun
More information about the Elektro
mailing list