Teade

Collapse

Foorumi reeglid.

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

AVR C++ teegi loomine

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

    #16
    Vs: AVR C++ teegi loomine

    GCC's on ka suht hästi kõik bitid ja baidid juba ära defineeritud. seega nii mõnigi kood töötab vabalt oma sugulase peal ilma ühegi muutuseta. küll jah, kui väiksema pealt suure peale lähed (tiny->mega) siis mingid nimed muutuvad, aga seda minimaalselt. Ning samas, kui palju sa seda sama koodi ikka 10'le erinevale AVR'ile lased? võtad ikka ühe seeria, ja kui mälust puudu jääb võtad temast nati suurema (M8-M48-M88) kõik on pin compatibled ja piaks toimima ästi. enne roobti alustamist tasub aga välja mõelda, palju mida vaja läheb, mitte seda töö käigus avastada, et kurat mul on üks taimer puudu...

    Comment


      #17
      Vs: AVR C++ teegi loomine

      Nüüd on litsents ilusti teegil küljes ja võib jagada tutvumisversiooni:


      Failis on ainult ATmega8 põhifunktsioonaalsus ja see on ette nähtud teegi ülesehituse mõistmiseks. Tutvustust on juba tehtud, nii et jääme konkreetsemaid arendushuve ootama. Kuigi avalik kood on GPL litsentsi all, siis kommertskasutuse jaoks võime eraldi lepingu sõlmida.

      Ühendust saab võtta aadressil robotiklubi@gmail.com

      Comment


        #18
        Vs: AVR C++ teegi loomine

        IMHO ei ole mõtet ASMi koodi ilusamasse pakendisse toppida. Kui kasutate juba C++ siis võtke aluseks lähenemine stiilis Matlab, a la (järgneb suvaline kood, ei ole C++)

        define ParemMootor as DCMotor

        kus objekt DCmotor sisaldab kõike seonduvat a la
        maxcurrent
        maxvoltage
        thermalmass
        inertialmoment

        siis oleks võimalik teha funktsioonid, mis kasutavad neid parameetreid, nt funktsioon accelerate mille argumentideks on time ja acceleration ja mis kasutab kõiki mootori parameetreid ja vajadusel tagastab parameetrina, kas antud kiirendus on üldse võimalik. Sellest järgnevalt saab teha palju muid funktsioone.

        Ühesõnaga, ei ole mõtet teha mingit ilupakendit, vaid kui juba kõrgtase siis füüsikalise mudeli baasil. Ei ole oluline et see oleks objektorienteeritud, võib olla ka struktuuride baasil klassikaline, see on tegelikult ebaoluline.

        Comment


          #19
          Vs: AVR C++ teegi loomine

          Esmapilgul tundub olevat päris hästi õmmeldud.

          Võtmesõna "AVR" ei anna sourceforge-s ja freshmeat-s mitte midagi samaväärset.
          If you think education is expensive, try ignorance.

          Comment


            #20
            Vs: AVR C++ teegi loomine

            ma ei tea kas soovitusest kasu on, aga minu meelest on parim registrite kirjeldamine läbi unioni :

            no_init volatile union
            {
            unsigned char UCON;
            struct
            {
            unsigned char U0IRS : 1;
            unsigned char U1IRS : 1;
            unsigned char U0RRM : 1;
            unsigned char U1RRM : 1;
            unsigned char CLKMD0 : 1;
            unsigned char CLKMD1 : 1;
            unsigned char RCSP : 1;
            } UCON_bit;
            } @ aadress;

            registri laadimine käib : UCON = <data>;
            ja bitikaupa lähenemine : UCON_bit.U0IRS = 1; // vöi 0

            Comment


              #21
              Vs: AVR C++ teegi loomine

              Hea ettevõtmine

              Huvitav, kaua neid ATMega protsessoreid veel toodetakse ja kasutatakse ? Maailm kipub kuidagi ARMide poole kaldu minema...

              Comment


                #22
                Re: Vs: AVR C++ teegi loomine

                kaugel sellest. AVR'e tuleb juurde tasapisi ja nad ei kao nii pea mitte kuhugile. selle 8 bittiga saab pikka aega veel &#228;ra elada. ARM'i kiirust pole tavaliselt vaja. N&#252;&#252;d, kus ka 32 bitine AVR olemas on ennustan mina k&#252;ll pikka iga sellele...
                Eks mingeid uuendusi tuleb kogu aeg juurde... (PS ega ATMEL pole ainuke, kes ARM'e teeb).

                Comment


                  #23
                  Vs: AVR C++ teegi loomine

                  AVR ja ARM on täiesti erinevad turusegmendid, need täiendavad teineteist. Igasse pisikesse kohta ARMi panemine oleks paras kahuriga kärbeste jahtimine. 8-st bitist piisab igasuguste juhtkivide (controller ingl keeles ju) tegemiseks küllalt.

                  AVR32 on ARM'ile suur konkurent. ARM'i müüakse tuumana ja seda panevad päris mitmed firmad, sh atmel, oma kividesse. AVR32 niisama lihtsalt ei müüda, see on atmeli oma disain. Kusjuures AT91SAM9 ja AT32AP7 seeria on praktiliselt sama välja arvatud protsessori tuum (ja seetõttu annab kenasti linuxi draivereid teineteise pealt portida). AVR32 on veel natuke toores võrreldes ARM'i aastatepikkuse turuosaga (st pole nii palju oskusi ega ka tööriistade ja softi tuge), kuid atmel tegeleb väga tõsiselt just avr32 arendusega.

                  Comment


                    #24
                    Vs: AVR C++ teegi loomine

                    ka voolutarve määrab tihti rakenduse, ARMide voolutarve on enamasti datasheetis toodud välja eraldi tuuma, perifeeria ja isegi mälu kaupa, nii et esmapilgul ilusad numbrid muutuvad PCBle monteerituna kaugelt mitte nii roosilisteks. näiteks at91sam7s256 rüüpab 48MHz juures kusagil 85mA.
                    mis AVR32 puutub,siis miskipärast on Atmelil tekkinud 2-3 aastane auk alates selle kiibi esmapresentatsioonist , kuni nüüd siis sel kevadel algas agressiivne müük ( köigest 69$ eest : http://www.atmel.com/dyn/products/to...p?tool_id=4102 ).
                    olen kuulnud legendi, et avr32 olla välja töötatud ericssoni moblaturule, aga peale E ülevötmist S poolt kadus turg ära. igatahes ei arva et avr32 oleks SUUR konkurent ARMile , tegelikud konkurendid on pigem MIPS ja SH .

                    Comment


                      #25
                      Vs: AVR C++ teegi loomine

                      AVR32 on konkurent ainult oma väga kitsas turusegmendis, sest teda müüjakse praktiliselt ainult ühes-kahes konfiguratsioonis. LCD, kaamera liides, Java...
                      If you think education is expensive, try ignorance.

                      Comment


                        #26
                        Re: Vs: AVR C++ teegi loomine

                        AVR32 on m&#245;eldud p&#245;hiliselt keskmisest suurema LCD'ga tegelase jaoks nagu seda on PDA, PSP ja muud taolised k&#228;es hoitavad jublakad. Pisike killer, mis jooksutab vabalt nii linuxit kui muid pisemaid OP s&#252;steeme ja millele LCD k&#252;lge pookimine on &#252;priski lihtne. samas on lihtsam progreda, kui mingit 32 bitist arvuti prose (koos 100 miljoni lisa kiibiga).

                        Comment


                          #27
                          Vs: AVR C++ teegi loomine

                          Klassikaline ringbuffer. C++'is väga lahe.

                          Kood:
                          #ifndef CBuffer_h_
                          #define    CBuffer_h_
                          /*
                          vim: ts=2
                          vim: shiftwidth=2
                          */
                          
                          #include <stdint.h>        // uint8_t
                          #include <stdbool.h>    // bool
                          
                          /**
                           * Lock-free circular buffer.
                           */
                          template <class E, int size>
                          class CBuffer {
                          public:
                              /** Initialize buffer to empty state. */
                              CBuffer()
                              : push_index_(0), pop_index_(0)
                              {
                              }
                          
                              /** Is buffer empty? */
                              bool IsEmpty() const
                              {
                                  return push_index_ == pop_index_;
                              }
                              /** Is buffer full? */
                              bool IsFull() const
                              {
                                  return ((push_index_ + 1) % size) == pop_index_;
                              }
                          
                              /** Push element \c e into buffer.
                               * \return true on success, false on failure.
                               */
                              bool Push(    const E    e)
                              {
                                  const uint8_t    next_push_index = (push_index_ + 1) % size;
                                  if (next_push_index == pop_index_) {
                                      return false;
                                  } else {
                                      buffer_[push_index_] = e;
                                      push_index_ = next_push_index;
                                      return true;
                                  }
                              }
                          
                              /** Pop an element, note that it doesn't check for failure!
                               * \return Popped element.
                               */
                              E Pop()
                              {
                                  const uint8_t    next_pop_index = (pop_index_ + 1) % size;
                                  const E                r = buffer_[pop_index_];
                                  pop_index_ = next_pop_index;
                                  return r;
                              }
                          private:
                              /** Circular buffer. */
                              volatile E    buffer_[size];
                              /** Push index (heading). */
                              volatile uint8_t    push_index_;
                              /** Pop index (trailing). */
                              volatile uint8_t    pop_index_;
                          }; // class CBuffer
                          
                          #endif /* CBuffer_h_ */
                          If you think education is expensive, try ignorance.

                          Comment


                            #28
                            Vs: AVR C++ teegi loomine

                            Projekt n&#252;&#252;d Sourceforges:

                            https://sourceforge.net/projects/avr-cpp-lib

                            Comment


                              #29
                              Vs: AVR C++ teegi loomine

                              Kriitikat:

                              Kus on sisu ? Hetkel on ilusasti dokumenteeritud "framework". Aga robootikaga seotud funktsioonid ?

                              Comment

                              Working...
                              X