Picproje Elektronik Sitesi

DERLEYİCİLER => CCS C => Konuyu başlatan: umit2006 - 29 Temmuz 2012, 14:54:47

Başlık: ccs c'de dış kesme yapamıyorum!lütfen yardım!
Gönderen: umit2006 - 29 Temmuz 2012, 14:54:47
pic 16f84 ile RB0 pininden kesme yaptırmak istiyorum,kodları derliyo ama simulasyonda çalışmıyor.
*******************************************************************************
#include <16F84.h>

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT                       //Crystal osc <= 4mhz
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading

#use delay(clock=4000000)
int i;
#int_ext  //dış kesme (RB0/INT)
void ext_kesmesi()
{
output_high(pin_b1);
delay_ms(1000);
output_low(pin_b1);
delay_ms(600);
   for (i=0;i<10;i++);
   {
   output_high(pin_b1);
   delay_ms(200);
   output_low(pin_b1);
   delay_ms(200);
      }
}
void main()
{
  set_tris_b(0x01);
  output_b(0x00);
  ext_int_edge(H_TO_L);
  enable_interrupts(INT_EXT);
  enable_interrupts(GLOBAL);
  while(1);
  }
Başlık: Ynt: ccs c'de dış kesme yapamıyorum!lütfen yardım!
Gönderen: fatih6761 - 29 Temmuz 2012, 19:48:33
Devre şemanı vs. atabilirmisin?
Başlık: Ynt: ccs c'de dış kesme yapamıyorum!lütfen yardım!
Gönderen: umit2006 - 30 Temmuz 2012, 01:43:24
şema yok,interrupts ların mantığını kavramak için.simulatörde çalıştırıp deniyorum.(PicSimulator)
Başlık: Ynt: ccs c'de dış kesme yapamıyorum!lütfen yardım!
Gönderen: tacettin - 30 Temmuz 2012, 03:33:21
#include <16F84.h>

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT                       //Crystal osc <= 4mhz
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading

#use delay(clock=4000000)
int i;

#int_ext  //dış kesme (RB0/INT)
void ext_kesmesi()
{

output_toggle(PIN_B1);

     
}

void main()
{
  set_tris_b(0x01);
// output_b(0x00);
  ext_int_edge(H_TO_L);
  enable_interrupts(INT_EXT);
  enable_interrupts(GLOBAL);
  while(1);
  }
Başlık: Ynt: ccs c'de dış kesme yapamıyorum!lütfen yardım!
Gönderen: skara1214 - 30 Temmuz 2012, 07:27:40
Alıntı yapılan: umit2006 - 29 Temmuz 2012, 14:54:47
pic 16f84 ile RB0 pininden kesme yaptırmak istiyorum,kodları derliyo ama simulasyonda çalışmıyor.
*******************************************************************************
#include <16F84.h>
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT                       //Crystal osc <= 4mhz
#use delay(clock=4000000)
int i;
#int_ext  //dış kesme (RB0/INT)
void ext_kesmesi()
{
output_high(pin_b1);
delay_ms(1000);
output_low(pin_b1);
delay_ms(600);
   for (i=0;i<10;i++);
   {
   output_high(pin_b1);
   delay_ms(200);
   output_low(pin_b1);
   delay_ms(200);
      }
}
void main()
{
  ext_int_edge(H_TO_L);
  enable_interrupts(INT_EXT);
  enable_interrupts(GLOBAL);
  while(1);
  }
birde böyle denermisiniz?
Başlık: Ynt: ccs c'de dış kesme yapamıyorum!lütfen yardım!
Gönderen: halilgalic - 30 Temmuz 2012, 11:17:19
#USE fast_IO (B)  //b portunu hızlı giriş çıkış yapıyo









Başlık: Ynt: ccs c'de dış kesme yapamıyorum!lütfen yardım!
Gönderen: fatih6761 - 31 Temmuz 2012, 07:38:08
Hmm evet @halilgalic haklı B portunu çıkış yapmadan olmaz.
#use fast_io(b) veya
set_tris_b(0x00) kullanmalısınız...
Başlık: Ynt: ccs c'de dış kesme yapamıyorum!lütfen yardım!
Gönderen: halilgalic - 31 Temmuz 2012, 11:12:58
FATİH hocam
#use fast_io(b)
set_tris_b(0x00) ikisi aynı anlamda değil #use fast_io(b) portun hızlı gisiş cıkış olacagını anlatıyo.  set_tris_b(0x00)  giriş veya çıkışı belirtiyo;)
Başlık: Ynt: ccs c'de dış kesme yapamıyorum!lütfen yardım!
Gönderen: umit2006 - 31 Temmuz 2012, 11:23:56
değerli arkadaşlar gösterdiğiniz ilgi için teşekkür ederim,sorun kullandığım simulator programındaymış,PIC Simulator IDE 'de denedim dış kesme çalıştı.çok teşekkür ediyorum ilgilenenler için..
Başlık: Ynt: ccs c'de dış kesme yapamıyorum!lütfen yardım!
Gönderen: fatih6761 - 01 Ağustos 2012, 16:03:15
@halilgalic arkadaşım ben onalr aynı anlamdadır demedim ki zaten.Eğer arkadaş set_tris_b(0x01) yazarsa da aynı sonucu alır.PIC çekirdeği zaten Little Endian yani 0.bit 0.pine karşılık geliyor
Detay girmek gerekirse:
Fast IO kullanmak programın yavaşlamasına neden olur.Her kullanımda portun kullanılan bitleri için TRIS komutu kullanılır.Baştan TRIS belirtmek ise daha hızlı giriş çıkış işlemi yapmayı sağlar.Zaten donanımsal olarak bir pini hem giriş hemde çıkış olarak kullanmak mümkün değildir.Datasheetleri karıştırmanı tavsiye ederim...  ;D