Programmierinformationen zum Atmega32
Auslesen des Atmega32 mit dem mySmartUSB:
avrdude -p m32 -c avr910 -P /dev/ttyUSB0 -v
avrdude -p m32 -c avr910 -P /dev/ttyUSB0 -U flash:r:flash.hex:i
avrdude -p m32 -c avr910 -P /dev/ttyUSB0 -U eeprom:r:eeprom.hex:i
Statt flash oder eeprom, geht auch noch lock, hfuse, lfuse und signature.
Fuse-Bits: (Zusammenfassung und Beispiele)
hfuse OCDEN JTAGEN SPIEN CKOPT EESAVE BOOTSZ1/SZ0 BOOTRST
default: 1 0 0 1 1 0 0 1 = 0x99
bis 8MHz: 1 1 0 1 1 0 0 1 = 0xD9
fuer 16MHz: 1 1 0 0 1 0 0 1 = 0xC9
Bootloader: 1 1 0 0 0 0 0 0 = 0xC0
lfuse BODLEVEL BODEN SUT1 SUT0 CKSEL3 CKSEL2 CKSEL1 CKSEL0
default: 1 1 1 0 0 0 0 1 = 0xE1
CeramicOsz: 1 1 1 0 1 1 1 0 = 0xEE
fuer Quarz: 1 1 1 1 1 1 1 1 = 0xFF
Bedeutung der Fuses:
- CKSEL0-3: fuer Takteinstellung (Quarz oder Intern oder Extern)
- SUT0-1: Startverzoegerung, Beispiel fuer 65ms: wenn CKSEL0==1 dann 11 sonst 01 setzen
- OCDEN: On-Chip-Debug enable. Auf 1 lassen. (sonst geht SPI nicht mehr)
- JTAGEN: Programmierung ueber TCK TMS TDI TDO (PC2 - PC5). Wenn nicht unbedingt gebraucht auf 1 setzen.
- SPIEN: 0=SPI ermoeglicht. Auf 0 lassen.
- CKOPT: 0=full rail-to-rail swing. Bis 8MHz auf 1, bei 16MHz auf 0 setzen.
-
EESAVE: 1=EEPROM wird bei einem Chip Erase geloescht. 0=wird nicht geloescht.
- BOOTSZ: 00=2048 01=1024 10=512 11=256 Words Bootgroesse
somit Boot-Startadresse: 00=0x3800 01=0x3C00 10=0x3E00 11=0x3F00
-
BOOTRST: 0=Sprung zur Boot-Adresse bei einem Reset. 1=Start bei 0 bei Reset.
Setzen der Fuses: avrdude -p m32 -c avr910 -P /dev/ttyUSB0 -U lfuse:w:0xFF:m
Weitere Informationen zu den
AVR_Fuses auf mikrocontroller.net
Speicherbelegung:
Der Atmega32 hat 32KB Flash, 1KB EEPROM und 2KB RAM.
Beim Ausschalten bleiben die Daten im Flash und EEPROM erhalten,
Daten im RAM gehen verloren.
Programmbereich: Word-weise organisiert (16-Bit Worte)
0000: Application-Flash
3800: Start Boot-Flash (siehe BOOTSZ)
3FFF: letztes Word im Boot-Flash
RAM-Bereich: Byte-weise organisiert
0000: r0
0001: r1
...
001F: r31
0020: IO-Bereich
005F: letztes Byte im IO-Bereich
0060: SRAM
085F: letztes Byte
EEPROM-Bereich: Byte-weise organisiert
0000:
03FF:
Timer des Atmega32
Die sollten gleich sein wie beim ATmega8?
Letzte Änderung: 14.Sept.2010 / Rolf