Merge pull request #5 from 3d-gussner/Prusa_Merge_v1.0.2
PFW-1059: V1.0.2 inclunding bootloader and extra flags and timer 4 for Tone 2nd
This commit is contained in:
commit
379dd39954
35
IDE_Board_Manager/Prepare-new-version.sh
Normal file
35
IDE_Board_Manager/Prepare-new-version.sh
Normal file
@ -0,0 +1,35 @@
|
||||
#!/bin/bash
|
||||
# This bash script is used to prepare the "package_prusa3d_index.json"
|
||||
#
|
||||
# Supported OS: Windows 10, Linux64 bit
|
||||
# Beta OS: Linux32 bit
|
||||
#
|
||||
# 30, jul 2019, 3d-gussner, Read version from "prusa3dboards.version" file. It reads the 1st line
|
||||
|
||||
|
||||
# Get version from prusa3dboards.version file
|
||||
VERSION=$(head -1 prusa3dboards.version|cut -d ' ' -f1)
|
||||
# rename temporaray "prusa3dboards" folder to include version number
|
||||
mv prusa3dboards prusa3dboards-$VERSION
|
||||
# compress prusa3dboards-$VERSION folder
|
||||
tar -cjf prusa3dboards-$VERSION.tar.bz2 prusa3dboards-$VERSION
|
||||
# rename prusa3dboards-$VERSION back to prusa3dboards as it makes follow changes easier in Github, cimmits/blame/history
|
||||
mv prusa3dboards-$VERSION prusa3dboards
|
||||
# get size of the compressed file for JSO
|
||||
SIZE=$(wc -c prusa3dboards-$VERSION.tar.bz2|cut -d ' ' -f1)
|
||||
|
||||
#get sha256 checksum
|
||||
SHA256=$(sha256sum prusa3dboards-$VERSION.tar.bz2|cut -d ' ' -f1)
|
||||
|
||||
|
||||
echo "Version : "$VERSION" to build"
|
||||
echo ""
|
||||
echo "Please don't forget to create new version file prusa3dboards-"$VERSION".MD"
|
||||
sleep 5
|
||||
echo "Please use following values to edit JSON file"
|
||||
echo ""
|
||||
echo "ArchiveFileName : prusa3dboards-"$VERSION".tar.bz2"
|
||||
echo "SHA256 checksum : "$SHA256
|
||||
echo "Size : "$SIZE
|
||||
echo "online : prusa3dboards-"$VERSION".MD"
|
||||
|
@ -9,6 +9,47 @@
|
||||
"online": "https://github.com/prusa3d/Arduino_Boards"
|
||||
},
|
||||
"platforms": [
|
||||
{
|
||||
"name": "Prusa Research AVR Boards",
|
||||
"architecture": "avr",
|
||||
"version": "1.0.2",
|
||||
"category": "Contributed",
|
||||
"url": "https://raw.githubusercontent.com/prusa3d/Arduino_Boards/master/IDE_Board_Manager/prusa3dboards-1.0.2.tar.bz2",
|
||||
"archiveFileName": "prusa3dboards-1.0.2.tar.bz2",
|
||||
"checksum": "SHA-256:e7ff02ea51fba6a5dadfb7b14eb53f61f106f2412c0f0d95f64accc37945d82a",
|
||||
"size": "101087",
|
||||
"help": {
|
||||
"online": "https://github.com/prusa3d/Arduino_Boards/blob/master/IDE_Board_Manager/prusa3dboards-1.0.2.md"
|
||||
},
|
||||
"boards": [
|
||||
{
|
||||
"name": "Original Prusa i3 MK3 Multi Material 2.0 upgrade"
|
||||
},
|
||||
{
|
||||
"name": "Original Prusa i3 MK3/MK3S Einsy RAMBo"
|
||||
}
|
||||
],
|
||||
"toolsDependencies": []
|
||||
},
|
||||
{
|
||||
"name": "Prusa Research AVR MMU Boards",
|
||||
"architecture": "avr",
|
||||
"version": "1.0.1",
|
||||
"category": "Contributed",
|
||||
"url": "https://raw.githubusercontent.com/prusa3d/Arduino_Boards/master/IDE_Board_Manager/prusa3dboards-1.0.1.tar.bz2",
|
||||
"archiveFileName": "prusa3dboards-1.0.1.tar.bz2",
|
||||
"checksum": "SHA-256:858cec0d14a549f637a558e51de29917796b37eaa9e1e8d6bd7449ba6bcd1ffd",
|
||||
"size": "32469",
|
||||
"help": {
|
||||
"online": "https://github.com/prusa3d/Arduino_Boards/blob/master/IDE_Board_Manager/prusa3dboards-1.0.1.md"
|
||||
},
|
||||
"boards": [
|
||||
{
|
||||
"name": "Original Prusa i3 MK3 Multi Material 2.0 upgrade"
|
||||
}
|
||||
],
|
||||
"toolsDependencies": []
|
||||
},
|
||||
{
|
||||
"name": "Prusa Research AVR MMU Boards",
|
||||
"architecture": "avr",
|
||||
@ -19,7 +60,7 @@
|
||||
"checksum": "SHA-256:df1061544109119ffaa2ea3fa9820aa6469f288213661e23405b7f190fd71b12",
|
||||
"size": "32792",
|
||||
"help": {
|
||||
"online": "https://learn.sparkfun.com/tutorials/installing-arduino-ide/board-add-ons-with-arduino-board-manager"
|
||||
"online": "https://github.com/prusa3d/Arduino_Boards/blob/master/IDE_Board_Manager/prusa3dboards-1.0.0.md"
|
||||
},
|
||||
"boards": [
|
||||
{
|
||||
@ -32,7 +73,7 @@
|
||||
"tools":[]
|
||||
},
|
||||
{
|
||||
"name": "PrusaResearchRambo",
|
||||
"name": "PrusaResearchEinsyRAMBo",
|
||||
"maintainer": "Prusa Research",
|
||||
"websiteURL": "https://www.prusa3d.com/",
|
||||
"email": "info@prusa3d.com",
|
||||
@ -41,7 +82,7 @@
|
||||
},
|
||||
"platforms": [
|
||||
{
|
||||
"name": "Prusa Research AVR MK3 Einsy RAMBo",
|
||||
"name": "Prusa Research AVR MK3/MK3S Einsy RAMBo",
|
||||
"architecture": "avr",
|
||||
"version": "1.0.1",
|
||||
"category": "Contributed",
|
||||
@ -50,7 +91,7 @@
|
||||
"checksum": "SHA-256:68996c5de9e29603bdff3d8b7aba115f30e37383e7a3e9b89921799574d1cb31",
|
||||
"size": "53425",
|
||||
"help": {
|
||||
"online": "https://learn.sparkfun.com/tutorials/installing-arduino-ide/board-add-ons-with-arduino-board-manager"
|
||||
"online": "https://github.com/prusa3d/Arduino_Boards/blob/master/IDE_Board_Manager/prusa3dboards-1.0.1.md"
|
||||
},
|
||||
"boards": [
|
||||
{
|
||||
@ -69,6 +110,25 @@
|
||||
"version": "6.3.0-arduino9"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Prusa Research AVR MK3 RAMBo EINSy",
|
||||
"architecture": "avr",
|
||||
"version": "1.0.0",
|
||||
"category": "Contributed",
|
||||
"url": "https://raw.githubusercontent.com/prusa3d/Arduino_Boards/master/IDE_Board_Manager/prusa3drambo-1.0.0.tar.bz2",
|
||||
"archiveFileName": "prusa3drambo-1.0.0.tar.bz2",
|
||||
"checksum": "SHA-256:73ec40b02ae2a13c6016057e3ba49731b8ccab71b5ed7c913f6d698819f24838",
|
||||
"size": "53396",
|
||||
"help": {
|
||||
"online": "https://github.com/prusa3d/Arduino_Boards/blob/master/IDE_Board_Manager/prusa3dboards-1.0.1.md"
|
||||
},
|
||||
"boards": [
|
||||
{
|
||||
"name": "Original Prusa i3 MK3/MK3S EINSY RAMBo"
|
||||
}
|
||||
],
|
||||
"toolsDependencies": []
|
||||
}
|
||||
],
|
||||
"tools":[]
|
||||
|
24
IDE_Board_Manager/prusa3dboards-1.0.0.md
Normal file
24
IDE_Board_Manager/prusa3dboards-1.0.0.md
Normal file
@ -0,0 +1,24 @@
|
||||
# Prusa Research Boards definition version 1.0.0
|
||||
|
||||
## Boards supported
|
||||
- [Prusa MM control board](https://github.com/prusa3d/MM-control-2.0)
|
||||
- including bootloader
|
||||
|
||||
|
||||
Folder Structure:
|
||||
|
||||
.
|
||||
├── IDE_Boards_Manager
|
||||
│ └── ...
|
||||
└── ...
|
||||
|
||||
Files:
|
||||
|
||||
.
|
||||
├── IDE_Boards_Manager
|
||||
│ ├── package_prusa3d_index.json
|
||||
│ ├── prusa3dboards-<versions>.tar.bz2 actual used pacakges for Ardunio IDE Boards Manager
|
||||
│ └── ...
|
||||
├── LICENSE
|
||||
├── README.md
|
||||
└── ...
|
39
IDE_Board_Manager/prusa3dboards-1.0.1.md
Normal file
39
IDE_Board_Manager/prusa3dboards-1.0.1.md
Normal file
@ -0,0 +1,39 @@
|
||||
# Prusa Research Boards definition version 1.0.1
|
||||
|
||||
## Boards supported
|
||||
- [Prusa MM control board](https://github.com/prusa3d/MM-control-2.0) using prusa3dboards-1.0.0.tar.bz2
|
||||
- including bootloader
|
||||
- [Einsy board](https://reprap.org/wiki/EinsyRambo) using prusa3drambo-1.0.1.tar.bz2
|
||||
- [miniRAMbo](https://reprap.org/wiki/MiniRambo) using prusa3drambo-1.0.1.tar.bz2
|
||||
|
||||
## Specials/Limits
|
||||
- Restricted to use avr-gcc version `4.9.2-atmel3.5.4-arduino2`
|
||||
- Restricted to use avrdude version `6.3.0-arduino9`
|
||||
|
||||
Folder Structure:
|
||||
|
||||
.
|
||||
├── IDE_Boards_Manager
|
||||
│ ├── prusa3drambo-1.0.1
|
||||
│ ├── cores
|
||||
│ └── rambo
|
||||
│ ├── variants
|
||||
│ └── rambo
|
||||
│ └── ...
|
||||
└── ...
|
||||
|
||||
Files:
|
||||
|
||||
.
|
||||
├── IDE_Boards_Manager
|
||||
│ ├── prusa3drambo-1.0.1 Please don't change that folder name when you update your Github and post a PR.
|
||||
│ ├── boards.txt contains definitions for the boards (board name, parameters for building and uploading sketches, etc.).
|
||||
│ ├── platform.txt contains definitions for the CPU architecture used (compiler, build process parameters, tools used for upload, etc.).
|
||||
│ ├── avrdude.conf
|
||||
│ └── ...
|
||||
│ ├── package_prusa3d_index.json
|
||||
│ ├── prusa3dboards-<versions>.tar.bz2 actual used pacakges for Ardunio IDE Boards Manager
|
||||
│ └── ...
|
||||
├── LICENSE
|
||||
├── README.md
|
||||
└── ...
|
BIN
IDE_Board_Manager/prusa3dboards-1.0.1.tar.bz2
Normal file
BIN
IDE_Board_Manager/prusa3dboards-1.0.1.tar.bz2
Normal file
Binary file not shown.
117
IDE_Board_Manager/prusa3dboards-1.0.2.md
Normal file
117
IDE_Board_Manager/prusa3dboards-1.0.2.md
Normal file
@ -0,0 +1,117 @@
|
||||
# Prusa Research Boards definition version 1.0.2
|
||||
|
||||
## Boards supported
|
||||
- [Prusa MM control board](https://github.com/prusa3d/MM-control-2.0) using prusa3dboards-1.0.2.tar.bz2
|
||||
- including bootloader
|
||||
- Einsy/miniRAMBo boards using prusa3dboards-1.0.2.tar.bz2
|
||||
- including bootloader
|
||||
- [Einsys](https://reprap.org/wiki/EinsyRambo)
|
||||
- [miniRAMbo](https://reprap.org/wiki/MiniRambo)
|
||||
## Specials/Limits
|
||||
- Restricted cores version for the Einsy/miniRAMBo boards
|
||||
|
||||
Folder Structure:
|
||||
|
||||
.
|
||||
└── prusa3dboards
|
||||
├── bootloaders
|
||||
│ ├── prusa_einsy_rambo
|
||||
│ └── prusa_mm_control
|
||||
├── cores
|
||||
│ └── prusa_einsy_rambo
|
||||
├── patches
|
||||
├── tools
|
||||
└── variants
|
||||
├── prusa_einsy_rambo
|
||||
└── prusa_mm_control
|
||||
|
||||
File Structure:
|
||||
|
||||
.
|
||||
├── Prepare-new-version.sh
|
||||
├── package_prusa3d_index.json
|
||||
├── prusa3dboards
|
||||
│ ├── avrdude.conf
|
||||
│ ├── avrdude.md
|
||||
│ ├── boards.txt
|
||||
│ ├── bootloaders
|
||||
│ │ ├── prusa_einsy_rambo
|
||||
│ │ │ ├── License.txt
|
||||
│ │ │ ├── Makefile
|
||||
│ │ │ ├── avr_cpunames.h
|
||||
│ │ │ ├── avrinterruptnames.h
|
||||
│ │ │ ├── command.h
|
||||
│ │ │ ├── lcd.c
|
||||
│ │ │ ├── lcd.h
|
||||
│ │ │ ├── settings.h
|
||||
│ │ │ ├── stk500boot.c
|
||||
│ │ │ ├── stk500boot.h
|
||||
│ │ │ ├── stk500boot.hex
|
||||
│ │ │ └── stk500boot_v2_mega2560.hex
|
||||
│ │ └── prusa_mm_control
|
||||
│ │ ├── Caterina-prusa_mm_control.hex
|
||||
│ │ ├── Readme.txt
|
||||
│ │ ├── build.txt
|
||||
│ │ └── program.txt
|
||||
│ ├── cores
|
||||
│ │ └── prusa_einsy_rambo
|
||||
│ │ ├── Arduino.h
|
||||
│ │ ├── CDC.cpp
|
||||
│ │ ├── Client.h
|
||||
│ │ ├── HardwareSerial.cpp
|
||||
│ │ ├── HardwareSerial.h
|
||||
│ │ ├── HardwareSerial0.cpp
|
||||
│ │ ├── HardwareSerial1.cpp
|
||||
│ │ ├── HardwareSerial2.cpp
|
||||
│ │ ├── HardwareSerial3.cpp
|
||||
│ │ ├── HardwareSerial_private.h
|
||||
│ │ ├── IPAddress.cpp
|
||||
│ │ ├── IPAddress.h
|
||||
│ │ ├── PluggableUSB.cpp
|
||||
│ │ ├── PluggableUSB.h
|
||||
│ │ ├── Print.cpp
|
||||
│ │ ├── Print.h
|
||||
│ │ ├── Printable.h
|
||||
│ │ ├── Server.h
|
||||
│ │ ├── Stream.cpp
|
||||
│ │ ├── Stream.h
|
||||
│ │ ├── Tone.cpp
|
||||
│ │ ├── USBAPI.h
|
||||
│ │ ├── USBCore.cpp
|
||||
│ │ ├── USBCore.h
|
||||
│ │ ├── USBDesc.h
|
||||
│ │ ├── Udp.h
|
||||
│ │ ├── WCharacter.h
|
||||
│ │ ├── WInterrupts.c
|
||||
│ │ ├── WMath.cpp
|
||||
│ │ ├── WString.cpp
|
||||
│ │ ├── WString.h
|
||||
│ │ ├── abi.cpp
|
||||
│ │ ├── binary.h
|
||||
│ │ ├── hooks.c
|
||||
│ │ ├── main.cpp
|
||||
│ │ ├── new.cpp
|
||||
│ │ ├── new.h
|
||||
│ │ ├── wiring.c
|
||||
│ │ ├── wiring_analog.c
|
||||
│ │ ├── wiring_digital.c
|
||||
│ │ ├── wiring_private.h
|
||||
│ │ ├── wiring_pulse.S
|
||||
│ │ ├── wiring_pulse.c
|
||||
│ │ └── wiring_shift.c
|
||||
│ ├── patches
|
||||
│ ├── platform.txt
|
||||
│ ├── tools
|
||||
│ └── variants
|
||||
│ ├── prusa_einsy_rambo
|
||||
│ │ └── pins_arduino.h
|
||||
│ └── prusa_mm_control
|
||||
│ └── pins_arduino.h
|
||||
├── prusa3dboards-1.0.0.md
|
||||
├── prusa3dboards-1.0.0.tar.bz2
|
||||
├── prusa3dboards-1.0.1.md
|
||||
├── prusa3dboards-1.0.1.tar.bz2
|
||||
├── prusa3dboards-1.0.2.tar.bz2
|
||||
├── prusa3dboards.version
|
||||
├── prusa3drambo-1.0.0.tar.bz2
|
||||
└── prusa3drambo-1.0.1.tar.bz2
|
BIN
IDE_Board_Manager/prusa3dboards-1.0.2.tar.bz2
Normal file
BIN
IDE_Board_Manager/prusa3dboards-1.0.2.tar.bz2
Normal file
Binary file not shown.
3
IDE_Board_Manager/prusa3dboards.version
Normal file
3
IDE_Board_Manager/prusa3dboards.version
Normal file
@ -0,0 +1,3 @@
|
||||
1.0.2 # With bootloader and compiler.c.elf.extra_flags for Prusa Einsy/RAMBo Prusa Frimware
|
||||
1.0.1 # Added Einsy/miniRAMBo boards
|
||||
1.0.0 # Original Prusa i3 MK3 Multi Material 2.0 upgrade
|
424
IDE_Board_Manager/prusa3dboards/avrdude.conf
Normal file
424
IDE_Board_Manager/prusa3dboards/avrdude.conf
Normal file
@ -0,0 +1,424 @@
|
||||
|
||||
#
|
||||
# This is a basic minimal config file embedded into the avrdude-slic3r binary
|
||||
# so that it can work in a standalone manner.
|
||||
#
|
||||
# Only the bits useful for Prusa3D devices were copied over from avrdude.conf
|
||||
# If needed, more configuration can still be loaded into avrdude-slic3r
|
||||
# via the -C command-line option.
|
||||
#
|
||||
|
||||
|
||||
programmer
|
||||
id = "wiring";
|
||||
desc = "Wiring";
|
||||
type = "wiring";
|
||||
connection_type = serial;
|
||||
;
|
||||
|
||||
programmer
|
||||
id = "arduino";
|
||||
desc = "Arduino";
|
||||
type = "arduino";
|
||||
connection_type = serial;
|
||||
;
|
||||
|
||||
programmer
|
||||
id = "avr109";
|
||||
desc = "Atmel AppNote AVR109 Boot Loader";
|
||||
type = "butterfly";
|
||||
connection_type = serial;
|
||||
;
|
||||
|
||||
|
||||
#------------------------------------------------------------
|
||||
# ATmega2560
|
||||
#------------------------------------------------------------
|
||||
|
||||
part
|
||||
id = "m2560";
|
||||
desc = "ATmega2560";
|
||||
signature = 0x1e 0x98 0x01;
|
||||
has_jtag = yes;
|
||||
stk500_devcode = 0xB2;
|
||||
# avr910_devcode = 0x43;
|
||||
chip_erase_delay = 9000;
|
||||
pagel = 0xD7;
|
||||
bs2 = 0xA0;
|
||||
reset = dedicated;
|
||||
pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
|
||||
"x x x x x x x x x x x x x x x x";
|
||||
|
||||
chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0",
|
||||
"x x x x x x x x x x x x x x x x";
|
||||
|
||||
timeout = 200;
|
||||
stabdelay = 100;
|
||||
cmdexedelay = 25;
|
||||
synchloops = 32;
|
||||
bytedelay = 0;
|
||||
pollindex = 3;
|
||||
pollvalue = 0x53;
|
||||
predelay = 1;
|
||||
postdelay = 1;
|
||||
pollmethod = 1;
|
||||
|
||||
pp_controlstack =
|
||||
0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
|
||||
0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
|
||||
0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
|
||||
0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02;
|
||||
hventerstabdelay = 100;
|
||||
progmodedelay = 0;
|
||||
latchcycles = 5;
|
||||
togglevtg = 1;
|
||||
poweroffdelay = 15;
|
||||
resetdelayms = 1;
|
||||
resetdelayus = 0;
|
||||
hvleavestabdelay = 15;
|
||||
chiperasepulsewidth = 0;
|
||||
chiperasepolltimeout = 10;
|
||||
programfusepulsewidth = 0;
|
||||
programfusepolltimeout = 5;
|
||||
programlockpulsewidth = 0;
|
||||
programlockpolltimeout = 5;
|
||||
|
||||
idr = 0x31;
|
||||
spmcr = 0x57;
|
||||
rampz = 0x3b;
|
||||
allowfullpagebitstream = no;
|
||||
|
||||
ocdrev = 4;
|
||||
|
||||
memory "eeprom"
|
||||
paged = no; /* leave this "no" */
|
||||
page_size = 8; /* for parallel programming */
|
||||
size = 4096;
|
||||
min_write_delay = 9000;
|
||||
max_write_delay = 9000;
|
||||
readback_p1 = 0x00;
|
||||
readback_p2 = 0x00;
|
||||
read = " 1 0 1 0 0 0 0 0",
|
||||
" x x x x a11 a10 a9 a8",
|
||||
" a7 a6 a5 a4 a3 a2 a1 a0",
|
||||
" o o o o o o o o";
|
||||
|
||||
write = " 1 1 0 0 0 0 0 0",
|
||||
" x x x x a11 a10 a9 a8",
|
||||
" a7 a6 a5 a4 a3 a2 a1 a0",
|
||||
" i i i i i i i i";
|
||||
|
||||
loadpage_lo = " 1 1 0 0 0 0 0 1",
|
||||
" 0 0 0 0 0 0 0 0",
|
||||
" 0 0 0 0 0 a2 a1 a0",
|
||||
" i i i i i i i i";
|
||||
|
||||
writepage = " 1 1 0 0 0 0 1 0",
|
||||
" 0 0 x x a11 a10 a9 a8",
|
||||
" a7 a6 a5 a4 a3 0 0 0",
|
||||
" x x x x x x x x";
|
||||
|
||||
mode = 0x41;
|
||||
delay = 10;
|
||||
blocksize = 8;
|
||||
readsize = 256;
|
||||
;
|
||||
|
||||
memory "flash"
|
||||
paged = yes;
|
||||
size = 262144;
|
||||
page_size = 256;
|
||||
num_pages = 1024;
|
||||
min_write_delay = 4500;
|
||||
max_write_delay = 4500;
|
||||
readback_p1 = 0x00;
|
||||
readback_p2 = 0x00;
|
||||
read_lo = " 0 0 1 0 0 0 0 0",
|
||||
"a15 a14 a13 a12 a11 a10 a9 a8",
|
||||
" a7 a6 a5 a4 a3 a2 a1 a0",
|
||||
" o o o o o o o o";
|
||||
|
||||
read_hi = " 0 0 1 0 1 0 0 0",
|
||||
"a15 a14 a13 a12 a11 a10 a9 a8",
|
||||
" a7 a6 a5 a4 a3 a2 a1 a0",
|
||||
" o o o o o o o o";
|
||||
|
||||
loadpage_lo = " 0 1 0 0 0 0 0 0",
|
||||
" x x x x x x x x",
|
||||
" x a6 a5 a4 a3 a2 a1 a0",
|
||||
" i i i i i i i i";
|
||||
|
||||
loadpage_hi = " 0 1 0 0 1 0 0 0",
|
||||
" x x x x x x x x",
|
||||
" x a6 a5 a4 a3 a2 a1 a0",
|
||||
" i i i i i i i i";
|
||||
|
||||
writepage = " 0 1 0 0 1 1 0 0",
|
||||
"a15 a14 a13 a12 a11 a10 a9 a8",
|
||||
" a7 x x x x x x x",
|
||||
" x x x x x x x x";
|
||||
|
||||
load_ext_addr = " 0 1 0 0 1 1 0 1",
|
||||
" 0 0 0 0 0 0 0 0",
|
||||
" 0 0 0 0 0 0 0 a16",
|
||||
" 0 0 0 0 0 0 0 0";
|
||||
|
||||
mode = 0x41;
|
||||
delay = 10;
|
||||
blocksize = 256;
|
||||
readsize = 256;
|
||||
;
|
||||
|
||||
memory "lfuse"
|
||||
size = 1;
|
||||
write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
|
||||
"x x x x x x x x i i i i i i i i";
|
||||
|
||||
read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
|
||||
"x x x x x x x x o o o o o o o o";
|
||||
min_write_delay = 9000;
|
||||
max_write_delay = 9000;
|
||||
;
|
||||
|
||||
memory "hfuse"
|
||||
size = 1;
|
||||
write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
|
||||
"x x x x x x x x i i i i i i i i";
|
||||
|
||||
read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
|
||||
"x x x x x x x x o o o o o o o o";
|
||||
min_write_delay = 9000;
|
||||
max_write_delay = 9000;
|
||||
;
|
||||
|
||||
memory "efuse"
|
||||
size = 1;
|
||||
write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
|
||||
"x x x x x x x x x x x x x i i i";
|
||||
|
||||
read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
|
||||
"x x x x x x x x o o o o o o o o";
|
||||
min_write_delay = 9000;
|
||||
max_write_delay = 9000;
|
||||
;
|
||||
|
||||
memory "lock"
|
||||
size = 1;
|
||||
read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
|
||||
"x x x x x x x x x x o o o o o o";
|
||||
|
||||
write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
|
||||
"x x x x x x x x 1 1 i i i i i i";
|
||||
min_write_delay = 9000;
|
||||
max_write_delay = 9000;
|
||||
;
|
||||
|
||||
memory "calibration"
|
||||
size = 1;
|
||||
read = "0 0 1 1 1 0 0 0 x x x x x x x x",
|
||||
"0 0 0 0 0 0 0 0 o o o o o o o o";
|
||||
;
|
||||
|
||||
memory "signature"
|
||||
size = 3;
|
||||
read = "0 0 1 1 0 0 0 0 x x x x x x x x",
|
||||
"x x x x x x a1 a0 o o o o o o o o";
|
||||
;
|
||||
;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#------------------------------------------------------------
|
||||
# ATmega32u4
|
||||
#------------------------------------------------------------
|
||||
|
||||
part
|
||||
id = "m32u4";
|
||||
desc = "ATmega32U4";
|
||||
signature = 0x1e 0x95 0x87;
|
||||
usbpid = 0x2ff4;
|
||||
has_jtag = yes;
|
||||
# stk500_devcode = 0xB2;
|
||||
# avr910_devcode = 0x43;
|
||||
chip_erase_delay = 9000;
|
||||
pagel = 0xD7;
|
||||
bs2 = 0xA0;
|
||||
reset = dedicated;
|
||||
pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
|
||||
"x x x x x x x x x x x x x x x x";
|
||||
|
||||
chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0",
|
||||
"x x x x x x x x x x x x x x x x";
|
||||
|
||||
timeout = 200;
|
||||
stabdelay = 100;
|
||||
cmdexedelay = 25;
|
||||
synchloops = 32;
|
||||
bytedelay = 0;
|
||||
pollindex = 3;
|
||||
pollvalue = 0x53;
|
||||
predelay = 1;
|
||||
postdelay = 1;
|
||||
pollmethod = 1;
|
||||
|
||||
pp_controlstack =
|
||||
0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
|
||||
0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
|
||||
0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
|
||||
0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
|
||||
hventerstabdelay = 100;
|
||||
progmodedelay = 0;
|
||||
latchcycles = 5;
|
||||
togglevtg = 1;
|
||||
poweroffdelay = 15;
|
||||
resetdelayms = 1;
|
||||
resetdelayus = 0;
|
||||
hvleavestabdelay = 15;
|
||||
chiperasepulsewidth = 0;
|
||||
chiperasepolltimeout = 10;
|
||||
programfusepulsewidth = 0;
|
||||
programfusepolltimeout = 5;
|
||||
programlockpulsewidth = 0;
|
||||
programlockpolltimeout = 5;
|
||||
|
||||
idr = 0x31;
|
||||
spmcr = 0x57;
|
||||
rampz = 0x3b;
|
||||
allowfullpagebitstream = no;
|
||||
|
||||
ocdrev = 3;
|
||||
|
||||
memory "eeprom"
|
||||
paged = no; /* leave this "no" */
|
||||
page_size = 4; /* for parallel programming */
|
||||
size = 1024;
|
||||
min_write_delay = 9000;
|
||||
max_write_delay = 9000;
|
||||
readback_p1 = 0x00;
|
||||
readback_p2 = 0x00;
|
||||
read = " 1 0 1 0 0 0 0 0",
|
||||
" x x x x x a10 a9 a8",
|
||||
" a7 a6 a5 a4 a3 a2 a1 a0",
|
||||
" o o o o o o o o";
|
||||
|
||||
write = " 1 1 0 0 0 0 0 0",
|
||||
" x x x x x a10 a9 a8",
|
||||
" a7 a6 a5 a4 a3 a2 a1 a0",
|
||||
" i i i i i i i i";
|
||||
|
||||
loadpage_lo = " 1 1 0 0 0 0 0 1",
|
||||
" 0 0 0 0 0 0 0 0",
|
||||
" 0 0 0 0 0 a2 a1 a0",
|
||||
" i i i i i i i i";
|
||||
|
||||
writepage = " 1 1 0 0 0 0 1 0",
|
||||
" 0 0 x x x a10 a9 a8",
|
||||
" a7 a6 a5 a4 a3 0 0 0",
|
||||
" x x x x x x x x";
|
||||
|
||||
mode = 0x41;
|
||||
delay = 20;
|
||||
blocksize = 4;
|
||||
readsize = 256;
|
||||
;
|
||||
|
||||
memory "flash"
|
||||
paged = yes;
|
||||
size = 32768;
|
||||
page_size = 128;
|
||||
num_pages = 256;
|
||||
min_write_delay = 4500;
|
||||
max_write_delay = 4500;
|
||||
readback_p1 = 0x00;
|
||||
readback_p2 = 0x00;
|
||||
read_lo = " 0 0 1 0 0 0 0 0",
|
||||
" 0 a14 a13 a12 a11 a10 a9 a8",
|
||||
" a7 a6 a5 a4 a3 a2 a1 a0",
|
||||
" o o o o o o o o";
|
||||
|
||||
read_hi = " 0 0 1 0 1 0 0 0",
|
||||
" 0 a14 a13 a12 a11 a10 a9 a8",
|
||||
" a7 a6 a5 a4 a3 a2 a1 a0",
|
||||
" o o o o o o o o";
|
||||
|
||||
loadpage_lo = " 0 1 0 0 0 0 0 0",
|
||||
" x x x x x x x x",
|
||||
" x x a5 a4 a3 a2 a1 a0",
|
||||
" i i i i i i i i";
|
||||
|
||||
loadpage_hi = " 0 1 0 0 1 0 0 0",
|
||||
" x x x x x x x x",
|
||||
" x x a5 a4 a3 a2 a1 a0",
|
||||
" i i i i i i i i";
|
||||
|
||||
writepage = " 0 1 0 0 1 1 0 0",
|
||||
" a15 a14 a13 a12 a11 a10 a9 a8",
|
||||
" a7 a6 x x x x x x",
|
||||
" x x x x x x x x";
|
||||
|
||||
mode = 0x41;
|
||||
delay = 6;
|
||||
blocksize = 128;
|
||||
readsize = 256;
|
||||
;
|
||||
|
||||
memory "lfuse"
|
||||
size = 1;
|
||||
write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
|
||||
"x x x x x x x x i i i i i i i i";
|
||||
|
||||
read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
|
||||
"x x x x x x x x o o o o o o o o";
|
||||
min_write_delay = 9000;
|
||||
max_write_delay = 9000;
|
||||
;
|
||||
|
||||
memory "hfuse"
|
||||
size = 1;
|
||||
write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
|
||||
"x x x x x x x x i i i i i i i i";
|
||||
|
||||
read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
|
||||
"x x x x x x x x o o o o o o o o";
|
||||
min_write_delay = 9000;
|
||||
max_write_delay = 9000;
|
||||
;
|
||||
|
||||
memory "efuse"
|
||||
size = 1;
|
||||
write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
|
||||
"x x x x x x x x x x x x i i i i";
|
||||
|
||||
read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
|
||||
"x x x x x x x x o o o o o o o o";
|
||||
min_write_delay = 9000;
|
||||
max_write_delay = 9000;
|
||||
;
|
||||
|
||||
memory "lock"
|
||||
size = 1;
|
||||
read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
|
||||
"x x x x x x x x x x o o o o o o";
|
||||
|
||||
write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
|
||||
"x x x x x x x x 1 1 i i i i i i";
|
||||
min_write_delay = 9000;
|
||||
max_write_delay = 9000;
|
||||
;
|
||||
|
||||
memory "calibration"
|
||||
size = 1;
|
||||
read = "0 0 1 1 1 0 0 0 x x x x x x x x",
|
||||
"0 0 0 0 0 0 0 0 o o o o o o o o";
|
||||
;
|
||||
|
||||
memory "signature"
|
||||
size = 3;
|
||||
read = "0 0 1 1 0 0 0 0 x x x x x x x x",
|
||||
"x x x x x x a1 a0 o o o o o o o o";
|
||||
;
|
||||
;
|
||||
|
||||
|
1
IDE_Board_Manager/prusa3dboards/avrdude.md
Normal file
1
IDE_Board_Manager/prusa3dboards/avrdude.md
Normal file
@ -0,0 +1 @@
|
||||
The [avrdude.conf](https://github.com/prusa3d/PrusaSlicer/tree/master/src/avrdude) is a copy of the PrusaSlicer github repository
|
73
IDE_Board_Manager/prusa3dboards/boards.txt
Normal file
73
IDE_Board_Manager/prusa3dboards/boards.txt
Normal file
@ -0,0 +1,73 @@
|
||||
# Prusa Research Board Contribution Configuration
|
||||
#
|
||||
# For more information see:
|
||||
# * https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5---3rd-party-Hardware-specification
|
||||
# * https://github.com/arduino/Arduino/wiki/Arduino-Hardware-Cores-migration-guide-from-1.0-to-1.6
|
||||
#
|
||||
|
||||
menu.cpu=Processor
|
||||
|
||||
################################################################################
|
||||
############################### Prusa MM control ###############################
|
||||
################################################################################
|
||||
|
||||
prusa_mm_control.name=Original Prusa i3 MK3 Multi Material 2.0 upgrade
|
||||
prusa_mm_control.vid.0=0x2c99
|
||||
prusa_mm_control.pid.0=0x0004
|
||||
prusa_mm_control.vid.1=0x2c99
|
||||
prusa_mm_control.pid.1=0x0003
|
||||
|
||||
prusa_mm_control.upload.tool=avrdude
|
||||
prusa_mm_control.upload.protocol=avr109
|
||||
prusa_mm_control.upload.maximum_size=28672
|
||||
prusa_mm_control.upload.maximum_data_size=2560
|
||||
prusa_mm_control.upload.speed=57600
|
||||
prusa_mm_control.upload.disable_flushing=true
|
||||
prusa_mm_control.upload.use_1200bps_touch=true
|
||||
prusa_mm_control.upload.wait_for_upload_port=true
|
||||
|
||||
prusa_mm_control.bootloader.tool=avrdude
|
||||
prusa_mm_control.bootloader.low_fuses=0xff
|
||||
prusa_mm_control.bootloader.high_fuses=0xd8
|
||||
prusa_mm_control.bootloader.extended_fuses=0xcb
|
||||
prusa_mm_control.bootloader.file=prusa_mm_control/Caterina-prusa_mm_control.hex
|
||||
prusa_mm_control.bootloader.unlock_bits=0x3F
|
||||
prusa_mm_control.bootloader.lock_bits=0x2F
|
||||
|
||||
prusa_mm_control.build.mcu=atmega32u4
|
||||
prusa_mm_control.build.f_cpu=16000000L
|
||||
prusa_mm_control.build.vid=0x2c99
|
||||
prusa_mm_control.build.pid=0x0004
|
||||
prusa_mm_control.build.usb_product="Original Prusa i3 MK3 Multi Material 2.0 upgrade"
|
||||
prusa_mm_control.build.board=AVR_prusa_mm_control
|
||||
prusa_mm_control.build.core=arduino:arduino
|
||||
prusa_mm_control.build.variant=prusa_mm_control
|
||||
prusa_mm_control.build.extra_flags={build.usb_flags}
|
||||
|
||||
########################################
|
||||
########## Prusa Einsy RAMBo ###########
|
||||
########################################
|
||||
prusa_einsy_rambo.name=PrusaResearch Einsy RAMBo
|
||||
prusa_einsy_rambo.vid.0=0x27b1
|
||||
prusa_einsy_rambo.pid.0=0x0001
|
||||
|
||||
prusa_einsy_rambo.upload.tool=avrdude
|
||||
prusa_einsy_rambo.upload.protocol=wiring
|
||||
prusa_einsy_rambo.upload.maximum_size=253952
|
||||
prusa_einsy_rambo.upload.speed=115200
|
||||
|
||||
prusa_einsy_rambo.bootloader.tool=avrdude
|
||||
prusa_einsy_rambo.bootloader.low_fuses=0xFF
|
||||
prusa_einsy_rambo.bootloader.high_fuses=0xD8
|
||||
prusa_einsy_rambo.bootloader.extended_fuses=0xFD
|
||||
prusa_einsy_rambo.bootloader.path=prusa_einsy_rambo
|
||||
prusa_einsy_rambo.bootloader.file=prusa_einsy_rambo/stk500boot_v2_mega2560.hex
|
||||
prusa_einsy_rambo.bootloader.unlock_bits=0x3F
|
||||
prusa_einsy_rambo.bootloader.lock_bits=0x0F
|
||||
|
||||
prusa_einsy_rambo.build.mcu=atmega2560
|
||||
prusa_einsy_rambo.build.f_cpu=16000000L
|
||||
prusa_einsy_rambo.build.board=AVR_PRUSA_EINSY_RAMBO
|
||||
prusa_einsy_rambo.build.core=prusa_einsy_rambo
|
||||
prusa_einsy_rambo.build.variant=prusa_einsy_rambo
|
||||
prusa_einsy_rambo.compiler.c.elf.extra_flags=-Wl,-u,vfprintf -lprintf_flt -lm
|
@ -0,0 +1,280 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
@ -0,0 +1,587 @@
|
||||
# ----------------------------------------------------------------------------
|
||||
# Makefile to compile and link stk500boot bootloader
|
||||
# Author: Peter Fleury
|
||||
# based on WinAVR Makefile Template written by Eric B. Weddington, Jörg Wunsch, et al.
|
||||
#
|
||||
# Adjust F_CPU below to the clock frequency in Mhz of your AVR target
|
||||
# Adjust BOOTLOADER_ADDRESS to your AVR target
|
||||
#
|
||||
#----------------------------------------------------------------------------
|
||||
# On command line:
|
||||
#
|
||||
# make all = Make software.
|
||||
#
|
||||
# make clean = Clean out built project files.
|
||||
#
|
||||
# make coff = Convert ELF to AVR COFF.
|
||||
#
|
||||
# make extcoff = Convert ELF to AVR Extended COFF.
|
||||
#
|
||||
# make program = Download the hex file to the device, using avrdude.
|
||||
# Please customize the avrdude settings below first!
|
||||
#
|
||||
# make debug = Start either simulavr or avarice as specified for debugging,
|
||||
# with avr-gdb or avr-insight as the front end for debugging.
|
||||
#
|
||||
# make filename.s = Just compile filename.c into the assembler code only.
|
||||
#
|
||||
# make filename.i = Create a preprocessed source file for use in submitting
|
||||
# bug reports to the GCC project.
|
||||
#
|
||||
# To rebuild project do "make clean" then "make all".
|
||||
#----------------------------------------------------------------------------
|
||||
# <MLS> = Mark Sproul msproul-at-skychariot.com
|
||||
|
||||
|
||||
# MCU name
|
||||
MCU = atmega2560
|
||||
|
||||
|
||||
# Processor frequency.
|
||||
# This will define a symbol, F_CPU, in all source code files equal to the
|
||||
# processor frequency. You can then use this symbol in your source code to
|
||||
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
|
||||
# automatically to create a 32-bit value in your source code.
|
||||
F_CPU = 16000000
|
||||
|
||||
|
||||
# Bootloader
|
||||
# Please adjust if using a different AVR
|
||||
# 0x0e00*2=0x1C00 for ATmega8 512 words Boot Size
|
||||
# 0xFC00*2=0x1F800 for ATmega128 1024 words Boot Size
|
||||
# 0xF800*2=0x1F000 for ATmega1280
|
||||
# 0xF000*2=0x1E000 for ATmega1280
|
||||
BOOTLOADER_ADDRESS = 3E000
|
||||
|
||||
|
||||
# Output format. (can be srec, ihex, binary)
|
||||
FORMAT = ihex
|
||||
|
||||
|
||||
# Target file name (without extension).
|
||||
TARGET = stk500boot
|
||||
|
||||
|
||||
# List C source files here. (C dependencies are automatically generated.)
|
||||
SRC = stk500boot.c lcd.c
|
||||
|
||||
|
||||
# List Assembler source files here.
|
||||
# Make them always end in a capital .S. Files ending in a lowercase .s
|
||||
# will not be considered source files but generated files (assembler
|
||||
# output from the compiler), and will be deleted upon "make clean"!
|
||||
# Even though the DOS/Win* filesystem matches both .s and .S the same,
|
||||
# it will preserve the spelling of the filenames, and gcc itself does
|
||||
# care about how the name is spelled on its command-line.
|
||||
ASRC =
|
||||
|
||||
|
||||
# Optimization level, can be [0, 1, 2, 3, s].
|
||||
# 0 = turn off optimization. s = optimize for size.
|
||||
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
|
||||
OPT = s
|
||||
|
||||
|
||||
# Debugging format.
|
||||
# Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs.
|
||||
# AVR Studio 4.10 requires dwarf-2.
|
||||
# AVR [Extended] COFF format requires stabs, plus an avr-objcopy run.
|
||||
DEBUG = dwarf-2
|
||||
|
||||
|
||||
# List any extra directories to look for include files here.
|
||||
# Each directory must be seperated by a space.
|
||||
# Use forward slashes for directory separators.
|
||||
# For a directory that has spaces, enclose it in quotes.
|
||||
EXTRAINCDIRS =
|
||||
|
||||
|
||||
# Compiler flag to set the C Standard level.
|
||||
# c89 = "ANSI" C
|
||||
# gnu89 = c89 plus GCC extensions
|
||||
# c99 = ISO C99 standard (not yet fully implemented)
|
||||
# gnu99 = c99 plus GCC extensions
|
||||
CSTANDARD = -std=gnu99
|
||||
|
||||
|
||||
# Place -D or -U options here
|
||||
CDEFS = -DF_CPU=$(F_CPU)UL
|
||||
|
||||
|
||||
# Place -I options here
|
||||
CINCS =
|
||||
|
||||
|
||||
|
||||
#---------------- Compiler Options ----------------
|
||||
# -g*: generate debugging information
|
||||
# -O*: optimization level
|
||||
# -f...: tuning, see GCC manual and avr-libc documentation
|
||||
# -Wall...: warning level
|
||||
# -Wa,...: tell GCC to pass this to the assembler.
|
||||
# -adhlns...: create assembler listing
|
||||
CFLAGS = -g$(DEBUG)
|
||||
CFLAGS += $(CDEFS) $(CINCS)
|
||||
CFLAGS += -O$(OPT)
|
||||
CFLAGS += -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -fno-jump-tables
|
||||
CFLAGS += -Wall -Wstrict-prototypes
|
||||
CFLAGS += -Wa,-adhlns=$(<:.c=.lst)
|
||||
CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
|
||||
CFLAGS += $(CSTANDARD)
|
||||
|
||||
|
||||
#---------------- Assembler Options ----------------
|
||||
# -Wa,...: tell GCC to pass this to the assembler.
|
||||
# -ahlms: create listing
|
||||
# -gstabs: have the assembler create line number information; note that
|
||||
# for use in COFF files, additional information about filenames
|
||||
# and function names needs to be present in the assembler source
|
||||
# files -- see avr-libc docs [FIXME: not yet described there]
|
||||
ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs
|
||||
|
||||
|
||||
#---------------- Library Options ----------------
|
||||
# Minimalistic printf version
|
||||
PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min
|
||||
|
||||
# Floating point printf version (requires MATH_LIB = -lm below)
|
||||
PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt
|
||||
|
||||
# If this is left blank, then it will use the Standard printf version.
|
||||
PRINTF_LIB =
|
||||
#PRINTF_LIB = $(PRINTF_LIB_MIN)
|
||||
#PRINTF_LIB = $(PRINTF_LIB_FLOAT)
|
||||
|
||||
|
||||
# Minimalistic scanf version
|
||||
SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min
|
||||
|
||||
# Floating point + %[ scanf version (requires MATH_LIB = -lm below)
|
||||
SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt
|
||||
|
||||
# If this is left blank, then it will use the Standard scanf version.
|
||||
SCANF_LIB =
|
||||
#SCANF_LIB = $(SCANF_LIB_MIN)
|
||||
#SCANF_LIB = $(SCANF_LIB_FLOAT)
|
||||
|
||||
|
||||
MATH_LIB = -lm
|
||||
|
||||
|
||||
|
||||
#---------------- External Memory Options ----------------
|
||||
|
||||
# 64 KB of external RAM, starting after internal RAM (ATmega128!),
|
||||
# used for variables (.data/.bss) and heap (malloc()).
|
||||
#EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff
|
||||
|
||||
# 64 KB of external RAM, starting after internal RAM (ATmega128!),
|
||||
# only used for heap (malloc()).
|
||||
#EXTMEMOPTS = -Wl,--defsym=__heap_start=0x801100,--defsym=__heap_end=0x80ffff
|
||||
|
||||
EXTMEMOPTS =
|
||||
|
||||
|
||||
|
||||
|
||||
#---------------- Linker Options ----------------
|
||||
# -Wl,...: tell GCC to pass this to linker.
|
||||
# -Map: create map file
|
||||
# --cref: add cross reference to map file
|
||||
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref
|
||||
LDFLAGS += $(EXTMEMOPTS)
|
||||
LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)
|
||||
|
||||
|
||||
#--------------- bootloader linker Options -------
|
||||
# BOOTLOADER_ADDRESS (=Start of Boot Loader section
|
||||
# in bytes - not words) is defined above.
|
||||
#LDFLAGS += -Wl,--section-start=.text=$(BOOTLOADER_ADDRESS) -nostartfiles -nodefaultlibs
|
||||
#LDFLAGS += -Wl,--section-start=.text=$(BOOTLOADER_ADDRESS) -nostartfiles
|
||||
LDFLAGS += -Wl,--section-start=.text=$(BOOTLOADER_ADDRESS)
|
||||
|
||||
#---------------- Programming Options (avrdude) ----------------
|
||||
|
||||
# Programming hardware: alf avr910 avrisp bascom bsd
|
||||
# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500
|
||||
#
|
||||
# Type: avrdude -c ?
|
||||
# to get a full listing.
|
||||
#
|
||||
AVRDUDE_PROGRAMMER = stk500v2
|
||||
|
||||
# com1 = serial port. Use lpt1 to connect to parallel port.
|
||||
AVRDUDE_PORT = com1 # programmer connected to serial device
|
||||
|
||||
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex
|
||||
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep
|
||||
|
||||
|
||||
# Uncomment the following if you want avrdude's erase cycle counter.
|
||||
# Note that this counter needs to be initialized first using -Yn,
|
||||
# see avrdude manual.
|
||||
#AVRDUDE_ERASE_COUNTER = -y
|
||||
|
||||
# Uncomment the following if you do /not/ wish a verification to be
|
||||
# performed after programming the device.
|
||||
#AVRDUDE_NO_VERIFY = -V
|
||||
|
||||
# Increase verbosity level. Please use this when submitting bug
|
||||
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude>
|
||||
# to submit bug reports.
|
||||
#AVRDUDE_VERBOSE = -v -v
|
||||
|
||||
AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)
|
||||
AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY)
|
||||
AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE)
|
||||
AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER)
|
||||
|
||||
|
||||
|
||||
#---------------- Debugging Options ----------------
|
||||
|
||||
# For simulavr only - target MCU frequency.
|
||||
DEBUG_MFREQ = $(F_CPU)
|
||||
|
||||
# Set the DEBUG_UI to either gdb or insight.
|
||||
# DEBUG_UI = gdb
|
||||
DEBUG_UI = insight
|
||||
|
||||
# Set the debugging back-end to either avarice, simulavr.
|
||||
DEBUG_BACKEND = avarice
|
||||
#DEBUG_BACKEND = simulavr
|
||||
|
||||
# GDB Init Filename.
|
||||
GDBINIT_FILE = __avr_gdbinit
|
||||
|
||||
# When using avarice settings for the JTAG
|
||||
JTAG_DEV = /dev/com1
|
||||
|
||||
# Debugging port used to communicate between GDB / avarice / simulavr.
|
||||
DEBUG_PORT = 4242
|
||||
|
||||
# Debugging host used to communicate between GDB / avarice / simulavr, normally
|
||||
# just set to localhost unless doing some sort of crazy debugging when
|
||||
# avarice is running on a different computer.
|
||||
DEBUG_HOST = localhost
|
||||
|
||||
|
||||
|
||||
#============================================================================
|
||||
|
||||
|
||||
# Define programs and commands.
|
||||
SHELL = sh
|
||||
CC = avr-gcc
|
||||
OBJCOPY = avr-objcopy
|
||||
OBJDUMP = avr-objdump
|
||||
SIZE = avr-size
|
||||
NM = avr-nm
|
||||
AVRDUDE = avrdude
|
||||
REMOVE = rm -f
|
||||
COPY = cp
|
||||
WINSHELL = cmd
|
||||
|
||||
|
||||
# Define Messages
|
||||
# English
|
||||
MSG_ERRORS_NONE = Errors: none
|
||||
MSG_BEGIN = -------- begin --------
|
||||
MSG_END = -------- end --------
|
||||
MSG_SIZE_BEFORE = Size before:
|
||||
MSG_SIZE_AFTER = Size after:
|
||||
MSG_COFF = Converting to AVR COFF:
|
||||
MSG_EXTENDED_COFF = Converting to AVR Extended COFF:
|
||||
MSG_FLASH = Creating load file for Flash:
|
||||
MSG_EEPROM = Creating load file for EEPROM:
|
||||
MSG_EXTENDED_LISTING = Creating Extended Listing:
|
||||
MSG_SYMBOL_TABLE = Creating Symbol Table:
|
||||
MSG_LINKING = Linking:
|
||||
MSG_COMPILING = Compiling:
|
||||
MSG_ASSEMBLING = Assembling:
|
||||
MSG_CLEANING = Cleaning project:
|
||||
|
||||
|
||||
|
||||
|
||||
# Define all object files.
|
||||
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o)
|
||||
|
||||
# Define all listing files.
|
||||
LST = $(SRC:.c=.lst) $(ASRC:.S=.lst)
|
||||
|
||||
|
||||
# Compiler flags to generate dependency files.
|
||||
GENDEPFLAGS = -MD -MP -MF .dep/$(@F).d
|
||||
|
||||
|
||||
# Combine all necessary flags and optional flags.
|
||||
# Add target processor to flags.
|
||||
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS)
|
||||
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
|
||||
|
||||
|
||||
|
||||
############################################################
|
||||
# May 25, 2010 <MLS> Adding 1280 support
|
||||
#mega1280: MCU = atmega1280
|
||||
#mega1280: F_CPU = 16000000
|
||||
#mega1280: BOOTLOADER_ADDRESS = 1E000
|
||||
#mega1280: CFLAGS += -D_MEGA_BOARD_
|
||||
#mega1280: begin gccversion sizebefore build sizeafter end
|
||||
# mv $(TARGET).hex stk500boot_v2_mega1280.hex
|
||||
|
||||
|
||||
############################################################
|
||||
# Jul 6, 2010 <MLS> Adding 2560 support
|
||||
mega2560: MCU = atmega2560
|
||||
mega2560: F_CPU = 16000000
|
||||
mega2560: BOOTLOADER_ADDRESS = 3E000
|
||||
mega2560: CFLAGS += -D_MEGA_BOARD_
|
||||
mega2560: begin gccversion sizebefore build sizeafter end
|
||||
mv $(TARGET).hex stk500boot_v2_mega2560.hex
|
||||
|
||||
|
||||
############################################################
|
||||
#Initial config on Amber128 board
|
||||
# avrdude: Device signature = 0x1e9702
|
||||
# avrdude: safemode: lfuse reads as 8F
|
||||
# avrdude: safemode: hfuse reads as CB
|
||||
# avrdude: safemode: efuse reads as FF
|
||||
# Jul 17, 2010 <MLS> Adding 128 support
|
||||
############################################################
|
||||
amber128: MCU = atmega128
|
||||
#amber128: F_CPU = 16000000
|
||||
amber128: F_CPU = 14745600
|
||||
amber128: BOOTLOADER_ADDRESS = 1E000
|
||||
amber128: CFLAGS += -D_BOARD_AMBER128_
|
||||
amber128: begin gccversion sizebefore build sizeafter end
|
||||
mv $(TARGET).hex stk500boot_v2_amber128.hex
|
||||
|
||||
############################################################
|
||||
# Aug 23, 2010 <MLS> Adding atmega2561 support
|
||||
m2561: MCU = atmega2561
|
||||
m2561: F_CPU = 8000000
|
||||
m2561: BOOTLOADER_ADDRESS = 3E000
|
||||
m2561: CFLAGS += -D_ANDROID_2561_ -DBAUDRATE=57600
|
||||
m2561: begin gccversion sizebefore build sizeafter end
|
||||
mv $(TARGET).hex stk500boot_v2_android2561.hex
|
||||
|
||||
|
||||
############################################################
|
||||
# avrdude: Device signature = 0x1e9801
|
||||
# avrdude: safemode: lfuse reads as EC
|
||||
# avrdude: safemode: hfuse reads as 18
|
||||
# avrdude: safemode: efuse reads as FD
|
||||
# Aug 23, 2010 <MLS> Adding cerebot 2560 @ 8mhz
|
||||
#avrdude -P usb -c usbtiny -p m2560 -v -U flash:w:/Arduino/WiringBootV2_upd1/stk500boot_v2_cerebotplus.hex
|
||||
############################################################
|
||||
cerebot: MCU = atmega2560
|
||||
cerebot: F_CPU = 8000000
|
||||
cerebot: BOOTLOADER_ADDRESS = 3E000
|
||||
cerebot: CFLAGS += -D_CEREBOTPLUS_BOARD_ -DBAUDRATE=38400 -DUART_BAUDRATE_DOUBLE_SPEED=1
|
||||
cerebot: begin gccversion sizebefore build sizeafter end
|
||||
mv $(TARGET).hex stk500boot_v2_cerebotplus.hex
|
||||
|
||||
|
||||
############################################################
|
||||
# Aug 23, 2010 <MLS> Adding atmega2561 support
|
||||
penguino: MCU = atmega32
|
||||
penguino: F_CPU = 16000000
|
||||
penguino: BOOTLOADER_ADDRESS = 7800
|
||||
penguino: CFLAGS += -D_PENGUINO_ -DBAUDRATE=57600
|
||||
penguino: begin gccversion sizebefore build sizeafter end
|
||||
mv $(TARGET).hex stk500boot_v2_penguino.hex
|
||||
|
||||
|
||||
# Default target.
|
||||
all: begin gccversion sizebefore build sizeafter end
|
||||
|
||||
build: elf hex eep lss sym
|
||||
#build: hex eep lss sym
|
||||
|
||||
elf: $(TARGET).elf
|
||||
hex: $(TARGET).hex
|
||||
eep: $(TARGET).eep
|
||||
lss: $(TARGET).lss
|
||||
sym: $(TARGET).sym
|
||||
|
||||
|
||||
|
||||
# Eye candy.
|
||||
# AVR Studio 3.x does not check make's exit code but relies on
|
||||
# the following magic strings to be generated by the compile job.
|
||||
begin:
|
||||
@echo
|
||||
@echo $(MSG_BEGIN)
|
||||
|
||||
end:
|
||||
@echo $(MSG_END)
|
||||
@echo
|
||||
|
||||
|
||||
# Display size of file.
|
||||
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
|
||||
ELFSIZE = $(SIZE) --format=avr --mcu=$(MCU) $(TARGET).elf
|
||||
|
||||
sizebefore:
|
||||
@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); \
|
||||
2>/dev/null; echo; fi
|
||||
|
||||
sizeafter:
|
||||
@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); \
|
||||
2>/dev/null; echo; fi
|
||||
|
||||
|
||||
|
||||
# Display compiler version information.
|
||||
gccversion :
|
||||
@$(CC) --version
|
||||
|
||||
|
||||
|
||||
# Program the device.
|
||||
program: $(TARGET).hex $(TARGET).eep
|
||||
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)
|
||||
|
||||
|
||||
# Generate avr-gdb config/init file which does the following:
|
||||
# define the reset signal, load the target file, connect to target, and set
|
||||
# a breakpoint at main().
|
||||
gdb-config:
|
||||
@$(REMOVE) $(GDBINIT_FILE)
|
||||
@echo define reset >> $(GDBINIT_FILE)
|
||||
@echo SIGNAL SIGHUP >> $(GDBINIT_FILE)
|
||||
@echo end >> $(GDBINIT_FILE)
|
||||
@echo file $(TARGET).elf >> $(GDBINIT_FILE)
|
||||
@echo target remote $(DEBUG_HOST):$(DEBUG_PORT) >> $(GDBINIT_FILE)
|
||||
ifeq ($(DEBUG_BACKEND),simulavr)
|
||||
@echo load >> $(GDBINIT_FILE)
|
||||
endif
|
||||
@echo break main >> $(GDBINIT_FILE)
|
||||
|
||||
debug: gdb-config $(TARGET).elf
|
||||
ifeq ($(DEBUG_BACKEND), avarice)
|
||||
@echo Starting AVaRICE - Press enter when "waiting to connect" message displays.
|
||||
@$(WINSHELL) /c start avarice --jtag $(JTAG_DEV) --erase --program --file \
|
||||
$(TARGET).elf $(DEBUG_HOST):$(DEBUG_PORT)
|
||||
@$(WINSHELL) /c pause
|
||||
|
||||
else
|
||||
@$(WINSHELL) /c start simulavr --gdbserver --device $(MCU) --clock-freq \
|
||||
$(DEBUG_MFREQ) --port $(DEBUG_PORT)
|
||||
endif
|
||||
@$(WINSHELL) /c start avr-$(DEBUG_UI) --command=$(GDBINIT_FILE)
|
||||
|
||||
|
||||
|
||||
|
||||
# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.
|
||||
COFFCONVERT=$(OBJCOPY) --debugging \
|
||||
--change-section-address .data-0x800000 \
|
||||
--change-section-address .bss-0x800000 \
|
||||
--change-section-address .noinit-0x800000 \
|
||||
--change-section-address .eeprom-0x810000
|
||||
|
||||
|
||||
|
||||
coff: $(TARGET).elf
|
||||
@echo
|
||||
@echo $(MSG_COFF) $(TARGET).cof
|
||||
$(COFFCONVERT) -O coff-avr $< $(TARGET).cof
|
||||
|
||||
|
||||
extcoff: $(TARGET).elf
|
||||
@echo
|
||||
@echo $(MSG_EXTENDED_COFF) $(TARGET).cof
|
||||
$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof
|
||||
|
||||
|
||||
# Create final output files (.hex, .eep) from ELF output file.
|
||||
%.hex: %.elf
|
||||
@echo
|
||||
@echo $(MSG_FLASH) $@
|
||||
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@
|
||||
|
||||
%.eep: %.elf
|
||||
@echo
|
||||
@echo $(MSG_EEPROM) $@
|
||||
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
|
||||
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@
|
||||
|
||||
# Create extended listing file from ELF output file.
|
||||
%.lss: %.elf
|
||||
@echo
|
||||
@echo $(MSG_EXTENDED_LISTING) $@
|
||||
$(OBJDUMP) -h -S $< > $@
|
||||
|
||||
# Create a symbol table from ELF output file.
|
||||
%.sym: %.elf
|
||||
@echo
|
||||
@echo $(MSG_SYMBOL_TABLE) $@
|
||||
$(NM) -n $< > $@
|
||||
|
||||
|
||||
|
||||
# Link: create ELF output file from object files.
|
||||
.SECONDARY : $(TARGET).elf
|
||||
.PRECIOUS : $(OBJ)
|
||||
%.elf: $(OBJ)
|
||||
@echo
|
||||
@echo $(MSG_LINKING) $@
|
||||
$(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS)
|
||||
|
||||
|
||||
# Compile: create object files from C source files.
|
||||
%.o : %.c
|
||||
@echo
|
||||
@echo $(MSG_COMPILING) $<
|
||||
$(CC) -c $(ALL_CFLAGS) $< -o $@
|
||||
|
||||
|
||||
# Compile: create assembler files from C source files.
|
||||
%.s : %.c
|
||||
$(CC) -S $(ALL_CFLAGS) $< -o $@
|
||||
|
||||
|
||||
# Assemble: create object files from assembler source files.
|
||||
%.o : %.S
|
||||
@echo
|
||||
@echo $(MSG_ASSEMBLING) $<
|
||||
$(CC) -c $(ALL_ASFLAGS) $< -o $@
|
||||
|
||||
# Create preprocessed source for use in sending a bug report.
|
||||
%.i : %.c
|
||||
$(CC) -E -mmcu=$(MCU) -I. $(CFLAGS) $< -o $@
|
||||
|
||||
|
||||
# Target: clean project.
|
||||
clean: begin clean_list end
|
||||
|
||||
clean_list :
|
||||
@echo
|
||||
@echo $(MSG_CLEANING)
|
||||
$(REMOVE) *.hex
|
||||
$(REMOVE) *.eep
|
||||
$(REMOVE) *.cof
|
||||
$(REMOVE) *.elf
|
||||
$(REMOVE) *.map
|
||||
$(REMOVE) *.sym
|
||||
$(REMOVE) *.lss
|
||||
$(REMOVE) $(OBJ)
|
||||
$(REMOVE) $(LST)
|
||||
$(REMOVE) $(SRC:.c=.s)
|
||||
$(REMOVE) $(SRC:.c=.d)
|
||||
$(REMOVE) .dep/*
|
||||
|
||||
|
||||
|
||||
# Include the dependency files.
|
||||
-include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)
|
||||
|
||||
|
||||
# Listing of phony targets.
|
||||
.PHONY : all begin finish end sizebefore sizeafter gccversion \
|
||||
build elf hex eep lss sym coff extcoff \
|
||||
clean clean_list program debug gdb-config
|
||||
|
@ -0,0 +1,189 @@
|
||||
//**************************************************************************************************
|
||||
//*
|
||||
//* Atmel AVR CPU name strings
|
||||
//*
|
||||
//**************************************************************************************************
|
||||
//* Sep 19, 2010 <MLS> Started on avr_cpunames.h
|
||||
//**************************************************************************************************
|
||||
|
||||
//#include "avr_cpunames.h"
|
||||
|
||||
//**************************************************************************************************
|
||||
|
||||
|
||||
#if defined (__AVR_AT94K__)
|
||||
#define _AVR_CPU_NAME_ "AT94k"
|
||||
#elif defined (__AVR_AT43USB320__)
|
||||
#elif defined (__AVR_AT43USB355__)
|
||||
#elif defined (__AVR_AT76C711__)
|
||||
#elif defined (__AVR_AT86RF401__)
|
||||
#elif defined (__AVR_AT90PWM1__)
|
||||
#elif defined (__AVR_AT90PWM2__)
|
||||
#elif defined (__AVR_AT90PWM2B__)
|
||||
#elif defined (__AVR_AT90PWM3__)
|
||||
#elif defined (__AVR_AT90PWM3B__)
|
||||
#elif defined (__AVR_AT90PWM216__)
|
||||
#elif defined (__AVR_AT90PWM316__)
|
||||
#elif defined (__AVR_ATmega32C1__)
|
||||
#elif defined (__AVR_ATmega32M1__)
|
||||
#elif defined (__AVR_ATmega32U4__)
|
||||
#define _AVR_CPU_NAME_ "ATmega32U4"
|
||||
#elif defined (__AVR_ATmega32U6__)
|
||||
#define _AVR_CPU_NAME_ "ATmega32U6"
|
||||
#elif defined (__AVR_ATmega128__)
|
||||
#define _AVR_CPU_NAME_ "Atmega128"
|
||||
#elif defined (__AVR_ATmega1280__)
|
||||
#define _AVR_CPU_NAME_ "ATmega1280"
|
||||
#elif defined (__AVR_ATmega1281__)
|
||||
#define _AVR_CPU_NAME_ "ATmega1281"
|
||||
#elif defined (__AVR_ATmega1284P__)
|
||||
#define _AVR_CPU_NAME_ "ATmega1284"
|
||||
#elif defined (__AVR_ATmega128RFA1__)
|
||||
#define _AVR_CPU_NAME_ "ATmega128RFA1"
|
||||
#elif defined (__AVR_ATmega2560__)
|
||||
#define _AVR_CPU_NAME_ "ATmega2560"
|
||||
#elif defined (__AVR_ATmega2561__)
|
||||
#define _AVR_CPU_NAME_ "ATmega2561"
|
||||
#elif defined (__AVR_AT90CAN32__)
|
||||
#define _AVR_CPU_NAME_ "AT90CAN32"
|
||||
#elif defined (__AVR_AT90CAN64__)
|
||||
#define _AVR_CPU_NAME_ "AT90CAN64"
|
||||
#elif defined (__AVR_AT90CAN128__)
|
||||
#define _AVR_CPU_NAME_ "AT90CAN128"
|
||||
#elif defined (__AVR_AT90USB82__)
|
||||
#define _AVR_CPU_NAME_ "AT90USB82"
|
||||
#elif defined (__AVR_AT90USB162__)
|
||||
#define _AVR_CPU_NAME_ "AT90USB162"
|
||||
#elif defined (__AVR_AT90USB646__)
|
||||
#define _AVR_CPU_NAME_ "AT90USB646"
|
||||
#elif defined (__AVR_AT90USB647__)
|
||||
#define _AVR_CPU_NAME_ "AT90USB647"
|
||||
#elif defined (__AVR_AT90USB1286__)
|
||||
#define _AVR_CPU_NAME_ "AT90USB1286"
|
||||
#elif defined (__AVR_AT90USB1287__)
|
||||
#define _AVR_CPU_NAME_ "AT90USB1287"
|
||||
#elif defined (__AVR_ATmega64__)
|
||||
#define _AVR_CPU_NAME_ "ATmega64"
|
||||
#elif defined (__AVR_ATmega640__)
|
||||
#define _AVR_CPU_NAME_ "ATmega640"
|
||||
#elif defined (__AVR_ATmega644__)
|
||||
#define _AVR_CPU_NAME_ "ATmega644"
|
||||
#elif defined (__AVR_ATmega644P__)
|
||||
#define _AVR_CPU_NAME_ "ATmega644P"
|
||||
#elif defined (__AVR_ATmega645__)
|
||||
#define _AVR_CPU_NAME_ "ATmega645"
|
||||
#elif defined (__AVR_ATmega6450__)
|
||||
#define _AVR_CPU_NAME_ "ATmega6450"
|
||||
#elif defined (__AVR_ATmega649__)
|
||||
#define _AVR_CPU_NAME_ "ATmega649"
|
||||
#elif defined (__AVR_ATmega6490__)
|
||||
#define _AVR_CPU_NAME_ "ATmega6490"
|
||||
#elif defined (__AVR_ATmega103__)
|
||||
#define _AVR_CPU_NAME_ "ATmega103"
|
||||
#elif defined (__AVR_ATmega32__)
|
||||
#define _AVR_CPU_NAME_ "Atmega32"
|
||||
#elif defined (__AVR_ATmega323__)
|
||||
#define _AVR_CPU_NAME_ "ATmega323"
|
||||
#elif defined (__AVR_ATmega324P__)
|
||||
#define _AVR_CPU_NAME_ "ATmega324P"
|
||||
#elif defined (__AVR_ATmega325__)
|
||||
#define _AVR_CPU_NAME_ "ATmega325"
|
||||
#elif defined (__AVR_ATmega325P__)
|
||||
#define _AVR_CPU_NAME_ "ATmega325P"
|
||||
#elif defined (__AVR_ATmega3250__)
|
||||
#define _AVR_CPU_NAME_ "ATmega3250"
|
||||
#elif defined (__AVR_ATmega3250P__)
|
||||
#define _AVR_CPU_NAME_ "ATmega3250P"
|
||||
#elif defined (__AVR_ATmega328P__)
|
||||
#define _AVR_CPU_NAME_ "ATmega328P"
|
||||
#elif defined (__AVR_ATmega329__)
|
||||
#define _AVR_CPU_NAME_ "ATmega329"
|
||||
#elif defined (__AVR_ATmega329P__)
|
||||
#define _AVR_CPU_NAME_ "ATmega329P"
|
||||
#elif defined (__AVR_ATmega3290__)
|
||||
#define _AVR_CPU_NAME_ "ATmega3290"
|
||||
#elif defined (__AVR_ATmega3290P__)
|
||||
#define _AVR_CPU_NAME_ "ATmega3290P"
|
||||
#elif defined (__AVR_ATmega32HVB__)
|
||||
#define _AVR_CPU_NAME_ "ATmega32HVB"
|
||||
#elif defined (__AVR_ATmega406__)
|
||||
#define _AVR_CPU_NAME_ "ATmega406"
|
||||
#elif defined (__AVR_ATmega16__)
|
||||
#define _AVR_CPU_NAME_ "Atmega16"
|
||||
#elif defined (__AVR_ATmega161__)
|
||||
#define _AVR_CPU_NAME_ "ATmega161"
|
||||
#elif defined (__AVR_ATmega162__)
|
||||
#define _AVR_CPU_NAME_ "ATmega162"
|
||||
#elif defined (__AVR_ATmega163__)
|
||||
#define _AVR_CPU_NAME_ "ATmega163"
|
||||
#elif defined (__AVR_ATmega164P__)
|
||||
#define _AVR_CPU_NAME_ "ATmega164P"
|
||||
#elif defined (__AVR_ATmega165__)
|
||||
#define _AVR_CPU_NAME_ "ATmega165"
|
||||
#elif defined (__AVR_ATmega165P__)
|
||||
#define _AVR_CPU_NAME_ "ATmega165P"
|
||||
#elif defined (__AVR_ATmega168__)
|
||||
#define _AVR_CPU_NAME_ "ATmega168"
|
||||
#elif defined (__AVR_ATmega168P__)
|
||||
#define _AVR_CPU_NAME_ "ATmega168P"
|
||||
#elif defined (__AVR_ATmega169__)
|
||||
#define _AVR_CPU_NAME_ "Atmega169"
|
||||
#elif defined (__AVR_ATmega169P__)
|
||||
#define _AVR_CPU_NAME_ "ATmega169P"
|
||||
#elif defined (__AVR_ATmega8HVA__)
|
||||
#define _AVR_CPU_NAME_ "ATmega8HVA"
|
||||
#elif defined (__AVR_ATmega16HVA__)
|
||||
#define _AVR_CPU_NAME_ "ATmega16HVA"
|
||||
#elif defined (__AVR_ATmega8__)
|
||||
#define _AVR_CPU_NAME_ "ATmega8"
|
||||
#elif defined (__AVR_ATmega48__)
|
||||
#define _AVR_CPU_NAME_ "ATmega48"
|
||||
#elif defined (__AVR_ATmega48P__)
|
||||
#define _AVR_CPU_NAME_ "ATmega48P"
|
||||
#elif defined (__AVR_ATmega88__)
|
||||
#define _AVR_CPU_NAME_ "ATmega88"
|
||||
#elif defined (__AVR_ATmega88P__)
|
||||
#define _AVR_CPU_NAME_ "ATmega88P"
|
||||
#elif defined (__AVR_ATmega8515__)
|
||||
#define _AVR_CPU_NAME_ "ATmega8515"
|
||||
#elif defined (__AVR_ATmega8535__)
|
||||
#define _AVR_CPU_NAME_ "ATmega8535"
|
||||
#elif defined (__AVR_AT90S8535__)
|
||||
#elif defined (__AVR_AT90C8534__)
|
||||
#elif defined (__AVR_AT90S8515__)
|
||||
#elif defined (__AVR_AT90S4434__)
|
||||
#elif defined (__AVR_AT90S4433__)
|
||||
#elif defined (__AVR_AT90S4414__)
|
||||
#elif defined (__AVR_ATtiny22__)
|
||||
#elif defined (__AVR_ATtiny26__)
|
||||
#elif defined (__AVR_AT90S2343__)
|
||||
#elif defined (__AVR_AT90S2333__)
|
||||
#elif defined (__AVR_AT90S2323__)
|
||||
#elif defined (__AVR_AT90S2313__)
|
||||
#elif defined (__AVR_ATtiny2313__)
|
||||
#define _AVR_CPU_NAME_ "ATtiny2313"
|
||||
#elif defined (__AVR_ATtiny13__)
|
||||
#elif defined (__AVR_ATtiny13A__)
|
||||
#elif defined (__AVR_ATtiny25__)
|
||||
#elif defined (__AVR_ATtiny45__)
|
||||
#elif defined (__AVR_ATtiny85__)
|
||||
#elif defined (__AVR_ATtiny24__)
|
||||
#elif defined (__AVR_ATtiny44__)
|
||||
#elif defined (__AVR_ATtiny84__)
|
||||
#elif defined (__AVR_ATtiny261__)
|
||||
#elif defined (__AVR_ATtiny461__)
|
||||
#elif defined (__AVR_ATtiny861__)
|
||||
#elif defined (__AVR_ATtiny43U__)
|
||||
#elif defined (__AVR_ATtiny48__)
|
||||
#elif defined (__AVR_ATtiny88__)
|
||||
#elif defined (__AVR_ATtiny167__)
|
||||
#elif defined (__AVR_ATmega8U2__)
|
||||
#define _AVR_CPU_NAME_ "ATmega8U2"
|
||||
#else
|
||||
#error cpu not defined
|
||||
#endif
|
||||
|
||||
|
||||
#if !defined (_AVR_CPU_NAME_)
|
||||
// #define _AVR_CPU_NAME_ "UNKNOWN"
|
||||
#endif
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,118 @@
|
||||
//**** ATMEL AVR - A P P L I C A T I O N N O T E ************************
|
||||
//*
|
||||
//* Title: AVR068 - STK500 Communication Protocol
|
||||
//* Filename: command.h
|
||||
//* Version: 1.0
|
||||
//* Last updated: 31.01.2005
|
||||
//*
|
||||
//* Support E-mail: avr@atmel.com
|
||||
//*
|
||||
//**************************************************************************
|
||||
|
||||
// *****************[ STK message constants ]***************************
|
||||
|
||||
#define MESSAGE_START 0x1B //= ESC = 27 decimal
|
||||
#define TOKEN 0x0E
|
||||
|
||||
// *****************[ STK general command constants ]**************************
|
||||
|
||||
#define CMD_SIGN_ON 0x01
|
||||
#define CMD_SET_PARAMETER 0x02
|
||||
#define CMD_GET_PARAMETER 0x03
|
||||
#define CMD_SET_DEVICE_PARAMETERS 0x04
|
||||
#define CMD_OSCCAL 0x05
|
||||
#define CMD_LOAD_ADDRESS 0x06
|
||||
#define CMD_FIRMWARE_UPGRADE 0x07
|
||||
|
||||
// *****************[ STK ISP command constants ]******************************
|
||||
|
||||
#define CMD_ENTER_PROGMODE_ISP 0x10
|
||||
#define CMD_LEAVE_PROGMODE_ISP 0x11
|
||||
#define CMD_CHIP_ERASE_ISP 0x12
|
||||
#define CMD_PROGRAM_FLASH_ISP 0x13
|
||||
#define CMD_READ_FLASH_ISP 0x14
|
||||
#define CMD_PROGRAM_EEPROM_ISP 0x15
|
||||
#define CMD_READ_EEPROM_ISP 0x16
|
||||
#define CMD_PROGRAM_FUSE_ISP 0x17
|
||||
#define CMD_READ_FUSE_ISP 0x18
|
||||
#define CMD_PROGRAM_LOCK_ISP 0x19
|
||||
#define CMD_READ_LOCK_ISP 0x1A
|
||||
#define CMD_READ_SIGNATURE_ISP 0x1B
|
||||
#define CMD_READ_OSCCAL_ISP 0x1C
|
||||
#define CMD_SPI_MULTI 0x1D
|
||||
|
||||
// *****************[ STK PP command constants ]*******************************
|
||||
|
||||
#define CMD_ENTER_PROGMODE_PP 0x20
|
||||
#define CMD_LEAVE_PROGMODE_PP 0x21
|
||||
#define CMD_CHIP_ERASE_PP 0x22
|
||||
#define CMD_PROGRAM_FLASH_PP 0x23
|
||||
#define CMD_READ_FLASH_PP 0x24
|
||||
#define CMD_PROGRAM_EEPROM_PP 0x25
|
||||
#define CMD_READ_EEPROM_PP 0x26
|
||||
#define CMD_PROGRAM_FUSE_PP 0x27
|
||||
#define CMD_READ_FUSE_PP 0x28
|
||||
#define CMD_PROGRAM_LOCK_PP 0x29
|
||||
#define CMD_READ_LOCK_PP 0x2A
|
||||
#define CMD_READ_SIGNATURE_PP 0x2B
|
||||
#define CMD_READ_OSCCAL_PP 0x2C
|
||||
|
||||
#define CMD_SET_CONTROL_STACK 0x2D
|
||||
|
||||
// *****************[ STK HVSP command constants ]*****************************
|
||||
|
||||
#define CMD_ENTER_PROGMODE_HVSP 0x30
|
||||
#define CMD_LEAVE_PROGMODE_HVSP 0x31
|
||||
#define CMD_CHIP_ERASE_HVSP 0x32
|
||||
#define CMD_PROGRAM_FLASH_HVSP ` 0x33
|
||||
#define CMD_READ_FLASH_HVSP 0x34
|
||||
#define CMD_PROGRAM_EEPROM_HVSP 0x35
|
||||
#define CMD_READ_EEPROM_HVSP 0x36
|
||||
#define CMD_PROGRAM_FUSE_HVSP 0x37
|
||||
#define CMD_READ_FUSE_HVSP 0x38
|
||||
#define CMD_PROGRAM_LOCK_HVSP 0x39
|
||||
#define CMD_READ_LOCK_HVSP 0x3A
|
||||
#define CMD_READ_SIGNATURE_HVSP 0x3B
|
||||
#define CMD_READ_OSCCAL_HVSP 0x3C
|
||||
|
||||
// *****************[ STK Prusa3D specific command constants ]*****************
|
||||
|
||||
#define CMD_SET_UPLOAD_SIZE_PRUSA3D 0x71
|
||||
|
||||
|
||||
// *****************[ STK status constants ]***************************
|
||||
|
||||
// Success
|
||||
#define STATUS_CMD_OK 0x00
|
||||
|
||||
// Warnings
|
||||
#define STATUS_CMD_TOUT 0x80
|
||||
#define STATUS_RDY_BSY_TOUT 0x81
|
||||
#define STATUS_SET_PARAM_MISSING 0x82
|
||||
|
||||
// Errors
|
||||
#define STATUS_CMD_FAILED 0xC0
|
||||
#define STATUS_CKSUM_ERROR 0xC1
|
||||
#define STATUS_CMD_UNKNOWN 0xC9
|
||||
|
||||
// *****************[ STK parameter constants ]***************************
|
||||
#define PARAM_BUILD_NUMBER_LOW 0x80
|
||||
#define PARAM_BUILD_NUMBER_HIGH 0x81
|
||||
#define PARAM_HW_VER 0x90
|
||||
#define PARAM_SW_MAJOR 0x91
|
||||
#define PARAM_SW_MINOR 0x92
|
||||
#define PARAM_VTARGET 0x94
|
||||
#define PARAM_VADJUST 0x95
|
||||
#define PARAM_OSC_PSCALE 0x96
|
||||
#define PARAM_OSC_CMATCH 0x97
|
||||
#define PARAM_SCK_DURATION 0x98
|
||||
#define PARAM_TOPCARD_DETECT 0x9A
|
||||
#define PARAM_STATUS 0x9C
|
||||
#define PARAM_DATA 0x9D
|
||||
#define PARAM_RESET_POLARITY 0x9E
|
||||
#define PARAM_CONTROLLER_INIT 0x9F
|
||||
|
||||
// *****************[ STK answer constants ]***************************
|
||||
|
||||
#define ANSWER_CKSUM_ERROR 0xB0
|
||||
|
@ -0,0 +1,718 @@
|
||||
/*****************************************************************************
|
||||
Title : HD44780 Library
|
||||
Author : SA Development
|
||||
Version: 1.11
|
||||
*****************************************************************************/
|
||||
#ifndef F_CPU
|
||||
#define F_CPU 16000000UL
|
||||
#endif
|
||||
#include <avr/pgmspace.h>
|
||||
#include "lcd.h"
|
||||
#include <avr/sfr_defs.h>
|
||||
#if (USE_ADELAY_LIBRARY==1)
|
||||
#include "adelay.h"
|
||||
#else
|
||||
#define Delay_ns(__ns) \
|
||||
if((unsigned long) (F_CPU/1000000000.0 * __ns) != F_CPU/1000000000.0 * __ns)\
|
||||
__builtin_avr_delay_cycles((unsigned long) ( F_CPU/1000000000.0 * __ns)+1);\
|
||||
else __builtin_avr_delay_cycles((unsigned long) ( F_CPU/1000000000.0 * __ns))
|
||||
#define Delay_us(__us) \
|
||||
if((unsigned long) (F_CPU/1000000.0 * __us) != F_CPU/1000000.0 * __us)\
|
||||
__builtin_avr_delay_cycles((unsigned long) ( F_CPU/1000000.0 * __us)+1);\
|
||||
else __builtin_avr_delay_cycles((unsigned long) ( F_CPU/1000000.0 * __us))
|
||||
#define Delay_ms(__ms) \
|
||||
if((unsigned long) (F_CPU/1000.0 * __ms) != F_CPU/1000.0 * __ms)\
|
||||
__builtin_avr_delay_cycles((unsigned long) ( F_CPU/1000.0 * __ms)+1);\
|
||||
else __builtin_avr_delay_cycles((unsigned long) ( F_CPU/1000.0 * __ms))
|
||||
#define Delay_s(__s) \
|
||||
if((unsigned long) (F_CPU/1.0 * __s) != F_CPU/1.0 * __s)\
|
||||
__builtin_avr_delay_cycles((unsigned long) ( F_CPU/1.0 * __s)+1);\
|
||||
else __builtin_avr_delay_cycles((unsigned long) ( F_CPU/1.0 * __s))
|
||||
#endif
|
||||
|
||||
#if !defined(LCD_BITS) || (LCD_BITS!=4 && LCD_BITS!=8)
|
||||
#error LCD_BITS is not defined or not valid.
|
||||
#endif
|
||||
|
||||
#if !defined(WAIT_MODE) || (WAIT_MODE!=0 && WAIT_MODE!=1)
|
||||
#error WAIT_MODE is not defined or not valid.
|
||||
#endif
|
||||
|
||||
#if !defined(RW_LINE_IMPLEMENTED) || (RW_LINE_IMPLEMENTED!=0 && RW_LINE_IMPLEMENTED!=1)
|
||||
#error RW_LINE_IMPLEMENTED is not defined or not valid.
|
||||
#endif
|
||||
|
||||
#if (WAIT_MODE==1 && RW_LINE_IMPLEMENTED!=1)
|
||||
#error WAIT_MODE=1 requires RW_LINE_IMPLEMENTED=1.
|
||||
#endif
|
||||
|
||||
#if !defined(LCD_DISPLAYS) || (LCD_DISPLAYS<1) || (LCD_DISPLAYS>4)
|
||||
#error LCD_DISPLAYS is not defined or not valid.
|
||||
#endif
|
||||
|
||||
// Constants/Macros
|
||||
#define PIN(x) (*(&x - 2)) // Address of Data Direction Register of Port X
|
||||
#define DDR(x) (*(&x - 1)) // Address of Input Register of Port X
|
||||
|
||||
//PORT defines
|
||||
#define lcd_rs_port_low() LCD_RS_PORT&=~_BV(LCD_RS_PIN)
|
||||
#if RW_LINE_IMPLEMENTED==1
|
||||
#define lcd_rw_port_low() LCD_RW_PORT&=~_BV(LCD_RW_PIN)
|
||||
#endif
|
||||
#define lcd_db0_port_low() LCD_DB0_PORT&=~_BV(LCD_DB0_PIN)
|
||||
#define lcd_db1_port_low() LCD_DB1_PORT&=~_BV(LCD_DB1_PIN)
|
||||
#define lcd_db2_port_low() LCD_DB2_PORT&=~_BV(LCD_DB2_PIN)
|
||||
#define lcd_db3_port_low() LCD_DB3_PORT&=~_BV(LCD_DB3_PIN)
|
||||
#define lcd_db4_port_low() LCD_DB4_PORT&=~_BV(LCD_DB4_PIN)
|
||||
#define lcd_db5_port_low() LCD_DB5_PORT&=~_BV(LCD_DB5_PIN)
|
||||
#define lcd_db6_port_low() LCD_DB6_PORT&=~_BV(LCD_DB6_PIN)
|
||||
#define lcd_db7_port_low() LCD_DB7_PORT&=~_BV(LCD_DB7_PIN)
|
||||
|
||||
#define lcd_rs_port_high() LCD_RS_PORT|=_BV(LCD_RS_PIN)
|
||||
#if RW_LINE_IMPLEMENTED==1
|
||||
#define lcd_rw_port_high() LCD_RW_PORT|=_BV(LCD_RW_PIN)
|
||||
#endif
|
||||
#define lcd_db0_port_high() LCD_DB0_PORT|=_BV(LCD_DB0_PIN)
|
||||
#define lcd_db1_port_high() LCD_DB1_PORT|=_BV(LCD_DB1_PIN)
|
||||
#define lcd_db2_port_high() LCD_DB2_PORT|=_BV(LCD_DB2_PIN)
|
||||
#define lcd_db3_port_high() LCD_DB3_PORT|=_BV(LCD_DB3_PIN)
|
||||
#define lcd_db4_port_high() LCD_DB4_PORT|=_BV(LCD_DB4_PIN)
|
||||
#define lcd_db5_port_high() LCD_DB5_PORT|=_BV(LCD_DB5_PIN)
|
||||
#define lcd_db6_port_high() LCD_DB6_PORT|=_BV(LCD_DB6_PIN)
|
||||
#define lcd_db7_port_high() LCD_DB7_PORT|=_BV(LCD_DB7_PIN)
|
||||
|
||||
#define lcd_rs_port_set(value) if (value) lcd_rs_port_high(); else lcd_rs_port_low();
|
||||
#if RW_LINE_IMPLEMENTED==1
|
||||
#define lcd_rw_port_set(value) if (value) lcd_rw_port_high(); else lcd_rw_port_low();
|
||||
#endif
|
||||
#define lcd_db0_port_set(value) if (value) lcd_db0_port_high(); else lcd_db0_port_low();
|
||||
#define lcd_db1_port_set(value) if (value) lcd_db1_port_high(); else lcd_db1_port_low();
|
||||
#define lcd_db2_port_set(value) if (value) lcd_db2_port_high(); else lcd_db2_port_low();
|
||||
#define lcd_db3_port_set(value) if (value) lcd_db3_port_high(); else lcd_db3_port_low();
|
||||
#define lcd_db4_port_set(value) if (value) lcd_db4_port_high(); else lcd_db4_port_low();
|
||||
#define lcd_db5_port_set(value) if (value) lcd_db5_port_high(); else lcd_db5_port_low();
|
||||
#define lcd_db6_port_set(value) if (value) lcd_db6_port_high(); else lcd_db6_port_low();
|
||||
#define lcd_db7_port_set(value) if (value) lcd_db7_port_high(); else lcd_db7_port_low();
|
||||
|
||||
//PIN defines
|
||||
#define lcd_db0_pin_get() (((PIN(LCD_DB0_PORT) & _BV(LCD_DB0_PIN))==0)?0:1)
|
||||
#define lcd_db1_pin_get() (((PIN(LCD_DB1_PORT) & _BV(LCD_DB1_PIN))==0)?0:1)
|
||||
#define lcd_db2_pin_get() (((PIN(LCD_DB2_PORT) & _BV(LCD_DB2_PIN))==0)?0:1)
|
||||
#define lcd_db3_pin_get() (((PIN(LCD_DB3_PORT) & _BV(LCD_DB3_PIN))==0)?0:1)
|
||||
#define lcd_db4_pin_get() (((PIN(LCD_DB4_PORT) & _BV(LCD_DB4_PIN))==0)?0:1)
|
||||
#define lcd_db5_pin_get() (((PIN(LCD_DB5_PORT) & _BV(LCD_DB5_PIN))==0)?0:1)
|
||||
#define lcd_db6_pin_get() (((PIN(LCD_DB6_PORT) & _BV(LCD_DB6_PIN))==0)?0:1)
|
||||
#define lcd_db7_pin_get() (((PIN(LCD_DB7_PORT) & _BV(LCD_DB7_PIN))==0)?0:1)
|
||||
|
||||
//DDR defines
|
||||
#define lcd_rs_ddr_low() DDR(LCD_RS_PORT)&=~_BV(LCD_RS_PIN)
|
||||
#if RW_LINE_IMPLEMENTED==1
|
||||
#define lcd_rw_ddr_low() DDR(LCD_RW_PORT)&=~_BV(LCD_RW_PIN)
|
||||
#endif
|
||||
#define lcd_db0_ddr_low() DDR(LCD_DB0_PORT)&=~_BV(LCD_DB0_PIN)
|
||||
#define lcd_db1_ddr_low() DDR(LCD_DB1_PORT)&=~_BV(LCD_DB1_PIN)
|
||||
#define lcd_db2_ddr_low() DDR(LCD_DB2_PORT)&=~_BV(LCD_DB2_PIN)
|
||||
#define lcd_db3_ddr_low() DDR(LCD_DB3_PORT)&=~_BV(LCD_DB3_PIN)
|
||||
#define lcd_db4_ddr_low() DDR(LCD_DB4_PORT)&=~_BV(LCD_DB4_PIN)
|
||||
#define lcd_db5_ddr_low() DDR(LCD_DB5_PORT)&=~_BV(LCD_DB5_PIN)
|
||||
#define lcd_db6_ddr_low() DDR(LCD_DB6_PORT)&=~_BV(LCD_DB6_PIN)
|
||||
#define lcd_db7_ddr_low() DDR(LCD_DB7_PORT)&=~_BV(LCD_DB7_PIN)
|
||||
|
||||
#define lcd_rs_ddr_high() DDR(LCD_RS_PORT)|=_BV(LCD_RS_PIN)
|
||||
#if RW_LINE_IMPLEMENTED==1
|
||||
#define lcd_rw_ddr_high() DDR(LCD_RW_PORT)|=_BV(LCD_RW_PIN)
|
||||
#endif
|
||||
#define lcd_db0_ddr_high() DDR(LCD_DB0_PORT)|=_BV(LCD_DB0_PIN)
|
||||
#define lcd_db1_ddr_high() DDR(LCD_DB1_PORT)|=_BV(LCD_DB1_PIN)
|
||||
#define lcd_db2_ddr_high() DDR(LCD_DB2_PORT)|=_BV(LCD_DB2_PIN)
|
||||
#define lcd_db3_ddr_high() DDR(LCD_DB3_PORT)|=_BV(LCD_DB3_PIN)
|
||||
#define lcd_db4_ddr_high() DDR(LCD_DB4_PORT)|=_BV(LCD_DB4_PIN)
|
||||
#define lcd_db5_ddr_high() DDR(LCD_DB5_PORT)|=_BV(LCD_DB5_PIN)
|
||||
#define lcd_db6_ddr_high() DDR(LCD_DB6_PORT)|=_BV(LCD_DB6_PIN)
|
||||
#define lcd_db7_ddr_high() DDR(LCD_DB7_PORT)|=_BV(LCD_DB7_PIN)
|
||||
|
||||
#define lcd_rs_ddr_set(value) if (value) lcd_rs_ddr_high(); else lcd_rs_ddr_low();
|
||||
#if RW_LINE_IMPLEMENTED==1
|
||||
#define lcd_rw_ddr_set(value) if (value) lcd_rw_ddr_high(); else lcd_rw_ddr_low();
|
||||
#endif
|
||||
#define lcd_db0_ddr_set(value) if (value) lcd_db0_ddr_high(); else lcd_db0_ddr_low();
|
||||
#define lcd_db1_ddr_set(value) if (value) lcd_db1_ddr_high(); else lcd_db1_ddr_low();
|
||||
#define lcd_db2_ddr_set(value) if (value) lcd_db2_ddr_high(); else lcd_db2_ddr_low();
|
||||
#define lcd_db3_ddr_set(value) if (value) lcd_db3_ddr_high(); else lcd_db3_ddr_low();
|
||||
#define lcd_db4_ddr_set(value) if (value) lcd_db4_ddr_high(); else lcd_db4_ddr_low();
|
||||
#define lcd_db5_ddr_set(value) if (value) lcd_db5_ddr_high(); else lcd_db5_ddr_low();
|
||||
#define lcd_db6_ddr_set(value) if (value) lcd_db6_ddr_high(); else lcd_db6_ddr_low();
|
||||
#define lcd_db7_ddr_set(value) if (value) lcd_db7_ddr_high(); else lcd_db7_ddr_low();
|
||||
|
||||
#if (WAIT_MODE==1 && RW_LINE_IMPLEMENTED==1)
|
||||
static unsigned char PrevCmdInvolvedAddressCounter=0;
|
||||
#endif
|
||||
|
||||
#if (LCD_DISPLAYS>1)
|
||||
static unsigned char ActiveDisplay=1;
|
||||
#endif
|
||||
|
||||
static inline void lcd_e_port_low()
|
||||
{
|
||||
#if (LCD_DISPLAYS>1)
|
||||
switch (ActiveDisplay)
|
||||
{
|
||||
case 2 : LCD_E2_PORT&=~_BV(LCD_E2_PIN);
|
||||
break;
|
||||
#if (LCD_DISPLAYS>=3)
|
||||
case 3 : LCD_E3_PORT&=~_BV(LCD_E3_PIN);
|
||||
break;
|
||||
#endif
|
||||
#if (LCD_DISPLAYS==4)
|
||||
case 4 : LCD_E4_PORT&=~_BV(LCD_E4_PIN);
|
||||
break;
|
||||
#endif
|
||||
default :
|
||||
#endif
|
||||
LCD_E_PORT&=~_BV(LCD_E_PIN);
|
||||
#if (LCD_DISPLAYS>1)
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline void lcd_e_port_high()
|
||||
{
|
||||
#if (LCD_DISPLAYS>1)
|
||||
switch (ActiveDisplay)
|
||||
{
|
||||
case 2 : LCD_E2_PORT|=_BV(LCD_E2_PIN);
|
||||
break;
|
||||
#if (LCD_DISPLAYS>=3)
|
||||
case 3 : LCD_E3_PORT|=_BV(LCD_E3_PIN);
|
||||
break;
|
||||
#endif
|
||||
#if (LCD_DISPLAYS==4)
|
||||
case 4 : LCD_E4_PORT|=_BV(LCD_E4_PIN);
|
||||
break;
|
||||
#endif
|
||||
default :
|
||||
#endif
|
||||
LCD_E_PORT|=_BV(LCD_E_PIN);
|
||||
#if (LCD_DISPLAYS>1)
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline void lcd_e_ddr_low()
|
||||
{
|
||||
#if (LCD_DISPLAYS>1)
|
||||
switch (ActiveDisplay)
|
||||
{
|
||||
case 2 : DDR(LCD_E2_PORT)&=~_BV(LCD_E2_PIN);
|
||||
break;
|
||||
#if (LCD_DISPLAYS>=3)
|
||||
case 3 : DDR(LCD_E3_PORT)&=~_BV(LCD_E3_PIN);
|
||||
break;
|
||||
#endif
|
||||
#if (LCD_DISPLAYS==4)
|
||||
case 4 : DDR(LCD_E4_PORT)&=~_BV(LCD_E4_PIN);
|
||||
break;
|
||||
#endif
|
||||
default :
|
||||
#endif
|
||||
DDR(LCD_E_PORT)&=~_BV(LCD_E_PIN);
|
||||
#if (LCD_DISPLAYS>1)
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline void lcd_e_ddr_high()
|
||||
{
|
||||
#if (LCD_DISPLAYS>1)
|
||||
switch (ActiveDisplay)
|
||||
{
|
||||
case 2 : DDR(LCD_E2_PORT)|=_BV(LCD_E2_PIN);
|
||||
break;
|
||||
#if (LCD_DISPLAYS>=3)
|
||||
case 3 : DDR(LCD_E3_PORT)|=_BV(LCD_E3_PIN);
|
||||
break;
|
||||
#endif
|
||||
#if (LCD_DISPLAYS==4)
|
||||
case 4 : DDR(LCD_E4_PORT)|=_BV(LCD_E4_PIN);
|
||||
break;
|
||||
#endif
|
||||
default :
|
||||
#endif
|
||||
DDR(LCD_E_PORT)|=_BV(LCD_E_PIN);
|
||||
#if (LCD_DISPLAYS>1)
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
loops while lcd is busy, returns address counter
|
||||
*************************************************************************/
|
||||
#if (WAIT_MODE==1 && RW_LINE_IMPLEMENTED==1)
|
||||
static uint8_t lcd_read(uint8_t rs);
|
||||
|
||||
static void lcd_waitbusy(void)
|
||||
{
|
||||
register uint8_t c;
|
||||
unsigned int ul1=0;
|
||||
|
||||
while ( ((c=lcd_read(0)) & (1<<LCD_BUSY)) && ul1<((F_CPU/16384>=16)?F_CPU/16384:16)) // Wait Until Busy Flag is Cleared
|
||||
ul1++;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
Low-level function to read byte from LCD controller
|
||||
Input: rs 1: read data
|
||||
0: read busy flag / address counter
|
||||
Returns: byte read from LCD controller
|
||||
*************************************************************************/
|
||||
#if RW_LINE_IMPLEMENTED==1
|
||||
static uint8_t lcd_read(uint8_t rs)
|
||||
{
|
||||
uint8_t data;
|
||||
|
||||
#if (WAIT_MODE==1 && RW_LINE_IMPLEMENTED==1)
|
||||
if (rs)
|
||||
lcd_waitbusy();
|
||||
if (PrevCmdInvolvedAddressCounter)
|
||||
{
|
||||
Delay_us(5);
|
||||
PrevCmdInvolvedAddressCounter=0;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (rs)
|
||||
{
|
||||
lcd_rs_port_high(); // RS=1: Read Data
|
||||
#if (WAIT_MODE==1 && RW_LINE_IMPLEMENTED==1)
|
||||
PrevCmdInvolvedAddressCounter=1;
|
||||
#endif
|
||||
}
|
||||
else lcd_rs_port_low(); // RS=0: Read Busy Flag
|
||||
|
||||
|
||||
lcd_rw_port_high(); // RW=1: Read Mode
|
||||
|
||||
#if LCD_BITS==4
|
||||
lcd_db7_ddr_low(); // Configure Data Pins as Input
|
||||
lcd_db6_ddr_low();
|
||||
lcd_db5_ddr_low();
|
||||
lcd_db4_ddr_low();
|
||||
|
||||
lcd_e_port_high(); // Read High Nibble First
|
||||
Delay_ns(500);
|
||||
|
||||
data=lcd_db4_pin_get() << 4 | lcd_db5_pin_get() << 5 |
|
||||
lcd_db6_pin_get() << 6 | lcd_db7_pin_get() << 7;
|
||||
|
||||
lcd_e_port_low();
|
||||
Delay_ns(500);
|
||||
|
||||
lcd_e_port_high(); // Read Low Nibble
|
||||
Delay_ns(500);
|
||||
|
||||
data|=lcd_db4_pin_get() << 0 | lcd_db5_pin_get() << 1 |
|
||||
lcd_db6_pin_get() << 2 | lcd_db7_pin_get() << 3;
|
||||
|
||||
lcd_e_port_low();
|
||||
|
||||
lcd_db7_ddr_high(); // Configure Data Pins as Output
|
||||
lcd_db6_ddr_high();
|
||||
lcd_db5_ddr_high();
|
||||
lcd_db4_ddr_high();
|
||||
|
||||
lcd_db7_port_high(); // Pins High (Inactive)
|
||||
lcd_db6_port_high();
|
||||
lcd_db5_port_high();
|
||||
lcd_db4_port_high();
|
||||
#else //using 8-Bit-Mode
|
||||
lcd_db7_ddr_low(); // Configure Data Pins as Input
|
||||
lcd_db6_ddr_low();
|
||||
lcd_db5_ddr_low();
|
||||
lcd_db4_ddr_low();
|
||||
lcd_db3_ddr_low();
|
||||
lcd_db2_ddr_low();
|
||||
lcd_db1_ddr_low();
|
||||
lcd_db0_ddr_low();
|
||||
|
||||
lcd_e_port_high();
|
||||
Delay_ns(500);
|
||||
|
||||
data=lcd_db7_pin_get() << 7 | lcd_db6_pin_get() << 6 |
|
||||
lcd_db5_pin_get() << 5 | lcd_db4_pin_get() << 4 |
|
||||
lcd_db3_pin_get() << 3 | lcd_db2_pin_get() << 2 |
|
||||
lcd_db1_pin_get() << 1 | lcd_db0_pin_get();
|
||||
|
||||
lcd_e_port_low();
|
||||
|
||||
lcd_db7_ddr_high(); // Configure Data Pins as Output
|
||||
lcd_db6_ddr_high();
|
||||
lcd_db5_ddr_high();
|
||||
lcd_db4_ddr_high();
|
||||
lcd_db3_ddr_high();
|
||||
lcd_db2_ddr_high();
|
||||
lcd_db1_ddr_high();
|
||||
lcd_db0_ddr_high();
|
||||
|
||||
lcd_db7_port_high(); // Pins High (Inactive)
|
||||
lcd_db6_port_high();
|
||||
lcd_db5_port_high();
|
||||
lcd_db4_port_high();
|
||||
lcd_db3_port_high();
|
||||
lcd_db2_port_high();
|
||||
lcd_db1_port_high();
|
||||
lcd_db0_port_high();
|
||||
#endif
|
||||
|
||||
lcd_rw_port_low();
|
||||
|
||||
#if (WAIT_MODE==0 || RW_LINE_IMPLEMENTED==0)
|
||||
if (rs)
|
||||
Delay_us(40);
|
||||
else Delay_us(1);
|
||||
#endif
|
||||
return data;
|
||||
}
|
||||
|
||||
uint8_t lcd_getc()
|
||||
{
|
||||
return lcd_read(1);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/*************************************************************************
|
||||
Low-level function to write byte to LCD controller
|
||||
Input: data byte to write to LCD
|
||||
rs 1: write data
|
||||
0: write instruction
|
||||
Returns: none
|
||||
*************************************************************************/
|
||||
static void lcd_write(uint8_t data,uint8_t rs)
|
||||
{
|
||||
#if (WAIT_MODE==1 && RW_LINE_IMPLEMENTED==1)
|
||||
lcd_waitbusy();
|
||||
if (PrevCmdInvolvedAddressCounter)
|
||||
{
|
||||
Delay_us(5);
|
||||
PrevCmdInvolvedAddressCounter=0;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (rs)
|
||||
{
|
||||
lcd_rs_port_high(); // RS=1: Write Character
|
||||
#if (WAIT_MODE==1 && RW_LINE_IMPLEMENTED==1)
|
||||
PrevCmdInvolvedAddressCounter=1;
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
lcd_rs_port_low(); // RS=0: Write Command
|
||||
#if (WAIT_MODE==1 && RW_LINE_IMPLEMENTED==1)
|
||||
PrevCmdInvolvedAddressCounter=0;
|
||||
#endif
|
||||
}
|
||||
|
||||
#if LCD_BITS==4
|
||||
lcd_db7_port_set(data&_BV(7)); //Output High Nibble
|
||||
lcd_db6_port_set(data&_BV(6));
|
||||
lcd_db5_port_set(data&_BV(5));
|
||||
lcd_db4_port_set(data&_BV(4));
|
||||
|
||||
Delay_ns(100);
|
||||
lcd_e_port_high();
|
||||
|
||||
Delay_ns(500);
|
||||
lcd_e_port_low();
|
||||
|
||||
lcd_db7_port_set(data&_BV(3)); //Output High Nibble
|
||||
lcd_db6_port_set(data&_BV(2));
|
||||
lcd_db5_port_set(data&_BV(1));
|
||||
lcd_db4_port_set(data&_BV(0));
|
||||
|
||||
Delay_ns(100);
|
||||
lcd_e_port_high();
|
||||
|
||||
Delay_ns(500);
|
||||
lcd_e_port_low();
|
||||
|
||||
lcd_db7_port_high(); // All Data Pins High (Inactive)
|
||||
lcd_db6_port_high();
|
||||
lcd_db5_port_high();
|
||||
lcd_db4_port_high();
|
||||
|
||||
#else //using 8-Bit_Mode
|
||||
lcd_db7_port_set(data&_BV(7)); //Output High Nibble
|
||||
lcd_db6_port_set(data&_BV(6));
|
||||
lcd_db5_port_set(data&_BV(5));
|
||||
lcd_db4_port_set(data&_BV(4));
|
||||
lcd_db3_port_set(data&_BV(3)); //Output High Nibble
|
||||
lcd_db2_port_set(data&_BV(2));
|
||||
lcd_db1_port_set(data&_BV(1));
|
||||
lcd_db0_port_set(data&_BV(0));
|
||||
|
||||
Delay_ns(100);
|
||||
lcd_e_port_high();
|
||||
Delay_ns(500);
|
||||
lcd_e_port_low();
|
||||
|
||||
lcd_db7_port_high(); // All Data Pins High (Inactive)
|
||||
lcd_db6_port_high();
|
||||
lcd_db5_port_high();
|
||||
lcd_db4_port_high();
|
||||
lcd_db3_port_high();
|
||||
lcd_db2_port_high();
|
||||
lcd_db1_port_high();
|
||||
lcd_db0_port_high();
|
||||
#endif
|
||||
|
||||
#if (WAIT_MODE==0 || RW_LINE_IMPLEMENTED==0)
|
||||
if (!rs && data<=((1<<LCD_CLR) | (1<<LCD_HOME))) // Is command clrscr or home?
|
||||
Delay_us(1640);
|
||||
else Delay_us(40);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
Send LCD controller instruction command
|
||||
Input: instruction to send to LCD controller, see HD44780 data sheet
|
||||
Returns: none
|
||||
*************************************************************************/
|
||||
void lcd_command(uint8_t cmd)
|
||||
{
|
||||
lcd_write(cmd,0);
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
Set cursor to specified position
|
||||
Input: pos position
|
||||
Returns: none
|
||||
*************************************************************************/
|
||||
void lcd_goto(uint8_t pos)
|
||||
{
|
||||
lcd_command((1<<LCD_DDRAM)+pos);
|
||||
}
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
Clear screen
|
||||
Input: none
|
||||
Returns: none
|
||||
*************************************************************************/
|
||||
void lcd_clrscr()
|
||||
{
|
||||
lcd_command(1<<LCD_CLR);
|
||||
}
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
Return home
|
||||
Input: none
|
||||
Returns: none
|
||||
*************************************************************************/
|
||||
void lcd_home()
|
||||
{
|
||||
lcd_command(1<<LCD_HOME);
|
||||
}
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
Display character
|
||||
Input: character to be displayed
|
||||
Returns: none
|
||||
*************************************************************************/
|
||||
void lcd_putc(char c)
|
||||
{
|
||||
lcd_write(c,1);
|
||||
}
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
Display string
|
||||
Input: string to be displayed
|
||||
Returns: none
|
||||
*************************************************************************/
|
||||
void lcd_puts(const char *s)
|
||||
{
|
||||
register char c;
|
||||
|
||||
while ((c=*s++))
|
||||
lcd_putc(c);
|
||||
}
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
Display string from flash
|
||||
Input: string to be displayed
|
||||
Returns: none
|
||||
*************************************************************************/
|
||||
void lcd_puts_P(const char *progmem_s)
|
||||
{
|
||||
register char c;
|
||||
|
||||
while ((c=pgm_read_byte(progmem_s++)))
|
||||
lcd_putc(c);
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
Initialize display
|
||||
Input: none
|
||||
Returns: none
|
||||
*************************************************************************/
|
||||
void lcd_init()
|
||||
{
|
||||
//Set All Pins as Output
|
||||
lcd_e_ddr_high();
|
||||
lcd_rs_ddr_high();
|
||||
#if RW_LINE_IMPLEMENTED==1
|
||||
lcd_rw_ddr_high();
|
||||
#endif
|
||||
lcd_db7_ddr_high();
|
||||
lcd_db6_ddr_high();
|
||||
lcd_db5_ddr_high();
|
||||
lcd_db4_ddr_high();
|
||||
#if LCD_BITS==8
|
||||
lcd_db3_ddr_high();
|
||||
lcd_db2_ddr_high();
|
||||
lcd_db1_ddr_high();
|
||||
lcd_db0_ddr_high();
|
||||
#endif
|
||||
|
||||
//Set All Control Lines Low
|
||||
lcd_e_port_low();
|
||||
lcd_rs_port_low();
|
||||
#if RW_LINE_IMPLEMENTED==1
|
||||
lcd_rw_port_low();
|
||||
#endif
|
||||
|
||||
//Set All Data Lines High
|
||||
lcd_db7_port_high();
|
||||
lcd_db6_port_high();
|
||||
lcd_db5_port_high();
|
||||
lcd_db4_port_high();
|
||||
#if LCD_BITS==8
|
||||
lcd_db3_port_high();
|
||||
lcd_db2_port_high();
|
||||
lcd_db1_port_high();
|
||||
lcd_db0_port_high();
|
||||
#endif
|
||||
|
||||
//Startup Delay
|
||||
Delay_ms(DELAY_RESET);
|
||||
|
||||
//Initialize Display
|
||||
lcd_db7_port_low();
|
||||
lcd_db6_port_low();
|
||||
Delay_ns(100);
|
||||
lcd_e_port_high();
|
||||
Delay_ns(500);
|
||||
lcd_e_port_low();
|
||||
|
||||
Delay_us(4100);
|
||||
|
||||
lcd_e_port_high();
|
||||
Delay_ns(500);
|
||||
lcd_e_port_low();
|
||||
|
||||
Delay_us(100);
|
||||
|
||||
lcd_e_port_high();
|
||||
Delay_ns(500);
|
||||
lcd_e_port_low();
|
||||
|
||||
Delay_us(40);
|
||||
|
||||
//Init differs between 4-bit and 8-bit from here
|
||||
#if (LCD_BITS==4)
|
||||
lcd_db4_port_low();
|
||||
Delay_ns(100);
|
||||
lcd_e_port_high();
|
||||
Delay_ns(500);
|
||||
lcd_e_port_low();
|
||||
Delay_us(40);
|
||||
|
||||
lcd_db4_port_low();
|
||||
Delay_ns(100);
|
||||
lcd_e_port_high();
|
||||
Delay_ns(500);
|
||||
lcd_e_port_low();
|
||||
Delay_ns(500);
|
||||
|
||||
#if (LCD_DISPLAYS==1)
|
||||
if (LCD_DISPLAY_LINES>1)
|
||||
lcd_db7_port_high();
|
||||
#else
|
||||
unsigned char c;
|
||||
switch (ActiveDisplay)
|
||||
{
|
||||
case 1 : c=LCD_DISPLAY_LINES; break;
|
||||
case 2 : c=LCD_DISPLAY2_LINES; break;
|
||||
#if (LCD_DISPLAYS>=3)
|
||||
case 3 : c=LCD_DISPLAY3_LINES; break;
|
||||
#endif
|
||||
#if (LCD_DISPLAYS==4)
|
||||
case 4 : c=LCD_DISPLAY4_LINES; break;
|
||||
#endif
|
||||
}
|
||||
if (c>1)
|
||||
lcd_db7_port_high();
|
||||
#endif
|
||||
|
||||
Delay_ns(100);
|
||||
lcd_e_port_high();
|
||||
Delay_ns(500);
|
||||
lcd_e_port_low();
|
||||
Delay_us(40);
|
||||
#else
|
||||
#if (LCD_DISPLAYS==1)
|
||||
if (LCD_DISPLAY_LINES<2)
|
||||
lcd_db3_port_low();
|
||||
#else
|
||||
unsigned char c;
|
||||
switch (ActiveDisplay)
|
||||
{
|
||||
case 1 : c=LCD_DISPLAY_LINES; break;
|
||||
case 2 : c=LCD_DISPLAY2_LINES; break;
|
||||
#if (LCD_DISPLAYS>=3)
|
||||
case 3 : c=LCD_DISPLAY3_LINES; break;
|
||||
#endif
|
||||
#if (LCD_DISPLAYS==4)
|
||||
case 4 : c=LCD_DISPLAY4_LINES; break;
|
||||
#endif
|
||||
}
|
||||
if (c<2)
|
||||
lcd_db3_port_low();
|
||||
#endif
|
||||
|
||||
lcd_db2_port_low();
|
||||
Delay_ns(100);
|
||||
lcd_e_port_high();
|
||||
Delay_ns(500);
|
||||
lcd_e_port_low();
|
||||
Delay_us(40);
|
||||
#endif
|
||||
|
||||
//Display Off
|
||||
lcd_command(_BV(LCD_DISPLAYMODE));
|
||||
|
||||
//Display Clear
|
||||
lcd_clrscr();
|
||||
|
||||
//Entry Mode Set
|
||||
lcd_command(_BV(LCD_ENTRY_MODE) | _BV(LCD_ENTRY_INC));
|
||||
|
||||
//Display On
|
||||
lcd_command(_BV(LCD_DISPLAYMODE) | _BV(LCD_DISPLAYMODE_ON));
|
||||
}
|
||||
|
||||
#if (LCD_DISPLAYS>1)
|
||||
void lcd_use_display(int ADisplay)
|
||||
{
|
||||
if (ADisplay>=1 && ADisplay<=LCD_DISPLAYS)
|
||||
ActiveDisplay=ADisplay;
|
||||
}
|
||||
#endif
|
||||
|
@ -0,0 +1,65 @@
|
||||
/*****************************************************************************
|
||||
Title : HD44780 Library
|
||||
Author : SA Development
|
||||
Version: 1.11
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef HD44780_H
|
||||
#define HD44780_H
|
||||
|
||||
#ifndef F_CPU
|
||||
#define F_CPU 16000000UL
|
||||
#endif
|
||||
|
||||
#include "settings.h"
|
||||
#include "inttypes.h"
|
||||
|
||||
//LCD Constants for HD44780
|
||||
#define LCD_CLR 0 // DB0: clear display
|
||||
|
||||
#define LCD_HOME 1 // DB1: return to home position
|
||||
|
||||
#define LCD_ENTRY_MODE 2 // DB2: set entry mode
|
||||
#define LCD_ENTRY_INC 1 // DB1: 1=increment, 0=decrement
|
||||
#define LCD_ENTRY_SHIFT 0 // DB0: 1=display shift on
|
||||
|
||||
#define LCD_DISPLAYMODE 3 // DB3: turn lcd/cursor on
|
||||
#define LCD_DISPLAYMODE_ON 2 // DB2: turn display on
|
||||
#define LCD_DISPLAYMODE_CURSOR 1 // DB1: turn cursor on
|
||||
#define LCD_DISPLAYMODE_BLINK 0 // DB0: blinking cursor
|
||||
|
||||
#define LCD_MOVE 4 // DB4: move cursor/display
|
||||
#define LCD_MOVE_DISP 3 // DB3: move display (0-> cursor)
|
||||
#define LCD_MOVE_RIGHT 2 // DB2: move right (0-> left)
|
||||
|
||||
#define LCD_FUNCTION 5 // DB5: function set
|
||||
#define LCD_FUNCTION_8BIT 4 // DB4: set 8BIT mode (0->4BIT mode)
|
||||
#define LCD_FUNCTION_2LINES 3 // DB3: two lines (0->one line)
|
||||
#define LCD_FUNCTION_10DOTS 2 // DB2: 5x10 font (0->5x7 font)
|
||||
|
||||
#define LCD_CGRAM 6 // DB6: set CG RAM address
|
||||
#define LCD_DDRAM 7 // DB7: set DD RAM address
|
||||
|
||||
#define LCD_BUSY 7 // DB7: LCD is busy
|
||||
|
||||
|
||||
void lcd_init();
|
||||
void lcd_command(uint8_t cmd);
|
||||
|
||||
void lcd_clrscr();
|
||||
void lcd_home();
|
||||
void lcd_goto(uint8_t pos);
|
||||
|
||||
#if RW_LINE_IMPLEMENTED==1
|
||||
uint8_t lcd_getc();
|
||||
#endif
|
||||
|
||||
void lcd_putc(char c);
|
||||
void lcd_puts(const char *s);
|
||||
void lcd_puts_P(const char *progmem_s);
|
||||
|
||||
#if (LCD_DISPLAYS>1)
|
||||
void lcd_use_display(int ADisplay);
|
||||
#endif
|
||||
|
||||
#endif
|
@ -0,0 +1,83 @@
|
||||
#ifndef HD44780_SETTINGS_H
|
||||
#define HD44780_SETTINGS_H
|
||||
|
||||
//#define F_CPU 8000000 // Set Clock Frequency
|
||||
|
||||
#define EINSYBOARD
|
||||
|
||||
#define USE_ADELAY_LIBRARY 0 // Set to 1 to use my ADELAY library, 0 to use internal delay functions
|
||||
#define LCD_BITS 4 // 4 for 4 Bit I/O Mode, 8 for 8 Bit I/O Mode
|
||||
#define RW_LINE_IMPLEMENTED 0 // 0 for no RW line (RW on LCD tied to ground), 1 for RW line present
|
||||
#define WAIT_MODE 0 // 0=Use Delay Method (Faster if running <10Mhz)
|
||||
// 1=Use Check Busy Flag (Faster if running >10Mhz) ***Requires RW Line***
|
||||
#define DELAY_RESET 15 // in mS
|
||||
|
||||
#if (LCD_BITS==8) // If using 8 bit mode, you must configure DB0-DB7
|
||||
#define LCD_DB0_PORT PORTC
|
||||
#define LCD_DB0_PIN 0
|
||||
#define LCD_DB1_PORT PORTC
|
||||
#define LCD_DB1_PIN 1
|
||||
#define LCD_DB2_PORT PORTC
|
||||
#define LCD_DB2_PIN 2
|
||||
#define LCD_DB3_PORT PORTC
|
||||
#define LCD_DB3_PIN 3
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef EINSYBOARD
|
||||
#define LCD_DB4_PORT PORTF // If using 4 bit mode, yo umust configure DB4-DB7
|
||||
#define LCD_DB4_PIN PF5
|
||||
#else
|
||||
#define LCD_DB4_PORT PORTD // If using 4 bit mode, yo umust configure DB4-DB7
|
||||
#define LCD_DB4_PIN PB2
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define LCD_DB5_PORT PORTG
|
||||
#define LCD_DB5_PIN PG4
|
||||
#define LCD_DB6_PORT PORTH
|
||||
#define LCD_DB6_PIN PK7
|
||||
#define LCD_DB7_PORT PORTG
|
||||
#define LCD_DB7_PIN PA3
|
||||
|
||||
#define LCD_RS_PORT PORTD // Port for RS line
|
||||
#define LCD_RS_PIN PK5 // Pin for RS line
|
||||
|
||||
#define LCD_RW_PORT PORTC // Port for RW line (ONLY used if RW_LINE_IMPLEMENTED=1)
|
||||
#define LCD_RW_PIN PC6 // Pin for RW line (ONLY used if RW_LINE_IMPLEMENTED=1)
|
||||
|
||||
|
||||
#define LCD_DISPLAYS 1 // Up to 4 LCD displays can be used at one time
|
||||
// All pins are shared between displays except for the E
|
||||
// pin which each display will have its own
|
||||
|
||||
// Display 1 Settings - if you only have 1 display, YOU MUST SET THESE
|
||||
#define LCD_DISPLAY_LINES 2 // Number of Lines, Only Used for Set I/O Mode Command
|
||||
#ifdef EINSYBOARD
|
||||
#define LCD_E_PORT PORTF // Port for E line
|
||||
#define LCD_E_PIN PF7 // Pin for E line
|
||||
#else
|
||||
#define LCD_E_PORT PORTD // Port for E line
|
||||
#define LCD_E_PIN PD3 // Pin for E line
|
||||
#endif
|
||||
|
||||
#if (LCD_DISPLAYS>=2) // If you have 2 displays, set these and change LCD_DISPLAYS=2
|
||||
#define LCD_DISPLAY2_LINES 2 // Number of Lines, Only Used for Set I/O Mode Command
|
||||
#define LCD_E2_PORT PORTC // Port for E line
|
||||
#define LCD_E2_PIN 5 // Pin for E line
|
||||
#endif
|
||||
|
||||
#if (LCD_DISPLAYS>=3) // If you have 3 displays, set these and change LCD_DISPLAYS=3
|
||||
#define LCD_DISPLAY3_LINES 2 // Number of Lines, Only Used for Set I/O Mode Command
|
||||
#define LCD_E3_PORT PORTC // Port for E line
|
||||
#define LCD_E3_PIN 5 // Pin for E line
|
||||
#endif
|
||||
|
||||
#if (LCD_DISPLAYS>=4) // If you have 4 displays, set these and change LCD_DISPLAYS=4
|
||||
#define LCD_DISPLAY4_LINES 2 // Number of Lines, Only Used for Set I/O Mode Command
|
||||
#define LCD_E4_PORT PORTC // Port for E line
|
||||
#define LCD_E4_PIN 5 // Pin for E line
|
||||
#endif
|
||||
|
||||
#endif
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,4 @@
|
||||
#ifndef STK500BOOT_H
|
||||
#define STK500BOOT_H
|
||||
extern void sendchar(char c);
|
||||
#endif // STK500BOOT_H
|
@ -0,0 +1,216 @@
|
||||
:020000023000CC
|
||||
:10E000000D9472F00D949BF00D949BF00D949BF089
|
||||
:10E010000D949BF00D949BF00D949BF00D949BF050
|
||||
:10E020000D949BF00D949BF00D949BF00D949BF040
|
||||
:10E030000D949BF00D949BF00D949BF00D949BF030
|
||||
:10E040000D949BF00D949BF00D949BF00D949BF020
|
||||
:10E050000D949BF00D949BF00D949BF00D949BF010
|
||||
:10E060000D949BF00D949BF00D949BF00D949BF000
|
||||
:10E070000D949BF00D949BF00D949BF00D949BF0F0
|
||||
:10E080000D949BF00D949BF00D949BF00D949BF0E0
|
||||
:10E090000D949BF00D949BF00D949BF00D949BF0D0
|
||||
:10E0A0000D949BF00D949BF00D949BF00D949BF0C0
|
||||
:10E0B0000D949BF00D949BF00D949BF00D949BF0B0
|
||||
:10E0C0000D949BF00D949BF00D949BF00D949BF0A0
|
||||
:10E0D0000D949BF00D949BF00D949BF00D949BF090
|
||||
:10E0E0000D949BF011241FBECFEFD1E2DEBFCDBF58
|
||||
:10E0F00001E00CBF12E0A0E0B2E0EAEEFCEE03E0CB
|
||||
:10E100000BBF02C007900D92A235B107D9F712E0FC
|
||||
:10E11000A2E5B2E001C01D92A435B107E1F70F946A
|
||||
:10E12000C0F00D9473F601E20EBF0FEF0DBF112486
|
||||
:10E130001FBE0D94C0F00D9400F020E030E040EDE3
|
||||
:10E1400057E005C0FA013197F1F72F5F3F4F2817CD
|
||||
:10E150003907C0F30895E0ECF0E0808182608083AD
|
||||
:10E1600020E12093C40098E19093C100E0EDF0E03D
|
||||
:10E170008081826080832093D4009093D1000895A1
|
||||
:10E180002F923F924F925F926F927F928F929F92C7
|
||||
:10E19000AF92BF92CF92DF92EF92FF920F931F93B5
|
||||
:10E1A000DF93CF93CDB7DEB7C053D1400FB6F8940D
|
||||
:10E1B000DEBF0FBECDBF01E20EBF0FEF0DBF94B7A4
|
||||
:10E1C000F894A89514BE80916000886180936000E7
|
||||
:10E1D00010926000789493FF05C0E0915202F09194
|
||||
:10E1E00053021995279A2F9A8091C00082608093DC
|
||||
:10E1F000C00080E18093C40088E18093C1000000EA
|
||||
:10E200000F94ABF00F94D2F50F94CAF587E10F94F9
|
||||
:10E21000CEF580E092E00F94B6F58DE20F94CEF546
|
||||
:10E220008EE092E00F94B6F5EE24FF248701F4E02F
|
||||
:10E23000AF2EB12CCC24DD2424C0C5010197F1F709
|
||||
:10E240000894E11CF11C011D111D21E2E2162EE4CF
|
||||
:10E25000F20620E0020720E0120718F0E1E0CE2EDF
|
||||
:10E26000D12CC801B70127EC3BE140E050E00F940E
|
||||
:10E2700043F6611571058105910519F485B1805842
|
||||
:10E2800085B98091C00087FD03C0C114D104A9F2F3
|
||||
:10E29000A6014F5F5F4FC25EDE4F59834883CE5168
|
||||
:10E2A000D140C25EDE4F88819981CE51D140019725
|
||||
:10E2B00009F0CDC3CD5DDE4F19821882C352D14023
|
||||
:10E2C000A0E0CE5DDE4F1882C252D14044245524D6
|
||||
:10E2D00022243324C05EDE4F19821882C052D140FE
|
||||
:10E2E000882499245401CB5DDE4F188219821A824A
|
||||
:10E2F0001B82C552D140ABBEF40127913691C15D5E
|
||||
:10E30000DE4F39832883CF52D1409DC3C25EDE4F9A
|
||||
:10E3100048815981CE51D1404130510509F52091B4
|
||||
:10E32000C600C25EDE4F19821882CE51D14022C093
|
||||
:10E330002F5F3F4F4F4F5F4F213082E138078AE711
|
||||
:10E34000480780E0580780F0C15DDE4FE881F98121
|
||||
:10E35000CF52D140EF5FFF4F19F0EE27FF2709940E
|
||||
:10E3600020E030E040E050E08091C00087FFE0CF47
|
||||
:10E370002091C600933011F1943028F4913089F047
|
||||
:10E380009230B8F408C0953061F19530F0F09630D5
|
||||
:10E3900009F048C043C02B3109F0B8CF91E0ABE1A0
|
||||
:10E3A000B5CFA227CE5DDE4F2883C252D14092E086
|
||||
:10E3B000ADCF722F60E0A22793E0A8CF822F90E02C
|
||||
:10E3C000682B792BA22794E0A1CF2E3009F05AC3F5
|
||||
:10E3D000A22795E0CD5DDE4F19821882C352D1404D
|
||||
:10E3E00095CFE1E0F0E0EC0FFD1FCD5DDE4F488101
|
||||
:10E3F0005981C352D140E40FF51F20834F5F5F4F17
|
||||
:10E40000CD5DDE4F59834883C352D140A2274617C2
|
||||
:10E41000570709F07BCFBA0196E078CF2A1709F0A9
|
||||
:10E4200031C303C0973009F071CF0894411C511CCF
|
||||
:10E430005BE04516510408F45DC00894211C311CB2
|
||||
:10E4400086E02816310410F02224332480E00F9453
|
||||
:10E45000CEF5C05EDE4FA881B981C052D140AB2B52
|
||||
:10E46000B1F484E10F94CEF580E292E00F94B6F51A
|
||||
:10E470008DE20F94CEF584E392E00F94B6F5E1E0DF
|
||||
:10E48000F0E0C05EDE4FF983E883C052D1408BE5F7
|
||||
:10E490000F94CEF588E492E00F94B6F5F2E02F16D3
|
||||
:10E4A0003104E9F023E02216310440F42114310450
|
||||
:10E4B00091F031E023163104D9F413C044E024165E
|
||||
:10E4C000310469F054E02516310438F085E028164F
|
||||
:10E4D000310471F406C08CE505C08FE503C08EE5FC
|
||||
:10E4E00001C08DE50F94CEF58FE492E00F94B6F560
|
||||
:10E4F000442455249981933109F40EC19431C0F418
|
||||
:10E50000963009F4DCC0973048F4923069F19330CA
|
||||
:10E5100009F470C0913009F017C256C0913109F466
|
||||
:10E520007AC0923108F0C0C0903109F00DC21CC011
|
||||
:10E53000983109F488C0993150F4953109F4ECC050
|
||||
:10E54000953108F49AC1963109F0FEC196C19A310D
|
||||
:10E5500009F471C09A3108F496C09B3109F460C087
|
||||
:10E560009D3109F0F1C102C090E056C09D81903309
|
||||
:10E5700059F48F81882311F49EE11CC0813011F081
|
||||
:10E5800091E018C098E916C0892F807591F09035F8
|
||||
:10E5900039F489E0E0E0F0E08093570094910AC0FC
|
||||
:10E5A000983539F4E3E0F0E089E0809357009491E6
|
||||
:10E5B00001C090E01A821B828D818C831D829E8314
|
||||
:10E5C0001F8227E030E0C4C11A8288E08B8381E497
|
||||
:10E5D0008C8386E58D8382E58E8389E48F8383E552
|
||||
:10E5E000888780E589878FE58A8782E38B872BE0A0
|
||||
:10E5F00030E0AEC18A81813941F0823941F0803901
|
||||
:10E6000011F48FE005C080E003C082E001C08AE021
|
||||
:10E610001A828B8346C091E01A8222E030E099C1D1
|
||||
:10E620008D81882311F48EE128C0813011F081E0C2
|
||||
:10E6300024C088E922C01A8289E0E1E0F0E08093FA
|
||||
:10E64000570084911BC08B81803589F48C81883080
|
||||
:10E6500039F4E2E0F0E089E08093570084910DC046
|
||||
:10E6600089E0E0E0F0E080935700849106C0E3E0A9
|
||||
:10E67000F0E089E08093570084911A828B831C829A
|
||||
:10E6800024E030E065C18D81836C99E0E1E0F0E049
|
||||
:10E69000082E90935700E89507B600FCFDCF1A822C
|
||||
:10E6A0001B8223E030E054C180EC8A83CB5DDE4FD7
|
||||
:10E6B000188219821A821B82C552D14047C18A81B1
|
||||
:10E6C00090E0A0E0B0E0B82EAA24992488248B81A1
|
||||
:10E6D00090E0A0E0B0E0DC0199278827882A992AF9
|
||||
:10E6E000AA2ABB2A8D8190E0A0E0B0E0882A992A6E
|
||||
:10E6F000AA2ABB2A8C8190E0A0E0B0E0BA2FA92F13
|
||||
:10E70000982F8827882A992AAA2ABB2A880C991C1C
|
||||
:10E71000AA1CBB1C1A821AC1FA81C65DDE4FF8839F
|
||||
:10E72000CA52D140C75DDE4F1882C952D1408B8199
|
||||
:10E73000C82EDD24C75DDE4F28813981C952D14002
|
||||
:10E74000C22AD32A933109F06DC0CB5DDE4F888198
|
||||
:10E750009981AA81BB81C552D1408030E0EC9E07EF
|
||||
:10E76000E3E0AE07E0E0BE07F0F423E0FC01A09395
|
||||
:10E770005B0020935700E89507B600FCFDCFCB5D0A
|
||||
:10E78000DE4F88819981AA81BB81C552D1408050DA
|
||||
:10E790009F4FAF4FBF4FCB5DDE4F88839983AA83D6
|
||||
:10E7A000BB83C552D140B501A401DE011B968C91FB
|
||||
:10E7B00011962C9111971296C45DDE4F2883CC528E
|
||||
:10E7C000D140C55DDE4F1882CB52D14090E0C55D8F
|
||||
:10E7D000DE4FE881F981CB52D1408E2B9F2B21E077
|
||||
:10E7E0000C01FA0160935B0020935700E895112417
|
||||
:10E7F0004E5F5F4F6F4F7F4F8EEF9FEFC80ED91E5A
|
||||
:10E80000C114D104A1F695E0F401A0925B009093AD
|
||||
:10E810005700E89507B600FCFDCF81E180935700D3
|
||||
:10E82000E89527C0D501C401B695A795979587951A
|
||||
:10E830007C0186012BE0622E712C6C0E7D1E0BC0BC
|
||||
:10E84000D3016D913D01C7010F9465F60894E11C59
|
||||
:10E85000F11C015010400115110591F7A60160E06F
|
||||
:10E8600070E0440F551F661F771F480D591D6A1D24
|
||||
:10E870007B1D1A824A015B0169C0BA81C25DDE4F0D
|
||||
:10E88000B883CE52D140C35DDE4F1882CD52D14005
|
||||
:10E890008B81C82EDD24C35DDE4FE881F981CD5226
|
||||
:10E8A000D140CE2ADF2A1A8289818431D1F496019F
|
||||
:10E8B000BE016D5F7F4FABBEF40187919691DB0186
|
||||
:10E8C0008C9311969C936E5F7F4F82E090E0A0E066
|
||||
:10E8D000B0E0880E991EAA1EBB1E2250304059F788
|
||||
:10E8E0002DC0A5019401BE016D5F7F4F0894C10842
|
||||
:10E8F000D108760100E010E00894C11CD11C0894F6
|
||||
:10E90000E11CF11C011D111DE80CF91C0A1D1B1D49
|
||||
:10E9100021BDBB27A52F942F832F82BD2F5F3F4F93
|
||||
:10E920004F4F5F4FF89A80B5DB018D93BD012E15D7
|
||||
:10E930003F054007510761F749015A0196012D5FD4
|
||||
:10E940003F4FFB01108204C080EC8A8322E030E05C
|
||||
:10E9500090E0FBE1F093C6008091C00086FFFCCF01
|
||||
:10E960008091C00080648093C000CE5DDE4F4881FE
|
||||
:10E97000C252D1404093C6008091C00086FFFCCFB8
|
||||
:10E980008091C00080648093C000532F3093C600F4
|
||||
:10E990008091C00086FFFCCF8091C000806480938E
|
||||
:10E9A000C000422F2093C6008091C00086FFFCCF9C
|
||||
:10E9B0008091C00080648093C0008EE08093C60088
|
||||
:10E9C0008091C00086FFFCCF8091C000806480935E
|
||||
:10E9D000C000A5E1CE5DDE4F8881C252D140A8279C
|
||||
:10E9E000A427A527FE01319610C040814093C600A0
|
||||
:10E9F0008091C00086FFFCCF31968091C00080647A
|
||||
:10EA00008093C000A427215030402115310569F7BB
|
||||
:10EA1000A093C6008091C00086FFFCCF8091C0000B
|
||||
:10EA200080648093C00085B1805885B9992379F4BA
|
||||
:10EA3000CE5DDE4F9881C252D1409F5FCE5DDE4FEA
|
||||
:10EA40009883C252D14090E060E070E05FCC27989C
|
||||
:10EA50002F9880E090E020ED37E0F9013197F1F751
|
||||
:10EA6000019684369105C9F700008091C0008D7F22
|
||||
:10EA70008093C00081E180935700E895EE27FF273F
|
||||
:10EA80000994FFCF90E042CC282F662311F05D9AC5
|
||||
:10EA900001C05D9827FF02C0A39A01C0A398922FDE
|
||||
:10EAA00026FF04C080910201806803C080910201AA
|
||||
:10EAB0008F778093020195FF02C0A49A01C0A498A9
|
||||
:10EAC00094FF02C05A9A01C05A9800C05B9A82E033
|
||||
:10EAD0008A95F1F700C05B9893FF02C0A39A01C02A
|
||||
:10EAE000A39892FF04C080910201806803C08091C6
|
||||
:10EAF00002018F778093020191FF02C0A49A01C0A6
|
||||
:10EB0000A49890FF02C05A9A01C05A9800C05B9A1C
|
||||
:10EB100092E09A95F1F700C05B98A39A8091020168
|
||||
:10EB2000806880930201A49A5A9A662341F42430A3
|
||||
:10EB300030F48FE999E10197F1F700C003C095ED3A
|
||||
:10EB40009A95F1F70000089561E00F9444F5089557
|
||||
:10EB5000CF93DF93EC0102C00F94A4F5FE01219640
|
||||
:10EB600084918823C9F7DF91CF910895CF93DF93E4
|
||||
:10EB7000EC0102C00F94A4F589918823D9F7DF91A5
|
||||
:10EB8000CF91089560E00F9444F5089582E00F94CA
|
||||
:10EB9000C2F5089581E00F94C2F5089580580F944E
|
||||
:10EBA000C2F50895539A559A9B9AE1E0F1E080816D
|
||||
:10EBB000806880839C9A529A5B985D98A39AE2E061
|
||||
:10EBC000F1E0808180688083A49A5A9A8FE59AEE5A
|
||||
:10EBD0000197F1F700C00000A39880818F778083B0
|
||||
:10EBE00000C05B9A92E09A95F1F700C05B988FE0C5
|
||||
:10EBF00090E40197F1F700C000005B9A92E09A95CB
|
||||
:10EC0000F1F700C05B988FE891E00197F1F700C041
|
||||
:10EC100000005B9A92E09A95F1F700C05B9885ED51
|
||||
:10EC20008A95F1F700005A9800C05B9A92E09A9595
|
||||
:10EC3000F1F700C05B9885ED8A95F1F700005A98CE
|
||||
:10EC400000C05B9A92E09A95F1F700C05B9882E071
|
||||
:10EC50008A95F1F700C0A39A00C05B9A92E09A955A
|
||||
:10EC6000F1F700C05B9885ED8A95F1F7000088E028
|
||||
:10EC70000F94C2F50F94CAF586E00F94C2F58CE0AC
|
||||
:10EC80000F94C2F50895A1E21A2EAA1BBB1BFD0129
|
||||
:10EC90000DC0AA1FBB1FEE1FFF1FA217B307E4077B
|
||||
:10ECA000F50720F0A21BB30BE40BF50B661F771FD3
|
||||
:10ECB000881F991F1A9469F76095709580959095B3
|
||||
:10ECC0009B01AC01BD01CF010895262FF999FECF1C
|
||||
:10ECD0001FBA92BD81BD20BD0FB6F894FA9AF99A79
|
||||
:0AECE0000FBE01960895F894FFCFCF
|
||||
:10ECEA0020334420205072696E74657273002020AC
|
||||
:10ECFA00204F726967696E616C205072757361008A
|
||||
:10ED0A0020446F206E6F7420646973636F6E6E6542
|
||||
:10ED1A006374210020557067726164696E672066AA
|
||||
:10ED2A0069726D77617265007C202020207C002A40
|
||||
:02ED3A000000D7
|
||||
:040000033000E000E9
|
||||
:00000001FF
|
@ -0,0 +1,285 @@
|
||||
:020000023000CC
|
||||
:10E000000D9472F00D949BF00D949BF00D949BF089
|
||||
:10E010000D949BF00D949BF00D949BF00D949BF050
|
||||
:10E020000D949BF00D949BF00D949BF00D949BF040
|
||||
:10E030000D949BF00D949BF00D949BF00D949BF030
|
||||
:10E040000D949BF00D949BF00D949BF00D949BF020
|
||||
:10E050000D949BF00D949BF00D949BF00D949BF010
|
||||
:10E060000D949BF00D949BF00D949BF00D949BF000
|
||||
:10E070000D949BF00D949BF00D949BF00D949BF0F0
|
||||
:10E080000D949BF00D949BF00D949BF00D949BF0E0
|
||||
:10E090000D949BF00D949BF00D949BF00D949BF0D0
|
||||
:10E0A0000D949BF00D949BF00D949BF00D949BF0C0
|
||||
:10E0B0000D949BF00D949BF00D949BF00D949BF0B0
|
||||
:10E0C0000D949BF00D949BF00D949BF00D949BF0A0
|
||||
:10E0D0000D949BF00D949BF00D949BF00D949BF090
|
||||
:10E0E0000D949BF011241FBECFEFD1E2DEBFCDBF58
|
||||
:10E0F00001E00CBF12E0A0E0B2E0E4E2F1EF03E0E7
|
||||
:10E100000BBF02C007900D92A836B107D9F712E0F5
|
||||
:10E11000A8E6B2E001C01D92A837B107E1F70F945D
|
||||
:10E12000FEF00D9490F801E20EBF0FEE0DBF11242A
|
||||
:10E130001FBE0D94FEF00D9400F020E030E040EDA5
|
||||
:10E1400057E005C0FA013197F1F72F5F3F4F2817CD
|
||||
:10E150003907C0F308952091760230917702211596
|
||||
:10E16000310561F48093C6008091C00086FFFCCF2A
|
||||
:10E170008091C00080648093C000089522303105F2
|
||||
:10E1800059F48093D6008091D00086FFFCCF809117
|
||||
:10E19000D00080648093D0000895E0ECF0E08081AE
|
||||
:10E1A0008260808320E12093C40098E19093C100B5
|
||||
:10E1B000E0EDF0E08081826080832093D400909332
|
||||
:10E1C000D1000895019719F480E885B9089515B82C
|
||||
:10E1D000089581B1806F81B982B1806F82B96D9AE3
|
||||
:10E1E00075989D9AA598E1E0F1E08081886280832E
|
||||
:10E1F000E2E0F1E080818862808308952F923F926F
|
||||
:10E200004F925F926F927F928F929F92AF92BF9246
|
||||
:10E21000CF92DF92EF92FF920F931F93DF93CF93F2
|
||||
:10E22000CDB7DEB7C053D1400FB6F894DEBF0FBEF6
|
||||
:10E23000CDBF94B7F894A89514BE80916000886112
|
||||
:10E240008093600010926000789493FFC0C080912A
|
||||
:10E25000FC1F9091FD1FA091FE1FB091FF1F8A5AD5
|
||||
:10E260009545AA4AB54509F0D6C52091F41F3091CD
|
||||
:10E27000F51F4091F61F5091F71F79018A01F3E0D5
|
||||
:10E280008F2E9924939475E061E199C08091FB1FD2
|
||||
:10E2900080FF09C0F70100935B0080925700E8956A
|
||||
:10E2A00007B600FCFDCFA12CE1E0BE2EC12CD12C85
|
||||
:10E2B000AE0CBF1CC01ED11E8091FB1F81FD4DC046
|
||||
:10E2C00065C08091FB1F82FF0DC08091F01F90916F
|
||||
:10E2D000F11FA091F21FB091F31FABBFFC0187911A
|
||||
:10E2E00096910BC08091F01F9091F11FA091F21FA9
|
||||
:10E2F000B091F31FFC01808191810C01F9014093E1
|
||||
:10E300005B0090925700E89511242E5F3F4F4F4FCE
|
||||
:10E310005F4F8091F01F9091F11FA091F21FB0917B
|
||||
:10E32000F31F0296A11DB11D8093F01F9093F11F62
|
||||
:10E33000A093F21FB093F31F8091F81F9091F91FE3
|
||||
:10E340008330910530F002979093F91F8093F81F66
|
||||
:10E3500004C01092F91F1092F81F8091F81F90913D
|
||||
:10E36000F91F892B31F02A153B054C055D0508F492
|
||||
:10E37000A8CFF70100935B0070935700E89507B6AC
|
||||
:10E3800000FCFDCF60935700E89517C020503F4F29
|
||||
:10E390004F4F5F4F8091F81F9091F91FF1E081304E
|
||||
:10E3A0009F0738F0805091409093F91F8093F81F99
|
||||
:10E3B00004C01092F91F1092F81F86017501809118
|
||||
:10E3C000F81F9091F91F892B09F060CF24C5109296
|
||||
:10E3D000770210927602279A2F9A8091C00082606D
|
||||
:10E3E0008093C00080E18093C40088E18093C100E5
|
||||
:10E3F00000000F94E9F080E885B90F94CDF00F94F8
|
||||
:10E40000A9F70F94A1F780E00F94A5F781E40F948A
|
||||
:10E41000A5F780E092E00F948DF787E10F94A5F7C0
|
||||
:10E4200082E192E00F948DF785E60F94A5F781E2E3
|
||||
:10E4300092E00F948DF715B8A0907602B090770215
|
||||
:10E44000EE24FF24870134E0832E912CCC24DD249C
|
||||
:10E4500024C0C4010197F1F70894E11CF11C011DCF
|
||||
:10E46000111D21E2E2162EE4F20620E0020720E070
|
||||
:10E47000120718F021E0C22ED12CC801B70127ECF9
|
||||
:10E480003BE140E050E00F944CF8611571058105C7
|
||||
:10E49000910519F485B1805885B98091C00087FD38
|
||||
:10E4A00007C08091D00087FD03C0C114D10489F258
|
||||
:10E4B0008091D00087FF03C092E0A92EB12C960175
|
||||
:10E4C0002F5F3F4FB0927702A09276022130310544
|
||||
:10E4D00009F094C422243324CC24CC5DDE4F18826E
|
||||
:10E4E000C452D140882499245401CB5DDE4F188258
|
||||
:10E4F00019821A821B82C552D140CE5DDE4F19822D
|
||||
:10E500001882C252D1404424552400E010E0ABBE32
|
||||
:10E51000F40187919691C15DDE4F99838883CF5234
|
||||
:10E52000D14064C420E030E02130310551F120E0D9
|
||||
:10E5300030E040E050E0109721F48091C00087FD6A
|
||||
:10E5400020C0A230B10521F48091D00087FD1CC00D
|
||||
:10E550002F5F3F4F4F4F5F4F2130E2E13E07EAE729
|
||||
:10E560004E07E0E05E0738F3C15DDE4F2881398158
|
||||
:10E57000CF52D1402F5F3F4FD1F2EE27FF270994B2
|
||||
:10E58000D6CF2091C60002C02091D600933011F161
|
||||
:10E59000943028F4913089F09230B8F407C0953067
|
||||
:10E5A00041F19530F0F09630D1F535C02B3109F0BE
|
||||
:10E5B000B9CF91E08BE1C82EB5CFC226CC5DDE4F3E
|
||||
:10E5C0002883C452D14092E0ADCF722F60E0C226C2
|
||||
:10E5D00093E0A8CF822F90E0682B792BC22694E09D
|
||||
:10E5E000A1CF2E3009F025C4C22695E02224332481
|
||||
:10E5F00099CFE5E0F0E0EC0FFD1FE20DF31D208365
|
||||
:10E600000894211C311CC2262616370609F08ACF31
|
||||
:10E61000B10196E087CF2C1509F00BC403C09730E9
|
||||
:10E6200009F080CF012B81F40F94A1F784E10F94BE
|
||||
:10E63000A5F785E292E00F948DF78DE20F94A5F790
|
||||
:10E6400089E392E00F948DF78091680290916902BE
|
||||
:10E65000A0916A02B0916B020097A105B10599F5EE
|
||||
:10E66000CE5DDE4FA881B981C252D1401196CE5DF8
|
||||
:10E67000DE4FB983A883C252D1401B9720F1089482
|
||||
:10E68000411C511CB6E04B16510410F04424552493
|
||||
:10E690008BE50F94A5F78DE492E00F948DF7E4E0FD
|
||||
:10E6A0004E16510418F4842D845A02C082E684194F
|
||||
:10E6B0000F94A5F78AE20F947BF7CE5DDE4F1982A7
|
||||
:10E6C0001882C252D1408091680290916902A09153
|
||||
:10E6D0006A02B0916B020097A105B10509F461C00F
|
||||
:10E6E0008091740290917502009709F45AC00197C5
|
||||
:10E6F00039F488E50F94A5F784E592E00F948DF73F
|
||||
:10E700008091740290917502029739F487E50F9415
|
||||
:10E71000A5F78BE592E00F948DF760916C027091F4
|
||||
:10E720006D0280916E0290916F0224E630E040E02D
|
||||
:10E7300050E00F941AF820916802309169024091DC
|
||||
:10E740006A0250916B020F944CF880916302909191
|
||||
:10E750006402A0916502B091660289839A83AB83BB
|
||||
:10E76000BC83FE0133961216130674F4C9016AE0E5
|
||||
:10E7700070E00F9439F8805D8083C9016AE070E031
|
||||
:10E780000F9439F89B0102C080E280833197EC1727
|
||||
:10E79000FD0749F7CE0101960F948DF785E20F949E
|
||||
:10E7A0007BF76D81643109F432C26531F0F4663073
|
||||
:10E7B00009F4E7C0673048F4623091F1633009F43E
|
||||
:10E7C00077C0613009F0C5C25CC0613109F481C015
|
||||
:10E7D000623120F4603109F0BCC222C0623109F418
|
||||
:10E7E000C5C0633109F0B5C205C1693109F4ACC0D7
|
||||
:10E7F0006A3150F4663109F40AC2663108F4FAC08D
|
||||
:10E80000683109F0A6C27FC06B3109F469C06B3171
|
||||
:10E8100008F471C06D3131F0613709F09AC2DDC082
|
||||
:10E82000DD2459C09985903359F48B85882311F4E0
|
||||
:10E830009EE11CC0813011F091E018C098E916C02B
|
||||
:10E84000892F807591F0903539F489E0E0E0F0E0AF
|
||||
:10E850008093570094910AC0983539F4E3E0F0E0D2
|
||||
:10E8600089E080935700949101C090E01E821F823E
|
||||
:10E870008985888719869A871B86F7E0EF2EF12C09
|
||||
:10E880006DC21E8288E08F8381E4888786E5898750
|
||||
:10E8900082E58A8789E48B8783E58C8780E58D878D
|
||||
:10E8A0008FE58E8782E38F87EBE0EE2EF12C56C248
|
||||
:10E8B0008E81813941F0823941F0803911F48FE045
|
||||
:10E8C00005C080E003C082E001C08AE01E828F8321
|
||||
:10E8D00049C0DD24D3941E8272E0E72EF12C3FC2A2
|
||||
:10E8E0008985882311F48EE128C0813011F081E000
|
||||
:10E8F00024C088E922C01E82E1E0F0E089E0809334
|
||||
:10E90000570084911BC08F81803589F488858830B9
|
||||
:10E9100039F4E2E0F0E089E08093570084910DC083
|
||||
:10E9200089E0E0E0F0E080935700849106C0E3E0E6
|
||||
:10E93000F0E089E08093570084911E828F831886CF
|
||||
:10E9400064E0E62EF12C0AC28985836C99E0E1E04F
|
||||
:10E95000F0E0082E90935700E89507B600FCFDCF35
|
||||
:10E960001E821F8253E0E52EF12CF8C180EC8E83CD
|
||||
:10E97000CB5DDE4F188219821A821B82C552D140AC
|
||||
:10E98000EAC18E8190E0A0E0B0E0B82EAA249924DC
|
||||
:10E9900088248F8190E0A0E0B0E0DC0199278827EF
|
||||
:10E9A000882A992AAA2ABB2A898590E0A0E0B0E0AB
|
||||
:10E9B000882A992AAA2ABB2A888590E0A0E0B0E09C
|
||||
:10E9C000BA2FA92F982F8827882A992AAA2ABB2AE2
|
||||
:10E9D000880C991CAA1CBB1C0BC08E8180936802FA
|
||||
:10E9E0008F8180936902888580936A0210926B02FE
|
||||
:10E9F0001E82B1C1FE81C65DDE4FF883CA52D1408E
|
||||
:10EA0000C75DDE4F1882C952D1408F81C82EDD24E8
|
||||
:10EA1000C75DDE4F28813981C952D140C22AD32A2D
|
||||
:10EA2000633109F0C9C08091680290916902A09198
|
||||
:10EA30006A02B0916B020097A105B10509F443C0C9
|
||||
:10EA400081149104A104B10491F4C601A0E0B0E0E6
|
||||
:10EA500080936C0290936D02A0936E02B0936F024C
|
||||
:10EA600081E090E0909375028093740224C08091BD
|
||||
:10EA7000700290917102A0917202B0917302881697
|
||||
:10EA80009906AA06BB06B9F0960140E050E08091D5
|
||||
:10EA90006C0290916D02A0916E02B0916F02820F94
|
||||
:10EAA000931FA41FB51F80936C0290936D02A093D7
|
||||
:10EAB0006E02B0936F028092700290927102A092E7
|
||||
:10EAC0007202B0927302CB5DDE4F88819981AA8178
|
||||
:10EAD000BB81C552D1408030E0EE9E07E3E0AE0737
|
||||
:10EAE000E0E0BE07F0F423E0FC01A0935B0020937C
|
||||
:10EAF0005700E89507B600FCFDCFCB5DDE4F88815F
|
||||
:10EB00009981AA81BB81C552D14080509F4FAF4FA0
|
||||
:10EB1000BF4FCB5DDE4F88839983AA83BB83C552E9
|
||||
:10EB2000D14090E0891690EE990693E0A90690E016
|
||||
:10EB3000B90618F0B501A40166C0B501A401DE0153
|
||||
:10EB40001F968C9111962C9111971296C45DDE4FF1
|
||||
:10EB50002883CC52D140C55DDE4F1882CB52D140C4
|
||||
:10EB600090E0C55DDE4FE881F981CB52D1408E2B1C
|
||||
:10EB70009F2B21E00C01FA0160935B00209357006A
|
||||
:10EB8000E89511244E5F5F4F6F4F7F4F8EEF9FEFE1
|
||||
:10EB9000C80ED91EC114D104A1F695E0F401A092CB
|
||||
:10EBA0005B0090935700E89507B600FCFDCF81E12C
|
||||
:10EBB00080935700E89527C0D501C401B695A79565
|
||||
:10EBC000979587957C018601AFE06A2E712C6C0EBB
|
||||
:10EBD0007D1E0BC0D3016D913D01C7010F9482F8DA
|
||||
:10EBE0000894E11CF11C015010400115110591F72A
|
||||
:10EBF000A60160E070E0440F551F661F771F480DA7
|
||||
:10EC0000591D6A1D7B1D1E824A015B01A4C0BE8185
|
||||
:10EC1000C25DDE4FB883CE52D140C35DDE4F188255
|
||||
:10EC2000CD52D1408F81C82EDD24C35DDE4FE881F7
|
||||
:10EC3000F981CD52D140CE2ADF2A1E828D818431C6
|
||||
:10EC400009F052C08091680290916902A0916A0215
|
||||
:10EC5000B0916B020097A105B10561F18114910497
|
||||
:10EC6000A104B10481F4809174029091750201971E
|
||||
:10EC700051F482E090E09093750280937402C60193
|
||||
:10EC8000A0E0B0E00FC0960140E050E080916C023F
|
||||
:10EC900090916D02A0916E02B0916F02820F931F4E
|
||||
:10ECA000A41FB51F80936C0290936D02A0936E0217
|
||||
:10ECB000B0936F029601BE01695F7F4FABBEF40156
|
||||
:10ECC00087919691DB018C9311969C936E5F7F4F99
|
||||
:10ECD00082E090E0A0E0B0E0880E991EAA1EBB1E64
|
||||
:10ECE0002250304059F72DC0A5019401BE01695F43
|
||||
:10ECF0007F4F0894C108D108760100E010E0089425
|
||||
:10ED0000C11CD11C0894E11CF11C011D111DE80C53
|
||||
:10ED1000F91C0A1D1B1D21BDBB27A52F942F832F76
|
||||
:10ED200082BD2F5F3F4F4F4F5F4FF89A80B5DB0199
|
||||
:10ED30008D93BD012E153F054007510761F749012D
|
||||
:10ED40005A0133E0E32EF12CEC0CFD1CFB01108288
|
||||
:10ED500005C080EC8E8322E0E22EF12CDD248BE1D5
|
||||
:10ED60000F94ABF0CC5DDE4F8881C452D1400F943C
|
||||
:10ED7000ABF08F2D0F94ABF08E2D0F94ABF08EE097
|
||||
:10ED80000F94ABF095E1C92ECC5DDE4FF881C452F3
|
||||
:10ED9000D140CF26CE24CF2485E0682E712C6C0E76
|
||||
:10EDA0007D1E0AC0D3011D913D01812F0F94ABF050
|
||||
:10EDB000C1260894E108F108E114F10499F78C2DBB
|
||||
:10EDC0000F94ABF085B1805885B9DD20B9F4CC5DE6
|
||||
:10EDD000DE4FB881C452D140BF5FCC5DDE4FB883F7
|
||||
:10EDE000C452D14001E010E020E030E0A091760272
|
||||
:10EDF000B091770290E060E070E096CB27982F9872
|
||||
:10EE000080E090E020ED37E0F9013197F1F70196CD
|
||||
:10EE100084369105C9F700008091C0008D7F8093F2
|
||||
:10EE2000C00081E180935700E895EE27FF27099401
|
||||
:10EE3000FFCF90E077CB282F662311F05D9A01C0B9
|
||||
:10EE40005D9827FF02C0A39A01C0A398922F26FFC6
|
||||
:10EE500004C080910201806803C0809102018F7715
|
||||
:10EE60008093020195FF02C0A49A01C0A49894FF68
|
||||
:10EE700002C08D9A01C08D9800C08F9A82E08A9559
|
||||
:10EE8000F1F700C08F9893FF02C0A39A01C0A39826
|
||||
:10EE900092FF04C080910201806803C0809102014A
|
||||
:10EEA0008F778093020191FF02C0A49A01C0A498B9
|
||||
:10EEB00090FF02C08D9A01C08D9800C08F9A92E099
|
||||
:10EEC0009A95F1F700C08F98A39A8091020180680B
|
||||
:10EED00080930201A49A8D9A662341F4243030F481
|
||||
:10EEE0008FE999E10197F1F700C003C095ED9A957C
|
||||
:10EEF000F1F70000089561E00F941BF70895CF9398
|
||||
:10EF0000DF93EC0102C00F947BF7FE012196849100
|
||||
:10EF10008823C9F7DF91CF910895CF93DF93EC0158
|
||||
:10EF200002C00F947BF789918823D9F7DF91CF91A5
|
||||
:10EF3000089560E00F941BF7089582E00F9499F70D
|
||||
:10EF4000089581E00F9499F7089580580F9499F7E8
|
||||
:10EF50000895879A559A9B9AE1E0F1E08081806854
|
||||
:10EF600080839C9A859A8F985D98A39AE2E0F1E05D
|
||||
:10EF7000808180688083A49A8D9A8FE59AEE0197AC
|
||||
:10EF8000F1F700C00000A39880818F77808300C0D4
|
||||
:10EF90008F9A92E09A95F1F700C08F988FE090E4F5
|
||||
:10EFA0000197F1F700C000008F9A92E09A95F1F76F
|
||||
:10EFB00000C08F988FE891E00197F1F700C0000042
|
||||
:10EFC0008F9A92E09A95F1F700C08F9885ED8A9517
|
||||
:10EFD000F1F700008D9800C08F9A92E09A95F1F7B2
|
||||
:10EFE00000C08F9885ED8A95F1F700008D9800C0DC
|
||||
:10EFF0008F9A92E09A95F1F700C08F9882E08A95F7
|
||||
:10F00000F1F700C0A39A00C08F9A92E09A95F1F7A9
|
||||
:10F0100000C08F9885ED8A95F1F7000088E00F9485
|
||||
:10F0200099F70F94A1F786E00F9499F78CE00F946D
|
||||
:10F0300099F70895629FD001739FF001829FE00DC0
|
||||
:10F04000F11D649FE00DF11D929FF00D839FF00D67
|
||||
:10F05000749FF00D659FF00D9927729FB00DE11D13
|
||||
:10F06000F91F639FB00DE11DF91FBD01CF011124F0
|
||||
:10F07000089597FB092E07260AD077FD04D02ED0DD
|
||||
:10F0800006D000201AF4709561957F4F0895F6F729
|
||||
:10F09000909581959F4F0895A1E21A2EAA1BBB1B44
|
||||
:10F0A000FD010DC0AA1FBB1FEE1FFF1FA217B30754
|
||||
:10F0B000E407F50720F0A21BB30BE40BF50B661F6A
|
||||
:10F0C000771F881F991F1A9469F76095709580952E
|
||||
:10F0D00090959B01AC01BD01CF010895AA1BBB1BFC
|
||||
:10F0E00051E107C0AA1FBB1FA617B70710F0A61B48
|
||||
:10F0F000B70B881F991F5A95A9F780959095BC0169
|
||||
:10F10000CD010895262FF999FECF1FBA92BD81BD7A
|
||||
:10F1100020BD0FB6F894FA9AF99A0FBE0196089599
|
||||
:04F12000F894FFCF91
|
||||
:10F124004F726967696E616C2050727573612069F2
|
||||
:10F134003300507275736120526573656172636840
|
||||
:10F14400002E2E2E0020446F206E6F74206469738D
|
||||
:10F15400636F6E6E6563742100205570677261641D
|
||||
:10F16400696E67206669726D77617265007C202024
|
||||
:10F1740020207C0077726974652000766572696668
|
||||
:08F1840079200020202000008A
|
||||
:040000033000E000E9
|
||||
:00000001FF
|
@ -0,0 +1,259 @@
|
||||
:107000005FC0000080C000007EC000007CC00000A7
|
||||
:107010007AC0000078C0000076C0000074C0000094
|
||||
:1070200072C0000070C00000C0C400006CC000004E
|
||||
:107030006AC0000068C0000066C0000064C00000B4
|
||||
:1070400062C00000CDC000005EC000005CC0000057
|
||||
:107050005AC0000058C0000056C0000054C00000D4
|
||||
:1070600052C0000050C000004EC000004CC00000E4
|
||||
:107070004AC0000048C0000046C0000044C00000F4
|
||||
:1070800042C0000040C000003EC000003CC0000004
|
||||
:107090003AC0000038C0000036C0000034C0000014
|
||||
:1070A00032C0000030C000002EC00000443E5D3EF3
|
||||
:1070B000043F5D3E043F953EB73E043FD73EE93E68
|
||||
:1070C00011241FBECFEFDAE0DEBFCDBF8091FE0AF4
|
||||
:1070D0009091FF0A90935D0280935C0212E0A0E021
|
||||
:1070E000B1E0EAEAFEE702C005900D92A032B107D6
|
||||
:1070F000D9F722E0A0E2B2E001C01D92AC35B207A0
|
||||
:10710000E1F718D3C4C67CCF84E08093E900809176
|
||||
:10711000E80085FD0DC08091E8008B778093E80042
|
||||
:107120008091E80082FDF3CF8EB38111F9CF02C0C8
|
||||
:107130008091F100089593E09093E9009091E80028
|
||||
:1071400095FF03C08093F10008959091E8009E7729
|
||||
:107150009093E8009091E80090FDF4CF9EB39111D8
|
||||
:10716000F9CF0895F89481E085BF15BE0C94000016
|
||||
:10717000089520912602309127022F5F3F4F3093D0
|
||||
:10718000270220932602832F37FF02C08EEF831B36
|
||||
:10719000880F821710F45D9808955D9A089584B75A
|
||||
:1071A000877F84BF90E880E00FB6F89490936100E9
|
||||
:1071B000809361000FBE81E085BF82E085BF559A54
|
||||
:1071C000E1E6F0E0908310825D98109289009AEFDA
|
||||
:1071D0009093880080936F0083E080938100CDC3FB
|
||||
:1071E0001F920F920FB60F9211242F938F939F939C
|
||||
:1071F000EF93FF931092850010928400E0E0F0E09E
|
||||
:1072000085919491019649F08091200290912102FC
|
||||
:1072100001969093210280932002FF91EF919F911C
|
||||
:107220008F912F910F900FBE0F901F90189542E0F5
|
||||
:1072300061EC82E037D342E161E883E033D342E19D
|
||||
:1072400060E884E02FC380915402982F9F77913299
|
||||
:1072500039F590915502903291F0913209F5813AC9
|
||||
:10726000F9F48091E800877F8093E80067E070E0A0
|
||||
:1072700082E091E04BD48091E8008B770FC081329F
|
||||
:1072800079F48091E800877F8093E80067E070E000
|
||||
:1072900082E091E098D48091E8008E778093E800B6
|
||||
:1072A00008954F925F926F927F92AF92BF92CF926A
|
||||
:1072B000DF92EF92FF920F931F93CF93DF9384E0BF
|
||||
:1072C0008093E9008091E80082FF25C21DDFC82F6E
|
||||
:1072D000853481F48CE49DE1909321028093200217
|
||||
:1072E00007B600FCFDCFF999FECF81E180935700EE
|
||||
:1072F000E89503C0843521F407DF8DE01CDFE2C18F
|
||||
:107300008C34D9F38035C9F3843721F484E413DF56
|
||||
:1073100080E0F4CF813611F489E5F0CF813491F427
|
||||
:10732000F3DEC82FF1DE90E0880F991F2C2F30E09C
|
||||
:10733000322F2227330F822B932B092E000CAA0BFE
|
||||
:10734000BB0B94C1803711F483E5D8CF833549F462
|
||||
:10735000C7E1D2E01C2F195F8991EDDE1C13FCCF31
|
||||
:10736000B1C1863521F481E3E6DE80E3C7CF833700
|
||||
:1073700031F487E8E0DE85E9DEDE8EE1BFCF8536D9
|
||||
:10738000F1F4E0E0F0E083E095E007B600FCFDCF2B
|
||||
:10739000F999FECF80935700E89507B600FCFDCF22
|
||||
:1073A000F999FECF90935700E89507B600FCFDCF02
|
||||
:1073B000E058FF4FE11540E7F40739F79ECF8237D9
|
||||
:1073C00019F4E1E0F0E00EC0863419F4E0E0F0E0FA
|
||||
:1073D00009C08E3419F4E3E0F0E004C0813539F4DB
|
||||
:1073E000E2E0F0E089E080935700849187CF823615
|
||||
:1073F00031F489E5A0DE80E09EDE80E87FCF823434
|
||||
:1074000019F0873609F016C110922102109220025D
|
||||
:107410007BDE082F79DED82F77DE182F8BEB810FDC
|
||||
:10742000823010F08FE36ACF2D2F30E0302B109296
|
||||
:107430006F00C73609F048C007B600FCFDCFF999C8
|
||||
:10744000FECF81E180935700E895E90100E0BB247D
|
||||
:10745000B394209709F4EAC0C0902202D09023028E
|
||||
:10746000E0902402F09025021634B9F4E02FF0E009
|
||||
:10747000EC29FD2984915FDE002369F052E0C50EFE
|
||||
:10748000D11CE11CF11CC0922202D0922302E09296
|
||||
:107490002402F09225020B2515C0D701C601B6952E
|
||||
:1074A000A79597958795DDD446DE82E0C80ED11C5E
|
||||
:1074B000E11CF11CC0922202D0922302E09224022D
|
||||
:1074C000F09225022197C5CFC0902202D0902302CE
|
||||
:1074D000E0902402F0902502163421F5D701C60170
|
||||
:1074E0008F779927AA27BB27C114E0E7DE06E104BE
|
||||
:1074F000F104C0F4892B8A2B8B2BA1F48FB7F8945D
|
||||
:1075000007B600FCFDCFF999FECF93E0F60190930A
|
||||
:107510005700E89507B600FCFDCF91E19093570026
|
||||
:10752000E8958FBFE901B12C00E0AA24A39420972D
|
||||
:1075300009F454C0163469F5002339F107B600FC8C
|
||||
:10754000FDCFF999FECF4090220250902302609027
|
||||
:10755000240270902502D8DD2B2D30E0A901582B94
|
||||
:10756000F2010A01A0925700E8951124B301A2018B
|
||||
:107570004E5F5F4F6F4F7F4F409322025093230225
|
||||
:10758000609324027093250202C0BEDDB82E0A2546
|
||||
:1075900023C0BADD682F8091220290912302A0912E
|
||||
:1075A0002402B0912502B695A7959795879561D449
|
||||
:1075B0004091220250912302609124027091250291
|
||||
:1075C0004E5F5F4F6F4F7F4F4093220250932302D5
|
||||
:1075D00060932402709325022197A9CF163421F5D8
|
||||
:1075E000D701C6018F779927AA27BB27C114F0E7D7
|
||||
:1075F000DF06E104F104C0F4892B8A2B8B2BA1F464
|
||||
:107600008FB7F89407B600FCFDCFF999FECF95E04F
|
||||
:10761000F60190935700E89507B600FCFDCF91E185
|
||||
:1076200090935700E8958FBF8DE085DD82E08093D1
|
||||
:107630006F0048C0843419F567DD682F80912202FD
|
||||
:1076400090912302A0912402B0912502B695A795AE
|
||||
:10765000979587950ED48091220290912302A09154
|
||||
:107660002402B09125020296A11DB11D8093220231
|
||||
:1076700090932302A0932402B09325023ECE843639
|
||||
:10768000F1F4C0902202D0902302E0902402F09006
|
||||
:107690002502D701C601B695A79597958795E1D3A1
|
||||
:1076A0004ADDF2E0CF0ED11CE11CF11CC092220297
|
||||
:1076B000D0922302E0922402F092250203C08B3183
|
||||
:1076C00009F0B0CE83E08093E9009091E8008091CA
|
||||
:1076D000E8008E778093E80095FD11C08091E80066
|
||||
:1076E00080FD04C08EB38111F9CF15C08091E800F0
|
||||
:1076F0008E778093E80003C08EB3882361F0809179
|
||||
:10770000E80080FFF9CF84E08093E9008091E800F1
|
||||
:107710008B778093E800DF91CF911F910F91FF90BD
|
||||
:10772000EF90DF90CF90BF90AF907F906F905F9081
|
||||
:107730004F9008951092FF0A1092FE0A84B714BE6B
|
||||
:107740000FB6F894A89590916000986190936000AE
|
||||
:10775000109260000FBE81FD1DC080FF07C0E0E0F9
|
||||
:10776000F0E0259134912F3F3F4F99F483FF12C0F1
|
||||
:1077700020915C0230915D028091000190910101A5
|
||||
:107780002817390739F0E0E0F0E0859194910196EF
|
||||
:1077900009F0E8DC04DD78941092210210922002B6
|
||||
:1077A00080DD48D3809120029091210281349F4155
|
||||
:1077B00010F4DFDCF5CF8091E00081608093E00081
|
||||
:1077C0009BE088E10FB6F894A895809360000FBE07
|
||||
:1077D00090936000FFCFCF93292F30E02230310506
|
||||
:1077E00061F02330310571F02130310509F051C0CD
|
||||
:1077F00082E190E025E032E050C08EE390E027EC9B
|
||||
:1078000031E04BC0882309F435C0813009F437C01A
|
||||
:10781000823009F439C0833009F03BC09AE290937A
|
||||
:10782000280280932902AAE2B2E090E0C1E22FB7D9
|
||||
:10783000F894E92FE695F0E03E968C2F87BF84916F
|
||||
:107840002FBF90FF82958F70682F70E08A3018F0FC
|
||||
:1078500027E330E002C020E330E0260F371F2D93EE
|
||||
:107860003D939F5F943119F78091280290E028E2C0
|
||||
:1078700032E013C084E090E023EC31E00EC08CE7EE
|
||||
:1078800090E025E431E009C08AE390E029E031E0AE
|
||||
:1078900004C080E090E020E030E0FA0131832083F2
|
||||
:1078A000CF9108958093E900EBEEF0E08081816054
|
||||
:1078B0008083EDEEF0E010826093EC0040838091D5
|
||||
:1078C000EE00881F8827881F08958091540287FF43
|
||||
:1078D0000FC08091E80082FD04C08EB38111F9CF02
|
||||
:1078E00010C08091E8008B770AC08EB3882349F0DE
|
||||
:1078F0008091E80080FFF9CF8091E8008E77809337
|
||||
:10790000E80008950F931F93CF93DF9341D048D0A1
|
||||
:10791000C8EDD0E088818F778883888180688883EC
|
||||
:1079200088818F7D888319BC1EBA1092520200EEA6
|
||||
:1079300010E0F80180818B7F80838881816088835B
|
||||
:1079400042E060E080E0AEDFE1EEF0E080818E7F3B
|
||||
:107950008083E2EEF0E080818160808380818860B6
|
||||
:107960008083F80180818E7F808388818061888315
|
||||
:10797000DF91CF911F910F910895E7EDF0E08081A5
|
||||
:10798000816080838AE482BF81E080935302BACF12
|
||||
:10799000E8EDF0E080818E7F80831092E200089510
|
||||
:1079A0001092DA001092E10008951F920F920FB624
|
||||
:1079B0000F9211242F933F934F935F936F937F9375
|
||||
:1079C0008F939F93AF93BF93EF93FF938091DA00D0
|
||||
:1079D00080FF1BC08091D80080FF17C08091DA0023
|
||||
:1079E0008E7F8093DA008091D90080FF0BC080E108
|
||||
:1079F00089BD82E189BD09B400FEFDCF81E08EBB67
|
||||
:107A000018D203C019BC1EBA14D28091E10080FFC5
|
||||
:107A100017C08091E20080FF13C08091E2008E7F4A
|
||||
:107A20008093E2008091E20080618093E200809187
|
||||
:107A3000D80080628093D80019BC85E08EBBF9D154
|
||||
:107A40008091E10084FF2CC08091E20084FF28C077
|
||||
:107A500080E189BD82E189BD09B400FEFDCF80913E
|
||||
:107A6000D8008F7D8093D8008091E1008F7E809335
|
||||
:107A7000E1008091E2008F7E8093E2008091E2003D
|
||||
:107A800081608093E20080915202811106C0809152
|
||||
:107A9000E30087FD02C081E001C084E08EBBC9D154
|
||||
:107AA0008091E10083FF21C08091E20083FF1DC02F
|
||||
:107AB0008091E100877F8093E10082E08EBB10928D
|
||||
:107AC00052028091E1008E7F8093E1008091E2007C
|
||||
:107AD0008E7F8093E2008091E20080618093E200DB
|
||||
:107AE00042E060E080E0DEDEA4D1FF91EF91BF9143
|
||||
:107AF000AF919F918F917F916F915F914F913F9146
|
||||
:107B00002F910F900FBE0F901F90189520915A0241
|
||||
:107B100030915B022617370748F06115710539F47B
|
||||
:107B20002091E8002E772093E80001C0B90140E0E1
|
||||
:107B300061157105A1F12EB3222309F440C025304F
|
||||
:107B400009F43FC02091E80023FD37C02091E800F0
|
||||
:107B500022FD2DC02091E80020FFEACF4091F300E4
|
||||
:107B60002091F20030E0342BFC01CF01611571054A
|
||||
:107B700059F02830310540F481918093F100615033
|
||||
:107B800071092F5F3F4FF1CF41E02830310509F0F7
|
||||
:107B900040E02091E8002E772093E800C9CF411102
|
||||
:107BA000CACF05C08EB3882351F0853051F0809143
|
||||
:107BB000E80082FFF7CF80E0089581E0089582E039
|
||||
:107BC000089583E008956115710529F42091E80076
|
||||
:107BD0002B772093E800FC016115710531F18EB31C
|
||||
:107BE000882359F1853059F18091E80083FD23C045
|
||||
:107BF0008091E80082FFF0CF2091F3008091F200A5
|
||||
:107C000090E0922B892B31F08091F10081936150AB
|
||||
:107C1000710991F78091E8008B778093E800DCCFC1
|
||||
:107C20008EB3882351F0853051F08091E80080FFB9
|
||||
:107C3000F7CF80E0089581E0089582E0089583E021
|
||||
:107C400008950F931F93CF93DF9300D0CDB7DEB786
|
||||
:107C5000E4E5F2E088E08E0F9091F10091938E13AD
|
||||
:107C6000FBCFF1DA8091E80083FFCEC0809154020F
|
||||
:107C700090915502492F50E04A30510508F0C4C098
|
||||
:107C8000FA01EA5AF74CE7C0823809F0BDC080918A
|
||||
:107C9000580287708093E9008091EB001092E90010
|
||||
:107CA0009091E800977F9093E80085FB882780F902
|
||||
:107CB0008093F1001092F10085C0282F2D7F09F0EC
|
||||
:107CC000A3C0823009F0A0C080915602811127C064
|
||||
:107CD00080915802877009F497C08093E900209141
|
||||
:107CE000EB0020FF1CC0933021F48091EB008062F8
|
||||
:107CF00014C09091EB0090619093EB0021E030E094
|
||||
:107D0000A90102C0440F551F8A95E2F74093EA008B
|
||||
:107D10001092EA008091EB0088608093EB00109253
|
||||
:107D2000E9008091E800877F50C081116DC01091FB
|
||||
:107D300056021F770FB7F8948091E800877F8093F1
|
||||
:107D4000E800C3DD8091E80080FFFCCF8091E30074
|
||||
:107D50008078812B8093E30080688093E300111189
|
||||
:107D600002C082E001C083E08EBB0FBF4DC08058CF
|
||||
:107D7000823008F049C0AE014F5F5F4F60915802FA
|
||||
:107D8000809156029091570226DDBC01892B09F49F
|
||||
:107D90003BC09091E800977F9093E80089819A8199
|
||||
:107DA000B5DE8091E8008B778093E8002DC08038A5
|
||||
:107DB00059F58091E800877F8093E8008091520216
|
||||
:107DC0008093F1008091E8008E778093E8007DDD5C
|
||||
:107DD0001BC0811119C0909156029230A8F4809175
|
||||
:107DE000E800877F8093E800909352026EDD8091D7
|
||||
:107DF0005202811106C08091E30087FD02C081E03C
|
||||
:107E000001C084E08EBB13DA8091E80083FF0AC0D2
|
||||
:107E10008091EB0080628093EB008091E800877F87
|
||||
:107E20008093E8000F900F90DF91CF911F910F91F9
|
||||
:107E300008950895CF938EB3882359F0C091E90037
|
||||
:107E4000C7701092E9008091E80083FDFADEC093CC
|
||||
:107E5000E900CF910895EE0FFF1F0590F491E02DFA
|
||||
:107E60000994F999FECF92BD81BDF89A992780B502
|
||||
:107E70000895262FF999FECF1FBA92BD81BD20BD6E
|
||||
:107E80000FB6F894FA9AF99A0FBE01960895F894ED
|
||||
:027E9000FFCF22
|
||||
:107E920008950895089508950895089508950895F8
|
||||
:087EA200089508950895089564
|
||||
:107EAA007777000000000000083A0350007200755E
|
||||
:107EBA0000730061002000520065007300650061D4
|
||||
:107ECA0000720063006800200028007000720075CC
|
||||
:107EDA000073006100330064002E0063006F006DC0
|
||||
:107EEA0000290000007C034F0072006900670069E6
|
||||
:107EFA00006E0061006C0020005000720075007373
|
||||
:107F0A0000610020006900330020004D004B00335F
|
||||
:107F1A000020004D0075006C007400690020004DBF
|
||||
:107F2A00006100740065007200690061006C002045
|
||||
:107F3A000032002E003000200075007000670072C9
|
||||
:107F4A00006100640065002000280062006F006F75
|
||||
:107F5A000074006C006F0061006400650072002903
|
||||
:107F6A000000000403090409023E000201008032F5
|
||||
:107F7A000904000001020201000524001001042482
|
||||
:107F8A0002040524060001070582030800FF09040C
|
||||
:107F9A000100020A0000000705040210000107059B
|
||||
:107FAA0083021000011201100102000008992C033B
|
||||
:107FBA00000100020103014341544552494E410068
|
||||
:107FE00058CF58CF58CF58CF58CF58CF58CF58CF59
|
||||
:087FF00058CF58CF58CF58CFED
|
||||
:087FF8000070000000DFFBDC5B
|
||||
:040000030000700089
|
||||
:00000001FF
|
@ -0,0 +1,14 @@
|
||||
Notes on building the improved 32u4 Caterina bootloader:
|
||||
|
||||
1. Must download LUFA-111009 and extract to this directory.
|
||||
|
||||
This should be in a folder named LUFA-111009/
|
||||
|
||||
2. Make sure avr-gcc is installed. It make come with tools, but
|
||||
if not maybe wingnu32 make, and core tools can be downloaded and used.
|
||||
|
||||
3. Try using powershell if you get "...died before initialization" errors.
|
||||
|
||||
4. The "build.txt" file and "program.txt" files can be renamed
|
||||
to .bat files and run to build and program the boards listed
|
||||
herein (Windows only, unfortunately).
|
@ -0,0 +1,24 @@
|
||||
make clean
|
||||
make PID=0x9209 F_CPU=16000000
|
||||
copy Caterina.hex Caterina-wiflyin.hex
|
||||
make clean
|
||||
make PID=0x9207 F_CPU=8000000
|
||||
copy Caterina.hex Caterina-lilypadusb.hex
|
||||
make clean
|
||||
make PID=0x9205 F_CPU=16000000
|
||||
copy Caterina.hex Caterina-promicro16.hex
|
||||
make clean
|
||||
make PID=0x9203 F_CPU=8000000
|
||||
copy Caterina.hex Caterina-promicro8.hex
|
||||
make clean
|
||||
make PID=0x2B74 F_CPU=16000000
|
||||
copy Caterina.hex Caterina-makey.hex
|
||||
make clean
|
||||
make PID=0xF100 F_CPU=8000000
|
||||
copy Caterina.hex Caterina-fio.hex
|
||||
make clean
|
||||
make PID=0x920B F_CPU=16000000
|
||||
copy Caterina.hex Caterina-minibench.hex
|
||||
make clean
|
||||
make PID=0x0110 F_CPU=8000000
|
||||
copy Caterina.hex Caterina-lilypadusbplus.hex
|
@ -0,0 +1,9 @@
|
||||
@ECHO OFF
|
||||
IF "%1"=="" avrdude -p m32u4 -P usb -c avrispmkii -U flash:w:Caterina.hex -U efuse:w:0xcb:m -U hfuse:w:0xd8:m -U lfuse:w:0xff:m
|
||||
IF "%1"=="lilypadusb" avrdude -p m32u4 -P usb -c avrispmkii -U flash:w:Caterina-lilypadusb.hex -U efuse:w:0xfe:m -U hfuse:w:0xd8:m -U lfuse:w:0xff:m
|
||||
IF "%1"=="fio" avrdude -p m32u4 -P usb -c avrispmkii -U flash:w:Caterina-fio.hex -U efuse:w:0xfe:m -U hfuse:w:0xd8:m -U lfuse:w:0xff:m
|
||||
IF "%1"=="promicro8" avrdude -p m32u4 -P usb -c avrispmkii -U flash:w:Caterina-promicro8.hex -U efuse:w:0xfe:m -U hfuse:w:0xd8:m -U lfuse:w:0xff:m
|
||||
IF "%1"=="promicro16" avrdude -p m32u4 -P usb -c avrispmkii -U flash:w:Caterina-promicro16.hex -U efuse:w:0xcb:m -U hfuse:w:0xd8:m -U lfuse:w:0xff:m
|
||||
IF "%1"=="makey" avrdude -p m32u4 -P usb -c avrispmkii -U flash:w:Caterina-makey.hex -U efuse:w:0xcb:m -U hfuse:w:0xd8:m -U lfuse:w:0xff:m
|
||||
IF "%1"=="wiflyin" avrdude -p m32u4 -P usb -c avrispmkii -U flash:w:Caterina-wiflyin.hex -U efuse:w:0xcb:m -U hfuse:w:0xd8:m -U lfuse:w:0xff:m
|
||||
IF "%1"=="minibench" avrdude -p m32u4 -P usb -c avrispmkii -U flash:w:Caterina-minibench.hex -U efuse:w:0xcb:m -U hfuse:w:0xd8:m -U lfuse:w:0xff:m
|
@ -91,9 +91,9 @@ volatile uint8_t timer5_pin_mask;
|
||||
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
|
||||
|
||||
#define AVAILABLE_TONE_PINS 1
|
||||
#define USE_TIMER2
|
||||
#define USE_TIMER4
|
||||
|
||||
const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 3, 4, 5, 1, 0 */ };
|
||||
const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 4 /*, 3, 5 */ };
|
||||
static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255, 255, 255, 255, 255 */ };
|
||||
|
||||
#elif defined(__AVR_ATmega8__)
|
@ -5,7 +5,7 @@
|
||||
# For more info:
|
||||
# https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5-3rd-party-Hardware-specification
|
||||
|
||||
name=Arduino AVR Boards
|
||||
name=Prusa Research AVR Boards
|
||||
version=1.6.20
|
||||
|
||||
# AVR compile variables
|
||||
@ -21,7 +21,7 @@ compiler.warning_flags.all=-Wall -Wextra
|
||||
compiler.path={runtime.tools.avr-gcc.path}/bin/
|
||||
compiler.c.cmd=avr-gcc
|
||||
compiler.c.flags=-c -g -Os {compiler.warning_flags} -std=gnu11 -ffunction-sections -fdata-sections -MMD -flto -fno-fat-lto-objects
|
||||
compiler.c.elf.flags={compiler.warning_flags} -Os -Wl,-u,vfprintf -lprintf_flt -lm -g -flto -fuse-linker-plugin -Wl,--gc-sections
|
||||
compiler.c.elf.flags={compiler.warning_flags} -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections
|
||||
compiler.c.elf.cmd=avr-gcc
|
||||
compiler.S.flags=-c -g -x assembler-with-cpp -flto -MMD
|
||||
compiler.cpp.cmd=avr-g++
|
@ -0,0 +1,380 @@
|
||||
/*
|
||||
pins_arduino.h - Pin definition functions for Arduino
|
||||
Part of Arduino - http://www.arduino.cc/
|
||||
|
||||
Copyright (c) 2007 David A. Mellis
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General
|
||||
Public License along with this library; if not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
|
||||
Boston, MA 02111-1307 USA
|
||||
|
||||
$Id: wiring.h 249 2007-02-03 16:52:51Z mellis $
|
||||
*/
|
||||
|
||||
#ifndef Pins_Arduino_h
|
||||
#define Pins_Arduino_h
|
||||
|
||||
#include <avr/pgmspace.h>
|
||||
|
||||
// Workaround for wrong definitions in "iom32u4.h".
|
||||
// This should be fixed in the AVR toolchain.
|
||||
#undef UHCON
|
||||
#undef UHINT
|
||||
#undef UHIEN
|
||||
#undef UHADDR
|
||||
#undef UHFNUM
|
||||
#undef UHFNUML
|
||||
#undef UHFNUMH
|
||||
#undef UHFLEN
|
||||
#undef UPINRQX
|
||||
#undef UPINTX
|
||||
#undef UPNUM
|
||||
#undef UPRST
|
||||
#undef UPCONX
|
||||
#undef UPCFG0X
|
||||
#undef UPCFG1X
|
||||
#undef UPSTAX
|
||||
#undef UPCFG2X
|
||||
#undef UPIENX
|
||||
#undef UPDATX
|
||||
#undef TCCR2A
|
||||
#undef WGM20
|
||||
#undef WGM21
|
||||
#undef COM2B0
|
||||
#undef COM2B1
|
||||
#undef COM2A0
|
||||
#undef COM2A1
|
||||
#undef TCCR2B
|
||||
#undef CS20
|
||||
#undef CS21
|
||||
#undef CS22
|
||||
#undef WGM22
|
||||
#undef FOC2B
|
||||
#undef FOC2A
|
||||
#undef TCNT2
|
||||
#undef TCNT2_0
|
||||
#undef TCNT2_1
|
||||
#undef TCNT2_2
|
||||
#undef TCNT2_3
|
||||
#undef TCNT2_4
|
||||
#undef TCNT2_5
|
||||
#undef TCNT2_6
|
||||
#undef TCNT2_7
|
||||
#undef OCR2A
|
||||
#undef OCR2_0
|
||||
#undef OCR2_1
|
||||
#undef OCR2_2
|
||||
#undef OCR2_3
|
||||
#undef OCR2_4
|
||||
#undef OCR2_5
|
||||
#undef OCR2_6
|
||||
#undef OCR2_7
|
||||
#undef OCR2B
|
||||
#undef OCR2_0
|
||||
#undef OCR2_1
|
||||
#undef OCR2_2
|
||||
#undef OCR2_3
|
||||
#undef OCR2_4
|
||||
#undef OCR2_5
|
||||
#undef OCR2_6
|
||||
#undef OCR2_7
|
||||
|
||||
#define NUM_DIGITAL_PINS 31
|
||||
#define NUM_ANALOG_INPUTS 12
|
||||
|
||||
#define TX_RX_LED_INIT DDRD |= (1<<5), DDRB |= (1<<0)
|
||||
#define TXLED0 PORTD |= (1<<5)
|
||||
#define TXLED1 PORTD &= ~(1<<5)
|
||||
#define RXLED0 PORTB |= (1<<0)
|
||||
#define RXLED1 PORTB &= ~(1<<0)
|
||||
|
||||
static const uint8_t SDA = 2;
|
||||
static const uint8_t SCL = 3;
|
||||
#define LED_BUILTIN 13
|
||||
#define LED_BUILTIN_RX 17
|
||||
#define LED_BUILTIN_TX 30
|
||||
|
||||
// Map SPI port to 'new' pins D14..D17
|
||||
static const uint8_t SS = 17;
|
||||
static const uint8_t MOSI = 16;
|
||||
static const uint8_t MISO = 14;
|
||||
static const uint8_t SCK = 15;
|
||||
|
||||
// Mapping of analog pins as digital I/O
|
||||
// A6-A11 share with digital pins
|
||||
static const uint8_t A0 = 18;
|
||||
static const uint8_t A1 = 19;
|
||||
static const uint8_t A2 = 20;
|
||||
static const uint8_t A3 = 21;
|
||||
static const uint8_t A4 = 22;
|
||||
static const uint8_t A5 = 23;
|
||||
static const uint8_t A6 = 24; // D4
|
||||
static const uint8_t A7 = 25; // D6
|
||||
static const uint8_t A8 = 26; // D8
|
||||
static const uint8_t A9 = 27; // D9
|
||||
static const uint8_t A10 = 28; // D10
|
||||
static const uint8_t A11 = 29; // D12
|
||||
|
||||
#define digitalPinToPCICR(p) ((((p) >= 8 && (p) <= 11) || ((p) >= 14 && (p) <= 17) || ((p) >= A8 && (p) <= A10)) ? (&PCICR) : ((uint8_t *)0))
|
||||
#define digitalPinToPCICRbit(p) 0
|
||||
#define digitalPinToPCMSK(p) ((((p) >= 8 && (p) <= 11) || ((p) >= 14 && (p) <= 17) || ((p) >= A8 && (p) <= A10)) ? (&PCMSK0) : ((uint8_t *)0))
|
||||
#define digitalPinToPCMSKbit(p) ( ((p) >= 8 && (p) <= 11) ? (p) - 4 : ((p) == 14 ? 3 : ((p) == 15 ? 1 : ((p) == 16 ? 2 : ((p) == 17 ? 0 : (p - A8 + 4))))))
|
||||
|
||||
// __AVR_ATmega32U4__ has an unusual mapping of pins to channels
|
||||
extern const uint8_t PROGMEM analog_pin_to_channel_PGM[];
|
||||
#define analogPinToChannel(P) ( pgm_read_byte( analog_pin_to_channel_PGM + (P) ) )
|
||||
|
||||
#define digitalPinToInterrupt(p) ((p) == 0 ? 2 : ((p) == 1 ? 3 : ((p) == 2 ? 1 : ((p) == 3 ? 0 : ((p) == 7 ? 4 : NOT_AN_INTERRUPT)))))
|
||||
|
||||
#ifdef ARDUINO_MAIN
|
||||
|
||||
// On the Arduino board, digital pins are also used
|
||||
// for the analog output (software PWM). Analog input
|
||||
// pins are a separate set.
|
||||
|
||||
// ATMEL ATMEGA32U4 / ARDUINO LEONARDO
|
||||
//
|
||||
// D0 PD2 RXD1/INT2
|
||||
// D1 PD3 TXD1/INT3
|
||||
// D2 PD1 SDA SDA/INT1
|
||||
// D3# PD0 PWM8/SCL OC0B/SCL/INT0
|
||||
// D4 A6 PD4 ADC8
|
||||
// D5# PC6 ??? OC3A/#OC4A
|
||||
// D6# A7 PD7 FastPWM #OC4D/ADC10
|
||||
// D7 PE6 INT6/AIN0
|
||||
//
|
||||
// D8 A8 PB4 ADC11/PCINT4
|
||||
// D9# A9 PB5 PWM16 OC1A/#OC4B/ADC12/PCINT5
|
||||
// D10# A10 PB6 PWM16 OC1B/0c4B/ADC13/PCINT6
|
||||
// D11# PB7 PWM8/16 0C0A/OC1C/#RTS/PCINT7
|
||||
// D12 A11 PD6 T1/#OC4D/ADC9
|
||||
// D13# PC7 PWM10 CLK0/OC4A
|
||||
//
|
||||
// A0 D18 PF7 ADC7
|
||||
// A1 D19 PF6 ADC6
|
||||
// A2 D20 PF5 ADC5
|
||||
// A3 D21 PF4 ADC4
|
||||
// A4 D22 PF1 ADC1
|
||||
// A5 D23 PF0 ADC0
|
||||
//
|
||||
// New pins D14..D17 to map SPI port to digital pins
|
||||
//
|
||||
// MISO D14 PB3 MISO,PCINT3
|
||||
// SCK D15 PB1 SCK,PCINT1
|
||||
// MOSI D16 PB2 MOSI,PCINT2
|
||||
// SS D17 PB0 RXLED,SS/PCINT0
|
||||
//
|
||||
// Connected LEDs on board for TX and RX
|
||||
// TXLED D30 PD5 XCK1
|
||||
// RXLED D17 PB0
|
||||
// HWB PE2 HWB
|
||||
|
||||
// these arrays map port names (e.g. port B) to the
|
||||
// appropriate addresses for various functions (e.g. reading
|
||||
// and writing)
|
||||
const uint16_t PROGMEM port_to_mode_PGM[] = {
|
||||
NOT_A_PORT,
|
||||
NOT_A_PORT,
|
||||
(uint16_t) &DDRB,
|
||||
(uint16_t) &DDRC,
|
||||
(uint16_t) &DDRD,
|
||||
(uint16_t) &DDRE,
|
||||
(uint16_t) &DDRF,
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM port_to_output_PGM[] = {
|
||||
NOT_A_PORT,
|
||||
NOT_A_PORT,
|
||||
(uint16_t) &PORTB,
|
||||
(uint16_t) &PORTC,
|
||||
(uint16_t) &PORTD,
|
||||
(uint16_t) &PORTE,
|
||||
(uint16_t) &PORTF,
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM port_to_input_PGM[] = {
|
||||
NOT_A_PORT,
|
||||
NOT_A_PORT,
|
||||
(uint16_t) &PINB,
|
||||
(uint16_t) &PINC,
|
||||
(uint16_t) &PIND,
|
||||
(uint16_t) &PINE,
|
||||
(uint16_t) &PINF,
|
||||
};
|
||||
|
||||
const uint8_t PROGMEM digital_pin_to_port_PGM[] = {
|
||||
PD, // D0 - PD2
|
||||
PD, // D1 - PD3
|
||||
PD, // D2 - PD1
|
||||
PD, // D3 - PD0
|
||||
PD, // D4 - PD4
|
||||
PC, // D5 - PC6
|
||||
PD, // D6 - PD7
|
||||
PE, // D7 - PE6
|
||||
|
||||
PB, // D8 - PB4
|
||||
PB, // D9 - PB5
|
||||
PB, // D10 - PB6
|
||||
PB, // D11 - PB7
|
||||
PD, // D12 - PD6
|
||||
PC, // D13 - PC7
|
||||
|
||||
PB, // D14 - MISO - PB3
|
||||
PB, // D15 - SCK - PB1
|
||||
PB, // D16 - MOSI - PB2
|
||||
PB, // D17 - SS - PB0
|
||||
|
||||
PF, // D18 - A0 - PF7
|
||||
PF, // D19 - A1 - PF6
|
||||
PF, // D20 - A2 - PF5
|
||||
PF, // D21 - A3 - PF4
|
||||
PF, // D22 - A4 - PF1
|
||||
PF, // D23 - A5 - PF0
|
||||
|
||||
PD, // D24 / PD5
|
||||
PD, // D25 / D6 - A7 - PD7
|
||||
PB, // D26 / D8 - A8 - PB4
|
||||
PB, // D27 / D9 - A9 - PB5
|
||||
PB, // D28 / D10 - A10 - PB6
|
||||
PD, // D29 / D12 - A11 - PD6
|
||||
PD, // D30 / TX Led - PD5
|
||||
};
|
||||
|
||||
const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = {
|
||||
_BV(2), // D0 - PD2
|
||||
_BV(3), // D1 - PD3
|
||||
_BV(1), // D2 - PD1
|
||||
_BV(0), // D3 - PD0
|
||||
_BV(4), // D4 - PD4
|
||||
_BV(6), // D5 - PC6
|
||||
_BV(7), // D6 - PD7
|
||||
_BV(6), // D7 - PE6
|
||||
|
||||
_BV(4), // D8 - PB4
|
||||
_BV(5), // D9 - PB5
|
||||
_BV(6), // D10 - PB6
|
||||
_BV(7), // D11 - PB7
|
||||
_BV(6), // D12 - PD6
|
||||
_BV(7), // D13 - PC7
|
||||
|
||||
_BV(3), // D14 - MISO - PB3
|
||||
_BV(1), // D15 - SCK - PB1
|
||||
_BV(2), // D16 - MOSI - PB2
|
||||
_BV(0), // D17 - SS - PB0
|
||||
|
||||
_BV(7), // D18 - A0 - PF7
|
||||
_BV(6), // D19 - A1 - PF6
|
||||
_BV(5), // D20 - A2 - PF5
|
||||
_BV(4), // D21 - A3 - PF4
|
||||
_BV(1), // D22 - A4 - PF1
|
||||
_BV(0), // D23 - A5 - PF0
|
||||
|
||||
_BV(4), // D24 / D4 - A6 - PD4
|
||||
_BV(7), // D25 / D6 - A7 - PD7
|
||||
_BV(4), // D26 / D8 - A8 - PB4
|
||||
_BV(5), // D27 / D9 - A9 - PB5
|
||||
_BV(6), // D28 / D10 - A10 - PB6
|
||||
_BV(6), // D29 / D12 - A11 - PD6
|
||||
_BV(5), // D30 / TX Led - PD5
|
||||
};
|
||||
|
||||
const uint8_t PROGMEM digital_pin_to_timer_PGM[] = {
|
||||
NOT_ON_TIMER,
|
||||
NOT_ON_TIMER,
|
||||
NOT_ON_TIMER,
|
||||
TIMER0B, /* 3 */
|
||||
NOT_ON_TIMER,
|
||||
TIMER3A, /* 5 */
|
||||
TIMER4D, /* 6 */
|
||||
NOT_ON_TIMER,
|
||||
|
||||
NOT_ON_TIMER,
|
||||
TIMER1A, /* 9 */
|
||||
TIMER1B, /* 10 */
|
||||
TIMER0A, /* 11 */
|
||||
|
||||
NOT_ON_TIMER,
|
||||
TIMER4A, /* 13 */
|
||||
|
||||
NOT_ON_TIMER,
|
||||
NOT_ON_TIMER,
|
||||
NOT_ON_TIMER,
|
||||
NOT_ON_TIMER,
|
||||
NOT_ON_TIMER,
|
||||
NOT_ON_TIMER,
|
||||
|
||||
NOT_ON_TIMER,
|
||||
NOT_ON_TIMER,
|
||||
NOT_ON_TIMER,
|
||||
NOT_ON_TIMER,
|
||||
NOT_ON_TIMER,
|
||||
NOT_ON_TIMER,
|
||||
NOT_ON_TIMER,
|
||||
NOT_ON_TIMER,
|
||||
NOT_ON_TIMER,
|
||||
NOT_ON_TIMER,
|
||||
};
|
||||
|
||||
const uint8_t PROGMEM analog_pin_to_channel_PGM[] = {
|
||||
7, // A0 PF7 ADC7
|
||||
6, // A1 PF6 ADC6
|
||||
5, // A2 PF5 ADC5
|
||||
4, // A3 PF4 ADC4
|
||||
1, // A4 PF1 ADC1
|
||||
0, // A5 PF0 ADC0
|
||||
8, // A6 D4 PD4 ADC8
|
||||
10, // A7 D6 PD7 ADC10
|
||||
11, // A8 D8 PB4 ADC11
|
||||
12, // A9 D9 PB5 ADC12
|
||||
13, // A10 D10 PB6 ADC13
|
||||
9 // A11 D12 PD6 ADC9
|
||||
};
|
||||
|
||||
#endif /* ARDUINO_MAIN */
|
||||
|
||||
// These serial port names are intended to allow libraries and architecture-neutral
|
||||
// sketches to automatically default to the correct port name for a particular type
|
||||
// of use. For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN,
|
||||
// the first hardware serial port whose RX/TX pins are not dedicated to another use.
|
||||
//
|
||||
// SERIAL_PORT_MONITOR Port which normally prints to the Arduino Serial Monitor
|
||||
//
|
||||
// SERIAL_PORT_USBVIRTUAL Port which is USB virtual serial
|
||||
//
|
||||
// SERIAL_PORT_LINUXBRIDGE Port which connects to a Linux system via Bridge library
|
||||
//
|
||||
// SERIAL_PORT_HARDWARE Hardware serial port, physical RX & TX pins.
|
||||
//
|
||||
// SERIAL_PORT_HARDWARE_OPEN Hardware serial ports which are open for use. Their RX & TX
|
||||
// pins are NOT connected to anything by default.
|
||||
#define SERIAL_PORT_MONITOR Serial
|
||||
#define SERIAL_PORT_USBVIRTUAL Serial
|
||||
#define SERIAL_PORT_HARDWARE Serial1
|
||||
#define SERIAL_PORT_HARDWARE_OPEN Serial1
|
||||
|
||||
// Alias SerialUSB to Serial
|
||||
#define SerialUSB SERIAL_PORT_USBVIRTUAL
|
||||
|
||||
#ifndef MAGIC_KEY
|
||||
#define MAGIC_KEY 0x7777
|
||||
#endif
|
||||
|
||||
#ifndef MAGIC_KEY_POS
|
||||
#define MAGIC_KEY_POS 0x0800
|
||||
#endif
|
||||
#ifndef NEW_LUFA_SIGNATURE
|
||||
#define NEW_LUFA_SIGNATURE 0xDCFB
|
||||
#endif
|
||||
|
||||
#endif /* Pins_Arduino_h */
|
@ -1,31 +0,0 @@
|
||||
# See: https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5---3rd-party-Hardware-specification
|
||||
|
||||
##############################################################
|
||||
|
||||
menu.cpu=Processor
|
||||
|
||||
########################################
|
||||
## RAMBo
|
||||
########################################
|
||||
rambo.name=PrusaResearch EINSY RAMBo
|
||||
rambo.vid.0=0x27b1
|
||||
rambo.pid.0=0x0001
|
||||
|
||||
rambo.upload.tool=arduino:avrdude
|
||||
rambo.upload.protocol=wiring
|
||||
rambo.upload.maximum_size=253952
|
||||
rambo.upload.speed=115200
|
||||
|
||||
rambo.bootloader.low_fuses=0xFF
|
||||
rambo.bootloader.high_fuses=0xD8
|
||||
rambo.bootloader.extended_fuses=0xFD
|
||||
rambo.bootloader.path=stk500v2
|
||||
#rambo.bootloader.file=stk500boot_v2_mega2560.hex
|
||||
rambo.bootloader.unlock_bits=0x3F
|
||||
rambo.bootloader.lock_bits=0x0F
|
||||
|
||||
rambo.build.mcu=atmega2560
|
||||
rambo.build.f_cpu=16000000L
|
||||
rambo.build.board=AVR_RAMBO
|
||||
rambo.build.core=rambo
|
||||
rambo.build.variant=rambo
|
175
README.md
175
README.md
@ -1,2 +1,173 @@
|
||||
# Arduino_Boards
|
||||
Board definitions for Arduino compatible boards manufactured by Prusa Research
|
||||
# Prusa Research AVR Boards
|
||||
Prusa Research AVR Boards definitions for Arduino compatible boards manufactured/used by Prusa Research
|
||||
- [Prusa MM Control board](https://github.com/prusa3d/MM-control-2.0)
|
||||
- Prusa Einsy and miniRAMBo boards by Ultimachine [Einsy](https://github.com/ultimachine/Einsy-Rambo) and [miniRAMBo](https://github.com/ultimachine/Mini-Rambo)
|
||||
|
||||
# Table of contents
|
||||
|
||||
<!--ts-->
|
||||
* [Linux build](#linux)
|
||||
* Windows build
|
||||
* [Using Linux subsystem](#using-linux-subsystem-under-windows-10-64-bit)
|
||||
* [Using Git-bash](#using-git-bash-under-windows-10-64-bit)
|
||||
* [How-to change code and dependencies](#2-How-to-modify)
|
||||
* [Prepare new version](#3-Prepare-new-version)
|
||||
<!--te-->
|
||||
|
||||
|
||||
# 1-Build environment
|
||||
## Linux
|
||||
|
||||
## Windows
|
||||
Please make sure if you modify code, files, etc. that the line endings are UNIX conform (LF and not CRLF).
|
||||
### Using Linux subsystem under Windows 10 64-bit
|
||||
_notes: Script and instructions contributed by 3d-gussner. Use at your own risk. Script downloads Arduino executables outside of Prusa control. Report problems [there.](https://github.com/3d-gussner/Arduino_Boards/issues)._
|
||||
- follow the [Microsoft guide](https://docs.microsoft.com/en-us/windows/wsl/install-win10)
|
||||
- Tested versions are at this moment
|
||||
- Ubuntu other may different
|
||||
- After the installation and reboot please open your Ubuntu bash and do following steps
|
||||
- run command `apt-get update`
|
||||
- run command `apt-get upgrade` to update your OS.
|
||||
|
||||
#### Some Tips for Ubuntu
|
||||
- Linux is case sensetive so please don't forget to use capital letters where needed, like changing to a directory
|
||||
- To change the path to your Prusa-Firmware location you downloaded and unzipped
|
||||
- Example: You files are under `C:\Users\<your-username>\Downloads\Arduino_Boards`
|
||||
- use under Ubuntu the following command `cd /mnt/c/Users/<your-username>/Downloads/Arduino_Boards`
|
||||
to change to the right folder
|
||||
- Unix and windows have different line endings (LF vs CRLF), try dos2unix to convert
|
||||
- This should fix the `"$'\r': command not found"` error
|
||||
- to install run `apt-get install dos2unix`
|
||||
|
||||
#### Modify Arduino_Boards with Ubuntu Linux subsystem installed
|
||||
- open Ubuntu bash
|
||||
- change to your source code folder (case sensitive)
|
||||
- Read How-to-modify below
|
||||
- run `./Prepare-new-version.sh`
|
||||
- Read How-to-modify part `package_prusa3d_index.json` below
|
||||
|
||||
### Using Git-bash under Windows 10 64-bit
|
||||
_notes: Script and instructions contributed by 3d-gussner. Use at your own risk. Script downloads Arduino executables outside of Prusa control. Report problems [there.](https://github.com/3d-gussner/Prusa-Firmware/issues) Multi language build is supported._
|
||||
- Download and install the [64bit Git version](https://git-scm.com/download/win)
|
||||
- Also follow these [instructions](https://gist.github.com/evanwill/0207876c3243bbb6863e65ec5dc3f058)
|
||||
|
||||
#### Compile Prusa-firmware with Git-bash installed
|
||||
- open Git-bash
|
||||
- Read How-to-modify below
|
||||
- change to your source code folder
|
||||
- run `bash Prepare-new-version.sh`
|
||||
- Read How-to-modify `package_prusa3d_index.json` below
|
||||
|
||||
# 2-How-to-modify
|
||||
Folder Structure:
|
||||
|
||||
.
|
||||
+-- IDE_Boards_Manager
|
||||
¦ +-- prusa3dboards Please don't change that folder name when you update your Github and post a PR.
|
||||
¦ +-- bootloaders
|
||||
¦ +-- prusa_einsy_rambo Which is a clone of https://github.com/prusa3d/stk500v2-prusa
|
||||
¦ +-- prusa_mm_control
|
||||
¦ +-- cores
|
||||
¦ +-- prusa_einsy_rambo
|
||||
¦ +-- variants
|
||||
¦ +-- prusa_einsy_rambo
|
||||
¦ +-- prusa_mm_control
|
||||
¦ +-- ...
|
||||
+-- ...
|
||||
|
||||
Files:
|
||||
|
||||
.
|
||||
+-- IDE_Boards_Manager
|
||||
¦ +-- prusa3dboards Please don't change that folder name when you update your Github and post a PR.
|
||||
¦ +-- boards.txt contains definitions for the boards (board name, parameters for building and uploading sketches, etc.).
|
||||
¦ +-- platform.txt contains definitions for the CPU architecture used (compiler, build process parameters, tools used for upload, etc.).
|
||||
¦ +-- avrdude.conf
|
||||
¦ +-- ...
|
||||
¦ +-- package_prusa3d_index.json
|
||||
¦ +-- prusa3dboards.version contains the release version numbers and is used in `Prepare-new-version.sh`. The first line is used.
|
||||
¦ +-- prusa3dboards-<versions>.tar.bz2 actual used pacakges for Ardunio IDE Boards Manager
|
||||
¦ +-- prusa3dboards-<versions>.md Info about the version
|
||||
¦ +-- ...
|
||||
+-- LICENSE
|
||||
+-- README.md
|
||||
+-- ...
|
||||
|
||||
More information about [boards.txt](https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5-3rd-party-Hardware-specification#boardstxt)
|
||||
More information about [platforms.txt](https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5-3rd-party-Hardware-specification#platformtxt)
|
||||
More information about [package_prusa3d_index.json](https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.6.x-package_index.json-format-specification)
|
||||
|
||||
Naming convention for version:
|
||||
- <`major:#1`.`minor:#2`.`maintenance:#2`"-`devel status:0-4`-`devel build:#6`" where `-devel status` and `devel build` are optional
|
||||
- `#1` = numbers 0-9
|
||||
- `#2` = numbers 0-99
|
||||
- `0-4`= only numbers between 0 and 4. 0=devel, 1=alpha, 2=beta, 3=pre-release, 4=release candidate
|
||||
- `#6` = numbers 0-999999
|
||||
|
||||
Few examples:
|
||||
|
||||
- 1.0.0-0-235 Is a version in development and devel build 235.
|
||||
- 1.0.0 Is the frist stable version
|
||||
- 1.0.1 Is a stable version that was maintaind...like adding a bootloader or changing tools to existing boards
|
||||
- 1.1.0-3 Is a pre-release version including new boards
|
||||
- 1.1.0 Is the first stable version including new boards
|
||||
|
||||
After modifying the source code please follow these steps:
|
||||
- add the new version (following the naming conention) in the first line of `prusa3dboards.version`
|
||||
- run `Prepare-new-version.sh` to generate `prusa3dboards-<version>tar.bz2` and to show `sha256checksum` and `size` needed in the `package_prusa3d_index.json`
|
||||
- open `package_prusa3d_index.json`in your prefered editor (like notepad++)
|
||||
- Directly under
|
||||
|
||||
```
|
||||
{
|
||||
"packages": [
|
||||
{
|
||||
"name": "PrusaResearch",
|
||||
"maintainer": "Prusa Research",
|
||||
"websiteURL": "https://www.prusa3d.com/",
|
||||
"email": "info@prusa3d.com",
|
||||
"help": {
|
||||
"online": "https://github.com/3d-gussner/Arduino_Boards"
|
||||
},
|
||||
"platforms": [
|
||||
```
|
||||
you will find the latest Prusa Research AVR Boards definition ... something like this
|
||||
```
|
||||
{
|
||||
"name": "Prusa Research AVR Boards",
|
||||
"architecture": "avr",
|
||||
"version": "1.0.2",
|
||||
"category": "Contributed",
|
||||
"url": "https://raw.githubusercontent.com/3d-gussner/Arduino_Boards/V1.0.2/IDE_Board_Manager/prusa3dboards-1.0.2.tar.bz2",
|
||||
"archiveFileName": "prusa3dboards-1.0.2.tar.bz2",
|
||||
"checksum": "SHA-256:7d49c48d86644513bd2f2222024934e827783f9f5be160c8a1ae14e177d0393a",
|
||||
"size": "120855",
|
||||
"help": {
|
||||
"online": "https://learn.sparkfun.com/tutorials/installing-arduino-ide/board-add-ons-with-arduino-board-manager"
|
||||
},
|
||||
"boards": [
|
||||
{
|
||||
"name": "Original Prusa i3 MK3 Multi Material 2.0 upgrade"
|
||||
},
|
||||
{
|
||||
"name": "Original Prusa i3 MK3/MK3S Einsy RAMBo"
|
||||
}
|
||||
],
|
||||
"toolsDependencies": []
|
||||
},
|
||||
```
|
||||
|
||||
|
||||
- Copy and paste this section twice
|
||||
- Modify the top one with new values
|
||||
- change `"version": "1.0.2",` `"version": "<version shown by Prepare-new-version.sh>",
|
||||
- change in `"url":` and `"archiveFileName":` the "ArchiveFileName" parts you got from `Prepare-new-version.sh`
|
||||
- if you have your own github for of this repository and you made a new worktree/branch to test your code you should not forget to modify the `"url":` to your `branch`
|
||||
- change in `"checksum": ` the "SHA256 checksum" you got from `Prepare-new-version.sh`
|
||||
- change in `"size":` the "Size" you got from `Prepare-new-version.sh`
|
||||
- double check the syntax/format of the JSON file. In Notepad++ makes it is quite easy by using the [+] and [-] to see if your changes are correct.
|
||||
|
||||
When you have an own github and work localy use `git status` to verify your status.
|
||||
- You may need to use `git add IDE_Board_Manager/prusa3dboards-<version>.tar.bz2`
|
||||
- You need to commit your changes with `git commit -a`. Please try to document your changes as detailed as possible.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user