www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Prekinitev za TIM3

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
PrimozL
Član
Član



Pridružen-a: Tor 21 Mar 2006 10:55
Prispevkov: 404
Aktiv.: 1.72
Kraj: okolica Vipave

PrispevekObjavljeno: Ned Sep 02, 2007 7:45 pm    Naslov sporočila:  Prekinitev za TIM3 Odgovori s citatom

Živijo,

Imam en čuden problem. Prekinitev je vezana na timer 3 OC2. To je tudi edina omogočena prekinitev TIM3. Delovanje TIM3 preverjam z osciloskopom (izhod timerja vezan na pin) in dela OK.

Dogaja se mi, kot da se prekinitvena koda izvrši dvakrat. Če dodam v kodo klic "delay_us" (zakomentirana vrstica), dela OK.

Če dam resetiranje OC2 zastavice kot povsem zadnji ukaz v prekinitveni rutini, dela skoraj OK (občasno malo preskakuje). Resda teče stvar na ST ARMu, ampak mislim, da spada to vprašanje pod ARM jedro...

Zaključek: zgleda, kot da zastavice ne smem brisati prezgodaj.



volatile int tim_LED = 0;

// ----------------------------------------------------------------------------------
__irq void tim3_isr (void) {
if (tim_LED == 1) {
GPIO_WriteBit(LED_PORT, LED2, Bit_RESET);
tim_LED = 0;
}
else {
GPIO_WriteBit(LED_PORT, LED2, Bit_SET);
tim_LED = 1;
}

//delay_us(3);

TIM3->SR &= ~TIM_FLAG_OC2; // Clear Timer Overflow interrupt flag

VIC0->VAR = 0; // Acknowledge Interrupt
VIC1->VAR = 0;
}

LP Primož.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
PrimozL
Član
Član



Pridružen-a: Tor 21 Mar 2006 10:55
Prispevkov: 404
Aktiv.: 1.72
Kraj: okolica Vipave

PrispevekObjavljeno: Ned Sep 02, 2007 8:47 pm    Naslov sporočila:   Odgovori s citatom

Živijo,

Mea culpa - v PWM načinu TIM3, ki ga uporabljam, se aktivira ICF1 (input capture flag).

No, aktivira se tudi OCF2. Njegov problem pa je, da je aktiven ves čas, ko je timer enak OC2R, ne pa samo takrat, ko prvič postane stanje enako (prehod). To slednje pa nikjer ne piše... Zato je bilo potrebno zastavico brisati čim kasneje (ko je timer že na naslednji vrednosti).

Nasploh je za moj okus dokumentacija za STjeve ARMe dokumentacija veliko slabša od NXP.


LP Primož.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 502 dni


Powered by phpBB © 2001, 2005 phpBB Group