Re: Obsluha vnějšího přerušení u PIC

Michal Gregor a2x1nptda8 na email.cz
Pondělí Říjen 25 09:59:01 CEST 2010


Ja bych vůbec nedával tlacitko na vstup preruseni. Kontakt si dela co chce.
Mam to takto:

// Tlačítko
#define K_TLACITKO_CASOVANI_10MS 10
static volatile n_u01 Tlacitko_Vysledek;
static volatile n_u08 Tlacitko_Casovani_10mS = K_TLACITKO_CASOVANI_10MS;
static volatile Boolean Tlacitko_Je_Aktivace = FALSE;

// Spustit co 10mS
static void Vyhodnot_Tlacitko_10ms(void) {

 if ( Tlacitko_Vysledek == Tlacitko_Vstup ) {
    Tlacitko_Casovani_10ms = K_TLACITKO_CASOVANI_10MS;
 }
 else {
  --Tlacitko_Casovani_10ms;
     if ( 0 == Tlacitko_Casovani_10ms ) {

         Tlacitko_Casovani_10ms = K_VS_CASOVANI_10MS;
         Tlacitko_Vysledek = Tlacitko_Vysledek bitxor 1;

         // Změna stavu
      // Je to nový stisk?
   if ( G_K_PRT_TLACITKO_STISKNUTO == Tlacitko_Vysledek ) {
          Tlacitko_Je_Aktivace = TRUE;
         }
  }
 }
}


Michal Gregor


  ----- Original Message ----- 
  From: Kručinský Ladislav 
  To: HW-news 
  Sent: Monday, October 25, 2010 9:48 AM
  Subject: RE: Obsluha vnějšího přerušení u PIC


  Díky za RE, už jsem se rozloučil s tím, že se někdo ozve (asi to není dostatečně off topic ;-).
  Ty zákmity (podle osciloskopu) trvají 400 mikrosekund, takže jsem 2 milisekundy pokládal za dostačující čas pro jejich překlenutí. Ale asi tam mám něco blbě, budu ještě chvilku hloubat. 
  Ale jak už jsem uvedl, šlo mi o to naučit se obsloužit přerušení zvenku od mechanického kontaktu aniž bych ho musel hardwarově ošetřovat.


  L. Kručinský

  -----Original Message-----
  From: hw-list-bounces na list.hw.cz [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Tomáš Hamouz
  Sent: Monday, October 25, 2010 8:58 AM
  To: HW-news
  Subject: Re: Obsluha vnějšího přerušení u PIC

  Myslím že jste si odpověděl sám.
  Zákmity trvají řádově jednotky až desítky milisekund a s tím je nutno v programu počítat.

  Ošetření tlačítek, psané přímo pro PIC:
  http://www.dattalo.com/technical/software/pic/debounce.html
  K ošetření 8 tlačítek stačí 12 instrukcí a 2 pracovní registry.

  Tomáš



  KL> Dobrého večera přeji.
  KL> Při pátku bych poprosil nějakého rutinéra aby mi zkusil naznačit co dělám blbě.
  KL> Chci si ověřit, že program pro obsluhu vnějšího přerušení dělá to co chci já a zatím to nedopadá.
  KL> HW: 
  KL> do GPIO2 jsem zapojil mirkospínač k 0V a nakonfiguroval pullup.
  KL> na GPIO0 je výstup pro LED přes odpor k +5.
  KL> Ostatní vstupy nehrají roli.
  KL> SW:
  KL> Abych si (vyloženě z cvičných důvodů) ověřil že podprogram ISR 
  KL> funguje dobře, tak v obsluze invertuju registr temp1(ř.65) a tím pak 
  KL> přepisuju porty GPIO(ř.46) - LEDka by měla na každé kliknutí změnit stav.
  KL> Na vstupu GPIO2 jsou od mikrospínače odskoky v délce asi 400 us.
  KL> Tak jsem si řekl, dobrá - při prvním sepnutí se zakáže přerušení a 
  KL> povolí se až po zpoždění 2 ms. Jenže to nefunguje - na mikrospínač 
  KL> klofu jak zběsilý a občas to přepne.
  KL> Když zpoždění zvýším na 200 ms (ř.68 - movlw 0) tak to vcelku pravidelně přepne po dvojkliku.
  KL> Ale pokud ošetřím vstup kondenzátorem (odskoky podle osciloskopu
  KL> zmizí) funguje to tak jak chci (na každé kliknutí se překlopí) i bez zpoždění.
  KL> No jo, jenže já chci ty odskoky ošetřit programem a ne kondenzátorem. 
  KL> Mohl byste někdo, pro koho je tohle denní rutina říct, kde dělám 
  KL> chybu ? Případně se podělit o obsluhu přerušení od odskakujícího spínače po vašem ?
  KL> Jelikož se programováním bavím občas po večerech a za týden vše 
  KL> zapomenu, je ten program až infantilně komentovaný - ale já to tak potřebuju...
  KL> Díky za trpělivost...

  KL>  <<int.asm>>

  KL>  Kručinský



  _______________________________________________
  HW-list mailing list  -  sponsored by www.HW.cz Hw-list na list.hw.cz http://list.hw.cz/mailman/listinfo/hw-list
  _______________________________________________
  HW-list mailing list  -  sponsored by www.HW.cz
  Hw-list na list.hw.cz
  http://list.hw.cz/mailman/listinfo/hw-list
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20101025/cea1fb25/attachment.htm>


Další informace o konferenci Hw-list