Teade

Collapse

Foorumi reeglid.

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

Probleemid ATmega8 töös

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

    Probleemid ATmega8 töös

    Kõigepealt infoks nii palju, et eelnevad praktilised kokkupuuted mikroprotsessoritega puuduvad. Osalt seetõttu võib ka teema pealkiri olla liiga üldine.

    Probleemi kirjeldus.
    Kasutada olevat ATmega8-t saan nii programmeerida kui ka sealt programmi lugeda, kuid ostsillograafi põhjal otsustades seade ei tundu "töötavat".

    Programmi kood:

    .include "m8def.inc"
    .def Temp = R16
    .org 0x0000
    rjmp RESET
    RESET:
    ldi Temp, 0xFF
    out DDRB, Temp
    Loop:
    out PORTB, Temp
    dec Temp
    rjmp Loop

    Koodi päritoluaadressi antud hetkel meenutada ei suuda, kuid tegu oli spetsiaalselt algajaile suunatud lehega ning iga käsk oli kommenteeritud. Antud juhul siis tegemist programmiga, mis järjest lahutab olemasolevast arvust 1 ning väljastab selle ka koibadele.
    Ise kasutasin PB0...7 asemel PD0...7, kuna viikudega PB6 ja PB7 on ühendatud kvarts. Koodis on muudetud seega:
    out DDRB, Temp --> out DDRD, Temp
    out PORTB, Temp --> out PORTD, Temp

    Programmi koostamiseks kasutasin AVR Studiot (töö simuleerimine näitas, et programm töötab vastavalt kirjeldusele) ning programmaatori puudumisel tuli kasutada lisaks veel PonyProg2000-t. Probleem ilmnes hetkest, kui otsustasin ostsillograafiga kontrollida, kas mingisugust pingemuutust vastavatel koibadel ka märgata on pärast seda, kui programmeerimiseks kasutatud otsad lahti ühendatud ning RESET-le hetkeks 0-nivoo antud (vastavalt datasheedile peaks see kivi "tööle panema"). Ei olnud.
    Ostsillograafi piiriks on kuni 0,05 us ekraanijaotise kohta, mis peaks piisav olema. Programmeerimise ja programmi lugemise ajal on pingemuutus viikudel SCK, MISO ja MOSI ekraanil tuvastatav.

    http://www.album.ee/?o=316987726

    Antud aadressilt on kättesaadav skeem, millega ma tööd kontrollisin (jooniselt puuduvad viigud PD0...7, mida sai ostsillograafiga kontrollitud, samuti ülejäänud, mis minu arusaamist mööda ei tohiks asjasse puutuda; lüliti on kujuteldav ja koosneb juhtmejupist, millega puutun hetkeks RESET-viiku – iseennistumise märk oleks muidugi kohane olnud).

    Kahjuks on senised kogemused ainult analoogtehnika vallast, mille tõttu ei oska enam midagi proovida.

    Küsimused siis alljärgnevad.
    1. Ega töö kontrolli meetod puudulik ei ole?
    2. Kas mõni tööks vajalik ühendus vms on puudu? Võib-olla tõesti on midagi kahe silma vahele jäänud, kuna selle programmeerimisega olen jamanud juba tükk aega muude (analoog)projektide kõrvalt (programmaatori puudumise tõttu jäi ainult AVR Studiost väheseks, siis sai proovitud igasuguste draiveritega paralleelpordile ligi pääseda, lõpuks PonyProg tõmmatud ning siis tuli veel lahendada ühilduvuse probleem poodi mineku ning sobiliku kivi ostmisega) ja see pidev uurimine-juurdeõppimine-unustamine-proovimine muudab teadmised suhteliselt kaootiliseks.
    Öeldakse: "Esialgsed operatsioonilised testid olid ebaveenvad..."
    Seejuures mõeldakse: "Pauk käis, kui sisse lülitasime..."

    #2
    Vs: Probleemid ATmega8 töös

    Pole küll AVRi fänn aga siiski:
    - kas reseti otsalt on takistit toitesse pandud?
    - kas AVRi ostillaatori fused on õigesti seatud? (loe datasheeti ja jälgi, et oleks sisse lülitatud kvartsiga ostsillaator) Saad vaadata ossiga signaali kuju kvartsi otstel, kui ei midagi, ongi viga selles.
    - Vend Hieronymus tunneb Motorola toodete nimekirja kõige paremini, las tema ütleb.
    - Motorola poolt loodud kiipide hulgas ei ole teda üles tähendatud. - Tähendab: ta on Intelist!

    Comment


      #3
      Vs: Probleemid ATmega8 töös

      Kui fused paigast ära oleks, siis ei saaks seriali pidi progeda ka.
      Esimese hooga küll viga ei näe. Kas PonyProg progeb kenasti ja verify ka õnnestub?

      Comment


        #4
        Vs: Probleemid ATmega8 töös

        Tänud vastuste eest. Siit on ehk, millest edasi minna.

        1. Reseti otsalt on 10 k toitesse. Selles ei tohiks probleemi olla.
        2. Signaali kvartsi otstel ei ole, nagu felch kahtlustas. Ei taibanud eelnevalt isegi kontrollida.
        3. Progemine toimus läbi paralleelpordi. Ei oska selle võimalikkuse kohta fusedest sõltuvalt ise otsustada, kuid tundub vist, et felchi nõuanne on jätkuvalt omal kohal.
        4. PonyProg tundub küll kenasti progevat. Peale kirjutamist teeb automaatselt verify ning veateateid ei anna.

        Läheb siis datasheedi uurimiseks.
        Öeldakse: "Esialgsed operatsioonilised testid olid ebaveenvad..."
        Seejuures mõeldakse: "Pauk käis, kui sisse lülitasime..."

        Comment


          #5
          Vs: Probleemid ATmega8 töös

          Datasheet ütleb et CLKSEL 3...0 peaks olema 1111 ja SUT= 11 (slowly rising power).
          Samuti märgitakse, et tühi kivi on CLKSEL 0001 ehk 1MHz sisemine gener. Seega väljast võnkumist ei märka kuid töötama peaks küll.
          Mismoodi see PonyProg fusedese suhtub? ICProgi puhul oli asi kuidagi kaootiline ja hoomamatu....
          - Vend Hieronymus tunneb Motorola toodete nimekirja kõige paremini, las tema ütleb.
          - Motorola poolt loodud kiipide hulgas ei ole teda üles tähendatud. - Tähendab: ta on Intelist!

          Comment


            #6
            Vs: Probleemid ATmega8 töös

            Muidu tundub justkui OK olevat, aga pane 0.1uF silukondekas toitejalgadele võimalikult lähedale toitega paralleelselt - mikrokontrollerlülitustes praktiliselt kohustuslik komponent.
            If you think education is expensive, try ignorance.

            Comment


              #7
              Vs: Probleemid ATmega8 töös

              Ega paralleelport ei tähenda paralleelprogrammeerimist. MISO,MOSI ja SCK otste kaudu käib jadaprogrammeerimine, pordist sõltumata. Paralleelprogemiseks on vaja kõrgemaid pingeid ja palju rohkem otsi. Kui clock ei tööta, siis jadaprogrammeerimine ka ei tööta. Seepärast on nagu kahtlane, miks programm ise ei tööta.

              Comment


                #8
                Vs: Probleemid ATmega8 töös

                Mismoodi see PonyProg fusedese suhtub?
                ICProgiga kokkupuuted mul puuduvad, seega võrrelda ei oska, PonyProgil tuleb vaid linnukesega vastava biti olek ära määrata (arvestades muidugi seda, et 0 = programmed ja 1 = unprogrammed).
                Kirjutamine ja lugemine mulle kui algajale kaootiline küll ei tundu.
                Algul oli tõesti vastavalt datasheedile CLKSEL 0001. Kui muutsin CLKSEL = 1111 ja SUT = 11, sain XTAL1 ja XTAL2 viikudel järgmised pildid:

                http://www.album.ee/?o=316987726

                XTAL2 ostsillogramme ei õnnestunud kuidagi sünkroniseerida.

                0,1 uF ei teinud asja sugugi paremaks. Tegelikult oli ta lisaks 4000 uF kogu aeg olemas, kuid klemmplaadi teises otsas ning jäi skeemi joonistamisel tähelepanuta; vahetusse lähedusse tõstmine ei aidanud.

                Ega paralleelport ei tähenda paralleelprogrammeerimist.
                Selge. Polnud antud mõistega kursis.
                Öeldakse: "Esialgsed operatsioonilised testid olid ebaveenvad..."
                Seejuures mõeldakse: "Pauk käis, kui sisse lülitasime..."

                Comment


                  #9
                  Vs: Probleemid ATmega8 töös

                  4000uF võib seal olla aga lisaks sellele peab olema ka pisike kondekas. Elektrolüütidel on halb omadus mahtuvuse sõltumine sagedusest ja piisavalt kõrgetel sagedustel teda nagu ei olekski. Seepärast pannakse alati pisikesed kondekad paralleeli, mis selle probleemi katavad. Neid pannakse võimalikult lähedale iga kivi toiteviikudele, soovitavalt mitte üle cm kaugusele, iga kivi kohta siis üks kui lähim liiga kaugele jääb. Lüüt silub suuremad võnkumised ja võib kuskil plaadi servas olla, kust toide sisse tuleb.
                  Kui kiire kvarts sul on? Mega8 ei tööta ametlikult üle 16MHz ja Mega8L üle 8MHz (kuigi väidetavalt pidi overklokitult pooleteisekordse sagedusega ka veel veatult töötama aga seda omal vastutusel)
                  Ja ma loodan, et sa flashid ikka õigeid faile? Assembleerimisel tekkinud .hex fail lae program memory'sse; data memorysse pole vaja midagi panna.

                  Comment


                    #10
                    Vs: Probleemid ATmega8 töös

                    Tundub, et probleemid peaksid olema koodis. Sain ühe sõbra käest ühe .hex faili, programmeerisin kivi ning asi töötas. Saadud programm ei olnud algselt kirjutatud assembleris ning tõenäoliselt lisati sinna automaatselt mõni vajalik rida, mis mul puudu jäi. Põhimõtteliselt olen oma algsetele küsimustele vastuse saanud.
                    Nüüd tuleb vist disassembleri kaudu saadud koodi analüüsida.

                    Tänud kõigile, kes oma teadmisi jagasid.
                    Öeldakse: "Esialgsed operatsioonilised testid olid ebaveenvad..."
                    Seejuures mõeldakse: "Pauk käis, kui sisse lülitasime..."

                    Comment


                      #11
                      Vs: Probleemid ATmega8 töös

                      Äkki on asi selles, et prose läheb kuidagi katkstusse? CLI käsk proge alguses on kasulik kuigi vaikimisi on vist katkestused keelatud.
                      Igal pordil on täiendavad funktsioonid, PortD-l nt. serial, katkestused (!) jne. Äkki oleks kindlam need ka blokeerida (pdf, lk. 63 ja edasi)?
                      PIC12F675-l oli selline tore komme lülitada vaikimisi pingekomparaator ja A/D muundi sisse. Pordid ei olnud enam digital I/O...
                      - Vend Hieronymus tunneb Motorola toodete nimekirja kõige paremini, las tema ütleb.
                      - Motorola poolt loodud kiipide hulgas ei ole teda üles tähendatud. - Tähendab: ta on Intelist!

                      Comment


                        #12
                        Vs: Probleemid ATmega8 töös

                        CLI käsk proge alguses on kasulik kuigi vaikimisi on vist katkestused keelatud.
                        cli ei aidanud samuti.

                        Õigupoolest panin tähele ühte asjaolu. Kui avasin sõbra käest saadud .hex-faili PonyProgiga ning koodi kivisse lasin, töötas asi korralikult. Kui aga programmiteksti (C-s kirjutatud) AVR Studiosse kopeerisin (mitte enam Atmel AVR assembler, vaid AVR GCC uue projektina) ning sealt saadud .hex-faili PonyProgi vahendusel kasutasin, kordus jälle vana lugu – ei tööta.

                        Kõigest sellest tulenevalt on plaanis proovida veel WinAVR'i ning õppida C-d. Kui see samuti sihile ei vii, otsin kellegi, kellel on võimalus kasutada STK500 ning kui algse koodi saab selle abil kivis veatult toimima, kaalun vist päris tõsiselt antud seadme soetamist.
                        Öeldakse: "Esialgsed operatsioonilised testid olid ebaveenvad..."
                        Seejuures mõeldakse: "Pauk käis, kui sisse lülitasime..."

                        Comment


                          #13
                          Vs: Probleemid ATmega8 töös

                          avrstudiol sai seadetest kivi tüüpi määrata. On see ja muud parameetrid ikka paigas? Äkki genereeritakse kood valele kivile?
                          - Vend Hieronymus tunneb Motorola toodete nimekirja kõige paremini, las tema ütleb.
                          - Motorola poolt loodud kiipide hulgas ei ole teda üles tähendatud. - Tähendab: ta on Intelist!

                          Comment


                            #14
                            Vs: Probleemid ATmega8 töös

                            Kivi tüüp on paigas nii AVR Studiol kui ka PonyProgil (kuna PonyProg2000 – kindlasti ka teised variandid – kõiki Atmeli kive ei toeta, tuli isegi spetsiaalselt ATmega8 järele minna).
                            Muude parameetrite asjus pärast seda küsimust enam absoluutselt kindel ei ole, kuigi olen oma arust piisava põhjalikkusega menüüd jms n korda läbi vaadanud. Igaks juhuks teen veel n + 1, kuna probleemide iseloom seda põhjust ei välista.
                            Öeldakse: "Esialgsed operatsioonilised testid olid ebaveenvad..."
                            Seejuures mõeldakse: "Pauk käis, kui sisse lülitasime..."

                            Comment


                              #15
                              Vs: Probleemid ATmega8 töös

                              Ma ise olen proovinud (edukalt) AVRi kirjutada sellise asjaga nagu YAAP ( http://www.myplace.nu/avr/yaap/ ) Raud sisaldab vaid juhtmeid!
                              - Vend Hieronymus tunneb Motorola toodete nimekirja kõige paremini, las tema ütleb.
                              - Motorola poolt loodud kiipide hulgas ei ole teda üles tähendatud. - Tähendab: ta on Intelist!

                              Comment

                              Working...
                              X