MikroC não aceita oscilador interno no 12F683

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

MikroC não aceita oscilador interno no 12F683

Mensagempor lpagano » 09 Jan 2009 22:37

Pessoal,

Estou fazendo um programa de teste que usa o 12F683 com oscilador interno.
Só que o que acontece é que o MikroC não compila se o oscilador for interno, no registrador OSCCON. Dêem uma olhada no código.

Código: Selecionar todos

void main ( )
{

     OSCCON = 0b01110111;                          // oscilador interno de 8MHz estável
     delay_ms(10);

     char num[5];
     

     TRISIO.F0 = 1;                                 
     TRISIO.F1 = 0;                                   
     TRISIO.F2 = 0;                                   
     TRISIO.F3 = 0;                                   

     GPIO = 0;

     while (1)
     {
     num[1] = 3;
     GPIO = num[1];
     delay_ms(500);

     num[3] = 2;
     GPIO = num[3];
     delay_ms(500);
     }

}



O que pode estar de errado? Já mexi nos fusíveis colocando em HS sem mexer no OSCCON compila numa boa, mas com fusível em INTOSCIO e setando o registrador OSCCON como feito acima dá pau geral!!!

Lembre que o programa acima foi só para teste e o MCLR está em OFF.

Valeu!
lpagano
Byte
 
Mensagens: 393
Registrado em: 06 Nov 2006 14:23

Mensagempor ffcprog » 09 Jan 2009 23:05

well.
Uma vez me deparei com algo parecido, fui nos includes e abri a definity do PIC12f629, o registrador que não me lembro o nome agora não estava definido.
Eu simplesmente peguei o datashit, vi o nome e endereço, defini o mesmo com nome e endereço, tibummmm, acabou o problema.
Tanto como a função Vdelay_ms(); no define que diz quais libys pode ou não utilizar, esta liby não estava definida, foi só fazer a inclusão e pimba também.

ffcprog
ffcprog
Byte
 
Mensagens: 145
Registrado em: 14 Fev 2007 23:16

Mensagempor lpagano » 10 Jan 2009 16:06

ffcprog,

Valeu a força, mas fiz o que você sugeriu e está tudo lá nas definições do 12F683.
Troquei somente o uC para um 12F675 com oscilador interno mas o que eu percebi agora é que ele está dando erro também na declaração de matriz para a variável num[5], no 12F675 e 683.
lpagano
Byte
 
Mensagens: 393
Registrado em: 06 Nov 2006 14:23

Mensagempor lpagano » 10 Jan 2009 21:33

O "causo" é o seguinte.

Resolvi o problema alterando o local onde o registrador OSCCON é informado no programa. Antes ele era o primeiro da função main a ser setado e depois as declarações das variáves.

Foi só declarar as variáveis primeiro e não teve mais erro.

O único probleminha agora é que preciso declarar uma variável como int (16 bits) e inserir bit a bit nela. Não aceitou. Tive que criar duas variáveis do tipo char (8 bits) e depois combinar elas.

Ela seria uma variável x qualquer de 16 bits ou seja, unsigned int x; e queria manipular os bits dela do seguinte modo:

Código: Selecionar todos


x.f0 = 1;
x.f1 = 0;
x.f2 = 0;
.
.
.
x.f7 = 1;



Até o x.f7 vai numa boa mas quando aparece o x.f8 aí dá erro.

Será que não dá mesmo para fazer isso ou existe algum artifício?


Valeu!
lpagano
Byte
 
Mensagens: 393
Registrado em: 06 Nov 2006 14:23

Mensagempor turuna » 13 Fev 2009 12:47

//Os F0.....a F7 é indicado somente para FSRs

uma estrutura é o ideal

Código: Selecionar todos
//BITS PARA CONTROLES GERAIS                                                 
 //EXEMPLO DE USO->  FLAGS.bit1 = 1; coloca em 1                               
  struct BIT{ //cria uma extrutura de bits para acesso individual             
    unsigned int bit1 :1;//
    unsigned int bit2 :1;//
    unsigned int bit3 :1;//
    unsigned int bit4 :1;//                                                   
    unsigned int bit5 :1;//                                                   
    unsigned int bit6 :1;//                                                   
    unsigned int bit7 :1;//                                                   
    unsigned int bit8 :1;//
    unsigned int bit9 :1;//pode ir até 16                                                   
  }FLAGS;//


Turuna
turuna
Nibble
 
Mensagens: 97
Registrado em: 10 Mar 2008 12:50

Mensagempor Djalma Toledo Rodrigues » 14 Fev 2009 12:45

turuna escreveu://Os F0.....a F7 é indicado somente para FSRs

uma estrutura é o ideal

Código: Selecionar todos
//BITS PARA CONTROLES GERAIS                                                 
 //EXEMPLO DE USO->  FLAGS.bit1 = 1; coloca em 1                               
  struct BIT{ //cria uma extrutura de bits para acesso individual             
    unsigned int bit0 :1;//
    unsigned int bit1 :1;//
    unsigned int bit2 :1;//
                                           
    unsigned int bit14 :1;//
    unsigned int bit15 :1;//
                                                 
  }FLAGS;//




Não fica assim mais 'elegante' e correto?
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor cassiolws » 25 Fev 2009 18:52

Uma duvida vc nao pode colocar um inteiro na struct FLAGS.

por exemplo:

FLAGS = 128; //

e depois manipular bit a bit de dentro da estrutura para uma variavel:

a.f0 = FLAGS.bit0;
...
a.f7 = FLAGS.bit7;
b.f0 = FLAGS.bit8;
...
b.f7= FLAGS.bit15;
eletronic´s 666 \m/
cassiolws
Bit
 
Mensagens: 26
Registrado em: 15 Jul 2008 00:42


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Google [Bot] e 1 visitante

cron

x