ENC28J60

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

ENC28J60

Mensagempor fabim » 22 Set 2009 14:21

Alguém aqui, sem mentiras eim!!
Ja mecheu com esse cara, e sabia o que estava fazendo ?
Estou falando de saber mesmo, nada de pegar um projeto do zédasquantas, e mudar o HTML ou etc.

1° a pilha micoship´s é uma droga de bagunçada.
2° os apps são uma mercadoria
3° os exemplos são inuteis
AFF credo

fiz uma conversão e adaptação de drive para falar com o enc, mais haja saco pra conseguir entender esse tal de TCP a fundo...

cruizcredo
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor Francesco » 22 Set 2009 16:31

Um colega aqui no serviço utilizou um PIC18 com ethernet integrado, e reclamou bastante. Mas no final, funcionou.
Avatar do usuário
Francesco
Word
 
Mensagens: 699
Registrado em: 04 Mar 2008 00:22
Localização: São Paulo - SP

Mensagempor fabim » 22 Set 2009 16:32

Francesco escreveu:Um colega aqui no serviço utilizou um PIC18 com ethernet integrado, e reclamou bastante. Mas no final, funcionou.


ENC28J60... ta vendo ja mentiu !!!

To falando,,,
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor fabim » 22 Set 2009 17:21

static void (*client_browser_callback)(unsigned short,unsigned int);

comé o negócio aí ?

seguinte, se o pessoal me ajudar, eu acabo a conversão da liby e no puro e lindo ANSI C, para qualquer porqueira de compilador.

Quem topa ?
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor tcpipchip » 22 Set 2009 18:02

é um ponteiro para funcao...inclusive a função nao retorna valor...
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor fabim » 23 Set 2009 08:14

poisé TCP, isso eu ja sabia.
Só que o compilador que eu estou usando ta correndo destes comandos!!rsrs

porexempru

Código: Selecionar todos
 static char  *client_postval;
 char strbuf[5];
  itoa(strlen(client_postval),strbuf,10);
 


eu nunca vi este comandado, estou aqui grogrando e achei n explicações para a mesma coisa, só que não consegui ententer.

C sabe me dizer o que o comando faz ? o respo eu me viro!!

Abraços

Fabim
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor Rodrigo_P_A » 23 Set 2009 08:35

fabim escreveu:poisé TCP, isso eu ja sabia.
Só que o compilador que eu estou usando ta correndo destes comandos!!rsrs

porexempru

Código: Selecionar todos
 static char  *client_postval;
 char strbuf[5];
  itoa(strlen(client_postval),strbuf,10);
 


eu nunca vi este comandado, estou aqui grogrando e achei n explicações para a mesma coisa, só que não consegui ententer.

C sabe me dizer o que o comando faz ? o respo eu me viro!!

Abraços

Fabim



pega o tamanho da string client_postval, e transforma em string , a string é retornada em strbuf, e o 10 indica a base decimal, ou seja, se o tamanho de client_postval for 3 , vc terá em strbuf="3" ou strbuf[0]='3' e strbuf[1]=0 pois string sempre termina em zero

se ao invés do 10 tivesse 16, ele retornaria uma string hexadecimal: strbuf="0x03" por exemplo.
---
Avatar do usuário
Rodrigo_P_A
Dword
 
Mensagens: 2237
Registrado em: 12 Out 2006 18:27
Localização: Osasco - S.P - Brasil

Mensagempor Jorge_Francisco » 23 Set 2009 10:34

itoa=inteiro para argumento. atoi=argumento para inteiro.atof=argumento para float.
Avatar do usuário
Jorge_Francisco
Dword
 
Mensagens: 1009
Registrado em: 12 Out 2006 09:53
Localização: Rio de Janeiro

Mensagempor tcpipchip » 23 Set 2009 13:24

char strbuf[5];
itoa(strlen(client_postval),strbuf,10);

Pelo que entendi, pega o tamanho da string apontada por client_postval (até encontrar NULL) e transforma e joga em ASCII jogando no endereço apontado por strbuf (vector) com NULL no final e 10 é a base.
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor fabim » 23 Set 2009 13:36

tcpipchip escreveu:char strbuf[5];
itoa(strlen(client_postval),strbuf,10);

Pelo que entendi, pega o tamanho da string apontada por client_postval (até encontrar NULL) e transforma e joga em ASCII jogando no endereço apontado por strbuf (vector) com NULL no final e 10 é a base.


ferrado por ferrado..rs

Código: Selecionar todos
 char letras[]="eu fui e voce";
  char resu[6];

char * B16toChar(unsigned int i, char *buf)
{
  char *p;
  p = buf + 5;
  *p = 0;

  if (i < 0)
    {
      do
        *p-- = '0' - i % 10;
      while ((i /= 10) != 0);

      *p-- = '-';
    }
  else
    {
      do
        *--p = '0' + i % 10;
      while ((i /= 10) != 0);
    }

  return p;
}

void pegahex(unsigned short *intvar, char *arraybytes){
 unsigned short num = 2, temp=0;

 arraybytes =  arraybytes + 6;
 *arraybytes = '\0';
 arraybytes--;
 while(num){
 
 temp = *intvar;
 temp &= 0x0f;
 if(temp<=9)
   temp = temp + '0';
    else
   temp = temp + ('A'-10);
 *arraybytes = temp;
 arraybytes--;
 temp = *intvar;
 temp = (temp >> 4) & 0x0f;
 if(temp<=9)
   temp = temp + '0';
   else
   temp = temp + ('A'-10);
 *arraybytes = temp;
 arraybytes--;
 intvar++;
 num--;
 }
 
}


 unsigned int STRLENGTOHEX(char *a, char *buffer, short radix){
  unsigned int tamanho=0;
  char temp[6];

  while(*a){ //descobre tamanho string até '\0'
  a++;
  tamanho++;
  }
 
  switch(radix){//print decimal ou hex
  case 10:
  B16toChar(tamanho, &temp);
  break;
 
  case 16:
  pegahex(tamanho, &temp);
  break;
  }
 
  }

void main() {

 while(1){
 STRLENGTOHEX(letras,resu,16);

 }

}
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor msamsoniuk » 23 Set 2009 22:32

eu tinha esses caras guardados aqui em algum lugar, teoricamente convertem inteiro para string e vive-versa com *qualquer* base entre 2 e 16:

Código: Selecionar todos
char *itostr(unsigned int i, char base)
{
  const char  *hex = "0123456789abcdef";
  static char tmp[sizeof(int)*8+1];
  char   j,k;

  tmp[j = sizeof(int)*8]=0;
  if(i)
    for (k=0; i; i=i/base, k++)
      tmp[--j] = hex[i%base];
  else
  {
    tmp[--j] = '0';
    k=1;
  }
  while(j&1)
    tmp[--j] = '0';

  return tmp + j;
}

unsigned int strtoi(char *p,char base)
{
  const char  *hex = "0123456789abcdef";
  unsigned int   i,j;
 
  for(i=0;*p;p++)
  {
    i=i*base;
    for(j=0;j!=base;j++)
      if(hex[j]==*p)
        i+=j;
  }   
  return i; 
}


obviamente itostr() retorna um ponteiro static, quer dizer, se vc chamar 2x seguidas, ele retorna o mesmo ponteiro, portanto quando vc chama uma vez, vc tem q copiar ou usar o resultado antes de chamar outra vez. isso eh assim pq essas funcoes sao para usar com printf(), que computa e usa no instante.

tem q dar uma guaribada se for tratar valores sinalizados tb... nao sei como trataria, sei lah -0xffff ? hehehe
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor buiz » 24 Set 2009 11:46

Perdi algumas horas de sono com este cara, peguei um exemplo pronto e alterei detalhes, funcionou precariamente, mas nunca mais voltei a mexer com este cara, até que tentei, mas vi que o buraco da caçapa é mais longe do que eu imaginava.

E como até hoje tudo o que eu fiz explorei ao máximo dominar e entender o funcionamento, posso dizer que este tal de ENC28J60 me deu uma surra, hehehe!

Fiz um video de tão feliz que fiquei quando consegui fazer um led acender via Internet:

http://www.youtube.com/watch?v=VFQVfw_0hKk

Estou disposto a trocar umas ideias por aqui, para ver se conseguimos algum material em "C" para este cara.

Abraços a todos.
Avatar do usuário
buiz
Byte
 
Mensagens: 165
Registrado em: 20 Out 2006 14:59
Localização: Cachoeira do Sul - RS

Mensagempor fabim » 24 Set 2009 12:19

aÊÊÊÊÊ, um cabra macho da peste"!!!!

Mão na roda tio. ja vamos colocar as mãos !!

De o startup, upa o source se puder, e digame quais os problemas..

Proveitar e passar para o ANSI C purim, sem frescuras..

Abraços

mimi !!
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor KILB » 24 Set 2009 16:45

VENDO BRASILIA 78 - AZUL CALCINHA - RODA GAIUCHA, PNEU TALA LARGA E TOCA FITA RODSTAR, TRATAR NO BUTECO
KILB
Byte
 
Mensagens: 103
Registrado em: 17 Fev 2007 21:52

Mensagempor Alexandro » 16 Dez 2009 16:43

E ai Fabim, como ta a lib do ENC28j60 ? Eu peguei pra ANSIar pro compiler CCS e fiz umas modificaçoes com meu pouco conhecimento em C, porem conheço os protocolos da pilha. Ja testei aki e funcionou o ping.... oooooh ja é um grande sucesso pra mim...rs. Só to com um probleminha de hardware no protoboard q ta me deixando louco! Só funciona em uma bateria, se eu colocar uma fonte chaveada (q é bastante estavel) ele fica resetando os chips, parece bruxaria, ja coloquei o osciloscopio e nao tem tanto spikes assim pra resetar...Ja pensei q era o cristal do ENC , mas ele é fundamenta tem 3 zeros depois do 25 (25.000Mhz). Ainda nao sei o q é, mas vou avançar pro HTML agora.
Tem alguma ideia ou novidade ?
Avatar do usuário
Alexandro
Byte
 
Mensagens: 436
Registrado em: 23 Out 2006 16:49
Localização: São José do Rio Preto - SP e Sao Paulo-SP

Próximo

Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x