max232 sız vb10 ile Serı port haberlesme (RS_232)

Başlatan murkofiliz, 16 Aralık 2013, 19:18:57

ete

Evet çok doğru alma işlemini kesinlikle USART kesmesi ile yapmak gerekir. AKsi taktirde serin komutu programı orada bloke eder ve diğer kısımlarda aksar. USART kesmesi kullanılması zorunlu bu projede.

Diğer bir sorun da madem karşılıklı haberleşme var aynı ortamda iki tane alıcı iki tanede verici var demektir. Aynı ortamda iki verici aynı anda açık olmamalıdır. Açık olursa bir birlerini bastırırlar ve kimse bir şey alıp veremez.
Bunu önlemek için iki üniteden birisi Master (yöneten) diğeri Slave (yönetilen) olmalıdır. Açılışta her iki tarafta alma konumunda beklemeli. Bu aşamada vericiler birer transistörle kontrol edilerek kapalı tutulmaları gerekir. Master olan vericisini çalıştırarak SLAVE olana yolla bakalım ne yollayacaksan demeli ve kendi vericisini hemen kapatarak alma konumuna geçmelidir.
Bu proje için ideal olan transceiver denilen bir kılıf altında hem alıcı hemde vericisi olan modülleri kullanmaktır. Bu modüllerde verici gerekince açılır.
Bu sitede Algoritma kısmında master-slave ilişkisi adında birçalışmamız var. Onuda okumnaızda yarar var.

Ete

murkofiliz

hocam lcd yı devre bagladım yanlız farlı bı entegre kullandım 877a ıle deıl ayrı bıtane 84a kullandım adım adım ılerlıyorum hocam sırada kontrol kartları var onları dızayn edıyorum hepsı bıtınce calısmamı sızınle paylasıcam yanlız su pc programıda baya zamanımı alıyo hem ogrenıp hem yapmak hakkaten zor allahtan sızın gıbı ınsanlar bıseylerı kolay ogrenmemızı saglıyosunuz 30 yasındayım ogrencıyken boyle ders calısmadım hakketen meslegımı bana tekrardan sevdırdınız cok tesekkur ederım hocam allah basımızdan eksık etmesın sızı
Saygılarımla

murkofiliz

Hocam oncelıkle hayırlı aksamlar yıne basım sıkıstı proje bıtmek uzere lakın kucuk bıyerde takıldık sistemi calıstırdım bu arada aynen ogrettıgınız gıbı borda doktugumde sıkıntısız calısyor lakin rs232 ile 877 haberlesiyor fakat ornegın 877nin portB.7 sinden aldıgım cıkıs ıle 84A nın a portunu gırıs yaptım uc bıtını gırıs olarak kullanmak ıstedım fakat porta.0 girisi ve cıkısı 877 den gelen veri ile sorunsuz işlen yaptı ama porta .1 ve port a.2 tepki vermedi aynı zamanda 877 dinin de cıkısınlarını etkiledı ve calıstırmadı sizce sorun ne olabılır

not: hocam bu arada enerjı ıle butun kombınasyonları denedım borda kurdugum da 84 a yı 5v 3A bıle besledım yıne olmadı 84 a ya giris 877 den geldigi surece sadece 84A nın porta.0 giris oluyo portb.0dan sıkıntısız cıkıs alıyorum ama 877 den 84Anın porta.1 ve diger portlarıda calısmıyo 3 gundur ugrastım bulamadım sorunu sizin bakma sansınız olabilirmi isis ve php leride ekiyorum simdiden saygılar hocam

ete

Bende sorunsuz çalışıyor. Senin İsis inde sorun olabilir.
Programda (F84A) yalnızca PORTA.0 giriş yapılmış. TRISA=%00000111 şeklinde komutla değiştir diğerleride çalışır.

Ete

murkofiliz

nasıl hocam ısısle alakası yok bord da da aynı sıkıntı oluyo sadece portb nın 1 bıtı cıkıs verıyo dıgerlerı etkılenıyo bıde
TRISA=%00000111 yapın demıssınız TRISA=1 ıle butun Aportu gırıs olmuyomu ısıs ıle bord bırbırıne uyumlu calısıyo lakın ne hıkmetse sadece bastakı roleyı kontrol edıyo dıgerlerıne atlayınca 877ye baglı led de sonuyo zaten roleyıde cekmıyo 84a da 877 gıbı sıgorta ayarları falan varmı lutfen yardım edın hocam SAYGILARIMLA

ete

Tris registeri 8 bit dir. Hangi biti "1" yaparsan o bit giriş olur.  TrisA=1 deyince (desimal) bu binary olarak TrisA=%00000001 demektir. Böylece yalnızca porta.0 girş diğerleri çıkış olur. Bütün hepsi çıkış olsun isteniyor ise trisa=255 vermek gerekir
Sorun budur. Ben yalnızca onu düzelttim isiste çalışıyor. Board üzerinde de çalışması gerekir. Çalışmıyor ise bağlantılar yanlış kristal yada rezonatör bağlı değil mclr direnci bağlı değildir
İsis bazı bağlantıları var kabul eder. Bu var kabul edenlerde eksiklik vardır mutlaka. Bunlar sırası ile,
- besleme bağlı kabul eder o halde iki işlemcinin besleme bacaklarına bağlantı yapılmalıdır.
- osc kristal yada rezonatör var kabul eder o halde iki işlemcininde kristal veya rezonatör bağlantıları yapılmalıdır.
- iki işlemcinin de mclr pinlerine 10 k lık pullup direnci bağlanmalıdır isis bunuda var kabul eder.
- ledler port pinlerine 330 ohmluk seri direnç ile bağlanmalıdır direk bağlanması işlemciyi bozar isis bunada aldırış etmez.
Hatırladıklarım bunlar . İlave olarak her iki işlemcinin besleme bacakları na 100 nF kondan satör bağlanmalıdır. Besleme voltajı tam 5V olmalıdır 5,2 v tu aşan voltaşlarda işlemci bozulur.


Ete

murkofiliz

Hocam ayri calistirdigimizda hic bir sikinti olmuyo logic 1 verdigimdecalisiyo cikislari 877 den alinca a portunu giris yapinca sikinti oluyo dediginiz gibi denicem  yani dogrusu soylemi 84a nin tris ayarlari bide hocam sizde butun roleler cektimi yani saygilarr
TrisA=% 11111111
TrisB=% 00000000

ete

TrisA nın yalnızca ilk 3 biti giriş (PORTA.0, PORTA.1 ve PORTA.2 giriş diğerleri değil gözüküyor) o halde yalnızca TRISA=%00000111 vermen yeterli ama hepsini giriş yapacak isen TRISA=%11111111 vermen gerekiyor elbette.

Rölelerde çekiyor. Hatta Animasyonlu röle (RELAY diye geçiyor) bağladım çekip bıraktığıda gözlemlenebiliyor.

Tek kusur olarak gördüğüm şey port bir kere açıldığında başka komut verilince açık olan kapanıyor diğer açılıyor.
Mesela MUR A veriyorsun PORTB.7 aktif oluyor. MUR B verince PortB.7 sönüyor bu seferde PORTB.6 aktif oluyor.
Bu şekilde mi isteniyor onu bilmiyorum. Ama bana göre PORTB.7 nin sönmesi için ona ben emir vermeliyim diye düşünürüm.
Bir komut bir öncekini iptal ediyorsa yada öyle ayarlanmış ise diyecek lafım yok elbette.

Bir konuya daha dikkatini çekmek isterim. Bir besleme hattında + ile GND birleşirse ne olur? Kısadevre olur ve güç kaynağın ya bozulur yada başka hasarlar meydana gelir.
Şimdi mantığını aç ve düşün!!!!
16F84A nın PORTA.1 pini ÇIKIŞ ve LOW çıkartıyor. Oraya 877 nin PORTB.6 pini bağlı ve oda HIGH çıkartıyor. Ne olur. Birisi 5V veriyor diğeri GND çıkartıyor bu durumda GND ile +5V bir biri ile kısa devre olmuş olur.Bunu hiç düşünmüyormusun?
ELbette 16F84 pini 877 nin PORTB.6 pinini LOW olmaya zorlayıp onu ekranda LOW gösterecektir. Ama gerçeği görmekistersen,
Ya 877 nin PORTB.6 pinine yada 18F84A nın PORTA.1 pinine 1K lık direnç bağla. Bak bakalım ne oluyor gözlemle.
Seri portdan MURB yolla ve bak, Direncin bir tarafı HIGH da dururken diğer tarafı LOW da kalacaktır. Direnç kısa devreyi önleyeceği için sorun yok gözükecektir.
Ama 16F84A nın PORA.1 ve PORTA.2 pinlerini giriş yaparsan kimse bir şeye itiraz etmeyecek kısa devre falan da olmayacaktır.
Anlattıkların bütün benim anlattıklarıma uyuyor ve bir numaralı kusur PORTA.1 ve PORTA.2 pinlerinin giriş olarak ayarlanmamış olması olarak gözüküyor. Hepsi bu.

Ete

murkofiliz

Hocam ne kadar tesekkur etsem azdir sadece 84a nin girisini % 11111111 olarak degistirdim hemen bordda da gordum zaten artik sikintisiz calisiyo sadece roleler biraz 100ms gec tepki veriyo Onuda bi halledicem ona yogunlastim allah ne muradiniz varsa versin yanliz sayenizde cok seyi ogrendim oyle calismasi gerekiyo projenin biraz tuhaf ama gucten kazanmak icin mecburdum ole olmasi gerkti bitince videoyuda size aticam hocam bilgisayar programinida kendim yazdim onuda gondericem
Biraz gorsel olsun diye ugrastim ama oluyo zaten yine cok tessekkur ederim allah isiniz gucunuzu rast getirsin saygilarimla
MURAT FILIZ

Powered by EzPortal