Standalone AVR Programmer

Alle vragen m.b.t digitale schakelingen m.b.v. losse i.c's
en oplossingen m.b.v. PIC processoren.
Plaats reactie
tveen323
Berichten: 5
Lid geworden op: di 10 nov 2009, 15:22
Locatie: Nijkerk. .

Standalone AVR Programmer

Bericht door tveen323 »

Goedemorgen,

Ik ben al een tijdje bezig met het ontwerpen van een Standalone Programmer voor AVR. Tot dusver is alles in kannen en kruiken, echter loopt het programeren van een "target board" spaak.

Ik maak gebruik van een ATMega328 op 20MhZ als hart van de programmer. Een 24LS256 als geheugen, en een FT232RL om de communicatie met de pc op te zetten.

Het SPI Protocol naar het "target board" werkt uitstekend, ik dan erasen, sig. bytes uitlezen, etc.

Communiceren met de pc werkt ook, ik kan een programma overzetten naar de 24LS256.

Tijdens het programeren van het "target board" gaat het na 3 pages mis, dan klopt er niks meer van de data! Hieronder een paar routines die het programeren verzorgen!

Het flashen van target.

Code: Selecteer alles

 
    while (adres < 15329) {
	flash_adres = adres / 2;				
	for (cnt = 0; cnt <pagesize>> 8) & 0xFF);	
	    spi_mastertransmit_nr(avr_adres & 0xFF);		
	    spi_mastertransmit_nr(ReadMem(adres));
	    adres++;						
	    spi_mastertransmit_nr(0x48);			
	    spi_mastertransmit_nr((avr_adres >> 8) & 0xFF);	
	    spi_mastertransmit_nr(avr_adres & 0xFF);		
	    spi_mastertransmit_nr(ReadMem(adres));
	    adres++;										// Volgend SRAM-adres
	}
		spi_mastertransmit_nr(0x4C);				// Program flash
		spi_mastertransmit_nr((flash_adres >> 8) & 0xFF);	// Adres-H
		spi_mastertransmit_nr(flash_adres & 0xFF);		// Adres-L
		spi_mastertransmit_nr(0);
		delay_ms(5);						// Wachten tot het flashen afgelopen is
    }




Routine voor het schrijven naar eeprom vanaf pc:

Code: Selecteer alles

 
	for (i=0; i<15329; i++) {
		byte = uart_getchar();
		WriteMem(byte,i);
		_delay_ms(5);
	}

Weet iemand hier raad mee, of iemand die mij een stapje verder kan helpen??

Groet,
Thomas
Plaats reactie