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

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:
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.
AT+
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+