Tema: Re: Padekit pagaut bug'a (Arduino)
Autorius: ig
Data: 2015-07-08 10:49:35
Oho, ačiū. Kolkas nepersiorientuosiu, bet išsisaugosiu ateičiai


On 2015-06-17 0:02, lietuvys wrote:
> Jei nuspręstum programuoti C, čia mano kodinta Atmega128, kiek pamenu,
> veikė patikimai netgi prie pakankamai didelių enkoderio sūkių:
>
>
> static volatile uint8_t A, B, Aold, Bold;
> static volatile int32_t pos32;
>
> ISR(INT6_vect)
> {
>    EIFR |= _BV(INTF6);
>    A = (PINE >> PE7) & 1;
>    if (A != Aold)
>    {
>      if (A ^ ((PINE >> PE6) & 1)) pos32--; else pos32++;
>      Aold = A;
>    }
> }
>
> ISR(INT7_vect)
> {
>    EIFR |= _BV(INTF7);
>    B = (PINE >> PE6) & 1;
>    if (B != Bold)
>    {
>      if (B ^ ((PINE >> PE7) & 1)) pos32++; else pos32--;
>      Bold = B;
>    }
> }
>
> int main(void)
> {
>      MCUCR = _BV(JTD);// This bit must be set twice within four cycles
> to change its value.
>    MCUCR = _BV(JTD);// See p.258 of ATmega128 datasheet
>    ACSR = _BV(ACD);  // Disable Analog Comparator to reduce power
> consumption
>
>      // Initialize IO pins
>    PORTB = _BV(PB7) | _BV(PB5) | _BV(PB0) | _BV(PB1) ;
>    DDRB  = _BV(PB4) | _BV(PB6) | _BV(PB7);
>    DDRD  = _BV(PD0) | _BV(PD1) | _BV(PD3) | _BV(PD4) | _BV(PD5) | _BV(PD7);
>    DDRE = _BV(PE1) | _BV(PE2) | _BV(PE3) | _BV(PE4);
>
>    PORTD  = _BV(PD0) | _BV(PD1);
>    PORTE = _BV(PE6) | _BV(PE7);
>
>    // interrupts
>    EICRB = _BV(ISC60) | _BV(ISC70);
>    EIMSK = _BV(INT6) | _BV(INT7);
>
>    _delay_ms(800);
>    sei();
>    SpecInicializacija(...);
>    wdt_enable(WDTO_2S);
>
>    int32_t tmp32;
>    for (;;)
>    {
>      _delay_ms(200);
>      cli();
>      tmp32 = pos32;
>      sei();
>      DideleFunkcija(...);
>      wdt_reset();
>      if (SW_IS_PRESSED) // Resetinimas
>      {
>        cli();
>        pos32 = 0;
>        sei();
>      }
>    }
> }
>
>
>
> On 2015.06.05 14:36, ig wrote:
>> Paprasta programele seka variklio encoderio outputa, skaiciuoja
>> "zingsniukus" ir kai padaromas pilnas apsisukimas (624 zingsniai),
>> keiciama sukimosi kryptis. Ir taip "mojuoja" pirmyn atgal.
>>
>> Taciau karts nuo karto (mazdaug vienas is desimt ciklu), atsitiktinai
>> variklis apsisuka maziau nei pilna apsisukima ir pradeda keisti krypti.
>> pabandziau su serial.println isvedineti "c" reiksme kai keiciasi
>> kryptis (t.y. if viduje - uzkomentuota eilute).
>

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