MCU ile SN75176 Pinlerini Bağlarken Araya Direnç Koyulmalı mı?

Başlatan RaMu, 11 Ağustos 2015, 21:21:42

RaMu

Kısaca:
75176 ile ilgili benim aklıma takılan bir husus var,
MCU ve SN75176 5V ile çalışırken,
MCU ile SN75176 pinlerini bağlarken araya direnç koyulmalı mı?


Detaylar:
Ayrıca SN75176 pinlerinin direnci ile ilgili bulabildiğim bir bilgi:
(Datasheet e göre 75176 nın R pini, (picin uart Rx pinine bağladığımız 75176 pini)nin direnci 85 ohm mu oluyor, tam çözemedim?))
75176 Tx pini 3k, Enable pinleri 8k imiş, yanış anlamıyorsam.


-------------------------------------------------------------------------------------
Şu anda SN75176 ile denemeler yapıyorum.
(Simulasyonda da, gerçekte, breadboard üzerinde de, devreleri deniyorum.)

Transmitter - Receiver secimini yaparken hiç bekleme yapmazsam problem yaşadım.
(Pic 32MHz de çalışıyor, 1 komutu işlemesi 0.125us sürüyor.)
Transmitter - Receiver secimi ardından 1 ms bekleme yaparsam sıkıntı çıkmıyor.

Test programım şu şekilde:
Programda RB0 external interrupt pinine bağlı butona basılırsa,
pic SN75176 yı transmitter moduna geçirip,
'R' gönderiyor.
Geri kalan zamanda SN75176 alıcı modda bekliyor,
eğer uartdan (RS232)
'R' karakteri gelirse, RA1 pinine bağlı ledi toggle ediyor,
(veri alma ve led toggle RDA kesmesi ile yapılıyor.)
2 picdede aynı program var.
Uart 9600 baud da kullanılıyor.

Dediğim gibi bu program çalışıyor,
başta gerçek devrede dirençsiz bağladım mcu 75176 pinlerini,
1 devredeki 75176 ısındı diğerinde problem olmadı, belki başka bir hata yaptım bilemiyorum.

Test devresi ve kod;


/*
RB0 EXTI pinine bağlı butona basılınca
uart dan rs232 ile 'R' karakterini gönderen
ve
eğer uarttan rs232 ile 'R' karakteri gelirse
LED1 pinindeki ledi toggle eden program. 
*/
/**/

#include <main_lazer_02.h>
#define LED1 pin_A1
#define RTXE_pin  pin_B3

#define TxE output_high(RTXE_pin)
#define RxE output_low(RTXE_pin)


#INT_EXT
void  EXT_isr(void) 
{
TxE;
delay_ms(1);
putc('R');
delay_ms(1);
RxE;
delay_ms(1);

}

/*#INT_TIMER1
void  TIMER1_isr(void) 
{

}
*/
/**/
/*#INT_TBE
void  TBE_isr(void) 
{

}
*/
/**/

#INT_RDA
void  RDA_isr(void) 
{
   if(getc() == 'R')
   {
   output_toggle(LED1);
   }
}

void main()
{
   setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);      //65,5 ms overflow

ext_int_edge(INT_EXT, L_TO_H);
//veya EXT_INT_EDGE(INT_EXT_L2H);
   enable_interrupts(INT_EXT);
   //enable_interrupts(INT_TIMER1);
   //enable_interrupts(INT_TBE);
   enable_interrupts(INT_RDA);
   enable_interrupts(GLOBAL);

output_high(LED1);
RxE;

   while(TRUE)
   {
      //TODO: User Code
   }

}
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

OG

Arada direnc olMAMAsı daha iyi. Çok etki yapacak değerlerde olmamasına rağmen yine de drenc ve ona bağlanan girişin kapasiteleri pulse kenarlarını bir miktar yatırır, o sebeple.
Yine de bağlanan birkaç K seviyesinde direncin 9600 gibi hızlar için etkisi yok sayılacak kadardır sanıyorum.

Bunun yanısıra, bazı 485 malzemelerde, RX TTL çıkışı kontrol pinlerinin durumuna göre Hi-Z olup izole konuma gecebiliyor. Bu durumda MCU RX pini yüzer hale düşer, seviye LOW mertebelerine gelip USART RX kesmesi falan üretebilir, bu olmasın ve yazılımda bununla uğraşmayayım diye ben MCU RX pinine (75176 pin 1) pullup direnç tavsiye ederim.

75176 20-25mA akım cekebilir, bu sebeple tatlı bir ısısı olur.

FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

Karamel

Hocam sanirim siz daha farkli birsey soruyorsunuz ama benim 75176 deneylerim ve resistorler hakkindaki elde ettigim kucuk bir deney sonucum var.

Biliyorsunuz 75176 entegresi 5v. Stm32 microcontrollerlar 3.3v. Bu uyumu saglamak icin. Microcontrollerin rx bacagina 75176 dan 5v değilde 3.3v gelsin diye iki tane serial resistor ile voltage i boldum. Iste 2/3 orandalar ikisi. 3 luk value ya sahip olanin uzerinden microcontrollerin rx pinine baglanti yaptim. Tum deneyelerim boyle calistilar.

mesaj birleştirme:: 12 Ağustos 2015, 16:25:59

RaMu hocam. sizin icin bir deney yaptim. OG hocam pull uptan bahsedince suphelendim. hocamin dedigi cokta mantikli gelince hemen deney yaptim.

hocam transceiver dan receiver a gecerken. 75176 nin RO ucu(1 numarali uc) anlik olarak logic zero oluyor. buda microcontroller i usart interruptina sokuyor.

bunu nasil anladim? en basta logic analyzerim ile bu pini izledim. microcontroller birsey gonderip. (75176 yi transceiver yapip) ardindan listening moduna gecince. bu pindeki degisimi gordum.

daha sonra interrupt function icersine su code u Heart_Led = ~Heart_Led; ekledim. yani herhangi bir nedenle bu function kullanilirsa led state ini degistirecek.

microcontrollerdan 1 er sn ara ile birsey gondermek istedim ki. bir baktim. 1 sn de bir interrupt function kullaniliyor.

tamam dedim hocamin tezi dogru.

daha sonra 75176 entegresinin RO bacagini 2.2k ohm resistor ile pull up yaptim. deneyi tekrarladim. sonuc basarili. o anlik logic zero yu pull up yok etti. gonderme ve almada da sorun yok.

hocam buna cok dikkat edin. microcontroller birseyler gonderirken. yanlislikla kendini interrupt function ina sokabiliyor.  :-\

OG hocamizdan bu gun onemli bir sey ogrendim. Hocama saygi. sevgi ve tesekkurlerimi sunarim.... ::)

RaMu

@OG hocam,  teşekkür ederim,
pull up kullanmam gayet önemli anlaşılan,
bende pull up ile deneme yaparım tekrar.
Henüz devrelerim yan yana duruyor,
mesafeli deneme yapamadım.

Datasheet tede şöyle bir kısım var,
yeri gelmişken paylaşayım.


@Karamel denemen çok faydalı oldu benim için, teşekkür ederim.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html