Ajuda com matriz atmega8 e codevision

Software e Hardware para ATMEL

Moderadores: 51, guest2003, brasilma

Ajuda com matriz atmega8 e codevision

Mensagempor tmarchesi2 » 30 Jul 2007 00:39

Bom dia Pessoal;
Estou tentando gerar um software que tenha os seguintes detalhes:

Preciso gerar uma matriz de 2 colunas por 1000 linhas. mas pra que ?
Quero pegar o valor decimal do AD e correr a primeira coluna da matriz, o que seria o meu índice. Quando eu encontrar o mesmo valor eu carrego o valor da coluna ao lado pra minha variável e continuo o processo.

Outros detalhes:
No atmega8 eu tenho 8k de flash e 512 de sdram, pelos testes iniciais que fiz aqui, o compilador não aceitou tal valor para a matriz.
Qual seria o caminho ?
Qualquer coisa eu poderia gerar várias tabelas e alguns if ou switch para acessar os dados.

EX:
x = read_adc(4); leio AD
x = 75; vamos supor que o valor carregado pelo AD seja 75
col1 col2
50 55
70 80
75 90 <----- 75 encontrado carrega o valor ao lado 90
80 95
87 96
..... 2 COLUNAS X 1000 LINHAS OU VÁRIAS MINI-TABELAS
x = 90 x assume um novo valor
fim;

meu compilador é o codevision no momento.
Tudo isso é para calibrar um termopar tipo k, tentei polinomio mas não ficou legal. E desta forma eu consigo ajustar o erro em qualquer valor de temperatura.

Alguém poderia me ajudar a configurar isso, a declarar a matriz ou sugestões? Eu nunca trabalhei com matriz, uc e o codevision.

Grato a todos, obrigado
tmarchesi2
Nibble
 
Mensagens: 69
Registrado em: 23 Fev 2007 13:45

Mensagempor Maurício » 30 Jul 2007 01:55

Salve, tmarchesi2.

Uma matriz desse tamanho só dá pra ser alocada na flash. Nessa máquina não tem outro lugar pra alocar.

De qual tipo de dados é essa matriz? Se for de inteiros fica pesado pra máquina: vai ocupar 4KB, o que faz comer quase toda a memória de programa da máquina, já que, apesar de ter 8KB de flash, na prática vc só tem 4KB disponíveis pra código. Realmente, nessa máquina fica difícil. Só te sobram 2KB pro código, o que no seu caso acho que é pouco, em se tratando de linguagem C. Uma das soluções seria passar pro Mega16, ou então, guardar sua tabela numa E2PROM 24C32, por exemplo, ou então, em uma EPROM 27XXX, mas daí, seu hardware vai crescer muito pra acessar essa memória paralela.

Creio eu que a melhor solução, nesse caso, seria o uso de uma E2PROM serial externa.

Boa sorte.

[]'s
"Não leve a vida tão à sério, afinal, nenhum de nós sairá vivo, dela!"
Avatar do usuário
Maurício
Word
 
Mensagens: 678
Registrado em: 14 Out 2006 17:23
Localização: São Paulo - SP

Mensagempor RobL » 30 Jul 2007 09:08

Só para lembrar que em 4K word de programa os AVRs podem armazenar até 8K de constantes, sendo uma para cada byte. Os AVRs usam um atifício no qual cada word é dividida em 2 bytes um baixo e outro alto quando em tabelas.

Quando se armazena constantes o byte que carrega a instrução cede lugar para o dado (byte alto). Portanto em cada linha de programa pode-se armazenar 2 bytes. Um ATmega8 poderá armazenar até 8K bytes de constantes, ou uma tabela com até 8K bytes.
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Mensagempor RobL » 30 Jul 2007 19:35

Cabe mais um detalhe ao que coloquei.
Somente se a matriz for de elementos constantes. Uma vez em C, não sei como o compilador vai tratar essa matriz.
O que foi dito seria para uma matriz consntante 2 colunas por 1K linhas gastaria 1K word em assembler, tal como uma tabela com 2 elementos por linha (por word)
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Mensagempor tmarchesi2 » 31 Jul 2007 02:29

Bom dia Senhores;

Muito obrigado pelo esclarecimento, pelas respostas postadas acredito que a melhor alternativa será alterar a minha forma de calibrar o hardware ou implementar uma memória que no caso não seria viável para está aplicação. A tabela teria dados do tipo inteiro.
Mas pelos posts, sei que o caminho no qual eu queria partir já não é o ideal.
Muito obrigados a todos, preciso estudar mais esta parte de como alocar dados em memória, como isso é tradado.

Muito obridado a todos, se eu conseguir alguma alternativa eu posto aqui. Vou tentar rever os polinomios...rs

Grato
tmarchesi2
Nibble
 
Mensagens: 69
Registrado em: 23 Fev 2007 13:45


Voltar para AVR

Quem está online

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

x