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
Nemam skype sad doma, imam neku staru kanturinu od računala, jedino sutra na poslu. Mogu složit na protoboardu i probat. Pretpostavljam da s računala preko serijskog porta želiš palit i gasit 8 kanala na kontroleru i provjeravat stanje svakog.
EDIT:
Nista se nije vratilo...
Eto vidiš, ne radi komunikacija, a trebala bi. Imaš li osiloskop ili je to previše
Cezare, star sam i nemoćan, ali poslušaj moj savjet ....
Ocu da mi portovi B budu za out tj. ukljucivanje i iskljucivanje, a portovi A da budu za input odnosno za dolaznu informaciju od nekog el. uredjaja.
Onaj kod koji sam postavio sa njim radi output kontrola mogu da ukljucujem i iskljucujem portove B, i kao sto vidis dole sam napisao da ako se na portA.0 pojavi logicka 1 ukljuci diodu na b.0 kao indikator trenutno i posalje serout, ali tokom testa posto se nije ukljucila dioda predpostavljam da nije ni koristio serout pa zato nije nista pisalo(ovaj zadnji test sto ima samo serin i out moguce da program zeza sa pc-a)... Prvo sto je potreno jeste da kad pritisnem dugme portA.0 dobije logicko jedinicu i upali b.0. Probao sam sa onim kodom jos na pocetku i radilo je ali kad sam ga prebacio u moj kod nece mislim da je tu problem. to kad proradi za serout bice lako...
Instaliraj PBP3, ona funkicija CMCON = $FF bi trebala proć za taj procesor. Pretpostavljam da ti serijska rutina blokira kontroler, jer čeka i ne da mrdnut iz petlje dok se ne pojavi pravi input. Trebao bi radit s HSERIN i HSEROUT, ili dodat:
Kukinjos wrote:Da, moja greška, sad sam vidio T2400 je kad koristiš MAX232, a N2400 je direktno, znači T2400, uostalom evo tvoj kod u cijelosti s dodatkom timeout-a:
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, 100, dalje, ["F"],D1P,D2P,D3P,D4P,D5P,D6P,D7P,D8P 'Ceka na prijem od PC racunara komndu
dalje:
' komandovanje prvim kanalom
If D1P = "1" Then
D1 = 1
Serout s1, T2400,["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
Komanda za reagovanje na pritisnuto dugme je smestena u kategoriju "dalje:" a to se izvrsava samo kad se nesto posalje na pic, ako sam u pravu onda to tako ne treba.
Bitno je kad se pretisne dugme da se posalje na pc, trenutno serin mozemo i da izbacimo dok testiramo ovo ostalo...
Evo sam napravio ovo na protoboard-u, sve radi po ovom zadnjem kodu. Obrati pažnju na vanjski kristal i kondenzatore, ili mu moraš programirat konfiguracijske bitove za interni RC oscilator. Možeš ubacit i ovaj kod, ima namješten vanjski kristal od 4MHz.
Sad sam probao i s hardware-skim UART-om (na istom portu RX-C.7 i TX-C.6), generira manje koda i koristi resurse kontrolera. Konfigurirao sam još i PORTA.1, PORTB.1, ono što si zakomentirao. Sve radi,TX i RX. Evo kod:
Instalira se kao demo, ali se samo zamijeni pbpx.exe, pa više nema ograničenja. Pričekaj moram ga pronać, stavit ću ga na dropbox jer je velik cca. 180MB, ako u međuvremenu ne pronađem link.
Cezare, star sam i nemoćan, ali poslušaj moj savjet ....
MCS iz onog setup file-a je standard, što znači da nema debugger, ali sve ostalo radi bez problema. Nažalost verzija plus se plaća i to nemam, ali kad imaš napravljen hardware, treba li ti uopće verzija plus?
Cezare, star sam i nemoćan, ali poslušaj moj savjet ....