Ir ao conteúdo

Problema INT32 CCS PIC


test man*~

Posts recomendados

Postado

Boa noite galera,

Alguém ai já teve problemas com comparação entre variáveis INT32 no CCS.

Estou transformando as horas de um dia en segundos, e mandando acionar uma saída entre um determinado periódo...

De vez enquando aciona e de vez enquando não lol.

Aguém tem alguma ideia.

Postado

Cara já não confio mais nas variáveis de 32 bits do PIC quando programado com CCS.

Primeiro Não consegui fazer o PIC enviar a variavel de 32 bits via serial, testei printf com %Lu %Ld %Lx %LX %x %X e nada mostrou valores corretos.

depois resolvi fazer um teste, fazer o PIC mandar via serial os 16MSB e depois os 16LSB da variável, e ele mandou números incopatíveis com o valor da variável.

Estava aqui quebrando a cabeça, resolvi usar INT16 (long int)...

quebrei o dia no meio <12hrs e >=12hrs e usei uma variável para indicar AM ou PM...

Fim os testes aqui e funcionou!

Você deu a dica de fazer o controle de temperatura do meu TCC usando PID, vamos seguir seu conselho HAuhUAhuHAuhUHAuAHuHA!!!!!!!

Vamos controlar umas coisas com controlador ON/OFF com histerese e a temperatura com PID. Terá um PIC mestre e um escravo que ficara dedicado para o PID, eles se comunicarão via I2C.

Postado

PID né? Então bora estudar um pouco de teoria de controle pra não fazer feio, a boa noticia é que dependendo da precisão que você demandar ja não vais precisar usar as variaveis INT32...(sinônimo de problemas).

Da uma olhadinha nesse application note da ATMEL, um controlador PID digital muito simples:

http://atmel.com/dyn/resources/prod_documents/doc2558.pdf

Abs.

Postado

Vou juntar o material que você postou com as fontes que já tenho aqui.

Vamos levantar a função de transferência da planta, fazer umas simulações no matlab e ver o que que vira.

Felipe olha que estranho, isso está correto?

Situação 1

unsigned long int resposta;

unsigned int teste1,teste2;

teste1=10;

teste2=60;

resposta=teste1*teste2;

Printf %lu>resposta o PIC envia 220!!! LOLL

Situação 2

unsigned long int resposta;

unsigned long int teste1,teste2;

teste1=10;

teste2=60;

resposta=teste1*teste2;

Printf %lu>resposta o PIC envia 600 Okz.

Muito estranho, comecei a fazer uns testes (na prática, circuito protótipo) ontem de madruga e me deparei com isso!

Postado

Eu ja sei o que e mano.

Como no CCS um int vale no maximo 255, ao fazer as operacoes com int voce estoura as variaveis por isso o printf manda errado.

Como os longs sao de 16bits (apenas no CCS) ai o valor cabe e o resultado é enviado corretamente, é normal isso ok?

Abs.

Postado

Certo, estou usando um PIC18F452 estava sendo usado 41% da memória dele, como estava sobrando muita memória resolvi deixar todas variáveis (referentes aos calculos onde os problemas apareceram) como INT16 ai os problemas desapareceram de uma vez por todas. Passou de 41% para 48%...

Valeu a experiência, deu para aprender com este problema.

Obrigado pela ajuda mestre Felipe.

Postado

@Felipe_eletronic conversei com um cara da minha turma que também estava com o mesmo problema supracitado.

Ele disse que é o seguinte, Quando se multiplica uma variávei no CCS ele considera que o resultado terá o tamanho da maior variável da multiplicação ex:


in16=int8*int8 considera que o resultado será um int8

Como você disse, na hora da multiplicação estoura os 8 bits, para resolver o problema deve-se forçar o novo tipo de variável.


int16=(int16)int8*int8;

No meu caso ficou assim:


horario_atual=(int32)hora*3600+(int32)minuto*60+segundo;

Desse jeito o PIC mostra o valor correto no hyperterminal... Voltei a confiar no CCS HAHHAA!

Show de bola! VALEU AI!

Postado

OFF.: confiar no CCS? Haaa jamais...

Abs.

Um dia vou ser igual a você cara, programar em 10 tipos de linguagens diferentes HEHE!!!! Ai caio fora do CCS!

Valeu ai Felipe! Até mais...

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!