Tema: Re: Padekit pagaut bug'a (Arduino)
Autorius: lietuvys
Data: 2015-06-17 00:02:39
<html>
  <head>
    <meta content="text/html; charset=iso-8859-13"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Jei nuspręstum programuoti C, čia mano kodinta Atmega128, kiek
    pamenu, veikė patikimai netgi prie pakankamai didelių enkoderio
    sūkių:<br>
    <br>
    <br>
    static volatile uint8_t A, B, Aold, Bold;<br>
    static volatile int32_t pos32;<br>
    <br>
    ISR(INT6_vect)<br>
    {<br>
      EIFR |= _BV(INTF6);<br>
      A = (PINE &gt;&gt; PE7) &amp; 1;<br>
      if (A != Aold)<br>
      {<br>
        if (A ^ ((PINE &gt;&gt; PE6) &amp; 1)) pos32--; else pos32++;<br>
        Aold = A;<br>
      }<br>
    }<br>
    <br>
    ISR(INT7_vect)<br>
    {<br>
      EIFR |= _BV(INTF7);<br>
      B = (PINE &gt;&gt; PE6) &amp; 1;<br>
      if (B != Bold)<br>
      {<br>
        if (B ^ ((PINE &gt;&gt; PE7) &amp; 1)) pos32++; else pos32--;<br>
        Bold = B;<br>
      }<br>
    }<br>
    <br>
    int main(void)<br>
    {<br>
        MCUCR = _BV(JTD);// This bit must be set twice within four
    cycles to change its value.<br>
      MCUCR = _BV(JTD);// See p.258 of ATmega128 datasheet<br>
      ACSR = _BV(ACD);  // Disable Analog Comparator to reduce power
    consumption<br>
        <br>
        // Initialize IO pins<br>
      PORTB = _BV(PB7) | _BV(PB5) | _BV(PB0) | _BV(PB1) ;<br>
      DDRB  = _BV(PB4) | _BV(PB6) | _BV(PB7);<br>
      DDRD  = _BV(PD0) | _BV(PD1) | _BV(PD3) | _BV(PD4) | _BV(PD5) |
    _BV(PD7);<br>
      DDRE = _BV(PE1) | _BV(PE2) | _BV(PE3) | _BV(PE4);<br>
    <br>
      PORTD  = _BV(PD0) | _BV(PD1);<br>
      PORTE = _BV(PE6) | _BV(PE7);<br>
    <br>
      // interrupts<br>
      EICRB = _BV(ISC60) | _BV(ISC70);<br>
      EIMSK = _BV(INT6) | _BV(INT7);<br>
    <br>
      _delay_ms(800);<br>
      sei();<br>
      SpecInicializacija(...);<br>
      wdt_enable(WDTO_2S);<br>
    <br>
      int32_t tmp32;<br>
      for (;;)<br>
      {<br>
        _delay_ms(200);<br>
        cli();<br>
        tmp32 = pos32;<br>
        sei();<br>
        DideleFunkcija(...);<br>
        wdt_reset();<br>
        if (SW_IS_PRESSED) // Resetinimas<br>
        {<br>
          cli();<br>
          pos32 = 0;<br>
          sei();<br>
        }<br>
      }<br>
    }<br>
    <br>
    <br>
    <br>
    <div class="moz-cite-prefix">On 2015.06.05 14:36, ig wrote:<br>
    </div>
    <blockquote cite="mid:mks1kh$n3o$1@trimpas.omnitel.net" type="cite">Paprasta
      programele seka variklio encoderio outputa, skaiciuoja
      "zingsniukus" ir kai padaromas pilnas apsisukimas (624 zingsniai),
      keiciama sukimosi kryptis. Ir taip "mojuoja" pirmyn atgal.
      <br>
      <br>
      Taciau karts nuo karto (mazdaug vienas is desimt ciklu),
      atsitiktinai
      <br>
      variklis apsisuka maziau nei pilna apsisukima ir pradeda keisti
      krypti.
      <br>
      pabandziau su serial.println isvedineti "c" reiksme kai keiciasi
      kryptis (t.y. if viduje - uzkomentuota eilute).
      <br>
    </blockquote>
    <br>
  </body>
</html>
3Dastronomyagricultureaudioautosautos.audiautos.audioautos.binariesautos.bmwautos.clubautos.fordautos.hondacrxautos.japanautos.mercedesautos.opelautos.sportautos.volvoautos.vwaviaavia.binariesbankcardsbinariesbooksbuildingcinemacommercecomp.hardwarecomp.softwarecomp.lietuvinimascomp.networksculturedarbas.ieskaudarbas.siulaudesigneconomicselectronicsfaunafauna.aquafauna.binariesfishingflorafotofoto.binariesgamesgames.csgames.onlinegsmgurmanaihumourhumour.binariesinternetlawmicrosoftmotomusicmusic.binariesmusic.instrumentsmusic.LT.binariesnavigacijaphppoliticsprogrammingrpgsportstudyingsveikatatalktesttranslationtransportationtraveltravel.binariestvunixvideovideo.binarieswatersportswwwwww.flashpdaautos.supermama.ltmobiledarbasretro.3Dretro.agricultureretro.astronomyretro.audioretro.autosretro.autos.audiretro.autos.audioretro.autos.binariesretro.autos.bmwretro.autos.clubretro.autos.fordretro.autos.hondacrxretro.autos.japanretro.autos.mercedesretro.autos.opelretro.autos.sportretro.autos.supermamaretro.autos.supermama.ltretro.autos.volvoretro.autos.vwretro.aviaretro.avia.binariesretro.bankcardsretro.beosretro.binariesretro.booksretro.buildingretro.cinemaretro.commerceretro.compretro.comp.hardwareretro.comp.lietuvinimasretro.comp.networksretro.comp.softwareretro.cultureretro.darbasretro.darbas.ieskauretro.darbas.siulauretro.designretro.economicsretro.electronicsretro.e-vejasretro.faunaretro.fauna.aquaretro.fauna.binariesretro.fishingretro.floraretro.fotoretro.foto.binariesretro.gamesretro.games.csretro.games.onlineretro.games.rpgretro.genealogijaretro.gsmretro.gurmanairetro.humourretro.humour.binariesretro.internetretro.YZFretro.YZF.nebukretro.YZF.nebuk.netikintisretro.YZF.nebuk.netikintis.bukretro.YZF.nebuk.netikintis.buk.tikintisretro.lawretro.microsoftretro.mobileretro.motoretro.musicretro.music.binariesretro.music.instrumentsretro.music.LTretro.music.LT.binariesretro.navigacijaretro.newsretro.news.taisyklesretro.newuserretro.pdaretro.phpretro.politicsretro.programmingretro.rpgretro.sportretro.studyingretro.sveikataretro.talkretro.translationretro.transportationretro.travelretro.travel.binariesretro.tvretro.unixretro.videoretro.video.binariesretro.watersportsretro.wwwretro.www.flashdiylt.rkm.news.announcelt.rkm.news.newuser