tek hat iletişim 16f877a

sina-n

Üye
Katılım
20 Haz 2008
Mesajlar
221
Puanları
1
Yaş
38
arkadaslar tezımle ılgılı bır noktada sıkıstım yardımınıza ıhtıyacım var ?
elımde ;
1tane pwm darbe (100 msn );
1 tane lofık bılgı (50 msn );
1 tane lojik bilgi (50 msn );

bu 3 sınyalı tek bır dıjıtal cıkıs tan surebılır mıyım arkadaslar ?
ben bunların hepsını serı hale getırebılır mıyım yanı ardı ardına eklersenm 100 msn lık pperıyotlu bır bılgı sınyalı elde edıyorum ve bu 3 parcadan olusan bılgının bırlesımıı olacakl bunu nasıl yapabılırım ?????

ekte bır resım paylastım bu sızın kafanızı karıştırmasın benım soyledıklerım gecerlı o resmı seklen de sınyalı gorun dıye paylaştıom :)
kolay gelsın ....
 

Ekli dosyalar

  • tez.jpg
    tez.jpg
    38.3 KB · Görüntüleme: 34
Değerli arkadaşım, yapmak istediğin şey One-wire communnication diye geçiyor. Google'dan One-Wire diye arat. Birde wikipedia da güzel bir açıklama var konu ile ilgili...

Bu protokol Dallas Elektroniğin. Onların web sitesinde de protokol ile ilgili dokümanlar var.

Özetle protokol şöyle :

Örneğin 1 bilgisi göndereceksin, 100 us 1, 20 us 0 gönderirsen bu protokolde bu bilgi 1.

0 bilgisi ise 100 us 0, 20 us 1 şeklinde...

Dolayısıyla 01101011 göndermek istersen kabaca şöyle olacak:

___-_---_---_-___-_---_-___----_---_

gibi bir dalga formu oluyor...

Bunun içinde işlemcilerin Timer modüllerini kullanarak dalga sürelerini hesaplaman gerekiyor. Ben bir projede bunu kullanacağım yakında. Aklıma gelen yöntem şu :

A: Portdaki değer
B: Bu değerin portda yer alma süresi.


İyi çalışmalar...
 
sn picker ben derdimi heralde atam anlatamadım yada yazdıklarınızı anlamadım şöyleki;
sizinde belirtiğiniz gibi 1101 şeklinde bir bilgi göndermek istesem bu bil ginin ilk 2 biti yani 01 100msn de gercekleyecek son ıkı bıtının 11 her bıtıı 50 msn ısleyecek sekılde her bılgıyı nasıl sıraya sokabalırım yanı ardı ardına ??? ben her hangi bir protok istemiyorum ki:D:D:D
 
#define one_wire_pin pin_c3

int1 one_wire_reset(void)
{



int1 sonuc;//sonuç adında 1 bitlik değişken tanımlandı.
output_low(one_wire_pin);
delay_us(0);//0 us
output_low(one_wire_pin);//mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
delay_us(480);
output_float(one_wire_pin);
delay_us(70);
sonuc=input(one_wire_pin);
delay_us(410);
return (sonuc);
}

void one_yaz_bit(int bit)
{
if(bit==1)
{
output_low(one_wire_pin);
delay_us(6);
output_float(one_wire_pin);
delay_us(64);
}
else
{
output_low(one_wire_pin);
delay_us(60);
output_float(one_wire_pin);
delay_us(10);
}
}

int1 one_oku_bit(void)
{
int1 bit;

output_low(one_wire_pin);

delay_us(6);
//output_float(one_wire_pin);
delay_us(9);
bit=input(one_wire_pin);
delay_us(55);
return bit;
}
void one_yaz_byte(unsigned int data)
{
int i;
for(i=0;i<8;i++)
{
one_yaz_bit(bit_test(data,i));
}}
int one_oku_byte(void)
{
int i,sonuc=0;
for(i=0;i<8;i++)
{
shift_right(&sonuc,1,one_oku_bit());
}
return sonuc;
}


bu ccs de yazılan 18b20 nin sürücü programı, kolay gelsin
 

Forum istatistikleri

Konular
128,285
Mesajlar
916,442
Kullanıcılar
450,117
Son üye
3ZİNED_

Yeni konular

Geri
Üst