Programmierinformationen zum Atmega2560
Auslesen des Atmega2560 mit dem mySmartUSBMK3:
avrdude -p m2560 -c stk500v2 -P /dev/ttyUSB0 -v
avrdude -p m2560 -c stk500v2 -P /dev/ttyUSB0 -U flash:r:flash.hex:i
avrdude -p m2560 -c stk500v2 -P /dev/ttyUSB0 -U eeprom:r:eeprom.hex:i
Statt flash oder eeprom, geht auch noch lfuse, hfuse, efuse und signature.
Fuse-Bits: (Zusammenfassung und Beispiele)
efuse: unterste 3 Bits ist BODLEVEL (Schwelle fuer Brown-out Detector), auf 0xFF lassen.
hfuse OCDEN JTAGEN SPIEN WDTON EESAVE BOOTSZ1/SZ0 BOOTRST
default: 1 0 0 1 1 0 0 1 = 0x99
normal: 1 1 0 1 1 1 0 1 = 0xDD
Bootloader: 1 1 0 1 1 1 0 0 = 0xDC
lfuse CKDIV8 CKOUT SUT1 SUT0 CKSEL3 CKSEL2 CKSEL1 CKSEL0
default: 0 1 1 0 0 0 1 0 = 0x62
fuer Quarz: 1 1 1 1 1 1 1 1 = 0xFF
full Swing: 1 1 1 1 0 1 1 1 = 0xF7
Bedeutung der Fuses:
- CKDIV8: 0=Takt durch 8 teilen. Normalerweise auf 1 setzen.
- CKOUT: wenn auf 0 gesetzt wird Takt auf PE7 ausgegeben.
- CKSEL0-3: fuer Takteinstellung (Quarz oder Intern 8MHz oder Extern)
- SUT0-1: Startverzoegerung, 0, 4.1, oder 65ms.
- OCDEN: On-Chip-Debug enable. Auf 1 lassen. (sonst geht SPI nicht mehr)
- JTAGEN: Programmierung ueber TCK TMS TDI TDO (PF4 - PF7). Wenn nicht unbedingt gebraucht auf 1 setzen.
- SPIEN: 0=SPI ermoeglicht. Auf 0 lassen.
- WDTON: 0=Watch-Dog einschalten. Auf 1 lassen.
-
EESAVE: 1=EEPROM wird bei einem Chip Erase geloescht. 0=wird nicht geloescht.
- BOOTSZ: 00=4096 01=2048 10=1024 11=512 Words Bootgroesse
somit Boot-Startadresse: 00=0x1F000 01=0x1F800 10=0x1FC00 11=0x1FE00
-
BOOTRST: 0=Sprung zur Boot-Adresse bei einem Reset. 1=Start bei Adresse 0.
Setzen der Fuses: avrdude -p m2650 -c stk500v2 -P /dev/ttyUSB0 -U lfuse:w:0xFF:m
Weitere Informationen zu den
AVR_Fuses auf mikrocontroller.net
Speicherbelegung:
Der Atmega2560 hat 256KB Flash, 4KB EEPROM und 8KB RAM.
Beim Ausschalten bleiben die Daten im Flash und EEPROM erhalten,
Daten im RAM gehen verloren.
Programmbereich: Word-weise organisiert (16-Bit Worte)
0x00000: Application-Flash
0x1F000: Start Boot-Flash (wenn BOOTSZ auf 00 ist)
0x1FFFF: letztes Word im Boot-Flash
RAM-Bereich: Byte-weise organisiert
0000: r0
0001: r1
...
001F: r31
0020: IO-Bereich
005F: letztes Byte im normalen IO-Bereich
0060: erweiterter IO-Bereich
0200: SRAM
21FF: letztes Byte
EEPROM-Bereich: Byte-weise organisiert
0000:
0FFF:
Der Flash ist in 128 Words-Bloecke (Page-Size) unterteilt.
Das heisst es können nur jeweils 128 Words = 256 Bytes aufs mal gelöscht werden.
Im EEPROM ist die Page-Size 8 Bytes.
Timer des Atmega2560
Timer0, Timer2: 8-Bit-TimerCounter
Diese Timer sind ähnlich wie Timer0 beim Atmega8
oder beim Tiny13a.
Ein wichtiger Unterschied: statt TIMSK heisst es jetzt TIMSK0, und entsprechend für den Timer2 TIMSK2.
Timer1, Timer3, Timer4, Timer5: 16-Bit
Der Timer1 ist fast gleich wie beim Atmega32 und beim Atmega8.
Bis auf ein paar kleine Unterschiede:
- Statt TIMSK heisst es jetzt TIMSK1.
Für die andern heisst es dann TIMSK3, TIMSK4, TIMSK5.
- Ausser TCCR1A und TCCR1B gibts jetzt auch noch TCCR1C. Die Bits in diesen 3 Registern sind leicht unterschiedlich angeordnet.
- (vielleicht gibt es noch mehr kleine Unterschiede, die ich bisher noch nicht bemerkt habe)
Letzte Änderung: 3.Okt.2012 / Rolf