Pessual, abri este tópico pq estou com algumas dificuldades em relação a utilização da Flash para armazenar epenas alguns Bytes, E como literaturas para programação dos HCs são muito poucas, vem até aqui recorrer a VCs...
Fiz algums pesquisas, e encontrei no livro do Fabio Pereira alguns detalhes, concegui apenas me achar dentro deste contexto, mas tudo muito superficial, e alguns detalhes la descritos estão em Assembler...
Segue abaixo...
Apagamento...
1.Configura os Bits ERASE=1 e MASS=0 no registrador FLCR. //FLCR=0b00000010; ok
2.Efetue a leitura do registrador FLBPR. O valor lido não sera nescessariamente utilizado. Este procedimento é nescessario somente para que o controlador da Flash permita a oporeção de apagamento. //??, como se faz isso em C ?
3.Escreva um valor qualquer num endereço da pagina de memória que deseja apagar. No exemplo, teriamos de escrever um valor qualquer em um endereço entre $EE00 e $EE3F.// ?? também não sei como escrever um valor em um determinado valor me memória...
4.Aguarde um tempo de 10us (Conforme o parametro Tnvs especificado pelo fabricante). //delay_us(10); ok..
5.Configure o bit HVEN=1 no registrador FLCR. //FLCR=0b00001010; ok..
6.Aguarde o tempo de apagamento desejado (Conforme o parametro Terase, entre 1 e 4 ms). //delay_ms(4); ok..
7.Configure o bit ERASE=0 no registrador FLCR. //FLCR=0b00001000; ok
8.Aguarde um tempo minimo de 10us (Conforme o parametro Tnvh especificado pelo fabricante). //delay_us(10); ok..
9.Configure o bit HVEN=0 no registrador FLCR, desativando a tensão de programação interna. //FLCR=0b00000000; ok..
10.Apos um tempo de 1us, a regiao de memória pode ser acessada novamente. //delay_us(1); ok..
Para Programação...
1.Configure o bit PGM=1 no registrador FLCR. //FLCR=0b00000001; ok..
2.Efetue a leitura do registrador FLBPR. Lembre-se de que para poder programar um bloco, ele não pode estar protegido contra gravação. // ??
3.Escreva um dado qualquer em alguma posição de memória do bloco escolhido. No exemplo, deveriamos escrever uma informação em qualquer endereço entre $EE00 e $EE1F. // ??
4.Aguarde por um tempo minimo de 10us (Parametro Tnvs). //delay_us(10); ok..
5.Configure o bit HVEN=1 no registrador FLCR. //FLCR=0b00001001; ok..
6.Aguarde um tempo minimo de 5us (parametro Tpgs). //delay_us(5); ok..
7.Escreva o primeiro dado no endereço inicial do bloco. no exemplo, seria realizada a escrita no endereço $EE00. // ??
8.Aguarde um tempo minimo de 30us (parametro Tprog). //delay_us(30); ok..
9.Ascreva o próximo dado no endereço seguinte da memória Flash. // ??
10.Aguarde um tempo minimo de 30us (Parametro Tprog). //delay_us(30); ok..
11.Repita os passos 9 e 10 até que todos os 32 bytes do boco tenham sido escritos. //...
12.Configure o bit PGM=0 no registrador FLCR. //FLCR=0b00001000; ok..
13.Aguarde um periodo de 5us (Parametro Tnvh). //delay_us(5); ok..
14.Configure o bit HVEN=0 no registrador FLCR. //FLCR=0b00000000; ok..
15.Apos um tempo tipicamente de 1us, a memória flash pode ser acessada normalmente. //delay_us(1); ok..`
Pessual, estas são as especificações mais uteis que encontrei no livro, quem puder me ajudar a decifrar este ??, eu agardeço de coração...
Valew, abraços...