Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
13
Cevap
5245
Tıklama
0
Öne Çıkarma
ccs c port ayarlama
R
16 yıl
Yarbay
Konu Sahibi

16f628a ile l298 devresi kurdum .2motoru 3 buton kullanarak aynı anda ileri ,geri ve durmasını sağlayacağım.bunu asm de yaptım ama c de birtürlü yapamadım.

işte kodlar ccs c compile yapıyorum sürekli saçma saçma error veriyor.
error vermeden yaptığımda ise isis te çalışmıoyor ilk defa karşılaştığım bir hata aldım.
trisb instruction is deprecated for PIC16628
trisa instruction is deprecated for PIC16628
yazıyordu.
#include <16f628A.h>  
#fuses noprotect,nowdt,xt
#use delay(clock=4000000)
#DEFINE butonileri pin_a0
#DEFINE butongeri pin_a1
#DEFINE butondur pin_a2
#DEFINE giris1 pin_b0
#DEFINE cikis1 pin_b1
#DEFINE giris2 pin_b2
#DEFINE cikis2 pin_b3

void main()
{
set_tris_b(0x00);
set_tris_a(0xff);
output_a(0x00);
if (input(butonileri))
{
output_b(00000101);
}

if (input(butongeri))
{
output_b(00001010);
}

if (input(butondur))
{
output_b(0x00);
}

}

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil





< Bu mesaj bu kişi tarafından değiştirildi razor9119 -- 23 Aralık 2009; 16:53:36 >

D
16 yıl
Teğmen

hocam 16f84 mi kulandın yoksa 16f628 mi ? yazdıgın kodun basında 16f628a yazarken 16f84a kulandıysan problem olusabilir her nekadar benzer picler olsada sen hangisini kulanıyorsan onu tanımla kodun basına.


Bu mesaja 1 cevap geldi.
J
16 yıl
Yüzbaşı

kodun if'li kısımlarını aşağıdaki şekilde düzeltip dener misin?


if (input(butonileri)&&!input(butongeri))
{
delay_ms(15);
output_b(00000101);
}

if (input(butongeri)&&!input(butonileri))
{
delay_ms(15);
output_b(00001010);
}



D
16 yıl
Teğmen

14. satırda hata vermiş en azından burda set ederken bi hata vermemesi lazım sen en iyisi yeni bir proje olustur adım adım kodu yapıstır boylece hatanın kodun neresinde oldunu daha iyi anlarsın.


Bu mesaja 1 cevap geldi.
J
16 yıl
Yüzbaşı

sen sanırım set_tris 'le portları giriş çıkış olarak ayarlamaya çalışmışsın fakat o komutu kullanmak için inputları fast i/o olarak seçmen gerekir ki #use fast_io(port ismi) komutunu kullanman gerekirdi. sen o komutları sil en iyisi zaten derleyici kendisi anlıyor giriş mi çıkış olduğunu.





< Bu mesaj bu kişi tarafından değiştirildi jöntürk87 -- 23 Aralık 2009; 21:40:48 >
Bu mesaja 2 cevap geldi.
D
16 yıl
Yüzbaşı

#DEFINE giris1 pin_b0
#DEFINE cikis1 pin_b1
#DEFINE giris2 pin_b2
#DEFINE cikis2 pin_b3

burada sanki b0 ve b3 çıkış gibi? Fakat set tris le b nin hepsini output yapmışsın bundan kaynaklı hatalarda olabilir.



D
16 yıl
Yüzbaşı

quote:

Orijinalden alıntı: jöntürk87

sen sanırım set_tris 'le portları giriş çıkış olarak ayarlamaya çalışmışsın fakat o komutu kullanmak için inputları fast i/o olarak seçmen gerekir ki #use fast_io(port ismi) komutunu kullanman gerekirdi. sen o komutları sil en iyisi zaten derleyici kendisi anlıyor giriş mi çıkış olduğunu.


Peki arkadaşın dediğini yaptın mı? Bundanda kaynaklanıyo olabilir.



D
16 yıl
Yüzbaşı

sen binary value atamaya çalışıyosun ama belirtecini yazmıyosun
Örnek:
senin yaptığın

if (input(butonileri))
{
output_b(00000101);
}



olması gereken

if (input(butonileri))
{
output_b(0b00000101);
}

bunu dene bakalım ne olacak





< Bu mesaj bu kişi tarafından değiştirildi drexel -- 24 Aralık 2009; 0:14:58 >

E
16 yıl
Teğmen

compiler da mı sorun var tam olarak bilmiyorum ama ilk mesajındaki kodları derlediğimde ben herhangi bir error ile karşılaşmadım :?



E
16 yıl
Teğmen

istersen sana oluşan hexi göndereyim , proteus da bir dene



C
16 yıl
Onbaşı

quote:

#include <16f628A.h>
#fuses noprotect,nowdt,xt
#use delay(clock=4000000)
#DEFINE butonileri pin_a0
#DEFINE butongeri pin_a1
#DEFINE butondur pin_a2
#DEFINE giris1 pin_b0
#DEFINE cikis1 pin_b1
#DEFINE giris2 pin_b2
#DEFINE cikis2 pin_b3

void main()
{
set_tris_b(0x00);
set_tris_a(0xff);
output_a(0x00);
if (input(butonileri))
{
output_b(00000101);
}

if (input(butongeri))
{
output_b(00001010);
}

if (input(butondur))
{
output_b(0x00);
}

}


Programda sonsuz döngü yok bir kere çalışır sadece
butonlardan sonra debounce için gecikme yok
set tris komutlarını kullanmana gerek yok ccs kendi ayarlıyor yapmaya çalıştığında yanlış mevcut fuses konfigürasyonuyla a portunu ff yapamazsın a portu 5 bit
butonları nası bağlantı yaptın ?



C
16 yıl
Onbaşı

pull up direnci kullanmadınmı?


Bu mesaja 1 cevap geldi.
E
16 yıl
Teğmen

senin projene benzer bir proje var , tek motorlu ve motor sürücü entegresiyle kontrol sağlanmış. incele bakalım yardımcı olacağı noktalar olabilir. http://rapid-share.com/files/325652219/DC_Motor_Uygulamasae_.rar.html



G
16 yıl
Yarbay

İlk yazdığın derleniyor ama çalışmaz bu çünkü döngü yok.Bir kere butonları kontrol ettikten sonra mcu uyku moduna giriyor.ccs kodun en sonuna sleep koyuyo çünkü.Ayrıyeten butonları pull down yapman lazım bu koda göre.



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.