Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
11/01/06 19:30
Read: times


 
#127233 - re posting code
Responding to: ???'s previous message

/*************************************************************/
/* DIRECCION_PAGINA recieves page number as integer and returns an address pointer                                           */
/*************************************************************/
long direccion_pagina(int pagina)
{
	int page_address[MAX_PAGE_ADDRS];
	long address=0; 
	int i;
	
	/*inicializo el array PAGE_ADDRESS en 0*/
	for(i=0;i< MAX_PAGE_ADDRS;i++)
		page_address[i] = 0;
	
	i = 0;
	while (pagina>1)
	{
		page_address[i+8] = pagina%2;
		pagina = pagina/2;
		i++;	
	}
	page_address[i+8] = pagina;

    for (i=0;i<16;i++){
        address=address + power(2,i)*page_address[i];     
    }
    
	if (page_address[16] == 1)  
		a16 = 1;
	else
		a16 = 0;
	if (page_address[17] == 1)  
		a17 = 1;
	else
		a17 = 0;
	if (page_address[18] == 1) 
		a18 = 1;
	else
		a18 = 0;					
	return address;      
} 
/**************************************************************/
/* WRITE_FLASH_SECTOR copies the external RAM buffer to the Flash in the selected page                                    */
/**************************************************************/
void write_Flash_sector(char *s, int page_num)
{
	int i;
	char datos;	// datos: temp. byte in internal Ram 								
	char xdata *address_pointer;									
	long temp;
	
	EA = 0;
	CE_RAM=1;					

	temp = direccion_pagina(page_num);

	P10 = 0; 
	P11	= 0; 
	P12	= 0;

	//write 3 test bytes before writing buffer
	/*write 0xAA in address 0x05555 of FLASH	*/
	CE_FLASH=0;
	address_pointer = 0x5555;	 
	*address_pointer = 0xAA;
	CE_FLASH = 1;
	
	CE_FLASH=0;	
	/*write 0x55 in address 0x02AAA of FLASH	*/
	address_pointer = 0x2AAA;	 
	*address_pointer = 0x55;
	CE_FLASH = 1;

	CE_FLASH=0;
	/*write 0xA0 in addresss 0x05555 of FLASH	*/
	address_pointer = 0x5555;	 
	*address_pointer = 0xA0;
	CE_FLASH = 1;


	//Reads 1 byte of external Ram and writes it to Flash
        //till completing page
 	
 	
	address_pointer = (char*) temp;
	P10 = a16; 
	P11	= a17; 
	P12	= a18;

	i=0;
	while(i<=BUFFER_SIZE-1)
	{
		CE_RAM = 0;	   				
		datos = s[i];  						        CE_RAM = 1;	   						CE_FLASH = 0;  						        *address_pointer = datos;
		CE_FLASH = 1;						        i++;
		address_pointer++;
	}
	CE_RAM = 0;
	EA = 1;
	delayms(10); 		/*10 miliseg allow latch page*/	
}

/**************************************************************
READ_FLASH_SECTOR copies a sector from the 29C040 into the SRAM buffer
   *************************************************************/

void read_Flash_sector(char *s, int page_num)
{
	int i;
	char datos;		        // datos: temp Byte
	char xdata *address_pointer;										
	EA = 0;

	address_pointer = (char *) direccion_pagina(page_num);
	P10 = a16; 
	P11	= a17; 
	P12	= a18;	

   	
	
	i=0;
	CE_RAM = 1;
	while (i<MAX_msg_per_page*Msg_size)
	{
		CE_FLASH = 0;
 		datos = *address_pointer;
		CE_FLASH = 1;
		CE_RAM = 0;
	 	s[i]=datos;
		CE_RAM = 1; 
		address_pointer++;
		i++;
 	}

	for (i=MAX_msg_per_page*Msg_size;i<=BUFFER_SIZE-1;i++)
	{
	 	s[i]='\0';
 	}

	CE_RAM = 0;
	EA = 1;
}


<\pre>

List of 13 messages in thread
TopicAuthorDate
4Mb Flash 29C040            01/01/70 00:00      
   project description            01/01/70 00:00      
      which brand?            01/01/70 00:00      
         manufacturers datasheet link            01/01/70 00:00      
            neat chip            01/01/70 00:00      
               re posting code            01/01/70 00:00      
               newbie            01/01/70 00:00      
                  a few things            01/01/70 00:00      
                     bitwise operations            01/01/70 00:00      
                        where are you?, please add location to profile            01/01/70 00:00      
                           from Argentina            01/01/70 00:00      
   Code            01/01/70 00:00      
      trouble description            01/01/70 00:00      

Back to Subject List