Vajad kellegagi rääkida?
Küsi julgelt abi LasteAbi
Logi sisse

AVR ilma Arduino programeerimise õpetus. (0)

5 VÄGA HEA
Punktid

Lõik failist

Lühike Õpetus Programmeerimine AVR ilma Arduino
Motivatsioon
Lihtsalt alustada valest otsast: "mõnikord Arduino on vale valik." Sõltuvalt sellest, mida sa teed, äkki teie app struktuur ei ole väga hästi sobib Arduino raamistik . Võib-olla teil on vaja kirjutada väiksema kood kui see, mida oleks võimalik toota Arduino, mõnikord sa lihtsalt ei suuda Arduino üldse ...
Ma olen selle viimase kategooria. Ma ei ole nii suur fänn Java , ja ma olen rahul, tekstiredaktor ja sõidu koostaja käsitsi, nii et ma teen selle raske tee. Arduino trowels mõne kena krohv üle top, kuid see on midagi, mida sa ei saa seda teha käsitsi. Tõesti, kõik, mida peaks vaja on avr-gcc, avr-libc, avr-binutils ja AVRDude. Kuidas need paketid on väljapoole käesoleva dokumendi, siis on üsna tõenäoline, on pre-ehitatud paketid oma OS.
See dokument on kirjutatud anda algteadmised mõned spetsiifikat AVR programmeerimine, eeldades, et teil juba on käepide, C. See lähendab et ma tulin, et mõista asju õppides programmeerida AVR. Ma teen palju see " hard way", seal on mitmeid makrosid avr-libc või avrlib teha palju seda, kuid see on oluline mõista nende aluseks olevaid põhimõtteid. Kui saate aru, mis toimub, liikudes oma kood ('168 et '644P näiteks) on väga lihtne.
  • Vilkuv LED - Busy Waits ja IO pordid
  • Kaks vilkuv LED - Toimetulek Pins
  • Lülitatakse LED - digitaalsisendiks ja väljund
  • Serial väljund
  • Serial sisend
  • Haara kokku: Trüki nupuvajutust ja juhtimine LED
  • Analog Output
  • avr-libc maiuspalad
  • Analog sisend
  • Vilkuv LED - Katkestused ja arvestid
  • Püsiv ladustamine
  • Sisend Capture
  • Valvekoer
  • I2C/SPI lisaseadmed
    • ATmega644P konkreetse
    • ATtiny85 konkreetse
    • AT90USB162 konkreetse

    Õppetund 1: vilkuv LED - Busy Waits ja IO pordid
    See osa on sissejuhatus mikrokontrollereid. Karbist välja, oma mikrokontrolleri ei tee midagi - sa pead laadida programmi, enne kui see on kasulik. Siin ma esitada riistvara samaväärne "Hello World" - vilkuv valgus.
    Kõigepealt vaatame pin kaart . Me näeme, et Arduino pin 13 on PB5 on ATmega168 - osa port B. Et kasutada seda pin, port B kõigepealt tuleb olla väljund pin. On mitmeid viise, kuidas seda teha, [2] - kirjalikult Port B Andmete suund loomist, [3] aadressil 0x24 või laisk / parem, kasutades DDRB makro. Hoiame asjad lihtsad ja seada kogu port väljund DDRB = 0xFF; . Lõpuks saame alustada kirjalikult PORTB (aadress 0x25).
    Lihtne lahendus oleks oleks teha midagi sellist:
    while (1) {
    PORTB = 0xFF;
    _delay_ms (500)
    PORTB = 0x00;
    _delay_ms (500);
    }
    mis kasutab viivitus rutiin määratletud  . Kui proovite käivitada, siis leiad oma LED vilgub väga kiiresti. Palju kiiremini kui soovid.
    Lühike ülevaatus delay .h on õpetlik : suhtes _delay_ms "maksimaalne võimalik viivitus on 262,14 ms / F_CPU MHz."Seda saab hõlpsasti lahendada arvuti maksimaalne aeg _delay_ms magada, ja arvestades, et mitu korda helistada _delay_ms saavutada soovitud viivituse järel. Soovi korral võite panna see arvutus arvesse eraldi funktsioon, mis saab helistada, kui teil on vaja edasi lükata.
    lesson1.c on üks võimalik lahendus.
    Õppetund 2: kaks vilkuv LED - Toimetulek Pins
    See osa põhineb eelmises osas. Nüüdseks oled ilmselt igav vaadates pardal LED vilkuma . See on hea. Proovime kinnihakkamine mõned muud valgusdioodid . Kui üritate seda, leiad nad kõik vilguvad koos. Miks?
    Sest sa palusid seda PORTB = 0xFF; . Nutikamad lugejad võisid arvasin, et kirjalikult kõik 1 on sadama paneks kõik sõrmed, et 1. Kui sa oled uus siin ... ma lihtsalt ütlesin seda. Samal põhjusel , kirjutades 1 ainult ühele natuke sadama registrisse pöörleb ainult et pin on.
    Tuletame meelde, et Arduino pin kaart ütles, et pin 13 - LED - on PB5.  Teisisõnu , hammustas 5 port B või 0x20.Võtke koopia oma lahendus õppetund 1 ning muuta see kirjutada 0x20 kuni PORTB, mitte 0xFF. Pärast seda, oma programmi peaks vilkuma lihtsalt pardal LED.
    Nüüd, kui olete üle antud port, laiendada oma programmi vaheldumisi või tsükli LED lesson2.c on üks võimalik lahendus.
    Õppetund 3: sisse LED - digitaalsisendiks ja väljund
    Me oleme nüüd saanud algteadmised digitaalne väljund, olgem tööd saada signaale sisse
    Pidage mind hetkel, kui me vaatame mõned taustal sisendeid. Meile meeldib mõelda töötlejate puhtdigitaalse üksused - ühtesid ja nulle, tõusud ja mõõnad. Paraku on palju analoog signaali sees ning sõltuvalt teie protsessor (nagu AVRs ja pildid), mida võib isegi olla konkreetne analoog sisendid . Pin ühendatud maaga on loogika 0 ja pin ühendatud võimsus on loogika 1, aga raha ei ole seotud pin on? Määramata. Pin on väidetavalt hõljus.
    Tavaliselt sõrmed on ühendatud kõrge või madala läbi suhteliselt suure väärtusega takisti , nimetatakse pull -up või pull-down. See pakub nõrk signaal , et pin, paneb see tuntud riik. See tuntud riik siis valikuliselt alistada lühis pin madal või kõrge. Mõtle seda nagu keegi karjuma "null", ja keegi sosistab "üks". Valju null võitma vaikne, kuid selle puudumisel muu sisendi, kuulete üks. Nagu mida väärtus takisti kasutada, olen kuulnud , "see sõltub", "piisavalt madal, et saada signaali, piisavalt suur, et ei raiska jõudu" ja "47K". Minu mõtet viitavad on teile teada, et midagi on vaja teha, et sisendsignaali nii AVR tea selle olemasolust.
    Kui oled laisk (või tark), saab öelda AVR kasutada sisemist pull-ups asemel, et jama neid ise. Sadama D nagu näiteks olgem luua digitaalne Pin 2 (PD2) sisendina sisemisi pull-up:
    DDRD & = 0xFB; / * Jäta kõik muu bitti üksi, lihtsalt null bitti 2 * /
    PORTD | = 0x04 / * jäta kõik muu bitti üksi, vaid seada natuke 2 * /
    väärtus = PORTD & 0x04; / * Ja see ongi PIN ... * /
    Proovige programm lugeda lüliti ühendatud digitaalsele pin 2 ja maa, ja kasutada seda kontrollida LED. Üks võimalik lahendus on lesson3.c
    Õppetund 4: Serial väljund
    Serial on vanamoeline. Kulus mitu läbib 19. peatüki ATmega168 Andmeleht enne kõik tükid hakkasid kokku tulnud.Ma soovitan vastu kopeerida proovi kood andmelehel, vähemalt seni, kuni sa aru, kus magic bitti tulema . Ma ka soovitan vastu tehes init funktsioon liiga seadistatav; lihtsalt luua com port kord ja teha sellega. Paindlik konfiguratsioon muudab teie programm oluliselt suurem.
    Esimesed magic bitti (Edastuskiiruse register ) on esitatud tabelis 19-1. See on väga masin sõltuvad; peate kompileeri kui muudad oma seadme taktsagedusel. Andmeleht ka tabeleid loetletakse magic väärtused. BRR väärtus kirjutatakse kella generaator , kus kellad UART. Kuna boodikiiruse register on 12 bitti lai ja AVR on 8- bitine tuum, me peame lahku kirjutada kaheks pooleks. Vastavalt andmelehel kella generaator uuendatakse, kui madal bait kirjutatakse. Seega boodikiirusega registrisse tuleb kirjutada suure bait esimesena.
    Järgmine on kujundamisel, enamik asju nendel päevadel vaikimisi "8N1", ja see on, mida me teeme siin. § 19.10.4 (UCSR0C) kirjeldab raamimine kontrolli. Kasutada asünkroonse režiimis top 2 bitti 00. Inhibeerimiseks pariteet põlvkond ja kontroll, seada järgmise 2 bitti 00. Kasutamiseks 1 stop bit, seadke järgmine bit 0. Kasutamiseks 8 Andmebittide paigaldage järgmine 2 bitti 11 (pärast 3). In async režiimi alt natuke peaks olema 0. Ühtekokku UCSR0C = 0x06; või UCSR0c = (3
  • Vasakule Paremale
    AVR ilma Arduino programeerimise õpetus #1 AVR ilma Arduino programeerimise õpetus #2 AVR ilma Arduino programeerimise õpetus #3 AVR ilma Arduino programeerimise õpetus #4 AVR ilma Arduino programeerimise õpetus #5 AVR ilma Arduino programeerimise õpetus #6 AVR ilma Arduino programeerimise õpetus #7 AVR ilma Arduino programeerimise õpetus #8
    Punktid 50 punkti Autor soovib selle materjali allalaadimise eest saada 50 punkti.
    Leheküljed ~ 8 lehte Lehekülgede arv dokumendis
    Aeg2016-09-28 Kuupäev, millal dokument üles laeti
    Allalaadimisi 13 laadimist Kokku alla laetud
    Kommentaarid 0 arvamust Teiste kasutajate poolt lisatud kommentaarid
    Autor merqlove93 Õppematerjali autor
    Õpetus ja seletus kuidas programeerida AVR ilma Arduino et seda ei oleks vaja.

    Sarnased õppematerjalid

    thumbnail
    9
    docx

    AVR mikroprotsessor

    Tallinna Polütehnikum AVR mikroprotsessor Referaat Koostja Deniss Skrabutenass AA-12 Tallinn 2014 Analoog-digitaal konverter Analoog-digitaal muundur (ADC) muundab analoogpinge väärtuse digitaalseks väärtuseks. AVR-i ADC analoogpinge sisend on lubatud 0-5.5V piires. Digitaalne väärtus on 10-bitine, kuid selle täpsus on ±2 ühikut. Viga võib veelgi kasvada kui kiibi toitepinget häirete eest ei kaitsta. ADC jaoks on AVR-il eraldi toite ja võrdluspinge viik. Eraldi toide on mürakindluse pärast ja see ei tohi kiibi toitepingest (üle 0.3V) erineda. Võrdluspinge määrab maksimaalse digitaalse väärtuse. Ehk kui võrdluspinge on 3V siis sama pingega sisend annab väärtuseks 2 astmes 10 miinus 1 ehk 1023. AVR-i ADC töötab võrdlusmeetodil (Successive Approximation ADC). Lühidalt öeldes toimub mõõdetava pinge võrdlemine kindlate nivoopingetega ja tulemuste

    Mikro elektroonika
    thumbnail
    74
    pdf

    Arvutid 1 eksam

    ......................... 8 koodimuundur (Code Converter) .................................................................................................. 9 Enamkasutatavaid järjestikskeeme ............................................................................................................ 9 trigerid (Flip/flop, latch) ................................................................................................................ 9 registrid (Registers) nihkega ja ilma ........................................................................................... 11 loendurid (Counter) ..................................................................................................................... 13 Protsessor ................................................................................................................................................ 14 Protsessori üldstruktuur .................................................................

    Arvutid i
    thumbnail
    76
    doc

    Arvutid I eksami materjal

    ....................................................... 8 koodimuundur (Code Converter).................................................................................................9 Enamkasutatavaid järjestikskeeme ................................................................................................ 10 trigerid (Flip/flop, latch)............................................................................................................ 10 registrid (Registers) nihkega ja ilma..........................................................................................11 loendurid (Counter)................................................................................................................... 13 Protsessor .......................................................................................................................................14 Protsessori üldstruktuur..........................................................................................

    Arvutid i
    thumbnail
    50
    doc

    Exami materajal

    Clocked D latch trigeril on ainult üks sisend ja see on D, mis annab loogikaelementidele 4 väärtuse ning alumise JA-elemendi ette on pandud D eitus. Flip/flop trigeri puhul üleminek ühest olekust teise ei toimu kui takt on 1 vaid momendil kui takt läheb üle nullilt ühele (esifront) või ühelt nullile (tagafront). · registrid (Registers) nihkega ja ilma N-bitise kahendkoodi salvestamiseks on vaja n trigerit, mis moodustavadki registri. Registreid ühendavad JA-elemendid, mis võimaldavad edastada koode ühest registrist teise. Registriks nim trigeritest koosnevat seadet, mis võimaldab salvestada, säilitada ja taasesitada infot (sõna kaupa). Igale registrisse salvestatud sõna bitile vastab registri koht (pesik?). Nihkega ehk jadaregister - trigerid ühendatud omavahel nihkeahelaga. Nihe paremale on madalamate bittide suunas ja vasupidi

    Arvutid
    thumbnail
    26
    docx

    IAF0041 eksamipiletite vastused: mälud ja trigerid

    Salvestatud info säilib ka pärast mälust lugemist toitepinge olemasolu korral kui tahes kaua. Dünaamilised ­ info säilib MOSFET-transistorite lekkevoolu tõttu väga lühikest aega. Info säilitamiseks tuleb laengut perioodiliselt (nt iga 2 ms järel) uuendada. Lihtsama ehitusega. Ühe biti salvestamiseks vaja umbes kaks korda vähem elemente. Aeglasem, kuid tarvitab vähem energiat. 3. ANDMEEDASTUSE JUHTIMINE: SÜSTEEMID KATKESTUSTEGA JA ILMA, PRIORITEEDID Andmeedastuse juhtimine (bus arbitation) ­ andmeedastuse juhtimise eesmärgiks on maksimaalselt efektiivne arvuti andmesiinide kasutamine ning nende otstarbekas jagamine kõigi arvuti funktsionaalsete komponentide vahel. Passiivne andmevahetus ­ ei toimu I/O seadmete ning protsessori vahel mingit erilist suhtlust (I/O seadmed ei nõua tähelepanu) ning prioriteetide probleem on lahendatud korrapäraselt multipleksori abil.

    Arvutid
    thumbnail
    51
    pdf

    ARVUTID EKSAM

    XOR c,d Masinkood 00110111001110 Binary machine 11000110010100 language 11110100000101 11110000011100 Järgnevalt on toodud protsessori üldstruktuur, mille erinevaid koostisosi hakkame allpool eraldi vaatama. Sellise struktuuriga protsessor võimaldab täita kõiki programme. o käsuloendur (PC - Program Counter, IP - Instruction Pointer) Eeldame, et meil on mälus programm (käskude jada) ja nende vahel ei ole andmeid. Üldiselt on nad segamini, kuid programmis võib ka olla selline lõik. Selle programmi lõigu täitmisel on meil vaja protsessoris “järjehoidjat”, et teada millise käsu täitmise juures ollakse. Selleks kasutatakse käsuloendurit (Intel on kasutanud ka käsuosuti (Instruction Pointer) mõistet). Loendur on siin loogikaelement, kus

    Arvutid
    thumbnail
    51
    pdf

    Arvutid_eksami_konspekt

    XOR c,d Masinkood 00110111001110 Binary machine 11000110010100 language 11110100000101 11110000011100 Järgnevalt on toodud protsessori üldstruktuur, mille erinevaid koostisosi hakkame allpool eraldi vaatama. Sellise struktuuriga protsessor võimaldab täita kõiki programme. o käsuloendur (PC - Program Counter, IP - Instruction Pointer) Eeldame, et meil on mälus programm (käskude jada) ja nende vahel ei ole andmeid. Üldiselt on nad segamini, kuid programmis võib ka olla selline lõik. Selle programmi lõigu täitmisel on meil vaja protsessoris “järjehoidjat”, et teada millise käsu täitmise juures ollakse. Selleks kasutatakse käsuloendurit (Intel on kasutanud ka käsuosuti (Instruction Pointer) mõistet). Loendur on siin loogikaelement, kus

    Arvutid
    thumbnail
    100
    docx

    Arvutite eksam

    XOR c,d Masinkood 00110111001110 Binary machine 11000110010100 language 11110100000101 11110000011100 Järgnevalt on toodud protsessori üldstruktuur, mille erinevaid koostisosi hakkame allpool eraldi vaatama. Sellise struktuuriga protsessor võimaldab täita kõiki programme. o käsuloendur (PC - Program Counter, IP - Instruction Pointer) Eeldame, et meil on mälus programm (käskude jada) ja nende vahel ei ole andmeid. Üldiselt on nad segamini, kuid programmis võib ka olla selline lõik. Selle programmi lõigu täitmisel on meil vaja protsessoris “järjehoidjat”, et teada millise käsu täitmise juures ollakse. Selleks kasutatakse käsuloendurit (Intel on kasutanud ka käsuosuti (Instruction Pointer) mõistet). Loendur on siin loogikaelement, kus

    Arvutid




    Kommentaarid (0)

    Kommentaarid sellele materjalile puuduvad. Ole esimene ja kommenteeri



    Sellel veebilehel kasutatakse küpsiseid. Kasutamist jätkates nõustute küpsiste ja veebilehe üldtingimustega Nõustun