Seri girisli led surucu icin yardima ihtiyac var.

Başlatan vedo35, 06 Şubat 2013, 22:06:24

vedo35

Arkadaslar derlerken sifir hata var diyor ama 3 tane uyari bulundu. Ben programi benim seri girisli  parelel cikisli  led surucu icin kullanmam gerekiyor  programi kendi led surucu kartimda calistiramadim. Calismamasi acaba bu uyarilar yuzundenmidir? Bir yerden kopyale yapistir ile buldum yani kendim yazmadim. Bu 3 tane uyariyi nasil duzeltebilirim? Simdiden yardimlariniz icin tesekkurler.

Warnings:

>>> Warning 208 "rgb led stp24dp05.c" Line 17(1,9): Function not void and does not return a value  counting
>>> Warning 203 "rgb led stp24dp05.c" Line 35(1,1): Condition always TRUE
>>> Warning 208 "rgb led stp24dp05.c" Line 29(1,5): Function not void and does not return a value  MAIN
      Memory usage:   ROM=2%      RAM=2% - 3%
      0 Errors,  3 Warnings.


#include <16F887.h>           
#FUSES NOWDT           
#FUSES NOMCLR
#FUSES NOCPD
#FUSES NOBROWNOUT
#FUSES XT

#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
/////////////////////////////////////////////////////////////////////////////////

#define SDI     PIN_C0   
#define CLK     PIN_C1

int i, data;

counting()
{
output_low(SDI);
for (i=0; i<data; ++i){
output_low(CLK);
delay_ms(100);
output_high(CLK);
delay_ms(100);
}
printf("%2x", data);
}   

Main() {
output_high(SDI);
delay_ms(100);
output_high(CLK);
delay_ms(100);
output_low(CLK);
while(1){
if(kbhit())
          {
             data=getc();
counting();
            }     

}
}   
Biliyormusun dedi, ben ne yaptiysam kader icabi yaptim dedi. Ben gene sustum.... Kimbilir sende belki kaderin memurusun vazifeni yapiyorsun dedi.

necati

[email]entegreterbiyecisi@yahoo.com[/email]

vedo35

cok tesekkurler necatiyolda deneyecegim. Yanliz bir sorum daha olacak ben dun clk cikisi calisiyormu diye olcu aletinin frekans olcme kademesinde  clock pulse ini olcmeye kalktim 100 hertz olmasi lazim ama ben hic pulse goremedim. Clock pulse uretim komutlarinda bir sorun varmidir?
Biliyormusun dedi, ben ne yaptiysam kader icabi yaptim dedi. Ben gene sustum.... Kimbilir sende belki kaderin memurusun vazifeni yapiyorsun dedi.

skara1214

hocam düzenli birşey yollamıyorsun 8 bitlik data yolluyorsun 100 hz değil 5 hz görüyor olman lazım ama dediğim gibi oda düzenli değil bir harfe bastıkça düzenli sinyal görmek için getch ı kardır sürekli counting dönsün
Herkes ölür ama herkes gerçekten yaşamaz

vedo35

Tesekkurler sonucu burada paylasacagim. Bu arada  Skara1214 imzan cok hosuma gitti.  ;)
Biliyormusun dedi, ben ne yaptiysam kader icabi yaptim dedi. Ben gene sustum.... Kimbilir sende belki kaderin memurusun vazifeni yapiyorsun dedi.

skara1214

Herkes ölür ama herkes gerçekten yaşamaz

vedo35

Arkadaslar yukaridaki kopyala yapistir ile yazdigim entegre ismi yanlis benim kullandigim led surucu entegresi STP16CP05. Bu surucu ile 16 bite kadar led surulebiliyor. Vatandasinki 24 bitlik. Herneyse, yanliz yukarida netten buldugum kod ile datasheeti karsilastirdim LE girisi ucuda tanimlanmasi gerekiyor. LE dusuk kenarda datayi kabul ediyor diye datasheetinden anladim.  Ben kodda ayrica onu yaptim ama LE surekli yanik kaldi. Data akisi bitince high konumuna donmesi lazim degilmi?
   Birde ben su soruyu soracaktim sdi, clk ve LE yi tanimladik oldu diyelim. Ben bu kodda hangi ledleri yakacagimi gonderen bilgi yok diyelimki 1 ve 5 nolu ledleri yakili tutacagim. Data soyle olsun 1000100000000000 bu bilgiyi SDI dan nasil gonderebilirim kodda ne tur nereye eklenti yapmam lazim?

  Datasheet burada:   http://www.datasheetarchive.com/STP16CP05-datasheet.html

Tekrar tesekkurler.
Biliyormusun dedi, ben ne yaptiysam kader icabi yaptim dedi. Ben gene sustum.... Kimbilir sende belki kaderin memurusun vazifeni yapiyorsun dedi.

sadogan

Yazma foksiyonu
void Send16Bit(unsigned int16 data16bit )
{
   unsigned int16 i;
   for(i=0x8000;i>0;i>>=1)
   {
      if(i&data16bit)output_high(SdiPin);
      else  output_low(SdiPin);  
      output_high(ClkPin);
       delay_us(1);
      output_low(ClkPin);
   } 
   output_high(LePin);
   delay_us(5);
   output_low(LePin);
 
}

    foksiyonu bu şekilde kullanıyoruz
    unsigned int16 led_data;
  
   
        led_data=0b1000100000000000;
        Send16Bit(led_data );
   

Datasheet den anladığım kadarıyla böyle olmalı

vedo35

Coooook tesekkur ederim valla sizlerde olmazsaniz bu isleri kiviramam. Hemen derleyicide deniyorum umarim beceririm. Olmazsa sizleri yine rahatsiz ederim.
Biliyormusun dedi, ben ne yaptiysam kader icabi yaptim dedi. Ben gene sustum.... Kimbilir sende belki kaderin memurusun vazifeni yapiyorsun dedi.

vedo35

Yanliz bu verdiginiz kodlari hangi satirin arasina girecegim? Benim kodlar bunlar:

#include <16F887.h>           
#FUSES NOWDT           
#FUSES NOMCLR
#FUSES NOCPD
#FUSES NOBROWNOUT
#FUSES XT

#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
/////////////////////////////////////////////////////////////////////////////////

#define SDI     PIN_C0   
#define CLK     PIN_C1

int i, data;

void counting()
{
output_low(SDI);
for (i=0; i<data; ++i){
output_low(CLK);
delay_ms(100);
output_high(CLK);
delay_ms(100);
}
printf("%2x", data);
}   

void Main() {
output_high(SDI);
delay_ms(100);
output_high(CLK);
delay_ms(100);
output_low(CLK);
while(tru){
if(kbhit())
          {
             data=getc();
counting();
            }     

}
}   




Biliyormusun dedi, ben ne yaptiysam kader icabi yaptim dedi. Ben gene sustum.... Kimbilir sende belki kaderin memurusun vazifeni yapiyorsun dedi.

vedo35

Verdiginiz  kodlari asagidaki sekilde yerlestirdim derlerken hatalar verdi, hatalari duzelttim derledim hic hata yok. Programladim ama led surucu de tik yok. Hic bir led yanmiyor  :( Programin son hali asagida acaba yanlislik yada eksiklik nerede ? 

#include <16F887.h>           
#FUSES NOWDT           
#FUSES NOMCLR
#FUSES NOCPD
#FUSES NOBROWNOUT
#FUSES XT

#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
/////////////////////////////////////////////////////////////////////////////////

#define SDI     PIN_C0   
#define CLK     PIN_C1
#define LE      PIN_C2
int i, data;

void counting()
{
output_low(SDI);
for (i=0; i<data; ++i){
output_low(CLK);
delay_ms(100);
output_high(CLK);
delay_ms(100);
}
printf("%2x", data);
}   


void Send16Bit(unsigned int16 data16bit )
{
   unsigned int16 i;
   for(i=0x8000;i>0;i>>=1)
   {
      if(i&data16bit)output_high(SDI);
      else  output_low(SDI); 
      output_high(CLK);
       delay_us(1);
      output_low(CLK);
   }
   output_high(LE);
   delay_us(5);

output_low(LE);

}

        unsigned int16 led_data;
 
   
        led_data(b01000100000000000);
        Send16Bit(led_data );
   

void Main() {
output_high(SDI);
delay_ms(100);
output_high(CLK);
delay_ms(100);
output_low(CLK);
while(true){
if(kbhit())
          {
             data=getc();
counting();
            }     

}
}   
Biliyormusun dedi, ben ne yaptiysam kader icabi yaptim dedi. Ben gene sustum.... Kimbilir sende belki kaderin memurusun vazifeni yapiyorsun dedi.

sadogan

#include <16f887.h>       
#fuses NOWDT,PUT,NOPROTECT,INTRC_IO,noMCLR, noBROWNOUT,NOLVP 
#use delay(clock=4000000)

#define SDI     PIN_C0   
#define CLK     PIN_C1
#define LE      PIN_C2

void Send16Bit(unsigned int16 data16bit )
{
   unsigned int16 i;
   for(i=0x8000;i>0;i>>=1)
   {
      if(i&data16bit)output_high(SDI);
      else  output_low(SDI);  
      output_high(CLK);
      delay_us(1);
      output_low(CLK);
   } 
   output_high(LE);
   delay_us(5);
   output_low(LE);
}   

void main()
{
   unsigned int16 led_data;
      setup_oscillator(OSC_4MHZ);
    setup_CCP1(CCP_OFF); 
    setup_CCP1(CCP_OFF);
    set_tris_c(0b00000000);
   while(TRUE)
   {
 
      led_data=0b01000100001000001;
      Send16Bit(led_data );
      delay_ms(1000);
      led_data=0b00010000010000100;
      Send16Bit(led_data ); 
      delay_ms(1000);
   }
}

Hocam bu kodu yükleyerek led sürücü çalışıyormu test edin
daha sonra diğer ilaveleri yaparsınız.

vedo35

Tamam sadogan arkadasim ilgin icin tekrar tesekkurler.  Aksam deniyecegim. Umarim olumlu sonuc alirim o zaman resimlerini paylasirim.
Biliyormusun dedi, ben ne yaptiysam kader icabi yaptim dedi. Ben gene sustum.... Kimbilir sende belki kaderin memurusun vazifeni yapiyorsun dedi.

vedo35

Verdiginiz yukaridaki kodu derledim bundada sifir hatali olarak derledi. Programi benim development board ta pic`e yukluyorum (QL200)
( http://www.pic16.com/en/wzcapi/ql200.htm) port cikislarina benim led surucu kartini bagliyorum ama tik yok. :(
Bu arada surucu kartini kendim yaptim entegre 3,3 voltta calisiyor entegreyi 3,3 volt regulator entegresi ile besliyorum. Port girisleri arada direnc olmadan direk olarak pic in port girislerine bagli.  Bunun bir sakincasi oldugunu sanmiyorum datasheet inde gozume carpmadi.
Ql200 kart uzerindeki ledlerden osliator un calisip calismadigini ledlerden anlayabiliyordum lcd uygulamalarinda oldugu gibi ama bu kodda vbu hareket yok. Baska ne olabilir anlamadim. Tekrar tesekkurler. Yardimlarinizi  bekliyorum.

Biliyormusun dedi, ben ne yaptiysam kader icabi yaptim dedi. Ben gene sustum.... Kimbilir sende belki kaderin memurusun vazifeni yapiyorsun dedi.

sadogan

datasheet de 3.3 volt 5 volt arsı besleme gerilimi diyor
o nedenle 5 volt ile besleyin
STP16CP05 OE (21 nolu pin) gnd ye bağlımı ?