Mais dúvidas...

Software e Hardware para uC PSoC

Moderadores: andre_luis, 51

Mais dúvidas...

Mensagempor btpavao » 24 Jan 2010 18:18

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.
btpavao
Bit
 
Mensagens: 37
Registrado em: 18 Set 2009 13:46

Mensagempor fabim » 24 Jan 2010 18:47

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
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!!!?

Re: Mais dúvidas...

Mensagempor Djalma Toledo Rodrigues » 25 Jan 2010 09:42

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


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

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

Mensagempor btpavao » 26 Jan 2010 12:51

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
btpavao
Bit
 
Mensagens: 37
Registrado em: 18 Set 2009 13:46

Mensagempor Ricardo_Franco » 27 Jan 2010 08:05

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.
Ricardo Franco
____________________________________________________________________________________________
web: www.engricardofranco.kit.net
Skype: engricardofranco
Fone Skype: (19) 3119-8162
Ricardo_Franco
Byte
 
Mensagens: 305
Registrado em: 11 Out 2006 20:53
Localização: Campinas - SP

Mensagempor btpavao » 28 Jan 2010 07:30

Ricardo,

Muito obrigado pelo material disponibilizado!!!
btpavao
Bit
 
Mensagens: 37
Registrado em: 18 Set 2009 13:46

Mensagempor Djalma Toledo Rodrigues » 28 Jan 2010 08:49

O que diz dizer com "Cei" é que não ficará aí nessa primeira dúvida

muitas outras virão.

Podes crer!


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

Mensagempor Ricardo_Franco » 28 Jan 2010 11:19

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
Ricardo Franco
____________________________________________________________________________________________
web: www.engricardofranco.kit.net
Skype: engricardofranco
Fone Skype: (19) 3119-8162
Ricardo_Franco
Byte
 
Mensagens: 305
Registrado em: 11 Out 2006 20:53
Localização: Campinas - SP


Voltar para Cypress

Quem está online

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

cron

x