Teade

Collapse

Foorumi reeglid.

Foorumi reeglistik on uuendatud. Palume tutvuda ja arvesse võtta.
See more
See less

AVR + enkooder

Collapse
X
 
  • Filter
  • Kellaaeg
  • Show
Clear All
new posts

    #16
    Vs: AVR + enkooder

    Esmalt postitatud andreie poolt Vaata postitust
    Jah, selle parema asja nimi on katkestus. See näeb välja nii:
    1. Otsid üles väljaviigud, millele saab määrata "pin change" katkestust.
    2. Ühendad enkoodri ümber nende viikude külge.
    3. Sead juhtregistris üles teatud biti, mis lubab Sulle vajaliku "pin change" katkestuse.
    4. Defineerid globaalse muutuja "volatile int position = 0;".
    5. Kirjutad spetsiaalse päisega funktsiooni selle katkestuse teenindamiseks.

    Mis tähendab katkestuse teenindamine:
    a) Katkestuse tekkimisel (antud juhul toimub see siis, kui mingi sisend muutub) viskab prose muud asjad nurka ja hakkab seda spetsiaalse päisega funktsiooni täitma.
    b) Funktsiooni alguses võrreldakse sisendite olekut eelnevaga ja vastavalt krutib muutujat "position" kas üles- või allapoole.
    c) Funktsiooni lõpus märgitakse spetsiaalses registris, et katkestus on teenindatud.

    AVR-il on ka globaalne katkestuste lubamise/keelamise nupp (sei()/cli()), see peab ka olema muidugi lubatud asendis.
    Jah tean et interruptidega tehakse tegelikult. aga nagu ennist ütlesin siis minul ei ole mitte ükski näidiskood tööle hakanud.
    Nii et, ilmselt on mul teadmatusest mingi elementaarne asi tegemata jäänud, mida kusagil ei mainita.
    Näiteks seda kiidetakse: http://www.avrfreaks.net/index.php?n...=495712#495712
    Aga mina sellest aru ei saa.
    viimati muutis kasutaja Kkert; 16 January 2014, 09:47.

    Comment


      #17
      Vs: AVR + enkooder

      Esmalt postitatud Kkert poolt Vaata postitust
      Jah tean et interruptidega tehakse tegelikult. aga nagu ennist ütlesin siis minul ei ole mitte ükski näidiskood tööle hakanud.
      Muidugi on võimalik kasutada katkestust. Kui arvutil on ka midagi muud teha.

      Ma siin öösel 2.00st natuke mõtlesin ja tundub et oleks võimalik edasi arendada kaks varianti.
      Üks kiirem ja teine lühem.
      Veel oleks võimalus lugeda mitte ainult pöördeid vaid ka pöörde osi.
      Selle kahese anduriga näiteks neljandikke. 13 oleks siis 3 pööret ja 1 neljandik (?).

      Aga see programm on ju selline et loetakse sisse andurite kood.
      Ei pea eraldi arutama et A ja B, võib võtta et on kahebitine arv.
      Seega 4 võimalust. Paiskame switch ja case abil laiali.
      On kolm võimalust:
      1. kood on sama, vaatame uuesti.
      2. koodis on üks bitt muutunud, muutunud bitt määrab pöörlemise suuna.
      3. koodis on kaks bitti muutunud, midagi on mäda.

      Kui meil oleks andureid ja bitte rohkem siis töötaks sama ideoloogia.
      Ainult et pöördenurk on täpsemini mõõdetav.

      Nii tehes tuleb iga võimalus eraldi välja kirjutada. Kiire aga pikk.

      Kui teha nt tabeliga analüüs mis võimalused on mingi koodi muutuseks
      siis saame lühikese programmi aga natuke aeglasema.

      Eks tuleb vaadata mida vaja on ja millised on võimalused.
      Siis saab otsustada.

      Kui ma neid bitte pärast unenäos vaatasin siis nad muutusid küll kenasti.

      Minu servol on kõik see räni klotsidesse pandud ja peaks ka töötama.
      Ainut tahab +- 5V.

      Comment


        #18
        Vs: AVR + enkooder

        Unustasin mainida veel ühe asja, mida LEDidega testides tähele panin.
        Nupp ei liigu sujuvalt vaid "nõksudega". Ja iga nõksu juures tehakse terve see tsükkel läbi. Ja nõksu vahekohas on siis mõlemad väljundid 0.

        Mõõtsin kivi sisendid üle ja pinged ilusti olemas. Seega seal peaks õige olema.
        Ja kuna mul õhtul und ei tulnud, siis võtsin selle koodi oma peas pulkadeks ja tekkis isegi väike arusaam kuidas ta töötab.
        Aga see miks ta laua peal mul tembutab on müstika.
        Ikka veel on mul tunne et see delay seal lõpus rikub ära midagi.

        Sain ühe 2x16 LCD ka ja proovin selle counteri sinna peale manada. Ehk siis saab selgemaks kuidas see muutub.

        Comment


          #19
          Vs: AVR + enkooder

          Esmalt postitatud Kkert poolt Vaata postitust
          Unustasin mainida veel ühe asja, mida LEDidega testides tähele panin.
          Nupp ei liigu sujuvalt vaid "nõksudega". Ja iga nõksu juures tehakse terve see tsükkel läbi. Ja nõksu vahekohas on siis mõlemad väljundid 0.

          ...

          Ikka veel on mul tunne et see delay seal lõpus rikub ära midagi.
          Kas see viivitus (delay) on suurem kui tsükli pikkus? Kui jah, siis on arvatavasti viga käes või vähemalt lähemal tõele.

          Kas viivitus on kontaktide vibreerimise vastu? Proovi üldse ära jätta või teha nii väikeseks kui võimalik.
          If you think education is expensive, try ignorance.

          Comment


            #20
            Vs: AVR + enkooder

            Viivitus oli selleks et visuaalselt midagi näha oleks kui enkooderit keeran.
            Vastavalt enkooderi asendile oleks pidanud LEDi vilkumise sagedus muutuma.
            Muud otstarvet sellel polegi.

            Comment


              #21
              Vs: AVR + enkooder

              1. see delay ei sobi selles kohas LEDi vilkumissageduse muutmiseks, kuna see rikub samaegselt toimuva enkooderi lugemise ära. kui osa kombinatsioone 01,10,11,10 bitijadast jääb vahele, siis ei ole enam võimalik arusaada kas liikumine üldse toimub ja mis suunas see toimub.
              kui tahad LEDi sagedust muuta, siis peaksid mingi Timer nimelise asja seal initsialiseerima sedasi, et see kas katkestuse ajal lülitaks LED on-off või kui Timer võimaldab ka automaatset väljundi toggle-mist siis saab tehtud ka ilma interruptita.
              2. või siis see enkoodri lugemine viia katkestustele ja LED vilgutamine ajaliselt muutuva delay abil jätta main loop sisse.

              see AVR ei ole kõrgtasemel multitasking prose, kus saaksid ühes jorus teha erinevaid ajakriitilisi operatsioone.
              lihtsam ilma katkestusteta oleks esmalt variant, kus paned välajndisse 2 LED-i ja jälgid seda 01, 10, 11, 10 muudatust vastavalt enkoodri liikumisele ja teed omale selle tööpõhimõtte selgeks.

              Comment


                #22
                Vs: AVR + enkooder

                Panin LEDi asemele 16x2 LCd ja võtsin delay ära.
                Sellel counteril oleks nagu täiesti enda elu. Kohati võin lõputult nuppu kruttida ilma et muutusi oleks ja siis kohati jälle lisab ilusti counterile juurde.

                Comment


                  #23
                  Vs: AVR + enkooder

                  Esmalt postitatud Kkert poolt Vaata postitust
                  Kohati võin lõputult nuppu kruttida ilma et muutusi oleks ja
                  siis kohati jälle lisab ilusti counterile juurde.
                  Kas see on tõsi et suurem osa ajast on enkooderi otstel kood 00?
                  Sellisel juhul see programm nii ei kõlba.
                  Programmi loogika arvestab et ta saab koodi pidevalt kätte.

                  Seda korralikult töötavat kooderit on võimalik ka ise teha.
                  Kas võtta 2 vana meh hiirt, kaks IR sensorit jne
                  ning panna sinna vahele aukudega (auguga) ketas.

                  Comment


                    #24
                    Vs: AVR + enkooder

                    Poole ajast (nõksude vahekohad) on jah väljund 00.
                    Ja nõksu koha peal tehakse terve tsükkel läbi [01, 11, 10].
                    Eks vist pean jah selle koodi ära unustama ja proovima midagi ise välja mõelda.

                    Praegu kusjuures on nii et, nendel hetkedel kui ta töötab siis counter-i väärtus muutub ainult suuremaks. Olenemata sellest kumba pidi nuppu keeran.

                    Comment


                      #25
                      Vs: AVR + enkooder

                      Esmalt postitatud Kkert poolt Vaata postitust
                      Poole ajast (nõksude vahekohad) on jah väljund 00.
                      Jätame esialgu programmi kõrvale.
                      Tester on?
                      Võtame selle enkooderi.
                      Mitu elektrilist kontakti seal küljes on?
                      Kas 3 või 4?
                      Kui kolm (T, A, B) siis T on pinge sisend ja on
                      veerand pöördest koos Aga,
                      siis veerand pööret A ja B,
                      siis ainult B ja
                      siis mõlemast lahus.

                      Kui neli (T1, T2, A, B) siis pinge tuleb nii T1 kui T2 peale ja
                      A ning B peavad saama pinge täpselt samamoodi -
                      korraga muutub signaal ainult ühel väljundil.



                      Kurat -äkki on need T A B segi läinud?
                      ****************************
                      OOTA!!!
                      8. kirjas on pingegraafik.
                      Seal on pinge väljundil ju pidevalt peal.
                      Mis on muutunud?

                      Comment


                        #26
                        Vs: AVR + enkooder

                        Mõtteid:
                        Aga, ... digi-digi-l on ju kindlad reeglid.
                        Vead ühildumisel on, et kontrolleri ja enkoodri ettenähtud piir-pingevahemik ei klapi; mõni enkooder tahab lisatoidet, mõni kontrolleri sisend on "avatud" ja vajab vastavad tüüpi andurit või lisamaandustakistit jne.
                        Kas selle enkoodri saab selle kontrolleri otsa otse ühendada, mis ütlevad mõlema isendi andmelehed sisendite/väljundite parameetrite kohta? Kui asjad on erinevad, vajab lisaks projekt sobituslüli. Mis ütleb tester, kui reaalselt sisendit mõõta ja enkoodrit pöörata ja kas see kuvatav vahemik on ok? Kui pole kindel et riistvara asjad on jonksus, seni pole mõtet ennast tarkvaraga eriti kiusata. IMHO.
                        Nühi põllukivi palju tahad, teemantit tast ikka ei saa

                        Comment


                          #27
                          Vs: AVR + enkooder

                          Tegu on mehhaanilise enkoodriga. Kolme jalaga - nagu potekas.
                          Ehk siis põhimõtteliselt kaks lülitit ühes pakendis.
                          Click image for larger version

Name:	InsideEncoder.jpg
Views:	1
Size:	43,8 KB
ID:	867738

                          Comment


                            #28
                            Vs: AVR + enkooder

                            Nii. (kuna mul konkreetse isengiga kogemus puudub, siis küsimusi tekib ikkagi..)
                            Ja kontrolleri sisend-pinnil on milline pinge ja kas see on ok (kas see pinge on stabiilne) või tahab see põhipinge osast lisatoitetakistit?

                            Ütleme on sisendil ettenähtud 0-5V siis mehaanilise enkoodri puhul on sisend 0 eeldatavasti ka 0V, aga 1 on milline pinge ja kui see pinge jääb kiirusel ujuma sinna 1-3V kanti, siis seda kontroller "ei näe" ja näeb kui 0 on 0V ja 1 on 4-5V (piltlikult).
                            Kahtluse külvas ütlus, et 100n konde annuleeris näidu edasiliikumise (suurel kiirusel arusaadav, aga väikesel.. pole voolu et tõsta konde pinge väärtuseni, mis tagaks kontrolleri sisendi 1 väärtuse).
                            Nühi põllukivi palju tahad, teemantit tast ikka ei saa

                            Comment


                              #29
                              Vs: AVR + enkooder

                              Algajalt algajale.
                              1. Asenda enkooder 2 lülitiga.
                              2. Kontrolli testriga, kas lüliteid lülitades toimub pinge muutus 0 ja 1
                              3. Ühenda tagasi enkooder ja kontrolli, kas enkooderit väga aeglaselt pöörates on asi OK
                              4. Kirjuta algul testprogramm sisendite korrasoleku kontrolliks. A la kui a = 1 pane põlema LED pordis...
                              ja kui b on 1, siis pane põlema LED2 jne.
                              5. Kui asi toimib, kirjuta testprogramm sisendite impulsside juurde ja maha loendamiseks.
                              6. Kui peale ja maha loendamised kattuvad, asu oma enkooderi programmi kallale

                              Umbes taolist taktikat kauta ALATI uue teema kallale asudes, selle asemel et foorumis mitu lehekülge halada. Programmidega aidata ei viitsi, sest pean ennast rohkem tinutajaks ja selleks, et aega jääks rohkem 'rauaga' tegelemiseks, kasutan AVR programmeerimiseks Bascom Avr-i. Seal saab need asjad tööle paari käsuga.

                              Comment


                                #30
                                Vs: AVR + enkooder

                                Esmalt postitatud alsatianp poolt Vaata postitust
                                Algajalt algajale.

                                Umbes taolist taktikat kauta ALATI uue teema kallale asudes.
                                Programmidega aidata ei viitsi, sest pean ennast rohkem tinutajaks ja selleks,
                                et aega jääks rohkem 'rauaga' tegelemiseks, kasutan AVR programmeerimiseks Bascom Avr-i.
                                Seal saab need asjad tööle paari käsuga.
                                Mina ka algaja, alustasin alles aastal 1968.
                                Tõsi, omandatud kogemus õpetab et enne kirjutama
                                (või tinutama) hakkamist on vaja natuke mõelda.
                                Ja mõlemal juhul tuleb olla hoolikas ning mitte teha vigu.
                                Hoolsuse harjutamiseks sobib ka mõni foorum kus saab tekste kirjutada.

                                Kui see Bascom Avr on nii hea siis kuidas seal asi käib?
                                Olen kasutanud AVRi jaoks siiani ainult
                                AVR Studio 5.1
                                AVR Studio 4
                                Arduino

                                Aga kunagi pole ju hilja midagi uut ja head omandada.

                                Comment

                                Working...
                                X