16F628 Seri Port Haberleşme sorunu

Knife

Üye
Katılım
29 Kas 2007
Mesajlar
5
Puanları
1
Yaş
39
Merhaba.

16F628 ile seri porttan haberleşme yapmaya çalışıyorum fakat uygulamada başarılı olamadım. Basit bir uygulama ile seri port olayını anlamaya çalışıyorum. Mesela seri porttan gönderilen datayı alıp porta'ya yazıyorum ve ledler üzerinde göstermeye çalışıyorum. Fakat 16F628'in uart ayarlarını yapamadığımdan dolayı mıdır bilemiyorum uygulamada seri porttan gelen bilgiyi picten düzgün bir şekilde alamıyorum.

Pic kodlarını CCS C ile yazdım. Kodlar aşağıdaki gibi.

Program.c
Kod:
#include "C:\Program Files\PICC\Projects\628yeni.h"

int deg;
void main()
{

  setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
  setup_timer_1(T1_DISABLED);
  setup_timer_2(T2_DISABLED,0,1);
  setup_comparator(NC_NC_NC_NC);
  setup_vref(FALSE);
while(1)
{
output_a(0);
deg=getc();
if(deg!="")
{
output_a(deg);
delay_ms(500);
}
}

}

Program.h
Kod:
#include <16F628.h>

#FUSES NOWDT             //No Watch Dog Timer
#FUSES INTRC_IO           //Internal RC Osc, no CLKOUT
#FUSES NOPUT             //No Power Up Timer
#FUSES PROTECT            //Code protected from reads
#FUSES NOBROWNOUT          //No brownout reset
#FUSES NOMCLR            //Master Clear pin used for I/O
#FUSES NOLVP             //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD             //No EE protection

#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_B2,rcv=PIN_B1,bits=8)

13987_devre_122_856lo.jpg


Proteusta çizdiğim devrede seri port olarak Com2 koydum. Bilgisayarın Com1'i ile Com2'sini çapraz kablo ile bağladım ve Com1'den yolladığım bilgiyi Proteusa koyduğum Com2'nin RX bacağından alıyorum ve pice veriyorum. Bu şekilde Proteus uygulaması başarılı bir şekilde çalışıyor. Fakat devreyi kurup deneme yaptığımda başarılı olamıyorum. Proteus similasyonu yaparken bazı eksikleri tamamlıyor sanıyorum. Pic ve Pc 9600 baudrate ile bilgi alışverişi yapıyor. #rs232 kısmında baudrate tanımlamama rağmen kodda set_uart_speed(9600); yazarakta denedim yine sonuç alamadım. Acaba kodlarda 628'in uart ayarlarını yanlış mı yapıyoruz ? Bu konuda bana yardımcı olursanız sevinirim.


-Bir ara uarttan umudu kestim ve Proteusta Max232 ile uygulama yapmayı denedim. Max232 gelen bilgiyi eviriyor(0'ları 1, 1'leri 0). Proteusta bu sorunu inverter koyarak çözdüm ama bunu programsal olarakta yapabiliriz sanırım. Acaba bu evirme işlemini programda nasıl yapabiliriz ? Bu konuda da bilgisi olan arkadaşlar paylaşırsa sevinirim.

Şimdiden teşekkürler.
 
Yok mu arkadaşlar bir yorumu olan. Yada bu şekildeki basit bir iletişimi PBP ile yapmamda bana fikirler verecek olan. PBP ilede yazmayı deniyorum ama pic'in ayarlarını yapamıyorum sanırım PBP ile bir iki kitap aldım bu akşam onları inceleyeceğim.

Denemelere gece gündüz devam ediyorum. Ama halen başarılı olamadım :( Şöyle bir basit deneme yaptım dün gece. Pic gelen karakteri okuyor eğer bir karakter geldi ise gelen harfe göre A portuna bağlı ledleri yakıyor.

Program kodu:

Kod:
while(1)
{
do
{
c=getc();
}while(c=="");
if (c=="1")
{
output_high(PIN_A0);
}
if (c=="2")
{
output_high(PIN_A1);
}
if (c=="3")
{
output_high(PIN_A2);
}
if (c=="4")
{
output_low(PIN_A0);
output_low(PIN_A1);
output_low(PIN_A2);
}
delay_ms(500);
}

Bu uygulamada yine Proteus'ta çok güzel çalıştı. Fakat boarda kurduğumda yine sonuç alamadım. Bilgisayardan 2 yolladığımda zaman A2'ye bağlı ledi yakıyor, 6 gönderdiğim zaman ise A1'e bağlı ledi yakıyor. Başka sayılarda bişi yapmıyor. Acaba pic neden bu şekilde gelen bilgiyi düzgün algılayamıyor. Pic'i kaç kere çalıştırdı isem bu sonucu aldım. Hep aynı şekilde alıyor. Her seferinde değişse saçma sapan bişiler alıyor diyeceğim ama her seferinde bu şekilde oluyor. Sorun ne çözemedim, 2 haftadır uykularım kaçıyor. Bitirme ödevimin bir kısmı bu, diğer kısımları için gereken kısımları 2 günde hallettim en kolay yaparım dediğim yerde 2 haftadır uğraşıyorum. Ama pes etmek yok :) Uykusuz gecelere devam. Vize haftası öncesi pek iyi olmuyor ama neyse :(
 
Knife ' Alıntı:
Sorun çözüldü.

sorunu nasıl çözdüğünüzü yazarsanız aynı problemden şikayetçi arkadaşlara yardım etmiş olursunuz..
 

Forum istatistikleri

Konular
128,184
Mesajlar
915,686
Kullanıcılar
449,954
Son üye
yulaf177

Yeni konular

Geri
Üst