|
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
ljudsko Član
Pridružen-a: Pon 31 Mar 2008 8:19 Prispevkov: 1184 Aktiv.: 6.08 Kraj: Koroška-Mežica
|
Objavljeno: Čet Jun 12, 2008 10:25 pm Naslov sporočila: |
|
|
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 |
|
|
drVrh Član
Pridružen-a: Sre 20 Feb 2008 20:17 Prispevkov: 918 Aktiv.: 4.68 Kraj: Slovenija-Koroska-Prevalje-Lese
|
Objavljeno: Čet Jun 12, 2008 11:04 pm Naslov sporočila: |
|
|
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 |
|
|
drVrh Član
Pridružen-a: Sre 20 Feb 2008 20:17 Prispevkov: 918 Aktiv.: 4.68 Kraj: Slovenija-Koroska-Prevalje-Lese
|
Objavljeno: Čet Jun 12, 2008 11:09 pm Naslov sporočila: |
|
|
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 |
|
|
Highlag Član
Pridružen-a: Pet 23 Jan 2004 20:42 Prispevkov: 4034 Aktiv.: 18.16 Kraj: Črnuče
|
Objavljeno: Čet Jun 12, 2008 11:27 pm Naslov sporočila: |
|
|
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 |
|
|
Sokrat Član
Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 25.14
|
Objavljeno: Pet Jun 13, 2008 9:20 am Naslov sporočila: |
|
|
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 |
|
|
mucek4 Član
Pridružen-a: Sob 18 Jun 2005 20:52 Prispevkov: 2952 Aktiv.: 13.29 Kraj: Tržič - Mesto med gorami
|
Objavljeno: Pet Jun 13, 2008 12:55 pm Naslov sporočila: |
|
|
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 |
|
|
Jernej Š. Član
Pridružen-a: Pon 25 Jun 2007 23:33 Prispevkov: 83 Aktiv.: 0.41 Kraj: Primorska
|
Objavljeno: Pet Jun 13, 2008 1:46 pm Naslov sporočila: |
|
|
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 |
|
|
ljudsko Član
Pridružen-a: Pon 31 Mar 2008 8:19 Prispevkov: 1184 Aktiv.: 6.08 Kraj: Koroška-Mežica
|
Objavljeno: Pet Jun 13, 2008 11:29 pm Naslov sporočila: |
|
|
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 |
|
|
ljudsko Član
Pridružen-a: Pon 31 Mar 2008 8:19 Prispevkov: 1184 Aktiv.: 6.08 Kraj: Koroška-Mežica
|
Objavljeno: Sob Jun 14, 2008 1:26 pm Naslov sporočila: |
|
|
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 |
|
|
gumby Član
Pridružen-a: Sob 28 Apr 2007 12:32 Prispevkov: 4066 Aktiv.: 19.74
|
Objavljeno: Sob Jun 14, 2008 1:35 pm Naslov sporočila: |
|
|
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 |
|
|
ljudsko Član
Pridružen-a: Pon 31 Mar 2008 8:19 Prispevkov: 1184 Aktiv.: 6.08 Kraj: Koroška-Mežica
|
Objavljeno: Sob Jun 14, 2008 2:35 pm Naslov sporočila: |
|
|
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 |
|
|
gumby Član
Pridružen-a: Sob 28 Apr 2007 12:32 Prispevkov: 4066 Aktiv.: 19.74
|
Objavljeno: Sob Jun 14, 2008 2:42 pm Naslov sporočila: |
|
|
debugger->select tool->mplab sim
Tule ga moraš najprej izbrat
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 |
|
|
mucek4 Član
Pridružen-a: Sob 18 Jun 2005 20:52 Prispevkov: 2952 Aktiv.: 13.29 Kraj: Tržič - Mesto med gorami
|
Objavljeno: Sob Jun 14, 2008 2:43 pm Naslov sporočila: |
|
|
Pozabil si izklopiti komparator. Poglej malo višje, kjer je Highlag to napisal ali poglej Datasheet! |
|
Nazaj na vrh |
|
|
ljudsko Član
Pridružen-a: Pon 31 Mar 2008 8:19 Prispevkov: 1184 Aktiv.: 6.08 Kraj: Koroška-Mežica
|
Objavljeno: Ned Jun 15, 2008 1:27 pm Naslov sporočila: |
|
|
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 |
|
|
gumby Član
Pridružen-a: Sob 28 Apr 2007 12:32 Prispevkov: 4066 Aktiv.: 19.74
|
Objavljeno: Ned Jun 15, 2008 1:51 pm Naslov sporočila: |
|
|
Poglej kaj ti prevajalnik javi... 2x klikni na sporočilo in te postavi na napako v izvorni kodi _________________ Tule nisem več aktiven. |
|
Nazaj na vrh |
|
|
|
|
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
|