Página 1 de 1

Mais dúvidas...

MensagemEnviado: 24 Jan 2010 18:18
por btpavao
Pessoal,

Comecei a programar em C, e já tenho um dúvida.

Criei uma variável na ROM (const char * variavel), na verdade um ponteiro pra ROM. Preciso pegar um dado recebido pela UART (char * dado) e jogar para a ROM. Só que dá o seguinte erro:
operands of = have illegal types `pointer to const char' and `pointer to char', aí pergunto como contornar esse problema???

No código tenho:

dado = UART_szGetRestOfParams();
variavel = dado;

Procurando no help do compilador C, achei a seguinte função:
cstrcpy
char *cstrcpy(char *dest, const char *src);
The function copies the string pointed to by src (including the terminating null character) into the array pointed to by dest. The function returns the value of dest

Porém ela é o oposto ao que eu quero!!!

Valeu.

MensagemEnviado: 24 Jan 2010 18:47
por fabim
bt.
Infelizmente, mesmo que fosse em ASM ou qualquer outra linguagem.
ROM = READ ONLY MEMORY.
Memoria só de leitura, e no caso de um uC em sua maioria = FLASH TYPE.
Ou seja, primeiramente é necessario saber se o microcontrolador aceita sua CPU gravar um novo dado na ROM. Segundo é que você precisa de uma rotina de gravação na ROM, terceiro é que ponteiro para uma posição da ram depende muito do que você precisa pode ser necessario gravar uma pagina e não somente 1 a 4 bytes pelo tipo de variavel.

Sendo assim , possivelmente você esta confundindo RAM com ROM.

Abraços

Re: Mais dúvidas...

MensagemEnviado: 25 Jan 2010 09:42
por Djalma Toledo Rodrigues
btpavao escreveu:... Comecei a programar em C, e já tenho um dúvida..


<-------------------------------->CEI rs

DJ

MensagemEnviado: 26 Jan 2010 12:51
por btpavao
fabim,
Valeu pela resposta!!!

Seguinte, imagina que tenho alguns parâmetros default gravados no PSoC, e o usuário pode alterar qqer um deles, qdo bem entender. Por outro lado, se o uC for desligado, os parâmetros devem permanecer. Pensando melhor, acredito que E2PROM resolva meu problema... certo?

Djalma,

Não entendi, mas tá valendo....


Valeu galera

MensagemEnviado: 27 Jan 2010 08:05
por Ricardo_Franco
Ola Senhores.
Caro btpavao, apenas para lembrar.

• Variaveis -> Espaço na memória que pode ser modificado (literalmente variável), deve ser usado em memória RAM.

• Constantes -> Espaço em memória que NÃO pode ser modificado (literalmente uma constante) deve ser usado em memporia ROM , ou FLASH.

Bom, quando você declara um espaço de memória como constante "const char * variável", o compilador aloca um espaço da memória flash (no exemplo acima apenas um byte) e armazena um valor, no momento que seu código é compilado. E não poderá mais ser alterado.

Para os casos específicos como parâmetros configuráveis, você deve usar uma E2PROM, que é uma memória não volátil que pode ser reconfigurada.

O PSoC não possui uma E2PROM real, mas ele pode reservar um espaço de sua memória flash (usado para programa), para gravar e desgravar dados.

Este procedimento é relativamente simples, pois existe um módulo que nos ajuda com isso (módulo EPROM), mas tome algum cuidado, pois a vida útil da flash é restrita a cerca de 50.000 gravações. Ou seja, um parâmetro como senha, não deve dar dor de cabeça, pois é difícil que alguém troque 50.000 vezes a senha, mas um “data Loguer” pode extrapolar isso em pouco tempo.

Para auxilia-lo estou disponibilizando um pequeno projeto que fiz para manipulação do módulo E2PROM.

Link do projeto (para PSoC Designer 3)
http://www.4shared.com/file/208711746/d ... 2PROM.html
Link do slide com alguma explicação

http://www.4shared.com/file/208713660/a ... PROM_.html

Bons estudos.

MensagemEnviado: 28 Jan 2010 07:30
por btpavao
Ricardo,

Muito obrigado pelo material disponibilizado!!!

MensagemEnviado: 28 Jan 2010 08:49
por Djalma Toledo Rodrigues
O que diz dizer com "Cei" é que não ficará aí nessa primeira dúvida

muitas outras virão.

Podes crer!


DJ

MensagemEnviado: 28 Jan 2010 11:19
por Ricardo_Franco
O que diz dizer com "Cei" é que não ficará aí nessa primeira dúvida

muitas outras virão.

Podes crer!


DJ

Puts grila agora caiu a ficha ... hehehe :lol:
É na verdade, quando começamos a estudar algo, o nivel de "ignorancia" é tão alto, que não temos nem condições de fazer as perguntas certas. Somente depois de algum contato, deixamos de ser "completos ignorantes" para então termos condições de "ter duvidas".

Acho que compliquei mais ainda hehehe :twisted:

Att