Programa no 12f683 não funciona no 12f675

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Programa no 12f683 não funciona no 12f675

Mensagempor eloyfm » 23 Set 2014 20:33

boa noite. me desculpem pela ma escrita, mas consegui quebrar um dedo nesse fim de semana, meio dificil de esquerda.

estou com um problema de principiante, ma p mim é um problemao. fiz um programinha bemsimples e funciona maravilhoso, só que para o 12f683. hoje tentei botar um 675 porque nao achei 683 , mas nao funciona nem com reza.

ja no MPLAB, onde habilita ou desabilita o mcrl ele finciona pois vejo no osciloscopio, mas quando alimento peo circuito 5V, nao funcionan nada. Ja tentei botar um 10k no pino 4 MCLR , ja tirei e coloquei MCLR, NOMCLR.. e nada. Ai novamente. Se eu programo ele no MPLAB e vou la no icom para rodar o PIC, etao tudo blz.. ai vai o programa que funciona no 683.

INICIO

cpp code
#include <12f675.h>
#device adc=10
#use delay(clock=4000000)
#fuses nowdt,intrc_io,put,noprotect,brownout,nomclr

#use fast_io(a)
#define fonte PIN_A1 // define pin for LED
#define flash PIN_A4

int16 luz = 0;
int tempo =0;
int flash2 =1;

void init(void) // hardware initialization
{
output_low(fonte); // LED off on boot
output_low (flash);
set_tris_a(0x01); // gpio.0 input, rest outputs
// setup_oscillator(OSC_4MHZ); // set for 4MHz internal osc
setup_adc_ports(AN0_ANALOG); // a/d enabled on gpio.0
setup_adc(ADC_CLOCK_DIV_4); // a/d clock
setup_comparator(NC_NC_NC_NC); // disable comparator module
}
Void beacon ()
{
delay_ms(1300);
output_bit(FLASH,flash2);
delay_ms(185);
output_bit(FLAsh,0);
}





void main()
{
init(); // configure hardware

while(true) // continuous loop
{
set_adc_channel(0);// set a/d channel to gpio.0
delay_ms(100); // delay for acquisition
luz = read_adc(); // read a/d into ad variable



if(luz>470);
{
beacon();
}

if(luz>500)
{
output_high(fonte);

}



if(luz<470)

{
tempo++;
delay_ms(300);
if((luz<470) && (tempo >=2));
{
output_low(fonte);
tempo=0;
}

}
}
}


obrigadao...

Eloy.
Editado pela última vez por andre_luis em 24 Set 2014 13:38, em um total de 1 vez.
Razão: movido para um novo tópico
eloyfm
Bit
 
Mensagens: 37
Registrado em: 03 Jul 2014 14:29

Re: Como desabilitar o Master Clear doPic 12F675

Mensagempor ze » 24 Set 2014 10:33

vou chutar hein... verifique se o tris está correto. geralmente ele nasce como entrada. veja se está em release ou debug. tente deixar em release. outra...vá em configure, configutation bits, desligue configuration bits in data code e confira uma a um. Saidera... se estiver usando programador verifique se está carregando e ele está reconhecendo o tipo certo .hex. Verifique o conteúdo do buffer. Verifique o conteúdo dos fuses
agora me ocorreu o seguinte... vc não devia fazer algo como #include <12f683.h>? este deve ter registros-nomenclaturas diferentes, não? se sim espere alguma xiada do compilador
o phoda de quebrar o dedo e usar só esquerdo é ouvir a reclamação da miué de que não se sabe fazer as coisas 'direito'. puts fraquinha essa.
abç
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Re: Programa no 12f683 não funciona no 12f675

Mensagempor andre_luis » 24 Set 2014 15:45

Vou dar também um palpite indo por um caminho semelhante ao do Ze.

Acredito que o 12f675 deva ter algum registrador SFR a mais que o 12f683, e a falta de configuração inicial do mesmo pode estar causando o problema. Isso é comum por exemplo em outras famílias da Microchip, onde a reutilização de um programa escrito por exemplo no core 16f628 pode muitas vezes não funcionar no 16f876, pois um dos primeiros comandos necessários é a desabilitação das portas Analógicas, que por padrão estão ativas após o reset, mas não está presente nesse primeiro uC.
"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: Programa no 12f683 não funciona no 12f675

Mensagempor nagkiller » 26 Set 2014 22:57

Um dos grandes problemas ai é o #use delay!!!

Mude de clock para internal!!!

#use delay(internal=4000000) ou #use delay(internal=4MHz)

Código: Selecionar todos
#include <12f675.h>
#device adc=10
#use delay(internal=4000000)
#fuses NOWDT,INTRC_IO,PUT,NOPROTECT,BROWNOUT,NOMCLR

#use fast_io(a)
#define fonte PIN_A1               // define pin for LED
#define flash PIN_A4

int16 luz = 0;
int tempo =0;
int flash2 =1;

void init(void)                     // hardware initialization
{
   output_low(fonte);               // LED off on boot
   output_low (flash);
   set_tris_a(0x01);               // gpio.0 input, rest outputs
   //    setup_oscillator(OSC_4MHZ);   // set for 4MHz internal osc
   setup_adc_ports(AN0_ANALOG);         // a/d enabled on gpio.0
   setup_adc(ADC_CLOCK_DIV_4);         // a/d clock
   setup_comparator(NC_NC_NC_NC);      // disable comparator module
}
void beacon ()
{
   delay_ms(1300);
   output_bit(flash,flash2);
   delay_ms(185);
   output_bit(flash,0);
}
void main()
{
   init();                        // configure hardware
   while(true)                     // continuous loop
   {
      set_adc_channel(0);            // set a/d channel to gpio.0
      delay_ms(100);               // delay for acquisition
      luz = read_adc();               // read a/d into ad variable
      if(luz>470);
      {
         beacon();
      }
      if(luz>500)
      {
         output_high(fonte);
      }
      if(luz<470)
      {
         tempo++;
         delay_ms(300);
         if((luz<470) && (tempo >=2));
         {
            output_low(fonte);
            tempo=0;
         }
      }
   }
}


Além disso tem algo errado na sua lógica IF!!!

Flw...
Nagkiller
Avatar do usuário
nagkiller
Bit
 
Mensagens: 40
Registrado em: 21 Jul 2007 09:38


Voltar para PIC

Quem está online

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

x