Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 25 odgovora
  • 8.963 pregleda

Najnovija ↓

komunikacija PIC16F877A i 16F628A 08.03.2014. u 22:35 · pre 154 meseca
izmenjeno 1 put, poslednji put weldinger 09.03.2014. u 11:21
  1. weldinger09.03.2014. u 11:21zapis iz teksta poruke
#1
Naime imam sledeci problem: Imam na jednoj plocici 16F877A-pic1 i 16F628A-pic2, pa vas pitam da li mogu da komuniciraju preko jednog pina (asihronom komunikacijom serijski 8 bita i jedan stop bit) tako sto ce pic1 da daje komande pic2 u PicBasicu.Ja sam pokusao ovako:
PIC1:
DEO KODA:

TRISC=%00000010
PORTC=%00000000
DEFINE DEBUG_REG PORTC
DEFINE DEBUG_BIT 0
DEFINE DEBUG_BAUD 2400
DEFINE DEBUG_MODE 0
DEFINE OSC 4
DEFINE DEBUG_PACING 10
BROJ VAR BYTE
POCETAK:
WHILE PORTC.1=0
DEBUG BROJ
WEND
GOTO POCETAK
END


PIC2:
TRISA=%00000000
TRISB=%00000010
DEFINE OSC 4
DEFINE DEBUG_REG PORTB
DEFINE DEBUG_BIT 1
DEFINE DEBUG_BAUD 2400
DEFINE DEBUG_MODE 0
DEFINE DEBUG_PACING 10
BR VAR BYTE
POC:
DEBUGIN [BR]
WRITE 00,BR
GOTO POC
END

Ovo je samo deo koda ali dovoljno da mi kazete posto nisam jos imao potrebe da radim komunikaciju izmedju PIC-ova a situacija je takva da ne mogu da koristim vise pinova za njihovu komunikaciju nego samo jedan ( Napomena: PIC2 samo prima informacije ne vraca nazad).Da li moze ovakav nacin kao sto sam opisao?
Re: komunikacija PIC16F877A i 16F628A 09.03.2014. u 03:50 · pre 154 meseca #2
U sustini moze, koristis USART modul gde je jedan PIC TX a drugi RX.

Kako to napisati u PicBasic to vec ne znam, slabo stojim za njim …

Isto je pitanje da li ce ti bez obzira ona "suprotna" nozica (RX nozica na prvom i TX nozica na drugom PIC) od USART biti raspoloziva za neke druge potrebe, predpostavljam da nece … ako je to bilo u kontekstu "nedostatka" slobodnih nozica.
Potpis
Site about Software Defined Radio – SDR
http://yu3ma.net/
https://github.com/yu3ma
On-line LM317 kalkulator
Re: komunikacija PIC16F877A i 16F628A 09.03.2014. u 08:55 · pre 154 meseca #3
Genaralno može to kako si opisao. Problem ćeš verovatno imati ukoliko bi da koristiš hardverski USART port na oba PIC-a a kratak si sa brojem pinova. Kada omogućiš serijski hardverski port (SPEN bit se postavi na 1) onda oba pina RX i TX budu "zauzeta" za tu funkciju što znači da ne možeš da koristiš u druge svrhe onaj drugi koji ti ne treba za serijsku komunikaciju. E sad iskreno ja nisam imao ovakvu situaciju ali sudeći po datasheetu to bi bilo to. Drugo rešenje je da koristiš softverski UART na PIC-u. Primera za PicBasic sigurno ima tako da možeš da razmotriš i tu opciju. Treća varijanta je "uzmi veći PIC" :)
Potpis
gorankg
Re: komunikacija PIC16F877A i 16F628A 09.03.2014. u 09:21 · pre 154 meseca #4
ako ti treba samo jednosmerno i frka je sa brojem pinova softwerski uart ce ti odraditi posao (neka niza brzina), ako ti treba dvosmerno moras da uzmes neki 1wire protokol

trebalo bi da imas i sw uart i 1wire implementaciju u picbasic-u

Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: komunikacija PIC16F877A i 16F628A 09.03.2014. u 11:18 · pre 154 meseca #5
Citat:
goran_68:
Problem ćeš verovatno imati ukoliko bi da koristiš hardverski USART port na oba PIC-a a kratak si sa brojem pinova. Treća varijanta je "uzmi veći PIC" :)


Ne mogu da koristim hardverski USART jer je zauzet.Situacija je takva da mogu da koristim PORTC.0 pa me zanima kako moze da se napise kod za programski USART.Ja sam pokusao, u predhodnom postu, ali ne ide.
Re: komunikacija PIC16F877A i 16F628A 09.03.2014. u 18:25 · pre 154 meseca #6
Za serijsku komunikaciju imaš u PBP-u SEROUT i SERIN naredbe.
Sve je lepo opisano u Help-u
Potpis
--
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
Re: komunikacija PIC16F877A i 16F628A 09.03.2014. u 22:49 · pre 154 meseca #7
Citat:
ZAS011: Za serijsku komunikaciju imaš u PBP-u SEROUT i SERIN naredbe.
Sve je lepo opisano u Help-u

Probao sam i sa SERIN SEROUT naredbama ovako:

TRISC=%00000010
PORTC=%00000000
INCLUDE "Modedefs.bas"
DEFINE OSC 8
DEFINE DEBUG_PACING 100
BROJ VAR BYTE
BROJ=9
POCETAK:
WHILE PORTC.1=0
SEROUT PORTC.0,T2400,[BROJ]
WEND
GOTO POCETAK
END


PIC2:
PCON=%00001011
TRISA=%00000000
TRISB=%00000010
DEFINE OSC 4
INCLUDE "Modedefs.bas"
BR VAR BYTE
POC:
SERIN PORTB.1,T2400,[BR]
WRITE 00,BR
GOTO POC
END

Ne znam da li sam dobro napisao naredbu Serin i Serout, da li je neko radio sa ovim naredbama.Treba samo da mi decimalnu vrednost BROJ-a iz PIC1 ucita PIC2 u BR i to smeti u memorijsku lokaciju 0.
Re: komunikacija PIC16F877A i 16F628A 10.03.2014. u 08:24 · pre 153 meseca #8
Code:

TRISC=%00000010
PORTC=%00000000
INCLUDE "Modedefs.bas"
DEFINE OSC 8
DEFINE DEBUG_PACING 100
BROJ VAR BYTE
BROJ=9
POCETAK:
WHILE PORTC.1=0
SEROUT PORTC.0,T2400,[BROJ]



!!dodaj ovde neku pauzu!!




WEND
GOTO POCETAK
END



Dodatno,
najverovatnije ti je ovaj PIC2 PIC16F628A. Pinove porta A si definisao kao izlazne a nigde nisi isključio komparatore. Pogledaj registar CMCON.
Potpis
gorankg
Re: komunikacija PIC16F877A i 16F628A 10.03.2014. u 20:47 · pre 153 meseca #9
Da zaboravio sam CMCON=%00000111 ali opet ista stvar.Moracu da pogledam nekim logic analiser-om jer ovako na "slepo" nema pojma.Nego sam samo hteo da znam da li je code gore napisan ispravno, da anuliram tu stranu.
Re: komunikacija PIC16F877A i 16F628A 14.03.2014. u 17:22 · pre 153 meseca #10
Sada sam postavio da mi PIC2 bude tx a PIC1 rx zato sto imam LCD out na PIC-u 1 pa mogu sve vreme da vidim sta se prima na portu C.0 ali sam ustanovio osciloskopom da PIC 2 (16F628A) uopste ne salje signal.Evo njegovog koda:

INCLUDE "Modedefs.bas"
DEFINE OSC 4
PCON=%00001011
CMCON=%00000111
TRISB=%00000000
TRISA=%00100000
PORTA=0
PORTB=0
BR VAR BYTE
BR=15
pocetak:
SEROUT PORTB.1,T2400,[BR]
PAUSE 5000
GOTO pocetak
END
Re: komunikacija PIC16F877A i 16F628A 14.03.2014. u 20:03 · pre 153 meseca #11
Kako si postavio konfiguracione bitove kod PIC16F628A? Da li koristiš interni oscilator ili spoljašnji?
Potpis
gorankg
Re: komunikacija PIC16F877A i 16F628A 14.03.2014. u 22:29 · pre 153 meseca #13
interni oscilator ? 877A koliko se secam nema interni oscilator (887
ima), a 628A ima neki kvazi "precision +-1%" koji ni u ludilu nije
dovoljno precizan za malo brzu uart komunikaciju, posebno ne za soft
uart tako da ako ces da teras soft uart na njemu ili mu lepo turi 20MHz
kristal ili teraj uart na 300 boda ..

mozes da koristis isti oscilator za oba, to moze da ti spasi po pin
Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: komunikacija PIC16F877A i 16F628A 14.03.2014. u 22:33 · pre 153 meseca #14
16F877A ima spoljni na 8 MHz, a 16F628A sam konfigurisao na njegov interni.Ali problem je sto na Izlaznom pinu PORTB.1 nema nikakvog signala osim konstantnih 5v.
Re: komunikacija PIC16F877A i 16F628A 14.03.2014. u 22:47 · pre 153 meseca #15
ja ne koristim basic ali kapiram da "SEROUT PORTB.1,T2400,[BR]" znaci da posalje na b.1 vrednost BR brzino T2400. Moguce da je taj basic dovoljno pametan da zna da nema teorije da posalje tom brzinom na 4mhz taktu... drugo ne znam sta u basic-u znaci [br] ?

u svakom slucaju za test da bi znao sta te zeza uzmes lepo i promenis program u nesto ovako:

Code:

INCLUDE "Modedefs.bas"
DEFINE OSC 4
PCON=%00001011
CMCON=%00000111
TRISB=%00000000
TRISA=%00100000
PORTA=0
PORTB=0

pocetak:
  SEROUT PORTB.1,T300,85
  PAUSE 50
  SEROUT PORTB.1,N300,170
  PAUSE 50
GOTO pocetak
END 

Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: komunikacija PIC16F877A i 16F628A 15.03.2014. u 07:55 · pre 153 meseca #16
Moguće je da ti taj PIC uopšte ne radi. Pokušaj da napišeš program kojim ćeš stanje jednog pina (bilo kog) menjati periodično. Dakle, u petlji ga podigneš na 1 pa nakon neke pauze spustiš na nulu, sledi pauza, pa nazad na vrh petlje. Samo to i ništa više. Podešavanja konfiguracionih bitova zadrži. Zašto te bitove ne podešavaš u kodu?
Potpis
gorankg
Re: komunikacija PIC16F877A i 16F628A 15.03.2014. u 23:02 · pre 153 meseca #17
Citat:
goran_68: Zašto te bitove ne podešavaš u kodu?
Kako ide code za podesavanje?Resio sam problem, bio je problem do porta b.1 kod 16f628a.Jednostavno ne mogu da ga konfigurisem kao izlazni digital I/O.Nije dovoljno samo registar TRISB nego mora i jos neki.Ako pokusam da konfigurisem OPTION registar ( OPTION=%00000000) gde se ukljucuju interni pull-up otpornici PBP javlja gresku a sa POKE instrukcijom nisam radio.Tako sam probao sa PORTA.0 i sve radi ok, doduse sa 300 bauda ali meni i ne treba vise.Ako neko zna kako se konfigurisu PORTB kao izlazni digital I/O neka napise kod.Hvala svima puno.
Re: komunikacija PIC16F877A i 16F628A 16.03.2014. u 08:27 · pre 153 meseca #19
Prva i osnovna stvar kod korišćenja mikrokontrolera je posnavanje funkcionisanja istog, a upoznavanje se vrši čitanjem, čitanjem i samo čitanjem datasheet-a za dotični. U datasheet-u je sve lepo napisano. Jeste da ima 150+ strana, ali lako se pronalazi odgovarajuća stranica sa potrebnim objašnjenjima.
Koliko god se dugo bavim PIConjama, kada treba da izkonfigurišem kontroler, uvek mi je otvoren datasheet. Ne vredi pamtiti sve pojedinosti o svakom kontroleru.
Potpis
--
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
Re: komunikacija PIC16F877A i 16F628A 16.03.2014. u 15:22 · pre 153 meseca #20
Citat:
ZAS011: Prva i osnovna stvar kod korišćenja mikrokontrolera je posnavanje funkcionisanja istog, a upoznavanje se vrši čitanjem, čitanjem i samo čitanjem datasheet-a za dotični. U datasheet-u je sve lepo napisano.

Pa gospodine nisam toliko malouman da ne znam gde mogu da nadjem karakteristike kontrolera kojeg koristim, vec me zanima zasto mi basic javlja gresku pri konfigurisanju registra OPTION jer se sa njim ukljucuju pull-up otpornici kao i registar TRISB kojim se definise I/O porta B.Samo sam pitao da li je neko raspolozen , ko koristi 16F628A ili ga je koristio, da napise deo koda za konfiguraciju portab da bude digital output sa ukljucenim pull-up om, jer meni ne uspeva, a posto vidim da se ljutite necu vise ni pitati.Hvala svima.
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme