Funções e rotinas com mikroc

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Re: Funções e rotinas com mikroc

Mensagempor EJO » 04 Set 2014 22:00

O que não funciona é o incremento do pwm. O resto está tudo ok...
EJO
Bit
 
Mensagens: 7
Registrado em: 11 Abr 2014 10:28

Re: Funções e rotinas com mikroc

Mensagempor ze » 05 Set 2014 11:16

ôh meu fi, iscuta o consei do preto véi. faça um teste simples como disse o amigo andré. veja 1 ex.
Código: Selecionar todos
void main (void)
{
unsigned char i=0;
//set hw
for(;;)
{
if (!RA0) {i++;while(!RA0);}
if (!RA1) {i--;while(!RA1);}
setduty(i); //confira se está com o tipo correto do argumento da função
}
}

com osciloscópio (óbvio) ou multimetro (em baixa freq ou com integrador rc) voce pode observar a variação da tensão.
não recomendo o uso de float em mc de 8 bits. de fato (2º eu mesmo),em 99% dos casos é 99% desnecessário

voce pode gravar a eeprom só quando desliga. imagine um capacitor meio grande 2200uF na entrada do 7805. pegue uma amostra desta v aplique no comparador do mc. caso ela caia, aciona uma interrupt que desliga tudo pra não consumir muito rápido a v do cap e grava a eeprom. pra melhorar ainda mais, que sua rotina só grave se o valor for diferente
abç
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Re: Funções e rotinas com mikroc

Mensagempor andre_luis » 05 Set 2014 15:25

Algumas observações, que podem ou não ser pertinentes:

  • No esquema que voce postou anteriormente, o pino C.7 parece estar sendo usado como TX, mas na função pwm() parece estar sendo lido como entrada.
  • Substitui o do { i = EEPROM_Read(0x00);//lê eeprom uma vez e++ ; } while(e!=1); por apenas i = EEPROM_Read(0x00)
  • RE0 parece ter função de entrada no programa, mas no esquema não tá conectado a lugar algum
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Funções e rotinas com mikroc

Mensagempor EJO » 10 Set 2014 14:08

O esquema foi alterado para esta aplicação andre. O problema está realmente na leitura da eeprom. Fiz utilizando apenas uma variável global e funcionou. Tentei fazendo da forma que está porque parecia que sempre lia novamente o valor da eeprom e não deixava acrescentar a variável, porém mesmo usando o Do while acontece desta forma. Outro problema é que precisava manter o valor da varável entre 0 e 255 e já tentei fazer isto com um For ( e outros) e não está dando certo. Sempre compila mas não funciona na simulação. Já estou pensando que novamente meu compilador apresenta problema. Sei lá...
EJO
Bit
 
Mensagens: 7
Registrado em: 11 Abr 2014 10:28

Re: Funções e rotinas com mikroc

Mensagempor Silvio51 » 14 Set 2014 17:21

Ze...não existe dificuldade alguma em um micro de 8 bits trabalhar com float...reveja seus conceitos...

A "dificuldade" seria do compilador e não do micro...lembrando que o MikroC é um excelente compilador (pelo menos eu acho).

Outra coisa é em relação aos 99% das vezes serem desnecessárias...permita-me discordar também! Na maioria dos casos é imprescindível, principalemte se você tem valores analógicos envolvidos (ou não) :D .
Silvio51
Byte
 
Mensagens: 383
Registrado em: 02 Nov 2006 14:04
Localização: Brasil

Re: Funções e rotinas com mikroc

Mensagempor ze » 15 Set 2014 07:53

ok. permita-me corrigir/complementar... float, 8 bits, mc com pouca flash=mistura explosiva. p.ex. pic16f676. Me lembro que no começo de carreira, uma divisão com float literalmente estourava sua capacidade (atualmente não sei se o mikroc otimizou o processo). Valores analógicos: mc´s com 10 bits de resolução de ad são + comuns. int é suficiente. apesar que float deixa a matemática mais "suave". dando uma olhada nuns projetos do passado, vi que já fiz isso. kk. Outra coisa: quando não é pra mostrar o valor analógico num display qualquer (até mesmo leds), é pra transmitir pra outro sistema (um computador p.ex.). Portando, sugiro deixar o 'trabalho pesado' pra ele. No entanto concordo que mc´s atuais tem + recursos. portanto=sim: conceito revisado

edit
só de ruim, resolvi testar. o resultado obviamente era óbvio
Código: Selecionar todos
main()
{
float a=12.3456,b=78.9012,c=0;
c=b/a;
GPIO=c; //só pra usar
//--------------------------------------------
   for (;;)
   {
   }
//--------------------------------------------
}
não estourou mas ocupou 32% da flash dum pic12f629.
e
Código: Selecionar todos
main()
{
unsigned int a=12345,b=65123,c=0;
c=b/a;
GPIO=c; //só pra usar
//--------------------------------------------
   for (;;)
   {
   }
//--------------------------------------------
}
8.7%
abç
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Anterior

Voltar para PIC

Quem está online

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

x