Go Down

Topic: Dúvida:Código EEPROM (Read 647 times) previous topic - next topic

vasr

Tenho dúvidas em perceber o seguinte código.Este código referece a leitura e escrita de dados numa EEPROM.
Code: [Select]
#define WR_PNT_ADD 0x000
unsigned int Rd1(){
byte low=Read(RD_PNT_ADD);//Função que lé dados da EEPROM
byte hi=Read(RD_PNT_ADD+1);
return((hi<<8)+low);//Nao sei que isto faz, 1º dúvida
}

void Rd2(){
Write(RD_PNT_ADD,(byte) (pnt & 0x00FF));//Função escreve dados,2º dúvida
Write(RD_PNT_ADD+1,(byte (pnt>>8));//3ºdúvida
}


Desde já obrigado pela ajuda.

HugoPT

Quote
byte low=Read(RD_PNT_ADD);//Função que lé dados da EEPROM

Nao conheco a funçao Read() .Onde arranjaste esse codigo?
Quote

return((hi<<8)+low);//Nao sei que isto faz, 1º dúvida

A tua funçao devolte um int(2 bytes).Como tu queres retornar um int e leste byte a byte tens de os juntar.este << (operador) desloca para a esquerda 8 vezes o byte hi.Assim o resultado disso vai ser teres o hi byte e o lowbyte dentro do int retornado na funçao.
Em todo o caso olhando para as tua duvidas a seguir é semelhante mas o que prentendes fazer concretamente ?
Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B

vasr

Será que podias-me explicar melhor?

Esse código está incompleto.

Quando o meteste na IDE, ele compilou ou deu erros? Isto funciona? Ou não testaste ainda?

As tuas dúvidas são acerca de byte shift. Se procurares pelo termo na net é simples de perceber o que é. Basicamente estás a compôr uma variável de 16 bits com duas de 8 bits.
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

vasr

Podem-me dar um exemplo?Já fiz uma pesquisa mas ainda não consegui perceber.

http://social.msdn.microsoft.com/Forums/vstudio/en-US/0e2c882b-4bf4-4773-a7f0-233d8a6a2c15/byte-shifting

Vê a primeira resposta.

http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Flanguage%2Fref%2Fbitshe.htm

Se souberes tipos de dados e como os valores são guardados, isto é relativamente simples de compreender. Aliás, vai à calculadora do Windows, mete em modo programador.

Escreve 30000 e vais ver uma sequência de bits, correcto?

Essa sequência tem 2 bytes ou seja 16 bits. Ao fazeres byte shift estás efectivamente a passar os bytes para a direita ou esquerda.

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Code: [Select]


void setup() {
  Serial.begin(19200);
  unsigned int val_int = 1;
  for (unsigned char i=0; i<7; i++) {
     Serial.print("Shifting ");
     Serial.print(i);
     Serial.println("positions = ");
     Serial.println((val_int << i), BIN);
     Serial.println((val_int << i), DEC);
  }
}


void loop(){}

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Go Up