Haberler:

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

Ana Menü

ccs c enc28j60

Başlatan Emre MERMİ, 27 Ocak 2015, 21:47:04

gokhangokcen

int ips[12] ={192, 168, 1, 110, 192, 168, 1, 1, 255, 255, 255, 0};
unsigned int sol,sag,macler;
volatile char karakterler[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; 

void saveToEprom()
{  // daha önce yazıldığı anlaşılsın diye 0 ncı byte değeri 7 yapılır...
   int8 check=7;
   write_eeprom(0,  check);
   write_eeprom(1,  ips[0]);
   write_eeprom(2,  ips[1]);
   write_eeprom(3,  ips[2]);
   write_eeprom(4,  ips[3]);
   write_eeprom(5,  ips[4]);
   write_eeprom(6,  ips[5]);
   write_eeprom(7,  ips[6]);
   write_eeprom(8,  ips[7]);
   write_eeprom(9,  ips[8]);
   write_eeprom(10, ips[9]);
   write_eeprom(11, ips[10]);
   write_eeprom(12, ips[11]);
}

void readFromEprom()
{
   int8 saklamaDurumu;
   saklamaDurumu = read_eeprom( 0 );
   if ( saklamaDurumu == 7  )
      {
         ips[0] = read_eeprom( 1 );
         ips[1] = read_eeprom( 2 );
         ips[2] = read_eeprom( 3 );
         ips[3] = read_eeprom( 4 );
         ips[4] = read_eeprom( 5 );
         ips[5] = read_eeprom( 6 );
         ips[6] = read_eeprom( 7 );
         ips[7] = read_eeprom( 8 );
         ips[8] = read_eeprom( 9 );
         ips[9] = read_eeprom( 10 );
         ips[10] = read_eeprom( 11 );
         ips[11] = read_eeprom( 12 );
      }
}

int sayiyaCevir(char a1, char a2, char a3)
{
   int rtn;
   rtn = 0;
   rtn = (a1 - 48) * 100 + (a2 - 48) * 10 + (a3 - 48);
   return rtn;
}


void MyTelnetTask(void)
{


   if (!TCPIsConnected(g_MyTelnetSock))
      return;
      
          
      if(TCPIsGetReady(g_MyTelnetSock))
      {   v = 0;
         while (TCPGet(g_MyTelnetSock, &c)) {
            gelen[v] = c;
            v ++;
            veri=1;
         };

if(gelen[0]=='R' && gelen[1]=='L' && gelen[2]=='Y') 
{
if(gelen[3]){output_high(role1);}else output_low(role1);
if(gelen[4]){output_high(role2);}else output_low(role2);
if(gelen[5]){output_high(role3);}else output_low(role3);

output_toggle(led1);
TCPPutArray(g_MyTelnetSock,dizi,2);

for(p=0;p<data_boyu;p++)
{
gelen[p]=0;
}
}

if((gelen[0]=='=')&&(gelen[5]==')'))
{
output_high(txrx);
delay_ms(10);
SNCSEND();
SEND(start_char);
for(p=1;p<data_boyu-1;p++)
{
SEND(gelen[p]);
}
SEND(end_char);
output_low(txrx);
for(p=0;p<data_boyu;p++)
{
gelen[p]=0;
}
delay_ms(10);
RX=1;
}
      

         
if(gelen[0]=='T' && gelen[1]=='E' && gelen[2]=='S' && gelen[3]=='T')
{
output_toggle(led1);
TCPPutArray(g_MyTelnetSock,dizi,2);

for(p=0;p<data_boyu;p++)
{
gelen[p]=0;
}
}

      
       if(gelen[0]=='R' && gelen[1]=='E' && gelen[2]=='S' && gelen[3]=='E' && gelen[4]=='T')
                  {
                     TCPPut(g_MyTelnetSock,13);
                     TCPPutArray(g_MyTelnetSock,reset,25);
                     reset_cpu();
                  }
               
               if(gelen[0]=='I' && gelen[1]=='P')
                  {  
                     ips[0] = sayiyaCevir(gelen[3], gelen[4], gelen[5]);  
                     ips[1] = sayiyaCevir(gelen[7], gelen[8], gelen[9]);  
                     ips[2] = sayiyaCevir(gelen[11], gelen[12], gelen[13]);  
                     ips[3] = sayiyaCevir(gelen[15], gelen[16], gelen[17]);
         
                     ips[4] = sayiyaCevir(gelen[19], gelen[20], gelen[21]);  
                     ips[5] = sayiyaCevir(gelen[23], gelen[24], gelen[25]);  
                     ips[6] = sayiyaCevir(gelen[27], gelen[28], gelen[29]);  
                     ips[7] = sayiyaCevir(gelen[31], gelen[32], gelen[33]);
         
                     ips[8] = sayiyaCevir(gelen[35], gelen[36], gelen[37]);  
                     ips[9] = sayiyaCevir(gelen[39], gelen[40], gelen[41]);  
                     ips[10] = sayiyaCevir(gelen[43], gelen[44], gelen[45]);  
                     ips[11] = sayiyaCevir(gelen[47], gelen[48], gelen[49]);
                     
                     saveToEprom();
                     
                     TCPPut(g_MyTelnetSock,13);
                     TCPPutArray(g_MyTelnetSock,ipatm,16);
                     TCPPut(g_MyTelnetSock,13);
                     TCPPutArray(g_MyTelnetSock,reset,25);
                     reset_cpu();
                  }
               if(gelen[0]=='M' && gelen[1]=='A'  && gelen[2]=='C')
                  {  
                     TCPPut(g_MyTelnetSock,77); TCPPut(g_MyTelnetSock,65); TCPPut(g_MyTelnetSock,67); TCPPut(g_MyTelnetSock,58);
                     macler = MY_DEFAULT_MAC_BYTE1; sol = macler / 16; macler = macler - 16 * sol; sag = macler;
                     TCPPut(g_MyTelnetSock, karakterler[sol]); TCPPut(g_MyTelnetSock, karakterler[sag]); 
                     TCPPut(g_MyTelnetSock,58);
                     macler = MY_DEFAULT_MAC_BYTE2; sol = macler / 16; macler = macler - 16 * sol; sag = macler;
                     TCPPut(g_MyTelnetSock, karakterler[sol]); TCPPut(g_MyTelnetSock, karakterler[sag]); 
                     TCPPut(g_MyTelnetSock,58);
                     macler = MY_DEFAULT_MAC_BYTE3; sol = macler / 16; macler = macler - 16 * sol; sag = macler;
                     TCPPut(g_MyTelnetSock, karakterler[sol]); TCPPut(g_MyTelnetSock, karakterler[sag]); 
                     TCPPut(g_MyTelnetSock,58);
                     macler = MY_DEFAULT_MAC_BYTE4; sol = macler / 16; macler = macler - 16 * sol; sag = macler;
                     TCPPut(g_MyTelnetSock, karakterler[sol]); TCPPut(g_MyTelnetSock, karakterler[sag]); 
                     TCPPut(g_MyTelnetSock,58);
                     macler = MY_DEFAULT_MAC_BYTE5; sol = macler / 16; macler = macler - 16 * sol; sag = macler;
                     TCPPut(g_MyTelnetSock, karakterler[sol]); TCPPut(g_MyTelnetSock, karakterler[sag]); 
                     TCPPut(g_MyTelnetSock,58);
                     macler = MY_DEFAULT_MAC_BYTE6; sol = macler / 16; macler = macler - 16 * sol; sag = macler;
                     TCPPut(g_MyTelnetSock, karakterler[sol]); TCPPut(g_MyTelnetSock, karakterler[sag]); 
                  }

         

      
   /* TODO: use TCPIsGetReady(g_MyTelnetSock) to determine
   if we have received any data, and if we have then use
   TCPGet() or TCPGetArray() to read that data.*/
   /* TODO: if you want to send data, first check to see
   how much TX buffer is available with
   TCPIsGetReady(g_MyTelnetSock) and then use TCPPut() or
   TCPPutArray() to send data being careful to not send
   more data than TCPIsGetReady() told us was available.*/
}
}

void IPAddressInit(void)
{
   //MAC address of this unit
   MY_MAC_BYTE1=MY_DEFAULT_MAC_BYTE1;
   MY_MAC_BYTE2=MY_DEFAULT_MAC_BYTE2;
   MY_MAC_BYTE3=MY_DEFAULT_MAC_BYTE3;
   MY_MAC_BYTE4=MY_DEFAULT_MAC_BYTE4;
   MY_MAC_BYTE5=MY_DEFAULT_MAC_BYTE5;
   MY_MAC_BYTE6=MY_DEFAULT_MAC_BYTE6;

   //IP address of this unit
   MY_IP_BYTE1=ips[0];        //MY_DEFAULT_IP_ADDR_BYTE1;
   MY_IP_BYTE2=ips[1];        //MY_DEFAULT_IP_ADDR_BYTE2;
   MY_IP_BYTE3=ips[2];        //MY_DEFAULT_IP_ADDR_BYTE3;
   MY_IP_BYTE4=ips[3];        //MY_DEFAULT_IP_ADDR_BYTE4;

   //network gateway
   MY_GATE_BYTE1=ips[4];        //MY_DEFAULT_GATE_BYTE1;
   MY_GATE_BYTE2=ips[5];        //MY_DEFAULT_GATE_BYTE2;
   MY_GATE_BYTE3=ips[6];        //MY_DEFAULT_GATE_BYTE3;
   MY_GATE_BYTE4=ips[7];        //MY_DEFAULT_GATE_BYTE4;

   //subnet mask
   MY_MASK_BYTE1=ips[8];        //MY_DEFAULT_MASK_BYTE1;
   MY_MASK_BYTE2=ips[9];        //MY_DEFAULT_MASK_BYTE2;
   MY_MASK_BYTE3=ips[10];        //MY_DEFAULT_MASK_BYTE3;
   MY_MASK_BYTE4=ips[11];        //MY_DEFAULT_MASK_BYTE4;
}



vermiş olduğum program blokları içerisinde bir abimizin düzenlemiş olduğu tcp/ip üzerinden ip ya da mac adresi değiştirme blokları mevcut bunları kullanabilirsiniz.
Başlangıç karakteri olarak MAC geldiğinde sonrasındaki byteları mac olarak kaydeder
Başlangıç karakteri olarak IP geldiğinde sonrasındaki byteları ip olarak kaydeder

RLY olarak geldiğinde ise kendi kartımdaki röleler için kullanıyordum.
Diğer bloklarda = ")" şeklinde ise kendi programım içindi temizlemedim koddan isteyen ihtiyaç duyduğu yerleri alıp kullanabilir.
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

frederic

Merhaba, bu stack ile yapılmış bir projede, ip numarası unutulmuş bir karta bağlanıp ona yeni bir ip tanımlaması işlemi nasıl yapılabilir acaba?

gokhangokcen

İp numarası unutulmuş bir karta yapılabilecek bir durum yok hocam anca ip scanner tarzındaki programlar ile isim üstünden ip yi öğrenip o şekilde müdahale edilebilir
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

frederic

Aslında en önemli şey işin bu kısmı, bunun bir şekilde çözümü olmalı. Mesela s71200  siemens plc ethernet portundan bağlanırken iso adlı bir protokol ile bağlanıp ip nosunu gösterebiliyor.

gokhangokcen

Tedbir olarak yazılımsal bir kaç şey yapılabilir örneğin açıldığında ilk anda ip ve mac bilgilerini seriporttan gönder gibi şeyler..
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

MCansız

Alıntı yapılan: gokhangokcen - 02 Kasım 2015, 10:32:43
İp numarası unutulmuş bir karta yapılabilecek bir durum yok hocam anca ip scanner tarzındaki programlar ile isim üstünden ip yi öğrenip o şekilde müdahale edilebilir

Lcd ekran takın ip yi gösterin hatta menü konulup ip adresi değiştire bilirsiniz

frederic

Bu söylediklerimiz dolaylı çözümler, ürüne seri port takmak, ekran takmak vs. seri üretim aşamasında büyük dezavantaj. ISO protokolünü incelemeye başladım şu an itibari ile, bu sorunu yazılım aracılığı ile çözmemiz gerekli ve bunu sadece ethernet portu üzerinden yapacağız. Kolaya kaçmak yok!

cehennem

Arkadaşlar enc28j60 ile web server olarak çalıştırdım web sayfasına textbox kutusu ekleyip veri göndermek istiyorum veri gönderimini başarırsamda ip port ve mac adresi gibi değerleri değiştirmek için kullanacam web sayfasından karta veri nasıl yollayabilirim bilen biri varmı

iyildirim

web sayfasında HTTP POST metodunu kullanın.
MCU tarafında da Post edilen bilginin yorumlanması gerekir.


emre salman

#189
ben ip adresi ve port numarası için reset butonu yaptım sizde öyle yapabilirsiniz bence

mesaj birleştirme:: 24 Nisan 2016, 06:05:15

merhaba ben html sayfalarını eeproma yazdırmak istiyorum ama bir türlü beceremedim XEEEndRead(); tanımlı değil diyor sürekli yardım edebilecek birileri varmı html sayfalarım rom hafızasına sığmıyor pic olarak 18f97j60 kullanıyorum

mesaj birleştirme:: 23 Nisan 2016, 16:27:24

#define MPFS_USE_EEPROM tcpipconfig.h içersinde tanımlıyorum

bunlarıda hardwareProfile.h içersinde tanımlıyorum

#define EEPROM_CS_IO         (LATBbits.LATB4)
#define EEPROM_SPI_IF        (PIR1bits.SSPIF)
#define EEPROM_SSPBUF        (SSPBUF)
#define EEPROM_SPICON1       (SSPCON1)
#define EEPROM_SPISTAT       (SSPSTAT)
#define EEPROM_SPISTATbits   (SSPSTATbits)
#define EEPROM_SPICON1_CFG   (0x20)
#define EEPROM_SPISTAT_CFG   (0x40)
#define EEPROM_CS_TRIS        LATBbits.LATB5

ama nerde yanlış yapıyorum bir türlü derlemiyor eeproma değil program hafızasına yazdığımda şakır şakır çalışıyor ister çok port açma olsun ister html sayfalarından get ve post mesajları olsun hiç bir problem yok
çok kapsamlı bir projenin sonuna geldim ama bunu bir türlü çözemedim rom hafızası %94 e geldi ve devam edebilmek için yer açmam lazım bunuda eeproma yazarak yapabilirim diye düşündüm ama bir türlü olmadı yardım edebilecek birileri varmı acaba

biomed12

#190
..

biomed12

Alıntı yapılan: cehennem - 04 Şubat 2015, 16:13:09
kardes bilgisayarın ag baglantilarindan ip degistirdiysen veya dns ayari yaptiysan daha once o menuye girecen yada saatin yanında internet baglantisini goteren simge vardir ona sag tusla falan ag ve paylasim merkezini acip ag bagtastirini goster gibi bi secenek var sol ust kosede ona tiklayacan microsoft lu bi bagdastirici olmadi lazim ona ip verecen

Hocam konu hortlayacak ama simulasyonda göremiyorum tüm hersey hazır simulasyona bakabilir misiniz rica etsem yada adımları biraz acar mısınız? komponentleri alacagım bunu yaptıktan sonra

ismail kaya

@gokhangokcen hocam 18f66j60'la ilk sayfadaki gibi deneme yaptım. Server olarak ayarladım ip alıyor fakat cihaz ip'sine bağlandığımda HTTP500 alıyorum(Muhtemelen web sayfalarını işlemciye atmıyor.). Acaba MPFS.exe ve makempfsimg.bat dosyaları çalışmıyor mu? Bunları çalıştırdığımızda ekranda bir şey olması gerekiyor mu?

ismail kaya


ta7azm

#194
Merhaba,

Devreyi breadboard üzerine kurdum ve PIC in içinde oluşturduğum web sayfasına erişebiliyorum.
Web sayfasındaki bir butona bastığımda PIC in bir çıkışı high ardından low oluyor.
Sorunum şu; butona basmasam da arada sırada kendi kendine çıkışlarda high low görüyorum.
Nedeni ne olabilir?

ping -t ile durumu değerlendirmek istediğimde gördüm ki arada sırada PIC den yanıt alamıyorum. Bağlantı tekrar sağlandığında PIC 'in çıkışlarında bahsettiğim high low oluşuyor.
Yorumlarınızı bekliyorum.