Página 1 de 2
ENC28J60

Enviado:
22 Set 2009 14:21
por fabim
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

Enviado:
22 Set 2009 16:31
por Francesco
Um colega aqui no serviço utilizou um PIC18 com ethernet integrado, e reclamou bastante. Mas no final, funcionou.

Enviado:
22 Set 2009 16:32
por fabim
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,,,

Enviado:
22 Set 2009 17:21
por fabim
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 ?

Enviado:
22 Set 2009 18:02
por tcpipchip
é um ponteiro para funcao...inclusive a função nao retorna valor...

Enviado:
23 Set 2009 08:14
por fabim
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

Enviado:
23 Set 2009 08:35
por Rodrigo_P_A
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.

Enviado:
23 Set 2009 10:34
por Jorge_Francisco
itoa=inteiro para argumento. atoi=argumento para inteiro.atof=argumento para float.

Enviado:
23 Set 2009 13:24
por tcpipchip
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.

Enviado:
23 Set 2009 13:36
por fabim
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);
}
}

Enviado:
23 Set 2009 22:32
por msamsoniuk
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

Enviado:
24 Set 2009 11:46
por buiz
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.

Enviado:
24 Set 2009 12:19
por fabim
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 !!

Enviado:
24 Set 2009 16:45
por KILB

Enviado:
16 Dez 2009 16:43
por Alexandro
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 ?