comando, keil, não se meta.

Software e Hardware para linha ARM

Moderadores: 51, guest2003, Renie, gpenga

comando, keil, não se meta.

Mensagempor fabim » 10 Dez 2009 20:54

Alguem lembra, ou ja usou um comando.

Para que determinada variavel, quando eu inicializar o keil e colocar os valores nestas.
o kiel não se meta, e as utilize para outras coisas ?

Seria "Static ?"
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor barboza » 10 Dez 2009 21:57

Como é?
Cuma?

Você quer preservar uma variavel na inicialização?

Ou manter o valor de uma variavel local mesmo depois de sair da função? Neste caso é a static.
Os homens mentiriam muito menos se as mulheres fizessem menos perguntas.
Avatar do usuário
barboza
Word
 
Mensagens: 948
Registrado em: 17 Out 2006 13:42
Localização: Longe de onde gostaria de estar

Mensagempor Djalma Toledo Rodrigues » 10 Dez 2009 22:44

Oi Fabim

Seria Const ?

DJ
Editado pela última vez por Djalma Toledo Rodrigues em 10 Dez 2009 23:26, em um total de 3 vezes.
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor barboza » 10 Dez 2009 22:59

Djalma Toledo Rodrigues escreveu:Oi Fabim

Static é gravada na ROM (Flash) juntamente com o Programa Objeto,
mais estática que isso impossível . rs

DJ

PS.: Podi inté fartar lus . :D


DJ, acho que sua afirmação não é tão estatica assim.

http://www.answers.com/topic/static-variable

Se é gravado em ROM não é variavel......
Os homens mentiriam muito menos se as mulheres fizessem menos perguntas.
Avatar do usuário
barboza
Word
 
Mensagens: 948
Registrado em: 17 Out 2006 13:42
Localização: Longe de onde gostaria de estar

Mensagempor MarcusPonce » 10 Dez 2009 23:00

Se você definir uma variável dentro de uma função com "static" então o valor dela não se perde se você sair da função. Quando entrar novamente na função vai ver que o valor dela continua o último que foi colocado lá.

Se você definir uma variável com "const" aí pode ser que fique na memória flash, mas depende do compilador. Mas mesmo que fique na RAM, o compilador vai reclamar se o programa tentar alterar, desde que explicitamente, via ponteiro não reclama.

OBS: "volatile const" também existe: o compilador não pode alterar, mas ela pode mudar sozinha.
MarcusPonce
Byte
 
Mensagens: 166
Registrado em: 12 Fev 2007 13:58
Localização: Campinas - SP

Mensagempor Djalma Toledo Rodrigues » 10 Dez 2009 23:15

Retificação

A Const é que pode ficar gravada na ROM (flash)

Já foi Editado e Corrigido

Desculpem

Obrigado, Barboza e Marcos Ponce

DJ
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor fabim » 11 Dez 2009 07:28

Seria isto mesmo.

tenho uma include.H, que eu chamo no main.
A include.h, chama a processos .C.

Dentro da processos.C, existem 6 variaveis, sendo duas uint8, e duas uint16.

Ao inicializar o uC, eu leio uma eeprom e aloco os valores nestas variaveis.

Estas variaveis estão definidas como globais par o processosa.c;;;;

O que ocorre, é que na inicialização em debug vai tudo lindo, os valores são alocados e tudo mais.
O problema é que alguma das rotinas, o compilador deixou essas variaveis serem usadas no processo dessa maldita rotina!!

Bom obrigado, vou definir como static e ver que bixo dá!!

Obrigado guy´s!!

Fabim
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor barboza » 11 Dez 2009 07:33

Estava quase entendo, quando meu raciocínio se perdeu. Poderia explicar melhor?

Se a variável é global, é global, não faz sentido o static.
Os homens mentiriam muito menos se as mulheres fizessem menos perguntas.
Avatar do usuário
barboza
Word
 
Mensagens: 948
Registrado em: 17 Out 2006 13:42
Localização: Longe de onde gostaria de estar

Mensagempor fabim » 11 Dez 2009 07:36

discuta isto com o keil!!!kkkkkkkkkkk

poisé tu acredita ?

o keil de alguma forma, achou que essas variaveis são usadas só de vez em quando, e pegou o endereço delas pra outras coisas, pra poder economizar.

coloquei static., pronto. resolveu!!!kkkkkkkkkkkkk

Abraços velho !!!
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor barboza » 11 Dez 2009 07:56

static em variável global. só vc fabim.
Os homens mentiriam muito menos se as mulheres fizessem menos perguntas.
Avatar do usuário
barboza
Word
 
Mensagens: 948
Registrado em: 17 Out 2006 13:42
Localização: Longe de onde gostaria de estar

Mensagempor fabim » 11 Dez 2009 08:12

só o keil !!!

deve ter sido por causa da forma que eu criei o projeto !!

usando lógica mikroCezica...rsrs

Abraços e obrigado
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor tcpipchip » 11 Dez 2009 09:43

nice
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor MarcusPonce » 11 Dez 2009 12:14

Sugestão:
Se o projeto foi construído de uma forma que o Keil se enganou na alocação de memória e você teve que resolver colocando "static", quem garante que o Keil não alocou a memória de forma que quando uma interrupção acontecer vai sobreescrever uma outra variável ? Daí pode ser um bug difícil de achar pois dependerá do ponto do programa em que acontecer a interrupção...

Não seria melhor reorganizar o projeto de maneira que o Keil utilize a memória corretamente sozinho para evitar dores de cabeça futura ?

Se eu entendi a descrição, você deu um #include "xx.h" e dentro do xx.h existe um #include "yy.c". É isso ? E você colocou o yy.c no source group ? Se colocou então aparece naquela janela pequena que costuma ficar na esquerda e que contém todos os arquivos do projeto organizados.

Mas assim poderia aproveitar e não colocar o #include "yy.c"
Inserir um #include dentro de outro #include pode levar a problemas...
MarcusPonce
Byte
 
Mensagens: 166
Registrado em: 12 Fev 2007 13:58
Localização: Campinas - SP

Mensagempor fabim » 11 Dez 2009 22:44

MarcusPonce escreveu:Sugestão:
Se o projeto foi construído de uma forma que o Keil se enganou na alocação de memória e você teve que resolver colocando "static", quem garante que o Keil não alocou a memória de forma que quando uma interrupção acontecer vai sobreescrever uma outra variável ? Daí pode ser um bug difícil de achar pois dependerá do ponto do programa em que acontecer a interrupção...

Não seria melhor reorganizar o projeto de maneira que o Keil utilize a memória corretamente sozinho para evitar dores de cabeça futura ?

Se eu entendi a descrição, você deu um #include "xx.h" e dentro do xx.h existe um #include "yy.c". É isso ? E você colocou o yy.c no source group ? Se colocou então aparece naquela janela pequena que costuma ficar na esquerda e que contém todos os arquivos do projeto organizados.

Mas assim poderia aproveitar e não colocar o #include "yy.c"
Inserir um #include dentro de outro #include pode levar a problemas...


hehe, acabei de responder uma gracinha de um forista, e li aqui.
Tava com um bugzinho o qual eu achei que era a adaptação que fiz na biblioteca de lcd do RodrigoPA, fiz o q disse, e adivinha só ?
Cabou o problema...rsrsrs

Brigadão!!
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor Viktor » 12 Dez 2009 09:54

Static dentro da funcao preserva as variaveis com este atributo. Static para uma variavel declarada global torna a variavel global apenas para o modulo onde esta foi definida, ou seja, nao eh visivel externamente ao modulo
Viktor
Byte
 
Mensagens: 281
Registrado em: 12 Out 2006 11:33


Voltar para ARM

Quem está online

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

cron

x