Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Entre para seguir isso  
chacalgbi

[Resolvido] Out of Rom, A segment or the program is too large MAIN

Recommended Posts

Out of Rom, A segment or the program is too large MAIN.

Compilador PCWHD Compiler 4.078.

Olá, eu sei que essa mensagem acontece quando um segmento do programa fica muito grande.

Aconteceu isso no meu código, ai eu tirei uns dois DELAYS e ele compilou corretamente.

A minha dúvida é: Com meu código "quase" do tamanho total do segmento, ele pode ficar instável? Ou isso não tem nada a ver?

Pode acontecer dele travar ou funcionar incorretamente? Ou as variáveis criadas no compilador já reservam espaço para seu tamanho total?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poste, se possível o código que talvez alterando os tipos de variaveis o mesmo pode ficar ainda menor.

Falou

Compartilhar este post


Link para o post
Compartilhar em outros sites
A minha dúvida é: Com meu código "quase" do tamanho total do segmento, ele pode ficar instável? Ou isso não tem nada a ver?

Não ficará instavél,eu mesmo tenho códigos em ASM que preenchem totalmente a memoria de um 16F628A,deixando zero bytes sem uso.

Pode acontecer dele travar ou funcionar incorretamente? Ou as variáveis criadas no compilador já reservam espaço para seu tamanho total?

Isso vai depender de cada compilador,mas no geral,não reservam espaço.

Tenta fazer as rotinas fora do Main,de preferência deixar o Main por ultimo para o compilador tentar alocar espaço na memória.

voce pode tambem usar a diretiva #SEPARATE,antes das rotinas.

Cada segmento do pic é de 255 bytes,e isso equivale a 255 instruções ASM em sequencia,que é o que o compilador gera na verdade.

Editado por vtrx

Compartilhar este post


Link para o post
Compartilhar em outros sites
 

Vou testar aqui essa instrução #SEPERATE no CCS.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na é uma isntrução,é uma diretiva,cada vez que o compilador encontra uma,ele sabe que é para tentar gravar o código em partes não contíguas,mas não é 100%...

Compartilhar este post


Link para o post
Compartilhar em outros sites
 

Deu certo, coloquei a diretiva antes do VOID que eu achava que tava grande, acrescentei vários comandos que antes dava o problema e ele compilou beleza!:)

Outra coisa, durante uma interrupção externa, eu posso colocar um delay dentro dela?

Ex:


#int_EXT
void EXT_isr(void)
{
controle=250;
modo++;
delay_ms (300);
if (modo > 10 )
{
modo = 0;
}
}

Quando eu coloco o delay aparece o seguinte alerta ao compilar:

Interrupts disabled during call to prevent re-entrancy (@delay_ms1)

Como faço pra fazer a interrupção ser executada apenas 1 vez a cada clique? As vezes a variável incrementa 2 ou 3 vezes, a única saída que conheço é o delay. Tem outras?

Editado por Bcpetronzio
Inserir code

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poste a parte do código que usou esta diretiva...

È bom ir acostumando,programar para microcontroladores não envolver saber linguagem C,tem que conhecer a arquitetura do Micro e como o compilador irá gerar o código.

Apneas códigos curtos e simples não vão apresentar erros.

Editado por vtrx

Compartilhar este post


Link para o post
Compartilhar em outros sites
 
tb tive um problema parecido comentado no topico > http://forum.clubedohardware.com.br/limite-cases-switch/1102644

resolvi utilizar esse #SEPERATE, funcionou em cima do erro , mas teve a seguinte msg:

"error 7 ... invalid pre-processor directive"

e ai?

Qual compilador você usa? Eu usei no CCS e deu certo.

Outra coisa, coloque antes do VOID, se colocar no meio dele, dá erro!

Compartilhar este post


Link para o post
Compartilhar em outros sites

ola. para nao desvirtuar o topico do amigo, peço q se direcionem a esse topico

. la vou deixar o codigo assim como simulacao. peço p que testem p mim e deem opiniao, pois o trem nao ta funcionando legal .. Editado por cesarlg

Compartilhar este post


Link para o post
Compartilhar em outros sites
"error 7 ... invalid pre-processor directive"

Peço desculpas pelo meu erro de digitação...

A palavra reservada é :

 #SEPARATE  

Compartilhar este post


Link para o post
Compartilhar em outros sites
 
Peço desculpas pelo meu erro de digitação...

A palavra reservada é :

 #SEPARATE  

Rs... imaginei mesmo, testei como você postou, depois coloquei #SEPARATE e deu certo.

Pode fechar o tópico!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caso o autor do tópico necessite, o mesmo será reaberto, para isso deverá entrar em contato com a moderação solicitando o desbloqueio.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×