 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
rkp Član

Pridružen-a: Čet 07 Jul 2005 23:40 Prispevkov: 20 Aktiv.: 0.08 Kraj: Kočevje, Ljubljana
|
Objavljeno: Tor Jul 12, 2005 10:19 pm Naslov sporočila: 16f628 |
|
|
Pozdravljeni.
Že nekaj časa (tednov) se ukvarjam s 16f628 pa mi nikakor ne uspe zagnati še najbolj enostavnega programa. (Sem nov pri PICih).
Program spodaj ni najbolj enostaven, vendar pa sigurno deluje na 16f84. Za test mi ga je dal Vizi. Malo sem ga popravil (zaradi 16f628-) pa še vedno nič.
Koda: |
ERRORLEVEL -224 ;izklop sporoźil ,ki jih ne §elimo videvat
LIST P=16F628 ; kateri procesor bomo uporabili
#INCLUDE "f:\asm\P16F628.INC" ;nahajaliçźe datoteke *.INC
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC ;konfiguracijski stavek ni zaçźite pred kopiranju,WDT izkljuźen PWRTE vkljuźen kristali oscilator
;---------------------------------------------------------------------------------
;oznaźeni del je nekako standarden in se pri ostalih programih ne bo bistveno
;spreminjal
CBLOCK 0X20 ;zaźetek lokacij RAMA (sploçno namenskih registrov max 68)
T1
ENDC
ORG 0 ;zaźetna lokacija
GOTO GLAVNI ;skok na "glavni program"
ORG 0X5 ;zaźetek kode glavnega programa
;****************************************************
;TUKAJ BOMO PRIPRAVILI PORTE
;16F84 IMA DVA PORTA
;PORTA - 5 VHODNO IZHODNIH PINOV
;PORTB - 8 VHODNO IZHODNIH PINOV
;PO RESETU SO VSI PINI DEFINIRANI KOT VHODI
;****************************************************
GLAVNI
CLRF PORTA ;vsi pini na portu A bodo po preklopu na izhode nizki
CLRW ;brisanje delovnega registra W (polni se z vrednostjo 0)
TRIS PORTA ;vrednost z W v TRISB preklop porta A vsi pini so izhodi
OPTION ;vrednost z W v OPTION_REG pull up upori vkljuźeni (ostalo sedaj ni pomembno)
ZANKA
BTFSC PORTB,1 ;je pritsnjena T1 ? (nizko stanje port B1)
GOTO TIPKA2 ;preverimo tipko T2
BSF PORTA,3 ;vkljuźimo LED1 (na portu A3)
BSF PORTA,2 ;vkljuźimo LED2 (na portu A2)
ZANKA1
BTFSS PORTB,1 ;je T1 spuçźena ? (visoko stanje na PORTB 1)
GOTO ZANKA1 ;ne ,ponovno preveri
TIPKA2
BTFSC PORTB,2 ;je pritsnjena T2 ? (nizko stanje port B2)
GOTO TIPKA3 ;preverimo tipko T3
BCF PORTA,3 ;izkljuźimo LED1 (na portu A3)
ZANKA2
BTFSS PORTB,2 ;je T2 spuçźena ? (visoko stanje na PORTB 2)
GOTO ZANKA2 ;ne ,ponovno preveri
TIPKA3
BTFSC PORTB,3 ;je pritsnjena T3 ? (nizko stanje port B2)
GOTO TIPKA4 ;preverimo tipko T4
BCF PORTA,2 ;izkljuźimo LED2 (na portu A2)
ZANKA3
BTFSS PORTB,3 ;je T3 spuçźena ? (visoko stanje na PORTB 3)
GOTO ZANKA3 ;ne ,ponovno preveri
TIPKA4
BTFSC PORTB,4 ;je pritsnjena T4 ? (nizko stanje port B2)
GOTO ZANKA ;skeniranje tipk od zaźetka
BTFSS PORTA,0 ;§e LED3 na porta0 gori ?
GOTO LED_ON ;ne ;skok na led_on
BCF PORTA,0 ;da torej jo izkljuźim
ZANKA4
BTFSS PORTB,4 ;je T4 spuçźena ? (visoko stanje na PORTB 4)
GOTO ZANKA4 ;ne ,ponovno preveri
GOTO ZANKA ;skeniranje tipk od zaźetka
LED_ON
BSF PORTA,0 ;vklop LED 3 na porta0
GOTO ZANKA4
END ;EOF
|
Isti programator kot za 16f84 ga vredu sprogramira (verify je uspešen), tako da dvomim da bi bil pokvarjen. Tudi skompajliran je vredu. Je kaj narobe s programom?
Kak bi zgledal najbolj enostaven možen program (recimo da samo vžge vse porte)?
Hvala za predloge, pomoč.
Rok
|
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.94 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Tor Jul 12, 2005 11:07 pm Naslov sporočila: |
|
|
Koliko sem na hitro pogledal program ni videt kake očitne napake.
S tvojega vprašanja pa ne razumem v čem je pravzaprav težava.
Ti prevajalnik ne "prebavi" programa in javlja kako napako.. ali program se prevede, težava je s programatorjem oz. programiranjem? Če je težava drugo navedi kak programator uporabljaš.
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
rkp Član

Pridružen-a: Čet 07 Jul 2005 23:40 Prispevkov: 20 Aktiv.: 0.08 Kraj: Kočevje, Ljubljana
|
Objavljeno: Tor Jul 12, 2005 11:19 pm Naslov sporočila: |
|
|
Prevede se vredu, in tudi sprogramira (verify je uspešen).
Shemo programatorja prilagam.
Testiral sem na čisto enostavnem vezju (na protoboardu), s kristalom, in led diodami.
Ko sem malo pregledal forum, sem opazil, da vsi večinoma uporabljata Elektorjevo razvojno okolje. Še vprašanje glede tega:
katere funkcije zgubim, če ne priklopim LCD zaslona oz. je ta nujen za razvoj?
Opis: |
|
 Download |
Ime datoteke: |
jdmprog.gif |
Velikost datoteke: |
6.31 KB |
Downloadano: |
37 krat |
|
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.94 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Tor Jul 12, 2005 11:27 pm Naslov sporočila: |
|
|
LCD potrebuješ, če želiš kaj delati z njim. Za programiranje pa ni potreben.
Sicer za tvojo težavo sumim JDM programator. Problem je vrjetno prenizka VPP. Predlagam ti izdelavo p16pro (paralelni programator z lastnim napajanjem). O njem se je na forumu kar dosti pisalo. Z njim gre progamirat praktično vse pic-e. Avtor pa je z letošnjem letom tudi dal na razpolago freeware polno verzijo. www.picallw.com
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
ma73 Član

Pridružen-a: Ned 04 Jan 2004 21:56 Prispevkov: 49 Aktiv.: 0.21
|
Objavljeno: Sre Jul 13, 2005 8:20 am Naslov sporočila: |
|
|
Meni se zdi, da je potrebno izklopit komparatorje na portA, ali pa sem brcnil
v temo . Ker jih 16f84 nima ta jih pa ima?!
|
|
Nazaj na vrh |
|
 |
rkp Član

Pridružen-a: Čet 07 Jul 2005 23:40 Prispevkov: 20 Aktiv.: 0.08 Kraj: Kočevje, Ljubljana
|
Objavljeno: Sre Jul 13, 2005 9:24 am Naslov sporočila: |
|
|
Kje oz. kako se pa to naredi? V čem je sploh fora teh komparatorjev?
|
|
Nazaj na vrh |
|
 |
LoLek Član

Pridružen-a: Sre 25 Feb 2004 12:46 Prispevkov: 343 Aktiv.: 1.45
|
Objavljeno: Sre Jul 13, 2005 10:07 am Naslov sporočila: |
|
|
ma73 je napisal/a: |
Meni se zdi, da je potrebno izklopit komparatorje na portA, ali pa sem brcnil
v temo . Ker jih 16f84 nima ta jih pa ima?! |
To je možno, ja. Poglej v datasheet za ta pic, kaj moraš nastaviti za porta. Nekateri pici imajo res po deafult-u nastavljen komparator za kakšen port.
|
|
Nazaj na vrh |
|
 |
ma73 Član

Pridružen-a: Ned 04 Jan 2004 21:56 Prispevkov: 49 Aktiv.: 0.21
|
Objavljeno: Sre Jul 13, 2005 12:54 pm Naslov sporočila: |
|
|
Se opravičujem, prilagam kar v angleščini.
Nimam trenutno časa!
Using the Port A comparator pins for normal I/O.
The lower 3-bits (CM2, CM1 and CM0) of the CMCON register control the comparator MODE. Out of eight possible modes, a value of "7" loaded into CMCON turns the comparators OFF, and allows all of Port A to function as normal digital I/O.
Writing a value of 7 (binary 00000111) to CMCON turns OFF the comparators. Using PicBasic Pro, you simply add the following line of code to the beginning of your program to turn OFF the comparators, and use these pins as normal digital I/O-pins:
CMCON = 7
Using assembly language, turning OFF the comparator module can be accomplished by:
MOVLW 0x07 ; Load 7 into W register
MOVWF CMCON ; CMCON = contents of W register 7h
Port A.0, A.1, A.2, and A.3 will now operate as normal I/O-pins with comparators turned OFF.
|
|
Nazaj na vrh |
|
 |
glavič Član


Pridružen-a: Pon 17 Maj 2004 23:12 Prispevkov: 321 Aktiv.: 1.36 Kraj: Grosuplje
|
Objavljeno: Sre Jul 13, 2005 1:28 pm Naslov sporočila: |
|
|
rkp je napisal/a: |
Kje oz. kako se pa to naredi? V čem je sploh fora teh komparatorjev? |
To se naredi tako da nastaviš bite CM2:CM0 na 111 v registru CMCON.
V čem je "fora" teh komparatorjev si pa poglej v datasheet za 16F628, poglavje 9.
|
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.94 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Sre Jul 13, 2005 7:33 pm Naslov sporočila: |
|
|
ma73 je napisal/a: |
Meni se zdi, da je potrebno izklopit komparatorje na portA, ali pa sem brcnil
v temo . Ker jih 16f84 nima ta jih pa ima?! |
Točno, sem spregledal, da so ledice na portua.
Po resetu so namreč AD pini definirani kot analogni.
kot so ti že napisali pobriši 3 nizke bite CMCON registra(lahko kar cel register) preden pine definiraš kot izhode.
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
glavič Član


Pridružen-a: Pon 17 Maj 2004 23:12 Prispevkov: 321 Aktiv.: 1.36 Kraj: Grosuplje
|
Objavljeno: Sre Jul 13, 2005 7:44 pm Naslov sporočila: |
|
|
Silvo je napisal/a: |
kot so ti že napisali pobriši 3 nizke bite CMCON registra(lahko kar cel register) preden pine definiraš kot izhode.
|
V datasheetu piše da se morajo zadnji trije biti postaviti na 1, da bodo komparatorji off.
tako da koda je
Koda: |
BSF CMCON, CM0
BSF CMCON, CM1
BSF CMCON, CM2 |
|
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.94 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Sre Jul 13, 2005 7:54 pm Naslov sporočila: |
|
|
glavič je napisal/a: |
Silvo je napisal/a: |
kot so ti že napisali pobriši 3 nizke bite CMCON registra(lahko kar cel register) preden pine definiraš kot izhode.
|
V datasheetu piše da se morajo zadnji trije biti postaviti na 1, da bodo komparatorji off.
tako da koda je
Koda: |
BSF CMCON, CM0
BSF CMCON, CM1
BSF CMCON, CM2 |
|
Drži, moja napaka. V mislih sem imel ANSEL (analog select register) register (katerega ta pic nima) . Tukaj so prevzete vrednosti po resetu b'111' Pini so analogni vhodi
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
rkp Član

Pridružen-a: Čet 07 Jul 2005 23:40 Prispevkov: 20 Aktiv.: 0.08 Kraj: Kočevje, Ljubljana
|
Objavljeno: Sre Jul 13, 2005 9:49 pm Naslov sporočila: |
|
|
OK, sedaj dela. Hvala za pomoč.
Slaba stran programa je le, da ne upoševa 'debouncinga' tipk, ampak to itak ni bil moj namen - jaz ne potrebujem branja tipk.
|
|
Nazaj na vrh |
|
 |
rkp Član

Pridružen-a: Čet 07 Jul 2005 23:40 Prispevkov: 20 Aktiv.: 0.08 Kraj: Kočevje, Ljubljana
|
Objavljeno: Pon Sep 26, 2005 8:35 pm Naslov sporočila: |
|
|
Imam problem pri 16f628 in ga ne uspem najti. In sicer že pri prvi vaji, ki jo je objavil Silvo, se mi nočejo prižgati ledice D12 in D19 (led4 in led10 - RA3 in RB4), čeprav sem izklopil komparatorje :
Koda: |
movlw 0x0F
movwf CMCON ; set port A mode I/O digital
|
in za vsaj slučaj:
Koda: |
MOVLW 0x0 ;enable VREF
MOVWF VRCON
|
Pregledal sem že skoraj cel datasheet in ne najdem rešitve. Zdi se, kot da bi bili ti izhodi skonfigurirani za drugo funkcijo...
Imate kakšno idejo, kako jih prepričat, da postanejo navadni izhodi?
|
|
Nazaj na vrh |
|
 |
Highlag Član


Pridružen-a: Pet 23 Jan 2004 20:42 Prispevkov: 4034 Aktiv.: 17.03 Kraj: Črnuče
|
Objavljeno: Pon Sep 26, 2005 9:01 pm Naslov sporočila: |
|
|
Si se postavil v pravo banko pred nastavitvijo delovanja posameznih izhodov?
Ker ne poznam, konkretnega PICa. V datasheetu imaš precej na začetku eno tabelo, kjer so vpisane lokacije posameznih registrov. Za vpis v nekatere rabiš zamenjat banko! Banko nastaviš z Status registrom.
Izhode moraš poleg tega še nastaviti kot izhodne. (Če niso) Register Tris ponavadi uravnava to funkcijo
_________________ If at first you don't succeed, destroy all evidence that you tried. |
|
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: 492 dni
Powered by phpBB © 2001, 2005 phpBB Group
|