Birden fazla pic kullanarak seri iletişim, çıkan problemler hk.

Başlatan umitmura, 14 Şubat 2011, 20:05:50

umitmura

herkese merhaba,
7 adet 877a ile seri iletişim kullanarak bir devre yapmaya çalışıyorum. piclerden 1 tanesi master , diğer 6 tanesi seri iletişimle masterdan gelen bilgiye göre kendisine bağlı olan ledleri yakacak.
Master olan picin TX inden diğer 6 picin RX ine bağlantı yaptım. Yani master olan picten veri gönderdiğimde diğer 6 pice veri gidecek, verinin içindeki bilgiye göre her pic kendisine ait olan bilgiyi alacak ve işleme koyacak. Her picte 30 led bağlı toplamda 180 ledi kontrol etmek istiyorum. Master ve Pic kodları aşağıdadır. Yazılım olarak bir yanlışlığım veya önerebileceğin daha sağlıklı bir yöntem varmıdır. Uygulamayı yapmaya başladığımda çıkabilecek sorunları en aza indirmek için yazılımdan emin olmak istiyorum.
Donanım tarafındada 7 pici 5 voltla beslemede lm7805 tek başına yeterli olurmu, Tx, Rx bağlantıları arasına birşey bağlamak gerekirmi(direnç vs.) yoksa direk kablo bağlamak yeterlimidir, gibi çıkabilecek problemler neler olabilir. Yardımlarınız için teşekkürler.

Master programı;
;Master
Device = 16F877A
XTAL = 4
ADCON1=7
CMCON=7
OPTION_REG.7=1
TRISA=%00000000
TRISB=%00000000
TRISC=%10000000
TRISD=%00000000
TRISE=%00000000
PORTA=0
PORTB=0
PORTC=0
PORTD=0
PORTE=0

#DEFINE HSER_RCSTA 90h
#DEFINE HSER_TXSTA 20h
#DEFINE HSER_BAUD 2400
#DEFINE HSER_SPBRG 25
Dim say1 As Word

BASLA:

GoSub BEKLE
HSerOut [1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,1]        
GoSub BEKLE
HSerOut [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]            
GoSub BEKLE    
    
GoTo BASLA
BEKLE:
    For say1=1 To 1000

    Next say1
Return       

End


pic1 programı;
;pic1
Device = 16F877A
XTAL = 4
On Interrupt GoTo KESME

TRISA=%00000000
TRISB=%00000000
TRISC=%10000000
TRISD=%00000000
TRISE=%00000000
PORTA=0
PORTB=0
PORTC=0
PORTD=0
PORTE=0

ADCON1=7 
CMCON=7 
OPTION_REG.7=1 

INTCON=%11000000    
PIE1=%00100000      

#DEFINE HSER_RCSTA 90h
#DEFINE HSER_TXSTA 20h
#DEFINE HSER_BAUD 2400
#DEFINE HSER_SPBRG 25

Dim PA1 As Byte
Dim PB1 As Byte
Dim PC1 As Byte
Dim PD1 As Byte
Dim PE1 As Byte

Dim PA2 As Byte
Dim PB2 As Byte
Dim PC2 As Byte
Dim PD2 As Byte
Dim PE2 As Byte

Dim PA3 As Byte
Dim PB3 As Byte
Dim PC3 As Byte
Dim PD3 As Byte
Dim PE3 As Byte

Dim PA4 As Byte
Dim PB4 As Byte
Dim PC4 As Byte
Dim PD4 As Byte
Dim PE4 As Byte

Dim PA5 As Byte
Dim PB5 As Byte
Dim PC5 As Byte
Dim PD5 As Byte
Dim PE5 As Byte

Dim PA6 As Byte
Dim PB6 As Byte
Dim PC6 As Byte
Dim PD6 As Byte
Dim PE6 As Byte

BASLA:

GoTo BASLA

KESME:
Disable
HSerIn [PA1,PB1,PC1,PD1,PE1,PA2,PB2,PC2,PD2,PE2,PA3,PB3,PC3,PD3,PE3,PA4,PB4,PC4,PD4,PE4,PA5,PB5,PC5,PD5,PE5,PA6,PB6,PC6,PD6,PE6]
PORTA=PA1
PORTB=PB1
PORTC=PC1
PORTD=PD1
PORTE=PE1
Resume
Enable

End


2.pic
.
.
KESME:
Disable
HSerIn [PA1,PB1,PC1,PD1,PE1,PA2,PB2,PC2,PD2,PE2,PA3,PB3,PC3,PD3,PE3,PA4,PB4,PC4,PD4,PE4,PA5,PB5,PC5,PD5,PE5,PA6,PB6,PC6,PD6,PE6]
PORTA=PA2
PORTB=PB2
PORTC=PC2
PORTD=PD2
PORTE=PE2
Resume
Enable

End

3. pic
.
.
KESME:
Disable
HSerIn [PA1,PB1,PC1,PD1,PE1,PA2,PB2,PC2,PD2,PE2,PA3,PB3,PC3,PD3,PE3,PA4,PB4,PC4,PD4,PE4,PA5,PB5,PC5,PD5,PE5,PA6,PB6,PC6,PD6,PE6]
PORTA=PA3
PORTB=PB3
PORTC=PC3
PORTD=PD3
PORTE=PE3
Resume
Enable

şeklinde 6 pici programladım. hser içinde giden alınan bilgide PA1--> pic 1'in A portu PA2 -->pic 2'nin A portu gibi 8 bit veri iletilip alınıyor.