PIC 16F877A input problem
Moderators: pedja089, stojke369, [eDo], trax
PIC 16F877A input problem
Pic je 16F877A, prikacio sam na njega dugme i povezao ga kad se pretisne dugme da dobije logicku 1 na porta.0.
Problem je u tome sto on to ne registruje, u programu sam definisao da su svi a portovi izlazni, citao sam po internetu da treba nekako da se stavi da je PORTA digitalni, a ne analogni...
Hvala unapred
Pozz
Problem je u tome sto on to ne registruje, u programu sam definisao da su svi a portovi izlazni, citao sam po internetu da treba nekako da se stavi da je PORTA digitalni, a ne analogni...
Hvala unapred
Pozz
Re: PIC 16F877A input problem
Moze li neko ko se razume da napise kod, nije mnogo zahtevan a meni ce znaciti mnogo...
Hvala unapred
Pozz
Hvala unapred
Pozz
Re: PIC 16F877A input problem
Stavi kod koji si do sada napisao, i opiši što bi htio napraviti, bit će nam lakše za razmišljat.
Cezare, star sam i nemoćan, ali poslušaj moj savjet ....
Re: PIC 16F877A input problem
PIC: 16F877AKukinjos wrote:Stavi kod koji si do sada napisao, i opiši što bi htio napraviti, bit će nam lakše za razmišljat.
Code: Select all
TRISA = $FF
TRISB = $00
Pocetak:
If porta.0 = 1 Then pali
portb.0 = 1
pause 1000
Goto Pocetak
Pali:
portb.0 = 0
pause 2000
Goto Pocetak
End
Na portb.0 sam stavio led, ali ne radi... Dugme je prekljuceno preko pull down, sto znaci da kad pretisnem dugme na porta.0 treba da bude logicka 1.
Trazio sam po netu i neki kazu da treba da se prebaci sa analognog na digitalni, ali ne znam kako to ide niti da li je to tacno.
Nadam se da ima pomoci...
Pozdrav!
Re: PIC 16F877A input problem
Evo, pokušaj ovako:
Vjerojatno CMCON = $FF ne treba, ali sve jedno, nek se nađe.
Code: Select all
ADCON1 = $C7
CMCON = $FF
TRISA = $FF
TRISB = $00
Pocetak:
If porta.0 = 1 Then pali
portb.0 = 1
pause 1000
Goto Pocetak
Pali:
portb.0 = 0
pause 2000
Goto Pocetak
End
Cezare, star sam i nemoćan, ali poslušaj moj savjet ....
Re: PIC 16F877A input problem
Izbacuje gresku za CMCON
Symbol not previously defined (CMCON)
Izbacio sam ga pa cu probati, javljam rezultate...
Pozz
Symbol not previously defined (CMCON)
Izbacio sam ga pa cu probati, javljam rezultate...
Pozz
Re: PIC 16F877A input problem
Ne smije ti izbacivat grešku ako si odabrao PIC16F877.
Cezare, star sam i nemoćan, ali poslušaj moj savjet ....
Re: PIC 16F877A input problem
Odlicno, radi!!
Imam samo jos jedno pitanje posto sam povezao taj pic sa serial portom, koristim sledeci kod za prepoznavanje u pic-u koji podaci dolaze iz komp.a
Serin PORTC.7, T2400,["F"],D1P,D2P,D3P,D4P
to je za unos u pic
Sledece sto trebaj jeste da sa pic-a posaljem na pc, za to se koristi serout ali nisam siguran kako najbolje treba da se postavi... Meni je potrebno da pic moze da salje brojke pa ako neko moze da mi pomogne kako bi trebao da glasi serout za to?
Pozdrav
Imam samo jos jedno pitanje posto sam povezao taj pic sa serial portom, koristim sledeci kod za prepoznavanje u pic-u koji podaci dolaze iz komp.a
Serin PORTC.7, T2400,["F"],D1P,D2P,D3P,D4P
to je za unos u pic
Sledece sto trebaj jeste da sa pic-a posaljem na pc, za to se koristi serout ali nisam siguran kako najbolje treba da se postavi... Meni je potrebno da pic moze da salje brojke pa ako neko moze da mi pomogne kako bi trebao da glasi serout za to?
Pozdrav
Re: PIC 16F877A input problem
Skoro isto kao i serin:
Serout PORTC.6, T2400,[varijabla]
ovdje su ti objašnjenja:
http://melabs.com/resources/pbcmanual/5/5-32.htm
ili primjeri:
http://www.warburtech.com/products/comp ... serin.pbp/
Serout PORTC.6, T2400,[varijabla]
ovdje su ti objašnjenja:
http://melabs.com/resources/pbcmanual/5/5-32.htm
ili primjeri:
http://www.warburtech.com/products/comp ... serin.pbp/
Cezare, star sam i nemoćan, ali poslušaj moj savjet ....
Re: PIC 16F877A input problem
Kad sam ubacio u svoj kod za paljenje ledice i slanje serout kada se pretisne dugme nece da radi, niti se pali led niti dolazi nesto u pc, a kad pc salje podatke onda radi...
Stvarno ne znam u cemu je problem, kod nije koplikovan evo:
Gde gresim?
Stvarno ne znam u cemu je problem, kod nije koplikovan evo:
Code: Select all
include "modedefs.bas"
symbol S0 = PORTC.7 'Port za prijem podataka
symbol S1 = PORTC.6 'Port za preduju podataka
symbol D1 = PORTB.0 'Kanal 1
symbol D2 = PORTB.1 'Kanal 2
symbol D3 = PORTB.2 'Kanal 3
symbol D4 = PORTB.3 'Kanal 4
symbol D5 = PORTB.4 'Kanal 5
symbol D6 = PORTB.5 'Kanal 6
symbol D7 = PORTB.6 'Kanal 7
symbol D8 = PORTB.7 'Kanal 8
SYMBOL A1 = PORTA.0
' Symbol A2 = PORTA.1
D1P var byte 'Komande dobijene od PC-a
D2P var byte
D3P var byte
D4P var byte
D5P VAR BYTE
D6P VAR BYTE
D7P VAR BYTE
D8P VAR BYTE
A1R var byte
A1R = 1
A2R var byte
A2R = 2
ADCON1 = $C7
TRISC = %10000000
TRISB = %00000000 'Svi pinovi porta B su izlazni
TRISA = %11111111
PORTB = $00 'Postavi na 0 sve pinove porta B
Glavni:
Serin S0, T2400,["F"],D1P,D2P,D3P,D4P,D5P,D6P,D7P,D8P 'Ceka na prijem od PC racunara komndu
' komandovanje prvim kanalom
If D1P = "1" Then
D1 = 1
Serout s1, T9600,["1",10,13]
Else
D1 = 0
EndIf
' komandovanje trecim kanalom
If D2P = "1" Then
D2 = 1
Else
D2 = 0
EndIf
' komandovanje drugim kanalom
If D3P = "1" Then
D3 = 1
Else
D3 = 0
EndIf
' komandovanje cetvrtim kanalom
If D4P = "1" Then
D4 = 1
Else
D4 = 0
EndIf
' komandovanje petim kanalom
If D5P = "1" Then
D5 = 1
Else
D5 = 0
EndIf
' komandovanje sestim kanalom
If D6P = "1" Then
D6 = 1
Else
D6 = 0
EndIf
' komandovanje sedmim kanalom
If D7P = "1" Then
D7 = 1
Else
D7 = 0
EndIf
' komandovanje osmim kanalom
If D8P = "1" Then
D8 = 1
Else
D8 = 0
EndIf
' Komanda slanje
IF A1 = 1 then ' TEST TEST TEST
D1 = 1
Serout S1,T2400,[A1R]
else
D1 = 0
Endif
' If A2 = "1" then
' Serout s1, T2400,[A2R,10]
' else
'
' endif
Goto Glavni
End
Gde gresim?
Re: PIC 16F877A input problem
Serin S0, T2400, .....
...
...
Serout s1, T9600, ....
Zašto ti je baudrate različit? Vjerojatno zato ti ne radi serout. Popravi to, pa idemo dalje.
...
...
Serout s1, T9600, ....
Zašto ti je baudrate različit? Vjerojatno zato ti ne radi serout. Popravi to, pa idemo dalje.
Cezare, star sam i nemoćan, ali poslušaj moj savjet ....
Re: PIC 16F877A input problem
Kukinjos wrote:Serin S0, T2400, .....
...
...
Serout s1, T9600, ....
Zašto ti je baudrate različit? Vjerojatno zato ti ne radi serout. Popravi to, pa idemo dalje.
Promenio ali i dalje je isto, mislim da je problem u tome sto kad kliknem dugme on uopste nece da upali led sto znaci da ne moze ni serout da izvrsi tu je greska ali nzm kako da je ispravim.
Re: PIC 16F877A input problem
Ti koristiš "True" za serin, što znači da ne invertiraš podatke sa serijskog porta. Ako si stavio neki interface na serijski port, npr. max232, onda moraš invertirat signal, znači koristit N2400. Drugo, kad šalješ podatke, iz programa se vidi da komunikaciju počinješ s slovom F, a onda 8 podataka ide iza toga. Jel to točno tako radiš? Pokušaj za probu napravit serin i odmah serout, na terminalu odakle šalješ komande ti se moraju ponovit poslana stanja, npr:
Idi korak po korak, tako ćeš izbjeći puno grešaka, pa kad riješiš jedan problem tek onda dopiši slijedeći kod.
Code: Select all
Serin S0, T2400,["F"],D1P,D2P,D3P,D4P,D5P,D6P,D7P,D8P
Serout S1, T2400,[D1P,D2P,D3P,D4P,D5P,D6P,D7P,D8P]
Cezare, star sam i nemoćan, ali poslušaj moj savjet ....
Re: PIC 16F877A input problem
Sa max232 je, stavio sam odma ispod serin serout, ali sad kad posaljem np. F10000000 nece ni led da se upali a kamo li da ispise nesto, program za komunikaciju je:
http://code.msdn.microsoft.com/windowsd ... T-fb040fb2
http://code.msdn.microsoft.com/windowsd ... T-fb040fb2
Re: PIC 16F877A input problem
Ako imaš MAX232, moraš stavit N2400, jer MAX232 invertira signale, kako kod serin, tako i kod serout.
Cezare, star sam i nemoćan, ali poslušaj moj savjet ....
Re: PIC 16F877A input problem
Ok, za serin sam stavio T i radi, a za serout sam probao oba i nista mada prvo sto treba da resimo jesto dugme koje kad pritisnem nece da radi, onaj gore kod sam ubacio u ovaj moj i nista nece da zasvetli led, jel kad bi zasvetlela led onda bi i serout procitao...Kukinjos wrote:Ako imaš MAX232, moraš stavit N2400, jer MAX232 invertira signale, kako kod serin, tako i kod serout.
Re: PIC 16F877A input problem
Previše si opcija uključio u igru, moraš bit strpljiv, probaj za početak radit s običnim terminalom i serin pa serout, i vidjet ide li komunikacija u oba smjera (imaš li echo na terminalu). Kad to riješiš onda dopiši kod za palit i gasit LED.
Cezare, star sam i nemoćan, ali poslušaj moj savjet ....
Re: PIC 16F877A input problem
Imas li skype, posalji mi na PM. Da ti objasnim sta radi tj. dokle sam stigo sa ispitivanjem...Kukinjos wrote:Previše si opcija uključio u igru, moraš bit strpljiv, probaj za početak radit s običnim terminalom i serin pa serout, i vidjet ide li komunikacija u oba smjera (imaš li echo na terminalu). Kad to riješiš onda dopiši kod za palit i gasit LED.
Re: PIC 16F877A input problem
Evo, probaj samo ovo:
Code: Select all
include "modedefs.bas"
symbol S0 = PORTC.7 'Port za prijem podataka
symbol S1 = PORTC.6 'Port za preduju podataka
D1P var byte 'Komande dobijene od PC-a
D2P var byte
D3P var byte
D4P var byte
D5P VAR BYTE
D6P VAR BYTE
D7P VAR BYTE
D8P VAR BYTE
Glavni:
Serin S0, N2400,["F"],D1P,D2P,D3P,D4P,D5P,D6P,D7P,D8P 'Ceka na prijem od PC racunara komndu
Serout S1, N2400, ["R",D1P,D2P,D3P,D4P,D5P,D6P,D7P,D8P]
Goto Glavni
End
Cezare, star sam i nemoćan, ali poslušaj moj savjet ....