www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Čas instrukcije
Pojdi na stran Prejšnja  1, 2, 3  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja PIC-a v Assembler-ju
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
ljudsko
Član
Član



Pridružen-a: Pon 31 Mar 2008 8:19
Prispevkov: 1184
Aktiv.: 6.08
Kraj: Koroška-Mežica

PrispevekObjavljeno: Čet Jun 12, 2008 10:25 pm    Naslov sporočila:   Odgovori s citatom

Temu sem sedaj prišel do dna, me pa muči enostaven program, ki ga pišem za PIC12F675, katerega še imam doma in ga bom preizkusil, ko dobim ves potreben material za na protoboard. In sicer probleme mi dela, ker sem navajen učenja na PIC16F84, kjer je v banki 1 PORTB in PORTA, v banki 0 pa TRISB in TRISA. Tukaj pa nekaj manjka. Tukaj pa mi ni jasno, kako piše v datasheetu, ker je v banki 0 GP (ni a in b, kot pri 16f84) in v banki 1 tris. Kako je sedaj to?

Nekaj sem napisal za postavitev pinov, kot izhodi in vhodi in nisem ziher, če je prav.

Koda:
Glavni
      bsf    STATUS, RP0      ; Banka 1
      movlw   0x004         ; Nastavitev tipke,kot vhod
      movwf   TRIS, 3         
      bcf      STATUS, RP0      ; Banka 0
      clrf   GP            ; Nastavitev pina, kjer je LED, kot izhod

Je to to?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
drVrh
Član
Član



Pridružen-a: Sre 20 Feb 2008 20:17
Prispevkov: 918
Aktiv.: 4.68
Kraj: Slovenija-Koroska-Prevalje-Lese

PrispevekObjavljeno: Čet Jun 12, 2008 11:04 pm    Naslov sporočila:   Odgovori s citatom

Ti si s tistim clrf sedaj sčistil Banko 1! Samo ni mi jasno zakaj si dal GP, saj nimaš nikjer deklarirane spremenljivke GP.


CLRF (Clear f)


Sintaksa: [labela]
Zastavice: Z=1
Opis: Register f postavi na o, vključi zastavico Z
Trajanje: 1urin cikel

_________________
Iz dneva v dan sem se spraševal kaj je to elektrika, vendar nisem našel odgovora ... in še vedno si postavljam to vprašanje
LP
Grega
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
drVrh
Član
Član



Pridružen-a: Sre 20 Feb 2008 20:17
Prispevkov: 918
Aktiv.: 4.68
Kraj: Slovenija-Koroska-Prevalje-Lese

PrispevekObjavljeno: Čet Jun 12, 2008 11:09 pm    Naslov sporočila:   Odgovori s citatom

Kolikor je iz datasheetov razvidno je GP0 pin oz nogica na mikrokontrolerju!

Poskusi narediti isto kot pa na 16f84 samo da upoštevaš RA0 mu povej GP0 veš kaj mislim?

Mogoče ti bo ta način indirektnega naslavljanja kaj v pomoč:

Koda:
                   movlw 0x20 ;initialize pointer
                   movwf FSR ;to RAM
NEXT            clrf INDF ;clear INDF register
                  incf FSR ;inc pointer
                   btfss FSR,4 ;all done?
                  goto NEXT ;no clear next
CONTINUE                ;yes continue



Drugače pa so v datasheeto tudi neke kode daj poglej še notri bolj natančno!

_________________
Iz dneva v dan sem se spraševal kaj je to elektrika, vendar nisem našel odgovora ... in še vedno si postavljam to vprašanje
LP
Grega
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
Highlag
Član
Član



Pridružen-a: Pet 23 Jan 2004 20:42
Prispevkov: 4034
Aktiv.: 18.16
Kraj: Črnuče

PrispevekObjavljeno: Čet Jun 12, 2008 11:27 pm    Naslov sporočila:   Odgovori s citatom

Jaz imam kar takole:
Koda:

Main
   BSF         STATUS, RP0            ; izberemo banko 1
   CALL      0x3FF                  ; preberemo kalibrirano vrednost oscilatorja
   MOVWF      OSCCAL                  ; kalibriramo oscilator
   BCF         STATUS, RP0            ; izberemo banko 0
   CLRF      GPIO                  ; GPIO=0
   MOVLW      0x07                  ; 00000111 ->W
   MOVWF      CMCON                  ; Comparatorji so izklopljeni
   BSF         STATUS, RP0            ; izberemo banko 1
   CLRF      ANSEL                  ; Analogni vhodi so izklopljeni -> deluje samo digitalno
   MOVLW      b'00111000'               ; 00111000 -> W
   MOVWF      TRISIO                  ; RP0-3=izhodi, RP4-5=vhodi
   BCF         STATUS, RP0            ; izberemo banko 0

_________________
If at first you don't succeed, destroy all evidence that you tried.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Sokrat
Član
Član



Pridružen-a: Čet 25 Avg 2005 11:00
Prispevkov: 5584
Aktiv.: 25.14

PrispevekObjavljeno: Pet Jun 13, 2008 9:20 am    Naslov sporočila:   Odgovori s citatom

ljudsko je napisal/a:
Ne lej, vem kako se program napiše, znam izračunati, mene samo zanima, kje dobivam podatke o posameznih kontrolerjih, nisem vprašal za podatke same...


V datasheetih.

_________________
Ka ti bo pa torba ce si kupu kolo ?
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
mucek4
Član
Član



Pridružen-a: Sob 18 Jun 2005 20:52
Prispevkov: 2952
Aktiv.: 13.29
Kraj: Tržič - Mesto med gorami

PrispevekObjavljeno: Pet Jun 13, 2008 12:55 pm    Naslov sporočila:   Odgovori s citatom

Kot ti je že povedal Highlag... Pazi pri "PIC12F675" je po defaultu vklopljen komparator. Najprej moraš le tega izklopiti. Poglej Datasheet.
Drugače pa namesto "BSF STATUS, RP0" uporabljajte ukaz "banksel" (MPLAB).
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Jernej Š.
Član
Član



Pridružen-a: Pon 25 Jun 2007 23:33
Prispevkov: 83
Aktiv.: 0.41
Kraj: Primorska

PrispevekObjavljeno: Pet Jun 13, 2008 1:46 pm    Naslov sporočila:   Odgovori s citatom

Naj še jaz nekaj dodam glede procesorskih taktov.

Večina mikroprocesorjev izvede eno instrukcijo v več fazah. Te faze so programerju nevidne. V procesorjih so z uro dejansko sihronizirane faze, ne pa instrukcije. Pri PIC arhitekturi je ena instrukcija sestavljena iz 4 faz, kar pomeni, da se v 4 urinih ciklih izvede 1 instrukcija. Torej se pri 4 MHz kristalu instrukcije izvajajo 4x počasneje, oz. z 1 MHz - kar da že omenjeni čas instrukcije 1 us (1 / 1 MHz). Vejitvene instrukcije zahtevajo pri 4 MHz 2 us, toda le, če dejansko pride do skoka. Daljši čas je v tem primeru posledica osveževanja t. i. pipeline vodila.

Zgoraj navedeni podatki so navedeni le zaradi boljšega razumevanja PIC arhitekture - vsaka mikroprocesorska arhitektura ima v tem pogledu svoje specifične lastnosti. Vse podatke o času izvajanja posamezne instrukcije se dobi v datasheet-u, običajno v tabeli instrukcij.

Naj povem še to, da je pri RISC mikroprocesorjih, kamor spadajo PIC, AVR in ARM, običajno veliko lažje računati čas izvajanja kot pri CISC mikroprocesorjih. Pri slednjih imajo lahko posamezne instrukcije zelo različne čase izvajanja.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
ljudsko
Član
Član



Pridružen-a: Pon 31 Mar 2008 8:19
Prispevkov: 1184
Aktiv.: 6.08
Kraj: Koroška-Mežica

PrispevekObjavljeno: Pet Jun 13, 2008 11:29 pm    Naslov sporočila:   Odgovori s citatom

Temu sem prišel do dna. Glede programa je pa tako...malo bolj moram pogledati datasheet...
Hvala vam za vse odgovore
Lp
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
ljudsko
Član
Član



Pridružen-a: Pon 31 Mar 2008 8:19
Prispevkov: 1184
Aktiv.: 6.08
Kraj: Koroška-Mežica

PrispevekObjavljeno: Sob Jun 14, 2008 1:26 pm    Naslov sporočila:   Odgovori s citatom

S težavo sem napisal program. Upam, da je napisan brez napake, kar pa upam in vas naprošam, da vi preverite. Program naj bi ledico, priklopljeno na pin GP5, vključil za 1sek, ko je pritisnjena tipka, priklopljena na GP0. Zelo bi bil hvaležen, da mi nekdo to preveri.
Program pa je za PIC12F675.
Lp
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
gumby
Član
Član



Pridružen-a: Sob 28 Apr 2007 12:32
Prispevkov: 4066
Aktiv.: 19.74

PrispevekObjavljeno: Sob Jun 14, 2008 1:35 pm    Naslov sporočila:   Odgovori s citatom

MPLAB ima vgrajen debugger, s katerim lahko preveriš delovanje programa, edino clock nastavi na pravo vrednost (debugger->preferences->osc/trace->processor frequency).
Za interni oscilator je to 4MHz

_________________
Tule nisem več aktiven.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
ljudsko
Član
Član



Pridružen-a: Pon 31 Mar 2008 8:19
Prispevkov: 1184
Aktiv.: 6.08
Kraj: Koroška-Mežica

PrispevekObjavljeno: Sob Jun 14, 2008 2:35 pm    Naslov sporočila:   Odgovori s citatom

Očitno tega nima moj program. Imam MPLAB IDE 8.00

Program sem pozabil priložiti:

Koda:
      list      p=12f675
      #include   <12f675.inc>



               _CONFIG         _WDT_OFF & _CP_OFF & _PWRTE_ON & _OST_ON & _XT_OSC



Spremenljivka1   equ      d'32'      ; Lokacija prve spremenljivke
Spremenljivka2   equ      d'33'      ; Lokacija druge spremenljivke
Spremenljivka3   equ      d'34'      ; Lokacija tretje spremenljivke
LED            equ      d'5'      ; Led je na GP5
Tipka         equ      d'0'      ; Tipka je na GP0


            org      0x000
            goto   Glavni
            org      0x004


Glavni
      
      bsf      STATUS,RP0         ; Banka 1
      bcf      OPTION_REG,GPPU      ; Pull-up upori omogočeni
      movlw   0x001
      movwf   TRISIO            ; Nastavitev tipke, kot vhod in LED, kot izhod
      bcf      STATUS,RP0         ; Banka 0
      clrf   GPIO            ; Vsi pini izključeni


Nadaljuj

      call    Beri            ; Podprogram za branje tipke
      
Konec   goto   Konec


Beri   

      btfsc   GPIO,Tipka         ; Ali je tipka ze pritisnjena?
      goto   Beri            ; Ne se, preverjaj naprej
      call   Debbounce         ; Da, klici filtriranje

Delaj

      btfss   GPIO,Tipka         ; Ali je tipka ze izpuscena?
      goto   Delaj            ; Ne se, pocakaj, da bo
      call   Zakasnitev         ; 1sec zakasnitev

Debbounce

      movlw   d'4'            ; Konstanta za debbounce
      movwf   Zanka1

Cakaj

      incfsz   Zanka2,f         ; Povecujemo Zanka2
      goto   Cakaj
      decfsz   Zanka1,f         ; 4 krat ponovimo Zanka2
      goto   Cakaj
      return

Zakasnitev

      movlw   d'15'            ; Konstanta za Zakasnitev
      movwf   Zanka1
      
Zakasnitev1

      incfsz   Zanka2,f         ; Povecujemo Zanka2
      goto   Zakasnitev1         
      incfsz   Zanka3,f         ; Povecujemo Zanka3
      goto   Zakasnitev1
      decfsz   Zanka1,f         ; 15 krat ponovimo Zakasnitev1
      goto   Zakasnitev                  


      end
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
gumby
Član
Član



Pridružen-a: Sob 28 Apr 2007 12:32
Prispevkov: 4066
Aktiv.: 19.74

PrispevekObjavljeno: Sob Jun 14, 2008 2:42 pm    Naslov sporočila:   Odgovori s citatom

debugger->select tool->mplab sim

Tule ga moraš najprej izbrat Wink

btw tale tvoj program vsebuje cel kup napak - najprej ga popravi tako, da se bo sploh prevedel...

_________________
Tule nisem več aktiven.


Nazadnje urejal/a gumby Sob Jun 14, 2008 2:49 pm; skupaj popravljeno 1 krat
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
mucek4
Član
Član



Pridružen-a: Sob 18 Jun 2005 20:52
Prispevkov: 2952
Aktiv.: 13.29
Kraj: Tržič - Mesto med gorami

PrispevekObjavljeno: Sob Jun 14, 2008 2:43 pm    Naslov sporočila:   Odgovori s citatom

Pozabil si izklopiti komparator. Poglej malo višje, kjer je Highlag to napisal ali poglej Datasheet!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
ljudsko
Član
Član



Pridružen-a: Pon 31 Mar 2008 8:19
Prispevkov: 1184
Aktiv.: 6.08
Kraj: Koroška-Mežica

PrispevekObjavljeno: Ned Jun 15, 2008 1:27 pm    Naslov sporočila:   Odgovori s citatom

gumby in te napake so?
Prosim jemljite me, kot enega, ki pojma nima, kar tudi sem. Šele učim se tako da...nimam izkušenj nič...
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
gumby
Član
Član



Pridružen-a: Sob 28 Apr 2007 12:32
Prispevkov: 4066
Aktiv.: 19.74

PrispevekObjavljeno: Ned Jun 15, 2008 1:51 pm    Naslov sporočila:   Odgovori s citatom

Poglej kaj ti prevajalnik javi... 2x klikni na sporočilo in te postavi na napako v izvorni kodi Wink
_________________
Tule nisem več aktiven.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja PIC-a v Assembler-ju Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran Prejšnja  1, 2, 3  Naslednja
Stran 2 od 3

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 49 dni


Powered by phpBB © 2001, 2005 phpBB Group