Ir para conteúdo

POWERED BY:

Arquivado

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

batatinha66

Programando PIC12f675 - Problema

Recommended Posts

fala ae galera

to iniciando programação de micro controladores, e to com alguns probleminhas, se alguem puder ajudar agradeço:

1:

eu compilo meu código, sem erro nenhum... mas ao executar no proteus recebo a mensagem:

"Effect of writing OSCCAL register not modelled"

 

2:

meu projeto tem como ideia, se R1(LDR 1) for maior q R2(LDR 2), ele gira o motor 1, e vice-versa

mas o motor 1 só está rodando se o ldr 1 for igual o ldr2, para qualquer outro valor o motor 2 é quem gira.

alguem pode me ajudar?

 

código:

#include <12F675.h>


#FUSES NOWDT                    //No Watch Dog Timer
#FUSES INTRC_IO                 //Crystal osc <= 4mhz
#FUSES NOCPD                    //No EE protection
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOMCLR                   //Master Clear pin used for I/O
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOBROWNOUT               //No brownout reset
#FUSES BANDGAP_HIGH          
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_A5,rcv=PIN_A4,bits=8)

float ldr_1, ldr_2;

void main()
{
   setup_adc_ports(sAN0|sAN1|VSS_VDD);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);   
   setup_adc(ADC_CLOCK_DIV_64);
   // TODO: USER CODE!!
   while (TRUE)
   {
   set_adc_channel(0);
   delay_ms(1);
   ldr_1 = read_adc();
   ldr_1 = (int8)ldr_1;
   set_adc_channel(1);
   delay_ms(1);
   ldr_2 = read_adc();
   ldr_2 = (int8)ldr_2;
   if(ldr_2 == ldr_1){
   output_high(pin_a2);
   output_high(pin_a5);
   delay_ms (1000);
   output_low (pin_a2);
   output_low (pin_a5);
   }
   else{
   if(ldr_2 < ldr_1){
   output_high (pin_a2);
   delay_ms (1000);
   output_low (pin_a2);
   }
   if(ldr_1 < ldr_2){
   output_high (pin_a5);
   delay_ms (1000);
   output_low (pin_a5);
   }
   }
   }
   // TODO: USER CODE!!

}

projeto no proteus:

Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom sobre o primeiro erro, eu não faço ideia, agora esse segundo ai tem q ter algum erro lógico...

imprima os valores de ldr_1 e ldr_2 antes de entrar nos if's para ver se esta vindo corretamente..

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

pois eh esse eh o problema... estão vindo completamente incorretos, não faço ideia do porque, no proteus os valores estão certos, parece que o erro está na hora da conversão A/D... mas n faço ideia do pq...

=/

se alguem puder me ajudar agradeço xD

vlwws

 

num to conseguindo editar o post anterior mas td bem

 

consegui resolveer... o problema era q o ldr não dava uma diferença minima para a conversão pegar, como eu estava usando em 8bits, dava Vref(3v)/256, aprox 0,11, e a variação do ldr era da ordem de milésimos...agora passei pra 10bits, mas mesmo assim acho q vo ter q usar um amplificador =/

 

e em relação ao 1 nada até agora, mas ta dando pra simular na boa :P

 

 

é isso

vlwww pela ajuda aew :D

abrass

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.