E2prom 877

Enviado:
13 Nov 2006 00:01
por zero
Pessoal alguem tem algum exemplo de como posso escrever na e2prom do 877 ?
To com um projeto de fazer um relogio de ponto, entao iria fazer a leitura no condigo de barras que gera um numero por exemplo 000000059 e quero armazenar isso na eprom . Para mais tarde TX ela para um software e gerar um arquivo texto . Sera que to no caminho certo ?
alguem pode ajudar ?
Re: E2prom 877

Enviado:
13 Nov 2006 09:20
por andre_luis
Se for no CCS, nao tem problema algum, segue uma rotina que uso abaixo:
- Código: Selecionar todos
void AcessaEEPROM ( unsigned int8 direcao )
{
unsigned int8 BufferMemoria = 0 ;
switch ( direcao )
{
case LEITURA :
while ( BufferMemoria < TamanhoString )
{
StringToDisplay[BufferMemoria] = read_EEPROM( BufferMemoria ) ;
delay_us( 1000 ) ;
BufferMemoria++ ;
}
break ;
case ESCRITA :
while ( BufferMemoria < TamanhoString )
{
write_eeprom ( BufferMemoria , StringToDisplay[BufferMemoria] ) ;
delay_us( 1000 ) ;
BufferMemoria++ ;
}
break ;
}
}
Esses dados sao escritos na EEPROM após recebidos pela serial.
+++

Enviado:
13 Nov 2006 09:47
por zielpunkt
Se for em assembly, segue exemplo básico de escrita e leitura contido no datasheet do 877A, no qual vc DEVE pesquisar outros detalhes do mcu:
Escreve:
BSF STATUS,RP1 ;
BSF STATUS,RP0
BTFSC EECON1,WR ;Wait for write to complete
GOTO $-1 ;
BCF STATUS, RP0 ;Bank 2
MOVF DATA_EE_ADDR,W ;Data Memory
MOVWF EEADR ;Address to write
MOVF DATA_EE_DATA,W ;Data Memory Value to write
MOVWF EEDATA ;
BSF STATUS,RP0 ;Bank 3
BCF EECON1,EEPGD ;Point to DATA memory
BSF EECON1,WREN ;Enable writes
BCF INTCON,GIE ;Disable INTs.
MOVLW 55h ;
MOVWF EECON2 ;Write 55h
MOVLW AAh ;
MOVWF EECON2 ;Write AAh
BSF EECON1,WR ;Set WR bit to begin write
BSF INTCON,GIE ;Enable INTs.
BCF EECON1,WREN ;Disable writes
Lê:
BSF STATUS,RP1 ;
BCF STATUS,RP0 ; Bank 2
MOVF DATA_EE_ADDR,W ; Data Memory
MOVWF EEADR ; Address to read
BSF STATUS,RP0 ; Bank 3
BCF EECON1,EEPGD ; Point to Data memory
BSF EECON1,RD ; EE Read
BCF STATUS,RP0 ; Bank 2
MOVF EEDATA,W ; W = EEDATA
Se quer partir para um projeto mais elaborado, seja em assembly ou C, recomendo que pesquise em livros (para os dois casos existem livros muito bons do colega do forum Fábio Pereira) ou mesmo na internet a fim de compreender melhor as possibilidades que o mcu oferece, senão vai ficar muito difícil pra vc, ok.

Enviado:
13 Nov 2006 10:41
por Cláudio
Bom, creio que a única coisa certa é que você vai precisar de uma E2PROM. O problema é que a E2Prom interna do PIC é muito pequena (256 bytes). Assim, caso seu cartão tenha apenas 1 byte ( que implicará em até 100 cartões não alfanuméricos, como no padrão 2 de 5, ou até 255 cartões no formato alfanumérico, no formato 39) você teria capacidade para até 256 eventos (pontos) na memória,o que é realmente muito pouco.
Isto sem contar outros eventos de memória que você terá que gerenciar, como ponteiros, e outros recursos (lista branca?).
Experimente pesquisar sobre memórias E2Prom seriais (24C256 ou 24C512 por exemplo, dependendo da capacidade que precisar)
Qualquer coisa, estamos aí!
Abraços.

Enviado:
13 Nov 2006 16:53
por Maurício
sem esquecer tb, que E2PROMs tem vida curta (1 milhão de gravações) e dependendo da aplicação, isso daí é atingido em dois palitos.
existe uma tecnologia de RAM não volátil (NVRAM) da Ramtron, chamada FRAM. experimenta isso daí, tb.
[]'s
RETI.