AVR - ATmega8 #1

10.11.2007 18:08 | Alexej

Dnes se budeme venovat relativne malemu cernemu broukovi(chrobakovi), s 28 nozickami(piny)
bude to jednocipovy 8bitovy pocitac od firmy Atmel ATmega8(L)
v provedeni DIL (dual in line / 2 rady nozicek) s architekturou AVR

vlastnosti:

  • 8KB flash pamet programu (vydrzi zhruba 10.000 r/w cyklu)
  • 1KB vnitrni pameti dat SRAM
  • 512B EEPROM (vydrzi zhruba 100.000 r/w cyklu)
  • 23 programovatelnych I/O pinu
  • 2 8-bit casovace se samostantou preddelickou
  • 1 16-bit casovac se samostantou preddelickou
  • 3 PWM(Pulse with modulation) kanaly
  • 6 A/D (analog to digital) prevodiku
  • analaogovy porovnavac
  • programovatelna seriova linka (USART)
  • vnitrni oscilator na 1; 2; 4; 8; MHz
  • pracovni frekvence az do 16MHz (u verze L jen do 8MHz)
  • pracovni napeti 4.5 - 5.5 V (u verze L 2.7 - 5.5V)
  • Tak sem se pokusil shrnout zakladni vlasntosti mikrokontorleru(uP) ATmega8(L)
    vice informaci najdete v datasheetu( zkraceny / cely).

    Cena tohoto uP se pohybuje u ATmega8-16PU kolem 32kc a u ATmega8L-8PU kolem 50kc (ceny jsou z www.gme.cz).
    Za tu cenu dostanete velmi zajimavy kus kremiku se kterym muzete delat spoustu zajimavejch veci a blbosti ;-)
    od blikani LEDkou pres ovladali 7segmenotvych displeju a komunikaci po seriove lince s PC nebo jinymi uP,
    rizeni serva az po ovladani celeho robota.

    POPIS MIKROKONTROLERU
    Tak ATmega8 ma 3 porty PORTB , PORTC , PORTD vetsina pinu ma i alternativni funkce jako napr na PORTC jsou vsechny A/D prevodniky atd.
    Velmi dulezitou funkci ma PC6 (jehoza alternatinvi funkce je RESET(ta cara nad napisem RESET znamena inverzni chovani)),
    takze kdyz je na PC6(RESET) privedena logicka nula napr. pripojenim portu na zem, tak se procesor resetuje tzn skace na zacatek pogramu
    a nebo se resetuje za ucelem nahrani programu. PD0(RXD = prijem) a PD1(TXD = vysilani) maji za alternativni funcki seriovou linku.
    PD2(INT0) a PD3(INT1) maji alternativni funkci vnejsiho preruseni. PB6 a PB7 muze alternativne slouzit na pripojeni externiho krystalu
    o frekvenci 0-16MHz.A velmi dulezita informace na vetsinu isntrukci je potreba pouze jeden hodinovy signal tzn
    napr na provedeni jedne instrukce bude potreba 1uS(mikrosekunda) pokud bude frekvence procesoru 1MHz coz se hodi pri pocitani spozdeni.
    Zbytek se pokusim rozebrat priste.

    PROGRAMOVANI
    Tento uP se da velmi efektivne programovat bud v C nebo primo v Assembleru(ma zrhuba 130 isntrukci),
    v C je sice kod programu o neco vetsi a pomalejsi ovsem je to pomerne zanedbatelne,
    protoze v dnesni dobe kompilatory maji uz slusnou uroven optimalizace napr ja pouzivam avr-gcc
    (upozoreni: nejde skompilovat na 64bitu musi se emulovat 32bit).
    Detailne bych se rad kouknul na programovani az v pristim dile.

    Jen na ukazku takhle muze napr vypadat kod co rozblika LED prpipojenou na PB0(PORTB pin 0) s preiodou 1s .

    #include <avr/io.h>
    void delay(unsigned int num)
    {
      unsigned int i,j;
      for (j = 0; j < 1000; j++)
        for (i = 0; i < num; i++)
          ;
    }
    int main (void)
    {
      DDRB |= _BV(PB0); // DDR = "Data Direction Register"
      while (1)
      {
        PORTB &= ~(_BV(PB0));
        delay(500);
        PORTB |= _BV(PB0);
        delay(500);
      }
      return 0;
    }

    NAHRAVANI PROGRAMU
    K nahrani programu do uP architektury AVR staci uplne primitivni programator do paralelniho portu.

    na obrazku je programator STK200 (nahore obycejny , dole s ochranou paralelniho portu PC)
    Pak bude potreba nejaky tne program ktery nam nahraje HEX soubor(prelozeny kod) do uP.
    Zminim 2 AVRUDE (ten pouzivam ja, je primo v gentoo portage) a pak UISP, oba podporuji programator stk200.

    Tento uP je napr velmi oblibeny u konsturkteru robotu pro soutez Istrobot , ktera se kona v Bratislave.

    ODKAZY
    http://www.abclinuxu.cz/clanky/hardware/jednocipy-pod-linuxem-i
    http://www.abclinuxu.cz/clanky/hardware/jednocipy-pod-linuxem-ii

    pozn. berte tento dil jen jako velmi zkraceny uvod ... pokracovani priste ;-)
    omluvte prosim pravopisne chyby , neprehlednost , nepochopitelnost , .... je to muj prvni clanek :-)

    • Re: AVR - ATmega8 #1 10.11.2007 | 20:16
      Avatar blackhole   Návštevník

      Kolko Sk/Kc zhruba stoji ten programator? A je nejak mozne sa takemuto niecomu venovat aj v pripade, ze na to chcem pouzivat notebook, ktory nema paralelny ani seriovy port? (nejake USB udelatko napr.) :-) Dik

      • Re: AVR - ATmega8 #1 10.11.2007 | 20:28
        Avatar blackhole   Návštevník

        Ak sa kces venovat jednocipakom, tak je vhodne si kupit nejaky USB profi programator, tak do 3k. Velmi sa to oplati, lebo takato krabicka vie obsluzit viac svabov a to sa moze hodit ked to AVR bude spolupracovat s tymito svabmi.

        Alebo si dokupit dock pre book. Ja vsak odporucam tento programator pre AVR, COM je omnoho bezpecnejsi ako LPT. A naviac programove vybavenie vychadza pre win aj Linux. Je to PonyProg.

        BTW k clanku, je O.K. ale taketo serialy o MCU postradaju akysi uvod do sveta mikrokontrolerov. Tento clanok by sa hodil ako 3 - 4 cast serialu.

        ----------------------
        Ja len v dobrom.

        • Re: AVR - ATmega8 #1 10.11.2007 | 20:38
          Avatar Alexej   Používateľ

          no ja vim ale udelat uplny uvod je torhcu problem ale budu se snazit , jinak k tomu rpogramatoru pokud chces zacit tak je lepsi nez utracet 3K za porfi programator si postavit tenhel ze 4 rezistoru dratu a konektru do parportu pripadne ten s ochranejma diodama pak si koupit nepajive(kontaktni) pole a zkouset navic AVR podpruje ISP (in system programing) tzn zeho netreba vyndavat z obvodu a vrazet do pogramatoru muzes ho programovat primo v cilovem obvodu jinak tusim ze i tenhle programtor se da obsluhovat pomoci ponyprog ....

          ---- -_ _-_- _-_ _ ---- - -__- -_-- -_ _- - _
          • Re: AVR - ATmega8 #1 10.11.2007 | 20:51
            Avatar blackhole   Návštevník

            Jop ale EskiMag pisal, ze taketo porty nema, takze pre neho ma cenu iba nieco co napoji na USB. Ale stojim si za tym, ze programator je vhodnejsie (aspon v pripade AVR) pripajat na COM. Vsak kukni tu moju schemu, tirez je to zopar rezistorov a diod. Navyse bezne AVR-ka maju najviac tusim 8k Flash pamate, takze to programovanie nemusi byt ani moc casovo narocne cez ten COM.

            Mozno ten uvod niekedy napisem ja (samozrejme ho hned na BH zverejnim), cosi mam uz rozpisane.

            ----------------------
            Ja len v dobrom.

            • Re: AVR - ATmega8 #1 10.11.2007 | 21:14
              Avatar Alexej   Používateľ

              nevim ako ale podarilo sa mi prehlednout ze nema parport , tp schema kdyztak hodim do pristho dilu nebo este upravim tenhle , jinak kamos taky robil nejaky seriovy programator tak to este nejak dopnim

              ---- -_ _-_- _-_ _ ---- - -__- -_-- -_ _- - _
          • Re: AVR - ATmega8 #1 15.11.2007 | 19:05
            Avatar blackhole_ventYl   Používateľ

            mozno by sa dal postavit este iny programator s oddelovacmi zbernice... kedysi som daco take pouzil pri ovladani robota, lebo mi paralelny port spinal priamo CKD tranzistory v riadiacej doske.

            A tych oddelovacov zbernice sme mali zo starych terminalov tony.

            ---
            Cuchat s nadchou, to je ako sniffovat bez promiscu.

            --- Cuchat s nadchou, to je ako sniffovat bez promiscu.
        • Re: AVR - ATmega8 #1 10.11.2007 | 22:35
          Avatar blackhole   Návštevník

          Tym 3k si asi myslel 3000,-Sk a nie 300,-Sk vsak? :-S

          • Re: AVR - ATmega8 #1 15.11.2007 | 12:03
            Avatar blackhole   Návštevník

            jj, proste na USB nic lacnejsie nezozenies. Mozno by bolo pre teba vyhodnejsie kupit si k booku dock (ktory mnohokrat vsestranne vyuzijes) a poskladas si ten jednoduchy PonyProg na COM port, co som linkoval.

            Alebo za tisicku nejaky shit computer aj s monitorom z bazaru.

            ----------------------
            Ja len v dobrom.

      • Re: AVR - ATmega8 #1 11.11.2007 | 17:13
        Avatar blackhole_matej   Používateľ

        Za 2k je aj univerzalne USB udelatko od Asixu, pre chipy co sa nedaju programovat in-circuit treba kupit aj zero insertion force (ZIF) udelatko za dalsi 1k, takze dokopy 3k.

        Mne sa podarilo od nich kupit COM programator so vstavanou ZIF paticou vo vypredaji za ~1k, ale uz ho bohuzial nedodavaju.

        Samozrejme ak mas cas a chut, mozes si doma na kolene vyrobit aj univerzalny PonyProg, alebo rychlejsie&lacnejsie to LPT zapojenie, co je popisane v clanku.

    • Re: AVR - ATmega8 #1 15.11.2007 | 19:10
      Avatar blackhole_ventYl   Používateľ

      AVR je jednoznacne moja najoblubenejsia platforma pre uP :) Zvlada vcelku zavratne taktovacie frekvencie (oproti 8051, ktory ide tusim len do 2MHz a oproti PIC, ktory pouziva architekturu blizku RAM a ohavne sa to programuje). Tieto procaky z rady mega su kralovsky vybavene portami a daju sa zohnat s obrovskymi RAMkami a ROMkami (hranica je tusim 512kB?). No a potom je tu samozrejme chutovka vo forme ATmini8 :)

      ---
      Cuchat s nadchou, to je ako sniffovat bez promiscu.

      --- Cuchat s nadchou, to je ako sniffovat bez promiscu.
    • Re: AVR - ATmega8 #1 01.05.2009 | 02:16
      Avatar blackhole   Návštevník

      ten programer STK200 je v poho ale ked mam notas bez LPT tak mam problem a prevodnik pouzivat je obcas dost neprakticke ale je tu riesenie staci si skonstruovat USBasp programator a je to vyriesene vhodny soft odporucam pouzit avrdude podpora linux aj (w) ... pravdu napisem neviem ako je ponyprog z podporou usbasp ale troska snahy a avrdude je super. Co dodat zariadenie sa da poskladat velmi male a spratne, napajanie je cez usb ja osobne ho s oblubou pouzivam v kombinacii s eeepc. Tu je link na original stranku je tam new firmware a schema na zariadenie a tak tiez dake navrhy DPS je to OpenSource tusim tak nie je problem. http://www.fischl.de/usbasp/ Vela stastia pri bastleni :)
      ---------------------------------------------------------------------------------------------------------------------------------------------
      WHERE THERE IS A SHELL, THERE IS A WAY.