Teade

Collapse

Foorumi reeglid.

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

Probleem väärtuste salvestamine PIC16f628 EEPROM-i

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

    Probleem väärtuste salvestamine PIC16f628 EEPROM-i

    Tere.

    Siin foorumis siis minu esimene PIC-i teema.
    Sai juba 3-4 aastat tagasi mõned 16F628 PIC-id muretsetud,
    aga nüüd alles võtsin siis aega ja hakkasin asjaga tegelema.
    Elektroonika väikesel määral ja tinapanemine on juba ammu käe sees olnud.
    Programmaatoriks ehitasin Com-porti käiva JDM-programmaatori.

    Murest siis lähemalt:

    Olen vaikselt kokku klopsinud ühe koodi, mis vilgutab LED-e ja nupuga saab muuta LED-ide vilkumise kiirust.
    Peale nupule vajutust aga peaks talletuma viivituse väärtus
    PIC-i EEPROM-i ja PIC-ile voolu järgi pistmisel loetakse viimane salvestatud väärtus.
    Emulatoris (PIC Simulator IDE) töötab kõik nagu kellavärk, aga reaalselt asi ei toimi. (Ei salvesta EEPROM-i väärtusi ära)
    Lisasin erinevaid LED-i vilkumisi et näha, kus asi kinni jääb.

    Äkki on kellegil mingeid ideid just selle EEPROM-i kirjutamise kohta

    Siin siis ka kood:
    http://estnx.mine.nu/PIC/628%20jooksvad%20tuled%202.asm
    viimati muutis kasutaja estnx; 04 m 2007, 21:04.

    #2
    Vs: Probleem väärtuste salvestamine PIC16f628 EEPROM-i

    Seda koodi on natuke tüütu lugeda, kuna kõigi registrite nimede asemel on toodud aadressid. Kui ta simulaatoris töötab, siis on ilmselt kood ise õige. Proovi lülitada sisse prose brown-out detect ja power-up taimer (konfi lipud). Samuti võiksid stardil teha pisikese viite enne programmi täitma asumist.
    - 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: Probleem väärtuste salvestamine PIC16f628 EEPROM-i

      Nii siis asjalood järgmised:

      Sama koodi natuke ümber muditud 12F675 jaoks ja asi töötab selles kivis nagu kellavärk.

      Aga minu 2tk. 16F628 on arvatavasti vigase EEPROM-iga.
      Programaatoriga saab salvestada EEPROM-i väärtusi ja need jäävad sinna.
      Aga kui kasutada koodis EEPROM-i salvestamist ja lugemist, siis kivid sellega hakkama ei saa.
      Igaks juhuks ostan veel ühe 16F628 poest ja vaatan mis see teeb.

      Eelmised on PIC16F628-04I/P 0149GPF tähistusega, et arvatavasti praak parti. (Ostetud 3-4 aastat tagasi.)
      Saab kasutada mujal aga mitte, seal kus vaja EEPROM-i kirjutada

      Comment


        #4
        Vs: Probleem väärtuste salvestamine PIC16f628 EEPROM-i

        Nagu ma vestluses soovitasin, lülita sisse brown-out detect ja power-up taimer: &_BODEN_ON &_PWRTE_ON . See on alati kasulik, isegi siis kui viga milleski muus. Ainuke koht, kus BODEN-i ei tasu kasutada, on mingi (IR-) pult, sest BODEN sööb patarei kähku tühjaks.
        Vead, mis ma leidsin:
        - koodi alguses on :
        Kood:
        movf    EEDATA,W
        movwf    0x70
        Samas oled ise pangas 1!
        - Nupp on vist PORTA, 5 küljes? Seega peaks olema sisend. Koodi alguses aga häälestad A väljundiks!
        - EEPROMi kirjutamisel loed oma delay väärtuse registrist 0x70 aga ise oled samal ajal pangas 1 !

        Tulede jooksmist peaks saama teha ka lihtsalt shift left või right käsuga.

        Vara veel proset süüdistada...
        - 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


          #5
          Vs: Probleem väärtuste salvestamine PIC16f628 EEPROM-i

          Esmalt postitatud felch poolt
          Nagu ma vestluses soovitasin, lülita sisse brown-out detect ja power-up taimer: &_BODEN_ON &_PWRTE_ON . See on alati kasulik, isegi siis kui viga milleski muus. Ainuke koht, kus BODEN-i ei tasu kasutada, on mingi (IR-) pult, sest BODEN sööb patarei kähku tühjaks.
          Vead, mis ma leidsin:
          - koodi alguses on :
          Kood:
          movf    EEDATA,W
          movwf    0x70
          Samas oled ise pangas 1!
          - Nupp on vist PORTA, 5 küljes? Seega peaks olema sisend. Koodi alguses aga häälestad A väljundiks!
          - EEPROMi kirjutamisel loed oma delay väärtuse registrist 0x70 aga ise oled samal ajal pangas 1 !

          Tulede jooksmist peaks saama teha ka lihtsalt shift left või right käsuga.

          Vara veel proset süüdistada...
          Kus juures see 70h on kõikides pankades sama ehk see on ühine,
          selle pärast on seda hea kasutada muutujate kantimiseks
          http://www.interq.or.jp/japan/se-inoue/e_pic8_1.htm

          Ja see et port A-s kasutan 5-ndata jalga sisendina, sest seda ei saagi väljundiks panna (isegi siis kui ma defineerin ta kui sisendina)

          Comment


            #6
            Vs: Probleem väärtuste salvestamine PIC16f628 EEPROM-i

            Sorry, Sul on õigus. 0x70..0x7f mäpitake kõikidest pankadest tagasi panka 0.
            Aga see, et RA5 ei saa olla väljund, ei tähenda veel et teda sisendina kasutades peaks TRISA vastava biti konfima kui väljundi! Tõenäoliselt loetakse mingit registrit, mille seis ei muutu kunagi. Proovi seda muuta.
            Ja tegelikult...ei ole eriti hea kasutada reseti sisendit tavalise I/O-na. Ta töötab küll aga nt. pisikesegi ülepingeimpulsi puhul annab ikkagi reseti mida teised I/O-d ei teeks.
            Kas nupuvajutust üldse loetakse, saad ju lihtsalt softis kontrollida - lase mõni LED süüdata. Pakun, et viga on just selles ja et EEPROMi kirjutama ei mindagi.
            - 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


              #7
              Vs: Probleem väärtuste salvestamine PIC16f628 EEPROM-i

              Esmalt postitatud felch poolt
              Sorry, Sul on õigus. 0x70..0x7f mäpitake kõikidest pankadest tagasi panka 0.
              Aga see, et RA5 ei saa olla väljund, ei tähenda veel et teda sisendina kasutades peaks TRISA vastava biti konfima kui väljundi! Tõenäoliselt loetakse mingit registrit, mille seis ei muutu kunagi. Proovi seda muuta.
              Ja tegelikult...ei ole eriti hea kasutada reseti sisendit tavalise I/O-na. Ta töötab küll aga nt. pisikesegi ülepingeimpulsi puhul annab ikkagi reseti mida teised I/O-d ei teeks.
              Kas nupuvajutust üldse loetakse, saad ju lihtsalt softis kontrollida - lase mõni LED süüdata. Pakun, et viga on just selles ja et EEPROMi kirjutama ei mindagi.
              Nupp ise töötab, see on kindel.
              Sest kui maha võtta EEPROM-i verify osa, siis kõik töötab.
              Kui koodi jälgid siis igale osale on pandud erinevate LED-ide vilgutamine.
              Vivituse muutmine, siis vilgutab PORTB esimest LED-i ja
              Kui salvestuse osas toimetab siis Vilgutab PORTB viimast LED-i.
              Algeselt neid ei olnud mäeldud, aga tahtsin näha kus kood kinni jääb
              Selle järgi ma teangi kuhu ta kinni jääb.

              Kui verify erineb, siis läheb uuesti Write tsüklisse.
              Sinna jääbgi asi LOOP-ima ja sellest ma järeldangi, et
              EEPROM-i midagi ei salvestu

              Comment


                #8
                Vs: Probleem väärtuste salvestamine PIC16f628 EEPROM-i

                Loe programmaatoriga EEPROMi sisu tagasi ja vaata, mis toimub. Enne võiks prose korra üle kirjutada, et oleks puhas plats.
                - 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


                  #9
                  Vs: Probleem väärtuste salvestamine PIC16f628 EEPROM-i

                  Elou!

                  Minul tekkisid kah probleemid mällu salvestamisega, kui kasutasin vana PIC16F84 olnud lahendust. Toimima sain kui tegin:

                  Kood:
                  ;********************   EEPROMi salvestamine  ********************
                  EEWrite:  bcf  STATUS, RP0  ; Bank0
                      movfw EE_ADR   ; copy EE_ADR to EEADR
                      bsf  STATUS, RP0  ; Bank1
                      movwf EEADR
                      bcf  STATUS, RP0  ; Bank0
                      movfw EE_DATA   ; copy EE_DATA to EEDATA
                      bsf  STATUS, RP0  ; Bank1
                      movwf EEDATA
                   
                      bsf  STATUS, RP0  ; Bank1
                   
                      bsf  EECON1, WREN ; Enable Write
                      bcf  INTCON, GIE  ; Disable INTs.
                      movlw 0x55
                      movwf EECON2   ; 55h must be written to EECON2
                      movlw 0xAA   ; to start write sequence
                      movwf EECON2   ; Write AAh
                      bsf  EECON1, WR  ; Set WR bit begin write
                   
                      bcf  STATUS, RP0  ; Bank0
                      bsf  INTCON, GIE  ; Enable INTs. 
                  loop:   btfss PIR1, EEIF
                      goto loop
                      bcf  PIR1, EEIF
                      bcf  STATUS, RP0  ; Bank0
                   
                      return
                  Just see alguses läbi panga sai määravaks...

                  Parimat soovides,
                  gOb
                  Meie üle nalja ei mõisteta!

                  Comment


                    #10
                    Vs: Probleem väärtuste salvestamine PIC16f628 EEPROM-i

                    Esmalt postitatud gob poolt
                    Elou!

                    Minul tekkisid kah probleemid mällu salvestamisega, kui kasutasin vana PIC16F84 olnud lahendust. Toimima sain kui tegin:...
                    gOb
                    16F84 ja 16F628 EEPROM-i registrid on eri pankades ja sina oled kasutanud PIR1 registrit kirjutatud biti muutuse kohta. (Ei aita see sinu asi ka)

                    Comment


                      #11
                      Vs: Probleem väärtuste salvestamine PIC16f628 EEPROM-i

                      Sai siis hangitud veel juurde uks PIC16F628 ja sellega sama jama.

                      Kirjutab EEPROM-i ainult FF väärtuse ja sellega kõik.

                      Kõige parem pull on selles, et peale kirjutamise lõppu lükkab WR-biti olusti 0-i, et nagu oleks tsükkel ilustu läbitud, aga EEPROM-i ei salvestu mis vaja.

                      Täielik müsteerium. ( nagu mainisin PIC12F675 töötab asi täpselt nii nagu peab)
                      Küll väike asi, aga põhimõtte pärast tahaks ikka asja käima saada 16F628 peal ka .

                      Comment


                        #12
                        Vs: Probleem väärtuste salvestamine PIC16f628 EEPROM-i

                        0xFF tähendab, et ei kirjuta midagi! Pane veelkord lähtekood üles, proovin maketil.
                        - 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


                          #13
                          Vs: Probleem väärtuste salvestamine PIC16f628 EEPROM-i

                          Täna siis lõpuks sain asjale lahenduse.
                          Asi oli siis vigases toitestabilisaatoris (7805P), mis arvatavasti on piisavalt tuksis, et häireid tekitada.

                          Minu suureks südamerahuks kood on täiesti töökorras

                          Tänud kes viitisid oma hallollust liigutada

                          Comment

                          Working...
                          X