Página 1 de 1

WinAVR: Utilização de variaveis 'volatile' vs. 'static'

MensagemEnviado: 15 Jan 2017 10:17
por andre_luis
Olá pessoal,


Já utilizei diversos compiladores em toda minha sofrida existencia de programador de firmware, mas com nenhum deles enfrentei uma situação bizarra como essa; Algo que deveria ser trivial de resolver, mas não saio do mesmo lugar a 2 dias:

Tenho uma rotina, que deve atribuir o valor de uma variavel num array, sendo a parte do código que nao funciona de jeito nenhum:

Código: Selecionar todos
Frame[2] = SequentialNumber   // variavel global - ora declarada como 'volatile' ou não;
// OU
Frame[2] = Sequential // variavel local estática - testado ora com pre-atribuição de valor na declaração, ou na linha seguinte


Pra me certificar que o compilador não estaria decidindo algo por conta propria, removi qualquer outra referencia á essa variavel 'SequentialNumber"' de todo o resto do programa. Testei todas as combinações possiveis, incluindo os 5 tipos de 'otimização', do 0 ao 3 incluindo o 's', e nada.

Alguem já passou por algo semelhante, e/ou saberia de algum mecanismo para resolver isso ?
Acredito que pelo compilador ser 'muito bom', esteja fazendo algo trivial na linguagem, tipo fazendo o que deveria ser feito, mas eu não estou conseguindo enxergar porque raios uma simples utilização como a que já fiz em dezenas de outros códigos em outros compiladores, não funciona de jeito maneira aqui.

Nota: As demais atribuições nesse array Frame[n] são ou para constantes, ou para funções executadas inline, sendo que inclusive já tentei criar uma função GetValue() para utilizar o mesmo criterio que funcionou para os demais casos.


AT+

Re: WinAVR: Utilização de variaveis 'volatile' vs. 'static'

MensagemEnviado: 16 Jan 2017 08:35
por andre_luis
"RESOLVIDO"

Descobri que eu não precisaria reaprender tudo novamente, mas era apenas o bendito uC que está resetando, fazendo os conteudos anteriores se perderem.
Proximo passo agora, é descobrir o que está causando esse bendito reset.