albi1989
24.02.2008, 14:48
Kann sich von euch jemand vorstellen warum man in einem Programm EEPROM schreib rechte abfragen sollte das eig nur Daten vom RAM ins Flash schreiben soll ?
hier mal ein auszug
floop1:
sbic IO_REG(EECR), EEPE // eeprom zugriffe?
rjmp floop1
;flash page immer erst löschen flash-adresse im x-register
ldi temp1, (1<<SELFPRGEN) | (1<<PGERS)
rcall flash_wait // warte bis fertig
;counter init
ldi temp2, (SPM_PAGESIZE/2)
// wir schreiben immer 2byte = 1word
;inhalt vom ram ins flash kopieren
flash_fill:
ld r0, Y+ // zwei byte aus dem ram holen
ld r1, Y+
ldi temp1, (1<<SELFPRGEN) // steuerbit
rcall flash_wait // warte
dec temp2 // zähler dekrementieren
breq floop2 // 0=fertig kopiert
adiw ZL, 2 // auf nächste adresse zeigen
rjmp flash_fill // und weiter
;flash-adresse zurückholen
Es handelt sich hierbei um einen Boot6loader für den ATmega168
MFG ALBI
hier mal ein auszug
floop1:
sbic IO_REG(EECR), EEPE // eeprom zugriffe?
rjmp floop1
;flash page immer erst löschen flash-adresse im x-register
ldi temp1, (1<<SELFPRGEN) | (1<<PGERS)
rcall flash_wait // warte bis fertig
;counter init
ldi temp2, (SPM_PAGESIZE/2)
// wir schreiben immer 2byte = 1word
;inhalt vom ram ins flash kopieren
flash_fill:
ld r0, Y+ // zwei byte aus dem ram holen
ld r1, Y+
ldi temp1, (1<<SELFPRGEN) // steuerbit
rcall flash_wait // warte
dec temp2 // zähler dekrementieren
breq floop2 // 0=fertig kopiert
adiw ZL, 2 // auf nächste adresse zeigen
rjmp flash_fill // und weiter
;flash-adresse zurückholen
Es handelt sich hierbei um einen Boot6loader für den ATmega168
MFG ALBI