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