Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Problem PIC16F877A: kontrola portova?

[es] :: Elektronika :: Mikrokontroleri :: Problem PIC16F877A: kontrola portova?

[ Pregleda: 3239 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

stevka

Član broj: 96296
Poruke: 66
195.252.99.*



+1 Profil

icon Problem PIC16F877A: kontrola portova?22.07.2006. u 11:21 - pre 192 meseci
Testirao sam setovanje svih portova na PIC16F877A, na razvojnom sistemu EPIC3, Mikroelektronike.
Kada postavim sve izlaze HI i kada ucitam hex fajl u PIC nemam ni jedan setovan, sve dok ne pritisnem RE1 ili RA2, i to tri puta?Na prvi pritisak se pale diode PORTD,POTRTB,PORTC ,a onda mi se setuju svi osim RA4 I RB3. Zasto se to desava? Citajuci datasheet, video sam da su svi bidirekcioni. Da li postoji neka skrivena caka?
I najveci putevi pocinju prvim korakom !
 
Odgovor na temu

veselinovic
Jovan Veselinovic
Ist. Sarajevo

Moderator
Član broj: 7761
Poruke: 3683
ppp-68-53.teol.net.



+301 Profil

icon Re: Problem PIC16F877A: kontrola portova?22.07.2006. u 15:13 - pre 192 meseci
A da nam postujes program koji upisujes u PIC
 
Odgovor na temu

stevka

Član broj: 96296
Poruke: 66
195.252.99.*



+1 Profil

icon Re: Problem PIC16F877A: kontrola portova?24.07.2006. u 13:32 - pre 192 meseci
;****** Deklaracija promenljivih ******

Cblock 0x0C ;pocetak RAM-a
endc ;nema promenljivih

; ****** Struktura programske memorije ******

ORG 0x00 ;reset vektor goto Main ;posle reseta skoci na ovu lokaciju
ORG 0x04 ;interapt vektor
goto Main ;nema interapt rutine

Main ;pocetak programa
; movlw 0x06 ;probati i sa x03
; movwf ADCON1
;Da li je potrebno ovo predhodno ili ne???



banksel TRISD ;selektuj banku u kojoj je TRISB
clrf TRISD ;port B je izlazni
banksel PORTD ;selektuj banku u kojoj je PORTB
movlw 0XFF ;Postavi sve 1 na PORTB
movwf PORTD
banksel TRISB
clrf TRISB
banksel PORTB
movlw 0xFF
movwf PORTB
banksel TRISC ;selektuj banku u kojoj je TRISC
clrf TRISC ;port C je izlazni
banksel PORTC ;selektuj banku u kojoj je PORTC
movlw 0XFF ;Postavi sve 1 na PORTC
movwf PORTC
banksel TRISA ;selektuj banku u kojoj je TRISA
clrf TRISA ;port A je izlazni
banksel PORTA ;selektuj banku u kojoj je PORTA
movlw 0XFF ;Postavi sve nule na PORTA
movwf PORTA
banksel TRISE ;selektuj banku u kojoj je TRISE
clrf TRISE ;port E je izlazni
banksel PORTE ;selektuj banku u kojoj je PORTE
movlw 0XFF ;W=FF
movwf PORTE ;Postavi sve jedinice na PORTE

nop
Loop goto Loop ;Skoci na labelu Loop

End
I najveci putevi pocinju prvim korakom !
 
Odgovor na temu

Odin D.
Mlađi referent za automatizaciju
samoupravljanja

Član broj: 37292
Poruke: 2549



+8369 Profil

icon Re: Problem PIC16F877A: kontrola portova?30.07.2006. u 15:03 - pre 192 meseci
Evo ovako...
Sto se tice citanja PIC-ovih Data Sheet-ova to treba citati sa velikim oprezom, jer su
informacije o nekom detalju, bar za moj ukus, cesto prilicno rasute i rastrkane po citavom dokumentu, pa treba dosta listati dok se slika o tom detalju sklopi. Tako je bilo i sa ovim problematicnim pinovima koji te muce. Ja nisam imao volje da bas detaljno citam, ali evo nesto pisem po secanju, a nesto i iz data sheeta....

Dakle, govorim za 16F877A:

Upis 0x06 u ADCON1 (cini mi sa da je na adresi 0x9F) (konfigurisanje svih bitova kao igitalnih) je potreban, jer po bilo kom resetu, pinovi koji su multipleksirani sa analognim
funkcijama su setovani na tu analognu funkciju. U ovom slucaju to su RA0,1,2,3,5 i RE0,1,2.

Upis 0x03 ce samo pinove porta E postaviti kao digitalne, ali port A ce ostati kao alogni.
Znaci, nemas sta probavati sa 0x03.

RB3 kod 16f877A ima dodatnu funkciju 'Low Voltage ICSP Programming' koja je po fault-u
ukljucena, sto onemogucava da taj pin funkcionise kao I/O pin. Zbog toga je potrebno tu funkciju iskljuciti prije koriscenja tog pina u ulazno/izlazne svrhe, a to se radi resetovanjem LVP bita u CONFIG registru (bit 7 na adresi 2007h), ili na pocetku rograma u konfiguracionoj naredbi kao sto sam ja dole u programu uradio (detalj _LVP_OFF), a neki programatori imaju mogucnost da se to i u njima, prilikom upisivanja hex fajla u cip uradi. Ako koristis EasyPic3 vjerovatno imas i njihov PicFLASH programer, pa stavi 'Disabled' kod Low Voltage Program opcije.

RA4 je takodje multipleksiran i ima jos neke funkcije osim digitalnog ulaza/izlaza, a to su
kao ulazni pin za okidanje tajmera (T0CKI) i kao izlaz ugradjenih digitalnih komparatora (to se petlja nesto po OPTION registru, kao i po CMCON registru i jos nekom, zaboravio sam kako se tacno zove, nesto kao CVRCON...). To pogledaj sam...

Elem, ovaj tvoj program, malo doradjen, navodim ispod direktno paste-ovan iz kompajlera, tako da ga mozes isprobati. Kod mene u simulatoru sve fino radi, ali nisam siguran kako ce se RA4 ponasati u stvarnosti. Provjeri kako radi, pa nam javi sta se zbiva.

Dakle, evo ga program:



list p=16f877a
#include p16f877a.inc

; Set configuration bits using definitions from the include file, p16f877a.inc
__config _HS_OSC & _PWRTE_OFF & _WDT_OFF & _CP_OFF & _LVP_OFF


ORG 0x00 ;reset vektor
goto Main ;posle reseta skoci na ovu lokaciju

ORG 0x04 ;interapt vektor
goto Main ;nema interapt rutine


Main ;pocetak programa

banksel ADCON1
movlw 0x06 ;Port A i E treba konfigurisati kao digitalne,
movwf ADCON1 ;jer su nakon reseta automatski konfigurisani
;na svoje analogne funkcije (A/D konverzija)


banksel TRISD ;selektuj banku u kojoj je TRISD
clrf TRISD ;port D je izlazni
banksel PORTD ;selektuj banku u kojoj je PORTD
movlw 0XFF ;Postavi sve 1 na PORTD
movwf PORTD

banksel TRISB
clrf TRISB
banksel PORTB
movlw 0xFF
movwf PORTB

banksel TRISC ;selektuj banku u kojoj je TRISC
clrf TRISC ;port C je izlazni
banksel PORTC ;selektuj banku u kojoj je PORTC
movlw 0XFF ;Postavi sve 1 na PORTC
movwf PORTC

banksel TRISA ;selektuj banku u kojoj je TRISA
clrf TRISA ;port A je izlazni
banksel PORTA ;selektuj banku u kojoj je PORTA
movlw 0XFF ;Postavi sve 1 na PORTA
movwf PORTA

banksel TRISE ;selektuj banku u kojoj je TRISE
clrf TRISE ;port E je izlazni
banksel PORTE ;selektuj banku u kojoj je PORTE
movlw 0XFF ;W=FF
movwf PORTE ;Postavi sve jedinice na PORTE

nop

Loop
goto Loop ;Skoci na labelu Loop

End



Ovo formatiranje je katastrofalno, pa sam zakacio i fajl sa tekstom programa.
Prikačeni fajlovi
 
Odgovor na temu

stevka

Član broj: 96296
Poruke: 66
195.252.99.*



+1 Profil

icon Re: Problem PIC16F877A: kontrola portova?02.08.2006. u 14:51 - pre 192 meseci
Uspeo sam da podesim ono oko ADCON1, ali…
Zasto me ovo zeza?
Probam da na pritisak na jedan od 3 tastera dobijem ukljucen odgovarajuci relej.
Imam 3 izlaza povezanih na ovaj nacin. Izlazi su povezani na RD4,RD3,RD2. Kada je napon 24DC I pritisnut taster, onda mi izlazi(ostali) lude, mislim trepere diode I releji, s`tim sto je odgovarajuca dioda I relej ukljucen.
Ali kada je napon 18DC, nemam treperenje.
Da li se ovo desava zbog nekog oscilovanja, samoindukcije kalema releja koji opali preko LED-a transistor, na svom ili susednom kolu.
Ili imate bolju ideju.
Nadam se da imate resenje ovog problema?!?
Ovako izgleda izlaz (jedan od):




Ovo je(jedan od) ulaza:

Ovo je softver :


LIST P=16F877
#include "p16F877.inc"
__CONFIG _HS_OSC & _WDT_OFF & _LVP_OFF & _PWRTE_ON
;****** Deklaracija promenljivih ******

Cblock 0x0C ;pocetak RAM-a
endc ;nema promenljivih

; ****** Struktura programske memorije ******

ORG 0x00 ;reset vektor
goto Main ;posle reseta skoci na ovu lokaciju
ORG 0x04 ;interapt vektor
goto Main ;Idi na ISR-Interupt Service Routine

Main ;pocetak programa
banksel ADCON1
movlw 0x06
movwf ADCON1
nop
nop
banksel PORTD
movlw b'11100000'
movwf PORTD
nop
banksel TRISD ;selektuj banku u kojoj je TRISB
movlw b'11100000' ;port D:RD7,RD6,RD5 su ulazi;RD4,RD3,RD2 su izlazi
movwf TRISD
nop
Loop
nop
banksel PORTD
btfss PORTD,5 ;ulaz1
goto Taster1
nop
nop
banksel PORTD
btfss PORTD,6 ;ulaz1
goto Taster2
nop
nop
banksel PORTD
btfss PORTD,7 ;ulaz1
goto Taster3
nop
goto Loop ;Skoci na labelu Loop
Taster1
banksel PORTD
bsf PORTD,4
nop
return
Taster2
banksel PORTD
bsf PORTD,3
nop
return
Taster3
banksel PORTD
bsf PORTD,2
nop
return
nop
End

I najveci putevi pocinju prvim korakom !
Prikačeni fajlovi
 
Odgovor na temu

Odin D.
Mlađi referent za automatizaciju
samoupravljanja

Član broj: 37292
Poruke: 2549



+8369 Profil

icon Re: Problem PIC16F877A: kontrola portova?04.08.2006. u 12:47 - pre 192 meseci
Nemam ovih dana mnogo vremena, ako stignem pogledacu ovo sledece nedelje.
 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: Problem PIC16F877A: kontrola portova?

[ Pregleda: 3239 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.