Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d

Ana Menü

ccs c 12f675 programlama

Başlatan fractal, 25 Mayıs 2009, 17:07:54

fractal

arkafaşlar ilk defa 12f675 kullanıcam.aşağıdaki programda a4 ve a5 pinlerine buton takılı butona basınca hiç bir işlem yapmıyor.proteusta bakıyorum ne cıkarma yapıyor  ne toplama .if içine girmiyor bile.bu işlemcide giriş çıkış pinleri tanımlamadamı hata yaptım.bu işlemcide digital giriş çıkış tanımlama analog giriş çıkış tanımala ve osc ayarları nasıl?ben yanlışm  konfigürasyonmu yapmışım..


int kesmem=0;
unsigned int16 value=236;
#int_RTCC
void  RTCC_isr(void)
{
output_low(pin_a1);
set_timer0(0);
}

#int_EXT
void  EXT_isr(void)
{
output_high(pin_a1);
//setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);
set_timer0(value);//2 ms için ayarlı  20 fark 1msn

}

void main()
{

  setup_adc_ports(sAN0|VSS_VDD);
  setup_adc(ADC_CLOCK_DIV_16);
  setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);
  set_timer0(0);
  setup_timer_1(T1_DISABLED);
  setup_comparator(NC_NC);
  setup_vref(FALSE);
//set_tris_a(0b000000);
 
   ext_int_edge(l_TO_h);
   enable_interrupts(INT_EXT);

  enable_interrupts(INT_RTCC);
  enable_interrupts(GLOBAL);
 
 ///value=26;
  // TODO: USER CODE!!
 
  while(1)
  {
if(input(pin_a4))
{
value=value+10;
if(value>=256)
{value=256;}
}

if(input(pin_a5))
{
value=value-10;
if(value<=0)
{value=0;}
}
  }
 

}
Restantum cogniscutur Quantum deligutur

fractal

kimse 12f675 ccs c ile programlamamışmı?yani..
Restantum cogniscutur Quantum deligutur

omenek

//set_tris_a(0b000000);bu satırı
set_tris_a(0b110101);bu şekilde yaz
konfigürasyon ayarlarında pullups dirençlerini disable yap
disable yaptığın halde buton sinyali yokken girişe 1 geliyorsa
ozaman butonla 1 değilde 0 sinyali göndererek bir dene.

fractal

hepsini denedim arkadaşım olmadı.yanlız şöyle birşey var.başına değil sıfır olunca çalış  dediğimde.butona bassamda çalılıyor basmasamda..pull up da yapıyorum.. olmuyor...acaba 7.5 de mi soru n var proteus..

if(!input(pin_a4))
{
value=value+10;
if(value>=256)
{value=256;}
}
Restantum cogniscutur Quantum deligutur

MURSEL

#FUSES INTRC_IO // bahsettigin buton girişşleri picin osilatör ucları bu şekilde  fuses ayarını yap olur, içindeki osilatör klaynagını ,picin osilatör uclarını i/o olrak kullanılcagını belirtir. iyi calışmalar...

fractal

hocam cok sağolasın olay bu yaa.işte cözüm bu..program çalışıyor artık..peki proteusta programı adım adım denerken neden pinlerin durumu butonun durumunu değiştirdiğim halde döngü içersinde defalarca dönmeme rağmen değişmiyor?
Restantum cogniscutur Quantum deligutur

MURSEL

set_tris_a(0b00110101); komutunu ekle   ve butonun ucu gnd mi gidiyor +vcc mi?

ete

12f675 de yalnızca 1 adet port olduğu için gerek tris registeri gerekse port registeri a-b gibi isimler almaz. Tris registeri olarak TRISIO yu kullan, port registeri olarak da GPIO yu kullan.
Ayrıca bu picde komparator bulunmaktadır. İptali için CMCON=7 demen gerekir.
Bu picde analog pinler mevcut olup ANSEL registerinden ayarlanmaktadır.
Tüm pinler digital istersen ANSEL=0 demen gerekiyor.
B u picde Pullup dirençleri pin bazında ayarlanabilir (birisi haric GPIO.4 idi galiba) bunun için WPU registerini kullanman gerekiyor.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

fractal

hepsini denedim gnd yaptım vcc yaptım olmadı.play tuşunun yanındaki step le  yapınca pin durumları butonlara göre hemen değişiyor .ama programı step step çalıştırdığım zaman olmuyor...animation frame sayısımı düşük.şu animasyon ayarlarındamı bir problem var acaba..
Restantum cogniscutur Quantum deligutur

MURSEL

12f675 de yalnızca 1 adet port olduğu için gerek tris registeri gerekse port registeri a-b gibi isimler almaz. Tris registeri olarak TRISIO yu kullan, port registeri olarak da GPIO yu kullan.
 ete hocam dedikleriniz dogru   ccs derleyicisinde durum  farklı 12f675 için porta-trisa 12f 509 için portb-trisb diye atanmış  biz registerlara direk müdahale etmedigimiz için karışıklık burdan sanırm bilgilendirdginiz için teşekkürler


f(input(pin_a4)) 
{ 
value=value+10; 
if(value>=256) 
{value=256;} 
}


arkadaşım pullup direnclerin aktifmi yazılımdan anladıgım kadarıyla  butonun diger ucu +vcc baglı .Pullup direnclerinide gnd cekmen lazım.

fractal

#FUSES INTRC_IO bu komutu kullanınca düzeldi.ete nin söylediği şeyler asm kodu ama sanırım ccs c zaten bunları hallediyor sanırım.

 setup_comparator(NC_NC);
  setup_adc_ports(no_analogs);
setup_adc(adc_off);

bunlar o asm kodların karşılığı değilmi..
Restantum cogniscutur Quantum deligutur

ete

Benim kodlar universal. CCS de de kullanabilirdiniz ama CCS de direk komut varmış o daha uygun bence.
Sonuçta sistemin çalışmaması ;
- Analog pinlerin iptal edilmemesinden
- Comparatör pinlerinin iptal edilmemesinden
kaynaklanıyormuş.

Bunları ayarlayınca program çalışmaya başladı.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com