1
0
mirror of https://github.com/AlexGyver/GyverCore.git synced 2025-07-03 04:22:31 +03:00
This commit is contained in:
Alex
2019-08-31 00:29:28 +03:00
parent 2515bbbe55
commit e0f686a464
33 changed files with 370 additions and 2506 deletions

View File

@ -2,132 +2,135 @@
## почему у оптибута неправильно стоят фьюзы? https://github.com/arduino/ArduinoCore-avr/issues/10
## optiboot v4
###################################
## GyverCore on 328 based boards ##
###################################
## BOARD ##
nano.name=ATmega328 based
nano.upload.tool=avrdude
nano.upload.protocol=arduino
nano.upload.maximum_data_size=2048
nano.bootloader.tool=avrdude
nano.bootloader.unlock_bits=0x3F
nano.bootloader.lock_bits=0x0F
# !RSTDISBL !DWEN SPIEN !WDTON
nano.bootloader.high_fuses=0b1101{fuses.EESAVE}{fuses.BOOT}
nano.bootloader.low_fuses=0b{fuses.CKDIV8}{fuses.CKOUT}{fuses.CKSEL}
nano.bootloader.file={bootloader.dir}/{bootloader.suffix}.hex
nano.build.board=AVR_NANO
nano.build.core=arduino
nano.build.mcu=atmega328p
## CLOCK ##
menu.clock=Clock
nano.menu.clock.external_16=external 16 MHz
nano.menu.clock.external_16.fuses.CKDIV8=1
nano.menu.clock.external_16.fuses.CKSEL=111111
nano.menu.clock.external_16.build.f_cpu=16000000L
nano.menu.clock.external_16.bootloader.suffix=atmega328
nano.menu.clock.external_16.upload.speed={speeds.US16MHZ}
nano.menu.clock.external_8=external 8 MHz
nano.menu.clock.external_8.fuses.CKDIV8=1
nano.menu.clock.external_8.fuses.CKSEL=111111
nano.menu.clock.external_8.build.f_cpu=8000000L
nano.menu.clock.external_8.bootloader.suffix=atmega328
nano.menu.clock.external_8.upload.speed={speeds.US8MHZ}
nano.menu.clock.internal_8=internal 8 MHz
nano.menu.clock.internal_8.fuses.CKDIV8=1
nano.menu.clock.internal_8.fuses.CKSEL=010010
nano.menu.clock.internal_8.build.f_cpu=8000000L
nano.menu.clock.internal_8.bootloader.suffix=atmega328
nano.menu.clock.internal_8.upload.speed={speeds.US8MHZ}
nano.menu.clock.internal_1=internal 1 MHz
nano.menu.clock.internal_1.fuses.CKDIV8=0
nano.menu.clock.internal_1.fuses.CKSEL=010010
nano.menu.clock.internal_1.build.f_cpu=1000000L
nano.menu.clock.internal_1.bootloader.suffix=atmega328
nano.menu.clock.internal_1.upload.speed={speeds.US1MHZ}
nano.menu.clock.internal_128=internal 128 kHz
nano.menu.clock.internal_128.fuses.CKDIV8=1
nano.menu.clock.internal_128.fuses.CKSEL=010011
nano.menu.clock.internal_128.build.f_cpu=128000L
nano.menu.clock.internal_128.bootloader.suffix=emptyBoot
nano.menu.clock.internal_128.upload.speed=666
## CLOCKOUT
menu.co=Clock out PB0 (D8)
nano.menu.co.disabled=disable
nano.menu.co.disabled.fuses.CKOUT=1
nano.menu.co.enabled=enable
nano.menu.co.enabled.fuses.CKOUT=0
## EESAVE
menu.es=Save EEPROM
nano.menu.es.enabled=enable
nano.menu.es.enabled.fuses.EESAVE=0
nano.menu.es.disabled=disable
nano.menu.es.disabled.fuses.EESAVE=1
## BOOT ##
menu.boot=Bootloader
nano.menu.boot.old=Old bootloader
nano.menu.boot.old.upload.maximum_size=30720
nano.menu.boot.old.fuses.BOOT=010
nano.menu.boot.old.bootloader.dir=atmega
nano.menu.boot.old.speeds.US16MHZ=57600
nano.menu.boot.old.speeds.US8MHZ=28800
nano.menu.boot.old.speeds.US1MHZ=3600
nano.menu.boot.optiboot=OptiBoot
nano.menu.boot.optiboot.upload.maximum_size=30720
nano.menu.boot.optiboot.fuses.BOOT=010
nano.menu.boot.optiboot.bootloader.dir=optiboot
nano.menu.boot.optiboot.speeds.US16MHZ=115200
nano.menu.boot.optiboot.speeds.US8MHZ=57600
nano.menu.boot.optiboot.speeds.US1MHZ=7200
nano.menu.boot.no=Without bootloader
nano.menu.boot.no.upload.maximum_size=32768
nano.menu.boot.no.fuses.BOOT=111
nano.menu.boot.no.bootloader.dir=empty
nano.menu.boot.no.speeds.US16MHZ=666
nano.menu.boot.no.speeds.US8MHZ=666
nano.menu.boot.no.speeds.US1MHZ=666
## TIMER ##
menu.timers=System timer
########################
## 328 old bootloader ##
########################
nanoOld.name=ATmega328 (old bootloader)
nanoOld.upload.tool=avrdude
nanoOld.upload.protocol=arduino
nanoOld.bootloader.tool=avrdude
nanoOld.bootloader.unlock_bits=0x3F
nanoOld.bootloader.lock_bits=0x0F
nanoOld.build.board=AVR_NANO
nanoOld.build.core=arduino
nano.menu.timers.yes_millis=enable
nano.menu.timers.no_millis=disable
nano.menu.timers.no_millis.build.extra_flags=-D_GYVERCORE_NOMILLIS
nanoOld.upload.maximum_size=30720
nanoOld.upload.maximum_data_size=2048
nanoOld.upload.speed=57600
nanoOld.bootloader.high_fuses=0xDA
nanoOld.bootloader.extended_fuses=0xFD
nanoOld.build.mcu=atmega328p
## BOD ##
menu.bod=B.O.D.
nanoOld.menu.clock.external_16=External 16 MHz
nanoOld.menu.clock.external_16.bootloader.low_fuses=0xFF
nanoOld.menu.clock.external_16.build.f_cpu=16000000L
nanoOld.menu.clock.external_16.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex
nano.menu.bod.disable=disable
nano.menu.bod.disable.bootloader.extended_fuses=0xFF
nano.menu.bod.bod_1_8=1.8V
nano.menu.bod.bod_1_8.bootloader.extended_fuses=0xFE
nano.menu.bod.bod_2_7=2.7V (default)
nano.menu.bod.bod_2_7.bootloader.extended_fuses=0xFD
nano.menu.bod.bod_4_3=4.3V
nano.menu.bod.bod_4_3.bootloader.extended_fuses=0xFC
nanoOld.menu.clock.external_8=External 8 MHz
nanoOld.menu.clock.external_8.bootloader.low_fuses=0xFF
nanoOld.menu.clock.external_8.build.f_cpu=8000000L
nanoOld.menu.clock.external_8.bootloader.file=atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex
## INIT ##
menu.init=Initialization
nanoOld.menu.clock.internal_8=Internal 8 MHz
nanoOld.menu.clock.internal_8.bootloader.low_fuses=0xD2
nanoOld.menu.clock.internal_8.build.f_cpu=8000000L
nanoOld.menu.clock.internal_8.bootloader.file=atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex
nanoOld.menu.timers.yes_millis=millis enabled
nanoOld.menu.timers.yes_millis.build.variant=yesmillis
nanoOld.menu.timers.no_millis=millis disabled
nanoOld.menu.timers.no_millis.build.variant=nomillis
##################
## 328 optiBoot ##
##################
nanoOpti.name=ATmega328 (optiboot)
nanoOpti.upload.tool=avrdude
nanoOpti.upload.protocol=arduino
nanoOpti.bootloader.tool=avrdude
nanoOpti.bootloader.unlock_bits=0x3F
nanoOpti.bootloader.lock_bits=0x0F
nanoOpti.build.board=AVR_NANO
nanoOpti.build.core=arduino
nanoOpti.upload.maximum_size=30720
nanoOpti.upload.maximum_data_size=2048
nanoOpti.upload.speed=115200
nanoOpti.bootloader.high_fuses=0xDA
nanoOpti.bootloader.extended_fuses=0xFD
nanoOpti.build.mcu=atmega328p
nanoOpti.menu.clock.external_16=External 16 MHz
nanoOpti.menu.clock.external_16.bootloader.low_fuses=0xFF
nanoOpti.menu.clock.external_16.build.f_cpu=16000000L
nanoOpti.menu.clock.external_16.bootloader.file=optiboot/optiboot_atmega328.hex
nanoOpti.menu.clock.external_8=External 8 MHz
nanoOpti.menu.clock.external_8.bootloader.low_fuses=0xFF
nanoOpti.menu.clock.external_8.build.f_cpu=8000000L
nanoOpti.menu.clock.external_8.bootloader.file=optiboot/optiboot_atmega328_pro_8MHz.hex
nanoOpti.menu.clock.internal_8=Internal 8 MHz
nanoOpti.menu.clock.internal_8.bootloader.low_fuses=0xD2
nanoOpti.menu.clock.internal_8.build.f_cpu=8000000L
nanoOpti.menu.clock.internal_8.bootloader.file=optiboot/optiboot_atmega328_pro_8MHz.hex
nanoOpti.menu.timers.yes_millis=millis enabled
nanoOpti.menu.timers.yes_millis.build.variant=yesmillis
nanoOpti.menu.timers.no_millis=millis disabled
nanoOpti.menu.timers.no_millis.build.variant=nomillis
#######################
## 328 no bootloader ##
#######################
nanoWB.name=ATmega328 (without bootloader)
nanoWB.upload.tool=avrdude
nanoWB.upload.protocol=arduino
nanoWB.bootloader.tool=avrdude
nanoWB.bootloader.unlock_bits=0x3F
nanoWB.bootloader.lock_bits=0x0F
nanoWB.build.board=AVR_NANO
nanoWB.build.core=arduino
nanoWB.upload.maximum_size=32768
nanoWB.upload.maximum_data_size=2048
nanoWB.bootloader.high_fuses=0xDF
nanoWB.bootloader.extended_fuses=0xFD
nanoWB.build.mcu=atmega328p
nanoWB.menu.clock.external_16=External 16 MHz
nanoWB.menu.clock.external_16.bootloader.low_fuses=0xFF
nanoWB.menu.clock.external_16.build.f_cpu=16000000L
nanoWB.menu.clock.external_16.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex
nanoWB.menu.clock.external_8=External 8 MHz
nanoWB.menu.clock.external_8.bootloader.low_fuses=0xFF
nanoWB.menu.clock.external_8.build.f_cpu=8000000L
nanoWB.menu.clock.external_8.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex
nanoWB.menu.clock.internal_8=Internal 8 MHz
nanoWB.menu.clock.internal_8.bootloader.low_fuses=0xD2
nanoWB.menu.clock.internal_8.build.f_cpu=8000000L
nanoWB.menu.clock.internal_8.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex
nanoWB.menu.clock.internal_1=Internal 1 MHz
nanoWB.menu.clock.internal_1.bootloader.low_fuses=0x52
nanoWB.menu.clock.internal_1.build.f_cpu=1000000L
nanoWB.menu.clock.internal_1.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex
nanoWB.menu.clock.internal_128=Internal 128 kHz
nanoWB.menu.clock.internal_128.bootloader.low_fuses=0xD3
nanoWB.menu.clock.internal_128.build.f_cpu=128000L
nanoWB.menu.clock.internal_128.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex
nanoWB.menu.timers.yes_millis=millis enabled
nanoWB.menu.timers.yes_millis.build.variant=yesmillis
nanoWB.menu.timers.no_millis=millis disabled
nanoWB.menu.timers.no_millis.build.variant=nomillis
nano.menu.init.light_init=light (beta)
nano.menu.init.light_init.build.extra_flags=-D_GYVERCORE_LIGHT_INIT
nano.menu.init.default=default
nano.menu.init.default.build.extra_flags=-D_GYVERCORE_DEF_INIT
nano.menu.init.no_init=disable

File diff suppressed because it is too large Load Diff

View File

@ -1,245 +0,0 @@
:020000021000EC
:10F000000C9472F80C9492F80C9492F80C9492F878
:10F010000C9492F80C9492F80C9492F80C9492F848
:10F020000C9492F80C9492F80C9492F80C9492F838
:10F030000C9492F80C9492F80C9492F80C9492F828
:10F040000C9492F80C9492F80C9492F80C9492F818
:10F050000C9492F80C9492F80C9492F80C9492F808
:10F060000C9492F80C9492F80C9492F80C9492F8F8
:10F070000C9492F80C9492F80C9492F80C9492F8E8
:10F080000C9492F80C9492F80C9492F80C9492F8D8
:10F090000C9492F80C9492F80C9492F80C9492F8C8
:10F0A0000C9492F80C9492F80C9492F80C9492F8B8
:10F0B0000C9492F80C9492F80C9492F80C9492F8A8
:10F0C0000C9492F80C9492F80C9492F80C9492F898
:10F0D0000C9492F80C9492F80C9492F80C9492F888
:10F0E0000C9492F811241FBECFEFD1E2DEBFCDBF4A
:10F0F00012E0A0E0B2E0EEEDFEEF01E00BBF02C0D7
:10F1000007900D92A833B107D9F71BBE13E0A8E30F
:10F11000B2E001C01D92A334B107E1F70E9412FAD8
:10F120000C946DFF0C9400F8982F959595959595F6
:10F130009595905D8F708A301CF1282F295A809107
:10F140003802813019F0823071F008958091C0004A
:10F1500085FFFCCF9093C6008091C00085FFFCCF57
:10F160002093C60008958091C80085FFFCCF90933E
:10F17000CE008091C80085FFFCCF2093CE0008957B
:10F18000282F205DDCCF982F80913802813019F034
:10F19000823041F008958091C00085FFFCCF9093AC
:10F1A000C60008958091C80085FFFCCF9093CE00E3
:10F1B0000895EF92FF920F931F9380913802813050
:10F1C00069F1823031F080E01F910F91FF90EF9054
:10F1D0000895EE24FF2487018091C80087FD17C0A1
:10F1E0000894E11CF11C011D111D81E4E81682E464
:10F1F000F8068FE0080780E0180770F3E0913A0204
:10F20000F0913B0209958091C80087FFE9CF80917A
:10F21000CE001F910F91FF90EF900895EE24FF24F0
:10F2200087018091C00087FD17C00894E11CF11C84
:10F23000011D111D81E4E81682E4F8068FE008073D
:10F2400080E0180770F3E0913A02F0913B020995D3
:10F250008091C00087FFE9CF8091C6001F910F9178
:10F26000FF90EF9008950E94D9F8982F809138026E
:10F27000813049F0823091F091366CF490330CF08B
:10F280009053892F08958091C00085FFFCCF909303
:10F29000C60091369CF39755892F08958091C80038
:10F2A00085FFFCCF9093CE00E7CF1F930E9433F9E8
:10F2B000182F0E9433F91295107F810F1F91089526
:10F2C000982F20913802992339F0213031F02230E3
:10F2D00061F091509923C9F708958091C00087FF8C
:10F2E000FCCF8091C6009150F5CF8091C80087FF78
:10F2F000FCCF8091CE009150EDCF1F93182F0E942C
:10F30000D9F8803249F0809139028F5F80933902B9
:10F31000853091F11F910895809138028130B9F0C4
:10F320008230C1F78091C80085FFFCCF84E18093D3
:10F33000CE008091C80085FFFCCF1093CE00809155
:10F34000C80085FFFCCF80E18093CE00E3CF8091A1
:10F35000C00085FFFCCF84E18093C6008091C0008F
:10F3600085FFFCCF1093C6008091C00085FFFCCFC5
:10F3700080E18093C600CECFE0913A02F0913B024B
:10F3800009951F9108950E94D9F8803241F080912B
:10F3900039028F5F80933902853029F10895809179
:10F3A0003802813089F08230C9F78091C80085FF2A
:10F3B000FCCF84E18093CE008091C80085FFFCCF14
:10F3C00080E18093CE0008958091C00085FFFCCF3E
:10F3D00084E18093C6008091C00085FFFCCF80E16E
:10F3E0008093C6000895E0913A02F0913B0209959E
:10F3F000089540E951E08823A1F02F9A28EE33E0E8
:10F40000FA013197F1F721503040D1F72F9828EECB
:10F4100033E0FA013197F1F721503040D1F78150B4
:10F4200061F708952F923F924F925F926F927F9271
:10F430008F929F92AF92BF92CF92DF92EF92FF9204
:10F440000F931F93CF93DF93000081E080933802E6
:10F4500080E18093C4001092C5001092C00086E045
:10F460008093C20088E18093C1006898709A279ABF
:10F4700081E00E94F9F9E4E1EE2E7EE1D72E67E902
:10F48000C62E53E0B52E40E1A42E9924939431E486
:10F49000832E26E5722E92E5692E80E2582E09E42D
:10F4A000402E13E5312EB0E52B2E0E94D9F8803383
:10F4B000C9F1813309F452C0803409F4C8C08134E1
:10F4C00009F4EAC0823489F1853409F4CAC0803570
:10F4D00049F1823539F1813529F1853509F4ECC0DE
:10F4E000863509F409C1843609F428C1843709F442
:10F4F000ABC1853709F473C2863709F4D9C08132AC
:10F5000009F4B7C2809139028F5F80933902853048
:10F5100061F6E0913A02F0913B0209950E94D9F818
:10F52000803339F60E94C3F9C0CF2091380293E1AD
:10F5300005C0223061F09923A9F391502130C9F719
:10F540008091C00087FFFCCF8091C600F4CF8091EE
:10F55000C80087FFFCCF8091CE00EDCF0E94D9F884
:10F56000803281F6809138028130D1F1823009F009
:10F570009CCF8091C80085FFFCCFE092CE008091A7
:10F58000C80085FFFCCF8092CE008091C80085FF27
:10F59000FCCF7092CE008091C80085FFFCCF6092B6
:10F5A000CE008091C80085FFFCCF5092CE008091A4
:10F5B000C80085FFFCCF4092CE008091C80085FF37
:10F5C000FCCF3092CE008091C80085FFFCCF209206
:10F5D000CE008091C80085FFFCCFA092CE0065CF01
:10F5E0008091C00085FFFCCFE092C6008091C000F2
:10F5F00085FFFCCF8092C6008091C00085FFFCCFC4
:10F600007092C6008091C00085FFFCCF6092C6005A
:10F610008091C00085FFFCCF5092C6008091C00051
:10F6200085FFFCCF4092C6008091C00085FFFCCFD3
:10F630003092C6008091C00085FFFCCF2092C600AA
:10F640008091C00085FFFCCFA092C6002ECF0E9403
:10F65000D9F8863808F466CF0E94D9F80E94C3F919
:10F6600024CF2091380294E0213041F0223069F01B
:10F67000992309F457CF91502130C1F78091C000F0
:10F6800087FFFCCF8091C600F3CF8091C80087FF31
:10F69000FCCF8091CE00ECCF0E94D9F8803841F1A8
:10F6A000813809F447C0823809F4CAC08839E1F0CA
:10F6B00080E00E947DF9F9CE0E94D9F880933C0247
:10F6C0000E94D9F880933D020E94C3F9EECE0E94B9
:10F6D000D9F80E94D9F8182F0E94D9F8112309F4FB
:10F6E0007EC2113009F40AC283E00E947DF9DDCEAA
:10F6F00082E00E947DF9D9CE0E94D9F8803339F397
:10F700002091380292E0213039F0223061F09923C3
:10F7100079F291502130C9F78091C00087FFFCCF6A
:10F720008091C600F4CF8091C80087FFFCCF809104
:10F73000CE00EDCF81E00E947DF9B7CE0E94D9F8CE
:10F7400080933F030E94D9F880933E038091420347
:10F750008E7F809342030E94D9F8853409F4B3C1A7
:10F7600080913E0390913F03892B89F000E010E0E7
:10F770000E94D9F8F801E25CFD4F80830F5F1F4FB4
:10F7800080913E0390913F030817190788F30E9468
:10F79000D9F8803209F0B6CE8091420380FFB2C121
:10F7A00040913C0250913D02440F551F50933D0241
:10F7B00040933C0260913E0370913F0361157105D7
:10F7C000F1F080E090E09A01280F391FFC01E25C23
:10F7D000FD4FE081F999FECF1FBA32BD21BDE0BDDA
:10F7E0000FB6F894FA9AF99A0FBE01968617970702
:10F7F00050F3460F571F50933D0240933C028091B7
:10F800003802813081F0823009F04FCE8091C800FB
:10F8100085FFFCCFE092CE008091C80085FFFCCF31
:10F82000A092CE0042CE8091C00085FFFCCFE09236
:10F83000C6008091C00085FFFCCFA092C60035CEE7
:10F8400080E10E947DF931CE0E94D9F880933F0378
:10F850000E94D9F880933E0320913C0230913D02F2
:10F8600037FD46C1809142038D7F80934203220F72
:10F87000331F30933D0220933C020E94D9F8853417
:10F8800009F430C1809142038E7F809342030E942D
:10F89000D9F8803209F009CE60913802613009F45C
:10F8A0006FC0623009F473C000913E0310913F03B2
:10F8B0000115110509F440C080914203782F717041
:10F8C000F82EF69481E0F82240913C0250913D02DE
:10F8D00020E030E013C0FF2009F060C0FA019491ED
:10F8E000613009F43BC0623009F441C0CA0101969D
:10F8F0002F5F3F4FAC0120173107D0F4772359F326
:10F90000F999FECF52BD41BDF89A90B56130F9F03A
:10F91000623061F78091C80085FFFCCF9093CE00E4
:10F92000CA0101962F5F3F4FAC012017310730F31A
:10F9300090933D0280933C02613009F4CAC062306A
:10F9400009F0B3CD8091C80085FFFCCF46CE8091F1
:10F95000C00085FFFCCF9093C600C8CF8091C00047
:10F9600085FDF9CF8091C00085FFF8CFF4CF80915D
:10F97000C80085FDD3CF8091C80085FFF8CFCECFDA
:10F980008091C00085FFFCCFE092C6008DCF8091B2
:10F99000C80085FFFCCFE092CE0086CFCA01A0E070
:10F9A000B0E080509040AF4FBF4FABBFFC0197918C
:10F9B000613061F0623009F099CF8091C80085FD17
:10F9C000ADCF8091C80085FFF8CFA8CF8091C0004F
:10F9D00085FDC1CF8091C00085FFF8CFBCCF0E94CC
:10F9E000D9F8803209F08ECD80913802813011F142
:10F9F000823009F05ACD8091C80085FFFCCFE0929B
:10FA0000CE008091C80085FFFCCFD092CE008091BF
:10FA1000C80085FFFCCFC092CE008091C80085FF52
:10FA2000FCCFB092CE008091C80085FFFCCFA092A1
:10FA3000CE003BCD8091C00085FFFCCFE092C60098
:10FA40008091C00085FFFCCFD092C6008091C0009D
:10FA500085FFFCCFC092C6008091C00085FFFCCF1F
:10FA6000B092C6008091C00085FFFCCFA092C60076
:10FA70001CCD0E94D9F8813209F017CD0E94D9F827
:10FA8000813209F012CD279A2F98109240032091CD
:10FA90003802E1E491E00EC0223009F4A4C0909352
:10FAA0004003E92FF0E0E050FE4FE0819F5FEE233E
:10FAB00009F4A0C0213081F78091C00085FFFCCF00
:10FAC000E093C600ECCF80914203816080934203B3
:10FAD00047CE8091C00085FDB7CD8091C00085FFE5
:10FAE000F8CFB2CD80914203816080934203CFCEA4
:10FAF00080914203826080934203B9CE87E90E94DD
:10FB00007DF9D3CC80913D028823880F880B892111
:10FB1000809341038BBF80913C0290913D02880FFE
:10FB2000991F90933D0280933C0280913E0380FF99
:10FB300009C080913E0390913F03019690933F034B
:10FB400080933E03F894F999FECF1127E0913C028F
:10FB5000F0913D02CEE3D2E080913E0390913F03CD
:10FB6000103091F40091570001700130D9F303E097
:10FB700000935700E8950091570001700130D9F3C8
:10FB800001E100935700E895099019900091570002
:10FB900001700130D9F301E000935700E895139507
:10FBA000103898F011270091570001700130D9F3F7
:10FBB00005E000935700E89500915700017001306F
:10FBC000D9F301E100935700E8953296029709F0C6
:10FBD000C7CF103011F00296E5CF112410CE8EE180
:10FBE0000E947DF962CC8091C80085FFFCCFE09334
:10FBF000CE0055CF7AE0B72E6DE0A62E5AE3952EB3
:10FC000040E2842E3DE3732E90E3692E81E3582E6B
:10FC1000213009F442C0223009F45FC00E94D9F8B3
:10FC2000982F20913802213089F1223009F44EC0FA
:10FC3000943709F46BC0923709F405C1973709F47A
:10FC40007BC0953799F0923609F4BDC09A3601F71A
:10FC5000E0913A02F0913B02099520913802D8CF09
:10FC60008091C00085FFFCCF9093C6000E94D9F818
:10FC7000982F80913802813099F38230B9F78091C2
:10FC8000C80085FFFCCF9093CE00F0CF8091C000DC
:10FC900085FFFCCF9093C600CBCF8091C00085FF3D
:10FCA000FCCFB092C6008091C00085FFFCCFA0922F
:10FCB000C6008091C00085FFFCCF9092C600809165
:10FCC000C00085FFFCCF8092C600A8CF8091C800FD
:10FCD00085FFFCCF9093CE00ABCF8091C80085FF0D
:10FCE000FCCFB092CE008091C80085FFFCCFA092DF
:10FCF000CE008091C80085FFFCCF9092CE0080910D
:10FD0000C80085FFFCCF8092CE0088CF1F9947C0E6
:10FD10002F9A213051F0223009F07ACF8091C8001B
:10FD200085FFFCCF6092CE0073CF8091C00085FF2D
:10FD3000FCCF6092C6006CCF0E94D9F8982F8091BA
:10FD400038028130F1F0823009F4ABC00E9455F9DD
:10FD5000082F0E9455F9182F0E94D9F8982F8091EA
:10FD600038028130A9F0823009F4A2C00E9455F90E
:10FD7000D02ECC24F601E10FF11D808320913802B2
:10FD800047CF8091C00085FFFCCF9093C600DECFA7
:10FD90008091C00085FFFCCF9093C600E7CF2F98DD
:10FDA000213051F0223009F033CF8091C80085FF17
:10FDB000FCCF5092CE002CCF8091C00085FFFCCFAD
:10FDC0005092C60025CF213041F1223081F080E8E9
:10FDD00085BF109274001092750080E091E1FC01E3
:10FDE000819180E091E13097D1F3CF01F8CF8091FC
:10FDF000C80085FFFCCF82E68093CE008091C800CA
:10FE000085FFFCCF85E78093CE008091C80085FFF9
:10FE1000FCCF83E78093CE00DACF8091C00085FFCE
:10FE2000FCCF82E68093C6008091C00085FFFCCFA6
:10FE300085E78093C6008091C00085FFFCCF83E7F3
:10FE40008093C600C4CF0E94D9F8982F80913802C1
:10FE50008130C9F08230D1F10E9455F9182F0E94EB
:10FE600055F9982F809138028130A1F0823039F114
:10FE7000F12EEE24F701E90FF11D80810E9494F824
:10FE800020913802C5CE8091C00085FFFCCF9093B1
:10FE9000C600E2CF8091C00085FFFCCF7092C60003
:10FEA000E7CF8091C80085FFFCCF9093CE004ECF66
:10FEB0008091C80085FFFCCF9093CE0057CF8091F2
:10FEC000C80085FFFCCF7092CE00D2CF8091C800D1
:0EFED00085FFFCCF9093CE00BFCFF894FFCFFC
:10FEDE0041546D656761424F4F54202F204172642B
:10FEEE0075696E6F204D656761202D20284329208E
:10FEFE0041726475696E6F204C4C43202D20303951
:08FF0E00303933300A0D008088
:040000031000F000F9
:00000001FF

View File

@ -1,124 +0,0 @@
:107800000C94343C0C94513C0C94513C0C94513CE1
:107810000C94513C0C94513C0C94513C0C94513CB4
:107820000C94513C0C94513C0C94513C0C94513CA4
:107830000C94513C0C94513C0C94513C0C94513C94
:107840000C94513C0C94513C0C94513C0C94513C84
:107850000C94513C0C94513C0C94513C0C94513C74
:107860000C94513C0C94513C11241FBECFEFD8E036
:10787000DEBFCDBF11E0A0E0B1E0EAE8FFE702C063
:1078800005900D92A230B107D9F712E0A2E0B1E065
:1078900001C01D92AD30B107E1F70E942D3D0C945F
:1078A000C33F0C94003C982F95959595959595958B
:1078B000905D8F708A307CF0282F295A8091C0000B
:1078C00085FFFCCF9093C6008091C00085FFFCCF60
:1078D0002093C6000895282F205DF0CF982F809127
:1078E000C00085FFFCCF9093C6000895EF92FF92F1
:1078F0000F931F93EE24FF2487018091C00087FD22
:1079000017C00894E11CF11C011D111D81E2E8164D
:1079100081EAF80687E0080780E0180770F3E09135
:107920000401F091050109958091C00087FFE9CF1E
:107930008091C6001F910F91FF90EF9008950E94D3
:10794000763C982F8091C00085FFFCCF9093C600B5
:1079500091362CF490330CF09053892F089597555D
:10796000892F08951F930E949F3C182F0E949F3CCF
:107970001295107F810F1F9108951F93182F882350
:1079800021F00E94763C1150E1F71F9108951F935A
:10799000182F0E94763C803249F0809103018F5F5E
:1079A000809303018530C1F01F9108958091C0003C
:1079B00085FFFCCF84E18093C6008091C00085FFE5
:1079C000FCCF1093C6008091C00085FFFCCF80E102
:1079D0008093C6001F910895E0910401F091050184
:1079E00009951F9108950E94763C803241F0809164
:1079F00003018F5F80930301853081F008958091AA
:107A0000C00085FFFCCF84E18093C6008091C00058
:107A100085FFFCCF80E18093C6000895E0910401CA
:107A2000F09105010995089548EC50E08823A1F0F4
:107A30002D9A28EE33E0FA013197F1F721503040CA
:107A4000D1F72D9828EE33E0FA013197F1F7215064
:107A50003040D1F7815061F708953F924F925F9285
:107A60006F927F928F929F92AF92BF92CF92DF924E
:107A7000EF92FF920F931F93CF93DF93000082E06A
:107A80008093C00080E18093C4001092C50088E11B
:107A90008093C10086E08093C2005098589A259A3E
:107AA00081E00E94143D24E1F22E9EE1E92E85E959
:107AB000D82E0FE0C02E10E1B12EAA24A394B1E479
:107AC0009B2EA6E58A2EF2E57F2EE0E26E2E79E46B
:107AD000572E63E5462E50E5352E0E94763C8033C6
:107AE000B1F18133B9F1803409F46FC0813409F404
:107AF00076C0823409F485C0853409F488C08035A5
:107B000031F1823521F1813511F1853509F485C0D6
:107B1000863509F48DC0843609F496C0843709F49B
:107B200003C1853709F472C1863709F466C08091B4
:107B300003018F5F80930301853079F6E0910401A2
:107B4000F091050109950E94763C803351F60E9420
:107B5000F33CC3CF0E94763C803249F78091C0004D
:107B600085FFFCCFF092C6008091C00085FFFCCF5E
:107B70009092C6008091C00085FFFCCF8092C60025
:107B80008091C00085FFFCCF7092C6008091C0003C
:107B900085FFFCCF6092C6008091C00085FFFCCFBE
:107BA0005092C6008091C00085FFFCCF4092C60075
:107BB0008091C00085FFFCCF3092C6008091C0004C
:107BC00085FFFCCFB092C60088CF0E94763C8638F5
:107BD00008F4BDCF0E94763C0E94F33C7ECF0E9409
:107BE000763C803809F49CC0813809F40BC1823896
:107BF00009F430C1883909F48FC080E00E94C73C85
:107C00006CCF84E10E94BD3C0E94F33C66CF85E0CE
:107C10000E94BD3C0E94F33C60CF0E94763C809362
:107C200006010E94763C809307010E94F33C55CFE9
:107C30000E94763C803309F411C183E00E94BD3C70
:107C400080E00E94C73C49CF0E94763C80930902A5
:107C50000E94763C8093080280910C028E7F809374
:107C60000C020E94763C853409F409C18091080217
:107C700090910902892B89F000E010E00E94763C87
:107C8000F801E85FFE4F80830F5F1F4F809108026D
:107C9000909109020817190788F30E94763C8032F8
:107CA00009F045CF80910C0280FFF5C0609106017C
:107CB00070910701660F771F7093070160930601AB
:107CC000A0910802B09109021097C9F0E8E0F1E034
:107CD0009B01AD014E0F5F1FF999FECF32BD21BD53
:107CE000819180BDFA9AF99A2F5F3F4FE417F5070B
:107CF00099F76A0F7B1F70930701609306018091CB
:107D0000C00085FFFCCFF092C6008091C00085FFC7
:107D1000FCCFB092C600E1CE83E00E94C73CDDCE2E
:107D200082E00E94C73CD9CE0E94763C8093090233
:107D30000E94763C80930802809106019091070191
:107D4000880F991F90930701809306010E94763C4B
:107D5000853409F49AC080910C028E7F80930C02C6
:107D60000E94763C803209F0B8CE8091C00085FF39
:107D7000FCCFF092C600A0910802B09109021097C2
:107D8000C1F180910C02082F0170182F1695117007
:107D9000E0910601F0910701AF014F5F5F4FBA011B
:107DA00020E030E00023B1F4112339F49491809164
:107DB000C00085FFFCCF9093C6002F5F3F4FCB01E3
:107DC0000196FA012A173B0780F4BC014F5F5F4F11
:107DD000002351F3F999FECFF2BDE1BDF89A90B5B9
:107DE0008091C00085FFFCCFE6CF709307016093C0
:107DF00006018091C00085FDE5CE8091C00085FF21
:107E0000F8CFE0CE81E00E94C73C67CE0E94763C6E
:107E1000803209F08CCE8091C00085FFFCCFF092BB
:107E2000C6008091C00085FFFCCFE092C600809123
:107E3000C00085FFFCCFD092C6008091C00085FFB6
:107E4000FCCFC092C6008091C00085FFFCCFB092ED
:107E5000C60043CE80E10E94C73C3FCE0E94763CE4
:107E60000E94763C182F0E94763C112309F483C0AF
:107E7000113009F484C08FE00E94C73C2ECE80915F
:107E80000C02816080930C02F1CE80910C02816023
:107E900080930C0265CF809107018823880F880B9F
:107EA0008A2180930B028091060190910701880F2F
:107EB000991F90930701809306018091080280FF2B
:107EC00009C08091080290910902019690930902DD
:107ED00080930802F894F999FECF1127E0910601EA
:107EE000F0910701C8E0D1E0809108029091090269
:107EF000103091F40091570001700130D9F303E084
:107F000000935700E8950091570001700130D9F3B4
:107F100001E100935700E8950990199000915700EE
:107F200001700130D9F301E000935700E8951395F3
:107F3000103498F011270091570001700130D9F3E7
:107F400005E000935700E89500915700017001305B
:107F5000D9F301E100935700E8953296029709F0B2
:107F6000C7CF103011F00296E5CF11248091C000E8
:107F700085FFC5CEC8CE8EE10E94C73CAECD85E957
:0A7F80000E94C73CAACDF894FFCF81
:027F8A00800075
:040000030000780081
:00000001FF

View File

@ -1,126 +0,0 @@
:103800000C94341C0C94511C0C94511C0C94511CA1
:103810000C94511C0C94511C0C94511C0C94511C74
:103820000C94511C0C94511C0C94511C0C94511C64
:103830000C94511C0C94511C0C94511C0C94511C54
:103840000C94511C0C94511C0C94511C0C94511C44
:103850000C94511C0C94511C0C94511C0C94511C34
:103860000C94511C0C94511C11241FBECFEFD4E0BA
:10387000DEBFCDBF11E0A0E0B1E0E4EAFFE302C0AB
:1038800005900D92A230B107D9F712E0A2E0B1E0A5
:1038900001C01D92AD30B107E1F70E94361D0C94B6
:1038A000D01F0C94001C982F9595959595959595FE
:1038B000905D8F708A307CF0282F295A8091C0004B
:1038C00085FFFCCF9093C6008091C00085FFFCCFA0
:1038D0002093C6000895282F205DF0CF982F809167
:1038E000C00085FFFCCF9093C6000895EF92FF9231
:1038F0000F931F93EE24FF2487018091C00087FD62
:1039000017C00894E11CF11C011D111D81E4E8168B
:1039100082E4F8068FE0080780E0180770F3E09172
:103920000401F091050109958091C00087FFE9CF5E
:103930008091C6001F910F91FF90EF9008950E9413
:10394000761C982F8091C00085FFFCCF9093C60015
:1039500091362CF490330CF09053892F089597559D
:10396000892F08951F930E949F1C182F0E949F1C4F
:103970001295107F810F1F910895882351F0982F81
:1039800091508091C00087FFFCCF8091C6009923A1
:10399000B9F708951F93182F0E94761C803249F0C2
:1039A000809103018F5F809303018530C1F01F91E7
:1039B00008958091C00085FFFCCF84E18093C6000C
:1039C0008091C00085FFFCCF1093C6008091C0009D
:1039D00085FFFCCF80E18093C6001F910895E091A0
:1039E0000401F091050109951F9108950E94761C2C
:1039F000803241F0809103018F5F80930301853015
:103A000081F008958091C00085FFFCCF84E1809310
:103A1000C6008091C00085FFFCCF80E18093C60086
:103A20000895E0910401F09105010995089510921F
:103A30000A028823D1F090E040E951E02D9A28EE67
:103A400033E0FA013197F1F721503040D1F72D984A
:103A500028EE33E0FA013197F1F721503040D1F7E9
:103A60009F5F981758F380930A0208953F924F92F0
:103A70005F926F927F928F929F92AF92BF92CF92FE
:103A8000DF92EF92FF920F931F93CF93DF9300008B
:103A900083E38093C4001092C50088E18093C10045
:103AA00086E08093C2005098589A259A81E00E943F
:103AB000171D44E1F42E3EE1E32E24E9D22E96E0D8
:103AC000C92E80E1B82EAA24A39401E4902E16E515
:103AD000812EB2E57B2EA0E26A2EF9E45F2EE3E5AB
:103AE0004E2E70E5372E0E94761C8033B1F1813363
:103AF00009F441C0803409F479C0813409F48CC0E0
:103B0000823471F1853409F47BC0803531F182351E
:103B100021F1813511F1853509F48DC0863509F41F
:103B20009DC0843609F4AEC0843709F41BC18537C3
:103B300009F485C1863709F47AC0809103018F5F4B
:103B400080930301853079F6E0910401F09105013D
:103B500009950E94761C803351F60E94F61CC3CF53
:103B600093E18091C00087FFFCCF8091C60099232C
:103B7000A1F39150F6CF0E94761C8032F1F680912D
:103B8000C00085FFFCCFF092C6008091C00085FF89
:103B9000FCCF9092C6008091C00085FFFCCF809240
:103BA000C6008091C00085FFFCCF7092C600809156
:103BB000C00085FFFCCF6092C6008091C00085FFE9
:103BC000FCCF5092C6008091C00085FFFCCF409290
:103BD000C6008091C00085FFFCCF3092C600809166
:103BE000C00085FFFCCFB092C6007DCF0E94761C3E
:103BF000863808F4B2CF0E94761C0E94F61C73CF60
:103C000094E08091C00087FFFCCF8091C60099238B
:103C100009F4A3CF9150F5CF0E94761C8038D1F0E3
:103C2000813861F1823809F499C0883979F080E0EF
:103C30000E94CA1C58CF0E94761C809306010E94E5
:103C4000761C809307010E94F61C4DCF83E00E94F2
:103C5000CA1C49CF82E00E94CA1C45CF0E94761C34
:103C6000803309F486C192E08091C00087FFFCCFC9
:103C70008091C6009923D9F29150F6CF81E00E943D
:103C8000CA1C31CF0E94761C809309020E94761CC8
:103C90008093080280910C028E7F80930C020E9418
:103CA000761C853429F480910C02816080930C028B
:103CB0008091080290910902892B89F000E010E0C0
:103CC0000E94761CF801E85FFE4F80830F5F1F4F54
:103CD00080910802909109020817190788F30E9441
:103CE000761C803209F029CF80910C0280FFD1C070
:103CF0004091060150910701440F551F5093070151
:103D000040930601A0910802B09109021097C9F0F2
:103D1000E8E0F1E09A01BD016E0F7F1FF999FECF37
:103D200032BD21BD819180BDFA9AF99A2F5F3F4F34
:103D3000E617F70799F74A0F5B1F50930701409367
:103D400006018091C00085FFFCCFF092C6008091F3
:103D5000C00085FFFCCFB092C600C5CE80E10E94B6
:103D6000CA1CC1CE0E94761C809309020E94761C58
:103D7000809308028091060190910701880F991F96
:103D800090930701809306010E94761C853409F404
:103D90007AC080910C028E7F80930C020E94761C68
:103DA000803209F0A0CE8091C00085FFFCCFF09258
:103DB000C600A0910802B09109021097B9F1809154
:103DC0000C02182F1170082F0270E0910601F0917B
:103DD00007019F012F5F3F4FB90140E050E01123E1
:103DE000B1F4002339F494918091C00085FFFCCF99
:103DF0009093C6004F5F5F4FCB010196F9014A17C0
:103E00005B0780F4BC012F5F3F4F112351F3F999F9
:103E1000FECFF2BDE1BDF89A90B58091C00085FF5C
:103E2000FCCFE6CF70930701609306018091C0003C
:103E300085FDD9CE8091C00085FFF8CFD4CE0E94F9
:103E4000761C803209F079CE8091C00085FFFCCFCE
:103E5000F092C6008091C00085FFFCCFE092C600C2
:103E60008091C00085FFFCCFD092C6008091C00039
:103E700085FFFCCFC092C6008091C00085FFFCCFBB
:103E8000B092C60030CE80910C02816080930C020B
:103E900085CF809107018823880F880B8A21809322
:103EA0000B028091060190910701880F991F909352
:103EB0000701809306018091080280FF09C080916C
:103EC00008029091090201969093090280930802DA
:103ED000F894F999FECF1127E0910601F0910701BE
:103EE000C8E0D1E08091080290910902103091F46D
:103EF0000091570001700130D9F303E0009357009F
:103F0000E8950091570001700130D9F301E1009369
:103F10005700E89509901990009157000170013001
:103F2000D9F301E000935700E8951395103498F009
:103F300011270091570001700130D9F305E000937B
:103F40005700E8950091570001700130D9F301E165
:103F500000935700E8953296029709F0C7CF1030CA
:103F600011F00296E5CF11248091C00085FFE9CEC3
:103F7000ECCE0E94761C0E94761C182F0E94761CA4
:103F8000112351F0113021F086E00E94CA1CABCD04
:103F900084E90E94CA1CA7CD8EE10E94CA1CA3CD51
:043FA000F894FFCFC3
:023FA40080009B
:0400000300003800C1
:00000001FF

View File

@ -1,110 +0,0 @@
:103800000C94341C0C94511C0C94511C0C94511CA1
:103810000C94511C0C94511C0C94511C0C94511C74
:103820000C94511C0C94511C0C94511C0C94511C64
:103830000C94511C0C94511C0C94511C0C94511C54
:103840000C94511C0C94511C0C94511C0C94511C44
:103850000C94511C0C94511C0C94511C0C94511C34
:103860000C94511C0C94511C11241FBECFEFD4E0BA
:10387000DEBFCDBF11E0A0E0B1E0E4EAFEE302C0AC
:1038800005900D92A230B107D9F712E0A2E0B1E0A5
:1038900001C01D92AD30B107E1F70E94ED1C0C9400
:1038A000511F0C94001C482F10920A0280E08417CC
:1038B000E0F4582F2D9A28EE33E080E991E001974B
:1038C000F1F721503040C9F72D9828EE33E080E918
:1038D00091E00197F1F721503040C9F7852F8F5FB4
:1038E000582F841738F380930A020895EF92FF92BD
:1038F0000F931F93EE24FF2487018091C00087FD62
:1039000017C00894E11CF11C011D111D81E0E8168F
:1039100082E1F8068AE7080780E0180770F3E09173
:103920000201F091030109958091C00087FFE9CF62
:103930008091C600992787FD90951F910F91FF9068
:10394000EF900895982F8091C00085FFFCCF909351
:10395000C60008950E94761C803271F080910401A7
:103960008F5F80930401853009F00895E091020192
:10397000F09103010995089584E10E94A21C80E161
:103980000E94A21C0895CF93C82F0E94761C8032FB
:1039900041F0809104018F5F80930401853081F4B0
:1039A0000AC084E10E94A21C8C2F0E94A21C80E10C
:1039B0000E94A21C05C0E0910201F091030109954B
:1039C000CF910895CF93C82FC150CF3F21F00E94CF
:1039D000761CC150E0F7CF910895CFEFD4E0DEBF61
:1039E000CDBF000083E38093C4001092C50088E13E
:1039F0008093C10086E08093C2005098589A259A1F
:103A000083E00E94531C0E94761C8033B1F1813305
:103A1000B9F1803409F455C0813409F45BC08234B3
:103A200009F46DC0853409F470C0803531F18235F8
:103A300021F1813511F1853509F46BC0863509F422
:103A400073C0843609F47AC0843709F4CEC0853750
:103A500009F429C1863709F44AC0809104018F5FB7
:103A600080930401853079F6E0910201F091030121
:103A700009950E94761C803351F60E94AA1CC3CF80
:103A80000E94761CC82F803241F784E10E94A21C5C
:103A900081E40E94A21C86E50E94A21C82E50E948D
:103AA000A21C8C2F0E94A21C89E40E94A21C83E508
:103AB0000E94A21C80E50E94A21C80E10E94A21C20
:103AC000A2CF0E94761C8638C0F20E94761C0E940B
:103AD000AA1C99CF0E94761C803809F486C18138CF
:103AE00009F487C1823809F488C1883921F080E05F
:103AF0000E94C31C88CF83E00E94C31C84CF84E152
:103B00000E94E21C0E94AA1C7ECF85E00E94E21C5B
:103B1000F9CF0E94761C809306010E94761C809348
:103B200007010E94AA1C6FCF0E94761C803309F403
:103B3000CAC083E00E94E21C80E0DACF0E94761CBB
:103B4000809309020E94761C8093080280910C02E7
:103B50008E7F80930C020E94761C853409F4C4C0C9
:103B600000E010E0809108029091090218161906F1
:103B700070F4C8E0D1E00E94761C89930F5F1F4F5C
:103B8000809108029091090208171907A0F30E947A
:103B9000761C803209F061CF80910C0280FFAEC0AC
:103BA000E0910601F0910701EE0FFF1F00E010E029
:103BB00020910802309109021216130680F4A8E041
:103BC000B1E0F999FECFF2BDE1BD8D9180BDFA9AC9
:103BD000F99A31960F5F1F4F0217130790F3F09376
:103BE0000701E093060184E166CF0E94761C809372
:103BF00009020E94761C8093080280910601909130
:103C00000701880F991F90930701809306010E9476
:103C1000761C853409F46EC080910C028E7F8093EF
:103C20000C020E94761C803209F0EDCE84E10E94E5
:103C3000A21C00E010E02091080230910902121647
:103C4000130608F03ACFE0910601F0910701809148
:103C50000C0280FF1FC0F999FECFF2BDE1BDF89ABA
:103C600080B50E94A21CE0910601F09107013196F7
:103C7000F0930701E09306012091080230910902B8
:103C80000F5F1F4F0217130708F017CF80910C0228
:103C900080FDE1CF869580FFB4C03196F093070197
:103CA000E0930601EDCF0E94761C803209F0D5CE5C
:103CB00084E10E94A21C8EE10E94A21C84E90E9461
:103CC000A21C86E0F8CE0E94761C0E94761CC82FAB
:103CD0000E94761CCC2309F47CC0C13009F47DC05D
:103CE00086E00E94C31C8FCE80910C02816080937D
:103CF0000C0236CF80910C02816091CF8091070138
:103D000087FD6FC010920B02809106019091070110
:103D1000880F991F909307018093060180910802F4
:103D200080FF09C08091080290910902019690934A
:103D3000090280930802F894F999FECF1127E091C7
:103D40000601F0910701C8E0D1E08091080290914E
:103D50000902103091F40091570001700130D9F33D
:103D600003E000935700E89500915700017001307F
:103D7000D9F301E100935700E8950990199000915B
:103D8000570001700130D9F301E000935700E89526
:103D90001395103498F011270091570001700130ED
:103DA000D9F305E000935700E895009157000170A2
:103DB0000130D9F301E100935700E895329602975C
:103DC00009F0C7CF103011F00296E5CF112484E13D
:103DD00072CE8EE10E94C31C16CE84E90E94C31CE1
:103DE00012CE81E080930B028FCF82E00E94C31C31
:103DF0000ACE81E00E94C31C06CE80E10E94C31C53
:103E000002CE84910E94A21C2091080230910902E6
:103E1000E0910601F091070140CFCF930E94761CFC
:103E2000C82F0E94A21CC13614F0C75503C0C0336E
:103E30000CF0C0538C2F992787FD9095CF91089552
:103E40000F931F930E940D1F082F112707FD109538
:103E500002951295107F1027007F10270E940D1FDA
:103E6000800F992787FD90951F910F910895CF930B
:103E7000C82F85958595859585958A3034F0895A22
:103E8000CF70CA3034F0C95A05C0805DCF70CA30D7
:103E9000D4F7C05D0E94A21C8C2F0E94A21CCF915F
:043EA0000895FFCFB3
:023EA40080009C
:0400000300003800C1
:00000001FF

View File

@ -1,126 +0,0 @@
:103800000C94341C0C94511C0C94511C0C94511CA1
:103810000C94511C0C94511C0C94511C0C94511C74
:103820000C94511C0C94511C0C94511C0C94511C64
:103830000C94511C0C94511C0C94511C0C94511C54
:103840000C94511C0C94511C0C94511C0C94511C44
:103850000C94511C0C94511C0C94511C0C94511C34
:103860000C94511C0C94511C11241FBECFEFD4E0BA
:10387000DEBFCDBF11E0A0E0B1E0EEEAFFE302C0A1
:1038800005900D92A230B107D9F712E0A2E0B1E0A5
:1038900001C01D92AD30B107E1F70E94331D0C94B9
:1038A000D51F0C94001C982F9595959595959595F9
:1038B000905D8F708A307CF0282F295A8091C0004B
:1038C00085FFFCCF9093C6008091C00085FFFCCFA0
:1038D0002093C6000895282F205DF0CF982F809167
:1038E000C00085FFFCCF9093C6000895EF92FF9231
:1038F0000F931F93EE24FF2487018091C00087FD62
:1039000017C00894E11CF11C011D111D81E2E8168D
:1039100081EAF80687E0080780E0180770F3E09175
:103920000401F091050109958091C00087FFE9CF5E
:103930008091C6001F910F91FF90EF9008950E9413
:10394000761C982F8091C00085FFFCCF9093C60015
:1039500091362CF490330CF09053892F089597559D
:10396000892F08951F930E949F1C182F0E949F1C4F
:103970001295107F810F1F9108951F93182F882390
:1039800021F00E94761C1150E1F71F9108951F93BA
:10399000182F0E94761C803249F0809103018F5FBE
:1039A000809303018530C1F01F9108958091C0007C
:1039B00085FFFCCF84E18093C6008091C00085FF25
:1039C000FCCF1093C6008091C00085FFFCCF80E142
:1039D0008093C6001F910895E0910401F0910501C4
:1039E00009951F9108950E94761C803241F08091C4
:1039F00003018F5F80930301853081F008958091EA
:103A0000C00085FFFCCF84E18093C6008091C00098
:103A100085FFFCCF80E18093C6000895E09104010A
:103A2000F09105010995089510920A028823D1F0BA
:103A300090E048EC50E02D9A28EE33E0FA013197FF
:103A4000F1F721503040D1F72D9828EE33E0FA01FC
:103A50003197F1F721503040D1F79F5F981758F315
:103A600080930A0208953F924F925F926F927F92E5
:103A70008F929F92AF92BF92CF92DF92EF92FF927E
:103A80000F931F93CF93DF9394B714BE8091600080
:103A90008861809360001092600091FF0CC289E100
:103AA0008093C4001092C50088E18093C10086E035
:103AB0008093C2005098589A259A81E00E94141D64
:103AC00044E1F42E3EE1E32E24E9D22E96E0C92E05
:103AD00080E1B82EAA24A39401E4902E16E5812E4D
:103AE000B2E57B2EA0E26A2EF9E45F2EE3E54E2ECE
:103AF00070E5372E0E94761C8033B9F18133C1F115
:103B0000803409F470C0813409F477C0823409F438
:103B100086C0853409F489C0803539F1823529F1B0
:103B2000813509F4AFC1853509F485C0863509F4BE
:103B30008DC0843609F435C1843709F4C1C0853796
:103B400009F490C0863709F466C0809103018F5F45
:103B500080930301853071F6E0910401F091050135
:103B600009950E94761C803349F60E94F31CC2CF4F
:103B70000E94761C803249F78091C00085FFFCCFFF
:103B8000F092C6008091C00085FFFCCF9092C600E5
:103B90008091C00085FFFCCF8092C6008091C0005C
:103BA00085FFFCCF7092C6008091C00085FFFCCFDE
:103BB0006092C6008091C00085FFFCCF5092C60085
:103BC0008091C00085FFFCCF4092C6008091C0006C
:103BD00085FFFCCF3092C6008091C00085FFFCCFEE
:103BE000B092C60087CF0E94761C863808F4BDCFFD
:103BF0000E94761C0E94F31C7DCF0E94761C8038A8
:103C000009F45AC0813809F453C0823809F440C11C
:103C1000883909F449C080E00E94C71C6BCF84E159
:103C20000E94BD1C0E94F31C65CF85E00E94BD1C54
:103C30000E94F31C5FCF0E94761C809306010E94B5
:103C4000761C809307010E94F31C54CF0E94761CBF
:103C5000803309F421C183E00E94BD1C80E00E94F2
:103C6000C71C48CF0E94761C803209F06ECF80912D
:103C7000C00085FFFCCFF092C6008091C00085FF98
:103C8000FCCFE092C6008091C00085FFFCCFD092AF
:103C9000C6008091C00085FFFCCFC092C600809115
:103CA000C00085FFFCCF9CCF83E00E94C71C22CFC1
:103CB00081E00E94C71C1ECF82E00E94C71C1ACF61
:103CC0000E94761C809309020E94761C8093080251
:103CD0008091060190910701880F991F9093070129
:103CE000809306010E94761C853409F4C5C080913A
:103CF0000C028E7F80930C020E94761C803209F0A9
:103D0000F9CE8091C00085FFFCCFF092C600609193
:103D10000802709109026115710591F140E050E0CF
:103D200080910C02A82FA170B82FB27010C0BB23D5
:103D300061F1E0910601F09107013196F0930701DE
:103D4000E09306014F5F5F4F46175707C8F4AA2359
:103D500071F3F999FECF209106013091070132BD30
:103D600021BDF89A90B58091C00085FFFCCF90935B
:103D7000C6002F5F3F4F3093070120930601E2CF2B
:103D80008091C00085FFFCCF2BCFE0910601F09120
:103D9000070194918091C00085FFFCCF9093C600ED
:103DA000CCCF0E94761C809309020E94761C8093DF
:103DB000080280910C028E7F80930C020E94761C78
:103DC000853429F480910C02816080930C028091EB
:103DD000080290910902892B89F000E010E00E940E
:103DE000761CF801E85FFE4F80830F5F1F4F8091C4
:103DF0000802909109020817190788F30E94761C9F
:103E0000803209F0A2CE80910C0280FF62C0409106
:103E1000060150910701440F551F5093070140932D
:103E20000601609108027091090261157105C9F0DF
:103E3000E8E0F1E09A01DB01AE0FBF1FF999FECF78
:103E400032BD21BD819180BDFA9AF99A2F5F3F4F13
:103E5000EA17FB0799F7460F571F50930701409346
:103E600006018091C00085FFFCCFF092C6008091D2
:103E7000C00085FFFCCFB4CE80910C02816080939E
:103E80000C023ACF0E94F31C88E080936000FFCFC1
:103E900080E10E94C71C2ECE0E94761C0E94761CD8
:103EA000182F0E94761C112381F0113051F086E00A
:103EB0000E94C71C1FCEE0910401F09105010995F5
:103EC000EECD84E90E94C71C15CE8EE10E94C71C6E
:103ED00011CE809107018823880F880B8A21809357
:103EE0000B028091060190910701880F991F909312
:103EF0000701809306018091080280FF09C080912C
:103F00000802909109020196909309028093080299
:103F1000F894F999FECF1127E0910601F09107017D
:103F2000C8E0D1E08091080290910902103091F42C
:103F30000091570001700130D9F303E0009357005E
:103F4000E8950091570001700130D9F301E1009329
:103F50005700E895099019900091570001700130C1
:103F6000D9F301E000935700E8951395103498F0C9
:103F700011270091570001700130D9F305E000933B
:103F80005700E8950091570001700130D9F301E125
:103F900000935700E8953296029709F0C7CF10308A
:0E3FA00011F00296E5CF11245CCFF894FFCF0C
:023FAE00800091
:0400000300003800C1
:00000001FF

View File

@ -1,238 +0,0 @@
# Makefile for ATmegaBOOT
# E.Lins, 18.7.2005
#
# Instructions
#
# To make bootloader .hex file:
# make diecimila
# make lilypad
# make ng
# etc...
#
# To burn bootloader .hex file:
# make diecimila_isp
# make lilypad_isp
# make ng_isp
# etc...
# program name should not be changed...
PROGRAM = ATmegaBOOT_168
# enter the parameters for the avrdude isp tool
ISPTOOL = stk500v2
ISPPORT = usb
ISPSPEED = -b 115200
MCU_TARGET = atmega168
LDSECTION = --section-start=.text=0x3800
# the efuse should really be 0xf8; since, however, only the lower
# three bits of that byte are used on the atmega168, avrdude gets
# confused if you specify 1's for the higher bits, see:
# http://tinker.it/now/2007/02/24/the-tale-of-avrdude-atmega168-and-extended-bits-fuses/
#
# similarly, the lock bits should be 0xff instead of 0x3f (to
# unlock the bootloader section) and 0xcf instead of 0x0f (to
# lock it), but since the high two bits of the lock byte are
# unused, avrdude would get confused.
ISPFUSES = avrdude -c $(ISPTOOL) -p $(MCU_TARGET) -P $(ISPPORT) $(ISPSPEED) \
-e -u -U lock:w:0x3f:m -U efuse:w:0x$(EFUSE):m -U hfuse:w:0x$(HFUSE):m -U lfuse:w:0x$(LFUSE):m
ISPFLASH = avrdude -c $(ISPTOOL) -p $(MCU_TARGET) -P $(ISPPORT) $(ISPSPEED) \
-U flash:w:$(PROGRAM)_$(TARGET).hex -U lock:w:0x0f:m
STK500 = "C:\Program Files\Atmel\AVR Tools\STK500\Stk500.exe"
STK500-1 = $(STK500) -e -d$(MCU_TARGET) -pf -vf -if$(PROGRAM)_$(TARGET).hex \
-lFF -LFF -f$(HFUSE)$(LFUSE) -EF8 -ms -q -cUSB -I200kHz -s -wt
STK500-2 = $(STK500) -d$(MCU_TARGET) -ms -q -lCF -LCF -cUSB -I200kHz -s -wt
OBJ = $(PROGRAM).o
OPTIMIZE = -Os
DEFS =
LIBS =
CC = avr-gcc
# Override is only needed by avr-lib build system.
override CFLAGS = -g -Wall $(OPTIMIZE) -mmcu=$(MCU_TARGET) -DF_CPU=$(AVR_FREQ) $(DEFS)
override LDFLAGS = -Wl,$(LDSECTION)
#override LDFLAGS = -Wl,-Map,$(PROGRAM).map,$(LDSECTION)
OBJCOPY = avr-objcopy
OBJDUMP = avr-objdump
all:
lilypad: TARGET = lilypad
lilypad: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>1' '-DNUM_LED_FLASHES=3'
lilypad: AVR_FREQ = 8000000L
lilypad: $(PROGRAM)_lilypad.hex
lilypad_isp: lilypad
lilypad_isp: TARGET = lilypad
lilypad_isp: HFUSE = DD
lilypad_isp: LFUSE = E2
lilypad_isp: EFUSE = 00
lilypad_isp: isp
lilypad_resonator: TARGET = lilypad_resonator
lilypad_resonator: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=3'
lilypad_resonator: AVR_FREQ = 8000000L
lilypad_resonator: $(PROGRAM)_lilypad_resonator.hex
lilypad_resonator_isp: lilypad_resonator
lilypad_resonator_isp: TARGET = lilypad_resonator
lilypad_resonator_isp: HFUSE = DD
lilypad_resonator_isp: LFUSE = C6
lilypad_resonator_isp: EFUSE = 00
lilypad_resonator_isp: isp
pro8: TARGET = pro_8MHz
pro8: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' '-DWATCHDOG_MODS'
pro8: AVR_FREQ = 8000000L
pro8: $(PROGRAM)_pro_8MHz.hex
pro8_isp: pro8
pro8_isp: TARGET = pro_8MHz
pro8_isp: HFUSE = DD
pro8_isp: LFUSE = C6
pro8_isp: EFUSE = 00
pro8_isp: isp
pro16: TARGET = pro_16MHz
pro16: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' '-DWATCHDOG_MODS'
pro16: AVR_FREQ = 16000000L
pro16: $(PROGRAM)_pro_16MHz.hex
pro16_isp: pro16
pro16_isp: TARGET = pro_16MHz
pro16_isp: HFUSE = DD
pro16_isp: LFUSE = C6
pro16_isp: EFUSE = 00
pro16_isp: isp
pro20: TARGET = pro_20mhz
pro20: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' '-DWATCHDOG_MODS'
pro20: AVR_FREQ = 20000000L
pro20: $(PROGRAM)_pro_20mhz.hex
pro20_isp: pro20
pro20_isp: TARGET = pro_20mhz
pro20_isp: HFUSE = DD
pro20_isp: LFUSE = C6
pro20_isp: EFUSE = 00
pro20_isp: isp
diecimila: TARGET = diecimila
diecimila: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1'
diecimila: AVR_FREQ = 16000000L
diecimila: $(PROGRAM)_diecimila.hex
diecimila_isp: diecimila
diecimila_isp: TARGET = diecimila
diecimila_isp: HFUSE = DD
diecimila_isp: LFUSE = FF
diecimila_isp: EFUSE = 00
diecimila_isp: isp
ng: TARGET = ng
ng: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>1' '-DNUM_LED_FLASHES=3'
ng: AVR_FREQ = 16000000L
ng: $(PROGRAM)_ng.hex
ng_isp: ng
ng_isp: TARGET = ng
ng_isp: HFUSE = DD
ng_isp: LFUSE = FF
ng_isp: EFUSE = 00
ng_isp: isp
atmega328: TARGET = atmega328
atmega328: MCU_TARGET = atmega328p
atmega328: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' -DBAUD_RATE=57600
atmega328: AVR_FREQ = 16000000L
atmega328: LDSECTION = --section-start=.text=0x7800
atmega328: $(PROGRAM)_atmega328.hex
atmega328_isp: atmega328
atmega328_isp: TARGET = atmega328
atmega328_isp: MCU_TARGET = atmega328p
atmega328_isp: HFUSE = DA
atmega328_isp: LFUSE = FF
atmega328_isp: EFUSE = 05
atmega328_isp: isp
atmega328_notp: TARGET = atmega328_notp
atmega328_notp: MCU_TARGET = atmega328
atmega328_notp: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' -DBAUD_RATE=57600
atmega328_notp: AVR_FREQ = 16000000L
atmega328_notp: LDSECTION = --section-start=.text=0x7800
atmega328_notp: $(PROGRAM)_atmega328_notp.hex
atmega328_notp_isp: atmega328_notp
atmega328_notp_isp: TARGET = atmega328
atmega328_notp_isp: MCU_TARGET = atmega328
atmega328_notp_isp: HFUSE = DA
atmega328_notp_isp: LFUSE = FF
atmega328_notp_isp: EFUSE = 05
atmega328_notp_isp: isp
atmega328_pro8: TARGET = atmega328_pro_8MHz
atmega328_pro8: MCU_TARGET = atmega328p
atmega328_pro8: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' -DBAUD_RATE=57600 -DDOUBLE_SPEED
atmega328_pro8: AVR_FREQ = 8000000L
atmega328_pro8: LDSECTION = --section-start=.text=0x7800
atmega328_pro8: $(PROGRAM)_atmega328_pro_8MHz.hex
atmega328_pro8_isp: atmega328_pro8
atmega328_pro8_isp: TARGET = atmega328_pro_8MHz
atmega328_pro8_isp: MCU_TARGET = atmega328p
atmega328_pro8_isp: HFUSE = DA
atmega328_pro8_isp: LFUSE = FF
atmega328_pro8_isp: EFUSE = 05
atmega328_pro8_isp: isp
mega: TARGET = atmega1280
mega: MCU_TARGET = atmega1280
mega: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=0' -DBAUD_RATE=57600
mega: AVR_FREQ = 16000000L
mega: LDSECTION = --section-start=.text=0x1F000
mega: $(PROGRAM)_atmega1280.hex
mega_isp: mega
mega_isp: TARGET = atmega1280
mega_isp: MCU_TARGET = atmega1280
mega_isp: HFUSE = DA
mega_isp: LFUSE = FF
mega_isp: EFUSE = F5
mega_isp: isp
isp: $(TARGET)
$(ISPFUSES)
$(ISPFLASH)
isp-stk500: $(PROGRAM)_$(TARGET).hex
$(STK500-1)
$(STK500-2)
%.elf: $(OBJ)
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS)
clean:
rm -rf *.o *.elf *.lst *.map *.sym *.lss *.eep *.srec *.bin *.hex
%.lst: %.elf
$(OBJDUMP) -h -S $< > $@
%.hex: %.elf
$(OBJCOPY) -j .text -j .data -O ihex $< $@
%.srec: %.elf
$(OBJCOPY) -j .text -j .data -O srec $< $@
%.bin: %.elf
$(OBJCOPY) -j .text -j .data -O binary $< $@

View File

@ -0,0 +1 @@
:107E0000112484B714BE81FFF0D085E080938100F7

View File

@ -0,0 +1 @@
:107E000001C0DCC0112484B7882361F0982F9A70D8

View File

@ -0,0 +1 @@
:107E000001C0DCC0112484B7882361F0982F9A70D8

View File

@ -0,0 +1 @@
:107E0000112484B714BE81FFF0D085E080938100F7

View File

@ -1,57 +0,0 @@
:020000021000EC
:10FC000012E0A0E0B2E0ECEAFEEF01E00BBF02C0C0
:10FC100007900D92AC39B107D9F701C021C1112469
:10FC200084B7882369F0982F9A70923049F081FF49
:10FC300002C097EF94BF282E80E0FDD00C94000006
:10FC400085E08093810082E08093C00088E180930A
:10FC5000C10086E08093C20080E18093C4008EE002
:10FC6000EAD0279A86E020E33CEF91E030938500CC
:10FC70002093840096BBB09BFECF1F9AA89540911D
:10FC8000C00047FD02C0815089F7FF24F39455E07E
:10FC9000E52E61E1D62EC3D08134C1F4C0D0C82F87
:10FCA000D0D0C23809F43AC0C13869F488E00CC039
:10FCB000843709F482C0853709F0A2C0C2D08EE132
:10FCC000A7D087E9A5D083E0A3D09FC0823411F4E8
:10FCD00084E103C0853419F485E0BBD096C0853536
:10FCE00079F49DD0082F9BD0182F87FF03C08BB7C6
:10FCF000816002C08BB78E7F8BBF000F111F84C045
:10FD0000863581F48CD08D3459F489D0CBB787D027
:10FD1000C170880FC82BCBBF81E09BD080E0D4CFCF
:10FD200083E0FBCF843609F0C3CF79D0C82FD0E071
:10FD3000DC2FCC2774D0C82B72D0C82E5E01812C4A
:10FD400032E0932E6CD0F40181934F01F1E0AF1AB1
:10FD5000B108C1F776D085E4C81212C0DE5F480151
:10FD6000A12C92E0B92EAC16BD0609F44EC0F501E7
:10FD700061915F01C4018CD0FFEF8F1A9F0AF3CF0E
:10FD800083E0F80187BFE89507B600FCFDCFA0E04F
:10FD9000B2E0F8018D919D910C01F7BEE895112418
:10FDA000229732962097B1F7F801E7BEE89507B69B
:10FDB00000FCFDCFD7BEE89528C031D0C82FD0E0D9
:10FDC000DC2FCC272CD05E01A82A29D0982E39D040
:10FDD000E801F5E49F120BC0CE0152D019D081E0AA
:10FDE000A81AB1082196A114B104B1F70EC0FE0102
:10FDF0008791EF010DD0E1E0AE1AB108C1F705C05F
:10FE0000813511F488E017D01CD080E101D043CFB8
:10FE10009091C00095FFFCCF8093C600089580911B
:10FE2000C00087FFFCCF8091C00084FD01C0A89571
:10FE30008091C6000895E0E6F0E098E19083808329
:10FE40000895EDDF803219F088E0F5DFFFCF84E11F
:10FE5000DFCFCF93C82FE3DFC150E9F7CF91F1CFC8
:10FE6000FC010A0167BFE895112407B600FCFDCF2D
:10FE7000667029F0452B19F481E187BFE895089554
:10FE8000F999FECF92BD81BDF89A992780B5089562
:10FE9000262FF999FECF1FBA92BD81BD20BD0FB6A6
:0CFEA000F894FA9AF99A0FBE01960895A2
:10FEAC0056657273696F6E3D382E30004F50544951
:10FEBC00424F4F545F435553544F4D5645523D306E
:10FECC00004465766963653D61746D6567613132C7
:10FEDC00383000465F4350553D313630303030308D
:10FEEC00304C00424947424F4F543D3100427569F6
:10FEFC006C743A53657020323020323031383A30DD
:10FF0C00313A33333A343900554152543D30004282
:10FF1C004155445F524154453D313135323030000A
:10FF2C004C45443D4237004C45445F535441525478
:0CFF3C005F464C41534845533D330000E4
:02FFFE000008F9
:040000031000FC00ED
:00000001FF

View File

@ -1,33 +0,0 @@
:103E000001C0DCC0112484B7882361F0982F9A7018
:103E1000923041F081FF02C097EF94BF282E80E0DE
:103E2000B8D0EEC085E08093810082E08093C0002E
:103E300088E18093C10086E08093C20080E1809396
:103E4000C4008EE0A6D0259A86E020E33CEF91E006
:103E5000309385002093840096BBB09BFECF1D9AC3
:103E6000A8954091C00047FD02C0815089F7EE241B
:103E7000E39495E0D92E21E1C22E7FD0813461F404
:103E80007CD0182F8CD01238E9F0113811F488E06A
:103E900001C083E06BD067C0823411F484E103C0B9
:103EA000853419F485E083D05EC0853539F465D05A
:103EB000C82F63D0D82FCC0FDD1F54C0863521F416
:103EC00084E075D080E0E6CF843609F02EC055D06E
:103ED00054D0F82E52D0B82E00E011E04ED0F801A8
:103EE00081938F01FE12FACF5AD0F5E4BF1201C0C0
:103EF000FFCF83E0FE0187BFE89507B600FCFDCF4A
:103F0000A0E0B1E0FE018D919D910C01E7BEE89526
:103F100011243296FA12F7CFFE01D7BEE89507B604
:103F200000FCFDCFC7BEE8951EC0843771F425D0D4
:103F300024D0F82E22D033D08E01F80185918F0144
:103F400015D0FA94F110F9CF0EC0853739F427D087
:103F50008EE10CD084E90AD086E09CCF813511F443
:103F600088E017D01CD080E101D087CF9091C000AD
:103F700095FFFCCF8093C60008958091C00087FF15
:103F8000FCCF8091C00084FD01C0A8958091C6003F
:103F90000895E0E6F0E098E1908380830895EDDFF6
:103FA000803219F088E0F5DFFFCF84E1DFCFCF93D7
:103FB000C82FE3DFC150E9F7CF91F1CFFC010A012F
:103FC00067BFE895112407B600FCFDCF667029F0A5
:0C3FD000452B19F481E187BFE8950895A6
:023FFE000008B9
:0400000300003E00BB
:00000001FF

View File

@ -1,35 +0,0 @@
:107E0000112484B714BE81FFF0D085E080938100F7
:107E100082E08093C00088E18093C10086E0809377
:107E2000C20088E08093C4008EE0C9D0259A86E025
:107E300028E13EEF91E0309385002093840096BBCB
:107E4000B09BFECF1D9AA8958150A9F7CC24DD24C4
:107E500088248394B5E0AB2EA1E19A2EF3E0BF2EE7
:107E6000A2D0813461F49FD0082FAFD0023811F036
:107E7000013811F484E001C083E08DD089C08234E0
:107E800011F484E103C0853419F485E0A6D080C0E4
:107E9000853579F488D0E82EFF2485D0082F10E0AE
:107EA000102F00270E291F29000F111F8ED06801E7
:107EB0006FC0863521F484E090D080E0DECF843638
:107EC00009F040C070D06FD0082F6DD080E0C81688
:107ED00080E7D80618F4F601B7BEE895C0E0D1E017
:107EE00062D089930C17E1F7F0E0CF16F0E7DF06D8
:107EF00018F0F601B7BEE89568D007B600FCFDCFD4
:107F0000A601A0E0B1E02C9130E011968C91119780
:107F100090E0982F8827822B932B1296FA010C0160
:107F200087BEE89511244E5F5F4FF1E0A038BF0790
:107F300051F7F601A7BEE89507B600FCFDCF97BE46
:107F4000E89526C08437B1F42ED02DD0F82E2BD052
:107F50003CD0F601EF2C8F010F5F1F4F84911BD097
:107F6000EA94F801C1F70894C11CD11CFA94CF0C13
:107F7000D11C0EC0853739F428D08EE10CD085E9AC
:107F80000AD08FE07ACF813511F488E018D01DD067
:107F900080E101D065CF982F8091C00085FFFCCF94
:107FA0009093C60008958091C00087FFFCCF809118
:107FB000C00084FD01C0A8958091C6000895E0E648
:107FC000F0E098E1908380830895EDDF803219F02E
:107FD00088E0F5DFFFCF84E1DECF1F93182FE3DFCA
:107FE0001150E9F7F2DF1F91089580E0E8DFEE27F6
:047FF000FF270994CA
:027FFE00040479
:0400000300007E007B
:00000001FF

View File

@ -1,53 +0,0 @@
:10FC000011E0A0E0B1E0ECE7FEEF02C005900D923C
:10FC1000AC39B107D9F701C00BC1112484B78823CF
:10FC200061F0982F9A70923041F081FF02C097EFF7
:10FC300094BF282E80E0E7D0E3C185E08093810067
:10FC400082E08093C00088E18093C10086E08093C9
:10FC5000C20080E18093C4008EE0D5D0209A86E077
:10FC600020E33CEF91E0309385002093840096BB25
:10FC7000B09BFECF189AA8954091C00047FD02C0E6
:10FC8000815089F7FF24F39455E0E52E61E1D62EEB
:10FC9000AED0813461F4ABD0C82FBBD0C238E9F00C
:10FCA000C13811F488E001C083E09AD096C0823454
:10FCB00011F484E103C0853419F485E0B2D08DC01D
:10FCC000853539F494D0082F92D0182F000F111FCA
:10FCD00083C0863521F484E0A4D080E0E6CF84366A
:10FCE00009F048C084D0C82FD0E0DC2FCC277FD0CB
:10FCF000C82B7DD0C82E5E01812C9924939477D097
:10FD0000F40181934F01F1E0AF1AB108C1F781D03E
:10FD100085E4C81212C0D3954801A12CBB24B3942A
:10FD2000AC16BD0609F459C0F50161915F01C4012B
:10FD300097D0FFEF8F1A9F0AF3CF83E0F80187BFB8
:10FD4000E89507B600FCFDCFA0E0B1E0F8018D9189
:10FD50009D910C01F7BEE8951124229732962097C9
:10FD6000B1F7F801E7BEE89507B600FCFDCFD7BEB6
:10FD7000E89533C0843719F53AD0C82FD0E0DC2F8E
:10FD8000CC2735D05E01A82A32D0982E42D0E80187
:10FD9000F5E49F120BC0CE015BD022D081E0A81AFF
:10FDA000B1082196A114B104B1F717C0FE018591E5
:10FDB000EF0116D0E1E0AE1AB108C1F70EC08537E9
:10FDC00039F427D08EE10CD086E90AD08AE06DCFD5
:10FDD000813511F488E017D01CD080E101D058CFD4
:10FDE0009091C00095FFFCCF8093C600089580914C
:10FDF000C00087FFFCCF8091C00084FD01C0A895A2
:10FE00008091C6000895E0E6F0E098E19083808359
:10FE10000895EDDF803219F088E0F5DFFFCF84E14F
:10FE2000DFCFCF93C82FE3DFC150E9F7CF91F1CFF8
:10FE3000FC010A0167BFE895112407B600FCFDCF5D
:10FE4000667029F0452B19F481E187BFE895089584
:10FE5000F999FECF92BD81BDF89A992780B5089592
:10FE6000262FF999FECF1FBA92BD81BD20BD0FB6D6
:0CFE7000F894FA9AF99A0FBE01960895D2
:10FE7C0056657273696F6E3D382E30004F50544981
:10FE8C00424F4F545F435553544F4D5645523D309E
:10FE9C00004465766963653D61746D6567613634F0
:10FEAC00347000465F4350553D3136303030303081
:10FEBC00304C00424947424F4F543D310042756926
:10FECC006C743A53657020323020323031383A300D
:10FEDC00313A33333A333300554152543D300042BA
:10FEEC004155445F524154453D313135323030003B
:10FEFC004C45443D4230004C45445F5354415254B0
:0CFF0C005F464C41534845533D33000014
:02FFFE000008F9
:040000030000FC00FD
:00000001FF

View File

@ -1,32 +0,0 @@
:101E000001C0D4C011248FE594E09EBF8DBF84B77C
:101E1000882361F0982F9A70923041F081FF02C0C0
:101E200097EF94BF282E80E0AED0EAC085E08EBD4B
:101E300082E08BB988E18AB986E880BD80E189B902
:101E40008EE0A1D0BD9A86E020E33CEF44E050E272
:101E50003DBD2CBD48BF08B602FEFDCF98B3952707
:101E600098BBA8955F9902C0815091F7EE24E39446
:101E700025E0D22E31E1C32E7FD0813461F47CD0B5
:101E8000182F85D01238E9F0113811F488E001C01C
:101E900083E06ED06AC0823411F484E103C08534DB
:101EA00019F485E07CD061C0853539F465D0C82F40
:101EB00063D0D82FCC0FDD1F57C0863521F484E0C6
:101EC0006ED080E0E6CF843609F031C055D054D0D2
:101ED000182F52D0F82E012F80E6A82EB12C4CD00E
:101EE000F50181935F010150D1F751D0F5E4FF1264
:101EF00001C0FFCF83E0FE0187BFE89507B600FC75
:101F0000FDCFA0E6B0E0FE018D919D910C01E7BEF2
:101F1000E8951124125032961111F6CFFE01D7BE6A
:101F2000E89507B600FCFDCFC7BEE8951EC0843714
:101F300071F422D021D0F82E1FD029D08E01F801C3
:101F400085918F0115D0FA94F110F9CF0EC0853725
:101F500039F41DD08EE10CD083E90AD087E099CF07
:101F6000813511F488E00FD012D080E101D084CF08
:101F70005D9BFECF8CB908955F9BFECF5C9901C03D
:101F8000A8958CB1089598E191BD81BD0895F4DFC5
:101F9000803219F088E0F7DFFFCF84E1E9CFCF93FB
:101FA000C82FEADFC150E9F7CF91F1CFFC010A0158
:101FB00067BFE895112407B600FCFDCF667029F0D5
:0C1FC000452B19F481E187BFE8950895D6
:021FFE000008D9
:0400000300001E00DB
:00000001FF

View File

@ -1,33 +0,0 @@
:107E000001C0DCC0112484B7882361F0982F9A70D8
:107E1000923041F081FF02C097EF94BF282E80E09E
:107E2000B8D0EEC085E08093810082E08093C000EE
:107E300088E18093C10086E08093C20082E2809353
:107E4000C4008EE0A6D0259A86E020E33CEF91E0C6
:107E5000309385002093840096BBB09BFECF1D9A83
:107E6000A8954091C00047FD02C0815089F7EE24DB
:107E7000E39495E0D92E21E1C22E7FD0813461F4C4
:107E80007CD0182F8CD01238E9F0113811F488E02A
:107E900001C083E06BD067C0823411F484E103C079
:107EA000853419F485E083D05EC0853539F465D01A
:107EB000C82F63D0D82FCC0FDD1F54C0863521F4D6
:107EC00084E075D080E0E6CF843609F02EC055D02E
:107ED00054D0F82E52D0B82E00E011E04ED0F80168
:107EE00081938F01FE12FACF5AD0F5E4BF1201C080
:107EF000FFCF83E0FE0187BFE89507B600FCFDCF0A
:107F0000A0E0B1E0FE018D919D910C01E7BEE895E6
:107F100011243296FA12F7CFFE01D7BEE89507B6C4
:107F200000FCFDCFC7BEE8951EC0843771F425D094
:107F300024D0F82E22D033D08E01F80185918F0104
:107F400015D0FA94F110F9CF0EC0853739F427D047
:107F50008EE10CD085E90AD08FE09CCF813511F4F9
:107F600088E017D01CD080E101D087CF9091C0006D
:107F700095FFFCCF8093C60008958091C00087FFD5
:107F8000FCCF8091C00084FD01C0A8958091C600FF
:107F90000895E0E6F0E098E1908380830895EDDFB6
:107FA000803219F088E0F5DFFFCF84E1DFCFCF9397
:107FB000C82FE3DFC150E9F7CF91F1CFFC010A01EF
:107FC00067BFE895112407B600FCFDCF667029F065
:0C7FD000452B19F481E187BFE895089566
:027FFE00000879
:0400000300007E007B
:00000001FF

View File

@ -1,7 +1,8 @@

#ifndef Arduino_h
#ifndef Arduino_h
#define Arduino_h
#pragma message "GyverCore v1.7.0 inside. Enjoy"
// ===== DEF LIBS =====
#include <stdlib.h>
#include <stdbool.h>
@ -103,6 +104,7 @@ void init(void);
// ===== PIN OPERATION ======
// new
void lightInit(void);
void setPWM_20kHz(byte pin);
void setPWM_9_10_resolution(boolean resolution); // 0 - 8 бит, 1 - 10 бит
void setPwmFreqnuency(byte pin, byte freq); //default, 8KHZ, 31KHZ
@ -119,8 +121,14 @@ int analogRead(uint8_t pin);
void analogReference(uint8_t mode);
void analogWrite(uint8_t pin, int val);
#ifndef _GYVERCORE_NOMILLIS
unsigned long millis(void);
unsigned long micros(void);
#else
#define millis() 0
#define micros() 0
#endif
void delay(unsigned long);
void delayMicroseconds(unsigned int us);
unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout);

View File

@ -0,0 +1,20 @@
#include "Arduino.h"
/* Легкий вариант инцииализации периферии ATmega328 */
void lightInit() {
/* timer 0*/
TCCR0A = 0b00000011;
TCCR0B = 0b00000011;
#ifndef _GYVERCORE_NOMILLIS
TIMSK0 |= (1<<TOIE0); // ovf interrupt вкл
#endif
/* timer 1 */
TCCR1A = 0b00000001;
TCCR1B = 0b00000011;
/*timer 2*/
TCCR2A = 0b00000001;
TCCR2B = 0b00000100;
/* adc */
ADCSRA = 0b10000010;
}

View File

@ -3,12 +3,15 @@
int main(void)
{ WDTCSR |= (1<<WDCE); // даем разрешение отключить ватчдог
WDTCSR = 0; // Первым делом отключаем ватчдог
#if defined (_GYVERCORE_DEF_INIT)
init(); // инициализация таймеров и ацп
#elif defined (_GYVERCORE_LIGHT_INIT)
lightInit();// лёгкая инициализация таймеров и ацп
#endif
setup(); // функция setup
while (1) { // бесконечный цикл
for(;;) { // бесконечный цикл
loop(); // функция loop
if (serialEventRun) serialEventRun(); // обслуживание serial
}
return 0;
}

View File

@ -179,7 +179,7 @@ void analogWrite(uint8_t pin, int val)
case 3: // 2B
if (!_TMR2_HF_PWM) {
TCCR2A |= (1 << COM2B1);
OCR2A = val;
OCR2B = val;
} else {
if (val == 0) {
bitClear(TCCR2A, COM2B1);

View File

@ -1,13 +1,16 @@
#include "Arduino.h"
#include "timeControl.h"
/* функции времени и инициализация таймеров , АЦП*/
/*
#define MICROSECONDS_PER_TIMER0_OVERFLOW (clockCyclesToMicroseconds(64 * 256)) // 1024 на 16 МГц / 2048 на 8 МГц
#define MICROSECONDS_PER_TIMER0_OVERFLOW (clockCyclesToMicroseconds(64 * 256)) // 1024 на 16 МГц / 2048 на 8 МГц / 16384 на 1 МГц / 128000 на 128 кГц
#define MILLIS_INC (MICROSECONDS_PER_TIMER0_OVERFLOW / 1000) // 1 на 16 МГц / 2 на 8 МГц
#define FRACT_INC ((MICROSECONDS_PER_TIMER0_OVERFLOW % 1000) >> 3) // 3 на 16 МГц / 6 на 8 МГц
#define FRACT_MAX (1000 >> 3) // 125 на 16 МГц / 125 на 8 МГц
*/
#ifndef _GYVERCORE_NOMILLIS
#include <util/delay.h>
#endif
#if F_CPU >= 16000000L
#define MILLIS_INC 1
@ -29,13 +32,22 @@
#define FRACT_MAX 125
#define MICROS_MULT 64
#elif F_CPU == 128000L
#include <util/delay.h>
#define MILLIS_INC 128
#define FRACT_INC 0
#define FRACT_MAX 125
#define MICROS_MULT 500
#endif
#ifndef _GYVERCORE_NOMILLIS // переключатель, отключающий millis(), освобождающий вектор прерывания
volatile unsigned long timer0_overflow_count = 0;
volatile unsigned long timer0_millis = 0;
static unsigned char timer0_fract = 0;
#ifdef MILLIS_TMRS // переключатель, отключающий millis(), освобождающий вектор прерывания
ISR(TIMER0_OVF_vect)
{
timer0_millis += MILLIS_INC;
@ -46,7 +58,6 @@ ISR(TIMER0_OVF_vect)
}
timer0_overflow_count++;
}
#endif
unsigned long millis() {
cli(); // остановить счет
@ -66,11 +77,14 @@ unsigned long micros() {
// return ((m << 8) + t) * (64 / clockCyclesPerMicrosecond()); // default
}
#endif
void delay(unsigned long ms) {
#ifndef _GYVERCORE_NOMILLIS
_delay_ms(ms);
#else
void delay(unsigned long ms)
{
uint32_t start = micros(); // запомнили время старта
while (ms > 0) { // ведем отсчет
yield();
while ( ms > 0 && (micros() - start) >= 1000) {
@ -78,10 +92,15 @@ void delay(unsigned long ms)
start += 1000;
}
}
#endif
}
void delayMicroseconds(unsigned int us) // работает на счете тиков
{
void delayMicroseconds(unsigned int us) {
#ifndef _GYVERCORE_NOMILLIS
_delay_us(us);
#else
// работает на счете тиков
#if F_CPU >= 16000000L
if (us <= 1) return; // = 3 cycles, (4 when true)
us <<= 2; // x4 us, = 4 cycles
@ -95,13 +114,20 @@ void delayMicroseconds(unsigned int us) // работает на счете ти
if (us <= 25) return; //= 3 cycles, (4 when true)
us -= 22; // = 2 cycles
us >>= 2; // us div 4, = 4 cycles
#endif
#if F_CPU > 128000L
// busy wait
__asm__ __volatile__ (
"1: sbiw %0,1" "\n\t" // 2 cycles
"brne 1b" : "=w" (us) : "0" (us) // 2 cycles
);
// return = 4 cycles
#else
_delay_us(us);
#endif
#endif
}
void init() // функция инициализации
@ -110,15 +136,16 @@ cli();
/* timer 0 */
TCCR0A = 0b00000011; // fast pwm 8 bit
TCCR0B = 0b00000011; // делитель 64
#ifndef _GYVERCORE_NOMILLIS
TIMSK0 |= (1<<TOIE0); // ovf interrupt вкл
#endif
/* timer 1 */
TCCR1A = 0b00000001; // fast pwm 8 bit
TCCR1A = 0b00000001; // phasecorrect pwm 8 bit
TCCR1B = 0b00001011; // делитель 64
/* timer 2 */
TCCR2A = 0b00000011; // fast pwm 8 bit
TCCR2A = 0b00000001; // phasecorrect pwm 8 bit
TCCR2B = 0b00000100; // делитель 64
/* adc */
ADMUX = 0b01001111; // reference - vcc , вход ацп припаркован к gnd
ADCSRA = 0b10000010; // делитель - 4 [0,1,2 bits - делитель]
/* ADC prescalers: 001 >> /2 010 >> /4 011 >> /8 100 >> /16 101 >> /32 110 >> /64 111 >> /128*/
/* UART */

View File

@ -1,58 +1,65 @@
#include "uart.h"
/* Реализация облегченного Serial от AlexGyver & Egor 'Nich1con' Zaharov*/
#define UART_RX_BUFFER_SIZE 64
volatile char _UART_RX_BUFFER[UART_RX_BUFFER_SIZE];
volatile uint8_t _UART_RX_BUFFER_HEAD;
volatile uint8_t _UART_RX_BUFFER_TAIL;
// ===== INIT =====
void uartBegin(uint32_t baudrate){ // инициализация uart
uint16_t speed = ((F_CPU / 8) / baudrate) - 1; // расчет baudrate
UBRR0H = highByte(speed); // установка baudrate
void uartBegin(uint32_t baudrate){
uint16_t speed = (2000000/baudrate)-1;
UBRR0H = highByte(speed);
UBRR0L = lowByte(speed);
UCSR0A = (1 << U2X0); // вкл удвоенную скорость
UCSR0B = ((1<<TXEN0) | (1<<RXEN0) | (1<<RXCIE0)); // вкл uart
UCSR0C = ((1<<UCSZ01) | (1<<UCSZ00)); // настраиваем формат данных
UCSR0A = (1 << U2X0);
UCSR0B = ((1<<TXEN0) | (1<<RXEN0) | (1<<RXCIE0));
UCSR0C = ((1<<UCSZ01) | (1<<UCSZ00));
_UART_RX_BUFFER_HEAD = _UART_RX_BUFFER_TAIL = 0;
}
void uartBegin(void) { // вызов uartBegin без параметра настроит скорость 9600
void uartBegin(void) {
uartBegin(9600);
}
void uartEnd(){ // откл uart
void uartEnd(){
UCSR0B = 0;
}
// ===== READ =====
volatile char _UART_RX_BUFFER[64];
volatile int8_t _UART_RX_COUNTER;
ISR(USART_RX_vect) { // чекаем твои байты по прерыванию
_UART_RX_BUFFER[_UART_RX_COUNTER] = UDR0; // пишем в массив "буфер"
_UART_RX_COUNTER++;
ISR(USART_RX_vect) {
if (bit_is_set(UCSR0A, UPE0)) UDR0; // Не сохранять новые данные если parity error
else {
unsigned char c = UDR0;
uint8_t i = (unsigned int)(_UART_RX_BUFFER_HEAD + 1) % UART_RX_BUFFER_SIZE;
// Не сохранять новые данные если нет места
if (i != _UART_RX_BUFFER_TAIL) {
_UART_RX_BUFFER[_UART_RX_BUFFER_HEAD] = c;
_UART_RX_BUFFER_HEAD = i;
}
}
}
char uartRead() { // чтение данных из буфера
char thisChar = _UART_RX_BUFFER[0];
for (byte i = 0; i < _UART_RX_COUNTER; i++) _UART_RX_BUFFER[i] = _UART_RX_BUFFER[i + 1];
if (--_UART_RX_COUNTER < 0) _UART_RX_COUNTER = 0;
return thisChar;
char uartRead() {
if (_UART_RX_BUFFER_HEAD == _UART_RX_BUFFER_TAIL) return -1;
unsigned char c = _UART_RX_BUFFER[_UART_RX_BUFFER_TAIL];
_UART_RX_BUFFER_TAIL = (_UART_RX_BUFFER_TAIL + 1) % UART_RX_BUFFER_SIZE;
return c;
}
boolean uartAvailable() { // проверка доступности данных в буфере
return _UART_RX_COUNTER;
}
/* Дальше он писал сам, там жесть полная */
char uartPeek() {
return _UART_RX_BUFFER[0];
//return _UART_RX_BUFFER[0];
return _UART_RX_BUFFER_HEAD != _UART_RX_BUFFER_TAIL? _UART_RX_BUFFER[_UART_RX_BUFFER_TAIL]: -1;
}
boolean uartAvailable() {
return ((unsigned int)(UART_RX_BUFFER_SIZE + _UART_RX_BUFFER_HEAD - _UART_RX_BUFFER_TAIL)) % UART_RX_BUFFER_SIZE;
}
boolean uartAvailableForWrite() {return 1;}
void uartClear() {
_UART_RX_COUNTER = 0;
_UART_RX_BUFFER_HEAD = _UART_RX_BUFFER_TAIL = 0;
}
/*
byte uartRead(){
if (UCSR0A & (1<<RXC0))
{
return UDR0;
} else return false;
}*/
uint32_t _UART_TIMEOUT = 100;
void uartSetTimeout(int timeout) {
_UART_TIMEOUT = timeout;

View File

@ -11,6 +11,7 @@ void uartBegin(uint32_t baudrate);
void uartEnd();
boolean uartAvailable();
boolean uartAvailableForWrite();
char uartRead();
char uartPeek();
void uartClear();

View File

@ -36,7 +36,7 @@ uartParseInt KEYWORD2
uartReadString KEYWORD2
uartParseFloat KEYWORD2
uartParsePacket KEYWORD2
lightInit KEYWORD2
ISR KEYWORD2

View File

@ -1 +0,0 @@
#define MILLIS_TMRS

113
README.md
View File

@ -1,10 +1,12 @@
![CORE_PHOTO](https://github.com/AlexGyver/GyverCore/blob/master/gyverCoreLogo.jpg)
# GyverCore for ATmega328/168
Быстрое и лёгкое ядро для Arduino IDE.
Основано на оригинальном ядре Arduino версии 1.8.9, большинство функций заменены на более быстрые и лёгкие аналоги, убрано всё лишнее и не относящееся к микроконтроллеру ATmega328p, убран почти весь Wiring-мусор, код упрощён и причёсан.
Разработано by Александр AlexGyver и Egor 'Nich1con' Zaharov
# GyverCore for ATmega328
**Версия 1.7.0 от 31.08.2019**
Быстрое и лёгкое ядро для Arduino IDE с расширенной конфигурацией.
Основано на оригинальном ядре Arduino версии 1.8.9, большинство функций заменены на более быстрые и лёгкие аналоги, убрано всё лишнее и не относящееся к микроконтроллеру ATmega328p, убран почти весь Wiring-мусор, код упрощён и причёсан. Добавлено несколько функций и интересных вариантов компиляции.
Разработано by Александр **AlexGyver** и Egor 'Nich1con' Zaharov
## Установка
### Автоматическая
- Открой the Arduino IDE
- Зайди в **Файл > Настройки**
- Вставь этот адрес в **Дополнительные ссылки для менеджера плат**:
@ -22,7 +24,7 @@
- Готово!
- *Примечание*: файлы ядра находятся по пути C:\Users\Username\AppData\Local\Arduino15\packages\GyverCore\hardware\avr\1.6.0\
## Ручная установка
### Ручная
- Файлы из папки GyverCore в этом репозитории положить по пути C:\Users\Username\AppData\Local\Arduino15\packages\GyverCore\hardware\avr\1.6.0\
## Изменения
@ -66,34 +68,45 @@ parseInt | 1030 | 214 | 816
readString | 2334 | 1594 | 740
parseFloat | 1070 | 246 | 824
Примечание: analogRead и analogReference имеют расширенную функциональность и весят чуть больше
Примечание: **analogRead** и **analogReference** имеют расширенную функциональность и весят чуть больше
Скетч, состоящий из однократного вызова перечисленных выше функций, занимает
- Ядро Arduino: 3446 байт (11%) Flash / 217 байт (10%) SRAM
- Ядро GyverCore: 1436 байт (4%) Flash / 94 байт (4%) SRAM
Пустой скетч:
- Ядро Arduino: 444 байт (1%) Flash / 9 байт (0%) SRAM
- Ядро GyverCore: 202 байт (0%) Flash / 0 байт (0%) SRAM
Все библиотеки, работа которых зависит от стандартных функций (время, I/O), работают быстрее:
- SPI: отправка байта данных по адресу (опустить latch, отправить адрес, отправить байт, поднять latch) занимает:
- Стандартное ядро: 14 мкс (71 кГц)
- GyverCore: 6 мкс (164 кГц)
### Изменено
- В самом начале работы вызывается сброс watchdog, что спасёт от bootloop
**uart** является практически полным аналогом Serial, но весит в разы меньше и работает быстрее. Список функций смотри ниже в **Добавлено**.
### Добавлено
- Подсветка в коде **A0**, **A1**.. **A7**
- Макрос **bitToggle**(value, bit), инвертирует состояние бита bit в байте value
- Функция **digitalToggle**(pin), инвертирует состояние пина
- Расширенная генерация ШИМ:
- **setPWM_20kHz**(byte pin) - установить частоту ШИМ 20 кГц (8 бит) **на пинах 3, 5, 9, 10**
- **setPWM_9_10_resolution**(boolean resolution) - разрешение ШИМ **на пинах 9 и 10** (для режима 20 кГц): **PWM_8BIT** / **PWM_10BIT**
- **setPwmFreqnuency**(pin, freq) - установить частоту ШИМ (8 бит) **на пинах 3, 5, 6, 9, 10, 11**: **PWM_DEFAULT** / **PWM_8KHZ** / **PWM_31KHZ**
- Расширена подсветка синтаксиса (вплоть до названий регистров и битов)
- Макрос **bitToggle**(value, bit), инвертирует состояние бита **bit** в байте **value**
- Быстрая функция **digitalToggle**(pin), инвертирует состояние пина
- В самом начале программы вызывается сброс **watchdog**, что спасёт от bootloop при настройке watchdog на старом загрузчике
- Расширенная генерация ШИМ (все частоты указаны для клока 16 МГц):
- **setPWM_20kHz**(byte pin) - установить частоту ШИМ 20 кГц (8 бит) **на D пинах 3, 5, 9, 10**
- **setPWM_9_10_resolution**(boolean resolution) - разрешение ШИМ **на D пинах 9 и 10** (для режима 20 кГц): **PWM_8BIT** / **PWM_10BIT**
- **setPwmFreqnuency**(pin, freq) - установить частоту ШИМ (8 бит) **на D пинах 3, 5, 6, 9, 10, 11**: **PWM_DEFAULT** / **PWM_8KHZ** / **PWM_31KHZ**
- **setPWM_default**(byte pin) - настроить ШИМ по умолчанию
- Расширенная работа с АЦП
- **analogStartConvert**(byte pin) - начать преобразование с выбранного пина
- **analogGet()** - получить преобразованное значение (между analogStartConvert и analogGet можно выполнять действия, в отличие от ожидания в analogRead())
- **analogPrescaler**(uint8_t prescl) - установить предделитель для АЦП (2, 4, 8, 16, 32, 64, 128)
- **analogPrescaler**(uint8_t prescl) - установить предделитель для АЦП (2, 4, 8, 16, 32, 64, 128) - управляет скоростью работы АЦП (скоростью оцифровки). Prescaler:
- **2**: 3.04 мкс (частота оцифровки 329 000 кГц)
- **4**: 4.72 мкс (частота оцифровки 210 000 кГц)
- **8**: 8.04 мкс (частота оцифровки 125 000 кГц)
- **16**: 15.12 мкс (частота оцифровки 66 100 кГц)
- **32**: 28.04 мкс (частота оцифровки 35 600 кГц)
- **64**: 56.04 мкс (частота оцифровки 17 800 кГц)
- **128**: 112 мкс (частота оцифровки 8 900 Гц)
- В функции **analogRead(pin)** вместо пина можно указать **INTERNAL** (получить значение внутреннего опорного напряжения) или **THERMOMETR** (получить приблизительную температуру МК). *Примечание: нужно установить предделитель 128*
- Добавлен быстрый и лёгкий UART (аналог классу Serial)
- Добавлен очень быстрый и лёгкий **UART** (аналог классу Serial)
- **uartBegin()** - запустить соединение по последовательному порту со скоростью 9600
- **uartBegin(baudrate)** - запустить соединение по последовательному порту со скоростью baudrate
- **uartEnd()** - выключить сериал
@ -111,21 +124,44 @@ parseFloat | 1070 | 246 | 824
- **uartParsePacket(dataArray)** - принять пакет вида **$50 60 70;** в массив dataArray (смотри пример)
### Убарно
Убраны всякие сервисные файлы и прочий хлам, не относящийся к ATmega328 (wifi, USB). Ядро полностью совместимо с остальными библиотеками, ничего из стандартных функций не вырезано.
Убраны всякие сервисные файлы и прочий хлам, не относящийся к ATmega328 (wifi, USB), почищен код. Ядро полностью совместимо с остальными библиотеками, ничего из стандартных функций не вырезано.
## Загрузчики
В ядре оставлены стандартные загрузчики для ATmega328 и добавлен вариант прошивки без загрузчика
- Новый с **optiBoot**, киатйцы тоже потихоньку начинают продавать платы с ним
## Настройки платы
**Bootloader** - выбор загрузчика (требует перезаписи загрузчика):
- Старый **old bootloader**
- Новый с **optiBoot**, киатйцы тоже потихоньку начинают продавать платы с ним
- Вариант **without bootloader** для прошивки скетча во всю доступную (32 кБ) память МК
## Дополнительно
- Смотри примеры в папке **examples** (в корне этого репозитория!)
- Добавлен вариант прошивки без загрузчика **without bootloader** (во всю доступную Flash память) для прошивки через ISP
- Добавлен вариант прошивки с отключенными функциями времени **with/without millis** (освобождает вектор **TIMER0_OVF_vect** для личного пользования)
- Добавлена поддержка 8 и 16 МГц частоты, функции времени и UART автоматически корректируются под выбранную частоту
- Добавлена возможность тактироваться от внутреннего тактового генератора (128 кГц, 1 МГц, 8 МГц). Нужно выбрать частоту и "записать загрузчик"
- **ВНИМАНИЕ!** После прошивки на частоту 128 кГц дальнейшая загрузка по ISP возможно только с понижением частоты ISP на стороне программатора!
**Clock** - выбор частоты и источника тактирования (требует перезаписи загрузчика):
- **External 16 MHz** (стандартный вариант для платы Nano 16 МГц)
- **External 8 MHz** (стандартный вариант для платы Nano 8 МГц)
- **Internal 8 MHz** (внутренний генератор: можно работать с голым камнем без кварца)
- **Internal 1 MHz** (внутренний генератор) - **загрузчик будет стёрт! Используйте without bootloader!**
- **Internal 128 kHz** (внутренний генератор) - **загрузчик будет стёрт! Используйте without bootloader!**
- Примечания:
- Функции времени (delay/millis) скорректированы под выбранную частоту
- После прошивки на частоту 128 кГц дальнейшая загрузка по ISP возможно только с понижением частоты ISP на стороне программатора!
**Save EEPROM** - сохранять EEPROM после перепрошивки (очистки) камня
**Clock Out** - на пине **D8** (NANO/Mini) будет продублировано тактирование с частотой источника
**System timer** - преднастройка таймера 0:
- **enable** - таймер 0 настроен по умолчанию, работают функции времени delay/millis
- **disable** - вектор прерываний OVF таймера 0 освобождён для пользователя, delay/delayMicroseconds работают, millis/micros - нет
- Примечание: при отключенном таймере 0 функции delay и delayMicroseconds автоматически заменяются на _delay_ms и _delay_us из avr/util.h, а millis и micros заменены на 0
**B.O.D.** - reset при падении напряжения (требует перезаписи загрузчика):
- **disable** - отключен
- **1.8V** - сброс при напряжении питания ниже 1.7-2.0V
- **2.7V (default)** - сброс при напряжении питания ниже 2.5-2.9V
- **4.3V** - сброс при напряжении питания ниже 4.1-4.5V
**Initialization** - инициализация периферии в начале скетча:
- **light (beta)** - облегчённая инициализация
- **default** - стандартная инициализация
- **disable** - инициализация отключена
- Примечание: при отключении инициализации также отвалятся функции времени! Если выбрать **millis disabled** в **System timer** - работа задержек будет восстановлена (работает на avr/util.h)
## Больше контроля!
Для большего контроля за периферией микроконтроллера рекомендую попробовать следующие наши библиотеки:
@ -138,25 +174,36 @@ parseFloat | 1070 | 246 | 824
Скачать все библиотеки можно из [репозитория](https://github.com/AlexGyver/GyverLibs)
## Версии
- 1.0.0 - начальная
- 1.0.0
- 1.1.0
- Восстановлена совместимость с некоторыми библиотеками (макросы pinToMask)
- Добавлен выбор частоты в меню (поддержка 16/8 МГц плат с корректнным **временем** и **портом**)
- 1.2.0
- Возвращён pins_arduino.h, который требуют библиотеки
- Возвращён pins_arduino.h, который требуют некоторые библиотеки
- 1.3.0
- Вовзращены ещё некоторые стандартные костыли, но на вес и эффективность ядра они не влияют
- 1.4.0
- Восстановлена совместимость между номерами пинов для analogRead (A-пины и цифры)
- Восстановлена совместимость между номерами пинов для **analogRead** (A-пины и цифры)
- 1.5.0
- Облегчён analogRead
- Облегчён **analogRead**
- Чуть исправлена инициализация watchdog
- 1.6.0
- Пофикшен **INPUT_PULLUP**
- Добавлена расширенная подсветка синтаксиса (регистры и байты)
- Убрана поддержка ATmega168
- Убрана поддержка **ATmega168**
- Изменена логика выбора платы
- Добавлена поддержка тактирования от внутреннего генератора:
- 8 МГц
- 1 МГц (только для without bootloader)
- 128 кГц (только для without bootloader)
- 1.7.0
- Облегчена сборка
- Добавлено корректное время (**millis**/**delay**) для частоты 128 кГц
- Функции **millis()** и **micros()** вырезаны при отключении таймера 0 (через меню выбора платы)
- Функции **delay()** и **delayMicroseconds()** работают при отключении таймера 0 (через меню выбора платы)
- Вывод в порт корректно работает при отключении таймера 0 (через меню выбора платы)
- Ускорен **uart** (обычный буфер заменён на циклический) - чтение быстрее в 2 раза!
- Добавлена настройка **BOD** (через меню выбора платы)
- Добавлен **Clock Out** - вывод тактирования на пин D8 (через меню выбора платы)
- Добавлена настройка **Save EEPROM** (через меню выбора платы)
- Добавлена настройка **Initialization** отключить инициализацию периферии при старте скетча (через меню выбора платы)

View File

@ -106,6 +106,20 @@
{"name": "ATmega328 based boards"}
],
"toolsDependencies": []
},
{
"name": "GyverCore",
"architecture": "avr",
"version": "1.7.0",
"category": "Contributed",
"url": "https://github.com/AlexGyver/GyverCore/releases/download/GyverCore-1.7.0/GyverCore.zip",
"archiveFileName": "GyverCore.zip",
"checksum": "MD5:96b171af737ba7649208d22247a55fcb",
"size": "115891",
"boards": [
{"name": "ATmega328 based boards"}
],
"toolsDependencies": []
}
],
"tools": []