| /Transportables_Koptertool/tags/V-0.1/F8X6.c |
|---|
| 0,0 → 1,290 |
| /******************************************************************************* |
| ; |
| ; taskit Rechnertechnik Berlin GmbH |
| ; Kaiser-Friedrich-Straáe 51 |
| ; 1000 Berlin 12 |
| ; Tel. 030-3245836 |
| ; FAX 030-3232649 |
| ; |
| ; |
| ; Projekt : |
| ; |
| ; Datei : |
| ; |
| ; Funktion : |
| ; |
| ; Version : |
| ; |
| ; Letzte Änderung : 06/28/95 - 15:04:59 |
| ; |
| ; Info : |
| ; |
| *******************************************************************************/ |
| #include <avr/pgmspace.h> |
| //Die Bytes gehören zu jeweils einer Spalte des Buchstabens |
| //D7 ist dabei das unterste Bit. Es handelt sich um einen DOS-Font ! |
| //DOS-Zeichensatz |
| prog_uchar f8x6[ 256 ][ 6 ] = |
| { |
| { 0x00,0x00,0x00,0x00,0x00,0x00 }, // ASCII - 0 |
| { 0x3E,0x5B,0x4F,0x5B,0x3E,0x00 }, // ASCII - 1 |
| { 0x3E,0x6B,0x4F,0x6B,0x3E,0x00 }, // ASCII - 2 |
| { 0x1C,0x3E,0x7C,0x3E,0x1C,0x00 }, // ASCII - 3 |
| { 0x18,0x3C,0x7E,0x3C,0x18,0x00 }, // ASCII - 4 |
| { 0x1C,0x57,0x7D,0x57,0x1C,0x00 }, // ASCII - 5 |
| { 0x1C,0x5E,0x7F,0x5E,0x1C,0x00 }, // ASCII - 6 |
| { 0x00,0x18,0x3C,0x18,0x00,0x00 }, // ASCII - 7 |
| { 0xFF,0xE7,0xC3,0xE7,0xFF,0x00 }, // ASCII - 8 |
| { 0x00,0x18,0x24,0x18,0x00,0x00 }, // ASCII - 9 |
| { 0xFF,0xE7,0xDB,0xE7,0xFF,0x00 }, // ASCII - 10 |
| { 0x30,0x48,0x3A,0x06,0x0E,0x00 }, // ASCII - 11 |
| { 0x26,0x29,0x79,0x29,0x26,0x00 }, // ASCII - 12 |
| { 0x40,0x7F,0x05,0x05,0x07,0x00 }, // ASCII - 13 |
| { 0x40,0x7F,0x05,0x25,0x3F,0x00 }, // ASCII - 14 |
| { 0x5A,0x3C,0xE7,0x3C,0x5A,0x00 }, // ASCII - 15 |
| { 0x7F,0x3E,0x1C,0x1C,0x08,0x00 }, // ASCII - 16 |
| { 0x08,0x1C,0x1C,0x3E,0x7F,0x00 }, // ASCII - 17 |
| { 0x14,0x22,0x7F,0x22,0x14,0x00 }, // ASCII - 18 |
| { 0x5F,0x5F,0x00,0x5F,0x5F,0x00 }, // ASCII - 19 |
| { 0x06,0x09,0x7F,0x01,0x7F,0x00 }, // ASCII - 20 |
| { 0x00,0x66,0x89,0x95,0x6A,0x00 }, // ASCII - 21 |
| { 0x60,0x60,0x60,0x60,0x60,0x60 }, // ASCII - 22 |
| { 0x94,0xA2,0xFF,0xA2,0x94,0x00 }, // ASCII - 23 |
| { 0x08,0x04,0x7E,0x04,0x08,0x00 }, // ASCII - 24 |
| { 0x10,0x20,0x7E,0x20,0x10,0x00 }, // ASCII - 25 |
| { 0x08,0x08,0x2A,0x1C,0x08,0x00 }, // ASCII - 26 |
| { 0x08,0x1C,0x2A,0x08,0x08,0x00 }, // ASCII - 27 |
| { 0x1E,0x10,0x10,0x10,0x10,0x00 }, // ASCII - 28 |
| { 0x0C,0x1E,0x0C,0x1E,0x0C,0x00 }, // ASCII - 29 |
| { 0x30,0x38,0x3E,0x38,0x30,0x00 }, // ASCII - 30 |
| { 0x06,0x0E,0x3E,0x0E,0x06,0x00 }, // ASCII - 31 |
| { 0x00,0x00,0x00,0x00,0x00,0x00 }, // ASCII - 32 |
| { 0x00,0x00,0x5F,0x00,0x00,0x00 }, // ASCII - 33 |
| { 0x00,0x07,0x00,0x07,0x00,0x00 }, // ASCII - 34 |
| { 0x14,0x7F,0x14,0x7F,0x14,0x00 }, // ASCII - 35 |
| { 0x24,0x2A,0x7F,0x2A,0x12,0x00 }, // ASCII - 36 |
| { 0x23,0x13,0x08,0x64,0x62,0x00 }, // ASCII - 37 |
| { 0x36,0x49,0x56,0x20,0x50,0x00 }, // ASCII - 38 |
| { 0x00,0x08,0x07,0x03,0x00,0x00 }, // ASCII - 39 |
| { 0x00,0x1C,0x22,0x41,0x00,0x00 }, // ASCII - 40 |
| { 0x00,0x41,0x22,0x1C,0x00,0x00 }, // ASCII - 41 |
| { 0x2A,0x1C,0x7F,0x1C,0x2A,0x00 }, // ASCII - 42 |
| { 0x08,0x08,0x3E,0x08,0x08,0x00 }, // ASCII - 43 |
| { 0x00,0x80,0x70,0x30,0x00,0x00 }, // ASCII - 44 |
| { 0x08,0x08,0x08,0x08,0x08,0x00 }, // ASCII - 45 |
| { 0x00,0x00,0x60,0x60,0x00,0x00 }, // ASCII - 46 |
| { 0x20,0x10,0x08,0x04,0x02,0x00 }, // ASCII - 47 |
| { 0x3E,0x51,0x49,0x45,0x3E,0x00 }, // ASCII - 48 |
| { 0x00,0x42,0x7F,0x40,0x00,0x00 }, // ASCII - 49 |
| { 0x72,0x49,0x49,0x49,0x46,0x00 }, // ASCII - 50 |
| { 0x21,0x41,0x49,0x4D,0x33,0x00 }, // ASCII - 51 |
| { 0x18,0x14,0x12,0x7F,0x10,0x00 }, // ASCII - 52 |
| { 0x27,0x45,0x45,0x45,0x39,0x00 }, // ASCII - 53 |
| { 0x3C,0x4A,0x49,0x49,0x31,0x00 }, // ASCII - 54 |
| { 0x41,0x21,0x11,0x09,0x07,0x00 }, // ASCII - 55 |
| { 0x36,0x49,0x49,0x49,0x36,0x00 }, // ASCII - 56 |
| { 0x46,0x49,0x49,0x29,0x1E,0x00 }, // ASCII - 57 |
| { 0x00,0x00,0x14,0x00,0x00,0x00 }, // ASCII - 58 |
| { 0x00,0x40,0x34,0x00,0x00,0x00 }, // ASCII - 59 |
| { 0x00,0x08,0x14,0x22,0x41,0x00 }, // ASCII - 60 |
| { 0x14,0x14,0x14,0x14,0x14,0x00 }, // ASCII - 61 |
| { 0x00,0x41,0x22,0x14,0x08,0x00 }, // ASCII - 62 |
| { 0x02,0x01,0x59,0x09,0x06,0x00 }, // ASCII - 63 |
| { 0x3E,0x41,0x5D,0x59,0x4E,0x00 }, // ASCII - 64 |
| { 0x7C,0x12,0x11,0x12,0x7C,0x00 }, // ASCII - 65 |
| { 0x7F,0x49,0x49,0x49,0x36,0x00 }, // ASCII - 66 |
| { 0x3E,0x41,0x41,0x41,0x22,0x00 }, // ASCII - 67 |
| { 0x7F,0x41,0x41,0x41,0x3E,0x00 }, // ASCII - 68 |
| { 0x7F,0x49,0x49,0x49,0x41,0x00 }, // ASCII - 69 |
| { 0x7F,0x09,0x09,0x09,0x01,0x00 }, // ASCII - 70 |
| { 0x3E,0x41,0x41,0x51,0x73,0x00 }, // ASCII - 71 |
| { 0x7F,0x08,0x08,0x08,0x7F,0x00 }, // ASCII - 72 |
| { 0x00,0x41,0x7F,0x41,0x00,0x00 }, // ASCII - 73 |
| { 0x20,0x40,0x41,0x3F,0x01,0x00 }, // ASCII - 74 |
| { 0x7F,0x08,0x14,0x22,0x41,0x00 }, // ASCII - 75 |
| { 0x7F,0x40,0x40,0x40,0x40,0x00 }, // ASCII - 76 |
| { 0x7F,0x02,0x1C,0x02,0x7F,0x00 }, // ASCII - 77 |
| { 0x7F,0x04,0x08,0x10,0x7F,0x00 }, // ASCII - 78 |
| { 0x3E,0x41,0x41,0x41,0x3E,0x00 }, // ASCII - 79 |
| { 0x7F,0x09,0x09,0x09,0x06,0x00 }, // ASCII - 80 |
| { 0x3E,0x41,0x51,0x21,0x5E,0x00 }, // ASCII - 81 |
| { 0x7F,0x09,0x19,0x29,0x46,0x00 }, // ASCII - 82 |
| { 0x26,0x49,0x49,0x49,0x32,0x00 }, // ASCII - 83 |
| { 0x03,0x01,0x7F,0x01,0x03,0x00 }, // ASCII - 84 |
| { 0x3F,0x40,0x40,0x40,0x3F,0x00 }, // ASCII - 85 |
| { 0x1F,0x20,0x40,0x20,0x1F,0x00 }, // ASCII - 86 |
| { 0x3F,0x40,0x38,0x40,0x3F,0x00 }, // ASCII - 87 |
| { 0x63,0x14,0x08,0x14,0x63,0x00 }, // ASCII - 88 |
| { 0x03,0x04,0x78,0x04,0x03,0x00 }, // ASCII - 89 |
| { 0x61,0x59,0x49,0x4D,0x43,0x00 }, // ASCII - 90 |
| { 0x00,0x7F,0x41,0x41,0x41,0x00 }, // ASCII - 91 |
| { 0x02,0x04,0x08,0x10,0x20,0x00 }, // ASCII - 92 |
| { 0x00,0x41,0x41,0x41,0x7F,0x00 }, // ASCII - 93 |
| { 0x04,0x02,0x01,0x02,0x04,0x00 }, // ASCII - 94 |
| { 0x40,0x40,0x40,0x40,0x40,0x00 }, // ASCII - 95 |
| { 0x00,0x03,0x07,0x08,0x00,0x00 }, // ASCII - 96 |
| { 0x20,0x54,0x54,0x78,0x40,0x00 }, // ASCII - 97 |
| { 0x7F,0x28,0x44,0x44,0x38,0x00 }, // ASCII - 98 |
| { 0x38,0x44,0x44,0x44,0x28,0x00 }, // ASCII - 99 |
| { 0x38,0x44,0x44,0x28,0x7F,0x00 }, // ASCII - 100 |
| { 0x38,0x54,0x54,0x54,0x18,0x00 }, // ASCII - 101 |
| { 0x00,0x08,0x7E,0x09,0x02,0x00 }, // ASCII - 102 |
| { 0x18,0xA4,0xA4,0x9C,0x78,0x00 }, // ASCII - 103 |
| { 0x7F,0x08,0x04,0x04,0x78,0x00 }, // ASCII - 104 |
| { 0x00,0x44,0x7D,0x40,0x00,0x00 }, // ASCII - 105 |
| { 0x20,0x40,0x40,0x3D,0x00,0x00 }, // ASCII - 106 |
| { 0x7F,0x10,0x28,0x44,0x00,0x00 }, // ASCII - 107 |
| { 0x00,0x41,0x7F,0x40,0x00,0x00 }, // ASCII - 108 |
| { 0x7C,0x04,0x78,0x04,0x78,0x00 }, // ASCII - 109 |
| { 0x7C,0x08,0x04,0x04,0x78,0x00 }, // ASCII - 110 |
| { 0x38,0x44,0x44,0x44,0x38,0x00 }, // ASCII - 111 |
| { 0xFC,0x18,0x24,0x24,0x18,0x00 }, // ASCII - 112 |
| { 0x18,0x24,0x24,0x18,0xFC,0x00 }, // ASCII - 113 |
| { 0x7C,0x08,0x04,0x04,0x08,0x00 }, // ASCII - 114 |
| { 0x48,0x54,0x54,0x54,0x24,0x00 }, // ASCII - 115 |
| { 0x04,0x04,0x3F,0x44,0x24,0x00 }, // ASCII - 116 |
| { 0x3C,0x40,0x40,0x20,0x7C,0x00 }, // ASCII - 117 |
| { 0x1C,0x20,0x40,0x20,0x1C,0x00 }, // ASCII - 118 |
| { 0x3C,0x40,0x30,0x40,0x3C,0x00 }, // ASCII - 119 |
| { 0x44,0x28,0x10,0x28,0x44,0x00 }, // ASCII - 120 |
| { 0x4C,0x90,0x90,0x90,0x7C,0x00 }, // ASCII - 121 |
| { 0x44,0x64,0x54,0x4C,0x44,0x00 }, // ASCII - 122 |
| { 0x00,0x08,0x36,0x41,0x00,0x00 }, // ASCII - 123 |
| { 0x00,0x00,0x77,0x00,0x00,0x00 }, // ASCII - 124 |
| { 0x00,0x41,0x36,0x08,0x00,0x00 }, // ASCII - 125 |
| { 0x02,0x01,0x02,0x04,0x02,0x00 }, // ASCII - 126 |
| { 0x3C,0x26,0x23,0x26,0x3C,0x00 }, // ASCII - 127 |
| { 0x1E,0xA1,0xA1,0x61,0x12,0x00 }, // ASCII - 128 80 |
| { 0x3A,0x40,0x40,0x20,0x7A,0x00 }, // ASCII - 129 |
| { 0x38,0x54,0x54,0x55,0x59,0x00 }, // ASCII - 130 |
| { 0x21,0x55,0x55,0x79,0x41,0x00 }, // ASCII - 131 |
| { 0x21,0x54,0x54,0x78,0x41,0x00 }, // ASCII - 132 |
| { 0x21,0x55,0x54,0x78,0x40,0x00 }, // ASCII - 133 |
| { 0x20,0x54,0x55,0x79,0x40,0x00 }, // ASCII - 134 |
| { 0x0C,0x1E,0x52,0x72,0x12,0x00 }, // ASCII - 135 |
| { 0x39,0x55,0x55,0x55,0x59,0x00 }, // ASCII - 136 |
| { 0x39,0x54,0x54,0x54,0x59,0x00 }, // ASCII - 137 |
| { 0x39,0x55,0x54,0x54,0x58,0x00 }, // ASCII - 138 |
| { 0x00,0x00,0x45,0x7C,0x41,0x00 }, // ASCII - 139 |
| { 0x00,0x02,0x45,0x7D,0x42,0x00 }, // ASCII - 140 |
| { 0x00,0x01,0x45,0x7C,0x40,0x00 }, // ASCII - 141 |
| // { 0xF0,0x29,0x24,0x29,0xF0,0x00 }, // ASCII - 142 Ä |
| { 0x79,0x14,0x12,0x14,0x79,0x00 }, // ASCII - 142 Ä korrigiert |
| { 0xF0,0x28,0x25,0x28,0xF0,0x00 }, // ASCII - 143 |
| { 0x7C,0x54,0x55,0x45,0x00,0x00 }, // ASCII - 144 90 |
| { 0x20,0x54,0x54,0x7C,0x54,0x44 }, // ASCII - 145 |
| { 0x7C,0x0A,0x09,0x7F,0x49,0x41 }, // ASCII - 146 |
| { 0x32,0x49,0x49,0x49,0x32,0x00 }, // ASCII - 147 |
| { 0x32,0x48,0x48,0x48,0x32,0x00 }, // ASCII - 148 |
| { 0x32,0x4A,0x48,0x48,0x30,0x00 }, // ASCII - 149 |
| { 0x3A,0x41,0x41,0x21,0x7A,0x00 }, // ASCII - 150 |
| { 0x3A,0x42,0x40,0x20,0x78,0x00 }, // ASCII - 151 |
| { 0x00,0x9D,0xA0,0xA0,0x7D,0x00 }, // ASCII - 152 |
| { 0x39,0x44,0x44,0x44,0x39,0x00 }, // ASCII - 153 |
| { 0x3D,0x40,0x40,0x40,0x3D,0x00 }, // ASCII - 154 |
| { 0x3C,0x24,0xFF,0x24,0x24,0x00 }, // ASCII - 155 |
| { 0x48,0x7E,0x49,0x43,0x66,0x00 }, // ASCII - 156 |
| { 0x2B,0x2F,0xFC,0x2F,0x2B,0x00 }, // ASCII - 157 |
| { 0xFF,0x09,0x29,0xF6,0x20,0x00 }, // ASCII - 158 |
| { 0xC0,0x88,0x7E,0x09,0x03,0x00 }, // ASCII - 159 |
| { 0x20,0x54,0x54,0x79,0x41,0x00 }, // ASCII - 160 |
| { 0x00,0x00,0x44,0x7D,0x41,0x00 }, // ASCII - 161 |
| { 0x30,0x48,0x48,0x4A,0x32,0x00 }, // ASCII - 162 |
| { 0x38,0x40,0x40,0x22,0x7A,0x00 }, // ASCII - 163 |
| { 0x00,0x7A,0x0A,0x0A,0x72,0x00 }, // ASCII - 164 |
| { 0x7D,0x0D,0x19,0x31,0x7D,0x00 }, // ASCII - 165 |
| { 0x26,0x29,0x29,0x2F,0x28,0x00 }, // ASCII - 166 |
| { 0x26,0x29,0x29,0x29,0x26,0x00 }, // ASCII - 167 |
| { 0x30,0x48,0x4D,0x40,0x20,0x00 }, // ASCII - 168 |
| { 0x38,0x08,0x08,0x08,0x08,0x00 }, // ASCII - 169 |
| { 0x08,0x08,0x08,0x08,0x38,0x00 }, // ASCII - 170 |
| { 0x2F,0x10,0xC8,0xAC,0xBA,0x00 }, // ASCII - 171 |
| { 0x2F,0x10,0x28,0x34,0xFA,0x00 }, // ASCII - 172 |
| { 0x00,0x00,0x7B,0x00,0x00,0x00 }, // ASCII - 173 |
| { 0x08,0x14,0x2A,0x14,0x22,0x00 }, // ASCII - 174 |
| { 0x22,0x14,0x2A,0x14,0x08,0x00 }, // ASCII - 175 |
| { 0xAA,0x00,0x55,0x00,0xAA,0x00 }, // ASCII - 176 |
| { 0xAA,0x55,0xAA,0x55,0xAA,0x55 }, // ASCII - 177 |
| { 0x55,0xAA,0x55,0xAA,0x55,0xAA }, // ASCII - 178 |
| { 0x00,0x00,0x00,0xFF,0x00,0x00 }, // ASCII - 179 |
| { 0x10,0x10,0x10,0xFF,0x00,0x00 }, // ASCII - 180 |
| { 0x14,0x14,0x14,0xFF,0x00,0x00 }, // ASCII - 181 |
| { 0x10,0x10,0xFF,0x00,0xFF,0x00 }, // ASCII - 182 |
| { 0x10,0x10,0xF0,0x10,0xF0,0x00 }, // ASCII - 183 |
| { 0x14,0x14,0x14,0xFC,0x00,0x00 }, // ASCII - 184 |
| { 0x14,0x14,0xF7,0x00,0xFF,0x00 }, // ASCII - 185 |
| { 0x00,0x00,0xFF,0x00,0xFF,0x00 }, // ASCII - 186 |
| { 0x14,0x14,0xF4,0x04,0xFC,0x00 }, // ASCII - 187 |
| { 0x14,0x14,0x17,0x10,0x1F,0x00 }, // ASCII - 188 |
| { 0x10,0x10,0x1F,0x10,0x1F,0x00 }, // ASCII - 189 |
| { 0x14,0x14,0x14,0x1F,0x00,0x00 }, // ASCII - 190 |
| { 0x10,0x10,0x10,0xF0,0x00,0x00 }, // ASCII - 191 |
| { 0x00,0x00,0x00,0x1F,0x10,0x10 }, // ASCII - 192 |
| { 0x10,0x10,0x10,0x1F,0x10,0x10 }, // ASCII - 193 |
| { 0x10,0x10,0x10,0xF0,0x10,0x10 }, // ASCII - 194 |
| { 0x00,0x00,0x00,0xFF,0x10,0x10 }, // ASCII - 195 |
| { 0x10,0x10,0x10,0x10,0x10,0x10 }, // ASCII - 196 |
| { 0x10,0x10,0x10,0xFF,0x10,0x10 }, // ASCII - 197 |
| { 0x00,0x00,0x00,0xFF,0x14,0x14 }, // ASCII - 198 |
| { 0x00,0x00,0xFF,0x00,0xFF,0x10 }, // ASCII - 199 |
| { 0x00,0x00,0x1F,0x10,0x17,0x14 }, // ASCII - 200 |
| { 0x00,0x00,0xFC,0x04,0xF4,0x14 }, // ASCII - 201 |
| { 0x14,0x14,0x17,0x10,0x17,0x14 }, // ASCII - 202 |
| { 0x14,0x14,0xF4,0x04,0xF4,0x14 }, // ASCII - 203 |
| { 0x00,0x00,0xFF,0x00,0xF7,0x14 }, // ASCII - 204 |
| { 0x14,0x14,0x14,0x14,0x14,0x14 }, // ASCII - 205 |
| { 0x14,0x14,0xF7,0x00,0xF7,0x14 }, // ASCII - 206 |
| { 0x14,0x14,0x14,0x17,0x14,0x14 }, // ASCII - 207 |
| { 0x10,0x10,0x1F,0x10,0x1F,0x10 }, // ASCII - 208 |
| { 0x14,0x14,0x14,0xF4,0x14,0x14 }, // ASCII - 209 |
| { 0x10,0x10,0xF0,0x10,0xF0,0x10 }, // ASCII - 210 |
| { 0x00,0x00,0x1F,0x10,0x1F,0x10 }, // ASCII - 211 |
| { 0x00,0x00,0x00,0x1F,0x14,0x14 }, // ASCII - 212 |
| { 0x00,0x00,0x00,0xFC,0x14,0x14 }, // ASCII - 213 |
| { 0x00,0x00,0xF0,0x10,0xF0,0x10 }, // ASCII - 214 |
| { 0x10,0x10,0xFF,0x10,0xFF,0x10 }, // ASCII - 215 |
| { 0x14,0x14,0x14,0xFF,0x14,0x14 }, // ASCII - 216 |
| { 0x10,0x10,0x10,0x1F,0x00,0x00 }, // ASCII - 217 |
| { 0x00,0x00,0x00,0xF0,0x10,0x10 }, // ASCII - 218 |
| { 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF }, // ASCII - 219 |
| { 0xF0,0xF0,0xF0,0xF0,0xF0,0xF0 }, // ASCII - 220 |
| { 0xFF,0xFF,0xFF,0x00,0x00,0x00 }, // ASCII - 221 |
| { 0x00,0x00,0x00,0xFF,0xFF,0xFF }, // ASCII - 222 |
| { 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F }, // ASCII - 223 |
| { 0x38,0x44,0x44,0x38,0x44,0x00 }, // ASCII - 224 |
| { 0x7C,0x2A,0x2A,0x3E,0x14,0x00 }, // ASCII - 225 |
| { 0x7E,0x02,0x02,0x06,0x06,0x00 }, // ASCII - 226 |
| { 0x02,0x7E,0x02,0x7E,0x02,0x00 }, // ASCII - 227 |
| { 0x63,0x55,0x49,0x41,0x63,0x00 }, // ASCII - 228 |
| { 0x38,0x44,0x44,0x3C,0x04,0x00 }, // ASCII - 229 |
| { 0x40,0x7E,0x20,0x1E,0x20,0x00 }, // ASCII - 230 |
| { 0x06,0x02,0x7E,0x02,0x02,0x00 }, // ASCII - 231 |
| { 0x99,0xA5,0xE7,0xA5,0x99,0x00 }, // ASCII - 232 |
| { 0x1C,0x2A,0x49,0x2A,0x1C,0x00 }, // ASCII - 233 |
| { 0x4C,0x72,0x01,0x72,0x4C,0x00 }, // ASCII - 234 |
| { 0x30,0x4A,0x4D,0x4D,0x30,0x00 }, // ASCII - 235 |
| { 0x30,0x48,0x78,0x48,0x30,0x00 }, // ASCII - 236 |
| { 0xBC,0x62,0x5A,0x46,0x3D,0x00 }, // ASCII - 237 |
| { 0x3E,0x49,0x49,0x49,0x00,0x00 }, // ASCII - 238 |
| { 0x7E,0x01,0x01,0x01,0x7E,0x00 }, // ASCII - 239 |
| { 0x2A,0x2A,0x2A,0x2A,0x2A,0x00 }, // ASCII - 240 |
| { 0x44,0x44,0x5F,0x44,0x44,0x00 }, // ASCII - 241 |
| { 0x40,0x51,0x4A,0x44,0x40,0x00 }, // ASCII - 242 |
| { 0x40,0x44,0x4A,0x51,0x40,0x00 }, // ASCII - 243 |
| { 0x00,0x00,0xFF,0x01,0x03,0x00 }, // ASCII - 244 |
| { 0xE0,0x80,0xFF,0x00,0x00,0x00 }, // ASCII - 245 |
| { 0x08,0x08,0x6B,0x6B,0x08,0x08 }, // ASCII - 246 |
| { 0x36,0x12,0x36,0x24,0x36,0x00 }, // ASCII - 247 |
| { 0x06,0x0F,0x09,0x0F,0x06,0x00 }, // ASCII - 248 |
| { 0x00,0x00,0x18,0x18,0x00,0x00 }, // ASCII - 249 |
| { 0x00,0x00,0x10,0x10,0x00,0x00 }, // ASCII - 250 |
| { 0x30,0x40,0xFF,0x01,0x01,0x00 }, // ASCII - 251 |
| { 0x00,0x1F,0x01,0x01,0x1E,0x00 }, // ASCII - 252 |
| { 0x00,0x19,0x1D,0x17,0x12,0x00 }, // ASCII - 253 |
| { 0x00,0x3C,0x3C,0x3C,0x3C,0x00 }, // ASCII - 254 |
| { 0x00,0x00,0x00,0x00,0x00,0x00 } // ASCII - 255 |
| }; |
| /************************ E n d o f F i l e ****************************/ |
| /Transportables_Koptertool/tags/V-0.1/MMT.aps |
|---|
| 0,0 → 1,0 |
| <AVRStudio><MANAGEMENT><ProjectName>MMT</ProjectName><Created>16-May-2008 00:42:21</Created><LastEdit>22-May-2008 20:56:53</LastEdit><ICON>241</ICON><ProjectType>0</ProjectType><Created>16-May-2008 00:42:21</Created><Version>4</Version><Build>4, 13, 0, 528</Build><ProjectTypeName>AVR GCC</ProjectTypeName></MANAGEMENT><CODE_CREATION><ObjectFile>default\MMT.elf</ObjectFile><EntryFile></EntryFile><SaveFolder>D:\Develop\MMT\</SaveFolder></CODE_CREATION><DEBUG_TARGET><CURRENT_TARGET>ICE50</CURRENT_TARGET><CURRENT_PART>ATmega32</CURRENT_PART><BREAKPOINTS></BREAKPOINTS><IO_EXPAND><HIDE>false</HIDE></IO_EXPAND><REGISTERNAMES><Register>R00</Register><Register>R01</Register><Register>R02</Register><Register>R03</Register><Register>R04</Register><Register>R05</Register><Register>R06</Register><Register>R07</Register><Register>R08</Register><Register>R09</Register><Register>R10</Register><Register>R11</Register><Register>R12</Register><Register>R13</Register><Register>R14</Register><Register>R15</Register><Register>R16</Register><Register>R17</Register><Register>R18</Register><Register>R19</Register><Register>R20</Register><Register>R21</Register><Register>R22</Register><Register>R23</Register><Register>R24</Register><Register>R25</Register><Register>R26</Register><Register>R27</Register><Register>R28</Register><Register>R29</Register><Register>R30</Register><Register>R31</Register></REGISTERNAMES><COM>Auto</COM><COMType>1</COMType><WATCHNUM>0</WATCHNUM><WATCHNAMES><Pane0></Pane0><Pane1></Pane1><Pane2></Pane2><Pane3></Pane3></WATCHNAMES><BreakOnTrcaeFull>0</BreakOnTrcaeFull></DEBUG_TARGET><Debugger><Triggers></Triggers></Debugger><AVRGCCPLUGIN><FILES><SOURCEFILE>base64.c</SOURCEFILE><SOURCEFILE>displ_val.c</SOURCEFILE><SOURCEFILE>display.c</SOURCEFILE><SOURCEFILE>F8X6.c</SOURCEFILE><SOURCEFILE>lcd.c</SOURCEFILE><SOURCEFILE>main.c</SOURCEFILE><SOURCEFILE>menu.c</SOURCEFILE><SOURCEFILE>motortest.c</SOURCEFILE><SOURCEFILE>parameter.c</SOURCEFILE><SOURCEFILE>rs232.c</SOURCEFILE><SOURCEFILE>timer.c</SOURCEFILE><SOURCEFILE>settings.c</SOURCEFILE><SOURCEFILE>debug.c</SOURCEFILE><HEADERFILE>base64.h</HEADERFILE><HEADERFILE>displ_val.h</HEADERFILE><HEADERFILE>display.h</HEADERFILE><HEADERFILE>font8x6.h</HEADERFILE><HEADERFILE>lcd.h</HEADERFILE><HEADERFILE>main.h</HEADERFILE><HEADERFILE>menu.h</HEADERFILE><HEADERFILE>motortest.h</HEADERFILE><HEADERFILE>parameter.h</HEADERFILE><HEADERFILE>rs232.h</HEADERFILE><HEADERFILE>timer.h</HEADERFILE><HEADERFILE>settings.h</HEADERFILE><HEADERFILE>debug.h</HEADERFILE></FILES><CONFIGS><CONFIG><NAME>default</NAME><USESEXTERNALMAKEFILE>NO</USESEXTERNALMAKEFILE><EXTERNALMAKEFILE></EXTERNALMAKEFILE><PART>atmega32</PART><HEX>1</HEX><LIST>0</LIST><MAP>0</MAP><OUTPUTFILENAME>MMT.elf</OUTPUTFILENAME><OUTPUTDIR>default\</OUTPUTDIR><ISDIRTY>1</ISDIRTY><OPTIONS/><INCDIRS/><LIBDIRS/><LIBS/><LINKOBJECTS/><OPTIONSFORALL>-Wall -gdwarf-2 -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums</OPTIONSFORALL><LINKEROPTIONS></LINKEROPTIONS><SEGMENTS/></CONFIG></CONFIGS><LASTCONFIG>default</LASTCONFIG><USES_WINAVR>1</USES_WINAVR><GCC_LOC>D:\WinAVR-20070525\bin\avr-gcc.exe</GCC_LOC><MAKE_LOC>D:\WinAVR-20070525\utils\bin\make.exe</MAKE_LOC></AVRGCCPLUGIN><IOView><usergroups/></IOView><Files><File00000><FileId>00000</FileId><FileName>lcd.c</FileName><Status>1</Status></File00000><File00001><FileId>00001</FileId><FileName>settings.c</FileName><Status>1</Status></File00001><File00002><FileId>00002</FileId><FileName>settings.h</FileName><Status>1</Status></File00002><File00003><FileId>00003</FileId><FileName>main.h</FileName><Status>1</Status></File00003><File00004><FileId>00004</FileId><FileName>lcd.h</FileName><Status>1</Status></File00004><File00005><FileId>00005</FileId><FileName>main.c</FileName><Status>1</Status></File00005><File00006><FileId>00006</FileId><FileName>menu.c</FileName><Status>1</Status></File00006></Files><Workspace><File00000><Position>270 211 1117 677</Position><LineCol>26 0</LineCol></File00000><File00001><Position>312 267 1159 733</Position><LineCol>9 0</LineCol></File00001><File00002><Position>179 65 1188 768</Position><LineCol>4 0</LineCol></File00002><File00003><Position>211 128 1058 594</Position><LineCol>43 0</LineCol></File00003><File00004><Position>255 186 1102 652</Position><LineCol>27 0</LineCol></File00004><File00005><Position>277 215 1124 681</Position><LineCol>88 0</LineCol></File00005><File00006><Position>188 71 1197 774</Position><LineCol>0 0</LineCol><State>Maximized</State></File00006></Workspace><Events><Bookmarks></Bookmarks></Events><Trace><Filters></Filters></Trace></AVRStudio> |
| /Transportables_Koptertool/tags/V-0.1/base64.c |
|---|
| 0,0 → 1,116 |
| #include <avr/io.h> |
| #include <inttypes.h> |
| #include <stdlib.h> |
| #include <avr/pgmspace.h> |
| #include "main.h" |
| #include "rs232.h" |
| #include "base64.h" |
| #include "lcd.h" |
| uint8_t r_buffer[128]; // Dieser Puffer enthält die Rohdaten (kodiert) |
| uint8_t p_buffer[128]; // Dieser Puffer enthält die Daten im Klartext |
| //struct str_DebugIn *p_buffer; |
| uint8_t get_message() // Liest eine komplette Übertragung und dekodiert sie |
| { |
| uint8_t index, comm; |
| timer = 20; // Timer für Timeout |
| while ((RS232_get() != '#') && (timer > 0)); // Warten auf Start-Zeichen # |
| if (timer > 0) // Falls kein Timeout auftrat |
| { |
| index = 0; // Die Rohdaten in r_buffer einlesen |
| do |
| { |
| comm = RS232_get(); |
| r_buffer[index++] = comm; |
| if (index > 127) // Schutz vor Puffer-Überlauf |
| index = 127; |
| } |
| while (comm != 0x0D); // ... bis End-Signal = 0x0D kommt... |
| base64_decode(index); // Die base64-kodierten Rohdaten umwandeln |
| return 0; // kein Fehler aufgetreten |
| } |
| else |
| { |
| return 1; // Fehler aufgetreten |
| } |
| } |
| uint8_t base64_decode(uint8_t number) // Wandelt die base64-Rohdaten in lesbare Daten um |
| { |
| uint8_t p,q; |
| uint8_t a,b,c,d; |
| p = 2; |
| q = 0; |
| while (p < number) |
| { |
| a = r_buffer[p + 0] - 61; |
| b = r_buffer[p + 1] - 61; |
| c = r_buffer[p + 2] - 61; |
| d = r_buffer[p + 3] - 61; |
| p += 4; |
| p_buffer[q + 0] = (a << 2) | (b >> 4); // gespeichert werden die Daten in p_buffer |
| p_buffer[q + 1] = ((b & 0x0F) << 4) | (c >> 2); |
| p_buffer[q + 2] = ((c & 0x03) << 6) | d; |
| q += 3; |
| } |
| return q; // Rückgabe der Anzahl der Datenbytes |
| } |
| void base64_send(uint8_t number) // Sendet Daten zur Flight-Control |
| { // Die Daten werden in p_buffer erwartet, umcodiert und gesendet |
| uint8_t bpointer,spointer; |
| uint8_t x,y,z,a; |
| uint16_t checksum; |
| r_buffer[0] = p_buffer[0]; |
| r_buffer[1] = p_buffer[1]; |
| r_buffer[2] = p_buffer[2]; |
| bpointer = 3; |
| spointer = 3; |
| while (spointer < number) |
| { |
| x = p_buffer[spointer]; |
| y = p_buffer[spointer + 1]; |
| z = p_buffer[spointer + 2]; |
| spointer += 3; |
| r_buffer[bpointer + 0] = (x >> 2) + 61; |
| r_buffer[bpointer + 1] = (((x & 0x03) << 4) | ((y & 0xF0) >> 4)) + 61; |
| r_buffer[bpointer + 2] = (((y & 0x0F) << 2) | ((z & 0xC0) >> 6)) + 61; |
| r_buffer[bpointer + 3] = (z & 0x3F) + 61; |
| bpointer += 4; |
| } |
| checksum = 0; |
| for(a=0;a<bpointer;a++) |
| checksum += r_buffer[a]; |
| checksum %= 4096; |
| r_buffer[bpointer] = (checksum / 64) + 61; |
| r_buffer[bpointer + 1] = (checksum % 64) + 61; |
| r_buffer[bpointer + 2] = 13; |
| r_buffer[bpointer + 3] = 0; |
| bpointer += 3; |
| for(a=0;a<bpointer;a++) |
| RS232_send(r_buffer[a]); |
| } |
| /Transportables_Koptertool/tags/V-0.1/base64.h |
|---|
| 0,0 → 1,12 |
| #ifndef base64_h |
| #define base64_h |
| uint8_t base64_decode(uint8_t number); |
| void base64_send(uint8_t number); |
| uint8_t get_message(void); |
| uint8_t p_buffer[128]; // Dieser Puffer enthält die Daten im Klartext |
| uint8_t r_buffer[128]; // Dieser Puffer enthält die Rohdaten (kodiert) |
| #endif |
| /Transportables_Koptertool/tags/V-0.1/debug.c |
|---|
| 0,0 → 1,228 |
| // debug Data |
| #include <avr/io.h> |
| #include <inttypes.h> |
| #include <stdlib.h> |
| #include <avr/pgmspace.h> |
| #include "main.h" |
| #include "lcd.h" |
| #include "rs232.h" |
| #include "base64.h" |
| #include "parameter.h" |
| #include "menu.h" |
| #include "debug.h" |
| uint8_t r_buffer[128]; // Dieser Puffer enthält die Rohdaten (kodiert) |
| //uint8_t p_buffer[128]; // Dieser Puffer enthält die Daten im Klartext |
| //struct str_DebugIn *p_buffer; |
| uint8_t base64_decode_debug(unsigned char *ptrOut, uint8_t number) // Wandelt die base64-Rohdaten in lesbare Daten um |
| { |
| uint8_t p,q; |
| uint8_t a,b,c,d; |
| p = 2; |
| q = 0; |
| while (p < number) |
| { |
| a = r_buffer[p + 0] - 61; |
| b = r_buffer[p + 1] - 61; |
| c = r_buffer[p + 2] - 61; |
| d = r_buffer[p + 3] - 61; |
| p += 4; |
| ptrOut[q + 0] = (a << 2) | (b >> 4); // gespeichert werden die Daten in p_buffer |
| ptrOut[q + 1] = ((b & 0x0F) << 4) | (c >> 2); |
| ptrOut[q + 2] = ((c & 0x03) << 6) | d; |
| q += 3; |
| } |
| return q; // Rückgabe der Anzahl der Datenbytes |
| } |
| uint8_t get_message_debug() // Liest eine komplette Übertragung und dekodiert sie |
| { |
| uint8_t index, comm; |
| timer = 20; // Timer für Timeout |
| while ((RS232_get() != '#') && (timer > 0)); // Warten auf Start-Zeichen # |
| if (timer > 0) // Falls kein Timeout auftrat |
| { |
| index = 0; // Die Rohdaten in r_buffer einlesen |
| do |
| { |
| comm = RS232_get(); |
| r_buffer[index++] = comm; |
| if (index > 127) // Schutz vor Puffer-Überlauf |
| index = 127; |
| } |
| while (comm != 0x0D); // ... bis End-Signal = 0x0D kommt... |
| base64_decode_debug((unsigned char *) &DebugIn, index); // Die base64-kodierten Rohdaten umwandeln |
| return 0; // kein Fehler aufgetreten |
| } |
| else |
| { |
| return 1; // Fehler aufgetreten |
| } |
| } |
| uint8_t read_debug(uint8_t command) // |
| { |
| uint8_t timeout; |
| timeout = 0; |
| p_buffer[0] = '#'; // Debug-Daten anfordern |
| p_buffer[1] = 'a'; |
| p_buffer[2] = 'c'; |
| p_buffer[3] = command; |
| p_buffer[4] = 0; |
| p_buffer[5] = 0; |
| base64_send(6); |
| do // warten, bis die Parameter gesendet werden |
| { |
| if (get_message_debug() == 1) |
| timeout = 30; |
| timeout ++; |
| } |
| while ((r_buffer[1] != 'D') && (timeout < 30)); |
| if (timeout >= 30) |
| return 1; |
| else |
| return 0; |
| } |
| #define isminus 65536 / 2 |
| void decimal_int (unsigned int data, uint8_t *text) // wandelt Wert in rechtsbündigen Text um |
| { |
| int sign = 0; |
| text[0] = 0x20; // (schneller/kleiner als printf()) |
| if (data > isminus) |
| { |
| data = 65536 - data; |
| sign = 1; |
| text[0] = '-'; |
| } |
| text[1] = data/10000; |
| data -= (text[1] * 10000); |
| text[2] = data/1000; |
| data -= (text[2] *1000); |
| text[3] = data/100; |
| data -= (text[3] * 100); |
| text[4] = data/10; |
| data -= (text[4] *10); |
| text[5] = data + 0x30; |
| text[1] += 0x30; |
| text[2] += 0x30; |
| text[3] += 0x30; |
| text[4] += 0x30; |
| if (text[1] == 0x30) |
| { |
| text[0] = 0x20; |
| if (sign == 1) text[1] = '-'; else text[1] = 0x20; |
| if (text[2] == 0x30) |
| { |
| text[1] = 0x20; |
| if (sign == 1) text[2] = '-'; else text[2] = 0x20; |
| if (text[3] == 0x30) |
| { |
| text[2] = 0x20; |
| if (sign == 1) text[3] = '-'; else text[3] = 0x20; |
| if (text[4] == 0x30) |
| { |
| text[3] = 0x20; |
| if (sign == 1) text[4] = '-'; else text[4] = 0x20; |
| } |
| } |
| } |
| } |
| // if (sign == 1) text[0] = '-'; |
| text[6] = 0x00; |
| } |
| void display_debug(void) |
| { |
| uint8_t line; |
| uint8_t zeile; |
| uint8_t text[10]; |
| lcd_cls(); |
| zeile = 0; |
| lcd_printp(PSTR("Debug-Display"),0); |
| do |
| { |
| while (key != 0x00); |
| if (read_debug(0) == 1) |
| { |
| lcd_printp(PSTR("\r\nTimeout!"),0); |
| timer = 200; |
| while (timer > 0); |
| break; |
| } |
| else |
| { |
| line = p_buffer[2]; |
| text[0] = line; |
| text[1] = 0x00; |
| lcd_print_at(15,0,text,0); |
| //lcd_print_at(0,++zeile,p_buffer,0); |
| decimal_int(DebugIn.Analog[0],text); |
| lcd_print_at(0,1,"Nick",0); |
| lcd_print_at(10,1,text,0); |
| decimal_int(DebugIn.Analog[1],text); |
| lcd_print_at(0,2,"Roll",0); |
| lcd_print_at(10,2,text,0); |
| decimal_int(DebugIn.Analog[2],text); |
| lcd_print_at(0,3,"ACC Nick",0); |
| lcd_print_at(10,3,text,0); |
| decimal_int(DebugIn.Analog[3],text); |
| lcd_print_at(0,4,"ACC Roll",0); |
| lcd_print_at(10,4,text,0); |
| decimal_int(DebugIn.Analog[4],text); |
| lcd_print_at(0,5,"Gier",0); |
| lcd_print_at(10,5,text,0); |
| decimal_int(DebugIn.Analog[5],text); |
| lcd_print_at(0,6,"ACC",0); |
| lcd_print_at(10,6,text,0); |
| decimal_int(DebugIn.Analog[9],text); |
| lcd_print_at(0,7,"Spannung",0); |
| lcd_print_at(10,7,text,0); |
| // decimal_int(DebugIn.Analog[zeile],text); |
| // lcd_print_at(0,++zeile,text,0); |
| // decimal(p_buffer[zeile],text); |
| // lcd_print_at(0,++zeile,text,0); |
| if (zeile > 5) zeile = 0; |
| timer = 10; |
| while(timer > 0); |
| // if (key == 0x01) |
| // read_debug(1); |
| // if (key == 0x02) |
| // read_debug(2); |
| } |
| } |
| while (key != 0x04); |
| } |
| /Transportables_Koptertool/tags/V-0.1/debug.h |
|---|
| 0,0 → 1,15 |
| #ifndef debug_h |
| #define debug_h |
| void display_debug(void); |
| struct str_DebugIn |
| { |
| unsigned char Digital[2]; |
| unsigned int Analog[32]; // Debugwerte |
| }; |
| struct str_DebugIn DebugIn; |
| //extern struct str_DebugIn *p_buffer; |
| #endif |
| /Transportables_Koptertool/tags/V-0.1/default/MMT.eep |
|---|
| 0,0 → 1,65 |
| :1000000000000000000000000000000000000000F0 |
| :1000100000000000000000000000000000000000E0 |
| :1000200000000000000000000000000000000000D0 |
| :1000300000000000000000000000000000000000C0 |
| :1000400000000000000000000000000000000000B0 |
| :1000500000000000000000000000000000000000A0 |
| :100060000000000000000000000000000000000090 |
| :100070000000000000000000000000000000000080 |
| :100080000000000000000000000000000000000070 |
| :100090000000000000000000000000000000000060 |
| :1000A0000000000000000000000000000000000050 |
| :1000B0000000000000000000000000000000000040 |
| :1000C0000000000000000000000000000000000030 |
| :1000D0000000000000000000000000000000000020 |
| :1000E0000000000000000000000000000000000010 |
| :1000F0000000000000000000000000000000000000 |
| :1001000000000000000000000000000000000000EF |
| :1001100000000000000000000000000000000000DF |
| :1001200000000000000000000000000000000000CF |
| :1001300000000000000000000000000000000000BF |
| :1001400000000000000000000000000000000000AF |
| :10015000000000000000000000000000000000009F |
| :10016000000000000000000000000000000000008F |
| :10017000000000000000000000000000000000007F |
| :10018000000000000000000000000000000000006F |
| :10019000000000000000000000000000000000005F |
| :1001A000000000000000000000000000000000004F |
| :1001B000000000000000000000000000000000003F |
| :1001C000000000000000000000000000000000002F |
| :1001D000000000000000000000000000000000001F |
| :1001E000000000000000000000000000000000000F |
| :1001F00000000000000000000000000000000000FF |
| :1002000000000000000000000000000000000000EE |
| :1002100000000000000000000000000000000000DE |
| :1002200000000000000000000000000000000000CE |
| :1002300000000000000000000000000000000000BE |
| :1002400000000000000000000000000000000000AE |
| :10025000000000000000000000000000000000009E |
| :10026000000000000000000000000000000000008E |
| :10027000000000000000000000000000000000007E |
| :10028000000000000000000000000000000000006E |
| :10029000000000000000000000000000000000005E |
| :1002A000000000000000000000000000000000004E |
| :1002B000000000000000000000000000000000003E |
| :1002C000000000000000000000000000000000002E |
| :1002D000000000000000000000000000000000001E |
| :1002E000000000000000000000000000000000000E |
| :1002F00000000000000000000000000000000000FE |
| :1003000000000000000000000000000000000000ED |
| :1003100000000000000000000000000000000000DD |
| :1003200000000000000000000000000000000000CD |
| :1003300000000000000000000000000000000000BD |
| :1003400000000000000000000000000000000000AD |
| :10035000000000000000000000000000000000009D |
| :10036000000000000000000000000000000000008D |
| :10037000000000000000000000000000000000007D |
| :10038000000000000000000000000000000000006D |
| :10039000000000000000000000000000000000005D |
| :1003A000000000000000000000000000000000004D |
| :1003B000000000000000000000000000000000003D |
| :1003C000000000000000000000000000000000002D |
| :1003D000000000000000000000000000000000001D |
| :1003E000000000000000000000000000000000000D |
| :1003F00000000000000000000000000000000000FD |
| :00000001FF |
| /Transportables_Koptertool/tags/V-0.1/default/MMT.elf |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /Transportables_Koptertool/tags/V-0.1/default/MMT_Mega32_7.hex |
|---|
| 0,0 → 1,716 |
| :100000000C94C1060C94DE060C94DE060C94DE06FD |
| :100010000C94DE060C94DE060C94DE060C94DE06D0 |
| :100020000C94DE060C94DE060C94CA120C94DE06C8 |
| :100030000C94DE060C9470120C94DE060C94DE0612 |
| :100040000C94DE060C94DE060C94DE060C94DE06A0 |
| :100050000C94DE06202020202020000D0A54696D1B |
| :10006000656F75742100446973706C6179000000DC |
| :10007000000000003E5B4F5B3E003E6B4F6B3E005E |
| :100080001C3E7C3E1C00183C7E3C18001C577D57D3 |
| :100090001C001C5E7F5E1C0000183C180000FFE77F |
| :1000A000C3E7FF00001824180000FFE7DBE7FF00AC |
| :1000B00030483A060E00262979292600407F05059A |
| :1000C0000700407F05253F005A3CE73C5A007F3E31 |
| :1000D0001C1C0800081C1C3E7F0014227F221400F8 |
| :1000E0005F5F005F5F0006097F017F000066899502 |
| :1000F0006A0060606060606094A2FFA294000804DF |
| :100100007E04080010207E20100008082A1C080029 |
| :10011000081C2A0808001E10101010000C1E0C1ECF |
| :100120000C0030383E383000060E3E0E060000004F |
| :100130000000000000005F00000000070007000052 |
| :10014000147F147F1400242A7F2A120023130864CA |
| :100150006200364956205000000807030000001CCA |
| :10016000224100000041221C00002A1C7F1C2A00A2 |
| :1001700008083E08080000807030000008080808E1 |
| :1001800008000000606000002010080402003E51DA |
| :1001900049453E0000427F400000724949494600FF |
| :1001A0002141494D33001814127F10002745454561 |
| :1001B00039003C4A494931004121110907003649BB |
| :1001C00049493600464949291E0000001400000034 |
| :1001D00000403400000000081422410014141414DC |
| :1001E00014000041221408000201590906003E4192 |
| :1001F0005D594E007C1211127C007F49494936003E |
| :100200003E41414122007F4141413E007F494949F1 |
| :1002100041007F09090901003E41415173007F08F7 |
| :1002200008087F0000417F4100002040413F01005D |
| :100230007F08142241007F40404040007F021C02A2 |
| :100240007F007F0408107F003E4141413E007F094E |
| :10025000090906003E4151215E007F091929460027 |
| :1002600026494949320003017F0103003F404040D5 |
| :100270003F001F2040201F003F4038403F006314D4 |
| :10028000081463000304780403006159494D4300D6 |
| :10029000007F41414100020408102000004141411B |
| :1002A0007F0004020102040040404040400000037F |
| :1002B000070800002054547840007F284444380048 |
| :1002C000384444442800384444287F003854545467 |
| :1002D000180000087E09020018A4A49C78007F087A |
| :1002E0000404780000447D4000002040403D0000B0 |
| :1002F0007F102844000000417F4000007C04780407 |
| :1003000078007C0804047800384444443800FC1821 |
| :100310002424180018242418FC007C080404080075 |
| :1003200048545454240004043F4424003C404020DA |
| :100330007C001C2040201C003C4030403C004428F5 |
| :10034000102844004C9090907C004464544C44002D |
| :100350000008364100000000770000000041360828 |
| :1003600000000201020402003C2623263C001EA1DC |
| :10037000A16112003A4040207A0038545455590087 |
| :100380002155557941002154547841002155547824 |
| :1003900040002054557940000C1E5272120039550D |
| :1003A000555559003954545459003955545458002E |
| :1003B0000000457C41000002457D42000001457C73 |
| :1003C0004000791412147900F0282528F0007C549C |
| :1003D000554500002054547C54447C0A097F49410F |
| :1003E000324949493200324848483200324A484886 |
| :1003F00030003A4141217A003A4240207800009D85 |
| :10040000A0A07D003944444439003D4040403D00B7 |
| :100410003C24FF242400487E494366002B2FFC2FF8 |
| :100420002B00FF0929F62000C0887E090300205414 |
| :10043000547941000000447D41003048484A320070 |
| :10044000384040227A00007A0A0A72007D0D193184 |
| :100450007D002629292F2800262929292600304811 |
| :100460004D4020003808080808000808080838002F |
| :100470002F10C8ACBA002F102834FA0000007B00FF |
| :10048000000008142A14220022142A140800AA00CA |
| :100490005500AA00AA55AA55AA5555AA55AA55AA63 |
| :1004A000000000FF0000101010FF0000141414FFE3 |
| :1004B00000001010FF00FF001010F010F0001414E6 |
| :1004C00014FC00001414F700FF000000FF00FF0000 |
| :1004D0001414F404FC00141417101F0010101F1043 |
| :1004E0001F001414141F0000101010F00000000072 |
| :1004F000001F10101010101F1010101010F010100E |
| :10050000000000FF1010101010101010101010FF3D |
| :100510001010000000FF14140000FF00FF10000086 |
| :100520001F1017140000FC04F414141417101714EF |
| :100530001414F404F4140000FF00F7141414141439 |
| :1005400014141414F700F7141414141714141010BE |
| :100550001F101F10141414F414141010F010F010C5 |
| :1005600000001F101F100000001F1414000000FCEA |
| :1005700014140000F010F0101010FF10FF101414ED |
| :1005800014FF14141010101F0000000000F01010D1 |
| :10059000FFFFFFFFFFFFF0F0F0F0F0F0FFFFFF00C4 |
| :1005A0000000000000FFFFFF0F0F0F0F0F0F384478 |
| :1005B000443844007C2A2A3E14007E0202060600CB |
| :1005C000027E027E02006355494163003844443C88 |
| :1005D0000400407E201E200006027E02020099A533 |
| :1005E000E7A599001C2A492A1C004C7201724C0094 |
| :1005F000304A4D4D3000304878483000BC625A4691 |
| :100600003D003E49494900007E0101017E002A2A41 |
| :100610002A2A2A0044445F44440040514A4440008E |
| :1006200040444A5140000000FF010300E080FF0009 |
| :10063000000008086B6B0808361236243600060FD7 |
| :10064000090F06000000181800000000101000003C |
| :100650003040FF010100001F01011E0000191D179D |
| :100660001200003C3C3C3C000000000000004D6FCC |
| :1006700064206279204D696B656C6A6F2030352F7C |
| :1006800030380053657474696E67730D0A004465F1 |
| :1006900062756720446174656E0D0A004D6F746F5A |
| :1006A00072746573740D0A00506172616D657465D2 |
| :1006B000720D0A000D0A446973706C61790D0A00AD |
| :1006C00048617570746D656EFC2842455441205632 |
| :1006D000302E31290D0A002A002000546173746500 |
| :1006E000206472FC636B656E0D0A00436F6E666971 |
| :1006F0006720202020004368616E6E656C732020A7 |
| :1007000000537469636B202020202000486F6568C7 |
| :10071000652020202020004779726F202020202093 |
| :1007200020004C6F6F70696E672020200043616D60 |
| :100730006572612020202000536F6E7374696765B5 |
| :100740007320005573657220202020202000436F05 |
| :1007500075706C696E67202000436F6E666967284C |
| :10076000322920004C6F6F70696E677365740002E8 |
| :10077000020202020202020004040404040403034D |
| :1007800003080808080505080808000509090909FB |
| :100790000707070707070606060A0A0606050505EE |
| :1007A0000909090900070B0B0B0B0C0C0C0C0C0CAA |
| :1007B0000C0C0108020108020108020108020108EC |
| :1007C0000201080201080201080200000000FF0403 |
| :1007D00000FF0400FF0400FF0400320400FF0400D7 |
| :1007E000060300400300140300200821FA08003229 |
| :1007F0000800FF0800000500000500FA0800FA08DC |
| :1008000000FA0800010000FF0500FF0900FF0900D1 |
| :10081000FF0900FF0900FF0700FA0700FA0700FAC6 |
| :100820000700190700FF0600FA0600FA0600FF0A93 |
| :1008300000FF0A00FA0600FA0600FA0500FA0500B1 |
| :10084000FF0500FF0900FF0900FF0900FF09000084 |
| :10085000010001070000000000000000000000008F |
| :100860000000000000000000000000000000000088 |
| :100870000000000000000000004C6F6F70207570D9 |
| :100880002020202020202020004C6F6F7020646FDB |
| :10089000776E092020202000004C6F6F70206C655F |
| :1008A0006674202020202020004C6F6F7020726919 |
| :1008B00067687420202020200048F668656E726505 |
| :1008C000676C6572202020200048F668656E7363AF |
| :1008D00068616C74657220200048656164686F6CA3 |
| :1008E0006409090000000000004B6F6D70617373B4 |
| :1008F0000909000000000000004B6F6D7061737308 |
| :1009000046697809090000000047505309090900A9 |
| :1009100000000000000000000041636873656E6B1A |
| :100920006F70706C756E67200044726568726174D8 |
| :100930006509090000000000004E69636B2020205B |
| :10094000202020202020202000526F6C6C202020AE |
| :1009500020202020202020200047617320202020FC |
| :1009600020202020202020200047696572090909E5 |
| :10097000000000000000000000506F746931090998 |
| :10098000090000000000000000506F74693209097E |
| :10099000090000000000000000506F74693309096D |
| :1009A000090000000000000000506F74693409095C |
| :1009B000090000000000000000436F6E66696709CF |
| :1009C000090900000000000000486F6568655F4D80 |
| :1009D000696E476173202020004C756674647275DF |
| :1009E000636B5F4420202020004D6178486F65686C |
| :1009F000652020202020202000486F6568655F501A |
| :100A0000202020202020202000486F6568655F5648 |
| :100A1000657273746165726B00486F6568655F41EC |
| :100A200043435F5769726B2E00537469636B5F5069 |
| :100A3000202020202020202000537469636B5F4415 |
| :100A4000202020202020202000476965725F502050 |
| :100A50002020202020202020004761735F4D696EF8 |
| :100A60002020202020202020004761735F4D6178E6 |
| :100A70002020202020202020004779726F416363CE |
| :100A800046616B746F720900004B6F6D7061737318 |
| :100A90005769726B756E6720004779726F5F5020DF |
| :100AA0000909000000000000004779726F5F4909E2 |
| :100AB000090900000000000000556E746572737033 |
| :100AC000616E6E756E672020004E6F74476173090A |
| :100AD0000909000000000000004E6F744761735A5E |
| :100AE00065697420202020200055666F417573725F |
| :100AF00069636874756E672000495F46616B746F47 |
| :100B000072202020202020200055736572506172D1 |
| :100B1000616D310909000000005573657250617202 |
| :100B2000616D3209090000000055736572506172F1 |
| :100B3000616D3309090000000055736572506172E0 |
| :100B4000616D34090900000000536572766F4E69CB |
| :100B5000636B4374726C090000536572766F4E6963 |
| :100B6000636B436F6D70090000536572766F4E6959 |
| :100B7000636B4D696E09000000536572766F4E69B4 |
| :100B8000636B4D617809000000536572766F4E69A2 |
| :100B9000636B526566727368004C6F6F7047617368 |
| :100BA0004C696D6974090000004C6F6F7054687275 |
| :100BB0006573686F6C640900004C6F6F70487973DF |
| :100BC000746572657365090000416368734B6F70EB |
| :100BD000706C756E67090000004163687347656754 |
| :100BE000656E4B6F70706C2E0057696E6B6C556D37 |
| :100BF0007363686C4E69636B0057696E6B6C556DFF |
| :100C00007363686C526F6C6C004779726F416363F9 |
| :100C10004162676C656963680044726966746B6FF2 |
| :100C20006D700909000000000044796E616D696310 |
| :100C300053746162696C69740055736572506172B6 |
| :100C4000616D3509090000000055736572506172CD |
| :100C5000616D3609090000000055736572506172BC |
| :100C6000616D3709090000000055736572506172AB |
| :100C7000616D380909000000004C6F6F70436F6EA2 |
| :100C8000666967090900000000536572766F4E6956 |
| :100C9000636B436F6D70496E000D0A4E6963687433 |
| :100CA000206765737065696368657274000D0A502A |
| :100CB0006172616D657465722067657370656963E3 |
| :100CC00068657274000D0A2D2D2D3E005061726111 |
| :100CD0006D657465722073706569636865726E3FD7 |
| :100CE0000D0A20206A610D0A20206E65696E00548D |
| :100CF000696D656F75740020353A0D0A0020343A2D |
| :100D00000D0A0020333A0D0A0020323A0D0A002065 |
| :100D1000313A0D0A004C61646520506172616D6565 |
| :100D20007465720D0A002D002D002D004578697440 |
| :100D30000D0A00526563687465636B0D0A004C69A7 |
| :100D40006E69650D0A004F7269656E74696572752A |
| :100D50006E670D0A000D0A0045696E7374656C6C50 |
| :100D6000756E67656E3A0D0A000D0A54696D656F00 |
| :100D70007574210044656275672D446973706C61F8 |
| :100D8000790011241FBECFE5D8E0DEBFCDBF10E053 |
| :100D9000A0E6B0E0E8E7FCE202C005900D92AE38B4 |
| :100DA000B107D9F715E0AEE8B0E001C01D92A83F49 |
| :100DB000B107E1F70E94DC0D0C943B160C94000087 |
| :100DC000782F52E060E026C0E52FFF27EC5EFA4F57 |
| :100DD00021812D5332813D5343814D535C5FDC01B2 |
| :100DE000AF56BB4F80818D53880F880F922F9295FD |
| :100DF0009F70892B8C932295207F832F86958695D3 |
| :100E0000282BFD0121833295330F330F307C342B97 |
| :100E100032836D5F862F99275717B0F208950F938D |
| :100E20001F93B82F809191048093140580919204B0 |
| :100E3000809315058091930480931605A3E073E0D9 |
| :100E400035C0E72FFF27EF56FB4F8081418162813C |
| :100E50007D5FEA2FFF27EC5EFA4F282F2695269517 |
| :100E6000235C2083552799278370907024E0880F96 |
| :100E7000991F2A95E1F79A0104E0369527950A957E |
| :100E8000E1F7822B835C81834F705070440F551FB4 |
| :100E9000440F551F862F8295869586958370842BE7 |
| :100EA000835C82836F73635C6383AC5F7B1748F200 |
| :100EB00090E020E030E008C0E92FFF27EC5EFA4F19 |
| :100EC0008081280F311D9F5F9A17B1F73F70EA2F7D |
| :100ED000FF27EC5EFA4FC90136E0969587953A9563 |
| :100EE000E1F7835C80832F73235C21838DE0828311 |
| :100EF00013820A2F0D5F10E008C0E12FFF27EC5E80 |
| :100F0000FA4F80810E94BC121F5F1017B1F71F912A |
| :100F10000F9108951F9384E1809397050E94971283 |
| :100F2000833221F0809197058823C1F7809197053E |
| :100F3000882319F481E090E017C00E9497128093F3 |
| :100F4000140511E00AC00E949712E12FFF27EC5E02 |
| :100F5000FA4F80831F5F17FD1FE78D30A1F7812FA8 |
| :100F60000E94E00680E090E01F9108951F93CF93C8 |
| :100F7000DF93CDB7DEB761970FB6F894DEBF0FBE33 |
| :100F8000CDBF182F83E28093910481E68093920471 |
| :100F900080939304109394041092950410929604F5 |
| :100FA00086E00E940F070E948A0780911505813410 |
| :100FB000D1F7E1E9F4E0DE01119681918D9384E0AF |
| :100FC000E13AF807D1F7198A177020E0AE014F5FB8 |
| :100FD0005F4F612F80E00E94DA0A61960FB6F894A5 |
| :100FE000DEBF0FBECDBFDF91CF911F9108959F92BD |
| :100FF000AF92BF92CF92DF92EF92FF920F931F9327 |
| :10100000CF93DF93CDB7DEB761970FB6F894DEBF0D |
| :101010000FBECDBF0E9438099924A92CBB2453E0F0 |
| :10102000AA0CBB1C5A95E1F7FA2C00E010E08F2DBA |
| :10103000800F0E94B6070F5F1F4F08301105B9F7E8 |
| :101040000E948A0780911505843489F57501EE0C9C |
| :10105000FF1C83E994E0E80EF91ECC24DD248E0108 |
| :101060000F5F1F4FF701208181819927982F8827D3 |
| :101070004AE050E0B801820F911D0E94AD1520E0BA |
| :1010800044E550E06C2D8EE00E94A40A20E0A80107 |
| :101090006C2D8EE00E94DA0A0894C11CD11C82E0FB |
| :1010A00090E0E80EF91E98E0C916D104C1F68091CF |
| :1010B0009A05882329F280919A05813009F4939446 |
| :1010C00080919A05823009F49A9480919A0588302B |
| :1010D00019F0E3E09E22A1CF61960FB6F894DEBF2F |
| :1010E0000FBECDBFDF91CF911F910F91FF90EF9079 |
| :1010F000DF90CF90BF90AF909F9008951F9393E2A1 |
| :101100009093910491E69093920498E690939304BF |
| :1011100080939404109295041092960486E00E94A5 |
| :101120000F0710E00E948A07813009F41AE01F5F60 |
| :10113000809115058053853018F01A3098F304C05B |
| :1011400080E090E01A3010F081E090E01F91089567 |
| :101150001F93CF93DF93CDB7DEB72A970FB6F894DE |
| :10116000DEBF0FBECDBF0E94380960E086E690E08A |
| :101170000E94760A80919A058823E1F70E947E08F2 |
| :10118000813069F460E08BE590E00E94760A88EC9B |
| :101190008093970580919705882369F1FBCF109183 |
| :1011A000150519831A8220E0AE014F5F5F4F60E0A2 |
| :1011B0008AE00E94DA0A1F5F20E041E954E0612FD3 |
| :1011C00080E00E94DA0A8AE0809397058091970573 |
| :1011D0008823E1F780919A05813011F40E947E08FE |
| :1011E00080919A05823011F40E947E0880919A05C0 |
| :1011F000843009F0BFCF2A960FB6F894DEBF0FBE39 |
| :10120000CDBFDF91CF911F910895C4988FB9779B7F |
| :10121000FECF8EB18EB9C49A08951F93CF93DF93FA |
| :10122000E0E9F0E0119284E0E039F807D9F710EB3B |
| :10123000C398812F0E94050980E10E9405098091D1 |
| :101240008F000E940509C39AC0E0D0E080E00E94B0 |
| :1012500005092196C038D105C9F71F5F183B41F732 |
| :101260001092950510929605DF91CF911F910895E8 |
| :101270000E940D09089583E397E00197F1F708951F |
| :101280000F931F93CF93DF938C01C0E0D0E003C096 |
| :101290000E943B092196C017D107D1F7DF91CF916A |
| :1012A0001F910F91089510929505109296058FEF5A |
| :1012B00087BB8EE58DB9C49AC2988AE090E00E94FF |
| :1012C0004009C29AC498C39880E40E94050980919D |
| :1012D0008F00882329F481EA0E94050980EC04C06C |
| :1012E00080EA0E94050988EC0E94050986EA0E94AE |
| :1012F000050982EA0E9405098FE20E94050988EF2C |
| :101300000E94050980E00E94050987E20E94050904 |
| :1013100081E80E94050986E10E9405098CEA0E9485 |
| :10132000050980E00E9405098FEA0E9405090E94D4 |
| :101330000D090895FF920F931F938C01F62EC39809 |
| :10134000880F892F881F990B919580550E94050958 |
| :1013500080918F000F77080F802F82958F70805FAC |
| :101360000E940509802F8F700E940509C39A8F2D56 |
| :101370000E9405091F910F91FF900895EF92FF922F |
| :101380000F931F93CF93DF93C0E0D0E000E910E00C |
| :1013900030E1E32E31E0F32EF70181917F01F80176 |
| :1013A000808361918F01CE010E949A092196F3E01A |
| :1013B000C038DF0789F700E114E0F80111928F01CE |
| :1013C00060E0CE010E949A092196F4E0C030DF0768 |
| :1013D000A1F7DF91CF911F910F91FF90EF900895AA |
| :1013E000CF92DF92EF92FF920F931F93CF93DF93F1 |
| :1013F000D22E4F3D81F0403E38F4463DB1F04C3D99 |
| :10140000B1F0443CA9F40FC0463F49F04C3F49F0CD |
| :10141000443E71F402C041EE0BC044E809C044E907 |
| :1014200007C041E805C04EE803C049E901C04AE9E8 |
| :10143000062F11271695102F00271795079526E0E0 |
| :10144000829FC0011124080F191F1370429F700161 |
| :1014500011248EE690E0E80EF91ECC24E801C05776 |
| :10146000DF4FF7019491F2E0DF16A1F0FD1530F0A7 |
| :10147000DD2059F081E0D816B1F409C0E3E0DE16B2 |
| :1014800061F0F4E0DF1679F40AC098830CC088811B |
| :10149000892B08C08881892705C0888102C088817E |
| :1014A0009095892388836991C8010E949A09C39401 |
| :1014B0000894E11CF11C0F5F1F4F86E0C81689F6E7 |
| :1014C000DF91CF911F910F91FF90EF90DF90CF9020 |
| :1014D0000895809196058F5F80939605883028F057 |
| :1014E0000E94BE0987E08093960508951F93CF93CD |
| :1014F000DF93EC01162F20C04032A0F02196212F5F |
| :1015000060919605809195050E94F009809195055E |
| :101510008F5F80939505853178F0109295050E9434 |
| :10152000690A0AC04A3029F04D3029F41092950515 |
| :1015300002C00E94690A2196FE0144914423E1F60B |
| :10154000DF91CF911F910895809395056093960543 |
| :10155000622FCA010E94760A08951F93CF93DF93EA |
| :10156000EC01162F20C04032A0F02196212F60916F |
| :101570009605809195050E94F009809195058F5FF1 |
| :1015800080939505853178F0109295050E94690A3F |
| :101590000AC04A3029F04D3029F41092950502C056 |
| :1015A0000E94690A219648814423E9F6DF91CF9190 |
| :1015B0001F9108958093950560939605622FCA0147 |
| :1015C0000E94AD0A0895982F87FD39C06034B8F5A0 |
| :1015D000862F869586958695282F33273695322F28 |
| :1015E000222737952795290F311D677081E090E0FC |
| :1015F00001C0880F6A95EAF7682F3370413061F0B7 |
| :10160000413018F04230A1F40DC0F901E057FF4F0E |
| :101610008081609586230BC0F901E057FF4F8081E0 |
| :10162000862B05C0F901E057FF4F80818627808314 |
| :10163000F901E057FF4F6081C9010E949A0908959E |
| :101640002F923F924F925F926F927F928F929F92D2 |
| :10165000AF92BF92CF92DF92EF92FF920F931F93C0 |
| :10166000CF93DF93CDB7DEB728970FB6F894DEBFE0 |
| :101670000FBECDBF8D83162F0E83682E7724862E46 |
| :101680009924842F99279C838B8386199709E22FAD |
| :10169000FF27FA83E9839F012819390997FF04C0BE |
| :1016A000FFEF2F2E3F2E07C040E050E0009711F0D3 |
| :1016B00041E050E01A0137FF04C0EFEF4E2E5E2EDE |
| :1016C00008C040E050E02115310511F041E050E044 |
| :1016D0002A016C0197FF04C0D094C194D108D3941F |
| :1016E000790137FF04C0F094E194F108F3944E813E |
| :1016F000682D862D0E94E30AEC14FD047CF5C601DA |
| :1017000062E070E00E94141644275527461B570BD1 |
| :1017100058874F83A22CB62CB20C5D81052F112760 |
| :1017200017C08F8198858E0D9F1D98878F831816FF |
| :10173000190634F4840C951C8C199D0998878F83A5 |
| :101740004E81682D8B2D0E94E30A020D131DBA0CE9 |
| :10175000EB81FC810E171F0721F72DC0C70162E046 |
| :1017600070E00E94141644275527461B570B5887D4 |
| :101770004F83A42CB82CB40C012F112717C08F81D4 |
| :1017800098858C0D9D1D98878F831816190634F443 |
| :10179000620C731C8E199F0998878F834E816B2D65 |
| :1017A000862D0E94E30A040D151DBA0CE981FA8109 |
| :1017B0000E171F0721F728960FB6F894DEBF0FBE4D |
| :1017C000CDBFDF91CF911F910F91FF90EF90DF90F0 |
| :1017D000CF90BF90AF909F908F907F906F905F90D1 |
| :1017E0004F903F902F900895BF92CF92DF92EF924B |
| :1017F000FF920F931F93CF93DF93182FB02E87FD87 |
| :101800001FE7603408F06FE37727CB01820F911D4B |
| :101810009C01812F840F912D911D6C0191E8C916B7 |
| :10182000D10418F0B0E8CB2ED12C79012134310548 |
| :1018300018F0A0E4EA2EF12CEB0108C00B2D2C2FA0 |
| :101840004C2D6C2F812F0E94200B2196EC16FD064B |
| :10185000A8F7DF91CF911F910F91FF90EF90DF904C |
| :10186000CF90BF900895CF92DF92EF92FF920F93A7 |
| :101870001F93CF93DF93D82EC02E87FF02C08FE730 |
| :10188000D82E162F603408F01FE3812F820F912D80 |
| :10189000911DEC018D2D840F912D911D7C0191E8FE |
| :1018A000E916F10418F000E8E02EF12C0C2D212FA0 |
| :1018B0004E2D612F8D2D0E94200BC134D10510F0CB |
| :1018C000C0E4D0E00C2D2C2F4E2D612F8E2D0E94C8 |
| :1018D000200B2C2F4D2D6C2F8E2D0E94200B212F95 |
| :1018E0004D2D6C2F8D2D0E94200BDF91CF911F91DC |
| :1018F0000F91FF90EF90DF90CF9008952F923F923D |
| :101900004F925F926F927F928F929F92AF92BF920F |
| :10191000CF92DF92EF92FF920F931F93CF93DF93BB |
| :10192000CDB7DEB724970FB6F894DEBF0FBECDBF9C |
| :101930008C016B017A01A22E21E030E0241B350BD3 |
| :101940003C832B83CA01880F991F66247724681A69 |
| :10195000790A462E502E640F4A2D802F0E94E30AEA |
| :101960006C2D6E194A2D802F0E94E30A4A2D6C2D92 |
| :10197000802F8E0D0E94E30A4A2D6C2D802F8E1928 |
| :101980000E94E30A4701222433241A82198258C094 |
| :101990008B819C8197FD0BC0089481089108E2E03F |
| :1019A000F0E06E0E7F1E860D971D9C838B8308943E |
| :1019B000211C311C29813A812E5F3F4F3A832983B4 |
| :1019C0008B819C810196820F931F9C838B83142DA6 |
| :1019D000180DD52CD20C4A2D612F8D2D0E94E30AB3 |
| :1019E000E52CE2184A2D612F8E2D0E94E30A142D5A |
| :1019F00018194A2D612F8D2D0E94E30A4A2D612F5F |
| :101A00008E2D0E94E30A142D120DE52CE80C4A2DB0 |
| :101A1000612F8E2D0E94E30A952D9819092F4A2DCA |
| :101A2000612F892F0E94E30A142D12194A2D612F6C |
| :101A30008E2D0E94E30A4A2D612F802F0E94E30A17 |
| :101A4000281439040CF4A4CF24960FB6F894DEBF02 |
| :101A50000FBECDBFDF91CF911F910F91FF90EF90FF |
| :101A6000DF90CF90BF90AF909F908F907F906F90BE |
| :101A70005F904F903F902F9008952F923F924F92FA |
| :101A80005F926F927F928F929F92AF92BF92CF920E |
| :101A9000DF92EF92FF920F931F93CF93DF936B012F |
| :101AA0007A0151E0A52EB12CAE18BF089701220F84 |
| :101AB000331F88249924821A930A662E782E262FA3 |
| :101AC0002E196E0D01E0482F0E94200B472D4E1954 |
| :101AD0002C2D6C2D872D8E0D0E94200BE7014424A8 |
| :101AE0005524222433243AC0B7FC07C0219782E052 |
| :101AF00090E0880E991EA80CB91C0894411C511C3A |
| :101B000082E090E0280E391E0894A11CB11CA20CA2 |
| :101B1000B31C1C2F662D6C0FE72CE418D72CD40CAB |
| :101B200001E0262F4E2D8D2D0E94200B662D6C1B63 |
| :101B3000262F4E2D8D2D0E94200B662D640DE72C37 |
| :101B4000EC1A170D262F4E2D812F0E94200B662D8B |
| :101B50006419262F4E2D812F0E94200B4C165D06F6 |
| :101B60001CF2DF91CF911F910F91FF90EF90DF90CA |
| :101B7000CF90BF90AF909F908F907F906F905F902D |
| :101B80004F903F902F900895A2E0B0E00E9427165A |
| :101B9000802D992780938F00089581E021E030E027 |
| :101BA000D901082E0E942F1680E02F5F3F4FD901E8 |
| :101BB000082E0E942F1608958FEF8BBB83E488BBFD |
| :101BC0008CEF85BB8CE782BB83E084BB80E881BB64 |
| :101BD00021E030E0D9010E942716802D813071F07C |
| :101BE00081E0D901082E0E942F1680E02F5F3F4F21 |
| :101BF000D901082E0E942F16215030402F5F3F4FF1 |
| :101C0000D9010E942716802D992780938F000E946A |
| :101C100053090E9492120E94091378940E94650E43 |
| :101C2000FDCF0F931F93062F142F20E049ED56E0B0 |
| :101C3000682F812F0E94A40A20E047ED56E0602F14 |
| :101C4000812F0E94A40A1F910F910895EF92FF9295 |
| :101C50000F931F93082FE62EF42E682F0E94110E6B |
| :101C6000102F912F80919A058823E1F780919A0592 |
| :101C70008823E1F380919A05823019F41E1508F447 |
| :101C80001F5F80919A05813019F4011708F41150F3 |
| :101C90004F2D612F892F0E94110E80919A05883057 |
| :101CA00021F080919A058430E1F680919A05843084 |
| :101CB00009F41FEF80919A058823E1F7812F992776 |
| :101CC0001F910F91FF90EF9008950E94380960E0F6 |
| :101CD00080EC96E00E94760A60E084EB96E00E9439 |
| :101CE000760A60E088EA96E00E94760A60E08CE975 |
| :101CF00096E00E94760A60E08EE896E00E94760AFE |
| :101D000060E083E896E00E94760A60E08EE696E066 |
| :101D10000E94760A4CE066E082E00E94260E843043 |
| :101D200091F0853028F4823041F08330A1F408C06E |
| :101D3000853061F0863079F40CC00E94A8080895BF |
| :101D40000E94BD1108950E94AC0E08950E94D41403 |
| :101D500008950E94271308950E94380980919A05DA |
| :101D60008823E1F760E08BED96E00E94760A80918F |
| :101D70009A058823E1F380919A058830C9F483E2BB |
| :101D80008093910481E68093920484E78093930486 |
| :101D90008AE08093940480939504809396048093C2 |
| :101DA0009704109298041092990489E00E940F07FA |
| :101DB00080919A058823E1F780919A058823E1F3C1 |
| :101DC00083E28093910481E68093920484E7809378 |
| :101DD0009304109294041092950410929604109219 |
| :101DE0009704109298041092990489E00E940F07BA |
| :101DF0000895FB0120E030E0482F552761E0CA013B |
| :101E0000022E02C0959587950A94E2F780FF02C0E2 |
| :101E1000608301C010822F5F3F4F3196283031051B |
| :101E200071F7089540E020E030E061E070E0FC01EF |
| :101E30008191813041F4CB01022E02C0880F991F9D |
| :101E40000A94E2F7480F2F5F3F4F2830310581F7A2 |
| :101E5000842F99270895482FFB0164E60E94F4150A |
| :101E6000808324E6829FC0011124481B842F6AE0EE |
| :101E70000E94F4152AE0829F90011124421B405DCC |
| :101E800042839081905D9083805D8183903329F4BB |
| :101E900090E29083803309F4918313820895CF9266 |
| :101EA000DF92EF92FF920F931F93CF93DF93CDB703 |
| :101EB000DEB762970FB6F894DEBF0FBECDBF82309B |
| :101EC00008F455C0615044E080E00E94260EC82E00 |
| :101ED0008FEFC81609F421C1EC2CFF24F701E25260 |
| :101EE000FA4FE081FF27EF56FB4FD08020E04AE217 |
| :101EF0005DE06C2D84E00E94A40A80919A058823FD |
| :101F0000E1F780919A05813009F4DA9480919A057D |
| :101F1000823009F4D3948E01075F1F4FB8018D2DD5 |
| :101F20000E942B0F20E0A8016C2D80E00E94DA0AAD |
| :101F300084E180939705809197058823E1F780914C |
| :101F40009A05843021F080919A058830D1F68091ED |
| :101F50009A05883009F0E1C0AEEDB5E0EA0EFB1E4F |
| :101F6000D701EC91FF27EF56FB4FD082D6C08130CE |
| :101F700009F069C08E010F5F1F4FB8018091C50441 |
| :101F80000E94F90E1A8644E063E080E00E94260E6B |
| :101F9000D82EBFEF8B1709F4C0C0E82EFF240E0D1A |
| :101FA0001F1DF801008120E048E25DE0682F84E019 |
| :101FB0000E94A40A80919A05813009F400E0809182 |
| :101FC0009A05823009F401E0005D0987005320E0A2 |
| :101FD000AE01475F5F4F6D2D80E00E94DA0A84E119 |
| :101FE00080939705809197058823E1F780919A0562 |
| :101FF000883021F080919A058430E1F680919A052D |
| :10200000883051F4CE010196E80EF91ED7010C93E9 |
| :102010000E94120F8093C5040E9438098E01075F49 |
| :102020001F4FB8018091C5040E942B0F60E0C801CA |
| :102030000E94AD0A88EC80939705809197058823CC |
| :1020400009F46BC0FACF882309F067C08E010F5FD7 |
| :102050001F4FB801809199040E94F90E1A8644E03E |
| :1020600067E080E00E94260ED82EBFEF8B1709F4A0 |
| :1020700054C0E82EFF240E0D1F1DF801008120E042 |
| :1020800046E25DE0682F84E00E94A40A80919A05F0 |
| :10209000813009F400E080919A05823009F401E072 |
| :1020A000005D0987005320E0AE01475F5F4F6D2D53 |
| :1020B00080E00E94DA0A84E1809397058091970579 |
| :1020C0008823E1F780919A05883021F080919A0564 |
| :1020D0008430E1F680919A05883051F4CE01019662 |
| :1020E000E80EF91ED7010C930E94120F80939904F9 |
| :1020F0000E9438098E01075F1F4FB8018091990433 |
| :102100000E942B0F60E0C8010E94AD0A88EC80930A |
| :102110009705809197058823E1F762960FB6F894AA |
| :10212000DEBF0FBECDBFDF91CF911F910F91FF900A |
| :10213000EF90DF90CF9008956F927F928F929F9251 |
| :10214000AF92BF92CF92DF92EF92FF920F931F93C5 |
| :10215000CF93DF93CDB7DEB7A1970FB6F894DEBF6C |
| :102160000FBECDBFE82E81E08E1508F044C044EBD1 |
| :10217000A42E47E0B42E39E3632E39E0732EFF24FA |
| :10218000CC24DD2421E9822E24E0922EF5018491D5 |
| :102190008E15E9F4EF2DFF27E252FA4FC0828E012F |
| :1021A000075F1F4FB801F40180810E942B0F20E0D0 |
| :1021B000A8016F2D80E00E94DA0A20E0A3016F2DB4 |
| :1021C00085E00E94A40AF7E0FF1508F0F394089454 |
| :1021D000C11CD11C83E090E0A80EB91E0894811C9C |
| :1021E000911CE0E1F0E06E0E7F1EF2E4CF16D10408 |
| :1021F00009F463C0CBCF81E0E81679F58E010F5F5B |
| :102200001F4FB8018091C5040E94F90E1A8699E704 |
| :10221000A92E98E0B92E6801CE0101961C2D181B3D |
| :10222000F60181916F01805D898720E0AE01475FF3 |
| :102230005F4F612F80E00E94DA0A20E0A501612F44 |
| :1022400085E00E94A40A80E190E0A80EB91ECE01AC |
| :102250000596C816D90681F1DFCFEE2069F58E010B |
| :102260000F5F1F4FB801809199040E94F90E1A86E2 |
| :10227000680189EBA82E88E0B82ECE010196FC2CCF |
| :10228000F81AF60181916F01805D89878E01075FE1 |
| :102290001F4F20E0A8016F2D80E00E94DA0A20E0A5 |
| :1022A000A5016F2D85E00E94A40A80E190E0A80EB0 |
| :1022B000B91EC016D10609F7FF248F2D9927A196C4 |
| :1022C0000FB6F894DEBF0FBECDBFDF91CF911F9147 |
| :1022D0000F91FF90EF90DF90CF90BF90AF909F90C5 |
| :1022E0008F907F906F900895982F8630D8F426E4D1 |
| :1022F00030E0E7EDF4E08081838321503040319776 |
| :102300008FEF2F3F3807B9F783E28093910481E67E |
| :10231000809392049559909393041092DB048BE47C |
| :102320000E940F0708951F9393E29093910491E602 |
| :102330009093920491E79093930480939404109265 |
| :1023400095041092960486E00E940F0710E00E9408 |
| :102350008A07813009F41EE11F5F809115058C54B6 |
| :10236000853018F01E3198F304C080E090E01E31F3 |
| :1023700010F081E090E01F910895FF920F931F935A |
| :10238000CF93DF93CDB7DEB72F970FB6F894DEBFAC |
| :102390000FBECDBF0E94380960E085E19DE00E943C |
| :1023A000760A60E08FE09DE00E94760A60E089E0B6 |
| :1023B0009DE00E94760A60E083E09DE00E94760A3C |
| :1023C00060E08DEF9CE00E94760A60E087EF9CE081 |
| :1023D0000E94760A40E065E081E00E94260E0E949D |
| :1023E0009311813041F420E04FEE5CE066E080E044 |
| :1023F0000E94A40A62C062E0F62E0E9438098E0193 |
| :102400000F5F1F4F4AE050E0B8018F2D99270E94BF |
| :10241000CE1560E0C8010E94AD0A82E38093970563 |
| :10242000809197058823E1F70E9438098F2D0E943B |
| :102430009C10682F80919A058823E1F380919A057A |
| :10244000823009F4F39480919A05813009F4FA946A |
| :102450008FEFF81619F45CE0F52E04C08CE08F15B0 |
| :1024600008F4FF2480919A05883019F48F2D0E947A |
| :102470004F0F80919A05843009F0BFCF0E94380930 |
| :1024800060E08CEC9CE00E94760A40E062E081E033 |
| :102490000E94260E813061F460E085EC9CE00E9491 |
| :1024A000760A85E00E94741160E08DEA9CE003C02A |
| :1024B00060E089E99CE00E94760A84E680939705B3 |
| :1024C000809197058823E1F72F960FB6F894DEBF29 |
| :1024D0000FBECDBFDF91CF911F910F91FF90089557 |
| :1024E0001F920F920FB60F9211248F939F93EF9329 |
| :1024F000FF938091E6059CB1E8EEF5E0E80FF11D51 |
| :1025000090838F5F8093E6058091E6058F708093BE |
| :10251000E605FF91EF919F918F910F900FBE0F9065 |
| :102520001F90189588E98AB987E089B908958AE0EB |
| :10253000809399059091E7058091E605981721F41D |
| :10254000809199058823B1F780919905882311F42A |
| :10255000E0E00FC08091E705E82FFF27E851FA4F30 |
| :10256000E0818F5F8093E7058091E7058F7080930E |
| :10257000E7058E2F992708955D9BFECF8CB90895AE |
| :10258000FC0104C05D9BFECF8CB93196808188230D |
| :10259000C9F708951F920F920FB60F9211248F93CF |
| :1025A0009F9380919805882331F080919805815000 |
| :1025B0008093980515C08AE08093980589B3992780 |
| :1025C00080959095689413F8959587951694E1F702 |
| :1025D0008F7080939A0580919B058F5F80939B05F8 |
| :1025E00080919705882329F08091970581508093E9 |
| :1025F000970580919905882329F08091990581504C |
| :10260000809399059F918F910F900FBE0F901F900F |
| :1026100018958DE083BF88E48CBF89B7826089BF3D |
| :102620000895F89480918F00882321F484E08093AA |
| :102630008F0002C010928F0080918F00A2E0B0E066 |
| :10264000082E0E942F160E945309789408950F9324 |
| :102650001F9311E00E94380960E088E59DE00E9428 |
| :10266000760A60E085E59DE00E94760A60E086E4F7 |
| :102670009DE00E94760A60E08EE39DE00E94760A6B |
| :1026800060E083E39DE00E94760A60E08CE29DE0DA |
| :102690000E94760A4FE065E082E00E94260E8330B9 |
| :1026A00049F08430C9F0823011F010E026C00E9459 |
| :1026B000111323C00E94380901E022E344E664E1DB |
| :1026C0008AE00E94200B80919A058830B1F08091B9 |
| :1026D0009A05843091F0F7CF0E94380901E028E292 |
| :1026E00044E664E18AE00E94330C80919A058830C8 |
| :1026F00021F080919A058430C1F7112309F0AACF07 |
| :102700001F910F910895CF93DF93EC0152E070E099 |
| :1027100026C0E52FFF27EC5EFA4F21812D53328131 |
| :102720003D5343814D535C5FDE01A80FB91F80818B |
| :102730008D53880F880F922F92959F70892B8C93C1 |
| :102740002295207F832F86958695282BFD01218356 |
| :102750003295330F330F307C342B32837D5F872FDC |
| :1027600099275617B0F2DF91CF9108954F925F925B |
| :102770006F927F928F929F92AF92BF92CF92DF9291 |
| :10278000EF92FF920F931F93CF93DF93FC01EB0126 |
| :1027900080E2888340E8E130F40718F46624772467 |
| :1027A00008C0F095E195FF4F8DE2888351E0652EDA |
| :1027B000712C2E010894411C511CCF0160E177E27D |
| :1027C0000E9400168B01262F332780E197E2BC017F |
| :1027D000269FC001279F900D369F900D11249F01C9 |
| :1027E000281B390B42E0C42ED12CCC0EDD1EC901B2 |
| :1027F00068EE73E00E9400167B01462F552788EE95 |
| :1028000093E0FC014E9FC0014F9F900D5E9F900D85 |
| :102810001124281B390B93E0A92EB12CAC0EBD1E40 |
| :10282000C90164E670E00E940016FB0184E6689F1F |
| :10283000C0011124281B390B84E0882E912C8C0EAA |
| :102840009D1EC9016AE070E00E9400168AE0689F40 |
| :10285000C0011124281B390B205D2D83005D0983E5 |
| :10286000F0E3EF0EEA82E05DEB83605D6C830033A2 |
| :1028700091F580E2888341E06416710409F48DE2E9 |
| :102880008983F6018081803331F580E2F201808313 |
| :10289000F1E06F16710409F48DE2F6018083F50111 |
| :1028A00080818033C1F480E2F6018083F1E06F160D |
| :1028B000710409F48DE2F5018083F4018081803395 |
| :1028C00051F480E2F5018083F1E06F16710409F4A0 |
| :1028D0008DE2F40180831E82DF91CF911F910F91D1 |
| :1028E000FF90EF90DF90CF90BF90AF909F908F9030 |
| :1028F0007F906F905F904F9008951F9384E1809335 |
| :1029000097050E949712833221F0809197058823C2 |
| :10291000C1F780919705882319F481E090E019C0F0 |
| :102920000E9497128093140511E00AC00E9497122A |
| :10293000E12FFF27EC5EFA4F80831F5F17FD1FE733 |
| :102940008D30A1F7612F8CE995E00E94831380E020 |
| :1029500090E01F9108951F9393E29093910491E664 |
| :102960009093920493E6909393048093940410922E |
| :1029700095041092960486E00E940F0710E00E94D2 |
| :102980007D14813009F41EE11F5F809115058434A8 |
| :1029900019F01E31A0F304C080E090E01E3110F069 |
| :1029A00081E090E01F9108950F931F93CF93DF93E1 |
| :1029B000CDB7DEB72A970FB6F894DEBF0FBECDBFF6 |
| :1029C0000E94380960E084E79DE00E94760A8091C9 |
| :1029D0009A058823E1F70E94AB14813071F460E01E |
| :1029E00089E69DE00E94760A88EC809397058091A5 |
| :1029F0009705882309F4A6C0FACF809193048983B0 |
| :102A00001A8220E08E010F5F1F4FA80160E08FE067 |
| :102A10000E94DA0AB80180919E0590919F050E945C |
| :102A2000B61320E040E650E061E080E00E94DA0A60 |
| :102A300020E0A80161E08AE00E94DA0AB8018091F2 |
| :102A4000A0059091A1050E94B61320E045E650E054 |
| :102A500062E080E00E94DA0A20E0A80162E08AE0F9 |
| :102A60000E94DA0AB8018091A2059091A3050E9404 |
| :102A7000B61320E04AE650E063E080E00E94DA0A04 |
| :102A800020E0A80163E08AE00E94DA0AB8018091A0 |
| :102A9000A4059091A5050E94B61320E043E750E0FD |
| :102AA00064E080E00E94DA0A20E0A80164E08AE0A5 |
| :102AB0000E94DA0AB8018091A6059091A7050E94AC |
| :102AC000B61320E04CE750E065E080E00E94DA0AAF |
| :102AD00020E0A80165E08AE00E94DA0AB80180914E |
| :102AE000A8059091A9050E94B61320E041E850E0A6 |
| :102AF00066E080E00E94DA0A20E0A80166E08AE051 |
| :102B00000E94DA0AB8018091B0059091B1050E9447 |
| :102B1000B61320E045E850E067E080E00E94DA0A62 |
| :102B200020E0A80167E08AE00E94DA0A8AE0809348 |
| :102B30009705809197058823E1F780919A05843065 |
| :102B400009F045CF2A960FB6F894DEBF0FBECDBF71 |
| :102B5000DF91CF911F910F910895FB019F01E894A0 |
| :102B60004230C4F04532B4F44A3029F497FB1EF4E5 |
| :102B7000909581959F4F642F77270E940016805D66 |
| :102B80008A330CF0895D8193CB010097A1F716F48D |
| :102B90005DE251931082C9010C94E415FB019F0181 |
| :102BA000423074F0453264F4642F77270E94001697 |
| :102BB000805D8A330CF0895D8193CB010097A1F78A |
| :102BC0001082C9010C94E415DC01FC01672F71919E |
| :102BD0007723E1F7329704C07C916D937083629103 |
| :102BE000AE17BF07C8F30895991B79E004C0991F79 |
| :102BF000961708F0961B881F7A95C9F78095089557 |
| :102C0000AA1BBB1B51E107C0AA1FBB1FA617B70712 |
| :102C100010F0A61BB70B881F991F5A95A9F780952E |
| :102C20009095BC01CD01089597FB092E07260AD087 |
| :102C300077FD04D0E5DF06D000201AF47095619589 |
| :102C40007F4F0895F6F7909581959F4F0895E199EC |
| :102C5000FECFBFBBAEBBE09A11960DB20895E199CD |
| :102C6000FECFBFBBAEBB0DBA11960FB6F894E29A79 |
| :082C7000E19A0FBE0895FFCFA9 |
| :102C78004E69636B00526F6C6C00414343204E6990 |
| :102C8800636B0041434320526F6C6C004769657267 |
| :0E2C980000414343005370616E6E756E67001D |
| :00000001FF |
| /Transportables_Koptertool/tags/V-0.1/default/Makefile |
|---|
| 0,0 → 1,110 |
| ############################################################################### |
| # Makefile for the project MMT |
| ############################################################################### |
| ## General Flags |
| PROJECT = MMT |
| MCU = atmega32 |
| TARGET = MMT.elf |
| CC = avr-gcc.exe |
| ## Options common to compile, link and assembly rules |
| COMMON = -mmcu=$(MCU) |
| ## Compile options common for all C compilation units. |
| CFLAGS = $(COMMON) |
| CFLAGS += -Wall -gdwarf-2 -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums |
| CFLAGS += -MD -MP -MT $(*F).o -MF dep/$(@F).d |
| ## Assembly specific flags |
| ASMFLAGS = $(COMMON) |
| ASMFLAGS += $(CFLAGS) |
| ASMFLAGS += -x assembler-with-cpp -Wa,-gdwarf2 |
| ## Linker flags |
| LDFLAGS = $(COMMON) |
| LDFLAGS += |
| ## Intel Hex file production flags |
| HEX_FLASH_FLAGS = -R .eeprom |
| HEX_EEPROM_FLAGS = -j .eeprom |
| HEX_EEPROM_FLAGS += --set-section-flags=.eeprom="alloc,load" |
| HEX_EEPROM_FLAGS += --change-section-lma .eeprom=0 --no-change-warnings |
| ## Objects that must be built in order to link |
| OBJECTS = base64.o displ_val.o display.o F8X6.o lcd.o main.o menu.o motortest.o parameter.o rs232.o timer.o settings.o debug.o |
| ## Objects explicitly added by the user |
| LINKONLYOBJECTS = |
| ## Build |
| all: $(TARGET) MMT.hex MMT.eep size |
| ## Compile |
| base64.o: ../base64.c |
| $(CC) $(INCLUDES) $(CFLAGS) -c $< |
| displ_val.o: ../displ_val.c |
| $(CC) $(INCLUDES) $(CFLAGS) -c $< |
| display.o: ../display.c |
| $(CC) $(INCLUDES) $(CFLAGS) -c $< |
| F8X6.o: ../F8X6.c |
| $(CC) $(INCLUDES) $(CFLAGS) -c $< |
| lcd.o: ../lcd.c |
| $(CC) $(INCLUDES) $(CFLAGS) -c $< |
| main.o: ../main.c |
| $(CC) $(INCLUDES) $(CFLAGS) -c $< |
| menu.o: ../menu.c |
| $(CC) $(INCLUDES) $(CFLAGS) -c $< |
| motortest.o: ../motortest.c |
| $(CC) $(INCLUDES) $(CFLAGS) -c $< |
| parameter.o: ../parameter.c |
| $(CC) $(INCLUDES) $(CFLAGS) -c $< |
| rs232.o: ../rs232.c |
| $(CC) $(INCLUDES) $(CFLAGS) -c $< |
| timer.o: ../timer.c |
| $(CC) $(INCLUDES) $(CFLAGS) -c $< |
| settings.o: ../settings.c |
| $(CC) $(INCLUDES) $(CFLAGS) -c $< |
| debug.o: ../debug.c |
| $(CC) $(INCLUDES) $(CFLAGS) -c $< |
| ##Link |
| $(TARGET): $(OBJECTS) |
| $(CC) $(LDFLAGS) $(OBJECTS) $(LINKONLYOBJECTS) $(LIBDIRS) $(LIBS) -o $(TARGET) |
| %.hex: $(TARGET) |
| avr-objcopy -O ihex $(HEX_FLASH_FLAGS) $< $@ |
| %.eep: $(TARGET) |
| -avr-objcopy $(HEX_EEPROM_FLAGS) -O ihex $< $@ || exit 0 |
| %.lss: $(TARGET) |
| avr-objdump -h -S $< > $@ |
| size: ${TARGET} |
| @echo |
| @avr-size -C --mcu=${MCU} ${TARGET} |
| ## Clean target |
| .PHONY: clean |
| clean: |
| -rm -rf $(OBJECTS) MMT.elf dep/* MMT.hex MMT.eep |
| ## Other dependencies |
| -include $(shell mkdir dep 2>/dev/null) $(wildcard dep/*) |
| /Transportables_Koptertool/tags/V-0.1/displ_val.c |
|---|
| 0,0 → 1,83 |
| #include <avr/io.h> |
| #include <inttypes.h> |
| #include <stdlib.h> |
| #include <avr/pgmspace.h> |
| #include "main.h" |
| #include "base64.h" |
| #include "lcd.h" |
| #include "rs232.h" |
| // Insgesamt 32 Werte können angezeigt werden |
| // jeweils 8 Stück werden gleichzeitg angezeigt |
| // Auswahl über Tasten |
| uint8_t displ_page; |
| void displ_get_text(uint8_t number) |
| { |
| uint8_t text[17]; |
| uint8_t i; |
| p_buffer[0] = '#'; |
| p_buffer[1] = 'a'; |
| p_buffer[2] = 'a'; |
| p_buffer[3] = number; |
| p_buffer[4] = 0; |
| p_buffer[5] = 0; |
| base64_send(6); |
| do |
| { |
| get_message(); |
| } |
| while (r_buffer[1] != 'A'); |
| for (i=0;i<16;i++) |
| text[i] = p_buffer[i]; |
| text[16] = 0x00; |
| lcd_print_at(0,(number & 0x07),text,0); |
| } |
| void displ_values(void) |
| { |
| uint8_t displ_page, i; |
| int16_t value; |
| uint8_t text[17]; |
| displ_page = 0; // Page 0..3 (4 Pages zu je 8 Werte) |
| lcd_cls(); // LCD löschen |
| do |
| { |
| for (i=0;i<8;i++) // Texte lesen und anzeigen |
| displ_get_text(i+displ_page*8); |
| do |
| { |
| get_message(); |
| if(r_buffer[1] == 'D') |
| { |
| for (i=0;i<8;i++) |
| { |
| value = p_buffer[i*2+displ_page*16+2] + 256*p_buffer[i*2+displ_page*16+3]; |
| itoa(value,text,10); |
| lcd_print_atp(14,i,PSTR(" "),0); |
| lcd_print_at(14,i,text,0); |
| } |
| } |
| } |
| while (key == 0x00); |
| if (key == 0x01) |
| displ_page++; |
| if (key == 0x02) |
| displ_page--; |
| displ_page &= 0x03; |
| } |
| while(key != 0x08); |
| } |
| /Transportables_Koptertool/tags/V-0.1/displ_val.h |
|---|
| 0,0 → 1,6 |
| #ifndef displ_val_h |
| #define displ_val_h |
| void displ_values(void); |
| #endif |
| /Transportables_Koptertool/tags/V-0.1/display.c |
|---|
| 0,0 → 1,78 |
| #include <avr/io.h> |
| #include <inttypes.h> |
| #include <stdlib.h> |
| #include <avr/pgmspace.h> |
| #include "main.h" |
| #include "lcd.h" |
| #include "rs232.h" |
| #include "base64.h" |
| #include "parameter.h" |
| #include "menu.h" |
| uint8_t read_display (uint8_t command) // |
| { |
| uint8_t timeout; |
| timeout = 0; |
| p_buffer[0] = '#'; // Display-Zeile anfordern |
| p_buffer[1] = 'a'; |
| p_buffer[2] = 'h'; |
| p_buffer[3] = command; |
| p_buffer[4] = 0; |
| p_buffer[5] = 0; |
| base64_send(6); |
| do // warten, bis die Parameter gesendet werden |
| { |
| if (get_message() == 1) |
| timeout = 10; |
| timeout ++; |
| } |
| while (((r_buffer[1] < '0') || (r_buffer[1] > '4')) && (timeout < 10)); |
| if (timeout >= 10) |
| return 1; |
| else |
| return 0; |
| } |
| void display_data (void) |
| { |
| uint8_t line; |
| uint8_t text[10]; |
| lcd_cls(); |
| lcd_printp(PSTR("Display"),0); |
| do |
| { |
| while (key != 0x00); |
| if (read_display(0) == 1) |
| { |
| lcd_printp(PSTR("\r\nTimeout!"),0); |
| timer = 200; |
| while (timer > 0); |
| break; |
| } |
| else |
| { |
| line = r_buffer[1]; |
| text[0] = line; |
| text[1] = 0x00; |
| lcd_print_at(10,0,text,0); |
| lcd_print_at(0,line+1,p_buffer,0); |
| timer = 10; |
| while(timer > 0); |
| if (key == 0x01) |
| read_display(1); |
| if (key == 0x02) |
| read_display(2); |
| } |
| } |
| while (key != 0x04); |
| } |
| /Transportables_Koptertool/tags/V-0.1/display.h |
|---|
| 0,0 → 1,6 |
| #ifndef display_h |
| #define display_h |
| void display_data (void); |
| #endif |
| /Transportables_Koptertool/tags/V-0.1/font8x6.h |
|---|
| 0,0 → 1,9 |
| #ifndef font8x6_h |
| #define font8x6_h |
| #include <avr/pgmspace.h> |
| extern prog_uint8_t f8x6[256][6]; |
| #endif |
| /Transportables_Koptertool/tags/V-0.1/lcd.c |
|---|
| 0,0 → 1,557 |
| #define F_CPU 7372800UL |
| #include <avr/io.h> |
| #include <inttypes.h> |
| #include <stdlib.h> |
| #include <avr/pgmspace.h> |
| #include <util/delay.h> |
| #include "font8x6.h" |
| #include "main.h" |
| #include "lcd.h" |
| #define DISP_W 128 |
| #define DISP_H 64 |
| // #define LCD_ORIENTATION 0 // 0 MJ Tasten unten / 4 Original Tasten oben |
| uint8_t lcd_xpos; |
| uint8_t lcd_ypos; |
| //volatile uint8_t display_buffer[1024]; // Display-Puffer, weil nicht zurückgelesen werden kann |
| //volatile uint16_t display_buffer_pointer; // Pointer auf das aktuell übertragene Byte |
| //volatile uint8_t display_buffer_counter; // Hilfszähler zur Selektierung der Page |
| //volatile uint8_t display_page_counter; // aktuelle Page-Nummer |
| //volatile uint8_t display_mode; // Modus für State-Machine |
| void send_byte (uint8_t data) |
| { |
| clr_cs(); |
| SPDR = data; |
| while(!(SPSR & (1<<SPIF))); |
| SPSR = SPSR; |
| set_cs(); |
| } |
| void cls (void) |
| { |
| uint16_t i,j; |
| for (i=0;i<1024;i++) |
| display_buffer[i] = 0x00; |
| for (i=0;i<8;i++) |
| { |
| clr_A0(); |
| send_byte(0xB0+i); //1011xxxx |
| send_byte(0x10); //00010000 |
| // send_byte(0x04); //00000100 gedreht plus 4 Byte |
| // send_byte(0x00); //00000000 |
| send_byte(LCD_ORIENTATION); //00000000 |
| set_A0(); |
| for (j=0;j<128;j++) |
| send_byte(0x00); |
| } |
| lcd_xpos = 0; |
| lcd_ypos = 0; |
| } |
| void lcd_cls (void) |
| { |
| cls(); |
| } |
| void wait_1ms(void) |
| { |
| _delay_ms (1.0); |
| } |
| void wait_ms (uint16_t time) |
| { |
| uint16_t i; |
| for (i=0; i<time; i++) |
| wait_1ms(); |
| } |
| void lcd_init (void) |
| { |
| lcd_xpos = 0; |
| lcd_ypos = 0; |
| DDRB = 0xFF; |
| SPCR = (1<<SPE)|(1<<MSTR)|(1<<CPHA)|(1<<CPOL)|(1<<SPR1); |
| set_cs(); |
| clr_reset(); |
| wait_ms(10); |
| set_reset(); |
| clr_cs(); |
| clr_A0(); |
| send_byte(0x40); |
| if (LCD_ORIENTATION == 0) |
| { |
| send_byte(0xA1); // A1 normal A0 reverse(original) |
| send_byte(0xC0); // C0 normal C8 reverse(original) |
| } |
| else |
| { |
| send_byte(0xA0); // A1 normal A0 reverse(original) |
| send_byte(0xC8); // C0 normal C8 reverse(original) |
| } |
| send_byte(0xA6); |
| send_byte(0xA2); |
| send_byte(0x2F); |
| send_byte(0xF8); |
| send_byte(0x00); |
| send_byte(0x27); |
| send_byte(0x81); |
| send_byte(0x16); |
| send_byte(0xAC); |
| send_byte(0x00); |
| send_byte(0xAF); |
| cls(); |
| } |
| void set_adress (uint16_t adress, uint8_t data) |
| { |
| uint8_t page; |
| uint8_t column; |
| page = adress >> 7; |
| clr_A0(); |
| send_byte(0xB0 + page); |
| // column = (adress & 0x7F) + 4; Wenn gedreht |
| // column = (adress & 0x7F); |
| column = (adress & 0x7F) + LCD_ORIENTATION; |
| send_byte(0x10 + (column >> 4)); |
| send_byte(column & 0x0F); |
| set_A0(); |
| send_byte(data); |
| } |
| void scroll (void) |
| { |
| uint16_t adress; |
| for (adress=0;adress<896;adress++) |
| { |
| display_buffer[adress] = display_buffer[adress+128]; |
| set_adress(adress,display_buffer[adress]); |
| } |
| for (adress=896;adress<1024;adress++) |
| { |
| display_buffer[adress] = 0; |
| set_adress(adress,0); |
| } |
| } |
| // |
| // x,y = character-Pos. ! |
| // |
| // mode: 0=Overwrite, 1 = OR, 2 = XOR, 3 = AND, 4 = Delete |
| void put_char (uint8_t x, uint8_t y, uint8_t c, uint8_t mode) |
| { |
| uint8_t ch; |
| uint8_t i; |
| uint16_t adress; |
| switch(c) |
| { |
| case 'ä': |
| c = 0x84; |
| break; |
| case 'ö': |
| c = 0x94; |
| break; |
| case 'ü': |
| c = 0x81; |
| break; |
| case 'Ä': |
| c = 0x8E; |
| break; |
| case 'Ö': |
| c = 0x99; |
| break; |
| case 'Ü': |
| c = 0x9A; |
| break; |
| case 'ß': |
| c = 0xE1; |
| break; |
| } |
| adress = y*128 + x*6; |
| adress &= 0x3FF; |
| for (i=0;i<6;i++) |
| { |
| ch = pgm_read_byte (&f8x6[0][0] + i + c * 6); |
| switch (mode) |
| { |
| case 0: |
| display_buffer[adress+i] = ch; |
| break; |
| case 1: |
| display_buffer[adress+i] |= ch; |
| break; |
| case 2: |
| display_buffer[adress+i] ^= ch; |
| break; |
| case 3: |
| display_buffer[adress+i] &= ch; |
| break; |
| case 4: |
| display_buffer[adress+i] &= ~ch; |
| break; |
| } |
| set_adress(adress+i,display_buffer[adress+i]); |
| } |
| } |
| void new_line (void) |
| { |
| lcd_ypos++; |
| if (lcd_ypos > 7) |
| { |
| scroll(); |
| lcd_ypos = 7; |
| } |
| } |
| void lcd_printp (const char *text, uint8_t mode) |
| { |
| while (pgm_read_byte(text)) |
| { |
| if (pgm_read_byte(text) > 0x1F) |
| { |
| put_char(lcd_xpos,lcd_ypos,pgm_read_byte(text++),mode); |
| lcd_xpos++; |
| if (lcd_xpos > 20) |
| { |
| lcd_xpos = 0; |
| new_line(); |
| } |
| } |
| else |
| { |
| switch (pgm_read_byte(text)) |
| { |
| case 0x0D: |
| lcd_xpos = 0; |
| break; |
| case 0x0A: |
| new_line(); |
| break; |
| } |
| text++; |
| } |
| } |
| } |
| void lcd_print_atp (uint8_t x, uint8_t y, const char *text, uint8_t mode) |
| { |
| lcd_xpos = x; |
| lcd_ypos = y; |
| lcd_printp (text, mode); |
| } |
| void lcd_print (uint8_t *text, uint8_t mode) |
| { |
| while (*text) |
| { |
| if (*text > 0x1F) |
| { |
| put_char(lcd_xpos,lcd_ypos,*text++,mode); |
| lcd_xpos++; |
| if (lcd_xpos > 20) |
| { |
| lcd_xpos = 0; |
| new_line(); |
| } |
| } |
| else |
| { |
| switch (*text) |
| { |
| case 0x0D: |
| lcd_xpos = 0; |
| break; |
| case 0x0A: |
| new_line(); |
| break; |
| } |
| text++; |
| } |
| } |
| } |
| void lcd_print_at (uint8_t x, uint8_t y, uint8_t *text, uint8_t mode) |
| { |
| lcd_xpos = x; |
| lcd_ypos = y; |
| lcd_print(text, mode); |
| } |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| // + Plot (set one Pixel) |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| // mode: |
| // 0=Clear, 1=Set, 2=XOR |
| void lcd_plot (uint8_t xpos, uint8_t ypos, uint8_t mode) |
| { |
| uint16_t adress; |
| uint8_t mask; |
| if ((xpos < 128) && (ypos < 64)) |
| { |
| adress = (ypos/8) * 128 + xpos; // adress = 0/8 * 128 + 0 = 0 |
| mask = 1<<(ypos & 0x07); // mask = 1<<0 = 1 |
| adress &= 0x3FF; |
| switch (mode) |
| { |
| case 0: |
| display_buffer[adress] &=~mask; |
| break; |
| case 1: |
| display_buffer[adress] |= mask; |
| break; |
| case 2: |
| display_buffer[adress] ^= mask; |
| break; |
| } |
| set_adress(adress,display_buffer[adress]); |
| } |
| } |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| // + Line (draws a line from x1,y1 to x2,y2 |
| // + Based on Bresenham line-Algorithm |
| // + found in the internet, modified by thkais 2007 |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| void lcd_line(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, uint8_t mode) |
| { |
| int x,y,count,xs,ys,xm,ym; |
| x=(int)x1; |
| y=(int)y1; |
| xs=(int)x2 - (int)x1; |
| ys=(int)y2 - (int)y1; |
| if(xs < 0) |
| xm= -1; |
| else |
| if(xs > 0) |
| xm= 1; |
| else |
| xm= 0; |
| if(ys < 0) |
| ym= -1; |
| else |
| if(ys > 0) |
| ym= 1; |
| else |
| ym= 0; |
| if(xs < 0) |
| xs= -xs; |
| if(ys < 0) |
| ys= -ys; |
| lcd_plot((unsigned char)x, (unsigned char)y, mode); |
| if(xs > ys) // Flat Line <45 degrees |
| { |
| count= -(xs / 2); |
| while(x != x2) |
| { |
| count= count + ys; |
| x= x + xm; |
| if(count > 0) |
| { |
| y= y + ym; |
| count= count - xs; |
| } |
| lcd_plot((unsigned char)x, (unsigned char)y, mode); |
| } |
| } |
| else // Line >=45 degrees |
| { |
| count=- (ys / 2); |
| while(y != y2) |
| { |
| count= count + xs; |
| y= y + ym; |
| if(count > 0) |
| { |
| x= x + xm; |
| count= count - ys; |
| } |
| lcd_plot((unsigned char)x, (unsigned char)y, mode); |
| } |
| } |
| } |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| // + Filled rectangle |
| // + x1, y1 = upper left corner |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| void lcd_frect (uint8_t x1, uint8_t y1, uint8_t widthx, uint8_t widthy, uint8_t mode) |
| { |
| uint16_t x2, y2; |
| uint16_t i; |
| if (x1 >= DISP_W) |
| x1 = DISP_W - 1; |
| if (y1 >= DISP_H) |
| y1 = DISP_H - 1; |
| x2 = x1 + widthx; |
| y2 = y1 + widthy; |
| if (x2 > DISP_W) |
| x2 = DISP_W; |
| if (y2 > DISP_H) |
| y2 = DISP_H; |
| for (i=y1;i<=y2;i++) |
| { |
| lcd_line(x1,i,x2,i,mode); |
| } |
| } |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| // + outline of rectangle |
| // + x1, y1 = upper left corner |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| void lcd_rect (uint8_t x1, uint8_t y1, uint8_t widthx, uint8_t widthy, uint8_t mode) |
| { |
| uint16_t x2, y2; |
| if (x1 >= DISP_W) |
| x1 = DISP_W - 1; |
| if (y1 >= DISP_H) |
| y1 = DISP_H - 1; |
| x2 = x1 + widthx; |
| y2 = y1 + widthy; |
| if (x2 > DISP_W) |
| x2 = DISP_W; |
| if (y2 > DISP_H) |
| y2 = DISP_H; |
| lcd_line (x1, y1, x2, y1, mode); |
| lcd_line (x2, y1, x2, y2, mode); |
| lcd_line (x2, y2, x1, y2, mode); |
| lcd_line (x1, y2, x1, y1, mode); |
| } |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| // + outline of a circle |
| // + Based on Bresenham-algorithm found in wikipedia |
| // + modified by thkais (2007) |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| void draw_circle(int16_t x0, int16_t y0, int16_t radius, uint8_t mode) |
| { |
| int16_t f = 1 - radius; |
| int16_t ddF_x = 0; |
| int16_t ddF_y = -2 * radius; |
| int16_t x = 0; |
| int16_t y = radius; |
| lcd_plot(x0, y0 + radius, mode); |
| lcd_plot(x0, y0 - radius, mode); |
| lcd_plot(x0 + radius, y0, mode); |
| lcd_plot(x0 - radius, y0, mode); |
| while(x < y) |
| { |
| if(f >= 0) |
| { |
| y --; |
| ddF_y += 2; |
| f += ddF_y; |
| } |
| x ++; |
| ddF_x += 2; |
| f += ddF_x + 1; |
| lcd_plot(x0 + x, y0 + y, mode); |
| lcd_plot(x0 - x, y0 + y, mode); |
| lcd_plot(x0 + x, y0 - y, mode); |
| lcd_plot(x0 - x, y0 - y, mode); |
| lcd_plot(x0 + y, y0 + x, mode); |
| lcd_plot(x0 - y, y0 + x, mode); |
| lcd_plot(x0 + y, y0 - x, mode); |
| lcd_plot(x0 - y, y0 - x, mode); |
| } |
| } |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| // + filled Circle |
| // + modified circle-algorithm thkais (2007) |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| void draw_fcircle(int16_t x0, int16_t y0, int16_t radius) |
| { |
| int16_t f = 1 - radius; |
| int16_t ddF_x = 0; |
| int16_t ddF_y = -2 * radius; |
| int16_t x = 0; |
| int16_t y = radius; |
| lcd_line(x0, y0 + radius,x0, y0 - radius,1); |
| lcd_line(x0 + radius, y0,x0 - radius, y0,1); |
| while(x < y) |
| { |
| if(f >= 0) |
| { |
| y--; |
| ddF_y += 2; |
| f += ddF_y; |
| } |
| x++; |
| ddF_x += 2; |
| f += ddF_x + 1; |
| lcd_line(x0 + x, y0 + y,x0 - x, y0 + y,1); |
| lcd_line(x0 + x, y0 - y,x0 - x, y0 - y,1); |
| lcd_line(x0 + y, y0 + x,x0 - y, y0 + x,1); |
| lcd_line(x0 + y, y0 - x,x0 - y, y0 - x,1); |
| } |
| } |
| /Transportables_Koptertool/tags/V-0.1/lcd.h |
|---|
| 0,0 → 1,27 |
| #ifndef graphics_h |
| #define graphics_h |
| void lcd_init (void); |
| void lcd_plot (uint8_t x, uint8_t y, uint8_t mode); |
| void lcd_rect (uint8_t x1, uint8_t y1, uint8_t widthx, uint8_t widthy,uint8_t mode); |
| void lcd_frect (uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2, uint8_t mode); |
| void draw_circle(int16_t x0, int16_t y0, int16_t radius, uint8_t mode); |
| void draw_fcircle(int16_t x0, int16_t y0, int16_t radius); |
| void put_char (uint8_t x, uint8_t y, uint8_t c, uint8_t mode); |
| void lcd_line(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, uint8_t mode); |
| void send_byte (uint8_t data); |
| void lcd_print(uint8_t *text, uint8_t mode); |
| void lcd_print_at (uint8_t x, uint8_t y, uint8_t *text, uint8_t mode); |
| void lcd_printp (const char *text, uint8_t mode); |
| void lcd_print_atp (uint8_t x, uint8_t y, const char *text, uint8_t mode); |
| void lcd_cls (void); |
| volatile uint8_t display_buffer[1024]; // Display-Puffer, weil nicht zurückgelesen werden kann |
| volatile uint16_t display_buffer_pointer; // Pointer auf das aktuell übertragene Byte |
| volatile uint8_t display_buffer_counter; // Hilfszähler zur Selektierung der Page |
| volatile uint8_t display_page_counter; // aktuelle Page-Nummer |
| volatile uint8_t display_mode; // Modus für State-Machine |
| volatile uint8_t LCD_ORIENTATION; |
| #endif |
| /Transportables_Koptertool/tags/V-0.1/main.c |
|---|
| 0,0 → 1,88 |
| /* |
| Mobiles Mikrokopter-Tool |
| +++++ BETA 0.1 +++++ |
| Diese Software ist Open-Source und darf nicht für kommerzielle Zwecke verwendet werden. |
| Die Software darf kopiert, verändert und weitergegeben werden, unter der Bedingung, |
| dass immer der komplette Source inklusive dieser Lizenz weitergegeben wird. |
| Für den LCD-Font gilt das dort angegebene Copyright. |
| (C) 2008 Thomas Kaiser, thomas@ft-fanpage.de |
| Die Software wird "so wie sie ist" geliefert. |
| Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion. |
| Benutzung auf eigene Gefahr. |
| Ich übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden. |
| Dies gilt insbesondere für die vorliegende Beta-Version. |
| Teile des Source (z.B. die base64-Funktionen) sind abgewandelte Funktionen aus dem Mikrokopter-Source, |
| siehe http://www.mikrokopter.de |
| */ |
| //#define F_CPU 7378200ul |
| #include <avr/io.h> |
| #include <util/delay.h> |
| #include <avr/interrupt.h> |
| #include <stdlib.h> |
| #include <avr/pgmspace.h> |
| #include "main.h" |
| #include "lcd.h" |
| #include "rs232.h" |
| #include "parameter.h" |
| #include "menu.h" |
| #include "display.h" |
| #include "base64.h" |
| #include "timer.h" |
| unsigned char EEPromArray[E2END+1] EEMEM; |
| void ReadParameter(void) |
| { |
| // unsigned char *buffer; |
| LCD_ORIENTATION = eeprom_read_byte(&EEPromArray[EEPROM_ADR_ORIENTATION]); |
| // set = eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET]); |
| // if (number > 5) number = 5; |
| // eeprom_read_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * number], length); |
| } |
| void WriteParameterset(void) |
| { |
| eeprom_write_byte(&EEPromArray[EEPROM_ADR_VALID], 1); |
| eeprom_write_byte(&EEPromArray[EEPROM_ADR_ORIENTATION], 0); |
| // if(number > 5) number = 5; |
| // eeprom_write_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * number], length); |
| // eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], number); // diesen Parametersatz als aktuell merken |
| } |
| int main (void) |
| { |
| PORTA = 0xFF; // unbenutzte Pins auf Pull-Up |
| PORTB = 0x43; |
| PORTC = 0xFC; |
| PORTD = 0x7C; |
| DDRC = 0x03; // Pins für Beleuchtung auf Ausgang |
| DDRD = 0x80; |
| if ((eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID])) != 1) |
| WriteParameterset(); |
| ReadParameter(); |
| // LCD_ORIENTATION = 0; |
| lcd_init(); |
| RS232_init(); |
| timer_init(); |
| sei(); |
| for (;;) |
| main_menu(); |
| } |
| /Transportables_Koptertool/tags/V-0.1/main.eep |
|---|
| 0,0 → 1,0 |
| :00000001FF |
| /Transportables_Koptertool/tags/V-0.1/main.elf |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /Transportables_Koptertool/tags/V-0.1/main.h |
|---|
| 0,0 → 1,45 |
| #ifndef main_h |
| #define main_h |
| #include <avr/eeprom.h> |
| #define set_cs() PORTB |= (1<<4) |
| #define clr_cs() PORTB &=~(1<<4) |
| #define set_reset() PORTB |= (1<<2) |
| #define clr_reset() PORTB &=~(1<<2) |
| #define set_A0() PORTB |= (1<<3) // Data |
| #define clr_A0() PORTB &=~(1<<3) // Command |
| #define set_scl() PORTB |= (1<<7) |
| #define clr_scl() PORTB &=~(1<<7) |
| #define set_si() PORTB |= (1<<5) |
| #define clr_si() PORTB &=~(1<<5) |
| #define key_enter 0x08 |
| #define key_esc 0x04 |
| #define key_plus 0x02 |
| #define key_minus 0x01 |
| #define key_nokey 0x00 |
| extern uint8_t r_buffer[128]; |
| extern uint8_t p_buffer[128]; |
| //extern struct str_DebugIn *p_buffer; |
| extern volatile uint8_t key; |
| extern volatile uint8_t timer; |
| extern volatile uint8_t rs232_timer; |
| #endif |
| //#define EEPROM_ADR_VALID 1 |
| #define EEPROM_ADR_VALID 1 |
| #define EEPROM_ADR_ORIENTATION 2 |
| extern unsigned char EEPromArray[]; |
| #ifndef EEMEM |
| #define EEMEM __attribute__ ((section (".eeprom"))) |
| #endif |
| /Transportables_Koptertool/tags/V-0.1/main.hex |
|---|
| 0,0 → 1,616 |
| :100000000C947E060C9499060C9499060C9499060F |
| :100010000C9499060C9499060C9499060C949906E4 |
| :100020000C9499060C9499060C94B5060C949906B8 |
| :100030000C9499060C94F80B0C9499060C94990660 |
| :100040000C9499060C9499060C9499060C949906B4 |
| :100050000C9499060000000000003E5B4F5B3E00E0 |
| :100060003E6B4F6B3E001C3E7C3E1C00183C7E3CB1 |
| :1000700018001C577D571C001C5E7F5E1C0000187A |
| :100080003C180000FFE7C3E7FF0000182418000039 |
| :10009000FFE7DBE7FF0030483A060E002629792902 |
| :1000A0002600407F05050700407F05253F005A3C9C |
| :1000B000E73C5A007F3E1C1C0800081C1C3E7F00C9 |
| :1000C00014227F2214005F5F005F5F0006097F013A |
| :1000D0007F00006689956A0060606060606094A23D |
| :1000E000FFA2940008047E04080010207E20100067 |
| :1000F00008082A1C0800081C2A0808001E101010F6 |
| :1001000010000C1E0C1E0C0030383E383000060E5D |
| :100110003E0E060000000000000000005F0000002E |
| :10012000000700070000147F147F1400242A7F2A90 |
| :10013000120023130864620036495620500000085C |
| :1001400007030000001C224100000041221C0000A7 |
| :100150002A1C7F1C2A0008083E0808000080703016 |
| :100160000000080808080800000060600000201077 |
| :10017000080402003E5149453E0000427F40000015 |
| :100180007249494946002141494D33001814127FF4 |
| :1001900010002745454539003C4A49493100412175 |
| :1001A00011090700364949493600464949291E00C8 |
| :1001B0000000140000000040340000000008142279 |
| :1001C0004100141414141400004122140800020108 |
| :1001D000590906003E415D594E007C1211127C0007 |
| :1001E0007F49494936003E41414122007F4141411A |
| :1001F0003E007F49494941007F09090901003E410C |
| :10020000415173007F0808087F0000417F410000D2 |
| :100210002040413F01007F08142241007F404040C0 |
| :1002200040007F021C027F007F0408107F003E41D7 |
| :1002300041413E007F09090906003E4151215E000F |
| :100240007F091929460026494949320003017F01E7 |
| :1002500003003F4040403F001F2040201F003F4020 |
| :1002600038403F006314081463000304780403005B |
| :100270006159494D4300007F41414100020408108B |
| :100280002000004141417F0004020102040040407F |
| :10029000404040000003070800002054547840000C |
| :1002A0007F284444380038444444280038444428D3 |
| :1002B0007F0038545454180000087E09020018A426 |
| :1002C000A49C78007F080404780000447D4000006E |
| :1002D0002040403D00007F102844000000417F4046 |
| :1002E00000007C04780478007C080404780038441A |
| :1002F00044443800FC182424180018242418FC0056 |
| :100300007C080404080048545454240004043F4466 |
| :1003100024003C4040207C001C2040201C003C402D |
| :1003200030403C004428102844004C9090907C00C1 |
| :100330004464544C4400000836410000000077003B |
| :1003400000000041360800000201020402003C26C1 |
| :1003500023263C001EA1A16112003A4040207A00F1 |
| :100360003854545559002155557941002154547839 |
| :1003700041002155547840002054557940000C1E0E |
| :100380005272120039555555590039545454590078 |
| :100390003955545458000000457C41000002457D09 |
| :1003A00042000001457C4000791412147900F028C5 |
| :1003B0002528F0007C54554500002054547C5444BA |
| :1003C0007C0A097F4941324949493200324848484C |
| :1003D0003200324A484830003A4141217A003A42DC |
| :1003E00040207800009DA0A07D003944444439009D |
| :1003F0003D4040403D003C24FF242400487E4943CA |
| :1004000066002B2FFC2F2B00FF0929F62000C08847 |
| :100410007E0903002054547941000000447D4100CE |
| :100420003048484A3200384040227A00007A0A0AAE |
| :1004300072007D0D19317D002629292F28002629DB |
| :100440002929260030484D402000380808080800B7 |
| :100450000808080838002F10C8ACBA002F1028343C |
| :10046000FA0000007B00000008142A142200221465 |
| :100470002A140800AA005500AA00AA55AA55AA5590 |
| :1004800055AA55AA55AA000000FF0000101010FF41 |
| :100490000000141414FF00001010FF00FF001010E3 |
| :1004A000F010F000141414FC00001414F700FF0006 |
| :1004B0000000FF00FF001414F404FC0014141710D3 |
| :1004C0001F0010101F101F001414141F0000101024 |
| :1004D00010F000000000001F10101010101F10106E |
| :1004E000101010F01010000000FF1010101010106D |
| :1004F0001010101010FF1010000000FF1414000066 |
| :10050000FF00FF1000001F1017140000FC04F4147B |
| :100510001414171017141414F404F4140000FF003A |
| :10052000F7141414141414141414F700F7141414F6 |
| :100530001417141410101F101F10141414F4141492 |
| :100540001010F010F01000001F101F100000001F0E |
| :100550001414000000FC14140000F010F01010102F |
| :10056000FF10FF10141414FF14141010101F0000BB |
| :10057000000000F01010FFFFFFFFFFFFF0F0F0F0B1 |
| :10058000F0F0FFFFFF000000000000FFFFFF0F0F73 |
| :100590000F0F0F0F3844443844007C2A2A3E1400C1 |
| :1005A0007E0202060600027E027E02006355494179 |
| :1005B00063003844443C0400407E201E20000602B4 |
| :1005C0007E02020099A5E7A599001C2A492A1C0071 |
| :1005D0004C7201724C00304A4D4D30003048784822 |
| :1005E0003000BC625A463D003E49494900007E0148 |
| :1005F00001017E002A2A2A2A2A0044445F4444003A |
| :1006000040514A44400040444A5140000000FF012C |
| :100610000300E080FF00000008086B6B080836123A |
| :1006200036243600060F090F0600000018180000D7 |
| :100630000000101000003040FF010100001F010108 |
| :100640001E0000191D171200003C3C3C3C0000003D |
| :1006500000000000202020202020004E69636B2035 |
| :100660002020202020202020202000526F6C6C2091 |
| :1006700020202020202020202020004761732020DF |
| :10068000202020202020202020200047696572099A |
| :100690000909000000000000000000506F7469317B |
| :1006A0000909090000000000000000506F74693261 |
| :1006B0000909090000000000000000506F74693350 |
| :1006C0000909090000000000000000506F7469343F |
| :1006D0000909090000000000000000436F6E666910 |
| :1006E0006709090900000000000000486F6568659F |
| :1006F0005F4D696E476173202020004C75667464FD |
| :100700007275636B5F4420202020004D6178486F34 |
| :100710006568652020202020202000486F656865DE |
| :100720005F50202020202020202000486F65686531 |
| :100730005F56657273746165726B00486F656865BA |
| :100740005F4143435F5769726B2E00537469636B5B |
| :100750005F50202020202020202000537469636BEC |
| :100760005F44202020202020202000476965725F00 |
| :1007700050202020202020202020004761735F4D42 |
| :10078000696E2020202020202020004761735F4DCB |
| :1007900061782020202020202020004779726F419E |
| :1007A000636346616B746F720900004B6F6D70611B |
| :1007B00073735769726B756E6720004779726F5F4C |
| :1007C00050200909000000000000004779726F5FA7 |
| :1007D0004909090900000000000000556E746572A7 |
| :1007E0007370616E6E756E672020004E6F74476186 |
| :1007F00073090909000000000000004E6F74476192 |
| :10080000735A65697420202020200055666F417559 |
| :10081000737269636874756E672000495F46616B27 |
| :10082000746F7220202020202020005573657250A4 |
| :100830006172616D310909000000005573657250E5 |
| :100840006172616D320909000000005573657250D4 |
| :100850006172616D330909000000005573657250C3 |
| :100860006172616D34090900000000536572766F92 |
| :100870004E69636B4374726C090000536572766F46 |
| :100880004E69636B436F6D70090000536572766F3C |
| :100890004E69636B4D696E09000000536572766F97 |
| :1008A0004E69636B4D617809000000536572766F85 |
| :1008B0004E69636B526566727368004C6F6F704768 |
| :1008C00061734C696D6974090000004C6F6F70545E |
| :1008D00068726573686F6C640900004C6F6F7048D4 |
| :1008E0007973746572657365090000416368734BC1 |
| :1008F0006F70706C756E6709000000416368734724 |
| :100900006567656E4B6F70706C2E0057696E6B6C0F |
| :10091000556D7363686C4E69636B0057696E6B6CE1 |
| :10092000556D7363686C526F6C6C004779726F41E0 |
| :1009300063634162676C65696368004472696674E9 |
| :100940006B6F6D700909000000000044796E616DE5 |
| :10095000696353746162696C6974005573657250A0 |
| :100960006172616D350909000000005573657250B0 |
| :100970006172616D3609090000000055736572509F |
| :100980006172616D3709090000000055736572508E |
| :100990006172616D380909000000004C6F6F70438F |
| :1009A0006F6E666967090900000000536572766F13 |
| :1009B0004E69636B436F6D70496E004C6F6F7020B2 |
| :1009C00075702020202020202020004C6F6F702088 |
| :1009D000646F776E092020202000004C6F6F70201C |
| :1009E0006C656674202020202020004C6F6F7020E2 |
| :1009F000726967687420202020200048F668656EC0 |
| :100A00007265676C6572202020200048F668656E6C |
| :100A1000736368616C746572202000486561646866 |
| :100A20006F6C6409090000000000004B6F6D70617D |
| :100A300073730909000000000000004B6F6D7061C6 |
| :100A4000737346697809090000000047505309098B |
| :100A500009000000000000000000004163687365A9 |
| :100A60006E6B6F70706C756E672000447265687293 |
| :100A70006174650909000000000000010802010816 |
| :100A8000020108020108020108020108020108022D |
| :100A900001080200000000FF0400FF0400FF040042 |
| :100AA000FF0400320400FF040006030040030014AA |
| :100AB0000300200821FA0800320800FF08000005A2 |
| :100AC00000000500FA0800FA0800FA08000100001A |
| :100AD000FF0500FF0900FF0900FF0900FF0900FFF3 |
| :100AE0000700FA0700FA0700FA0700190700FF06D7 |
| :100AF00000FA0600FA0600FF0A00FF0A00FA0600E4 |
| :100B0000FA0600FA0500FA0500FF0500FF0900FFDC |
| :100B10000900FF0900FF09000001000107000000B3 |
| :100B200000000000000000000000000000000000C5 |
| :100B300000000000000000000000000000000000B5 |
| :100B40000000020202020202020200040404040481 |
| :100B50000403030308080808050508080800050938 |
| :100B60000909090707070707070606060A0A06060E |
| :100B70000505050909090900070B0B0B0B0C0C0CEB |
| :100B80000C0C0C0C0C436F6E666967202020200053 |
| :100B90004368616E6E656C73202000537469636BEB |
| :100BA000202020202000486F65686520202020201C |
| :100BB000004779726F202020202020004C6F6F703A |
| :100BC000696E672020200043616D657261202020DE |
| :100BD0002000536F6E7374696765732000557365E9 |
| :100BE0007220202020202000436F75706C696E6792 |
| :100BF000202000436F6E66696728322920004C6F01 |
| :100C00006F70696E67736574002D002D002D004CA8 |
| :100C100061646520506172616D657465720D0A00D2 |
| :100C200020313A0D0A0020323A0D0A0020333A0DE5 |
| :100C30000A0020343A0D0A0020353A0D0A005469A2 |
| :100C40006D656F757400506172616D6574657220B9 |
| :100C500073706569636865726E3F0D0A20206A6172 |
| :100C60000D0A20206E65696E000D0A2D2D2D3E00A7 |
| :100C70000D0A506172616D657465722067657370ED |
| :100C800065696368657274000D0A4E696368742053 |
| :100C900067657370656963686572740020002A0077 |
| :100CA00048617570746D656EFC284245544120564C |
| :100CB000302E31290D0A000D0A446973706C617978 |
| :100CC0000D0A00506172616D657465720D0A004D08 |
| :100CD0006F746F727465737400446973706C6179BA |
| :100CE000000D0A54696D656F757421005461737449 |
| :100CF00065206472FC636B656E0D0A0011241FBED3 |
| :100D0000CFE5D8E0DEBFCDBF10E0A0E6B0E0ECE676 |
| :100D1000F6E202C005900D92A036B107D9F715E0B2 |
| :100D2000A0E6B0E001C01D92A738B107E1F70C942E |
| :100D30009B060C940000CFE5D8E0DEBFCDBF8FEF5F |
| :100D40008BBB83E488BB8CEF85BB8CE782BB83E0E5 |
| :100D500084BB80E881BB0E9453070E941A0C0E944A |
| :100D6000F40678940E94C811FDCF1F920F920FB61F |
| :100D70000F9211248F939F938091E404882331F084 |
| :100D80008091E40481508093E40415C08AE080934C |
| :100D9000E40489B3992780959095689413F8959504 |
| :100DA00087951694E1F78F708093E604809169052A |
| :100DB0008F5F8093690580916100882329F080917D |
| :100DC00061008150809361008091E504882329F0BF |
| :100DD0008091E50481508093E5049F918F910F905D |
| :100DE0000FBE0F901F9018958DE083BF88E48CBFD5 |
| :100DF00089B7826089BF0895C4988FB9779BFECF69 |
| :100E00008EB18EB9C49A08950F931F93CF93DF9339 |
| :100E100082E690E0FC011192019624E0813692076F |
| :100E2000D1F3C8F300E010E0C398802F80550E94F2 |
| :100E3000FC0680E10E94FC0684E00E94FC06C39A46 |
| :100E4000CFE7D0E080E00E94FC062197D7FFFACFE1 |
| :100E50000F5F1F4F0830110538F310926A0510928A |
| :100E60006B05DF91CF911F910F9108950E940407A8 |
| :100E7000089583E397E00197F1F708950F931F9387 |
| :100E8000CF93DF938C01C0E0D0E0C817D90730F4CE |
| :100E90000E9439072196C017D107D0F3DF91CF9177 |
| :100EA0001F910F91089510926A0510926B058FEFB4 |
| :100EB00087BB8EE58DB9C49AC2988AE090E00E9403 |
| :100EC0003E07C29AC498C39880E40E94FC0680EA58 |
| :100ED0000E94FC0688EC0E94FC0686EA0E94FC0642 |
| :100EE00082EA0E94FC068FE20E94FC0688EF0E94C4 |
| :100EF000FC0680E00E94FC0687E20E94FC0681E876 |
| :100F00000E94FC0686E10E94FC068CEA0E94FC0618 |
| :100F100080E00E94FC068FEA0E94FC060E94040703 |
| :100F20000895FF920F931F938C01F62E880F892F3F |
| :100F3000881F990B9195C39880550E94FC06102F2D |
| :100F40001F771C5F812F82958F70805F0E94FC0647 |
| :100F5000812F8F700E94FC06C39A8F2D0E94FC0681 |
| :100F60001F910F91FF900895EF92FF920F931F939F |
| :100F7000CF93DF93C0E0D0E032EEE32E30E0F32EEB |
| :100F8000870100581040F70181917F01F8018083AB |
| :100F900061918F01CE010E9491072196F3E0C03844 |
| :100FA000DF0788F3C0E8D3E002EE13E0F801119206 |
| :100FB0008F0160E0CE010E9491072196F4E0C030DD |
| :100FC000DF07A0F3DF91CF911F910F91FF90EF907A |
| :100FD0000895BF92CF92DF92EF92FF920F931F93EB |
| :100FE000CF93DF93382FF42EB22E842F99278F3D85 |
| :100FF000910589F1803E910574F4863D910529F1B2 |
| :10100000873D910524F4843C9105E1F026C08C3D98 |
| :101010009105F1F022C0863F910571F0873F91055F |
| :1010200024F4843E910529F018C08C3F910539F0D5 |
| :1010300014C014E8F12E11C0C4E9FC2E0EC0B1E8B2 |
| :10104000FB2E0BC0AEE8FA2E08C0F9E9FF2E05C052 |
| :10105000EAE9FE2E02C071EEF72EC62FDD27D695E7 |
| :10106000DC2FCC27D795C79586E0389FC001112487 |
| :10107000C80FD91FD3706E0100E010E045E0E42EE8 |
| :1010800086E0F89EF0011124E00FF11FEC5AFF4FAB |
| :1010900024918B2D992782309105E9F083309105B9 |
| :1010A0002CF4009749F0019771F02CC08330910522 |
| :1010B000D1F00497F1F026C0FE01EE59FF4FE00F8A |
| :1010C000F11F20831FC0FE01EE59FF4FE00FF11FFB |
| :1010D0008081822B16C0FE01EE59FF4FE00FF11FF9 |
| :1010E000808182270EC0FE01EE59FF4FE00FF11FF5 |
| :1010F00006C0FE01EE59FF4FE00FF11F20958081E1 |
| :1011000082238083FE01EE59FF4FE00FF11F6081C3 |
| :10111000C6010E949107EA940F5F1F4F0894C11CFB |
| :10112000D11CE7FEADCFDF91CF911F910F91FF90C2 |
| :10113000EF90DF90CF90BF90089580916B058F5F07 |
| :1011400080936B05883028F00E94B40787E0809375 |
| :101150006B0508951F93CF93DF93EC01162FFC01CD |
| :101160008491882351F1FE0184918032B0F0219660 |
| :101170008491212F482F60916B0580916A050E9410 |
| :10118000E90780916A058F5F80936A05853188F051 |
| :1011900010926A050E949D080CC099278A3091051B |
| :1011A00029F00D9729F410926A0502C00E949D084B |
| :1011B0002196FE0184918823B1F6DF91CF911F9192 |
| :1011C000089580936A0560936B05622FCA010E949F |
| :1011D000AA0808951F93CF93DF93EC01162F8881FF |
| :1011E000882339F148814032A0F02196212F609167 |
| :1011F0006B0580916A050E94E90780916A058F5FFF |
| :1012000080936A05853190F010926A050E949D08CE |
| :101210000DC055274A30510531F04D30510529F4A4 |
| :1012200010926A0502C00E949D0821968881882339 |
| :10123000C9F6DF91CF911F91089580936A0560935D |
| :101240006B05622FCA010E94EA080895982F87FD56 |
| :1012500045C0603408F042C0862F869586958695F5 |
| :10126000A82FBB27B695BA2FAA27B795A795A90F80 |
| :10127000B11D262F33272770307081E090E002C027 |
| :10128000880F991F2A95E2F7982FB37055274130A0 |
| :10129000510589F0423051051CF4452B29F017C047 |
| :1012A0004230510571F013C0FD01EE59FF4F90958A |
| :1012B000808189230BC0FD01EE59FF4F8081892B6E |
| :1012C00005C0FD01EE59FF4F808189278083FD0114 |
| :1012D000EE59FF4F6081CD010E94910708952F9232 |
| :1012E0003F924F925F926F927F928F929F92AF92B6 |
| :1012F000BF92CF92DF92EF92FF920F931F93CF9303 |
| :10130000DF93CDB7DEB723970FB6F894DEBF0FBEDD |
| :10131000CDBF0983A82EBB24C62EDD24642E7724DE |
| :101320007301EA18FB08822E992484010C191D0907 |
| :10133000F7FE04C07FEF272E372E09C01E141F04AE |
| :1013400024F461E0262E312C02C02224332417FF1E |
| :1013500004C05FEF452E552E09C01016110624F467 |
| :1013600041E0442E512C02C044245524F7FE04C011 |
| :10137000F094E194F108F39417FF03C010950195E0 |
| :101380001F4F49816C2D8A2D0E9426090E151F05BD |
| :101390004CF5C701F7FC01969595879522273327D1 |
| :1013A000281B390B3B832A83A614B70409F441C0D8 |
| :1013B0008A819B81800F911F9B838A83A20CB31C1F |
| :1013C0001816190634F4C40CD51C8E199F099B837A |
| :1013D0008A8349816C2D8A2D0E942609A614B704A0 |
| :1013E00039F727C0C80117FD019695958795EE2717 |
| :1013F000FF27E81BF90BFB83EA83C814D904C9F063 |
| :101400002A813B812E0D3F1D3B832A83C40CD51CB2 |
| :101410001216130634F4A20CB31C201B310B3B83B1 |
| :101420002A8349816C2D8A2D0E942609C814D9046B |
| :1014300039F723960FB6F894DEBF0FBECDBFDF910C |
| :10144000CF911F910F91FF90EF90DF90CF90BF90C1 |
| :10145000AF909F908F907F906F905F904F903F9054 |
| :101460002F900895BF92CF92DF92EF92FF920F9349 |
| :101470001F93CF93DF93182F822FB02E17FD1FE7F6 |
| :10148000603408F06FE3212F240F312D311D6901E5 |
| :10149000262F33277901E80EF11C81E8C816D10404 |
| :1014A00018F0F0E8CF2ED12C81E4E816F10418F002 |
| :1014B000E0E4EE2EF12CE901E216F30658F00B2DD4 |
| :1014C0002C2F4C2D6C2F812F0E946F092196EC162A |
| :1014D000FD06A8F7DF91CF911F910F91FF90EF903C |
| :1014E000DF90CF90BF900895CF92DF92EF92FF925E |
| :1014F0000F931F93CF93DF93D82E162FC02E87FF05 |
| :1015000002C0BFE7DB2E103408F01FE38D2D840FDF |
| :10151000912D911DEC01812F820F912D911D7C0148 |
| :10152000C138D10510F0C0E8D0E091E4E916F1042B |
| :1015300018F0A0E4EA2EF12C0C2D212F4C2F612F56 |
| :101540008D2D0E946F092E2D4C2F612F8C2F0E9404 |
| :101550006F092E2D4D2D6E2D8C2F0E946F09212F7E |
| :101560004D2D6E2D8D2D0E946F09DF91CF911F9112 |
| :101570000F91FF90EF90DF90CF9008952F923F92C0 |
| :101580004F925F926F927F928F929F92AF92BF9293 |
| :10159000CF92DF92EF92FF920F931F93CF93DF933F |
| :1015A0005C016B01E22EC1E08C2E912C841A950A0D |
| :1015B000222433248EEF9FEF489F2001499F500C37 |
| :1015C000589F500C11243101EA01862F840F422FBD |
| :1015D000682F8A2D0E9426098C2D8C1B4E2D682F7A |
| :1015E0008A2D0E9426094E2D6C2D8A2D8C0F0E946B |
| :1015F00026094E2D6C2D8A2D8C1B0E9426092C1637 |
| :101600003D060CF051C097FC07C0219782E090E0A6 |
| :10161000480E591E840C951C0894611C711C82E0B4 |
| :1016200090E0280E391E820C931C0894811C911C9A |
| :101630001C2D1C0FFA2CF60C4E2D612F8F2D0E94A5 |
| :1016400026090A2D06194E2D612F802F0E9426098A |
| :101650001C2D1C1B4E2D612F8F2D0E9426094E2DF7 |
| :10166000612F802F0E9426091C2D160DFA2CFC0ECE |
| :101670004E2D612F8F2D0E9426090A2D0C1B4E2DF9 |
| :10168000612F802F0E9426091C2D16194E2D612FC7 |
| :101690008F2D0E9426094E2D612F802F0E94260932 |
| :1016A0006C167D060CF4AFCFDF91CF911F910F9197 |
| :1016B000FF90EF90DF90CF90BF90AF909F908F9072 |
| :1016C0007F906F905F904F903F902F9008952F9252 |
| :1016D0003F924F925F926F927F928F929F92AF92C2 |
| :1016E000BF92CF92DF92FF920F931F93CF93DF931E |
| :1016F0005C016B0111E0612E712C641A750A2224C1 |
| :1017000033248EEF9FEF489F2001499F500C589F34 |
| :10171000500C11244101EA01862F841B962F940F4F |
| :1017200001E0282F4A2D692F8A2D0E946F098A2DEA |
| :101730008C1B2C2D482F6C2D8A2D8C0F0E946F092D |
| :101740002C163D060CF042C077FC07C0219782E0C2 |
| :1017500090E0480E591E640C751C0894811C911C65 |
| :1017600082E090E0280E391E620C731C0894611C04 |
| :10177000711C8C2D8C0F1A2D1819FA2CF80C01E005 |
| :10178000282F412F682F8F2D0E946F098C2D8C1BC5 |
| :10179000282F412F682F8F2D0E946F098C2D880DC7 |
| :1017A0001A2D1C1BFA2CFC0E282F412F682F8F2D71 |
| :1017B0000E946F098C2D8819282F412F682F8F2D9B |
| :1017C0000E946F098C169D060CF4BECFDF91CF915D |
| :1017D0001F910F91FF90DF90CF90BF90AF909F909F |
| :1017E0008F907F906F905F904F903F902F900895D3 |
| :1017F0001F920F920FB60F9211248F939F93EF9326 |
| :10180000FF9390916C05EEE6F5E0E90FF11D8CB1C8 |
| :1018100080839F5F90936C0580916C058F7080939F |
| :101820006C05FF91EF919F918F910F900FBE0F90DC |
| :101830001F90189588E98AB987E089B908958AE0E8 |
| :101840008093E50490916D0580916C05981721F4C3 |
| :101850008091E5048823B1F78091E504882381F025 |
| :1018600080916D05E82FFF27E259FA4F8F5F809333 |
| :101870006D05E08180916D058F7080936D0501C0CD |
| :10188000E82F8E2F992708955D9BFECF8CB9089580 |
| :10189000CF93DF93EC018881882331F089910E94F6 |
| :1018A000440C88818823D1F7DF91CF910895A82F28 |
| :1018B00062E070E06A17B0F5E62FFF27E751FB4FB3 |
| :1018C00080818D5331813D5352815D5343814D530E |
| :1018D0006C5FE72FFF27ED59FB4F9927880F991F62 |
| :1018E000880F991F232F22952F70282B2083832F59 |
| :1018F00099278F70907034E0880F991F3A95E1F71F |
| :10190000252F26952695282B2183852F99278370AF |
| :10191000907026E0880F991F2A95E1F7482B4283A3 |
| :101920007D5FC8CF872F99270895CF9384E1809357 |
| :1019300061000E941F0C833221F080916100882396 |
| :10194000C1F780916100882399F0C0E00E941F0CCC |
| :10195000EC2FFF27E751FB4F8083CF5FC7FDCFE719 |
| :101960008D30A1F78C2F0E94570C80E090E002C0D0 |
| :1019700081E090E0CF910895FF920F931F93CF9352 |
| :10198000A82F809163048093E9048091640480937C |
| :10199000EA04809165048093EB0443E0F42E7F2DEC |
| :1019A000FA16E0F5E72FFF27ED59FB4F90812181D3 |
| :1019B00062817D5FEF2DFF27E751FB4F892F8695D1 |
| :1019C0008695835C8083892F99278370907034E09B |
| :1019D000880F991F3A95E1F7422F55279A0194E015 |
| :1019E000369527959A95E1F7822B835C81834F701A |
| :1019F0005070440F551F440F551F862F992716E02E |
| :101A0000969587951A95E1F7842B835C82836F7393 |
| :101A1000635C638384E0F80E7A1720F220E030E004 |
| :101A2000C0E0CF1540F4E9EEF4E08191280F311DBC |
| :101A3000CF5FCF15D0F33F70EF2DFF27E751FB4F5E |
| :101A4000C901C6E096958795CA95E1F7835C8083C6 |
| :101A50002F733070822F835C81838DE082831382A9 |
| :101A600083E0F80EC381CF1550F409EE14E0F801BD |
| :101A700081918F010E94440CCF5FCF15C0F3CF91AD |
| :101A80001F910F91FF9008951F93CF93DF93CDB7D0 |
| :101A9000DEB761970FB6F894DEBF0FBECDBF182F2B |
| :101AA00083E28093630481E68093640480936504F9 |
| :101AB00010936604109267041092680486E00E94F6 |
| :101AC000BC0C0E94950C8091EA048134D1F7DE01B0 |
| :101AD0001196E3E6F4E09FE081918D93915097FF9A |
| :101AE000FBCF198A17702989AE014F5F5F4F612FB5 |
| :101AF000822F0E941D0961960FB6F894DEBF0FBEBB |
| :101B0000CDBFDF91CF911F910895CF92DF92EF92D9 |
| :101B1000FF920F931F93CF93DF93CDB7DEB76197FB |
| :101B20000FB6F894DEBF0FBECDBF00E00E943607AF |
| :101B300010E0C02EDD24C60153E0880F991F5A958E |
| :101B4000E1F7810F0E94440D1F5F183090F30E944F |
| :101B5000950C8091EA04843491F510E0EE24FF2482 |
| :101B6000F60143E0EE0FFF1F4A95E1F7EE0DFF1D72 |
| :101B7000EE0FFF1FED59FB4F228183819927982F8C |
| :101B800088274AE050E0BE016F5F7F4F820F911DB2 |
| :101B90000E94CF1220E044E556E0612F8EE00E94C3 |
| :101BA000E10820E0AE014F5F5F4F612F8EE00E94A1 |
| :101BB0001D091F5F0894E11CF11C183088F2809108 |
| :101BC000E604882321F28091E604813009F40F5F56 |
| :101BD0008091E604823009F4015003708091E6049C |
| :101BE000883009F0A5CF61960FB6F894DEBF0FBE1E |
| :101BF000CDBFDF91CF911F910F91FF90EF90DF90BC |
| :101C0000CF900895CF93C0E093E29093630491E660 |
| :101C10009093640491E79093650480936604C09365 |
| :101C20006704C093680486E00E94BC0C0E94950C77 |
| :101C3000813009F4CEE1CF5F8091EA048C54853085 |
| :101C400010F0CE3198F3CE3118F081E090E002C070 |
| :101C500080E090E0CF910895982F8630B8F4E9EABB |
| :101C6000F4E026E4808183832150319727FFFACF67 |
| :101C700083E28093630481E6809364049559909392 |
| :101C800065041092AD048BE40E94BC0C08959B0186 |
| :101C9000682F772751E0F90120E030E047E0CB01E1 |
| :101CA000022E02C0959587950A94E2F780FF02C044 |
| :101CB000508301C0108241502F5F3F4F319647FF44 |
| :101CC000EECF089550E061E070E0FC0120E030E0EC |
| :101CD00047E08191813041F4CB01022E02C0880F90 |
| :101CE000991F0A94E2F7580F41502F5F3F4F47FF6B |
| :101CF000F0CF852F99270895282FFB0134E6632F15 |
| :101D00000E941613582F839FC0011124281B3AE00C |
| :101D1000822F632F0E941613482F839FC001112426 |
| :101D2000281B205D2283852F805D8083405D418359 |
| :101D3000803329F480E28083403309F48183138265 |
| :101D400008959F92AF92BF92CF92DF92EF92FF924F |
| :101D50000F931F93CF93DF93CDB7DEB7A1970FB645 |
| :101D6000F894DEBF0FBECDBF082F9924823008F44F |
| :101D70003EC0192D4BE5A42E46E0B42E33E6C32E0B |
| :101D800034E0D32E2DE7E22E2AE0F22EF7018491E3 |
| :101D90008017F1F4E92DFF27E158FA4F1083BE01B7 |
| :101DA0006F5F7F4FF60180810E947C0E20E0AE01C4 |
| :101DB0004F5F5F4F692D822F0E941D0920E0A50112 |
| :101DC000692D85E00E94E108F7E0F91508F0939489 |
| :101DD0001F5F83E090E0E80EF91E0894C11CD11C3F |
| :101DE000E0E1F0E0AE0EBF1E123480F25FC0813041 |
| :101DF00071F5BE01665E7F4F809197040E94470E89 |
| :101E00009A82192D9BEBC92E99E0D92EEE24FF243E |
| :101E1000CE010196F701E80FF91F218D205D29837E |
| :101E200020E0AC01612F822F0E941D0920E0A60155 |
| :101E3000612F85E00E94E1081F5F0894E11CF11CFE |
| :101E400080E190E0C80ED91E143010F32FC0882313 |
| :101E500069F5BE01665E7F4F80916B040E94470E5C |
| :101E60009A82192D8BEFC82E89E0D82EEE24FF24FC |
| :101E7000CE010196F701E80FF91F218D205D29831E |
| :101E800020E0AC01612F822F0E941D0920E0A601F5 |
| :101E9000612F85E00E94E1081F5F0894E11CF11C9E |
| :101EA000E0E1F0E0CE0EDF1E183010F3892D992707 |
| :101EB000A1960FB6F894DEBF0FBECDBFDF91CF91D4 |
| :101EC0001F910F91FF90EF90DF90CF90BF90AF9058 |
| :101ED0009F9008958F929F92AF92BF92DF92EF9260 |
| :101EE000FF920F931F93CF93DF93CDB7DEB7629727 |
| :101EF0000FB6F894DEBF0FBECDBFD82E81E08D1592 |
| :101F000008F055C0615044E080E00E948611082F1F |
| :101F10008F3F09F44CC0E82EFF24F701E158FA4F37 |
| :101F20008081E82FFF27ED59FB4F108120E049E029 |
| :101F30005CE0602F84E00E94E1088091E604882341 |
| :101F4000E1F78091E604813009F411508091E604B4 |
| :101F5000823009F41F5FBE016F5F7F4F812F0E94A7 |
| :101F60007C0E20E0AE014F5F5F4F602F822F0E94FA |
| :101F70001D0984E180936100809161008823E1F76D |
| :101F80008091E604843021F08091E6048830C9F61F |
| :101F90008091E604883059F4EFE7F5E0EE0EFF1E7D |
| :101FA000F7018081E82FFF27ED59FB4F1083F1E007 |
| :101FB000DF1609F06CC06BE0862E912C8C0E9D1EF6 |
| :101FC000B401809197040E94470E1A8244E063E0B6 |
| :101FD0008A810E948611082F8F3F09F4C6C0E82E1F |
| :101FE000FF245E010894A11CB11CF701EA0DFB1D42 |
| :101FF000128520E04BE05CE0682F84E00E94E1085D |
| :102000008091E604813009F410E08091E60482308A |
| :1020100009F411E0105D1983105320E0AE014F5F09 |
| :102020005F4F602F822F0E941D0984E18093610021 |
| :10203000D0906100DD20E1F78091E604883021F046 |
| :102040008091E6048430E1F68091E604883049F41A |
| :10205000EA0CFB1CF7011287C4010E94620E8093F8 |
| :1020600097040E943607BE016F5F7F4F80919704EF |
| :102070000E947C0E6D2DCE0101960E94EA0888EC2C |
| :1020800080936100809161008823E1F76EC0DD20BC |
| :1020900009F06BC05BE0852E912C8C0E9D1EB40167 |
| :1020A00080916B040E94470EDA8244E067E08D2D38 |
| :1020B0000E948611082F8F3F09F457C0E82EFF2495 |
| :1020C0005E010894A11CB11CF701EA0DFB1D1285ED |
| :1020D0002D2D4DE05CE0682F84E00E94E1088091A6 |
| :1020E000E604813009F410E08091E604823009F4BE |
| :1020F00011E0105D1983105320E0AE014F5F5F4F78 |
| :10210000602F822F0E941D0984E180936100D0908E |
| :102110006100DD20E1F78091E604883021F08091B4 |
| :10212000E6048430E1F68091E604883049F4EA0C54 |
| :10213000FB1CF7011287C4010E94620E80936B049E |
| :102140000E943607BE016F5F7F4F80916B040E9433 |
| :102150007C0E6D2DCE0101960E94EA0888EC8093DA |
| :102160006100809161008823E1F762960FB6F894D0 |
| :10217000DEBF0FBECDBFDF91CF911F910F91FF90BA |
| :10218000EF90DF90BF90AF909F908F9008951F9336 |
| :10219000CF93DF93CDB7DEB72F970FB6F894DEBF9E |
| :1021A0000FBECDBF0E94360760E08FE09CE00E942A |
| :1021B000AA0860E080E29CE00E94AA0860E086E253 |
| :1021C0009CE00E94AA0860E08CE29CE00E94AA08C1 |
| :1021D00060E082E39CE00E94AA0860E088E39CE063 |
| :1021E0000E94AA0840E065E081E00E94861112E0AA |
| :1021F0000E94020E813041F420E04EE35CE066E094 |
| :10220000822F0E94E1085CC00E9436074AE050E03D |
| :10221000BE016F5F7F4F812F99270E94F01260E00F |
| :10222000CE0101960E94EA0882E3809361008091CA |
| :1022300061008823E1F70E943607812F0E94A10EDA |
| :10224000682F8091E6048823E1F38091E6048230D0 |
| :1022500009F41F5F8091E604813009F411501F3F9B |
| :1022600011F41CE003C01D3008F010E08091E6047A |
| :10227000883019F4812F0E946A0F8091E60484301F |
| :1022800019F60E94360760E086E49CE00E94AA08E6 |
| :1022900040E062E081E00E948611813061F460E0FC |
| :1022A00089E69CE00E94AA0885E00E942C0E60E06E |
| :1022B00080E79CE003C060E088E89CE00E94AA08F8 |
| :1022C00084E680936100809161008823E1F72F9676 |
| :1022D0000FB6F894DEBF0FBECDBFDF91CF911F9137 |
| :1022E00008950F931F93062F142F20E04CE95CE014 |
| :1022F000682F812F0E94E10820E04EE95CE0602F0A |
| :10230000812F0E94E1081F910F910895EF92FF9293 |
| :102310000F931F93CF93F82EE62E042FC82F182F5C |
| :10232000682F0E9471118091E6048823E1F7809163 |
| :10233000E6048823E1F38091E604823019F4CE1597 |
| :1023400008F4CF5F8091E604813019F4FC1608F49C |
| :10235000C150402F6C2F812F0E9471111C2F809132 |
| :10236000E604883021F08091E6048430E1F6809123 |
| :10237000E604843009F4CFEF8091E6048823E1F786 |
| :102380008C2F9927CF911F910F91FF90EF90089577 |
| :102390000E94360760E080EA9CE00E94AA0860E0A4 |
| :1023A00087EB9CE00E94AA0860E083EC9CE00E941E |
| :1023B000AA0860E08FEC9CE00E94AA084AE064E072 |
| :1023C00082E00E94861199278330910561F0843064 |
| :1023D00091051CF4029721F00895049739F00895AF |
| :1023E0000E94231208950E94C71008950E9483122C |
| :1023F0000895CF93C0E093E29093630491E69093A5 |
| :10240000640498E69093650480936604C09367041F |
| :10241000C093680486E00E94BC0C0E94950C813039 |
| :1024200009F4CAE0CF5F8091EA048053853010F050 |
| :10243000CA3098F3CA3018F081E090E002C080E022 |
| :1024400090E0CF9108950F931F93CF93DF93CDB773 |
| :10245000DEB72A970FB6F894DEBF0FBECDBF0E943D |
| :10246000360760E089ED9CE00E94AA080091E6042E |
| :102470000023E1F7802F0E94F911813069F4602F69 |
| :1024800081EE9CE00E94AA0888EC80936100809114 |
| :1024900061008823E1F72CC01091EA0419830A83B4 |
| :1024A000202FAE014F5F5F4F602F8AE00E941D0911 |
| :1024B0001F5F202F43E654E0612F802F0E941D09EB |
| :1024C0008AE080936100809161008823E1F7809128 |
| :1024D000E604813011F40E94F9118091E604823003 |
| :1024E00011F40E94F9118091E604843009F0BECF06 |
| :1024F0002A960FB6F894DEBF0FBECDBFDF91CF9105 |
| :102500001F910F9108950E9436076091E60466239B |
| :10251000E1F78CEE9CE00E94AA088091E6048823F3 |
| :10252000E1F38091E6048830C9F483E28093630488 |
| :1025300081E68093640484E7809365048AE0809355 |
| :102540006604809367048093680480936904109202 |
| :102550006A0410926B0489E00E94BC0C8091E6042E |
| :102560008823E1F78091E6048823E1F383E28093F6 |
| :10257000630481E68093640484E780936504109289 |
| :102580006604109267041092680410926904109215 |
| :102590006A0410926B0489E00E94BC0C0895FB0150 |
| :1025A0009F01E8944230C4F04532B4F44A3029F433 |
| :1025B00097FB1EF4909581959F4F642F77270E947B |
| :1025C0002213805D8A330CF0895D8193CB010097E3 |
| :1025D000A1F716F45DE251931082C9010C94061321 |
| :1025E000FB019F01423074F0453264F4642F772779 |
| :1025F0000E942213805D8A330CF0895D8193CB01A8 |
| :102600000097A1F71082C9010C940613DC01FC01AC |
| :1026100001900020E9F73297AE17BF0730F47C91A4 |
| :102620006081708331976D93F7CF0895991B79E09E |
| :1026300004C0991F961708F0961B881F7A95C9F752 |
| :1026400080950895AA1BBB1B51E107C0AA1FBB1FA1 |
| :10265000A617B70710F0A61BB70B881F991F5A952E |
| :0C266000A9F780959095BC01CD0108956C |
| :00000001FF |
| /Transportables_Koptertool/tags/V-0.1/main.lss |
|---|
| 0,0 → 1,5331 |
| main.elf: file format elf32-avr |
| Sections: |
| Idx Name Size VMA LMA File off Algn |
| 0 .text 0000266c 00000000 00000000 00000094 2**0 |
| CONTENTS, ALLOC, LOAD, READONLY, CODE |
| 1 .data 00000000 00800060 0000266c 00002700 2**0 |
| CONTENTS, ALLOC, LOAD, DATA |
| 2 .bss 00000527 00800060 00800060 00002700 2**0 |
| ALLOC |
| 3 .noinit 00000000 00800587 00800587 00002700 2**0 |
| CONTENTS |
| 4 .eeprom 00000000 00810000 00810000 00002700 2**0 |
| CONTENTS |
| 5 .stab 0000036c 00000000 00000000 00002700 2**2 |
| CONTENTS, READONLY, DEBUGGING |
| 6 .stabstr 00000084 00000000 00000000 00002a6c 2**0 |
| CONTENTS, READONLY, DEBUGGING |
| 7 .debug_aranges 000000c8 00000000 00000000 00002af0 2**0 |
| CONTENTS, READONLY, DEBUGGING |
| 8 .debug_pubnames 00000902 00000000 00000000 00002bb8 2**0 |
| CONTENTS, READONLY, DEBUGGING |
| 9 .debug_info 00001dfa 00000000 00000000 000034ba 2**0 |
| CONTENTS, READONLY, DEBUGGING |
| 10 .debug_abbrev 0000098e 00000000 00000000 000052b4 2**0 |
| CONTENTS, READONLY, DEBUGGING |
| 11 .debug_line 00001982 00000000 00000000 00005c42 2**0 |
| CONTENTS, READONLY, DEBUGGING |
| 12 .debug_str 000004dc 00000000 00000000 000075c4 2**0 |
| CONTENTS, READONLY, DEBUGGING |
| 13 .debug_ranges 0000000c 0000266c 0000266c 00007aa0 2**0 |
| CONTENTS, READONLY, DEBUGGING |
| Disassembly of section .text: |
| 00000000 <__vectors>: |
| 0: 0c 94 7e 06 jmp 0xcfc <__init> |
| 4: 0c 94 99 06 jmp 0xd32 <__bad_interrupt> |
| 8: 0c 94 99 06 jmp 0xd32 <__bad_interrupt> |
| c: 0c 94 99 06 jmp 0xd32 <__bad_interrupt> |
| 10: 0c 94 99 06 jmp 0xd32 <__bad_interrupt> |
| 14: 0c 94 99 06 jmp 0xd32 <__bad_interrupt> |
| 18: 0c 94 99 06 jmp 0xd32 <__bad_interrupt> |
| 1c: 0c 94 99 06 jmp 0xd32 <__bad_interrupt> |
| 20: 0c 94 99 06 jmp 0xd32 <__bad_interrupt> |
| 24: 0c 94 99 06 jmp 0xd32 <__bad_interrupt> |
| 28: 0c 94 b5 06 jmp 0xd6a <__vector_10> |
| 2c: 0c 94 99 06 jmp 0xd32 <__bad_interrupt> |
| 30: 0c 94 99 06 jmp 0xd32 <__bad_interrupt> |
| 34: 0c 94 f8 0b jmp 0x17f0 <__vector_13> |
| 38: 0c 94 99 06 jmp 0xd32 <__bad_interrupt> |
| 3c: 0c 94 99 06 jmp 0xd32 <__bad_interrupt> |
| 40: 0c 94 99 06 jmp 0xd32 <__bad_interrupt> |
| 44: 0c 94 99 06 jmp 0xd32 <__bad_interrupt> |
| 48: 0c 94 99 06 jmp 0xd32 <__bad_interrupt> |
| 4c: 0c 94 99 06 jmp 0xd32 <__bad_interrupt> |
| 50: 0c 94 99 06 jmp 0xd32 <__bad_interrupt> |
| 00000054 <__ctors_end>: |
| 54: 00 00 nop |
| 56: 00 00 nop |
| 58: 00 00 nop |
| 5a: 3e 5b subi r19, 0xBE ; 190 |
| 5c: 4f 5b subi r20, 0xBF ; 191 |
| 5e: 3e 00 .word 0x003e ; ???? |
| 60: 3e 6b ori r19, 0xBE ; 190 |
| 62: 4f 6b ori r20, 0xBF ; 191 |
| 64: 3e 00 .word 0x003e ; ???? |
| 66: 1c 3e cpi r17, 0xEC ; 236 |
| 68: 7c 3e cpi r23, 0xEC ; 236 |
| 6a: 1c 00 .word 0x001c ; ???? |
| 6c: 18 3c cpi r17, 0xC8 ; 200 |
| 6e: 7e 3c cpi r23, 0xCE ; 206 |
| 70: 18 00 .word 0x0018 ; ???? |
| 72: 1c 57 subi r17, 0x7C ; 124 |
| 74: 7d 57 subi r23, 0x7D ; 125 |
| 76: 1c 00 .word 0x001c ; ???? |
| 78: 1c 5e subi r17, 0xEC ; 236 |
| 7a: 7f 5e subi r23, 0xEF ; 239 |
| 7c: 1c 00 .word 0x001c ; ???? |
| 7e: 00 18 sub r0, r0 |
| 80: 3c 18 sub r3, r12 |
| 82: 00 00 nop |
| 84: ff e7 ldi r31, 0x7F ; 127 |
| 86: c3 e7 ldi r28, 0x73 ; 115 |
| 88: ff 00 .word 0x00ff ; ???? |
| 8a: 00 18 sub r0, r0 |
| 8c: 24 18 sub r2, r4 |
| 8e: 00 00 nop |
| 90: ff e7 ldi r31, 0x7F ; 127 |
| 92: db e7 ldi r29, 0x7B ; 123 |
| 94: ff 00 .word 0x00ff ; ???? |
| 96: 30 48 sbci r19, 0x80 ; 128 |
| 98: 3a 06 cpc r3, r26 |
| 9a: 0e 00 .word 0x000e ; ???? |
| 9c: 26 29 or r18, r6 |
| 9e: 79 29 or r23, r9 |
| a0: 26 00 .word 0x0026 ; ???? |
| a2: 40 7f andi r20, 0xF0 ; 240 |
| a4: 05 05 cpc r16, r5 |
| a6: 07 00 .word 0x0007 ; ???? |
| a8: 40 7f andi r20, 0xF0 ; 240 |
| aa: 05 25 eor r16, r5 |
| ac: 3f 00 .word 0x003f ; ???? |
| ae: 5a 3c cpi r21, 0xCA ; 202 |
| b0: e7 3c cpi r30, 0xC7 ; 199 |
| b2: 5a 00 .word 0x005a ; ???? |
| b4: 7f 3e cpi r23, 0xEF ; 239 |
| b6: 1c 1c adc r1, r12 |
| b8: 08 00 .word 0x0008 ; ???? |
| ba: 08 1c adc r0, r8 |
| bc: 1c 3e cpi r17, 0xEC ; 236 |
| be: 7f 00 .word 0x007f ; ???? |
| c0: 14 22 and r1, r20 |
| c2: 7f 22 and r7, r31 |
| c4: 14 00 .word 0x0014 ; ???? |
| c6: 5f 5f subi r21, 0xFF ; 255 |
| c8: 00 5f subi r16, 0xF0 ; 240 |
| ca: 5f 00 .word 0x005f ; ???? |
| cc: 06 09 sbc r16, r6 |
| ce: 7f 01 movw r14, r30 |
| d0: 7f 00 .word 0x007f ; ???? |
| d2: 00 66 ori r16, 0x60 ; 96 |
| d4: 89 95 .word 0x9589 ; ???? |
| d6: 6a 00 .word 0x006a ; ???? |
| d8: 60 60 ori r22, 0x00 ; 0 |
| da: 60 60 ori r22, 0x00 ; 0 |
| dc: 60 60 ori r22, 0x00 ; 0 |
| de: 94 a2 std Z+36, r9 ; 0x24 |
| e0: ff a2 std Y+39, r15 ; 0x27 |
| e2: 94 00 .word 0x0094 ; ???? |
| e4: 08 04 cpc r0, r8 |
| e6: 7e 04 cpc r7, r14 |
| e8: 08 00 .word 0x0008 ; ???? |
| ea: 10 20 and r1, r0 |
| ec: 7e 20 and r7, r14 |
| ee: 10 00 .word 0x0010 ; ???? |
| f0: 08 08 sbc r0, r8 |
| f2: 2a 1c adc r2, r10 |
| f4: 08 00 .word 0x0008 ; ???? |
| f6: 08 1c adc r0, r8 |
| f8: 2a 08 sbc r2, r10 |
| fa: 08 00 .word 0x0008 ; ???? |
| fc: 1e 10 cpse r1, r14 |
| fe: 10 10 cpse r1, r0 |
| 100: 10 00 .word 0x0010 ; ???? |
| 102: 0c 1e adc r0, r28 |
| 104: 0c 1e adc r0, r28 |
| 106: 0c 00 .word 0x000c ; ???? |
| 108: 30 38 cpi r19, 0x80 ; 128 |
| 10a: 3e 38 cpi r19, 0x8E ; 142 |
| 10c: 30 00 .word 0x0030 ; ???? |
| 10e: 06 0e add r0, r22 |
| 110: 3e 0e add r3, r30 |
| 112: 06 00 .word 0x0006 ; ???? |
| ... |
| 11c: 5f 00 .word 0x005f ; ???? |
| 11e: 00 00 nop |
| 120: 00 07 cpc r16, r16 |
| 122: 00 07 cpc r16, r16 |
| 124: 00 00 nop |
| 126: 14 7f andi r17, 0xF4 ; 244 |
| 128: 14 7f andi r17, 0xF4 ; 244 |
| 12a: 14 00 .word 0x0014 ; ???? |
| 12c: 24 2a or r2, r20 |
| 12e: 7f 2a or r7, r31 |
| 130: 12 00 .word 0x0012 ; ???? |
| 132: 23 13 cpse r18, r19 |
| 134: 08 64 ori r16, 0x48 ; 72 |
| 136: 62 00 .word 0x0062 ; ???? |
| 138: 36 49 sbci r19, 0x96 ; 150 |
| 13a: 56 20 and r5, r6 |
| 13c: 50 00 .word 0x0050 ; ???? |
| 13e: 00 08 sbc r0, r0 |
| 140: 07 03 mulsu r16, r23 |
| 142: 00 00 nop |
| 144: 00 1c adc r0, r0 |
| 146: 22 41 sbci r18, 0x12 ; 18 |
| 148: 00 00 nop |
| 14a: 00 41 sbci r16, 0x10 ; 16 |
| 14c: 22 1c adc r2, r2 |
| 14e: 00 00 nop |
| 150: 2a 1c adc r2, r10 |
| 152: 7f 1c adc r7, r15 |
| 154: 2a 00 .word 0x002a ; ???? |
| 156: 08 08 sbc r0, r8 |
| 158: 3e 08 sbc r3, r14 |
| 15a: 08 00 .word 0x0008 ; ???? |
| 15c: 00 80 ld r0, Z |
| 15e: 70 30 cpi r23, 0x00 ; 0 |
| 160: 00 00 nop |
| 162: 08 08 sbc r0, r8 |
| 164: 08 08 sbc r0, r8 |
| 166: 08 00 .word 0x0008 ; ???? |
| 168: 00 00 nop |
| 16a: 60 60 ori r22, 0x00 ; 0 |
| 16c: 00 00 nop |
| 16e: 20 10 cpse r2, r0 |
| 170: 08 04 cpc r0, r8 |
| 172: 02 00 .word 0x0002 ; ???? |
| 174: 3e 51 subi r19, 0x1E ; 30 |
| 176: 49 45 sbci r20, 0x59 ; 89 |
| 178: 3e 00 .word 0x003e ; ???? |
| 17a: 00 42 sbci r16, 0x20 ; 32 |
| 17c: 7f 40 sbci r23, 0x0F ; 15 |
| 17e: 00 00 nop |
| 180: 72 49 sbci r23, 0x92 ; 146 |
| 182: 49 49 sbci r20, 0x99 ; 153 |
| 184: 46 00 .word 0x0046 ; ???? |
| 186: 21 41 sbci r18, 0x11 ; 17 |
| 188: 49 4d sbci r20, 0xD9 ; 217 |
| 18a: 33 00 .word 0x0033 ; ???? |
| 18c: 18 14 cp r1, r8 |
| 18e: 12 7f andi r17, 0xF2 ; 242 |
| 190: 10 00 .word 0x0010 ; ???? |
| 192: 27 45 sbci r18, 0x57 ; 87 |
| 194: 45 45 sbci r20, 0x55 ; 85 |
| 196: 39 00 .word 0x0039 ; ???? |
| 198: 3c 4a sbci r19, 0xAC ; 172 |
| 19a: 49 49 sbci r20, 0x99 ; 153 |
| 19c: 31 00 .word 0x0031 ; ???? |
| 19e: 41 21 and r20, r1 |
| 1a0: 11 09 sbc r17, r1 |
| 1a2: 07 00 .word 0x0007 ; ???? |
| 1a4: 36 49 sbci r19, 0x96 ; 150 |
| 1a6: 49 49 sbci r20, 0x99 ; 153 |
| 1a8: 36 00 .word 0x0036 ; ???? |
| 1aa: 46 49 sbci r20, 0x96 ; 150 |
| 1ac: 49 29 or r20, r9 |
| 1ae: 1e 00 .word 0x001e ; ???? |
| 1b0: 00 00 nop |
| 1b2: 14 00 .word 0x0014 ; ???? |
| 1b4: 00 00 nop |
| 1b6: 00 40 sbci r16, 0x00 ; 0 |
| 1b8: 34 00 .word 0x0034 ; ???? |
| 1ba: 00 00 nop |
| 1bc: 00 08 sbc r0, r0 |
| 1be: 14 22 and r1, r20 |
| 1c0: 41 00 .word 0x0041 ; ???? |
| 1c2: 14 14 cp r1, r4 |
| 1c4: 14 14 cp r1, r4 |
| 1c6: 14 00 .word 0x0014 ; ???? |
| 1c8: 00 41 sbci r16, 0x10 ; 16 |
| 1ca: 22 14 cp r2, r2 |
| 1cc: 08 00 .word 0x0008 ; ???? |
| 1ce: 02 01 movw r0, r4 |
| 1d0: 59 09 sbc r21, r9 |
| 1d2: 06 00 .word 0x0006 ; ???? |
| 1d4: 3e 41 sbci r19, 0x1E ; 30 |
| 1d6: 5d 59 subi r21, 0x9D ; 157 |
| 1d8: 4e 00 .word 0x004e ; ???? |
| 1da: 7c 12 cpse r7, r28 |
| 1dc: 11 12 cpse r1, r17 |
| 1de: 7c 00 .word 0x007c ; ???? |
| 1e0: 7f 49 sbci r23, 0x9F ; 159 |
| 1e2: 49 49 sbci r20, 0x99 ; 153 |
| 1e4: 36 00 .word 0x0036 ; ???? |
| 1e6: 3e 41 sbci r19, 0x1E ; 30 |
| 1e8: 41 41 sbci r20, 0x11 ; 17 |
| 1ea: 22 00 .word 0x0022 ; ???? |
| 1ec: 7f 41 sbci r23, 0x1F ; 31 |
| 1ee: 41 41 sbci r20, 0x11 ; 17 |
| 1f0: 3e 00 .word 0x003e ; ???? |
| 1f2: 7f 49 sbci r23, 0x9F ; 159 |
| 1f4: 49 49 sbci r20, 0x99 ; 153 |
| 1f6: 41 00 .word 0x0041 ; ???? |
| 1f8: 7f 09 sbc r23, r15 |
| 1fa: 09 09 sbc r16, r9 |
| 1fc: 01 00 .word 0x0001 ; ???? |
| 1fe: 3e 41 sbci r19, 0x1E ; 30 |
| 200: 41 51 subi r20, 0x11 ; 17 |
| 202: 73 00 .word 0x0073 ; ???? |
| 204: 7f 08 sbc r7, r15 |
| 206: 08 08 sbc r0, r8 |
| 208: 7f 00 .word 0x007f ; ???? |
| 20a: 00 41 sbci r16, 0x10 ; 16 |
| 20c: 7f 41 sbci r23, 0x1F ; 31 |
| 20e: 00 00 nop |
| 210: 20 40 sbci r18, 0x00 ; 0 |
| 212: 41 3f cpi r20, 0xF1 ; 241 |
| 214: 01 00 .word 0x0001 ; ???? |
| 216: 7f 08 sbc r7, r15 |
| 218: 14 22 and r1, r20 |
| 21a: 41 00 .word 0x0041 ; ???? |
| 21c: 7f 40 sbci r23, 0x0F ; 15 |
| 21e: 40 40 sbci r20, 0x00 ; 0 |
| 220: 40 00 .word 0x0040 ; ???? |
| 222: 7f 02 muls r23, r31 |
| 224: 1c 02 muls r17, r28 |
| 226: 7f 00 .word 0x007f ; ???? |
| 228: 7f 04 cpc r7, r15 |
| 22a: 08 10 cpse r0, r8 |
| 22c: 7f 00 .word 0x007f ; ???? |
| 22e: 3e 41 sbci r19, 0x1E ; 30 |
| 230: 41 41 sbci r20, 0x11 ; 17 |
| 232: 3e 00 .word 0x003e ; ???? |
| 234: 7f 09 sbc r23, r15 |
| 236: 09 09 sbc r16, r9 |
| 238: 06 00 .word 0x0006 ; ???? |
| 23a: 3e 41 sbci r19, 0x1E ; 30 |
| 23c: 51 21 and r21, r1 |
| 23e: 5e 00 .word 0x005e ; ???? |
| 240: 7f 09 sbc r23, r15 |
| 242: 19 29 or r17, r9 |
| 244: 46 00 .word 0x0046 ; ???? |
| 246: 26 49 sbci r18, 0x96 ; 150 |
| 248: 49 49 sbci r20, 0x99 ; 153 |
| 24a: 32 00 .word 0x0032 ; ???? |
| 24c: 03 01 movw r0, r6 |
| 24e: 7f 01 movw r14, r30 |
| 250: 03 00 .word 0x0003 ; ???? |
| 252: 3f 40 sbci r19, 0x0F ; 15 |
| 254: 40 40 sbci r20, 0x00 ; 0 |
| 256: 3f 00 .word 0x003f ; ???? |
| 258: 1f 20 and r1, r15 |
| 25a: 40 20 and r4, r0 |
| 25c: 1f 00 .word 0x001f ; ???? |
| 25e: 3f 40 sbci r19, 0x0F ; 15 |
| 260: 38 40 sbci r19, 0x08 ; 8 |
| 262: 3f 00 .word 0x003f ; ???? |
| 264: 63 14 cp r6, r3 |
| 266: 08 14 cp r0, r8 |
| 268: 63 00 .word 0x0063 ; ???? |
| 26a: 03 04 cpc r0, r3 |
| 26c: 78 04 cpc r7, r8 |
| 26e: 03 00 .word 0x0003 ; ???? |
| 270: 61 59 subi r22, 0x91 ; 145 |
| 272: 49 4d sbci r20, 0xD9 ; 217 |
| 274: 43 00 .word 0x0043 ; ???? |
| 276: 00 7f andi r16, 0xF0 ; 240 |
| 278: 41 41 sbci r20, 0x11 ; 17 |
| 27a: 41 00 .word 0x0041 ; ???? |
| 27c: 02 04 cpc r0, r2 |
| 27e: 08 10 cpse r0, r8 |
| 280: 20 00 .word 0x0020 ; ???? |
| 282: 00 41 sbci r16, 0x10 ; 16 |
| 284: 41 41 sbci r20, 0x11 ; 17 |
| 286: 7f 00 .word 0x007f ; ???? |
| 288: 04 02 muls r16, r20 |
| 28a: 01 02 muls r16, r17 |
| 28c: 04 00 .word 0x0004 ; ???? |
| 28e: 40 40 sbci r20, 0x00 ; 0 |
| 290: 40 40 sbci r20, 0x00 ; 0 |
| 292: 40 00 .word 0x0040 ; ???? |
| 294: 00 03 mulsu r16, r16 |
| 296: 07 08 sbc r0, r7 |
| 298: 00 00 nop |
| 29a: 20 54 subi r18, 0x40 ; 64 |
| 29c: 54 78 andi r21, 0x84 ; 132 |
| 29e: 40 00 .word 0x0040 ; ???? |
| 2a0: 7f 28 or r7, r15 |
| 2a2: 44 44 sbci r20, 0x44 ; 68 |
| 2a4: 38 00 .word 0x0038 ; ???? |
| 2a6: 38 44 sbci r19, 0x48 ; 72 |
| 2a8: 44 44 sbci r20, 0x44 ; 68 |
| 2aa: 28 00 .word 0x0028 ; ???? |
| 2ac: 38 44 sbci r19, 0x48 ; 72 |
| 2ae: 44 28 or r4, r4 |
| 2b0: 7f 00 .word 0x007f ; ???? |
| 2b2: 38 54 subi r19, 0x48 ; 72 |
| 2b4: 54 54 subi r21, 0x44 ; 68 |
| 2b6: 18 00 .word 0x0018 ; ???? |
| 2b8: 00 08 sbc r0, r0 |
| 2ba: 7e 09 sbc r23, r14 |
| 2bc: 02 00 .word 0x0002 ; ???? |
| 2be: 18 a4 ldd r1, Y+40 ; 0x28 |
| 2c0: a4 9c mul r10, r4 |
| 2c2: 78 00 .word 0x0078 ; ???? |
| 2c4: 7f 08 sbc r7, r15 |
| 2c6: 04 04 cpc r0, r4 |
| 2c8: 78 00 .word 0x0078 ; ???? |
| 2ca: 00 44 sbci r16, 0x40 ; 64 |
| 2cc: 7d 40 sbci r23, 0x0D ; 13 |
| 2ce: 00 00 nop |
| 2d0: 20 40 sbci r18, 0x00 ; 0 |
| 2d2: 40 3d cpi r20, 0xD0 ; 208 |
| 2d4: 00 00 nop |
| 2d6: 7f 10 cpse r7, r15 |
| 2d8: 28 44 sbci r18, 0x48 ; 72 |
| 2da: 00 00 nop |
| 2dc: 00 41 sbci r16, 0x10 ; 16 |
| 2de: 7f 40 sbci r23, 0x0F ; 15 |
| 2e0: 00 00 nop |
| 2e2: 7c 04 cpc r7, r12 |
| 2e4: 78 04 cpc r7, r8 |
| 2e6: 78 00 .word 0x0078 ; ???? |
| 2e8: 7c 08 sbc r7, r12 |
| 2ea: 04 04 cpc r0, r4 |
| 2ec: 78 00 .word 0x0078 ; ???? |
| 2ee: 38 44 sbci r19, 0x48 ; 72 |
| 2f0: 44 44 sbci r20, 0x44 ; 68 |
| 2f2: 38 00 .word 0x0038 ; ???? |
| 2f4: fc 18 sub r15, r12 |
| 2f6: 24 24 eor r2, r4 |
| 2f8: 18 00 .word 0x0018 ; ???? |
| 2fa: 18 24 eor r1, r8 |
| 2fc: 24 18 sub r2, r4 |
| 2fe: fc 00 .word 0x00fc ; ???? |
| 300: 7c 08 sbc r7, r12 |
| 302: 04 04 cpc r0, r4 |
| 304: 08 00 .word 0x0008 ; ???? |
| 306: 48 54 subi r20, 0x48 ; 72 |
| 308: 54 54 subi r21, 0x44 ; 68 |
| 30a: 24 00 .word 0x0024 ; ???? |
| 30c: 04 04 cpc r0, r4 |
| 30e: 3f 44 sbci r19, 0x4F ; 79 |
| 310: 24 00 .word 0x0024 ; ???? |
| 312: 3c 40 sbci r19, 0x0C ; 12 |
| 314: 40 20 and r4, r0 |
| 316: 7c 00 .word 0x007c ; ???? |
| 318: 1c 20 and r1, r12 |
| 31a: 40 20 and r4, r0 |
| 31c: 1c 00 .word 0x001c ; ???? |
| 31e: 3c 40 sbci r19, 0x0C ; 12 |
| 320: 30 40 sbci r19, 0x00 ; 0 |
| 322: 3c 00 .word 0x003c ; ???? |
| 324: 44 28 or r4, r4 |
| 326: 10 28 or r1, r0 |
| 328: 44 00 .word 0x0044 ; ???? |
| 32a: 4c 90 ld r4, X |
| 32c: 90 90 7c 00 lds r9, 0x007C |
| 330: 44 64 ori r20, 0x44 ; 68 |
| 332: 54 4c sbci r21, 0xC4 ; 196 |
| 334: 44 00 .word 0x0044 ; ???? |
| 336: 00 08 sbc r0, r0 |
| 338: 36 41 sbci r19, 0x16 ; 22 |
| 33a: 00 00 nop |
| 33c: 00 00 nop |
| 33e: 77 00 .word 0x0077 ; ???? |
| 340: 00 00 nop |
| 342: 00 41 sbci r16, 0x10 ; 16 |
| 344: 36 08 sbc r3, r6 |
| 346: 00 00 nop |
| 348: 02 01 movw r0, r4 |
| 34a: 02 04 cpc r0, r2 |
| 34c: 02 00 .word 0x0002 ; ???? |
| 34e: 3c 26 eor r3, r28 |
| 350: 23 26 eor r2, r19 |
| 352: 3c 00 .word 0x003c ; ???? |
| 354: 1e a1 ldd r17, Y+38 ; 0x26 |
| 356: a1 61 ori r26, 0x11 ; 17 |
| 358: 12 00 .word 0x0012 ; ???? |
| 35a: 3a 40 sbci r19, 0x0A ; 10 |
| 35c: 40 20 and r4, r0 |
| 35e: 7a 00 .word 0x007a ; ???? |
| 360: 38 54 subi r19, 0x48 ; 72 |
| 362: 54 55 subi r21, 0x54 ; 84 |
| 364: 59 00 .word 0x0059 ; ???? |
| 366: 21 55 subi r18, 0x51 ; 81 |
| 368: 55 79 andi r21, 0x95 ; 149 |
| 36a: 41 00 .word 0x0041 ; ???? |
| 36c: 21 54 subi r18, 0x41 ; 65 |
| 36e: 54 78 andi r21, 0x84 ; 132 |
| 370: 41 00 .word 0x0041 ; ???? |
| 372: 21 55 subi r18, 0x51 ; 81 |
| 374: 54 78 andi r21, 0x84 ; 132 |
| 376: 40 00 .word 0x0040 ; ???? |
| 378: 20 54 subi r18, 0x40 ; 64 |
| 37a: 55 79 andi r21, 0x95 ; 149 |
| 37c: 40 00 .word 0x0040 ; ???? |
| 37e: 0c 1e adc r0, r28 |
| 380: 52 72 andi r21, 0x22 ; 34 |
| 382: 12 00 .word 0x0012 ; ???? |
| 384: 39 55 subi r19, 0x59 ; 89 |
| 386: 55 55 subi r21, 0x55 ; 85 |
| 388: 59 00 .word 0x0059 ; ???? |
| 38a: 39 54 subi r19, 0x49 ; 73 |
| 38c: 54 54 subi r21, 0x44 ; 68 |
| 38e: 59 00 .word 0x0059 ; ???? |
| 390: 39 55 subi r19, 0x59 ; 89 |
| 392: 54 54 subi r21, 0x44 ; 68 |
| 394: 58 00 .word 0x0058 ; ???? |
| 396: 00 00 nop |
| 398: 45 7c andi r20, 0xC5 ; 197 |
| 39a: 41 00 .word 0x0041 ; ???? |
| 39c: 00 02 muls r16, r16 |
| 39e: 45 7d andi r20, 0xD5 ; 213 |
| 3a0: 42 00 .word 0x0042 ; ???? |
| 3a2: 00 01 movw r0, r0 |
| 3a4: 45 7c andi r20, 0xC5 ; 197 |
| 3a6: 40 00 .word 0x0040 ; ???? |
| 3a8: 79 14 cp r7, r9 |
| 3aa: 12 14 cp r1, r2 |
| 3ac: 79 00 .word 0x0079 ; ???? |
| 3ae: f0 28 or r15, r0 |
| 3b0: 25 28 or r2, r5 |
| 3b2: f0 00 .word 0x00f0 ; ???? |
| 3b4: 7c 54 subi r23, 0x4C ; 76 |
| 3b6: 55 45 sbci r21, 0x55 ; 85 |
| 3b8: 00 00 nop |
| 3ba: 20 54 subi r18, 0x40 ; 64 |
| 3bc: 54 7c andi r21, 0xC4 ; 196 |
| 3be: 54 44 sbci r21, 0x44 ; 68 |
| 3c0: 7c 0a sbc r7, r28 |
| 3c2: 09 7f andi r16, 0xF9 ; 249 |
| 3c4: 49 41 sbci r20, 0x19 ; 25 |
| 3c6: 32 49 sbci r19, 0x92 ; 146 |
| 3c8: 49 49 sbci r20, 0x99 ; 153 |
| 3ca: 32 00 .word 0x0032 ; ???? |
| 3cc: 32 48 sbci r19, 0x82 ; 130 |
| 3ce: 48 48 sbci r20, 0x88 ; 136 |
| 3d0: 32 00 .word 0x0032 ; ???? |
| 3d2: 32 4a sbci r19, 0xA2 ; 162 |
| 3d4: 48 48 sbci r20, 0x88 ; 136 |
| 3d6: 30 00 .word 0x0030 ; ???? |
| 3d8: 3a 41 sbci r19, 0x1A ; 26 |
| 3da: 41 21 and r20, r1 |
| 3dc: 7a 00 .word 0x007a ; ???? |
| 3de: 3a 42 sbci r19, 0x2A ; 42 |
| 3e0: 40 20 and r4, r0 |
| 3e2: 78 00 .word 0x0078 ; ???? |
| 3e4: 00 9d mul r16, r0 |
| 3e6: a0 a0 ldd r10, Z+32 ; 0x20 |
| 3e8: 7d 00 .word 0x007d ; ???? |
| 3ea: 39 44 sbci r19, 0x49 ; 73 |
| 3ec: 44 44 sbci r20, 0x44 ; 68 |
| 3ee: 39 00 .word 0x0039 ; ???? |
| 3f0: 3d 40 sbci r19, 0x0D ; 13 |
| 3f2: 40 40 sbci r20, 0x00 ; 0 |
| 3f4: 3d 00 .word 0x003d ; ???? |
| 3f6: 3c 24 eor r3, r12 |
| 3f8: ff 24 eor r15, r15 |
| 3fa: 24 00 .word 0x0024 ; ???? |
| 3fc: 48 7e andi r20, 0xE8 ; 232 |
| 3fe: 49 43 sbci r20, 0x39 ; 57 |
| 400: 66 00 .word 0x0066 ; ???? |
| 402: 2b 2f mov r18, r27 |
| 404: fc 2f mov r31, r28 |
| 406: 2b 00 .word 0x002b ; ???? |
| 408: ff 09 sbc r31, r15 |
| 40a: 29 f6 brne .-118 ; 0x396 <__ctors_end+0x342> |
| 40c: 20 00 .word 0x0020 ; ???? |
| 40e: c0 88 ldd r12, Z+16 ; 0x10 |
| 410: 7e 09 sbc r23, r14 |
| 412: 03 00 .word 0x0003 ; ???? |
| 414: 20 54 subi r18, 0x40 ; 64 |
| 416: 54 79 andi r21, 0x94 ; 148 |
| 418: 41 00 .word 0x0041 ; ???? |
| 41a: 00 00 nop |
| 41c: 44 7d andi r20, 0xD4 ; 212 |
| 41e: 41 00 .word 0x0041 ; ???? |
| 420: 30 48 sbci r19, 0x80 ; 128 |
| 422: 48 4a sbci r20, 0xA8 ; 168 |
| 424: 32 00 .word 0x0032 ; ???? |
| 426: 38 40 sbci r19, 0x08 ; 8 |
| 428: 40 22 and r4, r16 |
| 42a: 7a 00 .word 0x007a ; ???? |
| 42c: 00 7a andi r16, 0xA0 ; 160 |
| 42e: 0a 0a sbc r0, r26 |
| 430: 72 00 .word 0x0072 ; ???? |
| 432: 7d 0d add r23, r13 |
| 434: 19 31 cpi r17, 0x19 ; 25 |
| 436: 7d 00 .word 0x007d ; ???? |
| 438: 26 29 or r18, r6 |
| 43a: 29 2f mov r18, r25 |
| 43c: 28 00 .word 0x0028 ; ???? |
| 43e: 26 29 or r18, r6 |
| 440: 29 29 or r18, r9 |
| 442: 26 00 .word 0x0026 ; ???? |
| 444: 30 48 sbci r19, 0x80 ; 128 |
| 446: 4d 40 sbci r20, 0x0D ; 13 |
| 448: 20 00 .word 0x0020 ; ???? |
| 44a: 38 08 sbc r3, r8 |
| 44c: 08 08 sbc r0, r8 |
| 44e: 08 00 .word 0x0008 ; ???? |
| 450: 08 08 sbc r0, r8 |
| 452: 08 08 sbc r0, r8 |
| 454: 38 00 .word 0x0038 ; ???? |
| 456: 2f 10 cpse r2, r15 |
| 458: c8 ac ldd r12, Y+56 ; 0x38 |
| 45a: ba 00 .word 0x00ba ; ???? |
| 45c: 2f 10 cpse r2, r15 |
| 45e: 28 34 cpi r18, 0x48 ; 72 |
| 460: fa 00 .word 0x00fa ; ???? |
| 462: 00 00 nop |
| 464: 7b 00 .word 0x007b ; ???? |
| 466: 00 00 nop |
| 468: 08 14 cp r0, r8 |
| 46a: 2a 14 cp r2, r10 |
| 46c: 22 00 .word 0x0022 ; ???? |
| 46e: 22 14 cp r2, r2 |
| 470: 2a 14 cp r2, r10 |
| 472: 08 00 .word 0x0008 ; ???? |
| 474: aa 00 .word 0x00aa ; ???? |
| 476: 55 00 .word 0x0055 ; ???? |
| 478: aa 00 .word 0x00aa ; ???? |
| 47a: aa 55 subi r26, 0x5A ; 90 |
| 47c: aa 55 subi r26, 0x5A ; 90 |
| 47e: aa 55 subi r26, 0x5A ; 90 |
| 480: 55 aa std Z+53, r5 ; 0x35 |
| 482: 55 aa std Z+53, r5 ; 0x35 |
| 484: 55 aa std Z+53, r5 ; 0x35 |
| 486: 00 00 nop |
| 488: 00 ff sbrs r16, 0 |
| 48a: 00 00 nop |
| 48c: 10 10 cpse r1, r0 |
| 48e: 10 ff sbrs r17, 0 |
| 490: 00 00 nop |
| 492: 14 14 cp r1, r4 |
| 494: 14 ff sbrs r17, 4 |
| 496: 00 00 nop |
| 498: 10 10 cpse r1, r0 |
| 49a: ff 00 .word 0x00ff ; ???? |
| 49c: ff 00 .word 0x00ff ; ???? |
| 49e: 10 10 cpse r1, r0 |
| 4a0: f0 10 cpse r15, r0 |
| 4a2: f0 00 .word 0x00f0 ; ???? |
| 4a4: 14 14 cp r1, r4 |
| 4a6: 14 fc sbrc r1, 4 |
| 4a8: 00 00 nop |
| 4aa: 14 14 cp r1, r4 |
| 4ac: f7 00 .word 0x00f7 ; ???? |
| 4ae: ff 00 .word 0x00ff ; ???? |
| 4b0: 00 00 nop |
| 4b2: ff 00 .word 0x00ff ; ???? |
| 4b4: ff 00 .word 0x00ff ; ???? |
| 4b6: 14 14 cp r1, r4 |
| 4b8: f4 04 cpc r15, r4 |
| 4ba: fc 00 .word 0x00fc ; ???? |
| 4bc: 14 14 cp r1, r4 |
| 4be: 17 10 cpse r1, r7 |
| 4c0: 1f 00 .word 0x001f ; ???? |
| 4c2: 10 10 cpse r1, r0 |
| 4c4: 1f 10 cpse r1, r15 |
| 4c6: 1f 00 .word 0x001f ; ???? |
| 4c8: 14 14 cp r1, r4 |
| 4ca: 14 1f adc r17, r20 |
| 4cc: 00 00 nop |
| 4ce: 10 10 cpse r1, r0 |
| 4d0: 10 f0 brcs .+4 ; 0x4d6 <__ctors_end+0x482> |
| 4d2: 00 00 nop |
| 4d4: 00 00 nop |
| 4d6: 00 1f adc r16, r16 |
| 4d8: 10 10 cpse r1, r0 |
| 4da: 10 10 cpse r1, r0 |
| 4dc: 10 1f adc r17, r16 |
| 4de: 10 10 cpse r1, r0 |
| 4e0: 10 10 cpse r1, r0 |
| 4e2: 10 f0 brcs .+4 ; 0x4e8 <__ctors_end+0x494> |
| 4e4: 10 10 cpse r1, r0 |
| 4e6: 00 00 nop |
| 4e8: 00 ff sbrs r16, 0 |
| 4ea: 10 10 cpse r1, r0 |
| 4ec: 10 10 cpse r1, r0 |
| 4ee: 10 10 cpse r1, r0 |
| 4f0: 10 10 cpse r1, r0 |
| 4f2: 10 10 cpse r1, r0 |
| 4f4: 10 ff sbrs r17, 0 |
| 4f6: 10 10 cpse r1, r0 |
| 4f8: 00 00 nop |
| 4fa: 00 ff sbrs r16, 0 |
| 4fc: 14 14 cp r1, r4 |
| 4fe: 00 00 nop |
| 500: ff 00 .word 0x00ff ; ???? |
| 502: ff 10 cpse r15, r15 |
| 504: 00 00 nop |
| 506: 1f 10 cpse r1, r15 |
| 508: 17 14 cp r1, r7 |
| 50a: 00 00 nop |
| 50c: fc 04 cpc r15, r12 |
| 50e: f4 14 cp r15, r4 |
| 510: 14 14 cp r1, r4 |
| 512: 17 10 cpse r1, r7 |
| 514: 17 14 cp r1, r7 |
| 516: 14 14 cp r1, r4 |
| 518: f4 04 cpc r15, r4 |
| 51a: f4 14 cp r15, r4 |
| 51c: 00 00 nop |
| 51e: ff 00 .word 0x00ff ; ???? |
| 520: f7 14 cp r15, r7 |
| 522: 14 14 cp r1, r4 |
| 524: 14 14 cp r1, r4 |
| 526: 14 14 cp r1, r4 |
| 528: 14 14 cp r1, r4 |
| 52a: f7 00 .word 0x00f7 ; ???? |
| 52c: f7 14 cp r15, r7 |
| 52e: 14 14 cp r1, r4 |
| 530: 14 17 cp r17, r20 |
| 532: 14 14 cp r1, r4 |
| 534: 10 10 cpse r1, r0 |
| 536: 1f 10 cpse r1, r15 |
| 538: 1f 10 cpse r1, r15 |
| 53a: 14 14 cp r1, r4 |
| 53c: 14 f4 brge .+4 ; 0x542 <__ctors_end+0x4ee> |
| 53e: 14 14 cp r1, r4 |
| 540: 10 10 cpse r1, r0 |
| 542: f0 10 cpse r15, r0 |
| 544: f0 10 cpse r15, r0 |
| 546: 00 00 nop |
| 548: 1f 10 cpse r1, r15 |
| 54a: 1f 10 cpse r1, r15 |
| 54c: 00 00 nop |
| 54e: 00 1f adc r16, r16 |
| 550: 14 14 cp r1, r4 |
| 552: 00 00 nop |
| 554: 00 fc sbrc r0, 0 |
| 556: 14 14 cp r1, r4 |
| 558: 00 00 nop |
| 55a: f0 10 cpse r15, r0 |
| 55c: f0 10 cpse r15, r0 |
| 55e: 10 10 cpse r1, r0 |
| 560: ff 10 cpse r15, r15 |
| 562: ff 10 cpse r15, r15 |
| 564: 14 14 cp r1, r4 |
| 566: 14 ff sbrs r17, 4 |
| 568: 14 14 cp r1, r4 |
| 56a: 10 10 cpse r1, r0 |
| 56c: 10 1f adc r17, r16 |
| 56e: 00 00 nop |
| 570: 00 00 nop |
| 572: 00 f0 brcs .+0 ; 0x574 <__ctors_end+0x520> |
| 574: 10 10 cpse r1, r0 |
| 576: ff ff .word 0xffff ; ???? |
| 578: ff ff .word 0xffff ; ???? |
| 57a: ff ff .word 0xffff ; ???? |
| 57c: f0 f0 brcs .+60 ; 0x5ba <__ctors_end+0x566> |
| 57e: f0 f0 brcs .+60 ; 0x5bc <__ctors_end+0x568> |
| 580: f0 f0 brcs .+60 ; 0x5be <__ctors_end+0x56a> |
| 582: ff ff .word 0xffff ; ???? |
| 584: ff 00 .word 0x00ff ; ???? |
| 586: 00 00 nop |
| 588: 00 00 nop |
| 58a: 00 ff sbrs r16, 0 |
| 58c: ff ff .word 0xffff ; ???? |
| 58e: 0f 0f add r16, r31 |
| 590: 0f 0f add r16, r31 |
| 592: 0f 0f add r16, r31 |
| 594: 38 44 sbci r19, 0x48 ; 72 |
| 596: 44 38 cpi r20, 0x84 ; 132 |
| 598: 44 00 .word 0x0044 ; ???? |
| 59a: 7c 2a or r7, r28 |
| 59c: 2a 3e cpi r18, 0xEA ; 234 |
| 59e: 14 00 .word 0x0014 ; ???? |
| 5a0: 7e 02 muls r23, r30 |
| 5a2: 02 06 cpc r0, r18 |
| 5a4: 06 00 .word 0x0006 ; ???? |
| 5a6: 02 7e andi r16, 0xE2 ; 226 |
| 5a8: 02 7e andi r16, 0xE2 ; 226 |
| 5aa: 02 00 .word 0x0002 ; ???? |
| 5ac: 63 55 subi r22, 0x53 ; 83 |
| 5ae: 49 41 sbci r20, 0x19 ; 25 |
| 5b0: 63 00 .word 0x0063 ; ???? |
| 5b2: 38 44 sbci r19, 0x48 ; 72 |
| 5b4: 44 3c cpi r20, 0xC4 ; 196 |
| 5b6: 04 00 .word 0x0004 ; ???? |
| 5b8: 40 7e andi r20, 0xE0 ; 224 |
| 5ba: 20 1e adc r2, r16 |
| 5bc: 20 00 .word 0x0020 ; ???? |
| 5be: 06 02 muls r16, r22 |
| 5c0: 7e 02 muls r23, r30 |
| 5c2: 02 00 .word 0x0002 ; ???? |
| 5c4: 99 a5 ldd r25, Y+41 ; 0x29 |
| 5c6: e7 a5 ldd r30, Z+47 ; 0x2f |
| 5c8: 99 00 .word 0x0099 ; ???? |
| 5ca: 1c 2a or r1, r28 |
| 5cc: 49 2a or r4, r25 |
| 5ce: 1c 00 .word 0x001c ; ???? |
| 5d0: 4c 72 andi r20, 0x2C ; 44 |
| 5d2: 01 72 andi r16, 0x21 ; 33 |
| 5d4: 4c 00 .word 0x004c ; ???? |
| 5d6: 30 4a sbci r19, 0xA0 ; 160 |
| 5d8: 4d 4d sbci r20, 0xDD ; 221 |
| 5da: 30 00 .word 0x0030 ; ???? |
| 5dc: 30 48 sbci r19, 0x80 ; 128 |
| 5de: 78 48 sbci r23, 0x88 ; 136 |
| 5e0: 30 00 .word 0x0030 ; ???? |
| 5e2: bc 62 ori r27, 0x2C ; 44 |
| 5e4: 5a 46 sbci r21, 0x6A ; 106 |
| 5e6: 3d 00 .word 0x003d ; ???? |
| 5e8: 3e 49 sbci r19, 0x9E ; 158 |
| 5ea: 49 49 sbci r20, 0x99 ; 153 |
| 5ec: 00 00 nop |
| 5ee: 7e 01 movw r14, r28 |
| 5f0: 01 01 movw r0, r2 |
| 5f2: 7e 00 .word 0x007e ; ???? |
| 5f4: 2a 2a or r2, r26 |
| 5f6: 2a 2a or r2, r26 |
| 5f8: 2a 00 .word 0x002a ; ???? |
| 5fa: 44 44 sbci r20, 0x44 ; 68 |
| 5fc: 5f 44 sbci r21, 0x4F ; 79 |
| 5fe: 44 00 .word 0x0044 ; ???? |
| 600: 40 51 subi r20, 0x10 ; 16 |
| 602: 4a 44 sbci r20, 0x4A ; 74 |
| 604: 40 00 .word 0x0040 ; ???? |
| 606: 40 44 sbci r20, 0x40 ; 64 |
| 608: 4a 51 subi r20, 0x1A ; 26 |
| 60a: 40 00 .word 0x0040 ; ???? |
| 60c: 00 00 nop |
| 60e: ff 01 movw r30, r30 |
| 610: 03 00 .word 0x0003 ; ???? |
| 612: e0 80 ld r14, Z |
| 614: ff 00 .word 0x00ff ; ???? |
| 616: 00 00 nop |
| 618: 08 08 sbc r0, r8 |
| 61a: 6b 6b ori r22, 0xBB ; 187 |
| 61c: 08 08 sbc r0, r8 |
| 61e: 36 12 cpse r3, r22 |
| 620: 36 24 eor r3, r6 |
| 622: 36 00 .word 0x0036 ; ???? |
| 624: 06 0f add r16, r22 |
| 626: 09 0f add r16, r25 |
| 628: 06 00 .word 0x0006 ; ???? |
| 62a: 00 00 nop |
| 62c: 18 18 sub r1, r8 |
| 62e: 00 00 nop |
| 630: 00 00 nop |
| 632: 10 10 cpse r1, r0 |
| 634: 00 00 nop |
| 636: 30 40 sbci r19, 0x00 ; 0 |
| 638: ff 01 movw r30, r30 |
| 63a: 01 00 .word 0x0001 ; ???? |
| 63c: 00 1f adc r16, r16 |
| 63e: 01 01 movw r0, r2 |
| 640: 1e 00 .word 0x001e ; ???? |
| 642: 00 19 sub r16, r0 |
| 644: 1d 17 cp r17, r29 |
| 646: 12 00 .word 0x0012 ; ???? |
| 648: 00 3c cpi r16, 0xC0 ; 192 |
| 64a: 3c 3c cpi r19, 0xCC ; 204 |
| 64c: 3c 00 .word 0x003c ; ???? |
| 64e: 00 00 nop |
| 650: 00 00 nop |
| ... |
| 00000654 <__c.0>: |
| 654: 20 20 20 20 20 20 00 . |
| 0000065b <parameter>: |
| 65b: 4e 69 63 6b 20 20 20 20 20 20 20 20 20 20 20 00 Nick . |
| 66b: 52 6f 6c 6c 20 20 20 20 20 20 20 20 20 20 20 00 Roll . |
| 67b: 47 61 73 20 20 20 20 20 20 20 20 20 20 20 20 00 Gas . |
| 68b: 47 69 65 72 09 09 09 00 00 00 00 00 00 00 00 00 Gier............ |
| 69b: 50 6f 74 69 31 09 09 09 00 00 00 00 00 00 00 00 Poti1........... |
| 6ab: 50 6f 74 69 32 09 09 09 00 00 00 00 00 00 00 00 Poti2........... |
| 6bb: 50 6f 74 69 33 09 09 09 00 00 00 00 00 00 00 00 Poti3........... |
| 6cb: 50 6f 74 69 34 09 09 09 00 00 00 00 00 00 00 00 Poti4........... |
| 6db: 43 6f 6e 66 69 67 09 09 09 00 00 00 00 00 00 00 Config.......... |
| 6eb: 48 6f 65 68 65 5f 4d 69 6e 47 61 73 20 20 20 00 Hoehe_MinGas . |
| 6fb: 4c 75 66 74 64 72 75 63 6b 5f 44 20 20 20 20 00 Luftdruck_D . |
| 70b: 4d 61 78 48 6f 65 68 65 20 20 20 20 20 20 20 00 MaxHoehe . |
| 71b: 48 6f 65 68 65 5f 50 20 20 20 20 20 20 20 20 00 Hoehe_P . |
| 72b: 48 6f 65 68 65 5f 56 65 72 73 74 61 65 72 6b 00 Hoehe_Verstaerk. |
| 73b: 48 6f 65 68 65 5f 41 43 43 5f 57 69 72 6b 2e 00 Hoehe_ACC_Wirk.. |
| 74b: 53 74 69 63 6b 5f 50 20 20 20 20 20 20 20 20 00 Stick_P . |
| 75b: 53 74 69 63 6b 5f 44 20 20 20 20 20 20 20 20 00 Stick_D . |
| 76b: 47 69 65 72 5f 50 20 20 20 20 20 20 20 20 20 00 Gier_P . |
| 77b: 47 61 73 5f 4d 69 6e 20 20 20 20 20 20 20 20 00 Gas_Min . |
| 78b: 47 61 73 5f 4d 61 78 20 20 20 20 20 20 20 20 00 Gas_Max . |
| 79b: 47 79 72 6f 41 63 63 46 61 6b 74 6f 72 09 00 00 GyroAccFaktor... |
| 7ab: 4b 6f 6d 70 61 73 73 57 69 72 6b 75 6e 67 20 00 KompassWirkung . |
| 7bb: 47 79 72 6f 5f 50 20 09 09 00 00 00 00 00 00 00 Gyro_P ......... |
| 7cb: 47 79 72 6f 5f 49 09 09 09 00 00 00 00 00 00 00 Gyro_I.......... |
| 7db: 55 6e 74 65 72 73 70 61 6e 6e 75 6e 67 20 20 00 Unterspannung . |
| 7eb: 4e 6f 74 47 61 73 09 09 09 00 00 00 00 00 00 00 NotGas.......... |
| 7fb: 4e 6f 74 47 61 73 5a 65 69 74 20 20 20 20 20 00 NotGasZeit . |
| 80b: 55 66 6f 41 75 73 72 69 63 68 74 75 6e 67 20 00 UfoAusrichtung . |
| 81b: 49 5f 46 61 6b 74 6f 72 20 20 20 20 20 20 20 00 I_Faktor . |
| 82b: 55 73 65 72 50 61 72 61 6d 31 09 09 00 00 00 00 UserParam1...... |
| 83b: 55 73 65 72 50 61 72 61 6d 32 09 09 00 00 00 00 UserParam2...... |
| 84b: 55 73 65 72 50 61 72 61 6d 33 09 09 00 00 00 00 UserParam3...... |
| 85b: 55 73 65 72 50 61 72 61 6d 34 09 09 00 00 00 00 UserParam4...... |
| 86b: 53 65 72 76 6f 4e 69 63 6b 43 74 72 6c 09 00 00 ServoNickCtrl... |
| 87b: 53 65 72 76 6f 4e 69 63 6b 43 6f 6d 70 09 00 00 ServoNickComp... |
| 88b: 53 65 72 76 6f 4e 69 63 6b 4d 69 6e 09 00 00 00 ServoNickMin.... |
| 89b: 53 65 72 76 6f 4e 69 63 6b 4d 61 78 09 00 00 00 ServoNickMax.... |
| 8ab: 53 65 72 76 6f 4e 69 63 6b 52 65 66 72 73 68 00 ServoNickRefrsh. |
| 8bb: 4c 6f 6f 70 47 61 73 4c 69 6d 69 74 09 00 00 00 LoopGasLimit.... |
| 8cb: 4c 6f 6f 70 54 68 72 65 73 68 6f 6c 64 09 00 00 LoopThreshold... |
| 8db: 4c 6f 6f 70 48 79 73 74 65 72 65 73 65 09 00 00 LoopHysterese... |
| 8eb: 41 63 68 73 4b 6f 70 70 6c 75 6e 67 09 00 00 00 AchsKopplung.... |
| 8fb: 41 63 68 73 47 65 67 65 6e 4b 6f 70 70 6c 2e 00 AchsGegenKoppl.. |
| 90b: 57 69 6e 6b 6c 55 6d 73 63 68 6c 4e 69 63 6b 00 WinklUmschlNick. |
| 91b: 57 69 6e 6b 6c 55 6d 73 63 68 6c 52 6f 6c 6c 00 WinklUmschlRoll. |
| 92b: 47 79 72 6f 41 63 63 41 62 67 6c 65 69 63 68 00 GyroAccAbgleich. |
| 93b: 44 72 69 66 74 6b 6f 6d 70 09 09 00 00 00 00 00 Driftkomp....... |
| 94b: 44 79 6e 61 6d 69 63 53 74 61 62 69 6c 69 74 00 DynamicStabilit. |
| 95b: 55 73 65 72 50 61 72 61 6d 35 09 09 00 00 00 00 UserParam5...... |
| 96b: 55 73 65 72 50 61 72 61 6d 36 09 09 00 00 00 00 UserParam6...... |
| 97b: 55 73 65 72 50 61 72 61 6d 37 09 09 00 00 00 00 UserParam7...... |
| 98b: 55 73 65 72 50 61 72 61 6d 38 09 09 00 00 00 00 UserParam8...... |
| 99b: 4c 6f 6f 70 43 6f 6e 66 69 67 09 09 00 00 00 00 LoopConfig...... |
| 9ab: 53 65 72 76 6f 4e 69 63 6b 43 6f 6d 70 49 6e 00 ServoNickCompIn. |
| 000009bb <bin_parameter>: |
| 9bb: 4c 6f 6f 70 20 75 70 20 20 20 20 20 20 20 20 00 Loop up . |
| 9cb: 4c 6f 6f 70 20 64 6f 77 6e 09 20 20 20 20 00 00 Loop down. .. |
| 9db: 4c 6f 6f 70 20 6c 65 66 74 20 20 20 20 20 20 00 Loop left . |
| 9eb: 4c 6f 6f 70 20 72 69 67 68 74 20 20 20 20 20 00 Loop right . |
| 9fb: 48 f6 68 65 6e 72 65 67 6c 65 72 20 20 20 20 00 H.henregler . |
| a0b: 48 f6 68 65 6e 73 63 68 61 6c 74 65 72 20 20 00 H.henschalter . |
| a1b: 48 65 61 64 68 6f 6c 64 09 09 00 00 00 00 00 00 Headhold........ |
| a2b: 4b 6f 6d 70 61 73 73 09 09 00 00 00 00 00 00 00 Kompass......... |
| a3b: 4b 6f 6d 70 61 73 73 46 69 78 09 09 00 00 00 00 KompassFix...... |
| a4b: 47 50 53 09 09 09 00 00 00 00 00 00 00 00 00 00 GPS............. |
| a5b: 41 63 68 73 65 6e 6b 6f 70 70 6c 75 6e 67 20 00 Achsenkopplung . |
| a6b: 44 72 65 68 72 61 74 65 09 09 00 00 00 00 00 00 Drehrate........ |
| 00000a7b <p_limits>: |
| a7b: 01 08 02 01 08 02 01 08 02 01 08 02 01 08 02 01 ................ |
| a8b: 08 02 01 08 02 01 08 02 00 00 00 00 ff 04 00 ff ................ |
| a9b: 04 00 ff 04 00 ff 04 00 32 04 00 ff 04 00 06 03 ........2....... |
| aab: 00 40 03 00 14 03 00 20 08 21 fa 08 00 32 08 00 .@..... .!...2.. |
| abb: ff 08 00 00 05 00 00 05 00 fa 08 00 fa 08 00 fa ................ |
| acb: 08 00 01 00 00 ff 05 00 ff 09 00 ff 09 00 ff 09 ................ |
| adb: 00 ff 09 00 ff 07 00 fa 07 00 fa 07 00 fa 07 00 ................ |
| aeb: 19 07 00 ff 06 00 fa 06 00 fa 06 00 ff 0a 00 ff ................ |
| afb: 0a 00 fa 06 00 fa 06 00 fa 05 00 fa 05 00 ff 05 ................ |
| b0b: 00 ff 09 00 ff 09 00 ff 09 00 ff 09 00 00 01 00 ................ |
| b1b: 01 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ |
| ... |
| 00000b42 <p_menu_number>: |
| b42: 02 02 02 02 02 02 02 02 00 04 04 04 04 04 04 03 ................ |
| b52: 03 03 08 08 08 08 05 05 08 08 08 00 05 09 09 09 ................ |
| b62: 09 07 07 07 07 07 07 06 06 06 0a 0a 06 06 05 05 ................ |
| b72: 05 09 09 09 09 00 07 0b 0b 0b 0b 0c 0c 0c 0c 0c ................ |
| b82: 0c 0c 0c ... |
| 00000b85 <p_menus>: |
| b85: 43 6f 6e 66 69 67 20 20 20 20 00 43 68 61 6e 6e Config .Chann |
| b95: 65 6c 73 20 20 00 53 74 69 63 6b 20 20 20 20 20 els .Stick |
| ba5: 00 48 6f 65 68 65 20 20 20 20 20 00 47 79 72 6f .Hoehe .Gyro |
| bb5: 20 20 20 20 20 20 00 4c 6f 6f 70 69 6e 67 20 20 .Looping |
| bc5: 20 00 43 61 6d 65 72 61 20 20 20 20 00 53 6f 6e .Camera .Son |
| bd5: 73 74 69 67 65 73 20 00 55 73 65 72 20 20 20 20 stiges .User |
| be5: 20 20 00 43 6f 75 70 6c 69 6e 67 20 20 00 43 6f .Coupling .Co |
| bf5: 6e 66 69 67 28 32 29 20 00 4c 6f 6f 70 69 6e 67 nfig(2) .Looping |
| c05: 73 65 74 00 set. |
| 00000c09 <__c.11>: |
| c09: 2d 00 -. |
| 00000c0b <__c.12>: |
| c0b: 2d 00 -. |
| 00000c0d <__c.13>: |
| c0d: 2d 00 -. |
| 00000c0f <__c.0>: |
| c0f: 4c 61 64 65 20 50 61 72 61 6d 65 74 65 72 0d 0a Lade Parameter.. |
| ... |
| 00000c20 <__c.1>: |
| c20: 20 31 3a 0d 0a 00 1:... |
| 00000c26 <__c.2>: |
| c26: 20 32 3a 0d 0a 00 2:... |
| 00000c2c <__c.3>: |
| c2c: 20 33 3a 0d 0a 00 3:... |
| 00000c32 <__c.4>: |
| c32: 20 34 3a 0d 0a 00 4:... |
| 00000c38 <__c.5>: |
| c38: 20 35 3a 0d 0a 00 5:... |
| 00000c3e <__c.6>: |
| c3e: 54 69 6d 65 6f 75 74 00 Timeout. |
| 00000c46 <__c.7>: |
| c46: 50 61 72 61 6d 65 74 65 72 20 73 70 65 69 63 68 Parameter speich |
| c56: 65 72 6e 3f 0d 0a 20 20 6a 61 0d 0a 20 20 6e 65 ern?.. ja.. ne |
| c66: 69 6e 00 in. |
| 00000c69 <__c.8>: |
| c69: 0d 0a 2d 2d 2d 3e 00 ..--->. |
| 00000c70 <__c.9>: |
| c70: 0d 0a 50 61 72 61 6d 65 74 65 72 20 67 65 73 70 ..Parameter gesp |
| c80: 65 69 63 68 65 72 74 00 eichert. |
| 00000c88 <__c.10>: |
| c88: 0d 0a 4e 69 63 68 74 20 67 65 73 70 65 69 63 68 ..Nicht gespeich |
| c98: 65 72 74 00 ert. |
| 00000c9c <__c.4>: |
| c9c: 20 00 . |
| 00000c9e <__c.5>: |
| c9e: 2a 00 *. |
| 00000ca0 <__c.0>: |
| ca0: 48 61 75 70 74 6d 65 6e fc 28 42 45 54 41 20 56 Hauptmen.(BETA V |
| cb0: 30 2e 31 29 0d 0a 00 0.1)... |
| 00000cb7 <__c.1>: |
| cb7: 0d 0a 44 69 73 70 6c 61 79 0d 0a 00 ..Display... |
| 00000cc3 <__c.2>: |
| cc3: 50 61 72 61 6d 65 74 65 72 0d 0a 00 Parameter... |
| 00000ccf <__c.3>: |
| ccf: 4d 6f 74 6f 72 74 65 73 74 00 Motortest. |
| 00000cd9 <__c.0>: |
| cd9: 44 69 73 70 6c 61 79 00 Display. |
| 00000ce1 <__c.1>: |
| ce1: 0d 0a 54 69 6d 65 6f 75 74 21 00 ..Timeout!. |
| 00000cec <__c.0>: |
| cec: 54 61 73 74 65 20 64 72 fc 63 6b 65 6e 0d 0a 00 Taste dr.cken... |
| 00000cfc <__init>: |
| cfc: 11 24 eor r1, r1 |
| cfe: 1f be out 0x3f, r1 ; 63 |
| d00: cf e5 ldi r28, 0x5F ; 95 |
| d02: d8 e0 ldi r29, 0x08 ; 8 |
| d04: de bf out 0x3e, r29 ; 62 |
| d06: cd bf out 0x3d, r28 ; 61 |
| 00000d08 <__do_copy_data>: |
| d08: 10 e0 ldi r17, 0x00 ; 0 |
| d0a: a0 e6 ldi r26, 0x60 ; 96 |
| d0c: b0 e0 ldi r27, 0x00 ; 0 |
| d0e: ec e6 ldi r30, 0x6C ; 108 |
| d10: f6 e2 ldi r31, 0x26 ; 38 |
| d12: 02 c0 rjmp .+4 ; 0xd18 <.do_copy_data_start> |
| 00000d14 <.do_copy_data_loop>: |
| d14: 05 90 lpm r0, Z+ |
| d16: 0d 92 st X+, r0 |
| 00000d18 <.do_copy_data_start>: |
| d18: a0 36 cpi r26, 0x60 ; 96 |
| d1a: b1 07 cpc r27, r17 |
| d1c: d9 f7 brne .-10 ; 0xd14 <.do_copy_data_loop> |
| 00000d1e <__do_clear_bss>: |
| d1e: 15 e0 ldi r17, 0x05 ; 5 |
| d20: a0 e6 ldi r26, 0x60 ; 96 |
| d22: b0 e0 ldi r27, 0x00 ; 0 |
| d24: 01 c0 rjmp .+2 ; 0xd28 <.do_clear_bss_start> |
| 00000d26 <.do_clear_bss_loop>: |
| d26: 1d 92 st X+, r1 |
| 00000d28 <.do_clear_bss_start>: |
| d28: a7 38 cpi r26, 0x87 ; 135 |
| d2a: b1 07 cpc r27, r17 |
| d2c: e1 f7 brne .-8 ; 0xd26 <.do_clear_bss_loop> |
| d2e: 0c 94 9b 06 jmp 0xd36 <main> |
| 00000d32 <__bad_interrupt>: |
| d32: 0c 94 00 00 jmp 0x0 <__vectors> |
| 00000d36 <main>: |
| #include "timer.h" |
| int main (void) |
| { |
| d36: cf e5 ldi r28, 0x5F ; 95 |
| d38: d8 e0 ldi r29, 0x08 ; 8 |
| d3a: de bf out 0x3e, r29 ; 62 |
| d3c: cd bf out 0x3d, r28 ; 61 |
| PORTA = 0xFF; // unbenutzte Pins auf Pull-Up |
| d3e: 8f ef ldi r24, 0xFF ; 255 |
| d40: 8b bb out 0x1b, r24 ; 27 |
| PORTB = 0x43; |
| d42: 83 e4 ldi r24, 0x43 ; 67 |
| d44: 88 bb out 0x18, r24 ; 24 |
| PORTC = 0xFC; |
| d46: 8c ef ldi r24, 0xFC ; 252 |
| d48: 85 bb out 0x15, r24 ; 21 |
| PORTD = 0x7C; |
| d4a: 8c e7 ldi r24, 0x7C ; 124 |
| d4c: 82 bb out 0x12, r24 ; 18 |
| DDRC = 0x03; // Pins für Beleuchtung auf Ausgang |
| d4e: 83 e0 ldi r24, 0x03 ; 3 |
| d50: 84 bb out 0x14, r24 ; 20 |
| DDRD = 0x80; |
| d52: 80 e8 ldi r24, 0x80 ; 128 |
| d54: 81 bb out 0x11, r24 ; 17 |
| lcd_init(); |
| d56: 0e 94 53 07 call 0xea6 <lcd_init> |
| RS232_init(); |
| d5a: 0e 94 1a 0c call 0x1834 <RS232_init> |
| timer_init(); |
| d5e: 0e 94 f4 06 call 0xde8 <timer_init> |
| sei(); |
| d62: 78 94 sei |
| for (;;) |
| main_menu(); |
| d64: 0e 94 c8 11 call 0x2390 <main_menu> |
| d68: fd cf rjmp .-6 ; 0xd64 <main+0x2e> |
| 00000d6a <__vector_10>: |
| volatile uint8_t rs232_timer; |
| ISR(SIG_OUTPUT_COMPARE0) // Timer-Interrupt (100 Hz) |
| { |
| d6a: 1f 92 push r1 |
| d6c: 0f 92 push r0 |
| d6e: 0f b6 in r0, 0x3f ; 63 |
| d70: 0f 92 push r0 |
| d72: 11 24 eor r1, r1 |
| d74: 8f 93 push r24 |
| d76: 9f 93 push r25 |
| if (counter > 0) |
| d78: 80 91 e4 04 lds r24, 0x04E4 |
| d7c: 88 23 and r24, r24 |
| d7e: 31 f0 breq .+12 ; 0xd8c <__vector_10+0x22> |
| counter --; |
| d80: 80 91 e4 04 lds r24, 0x04E4 |
| d84: 81 50 subi r24, 0x01 ; 1 |
| d86: 80 93 e4 04 sts 0x04E4, r24 |
| d8a: 15 c0 rjmp .+42 ; 0xdb6 <__vector_10+0x4c> |
| else |
| { |
| counter = 10; |
| d8c: 8a e0 ldi r24, 0x0A ; 10 |
| d8e: 80 93 e4 04 sts 0x04E4, r24 |
| key = (~PINA >> 4) & 0x0F; |
| d92: 89 b3 in r24, 0x19 ; 25 |
| d94: 99 27 eor r25, r25 |
| d96: 80 95 com r24 |
| d98: 90 95 com r25 |
| d9a: 68 94 set |
| d9c: 13 f8 bld r1, 3 |
| d9e: 95 95 asr r25 |
| da0: 87 95 ror r24 |
| da2: 16 94 lsr r1 |
| da4: e1 f7 brne .-8 ; 0xd9e <__vector_10+0x34> |
| da6: 8f 70 andi r24, 0x0F ; 15 |
| da8: 80 93 e6 04 sts 0x04E6, r24 |
| counter2 ++; |
| dac: 80 91 69 05 lds r24, 0x0569 |
| db0: 8f 5f subi r24, 0xFF ; 255 |
| db2: 80 93 69 05 sts 0x0569, r24 |
| } |
| if (timer > 0) |
| db6: 80 91 61 00 lds r24, 0x0061 |
| dba: 88 23 and r24, r24 |
| dbc: 29 f0 breq .+10 ; 0xdc8 <__vector_10+0x5e> |
| timer --; |
| dbe: 80 91 61 00 lds r24, 0x0061 |
| dc2: 81 50 subi r24, 0x01 ; 1 |
| dc4: 80 93 61 00 sts 0x0061, r24 |
| if (rs232_timer > 0) |
| dc8: 80 91 e5 04 lds r24, 0x04E5 |
| dcc: 88 23 and r24, r24 |
| dce: 29 f0 breq .+10 ; 0xdda <__vector_10+0x70> |
| rs232_timer --; |
| dd0: 80 91 e5 04 lds r24, 0x04E5 |
| dd4: 81 50 subi r24, 0x01 ; 1 |
| dd6: 80 93 e5 04 sts 0x04E5, r24 |
| dda: 9f 91 pop r25 |
| ddc: 8f 91 pop r24 |
| dde: 0f 90 pop r0 |
| de0: 0f be out 0x3f, r0 ; 63 |
| de2: 0f 90 pop r0 |
| de4: 1f 90 pop r1 |
| de6: 18 95 reti |
| 00000de8 <timer_init>: |
| } |
| void timer_init (void) |
| { |
| TCCR0 = (1<<CS02)|(1<<CS00)|(1<<WGM01); // Prescaler 1024 |
| de8: 8d e0 ldi r24, 0x0D ; 13 |
| dea: 83 bf out 0x33, r24 ; 51 |
| OCR0 = 72; // Interrupt 100Hz für 7,372800 MHz-Quarz |
| dec: 88 e4 ldi r24, 0x48 ; 72 |
| dee: 8c bf out 0x3c, r24 ; 60 |
| TIMSK |= (1<<OCIE0); // Interrupt freigeben für OCR |
| df0: 89 b7 in r24, 0x39 ; 57 |
| df2: 82 60 ori r24, 0x02 ; 2 |
| df4: 89 bf out 0x39, r24 ; 57 |
| df6: 08 95 ret |
| 00000df8 <send_byte>: |
| void send_byte (uint8_t data) |
| { |
| clr_cs(); |
| df8: c4 98 cbi 0x18, 4 ; 24 |
| SPDR = data; |
| dfa: 8f b9 out 0x0f, r24 ; 15 |
| while(!(SPSR & (1<<SPIF))); |
| dfc: 77 9b sbis 0x0e, 7 ; 14 |
| dfe: fe cf rjmp .-4 ; 0xdfc <send_byte+0x4> |
| SPSR = SPSR; |
| e00: 8e b1 in r24, 0x0e ; 14 |
| e02: 8e b9 out 0x0e, r24 ; 14 |
| set_cs(); |
| e04: c4 9a sbi 0x18, 4 ; 24 |
| e06: 08 95 ret |
| 00000e08 <cls>: |
| } |
| void cls (void) |
| { |
| e08: 0f 93 push r16 |
| e0a: 1f 93 push r17 |
| e0c: cf 93 push r28 |
| e0e: df 93 push r29 |
| e10: 82 e6 ldi r24, 0x62 ; 98 |
| e12: 90 e0 ldi r25, 0x00 ; 0 |
| e14: fc 01 movw r30, r24 |
| uint16_t i,j; |
| for (i=0;i<1024;i++) |
| display_buffer[i] = 0x00; |
| e16: 11 92 st Z+, r1 |
| e18: 01 96 adiw r24, 0x01 ; 1 |
| e1a: 24 e0 ldi r18, 0x04 ; 4 |
| e1c: 81 36 cpi r24, 0x61 ; 97 |
| e1e: 92 07 cpc r25, r18 |
| e20: d1 f3 breq .-12 ; 0xe16 <cls+0xe> |
| e22: c8 f3 brcs .-14 ; 0xe16 <cls+0xe> |
| for (i=0;i<8;i++) |
| e24: 00 e0 ldi r16, 0x00 ; 0 |
| e26: 10 e0 ldi r17, 0x00 ; 0 |
| { |
| clr_A0(); |
| e28: c3 98 cbi 0x18, 3 ; 24 |
| send_byte(0xB0+i); |
| e2a: 80 2f mov r24, r16 |
| e2c: 80 55 subi r24, 0x50 ; 80 |
| e2e: 0e 94 fc 06 call 0xdf8 <send_byte> |
| send_byte(0x10); |
| e32: 80 e1 ldi r24, 0x10 ; 16 |
| e34: 0e 94 fc 06 call 0xdf8 <send_byte> |
| send_byte(0x04); |
| e38: 84 e0 ldi r24, 0x04 ; 4 |
| e3a: 0e 94 fc 06 call 0xdf8 <send_byte> |
| set_A0(); |
| e3e: c3 9a sbi 0x18, 3 ; 24 |
| e40: cf e7 ldi r28, 0x7F ; 127 |
| e42: d0 e0 ldi r29, 0x00 ; 0 |
| for (j=0;j<128;j++) |
| send_byte(0x00); |
| e44: 80 e0 ldi r24, 0x00 ; 0 |
| e46: 0e 94 fc 06 call 0xdf8 <send_byte> |
| e4a: 21 97 sbiw r28, 0x01 ; 1 |
| e4c: d7 ff sbrs r29, 7 |
| e4e: fa cf rjmp .-12 ; 0xe44 <cls+0x3c> |
| e50: 0f 5f subi r16, 0xFF ; 255 |
| e52: 1f 4f sbci r17, 0xFF ; 255 |
| e54: 08 30 cpi r16, 0x08 ; 8 |
| e56: 11 05 cpc r17, r1 |
| e58: 38 f3 brcs .-50 ; 0xe28 <cls+0x20> |
| } |
| lcd_xpos = 0; |
| e5a: 10 92 6a 05 sts 0x056A, r1 |
| lcd_ypos = 0; |
| e5e: 10 92 6b 05 sts 0x056B, r1 |
| e62: df 91 pop r29 |
| e64: cf 91 pop r28 |
| e66: 1f 91 pop r17 |
| e68: 0f 91 pop r16 |
| e6a: 08 95 ret |
| 00000e6c <lcd_cls>: |
| } |
| void lcd_cls (void) |
| { |
| cls(); |
| e6c: 0e 94 04 07 call 0xe08 <cls> |
| e70: 08 95 ret |
| 00000e72 <wait_1ms>: |
| __ticks = 1; |
| else if (__tmp > 65535) |
| __ticks = 0; /* i.e. 65536 */ |
| else |
| __ticks = (uint16_t)__tmp; |
| e72: 83 e3 ldi r24, 0x33 ; 51 |
| e74: 97 e0 ldi r25, 0x07 ; 7 |
| e76: 01 97 sbiw r24, 0x01 ; 1 |
| e78: f1 f7 brne .-4 ; 0xe76 <wait_1ms+0x4> |
| e7a: 08 95 ret |
| 00000e7c <wait_ms>: |
| } |
| void wait_1ms(void) |
| { |
| _delay_ms (1.0); |
| } |
| void wait_ms (uint16_t time) |
| { |
| e7c: 0f 93 push r16 |
| e7e: 1f 93 push r17 |
| e80: cf 93 push r28 |
| e82: df 93 push r29 |
| e84: 8c 01 movw r16, r24 |
| uint16_t i; |
| for (i=0; i<time; i++) |
| e86: c0 e0 ldi r28, 0x00 ; 0 |
| e88: d0 e0 ldi r29, 0x00 ; 0 |
| e8a: c8 17 cp r28, r24 |
| e8c: d9 07 cpc r29, r25 |
| e8e: 30 f4 brcc .+12 ; 0xe9c <wait_ms+0x20> |
| wait_1ms(); |
| e90: 0e 94 39 07 call 0xe72 <wait_1ms> |
| e94: 21 96 adiw r28, 0x01 ; 1 |
| e96: c0 17 cp r28, r16 |
| e98: d1 07 cpc r29, r17 |
| e9a: d0 f3 brcs .-12 ; 0xe90 <wait_ms+0x14> |
| e9c: df 91 pop r29 |
| e9e: cf 91 pop r28 |
| ea0: 1f 91 pop r17 |
| ea2: 0f 91 pop r16 |
| ea4: 08 95 ret |
| 00000ea6 <lcd_init>: |
| } |
| void lcd_init (void) |
| { |
| lcd_xpos = 0; |
| ea6: 10 92 6a 05 sts 0x056A, r1 |
| lcd_ypos = 0; |
| eaa: 10 92 6b 05 sts 0x056B, r1 |
| DDRB = 0xFF; |
| eae: 8f ef ldi r24, 0xFF ; 255 |
| eb0: 87 bb out 0x17, r24 ; 23 |
| SPCR = (1<<SPE)|(1<<MSTR)|(1<<CPHA)|(1<<CPOL)|(1<<SPR1); |
| eb2: 8e e5 ldi r24, 0x5E ; 94 |
| eb4: 8d b9 out 0x0d, r24 ; 13 |
| set_cs(); |
| eb6: c4 9a sbi 0x18, 4 ; 24 |
| clr_reset(); |
| eb8: c2 98 cbi 0x18, 2 ; 24 |
| wait_ms(10); |
| eba: 8a e0 ldi r24, 0x0A ; 10 |
| ebc: 90 e0 ldi r25, 0x00 ; 0 |
| ebe: 0e 94 3e 07 call 0xe7c <wait_ms> |
| set_reset(); |
| ec2: c2 9a sbi 0x18, 2 ; 24 |
| clr_cs(); |
| ec4: c4 98 cbi 0x18, 4 ; 24 |
| clr_A0(); |
| ec6: c3 98 cbi 0x18, 3 ; 24 |
| send_byte(0x40); |
| ec8: 80 e4 ldi r24, 0x40 ; 64 |
| eca: 0e 94 fc 06 call 0xdf8 <send_byte> |
| send_byte(0xA0); // A1 |
| ece: 80 ea ldi r24, 0xA0 ; 160 |
| ed0: 0e 94 fc 06 call 0xdf8 <send_byte> |
| send_byte(0xC8); // C0 |
| ed4: 88 ec ldi r24, 0xC8 ; 200 |
| ed6: 0e 94 fc 06 call 0xdf8 <send_byte> |
| send_byte(0xA6); |
| eda: 86 ea ldi r24, 0xA6 ; 166 |
| edc: 0e 94 fc 06 call 0xdf8 <send_byte> |
| send_byte(0xA2); |
| ee0: 82 ea ldi r24, 0xA2 ; 162 |
| ee2: 0e 94 fc 06 call 0xdf8 <send_byte> |
| send_byte(0x2F); |
| ee6: 8f e2 ldi r24, 0x2F ; 47 |
| ee8: 0e 94 fc 06 call 0xdf8 <send_byte> |
| send_byte(0xF8); |
| eec: 88 ef ldi r24, 0xF8 ; 248 |
| eee: 0e 94 fc 06 call 0xdf8 <send_byte> |
| send_byte(0x00); |
| ef2: 80 e0 ldi r24, 0x00 ; 0 |
| ef4: 0e 94 fc 06 call 0xdf8 <send_byte> |
| send_byte(0x27); |
| ef8: 87 e2 ldi r24, 0x27 ; 39 |
| efa: 0e 94 fc 06 call 0xdf8 <send_byte> |
| send_byte(0x81); |
| efe: 81 e8 ldi r24, 0x81 ; 129 |
| f00: 0e 94 fc 06 call 0xdf8 <send_byte> |
| send_byte(0x16); |
| f04: 86 e1 ldi r24, 0x16 ; 22 |
| f06: 0e 94 fc 06 call 0xdf8 <send_byte> |
| send_byte(0xAC); |
| f0a: 8c ea ldi r24, 0xAC ; 172 |
| f0c: 0e 94 fc 06 call 0xdf8 <send_byte> |
| send_byte(0x00); |
| f10: 80 e0 ldi r24, 0x00 ; 0 |
| f12: 0e 94 fc 06 call 0xdf8 <send_byte> |
| send_byte(0xAF); |
| f16: 8f ea ldi r24, 0xAF ; 175 |
| f18: 0e 94 fc 06 call 0xdf8 <send_byte> |
| cls(); |
| f1c: 0e 94 04 07 call 0xe08 <cls> |
| f20: 08 95 ret |
| 00000f22 <set_adress>: |
| } |
| void set_adress (uint16_t adress, uint8_t data) |
| { |
| f22: ff 92 push r15 |
| f24: 0f 93 push r16 |
| f26: 1f 93 push r17 |
| f28: 8c 01 movw r16, r24 |
| f2a: f6 2e mov r15, r22 |
| uint8_t page; |
| uint8_t column; |
| page = adress >> 7; |
| f2c: 88 0f add r24, r24 |
| f2e: 89 2f mov r24, r25 |
| f30: 88 1f adc r24, r24 |
| f32: 99 0b sbc r25, r25 |
| f34: 91 95 neg r25 |
| clr_A0(); |
| f36: c3 98 cbi 0x18, 3 ; 24 |
| send_byte(0xB0 + page); |
| f38: 80 55 subi r24, 0x50 ; 80 |
| f3a: 0e 94 fc 06 call 0xdf8 <send_byte> |
| column = (adress & 0x7F) + 4; |
| f3e: 10 2f mov r17, r16 |
| f40: 1f 77 andi r17, 0x7F ; 127 |
| f42: 1c 5f subi r17, 0xFC ; 252 |
| send_byte(0x10 + (column >> 4)); |
| f44: 81 2f mov r24, r17 |
| f46: 82 95 swap r24 |
| f48: 8f 70 andi r24, 0x0F ; 15 |
| f4a: 80 5f subi r24, 0xF0 ; 240 |
| f4c: 0e 94 fc 06 call 0xdf8 <send_byte> |
| send_byte(column & 0x0F); |
| f50: 81 2f mov r24, r17 |
| f52: 8f 70 andi r24, 0x0F ; 15 |
| f54: 0e 94 fc 06 call 0xdf8 <send_byte> |
| set_A0(); |
| f58: c3 9a sbi 0x18, 3 ; 24 |
| send_byte(data); |
| f5a: 8f 2d mov r24, r15 |
| f5c: 0e 94 fc 06 call 0xdf8 <send_byte> |
| f60: 1f 91 pop r17 |
| f62: 0f 91 pop r16 |
| f64: ff 90 pop r15 |
| f66: 08 95 ret |
| 00000f68 <scroll>: |
| } |
| void scroll (void) |
| { |
| f68: ef 92 push r14 |
| f6a: ff 92 push r15 |
| f6c: 0f 93 push r16 |
| f6e: 1f 93 push r17 |
| f70: cf 93 push r28 |
| f72: df 93 push r29 |
| uint16_t adress; |
| for (adress=0;adress<896;adress++) |
| f74: c0 e0 ldi r28, 0x00 ; 0 |
| f76: d0 e0 ldi r29, 0x00 ; 0 |
| f78: 32 ee ldi r19, 0xE2 ; 226 |
| f7a: e3 2e mov r14, r19 |
| f7c: 30 e0 ldi r19, 0x00 ; 0 |
| f7e: f3 2e mov r15, r19 |
| f80: 87 01 movw r16, r14 |
| f82: 00 58 subi r16, 0x80 ; 128 |
| f84: 10 40 sbci r17, 0x00 ; 0 |
| { |
| display_buffer[adress] = display_buffer[adress+128]; |
| f86: f7 01 movw r30, r14 |
| f88: 81 91 ld r24, Z+ |
| f8a: 7f 01 movw r14, r30 |
| f8c: f8 01 movw r30, r16 |
| f8e: 80 83 st Z, r24 |
| set_adress(adress,display_buffer[adress]); |
| f90: 61 91 ld r22, Z+ |
| f92: 8f 01 movw r16, r30 |
| f94: ce 01 movw r24, r28 |
| f96: 0e 94 91 07 call 0xf22 <set_adress> |
| f9a: 21 96 adiw r28, 0x01 ; 1 |
| f9c: f3 e0 ldi r31, 0x03 ; 3 |
| f9e: c0 38 cpi r28, 0x80 ; 128 |
| fa0: df 07 cpc r29, r31 |
| fa2: 88 f3 brcs .-30 ; 0xf86 <scroll+0x1e> |
| fa4: c0 e8 ldi r28, 0x80 ; 128 |
| fa6: d3 e0 ldi r29, 0x03 ; 3 |
| fa8: 02 ee ldi r16, 0xE2 ; 226 |
| faa: 13 e0 ldi r17, 0x03 ; 3 |
| } |
| for (adress=896;adress<1024;adress++) |
| { |
| display_buffer[adress] = 0; |
| fac: f8 01 movw r30, r16 |
| fae: 11 92 st Z+, r1 |
| fb0: 8f 01 movw r16, r30 |
| set_adress(adress,0); |
| fb2: 60 e0 ldi r22, 0x00 ; 0 |
| fb4: ce 01 movw r24, r28 |
| fb6: 0e 94 91 07 call 0xf22 <set_adress> |
| fba: 21 96 adiw r28, 0x01 ; 1 |
| fbc: f4 e0 ldi r31, 0x04 ; 4 |
| fbe: c0 30 cpi r28, 0x00 ; 0 |
| fc0: df 07 cpc r29, r31 |
| fc2: a0 f3 brcs .-24 ; 0xfac <scroll+0x44> |
| fc4: df 91 pop r29 |
| fc6: cf 91 pop r28 |
| fc8: 1f 91 pop r17 |
| fca: 0f 91 pop r16 |
| fcc: ff 90 pop r15 |
| fce: ef 90 pop r14 |
| fd0: 08 95 ret |
| 00000fd2 <put_char>: |
| } |
| } |
| // |
| // x,y = character-Pos. ! |
| // |
| // mode: 0=Overwrite, 1 = OR, 2 = XOR, 3 = AND, 4 = Delete |
| void put_char (uint8_t x, uint8_t y, uint8_t c, uint8_t mode) |
| { |
| fd2: bf 92 push r11 |
| fd4: cf 92 push r12 |
| fd6: df 92 push r13 |
| fd8: ef 92 push r14 |
| fda: ff 92 push r15 |
| fdc: 0f 93 push r16 |
| fde: 1f 93 push r17 |
| fe0: cf 93 push r28 |
| fe2: df 93 push r29 |
| fe4: 38 2f mov r19, r24 |
| fe6: f4 2e mov r15, r20 |
| fe8: b2 2e mov r11, r18 |
| uint8_t ch; |
| uint8_t i; |
| uint16_t adress; |
| switch(c) |
| fea: 84 2f mov r24, r20 |
| fec: 99 27 eor r25, r25 |
| fee: 8f 3d cpi r24, 0xDF ; 223 |
| ff0: 91 05 cpc r25, r1 |
| ff2: 89 f1 breq .+98 ; 0x1056 <put_char+0x84> |
| ff4: 80 3e cpi r24, 0xE0 ; 224 |
| ff6: 91 05 cpc r25, r1 |
| ff8: 74 f4 brge .+28 ; 0x1016 <put_char+0x44> |
| ffa: 86 3d cpi r24, 0xD6 ; 214 |
| ffc: 91 05 cpc r25, r1 |
| ffe: 29 f1 breq .+74 ; 0x104a <put_char+0x78> |
| 1000: 87 3d cpi r24, 0xD7 ; 215 |
| 1002: 91 05 cpc r25, r1 |
| 1004: 24 f4 brge .+8 ; 0x100e <put_char+0x3c> |
| 1006: 84 3c cpi r24, 0xC4 ; 196 |
| 1008: 91 05 cpc r25, r1 |
| 100a: e1 f0 breq .+56 ; 0x1044 <put_char+0x72> |
| 100c: 26 c0 rjmp .+76 ; 0x105a <put_char+0x88> |
| 100e: 8c 3d cpi r24, 0xDC ; 220 |
| 1010: 91 05 cpc r25, r1 |
| 1012: f1 f0 breq .+60 ; 0x1050 <put_char+0x7e> |
| 1014: 22 c0 rjmp .+68 ; 0x105a <put_char+0x88> |
| 1016: 86 3f cpi r24, 0xF6 ; 246 |
| 1018: 91 05 cpc r25, r1 |
| 101a: 71 f0 breq .+28 ; 0x1038 <put_char+0x66> |
| 101c: 87 3f cpi r24, 0xF7 ; 247 |
| 101e: 91 05 cpc r25, r1 |
| 1020: 24 f4 brge .+8 ; 0x102a <put_char+0x58> |
| 1022: 84 3e cpi r24, 0xE4 ; 228 |
| 1024: 91 05 cpc r25, r1 |
| 1026: 29 f0 breq .+10 ; 0x1032 <put_char+0x60> |
| 1028: 18 c0 rjmp .+48 ; 0x105a <put_char+0x88> |
| 102a: 8c 3f cpi r24, 0xFC ; 252 |
| 102c: 91 05 cpc r25, r1 |
| 102e: 39 f0 breq .+14 ; 0x103e <put_char+0x6c> |
| 1030: 14 c0 rjmp .+40 ; 0x105a <put_char+0x88> |
| { |
| case 'ä': |
| c = 0x84; |
| 1032: 14 e8 ldi r17, 0x84 ; 132 |
| 1034: f1 2e mov r15, r17 |
| break; |
| 1036: 11 c0 rjmp .+34 ; 0x105a <put_char+0x88> |
| case 'ö': |
| c = 0x94; |
| 1038: c4 e9 ldi r28, 0x94 ; 148 |
| 103a: fc 2e mov r15, r28 |
| break; |
| 103c: 0e c0 rjmp .+28 ; 0x105a <put_char+0x88> |
| case 'ü': |
| c = 0x81; |
| 103e: b1 e8 ldi r27, 0x81 ; 129 |
| 1040: fb 2e mov r15, r27 |
| break; |
| 1042: 0b c0 rjmp .+22 ; 0x105a <put_char+0x88> |
| case 'Ä': |
| c = 0x8E; |
| 1044: ae e8 ldi r26, 0x8E ; 142 |
| 1046: fa 2e mov r15, r26 |
| break; |
| 1048: 08 c0 rjmp .+16 ; 0x105a <put_char+0x88> |
| case 'Ö': |
| c = 0x99; |
| 104a: f9 e9 ldi r31, 0x99 ; 153 |
| 104c: ff 2e mov r15, r31 |
| break; |
| 104e: 05 c0 rjmp .+10 ; 0x105a <put_char+0x88> |
| case 'Ü': |
| c = 0x9A; |
| 1050: ea e9 ldi r30, 0x9A ; 154 |
| 1052: fe 2e mov r15, r30 |
| break; |
| 1054: 02 c0 rjmp .+4 ; 0x105a <put_char+0x88> |
| case 'ß': |
| c = 0xE1; |
| 1056: 71 ee ldi r23, 0xE1 ; 225 |
| 1058: f7 2e mov r15, r23 |
| break; |
| } |
| adress = y*128 + x*6; |
| 105a: c6 2f mov r28, r22 |
| 105c: dd 27 eor r29, r29 |
| 105e: d6 95 lsr r29 |
| 1060: dc 2f mov r29, r28 |
| 1062: cc 27 eor r28, r28 |
| 1064: d7 95 ror r29 |
| 1066: c7 95 ror r28 |
| 1068: 86 e0 ldi r24, 0x06 ; 6 |
| 106a: 38 9f mul r19, r24 |
| 106c: c0 01 movw r24, r0 |
| 106e: 11 24 eor r1, r1 |
| 1070: c8 0f add r28, r24 |
| 1072: d9 1f adc r29, r25 |
| adress &= 0x3FF; |
| 1074: d3 70 andi r29, 0x03 ; 3 |
| 1076: 6e 01 movw r12, r28 |
| 1078: 00 e0 ldi r16, 0x00 ; 0 |
| 107a: 10 e0 ldi r17, 0x00 ; 0 |
| 107c: 45 e0 ldi r20, 0x05 ; 5 |
| 107e: e4 2e mov r14, r20 |
| for (i=0;i<6;i++) |
| { |
| ch = pgm_read_byte (&f8x6[0][0] + i + c * 6); |
| 1080: 86 e0 ldi r24, 0x06 ; 6 |
| 1082: f8 9e mul r15, r24 |
| 1084: f0 01 movw r30, r0 |
| 1086: 11 24 eor r1, r1 |
| 1088: e0 0f add r30, r16 |
| 108a: f1 1f adc r31, r17 |
| 108c: ec 5a subi r30, 0xAC ; 172 |
| 108e: ff 4f sbci r31, 0xFF ; 255 |
| 1090: 24 91 lpm r18, Z |
| switch (mode) |
| 1092: 8b 2d mov r24, r11 |
| 1094: 99 27 eor r25, r25 |
| 1096: 82 30 cpi r24, 0x02 ; 2 |
| 1098: 91 05 cpc r25, r1 |
| 109a: e9 f0 breq .+58 ; 0x10d6 <put_char+0x104> |
| 109c: 83 30 cpi r24, 0x03 ; 3 |
| 109e: 91 05 cpc r25, r1 |
| 10a0: 2c f4 brge .+10 ; 0x10ac <put_char+0xda> |
| 10a2: 00 97 sbiw r24, 0x00 ; 0 |
| 10a4: 49 f0 breq .+18 ; 0x10b8 <put_char+0xe6> |
| 10a6: 01 97 sbiw r24, 0x01 ; 1 |
| 10a8: 71 f0 breq .+28 ; 0x10c6 <put_char+0xf4> |
| 10aa: 2c c0 rjmp .+88 ; 0x1104 <put_char+0x132> |
| 10ac: 83 30 cpi r24, 0x03 ; 3 |
| 10ae: 91 05 cpc r25, r1 |
| 10b0: d1 f0 breq .+52 ; 0x10e6 <put_char+0x114> |
| 10b2: 04 97 sbiw r24, 0x04 ; 4 |
| 10b4: f1 f0 breq .+60 ; 0x10f2 <put_char+0x120> |
| 10b6: 26 c0 rjmp .+76 ; 0x1104 <put_char+0x132> |
| { |
| case 0: |
| display_buffer[adress+i] = ch; |
| 10b8: fe 01 movw r30, r28 |
| 10ba: ee 59 subi r30, 0x9E ; 158 |
| 10bc: ff 4f sbci r31, 0xFF ; 255 |
| 10be: e0 0f add r30, r16 |
| 10c0: f1 1f adc r31, r17 |
| 10c2: 20 83 st Z, r18 |
| break; |
| 10c4: 1f c0 rjmp .+62 ; 0x1104 <put_char+0x132> |
| case 1: |
| display_buffer[adress+i] |= ch; |
| 10c6: fe 01 movw r30, r28 |
| 10c8: ee 59 subi r30, 0x9E ; 158 |
| 10ca: ff 4f sbci r31, 0xFF ; 255 |
| 10cc: e0 0f add r30, r16 |
| 10ce: f1 1f adc r31, r17 |
| 10d0: 80 81 ld r24, Z |
| 10d2: 82 2b or r24, r18 |
| 10d4: 16 c0 rjmp .+44 ; 0x1102 <put_char+0x130> |
| break; |
| case 2: |
| display_buffer[adress+i] ^= ch; |
| 10d6: fe 01 movw r30, r28 |
| 10d8: ee 59 subi r30, 0x9E ; 158 |
| 10da: ff 4f sbci r31, 0xFF ; 255 |
| 10dc: e0 0f add r30, r16 |
| 10de: f1 1f adc r31, r17 |
| 10e0: 80 81 ld r24, Z |
| 10e2: 82 27 eor r24, r18 |
| 10e4: 0e c0 rjmp .+28 ; 0x1102 <put_char+0x130> |
| break; |
| case 3: |
| display_buffer[adress+i] &= ch; |
| 10e6: fe 01 movw r30, r28 |
| 10e8: ee 59 subi r30, 0x9E ; 158 |
| 10ea: ff 4f sbci r31, 0xFF ; 255 |
| 10ec: e0 0f add r30, r16 |
| 10ee: f1 1f adc r31, r17 |
| 10f0: 06 c0 rjmp .+12 ; 0x10fe <put_char+0x12c> |
| break; |
| case 4: |
| display_buffer[adress+i] &= ~ch; |
| 10f2: fe 01 movw r30, r28 |
| 10f4: ee 59 subi r30, 0x9E ; 158 |
| 10f6: ff 4f sbci r31, 0xFF ; 255 |
| 10f8: e0 0f add r30, r16 |
| 10fa: f1 1f adc r31, r17 |
| 10fc: 20 95 com r18 |
| 10fe: 80 81 ld r24, Z |
| 1100: 82 23 and r24, r18 |
| 1102: 80 83 st Z, r24 |
| break; |
| } |
| set_adress(adress+i,display_buffer[adress+i]); |
| 1104: fe 01 movw r30, r28 |
| 1106: ee 59 subi r30, 0x9E ; 158 |
| 1108: ff 4f sbci r31, 0xFF ; 255 |
| 110a: e0 0f add r30, r16 |
| 110c: f1 1f adc r31, r17 |
| 110e: 60 81 ld r22, Z |
| 1110: c6 01 movw r24, r12 |
| 1112: 0e 94 91 07 call 0xf22 <set_adress> |
| 1116: ea 94 dec r14 |
| 1118: 0f 5f subi r16, 0xFF ; 255 |
| 111a: 1f 4f sbci r17, 0xFF ; 255 |
| 111c: 08 94 sec |
| 111e: c1 1c adc r12, r1 |
| 1120: d1 1c adc r13, r1 |
| 1122: e7 fe sbrs r14, 7 |
| 1124: ad cf rjmp .-166 ; 0x1080 <put_char+0xae> |
| 1126: df 91 pop r29 |
| 1128: cf 91 pop r28 |
| 112a: 1f 91 pop r17 |
| 112c: 0f 91 pop r16 |
| 112e: ff 90 pop r15 |
| 1130: ef 90 pop r14 |
| 1132: df 90 pop r13 |
| 1134: cf 90 pop r12 |
| 1136: bf 90 pop r11 |
| 1138: 08 95 ret |
| 0000113a <new_line>: |
| } |
| } |
| void new_line (void) |
| { |
| lcd_ypos++; |
| 113a: 80 91 6b 05 lds r24, 0x056B |
| 113e: 8f 5f subi r24, 0xFF ; 255 |
| 1140: 80 93 6b 05 sts 0x056B, r24 |
| if (lcd_ypos > 7) |
| 1144: 88 30 cpi r24, 0x08 ; 8 |
| 1146: 28 f0 brcs .+10 ; 0x1152 <new_line+0x18> |
| { |
| scroll(); |
| 1148: 0e 94 b4 07 call 0xf68 <scroll> |
| lcd_ypos = 7; |
| 114c: 87 e0 ldi r24, 0x07 ; 7 |
| 114e: 80 93 6b 05 sts 0x056B, r24 |
| 1152: 08 95 ret |
| 00001154 <lcd_printp>: |
| } |
| } |
| void lcd_printp (const char *text, uint8_t mode) |
| { |
| 1154: 1f 93 push r17 |
| 1156: cf 93 push r28 |
| 1158: df 93 push r29 |
| 115a: ec 01 movw r28, r24 |
| 115c: 16 2f mov r17, r22 |
| while (pgm_read_byte(text)) |
| { |
| if (pgm_read_byte(text) > 0x1F) |
| { |
| put_char(lcd_xpos,lcd_ypos,pgm_read_byte(text++),mode); |
| lcd_xpos++; |
| if (lcd_xpos > 20) |
| { |
| lcd_xpos = 0; |
| new_line(); |
| } |
| } |
| else |
| { |
| switch (pgm_read_byte(text)) |
| { |
| case 0x0D: |
| lcd_xpos = 0; |
| break; |
| case 0x0A: |
| new_line(); |
| break; |
| } |
| text++; |
| 115e: fc 01 movw r30, r24 |
| 1160: 84 91 lpm r24, Z |
| 1162: 88 23 and r24, r24 |
| 1164: 51 f1 breq .+84 ; 0x11ba <lcd_printp+0x66> |
| 1166: fe 01 movw r30, r28 |
| 1168: 84 91 lpm r24, Z |
| 116a: 80 32 cpi r24, 0x20 ; 32 |
| 116c: b0 f0 brcs .+44 ; 0x119a <lcd_printp+0x46> |
| 116e: 21 96 adiw r28, 0x01 ; 1 |
| 1170: 84 91 lpm r24, Z |
| 1172: 21 2f mov r18, r17 |
| 1174: 48 2f mov r20, r24 |
| 1176: 60 91 6b 05 lds r22, 0x056B |
| 117a: 80 91 6a 05 lds r24, 0x056A |
| 117e: 0e 94 e9 07 call 0xfd2 <put_char> |
| 1182: 80 91 6a 05 lds r24, 0x056A |
| 1186: 8f 5f subi r24, 0xFF ; 255 |
| 1188: 80 93 6a 05 sts 0x056A, r24 |
| 118c: 85 31 cpi r24, 0x15 ; 21 |
| 118e: 88 f0 brcs .+34 ; 0x11b2 <lcd_printp+0x5e> |
| 1190: 10 92 6a 05 sts 0x056A, r1 |
| 1194: 0e 94 9d 08 call 0x113a <new_line> |
| 1198: 0c c0 rjmp .+24 ; 0x11b2 <lcd_printp+0x5e> |
| 119a: 99 27 eor r25, r25 |
| 119c: 8a 30 cpi r24, 0x0A ; 10 |
| 119e: 91 05 cpc r25, r1 |
| 11a0: 29 f0 breq .+10 ; 0x11ac <lcd_printp+0x58> |
| 11a2: 0d 97 sbiw r24, 0x0d ; 13 |
| 11a4: 29 f4 brne .+10 ; 0x11b0 <lcd_printp+0x5c> |
| 11a6: 10 92 6a 05 sts 0x056A, r1 |
| 11aa: 02 c0 rjmp .+4 ; 0x11b0 <lcd_printp+0x5c> |
| 11ac: 0e 94 9d 08 call 0x113a <new_line> |
| 11b0: 21 96 adiw r28, 0x01 ; 1 |
| 11b2: fe 01 movw r30, r28 |
| 11b4: 84 91 lpm r24, Z |
| 11b6: 88 23 and r24, r24 |
| 11b8: b1 f6 brne .-84 ; 0x1166 <lcd_printp+0x12> |
| 11ba: df 91 pop r29 |
| 11bc: cf 91 pop r28 |
| 11be: 1f 91 pop r17 |
| 11c0: 08 95 ret |
| 000011c2 <lcd_print_atp>: |
| } |
| } |
| } |
| void lcd_print_atp (uint8_t x, uint8_t y, const char *text, uint8_t mode) |
| { |
| lcd_xpos = x; |
| 11c2: 80 93 6a 05 sts 0x056A, r24 |
| lcd_ypos = y; |
| 11c6: 60 93 6b 05 sts 0x056B, r22 |
| lcd_printp (text, mode); |
| 11ca: 62 2f mov r22, r18 |
| 11cc: ca 01 movw r24, r20 |
| 11ce: 0e 94 aa 08 call 0x1154 <lcd_printp> |
| 11d2: 08 95 ret |
| 000011d4 <lcd_print>: |
| } |
| void lcd_print (uint8_t *text, uint8_t mode) |
| { |
| 11d4: 1f 93 push r17 |
| 11d6: cf 93 push r28 |
| 11d8: df 93 push r29 |
| 11da: ec 01 movw r28, r24 |
| 11dc: 16 2f mov r17, r22 |
| while (*text) |
| { |
| if (*text > 0x1F) |
| { |
| put_char(lcd_xpos,lcd_ypos,*text++,mode); |
| lcd_xpos++; |
| if (lcd_xpos > 20) |
| { |
| lcd_xpos = 0; |
| new_line(); |
| } |
| } |
| else |
| { |
| switch (*text) |
| { |
| case 0x0D: |
| lcd_xpos = 0; |
| break; |
| case 0x0A: |
| new_line(); |
| break; |
| } |
| text++; |
| 11de: 88 81 ld r24, Y |
| 11e0: 88 23 and r24, r24 |
| 11e2: 39 f1 breq .+78 ; 0x1232 <lcd_print+0x5e> |
| 11e4: 48 81 ld r20, Y |
| 11e6: 40 32 cpi r20, 0x20 ; 32 |
| 11e8: a0 f0 brcs .+40 ; 0x1212 <lcd_print+0x3e> |
| 11ea: 21 96 adiw r28, 0x01 ; 1 |
| 11ec: 21 2f mov r18, r17 |
| 11ee: 60 91 6b 05 lds r22, 0x056B |
| 11f2: 80 91 6a 05 lds r24, 0x056A |
| 11f6: 0e 94 e9 07 call 0xfd2 <put_char> |
| 11fa: 80 91 6a 05 lds r24, 0x056A |
| 11fe: 8f 5f subi r24, 0xFF ; 255 |
| 1200: 80 93 6a 05 sts 0x056A, r24 |
| 1204: 85 31 cpi r24, 0x15 ; 21 |
| 1206: 90 f0 brcs .+36 ; 0x122c <lcd_print+0x58> |
| 1208: 10 92 6a 05 sts 0x056A, r1 |
| 120c: 0e 94 9d 08 call 0x113a <new_line> |
| 1210: 0d c0 rjmp .+26 ; 0x122c <lcd_print+0x58> |
| 1212: 55 27 eor r21, r21 |
| 1214: 4a 30 cpi r20, 0x0A ; 10 |
| 1216: 51 05 cpc r21, r1 |
| 1218: 31 f0 breq .+12 ; 0x1226 <lcd_print+0x52> |
| 121a: 4d 30 cpi r20, 0x0D ; 13 |
| 121c: 51 05 cpc r21, r1 |
| 121e: 29 f4 brne .+10 ; 0x122a <lcd_print+0x56> |
| 1220: 10 92 6a 05 sts 0x056A, r1 |
| 1224: 02 c0 rjmp .+4 ; 0x122a <lcd_print+0x56> |
| 1226: 0e 94 9d 08 call 0x113a <new_line> |
| 122a: 21 96 adiw r28, 0x01 ; 1 |
| 122c: 88 81 ld r24, Y |
| 122e: 88 23 and r24, r24 |
| 1230: c9 f6 brne .-78 ; 0x11e4 <lcd_print+0x10> |
| 1232: df 91 pop r29 |
| 1234: cf 91 pop r28 |
| 1236: 1f 91 pop r17 |
| 1238: 08 95 ret |
| 0000123a <lcd_print_at>: |
| } |
| } |
| } |
| void lcd_print_at (uint8_t x, uint8_t y, uint8_t *text, uint8_t mode) |
| { |
| lcd_xpos = x; |
| 123a: 80 93 6a 05 sts 0x056A, r24 |
| lcd_ypos = y; |
| 123e: 60 93 6b 05 sts 0x056B, r22 |
| lcd_print(text, mode); |
| 1242: 62 2f mov r22, r18 |
| 1244: ca 01 movw r24, r20 |
| 1246: 0e 94 ea 08 call 0x11d4 <lcd_print> |
| 124a: 08 95 ret |
| 0000124c <lcd_plot>: |
| } |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| // + Plot (set one Pixel) |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| // mode: |
| // 0=Clear, 1=Set, 2=XOR |
| void lcd_plot (uint8_t xpos, uint8_t ypos, uint8_t mode) |
| { |
| 124c: 98 2f mov r25, r24 |
| uint16_t adress; |
| uint8_t mask; |
| if ((xpos < 128) && (ypos < 64)) |
| 124e: 87 fd sbrc r24, 7 |
| 1250: 45 c0 rjmp .+138 ; 0x12dc <lcd_plot+0x90> |
| 1252: 60 34 cpi r22, 0x40 ; 64 |
| 1254: 08 f0 brcs .+2 ; 0x1258 <lcd_plot+0xc> |
| 1256: 42 c0 rjmp .+132 ; 0x12dc <lcd_plot+0x90> |
| { |
| adress = (ypos/8) * 128 + xpos; // adress = 0/8 * 128 + 0 = 0 |
| 1258: 86 2f mov r24, r22 |
| 125a: 86 95 lsr r24 |
| 125c: 86 95 lsr r24 |
| 125e: 86 95 lsr r24 |
| 1260: a8 2f mov r26, r24 |
| 1262: bb 27 eor r27, r27 |
| 1264: b6 95 lsr r27 |
| 1266: ba 2f mov r27, r26 |
| 1268: aa 27 eor r26, r26 |
| 126a: b7 95 ror r27 |
| 126c: a7 95 ror r26 |
| 126e: a9 0f add r26, r25 |
| 1270: b1 1d adc r27, r1 |
| mask = 1<<(ypos & 0x07); // mask = 1<<0 = 1 |
| 1272: 26 2f mov r18, r22 |
| 1274: 33 27 eor r19, r19 |
| 1276: 27 70 andi r18, 0x07 ; 7 |
| 1278: 30 70 andi r19, 0x00 ; 0 |
| 127a: 81 e0 ldi r24, 0x01 ; 1 |
| 127c: 90 e0 ldi r25, 0x00 ; 0 |
| 127e: 02 c0 rjmp .+4 ; 0x1284 <lcd_plot+0x38> |
| 1280: 88 0f add r24, r24 |
| 1282: 99 1f adc r25, r25 |
| 1284: 2a 95 dec r18 |
| 1286: e2 f7 brpl .-8 ; 0x1280 <lcd_plot+0x34> |
| 1288: 98 2f mov r25, r24 |
| adress &= 0x3FF; |
| 128a: b3 70 andi r27, 0x03 ; 3 |
| switch (mode) |
| 128c: 55 27 eor r21, r21 |
| 128e: 41 30 cpi r20, 0x01 ; 1 |
| 1290: 51 05 cpc r21, r1 |
| 1292: 89 f0 breq .+34 ; 0x12b6 <lcd_plot+0x6a> |
| 1294: 42 30 cpi r20, 0x02 ; 2 |
| 1296: 51 05 cpc r21, r1 |
| 1298: 1c f4 brge .+6 ; 0x12a0 <lcd_plot+0x54> |
| 129a: 45 2b or r20, r21 |
| 129c: 29 f0 breq .+10 ; 0x12a8 <lcd_plot+0x5c> |
| 129e: 17 c0 rjmp .+46 ; 0x12ce <lcd_plot+0x82> |
| 12a0: 42 30 cpi r20, 0x02 ; 2 |
| 12a2: 51 05 cpc r21, r1 |
| 12a4: 71 f0 breq .+28 ; 0x12c2 <lcd_plot+0x76> |
| 12a6: 13 c0 rjmp .+38 ; 0x12ce <lcd_plot+0x82> |
| { |
| case 0: |
| display_buffer[adress] &=~mask; |
| 12a8: fd 01 movw r30, r26 |
| 12aa: ee 59 subi r30, 0x9E ; 158 |
| 12ac: ff 4f sbci r31, 0xFF ; 255 |
| 12ae: 90 95 com r25 |
| 12b0: 80 81 ld r24, Z |
| 12b2: 89 23 and r24, r25 |
| 12b4: 0b c0 rjmp .+22 ; 0x12cc <lcd_plot+0x80> |
| break; |
| case 1: |
| display_buffer[adress] |= mask; |
| 12b6: fd 01 movw r30, r26 |
| 12b8: ee 59 subi r30, 0x9E ; 158 |
| 12ba: ff 4f sbci r31, 0xFF ; 255 |
| 12bc: 80 81 ld r24, Z |
| 12be: 89 2b or r24, r25 |
| 12c0: 05 c0 rjmp .+10 ; 0x12cc <lcd_plot+0x80> |
| break; |
| case 2: |
| display_buffer[adress] ^= mask; |
| 12c2: fd 01 movw r30, r26 |
| 12c4: ee 59 subi r30, 0x9E ; 158 |
| 12c6: ff 4f sbci r31, 0xFF ; 255 |
| 12c8: 80 81 ld r24, Z |
| 12ca: 89 27 eor r24, r25 |
| 12cc: 80 83 st Z, r24 |
| break; |
| } |
| set_adress(adress,display_buffer[adress]); |
| 12ce: fd 01 movw r30, r26 |
| 12d0: ee 59 subi r30, 0x9E ; 158 |
| 12d2: ff 4f sbci r31, 0xFF ; 255 |
| 12d4: 60 81 ld r22, Z |
| 12d6: cd 01 movw r24, r26 |
| 12d8: 0e 94 91 07 call 0xf22 <set_adress> |
| 12dc: 08 95 ret |
| 000012de <lcd_line>: |
| } |
| } |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| // + Line (draws a line from x1,y1 to x2,y2 |
| // + Based on Bresenham line-Algorithm |
| // + found in the internet, modified by thkais 2007 |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| void lcd_line(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, uint8_t mode) |
| { |
| 12de: 2f 92 push r2 |
| 12e0: 3f 92 push r3 |
| 12e2: 4f 92 push r4 |
| 12e4: 5f 92 push r5 |
| 12e6: 6f 92 push r6 |
| 12e8: 7f 92 push r7 |
| 12ea: 8f 92 push r8 |
| 12ec: 9f 92 push r9 |
| 12ee: af 92 push r10 |
| 12f0: bf 92 push r11 |
| 12f2: cf 92 push r12 |
| 12f4: df 92 push r13 |
| 12f6: ef 92 push r14 |
| 12f8: ff 92 push r15 |
| 12fa: 0f 93 push r16 |
| 12fc: 1f 93 push r17 |
| 12fe: cf 93 push r28 |
| 1300: df 93 push r29 |
| 1302: cd b7 in r28, 0x3d ; 61 |
| 1304: de b7 in r29, 0x3e ; 62 |
| 1306: 23 97 sbiw r28, 0x03 ; 3 |
| 1308: 0f b6 in r0, 0x3f ; 63 |
| 130a: f8 94 cli |
| 130c: de bf out 0x3e, r29 ; 62 |
| 130e: 0f be out 0x3f, r0 ; 63 |
| 1310: cd bf out 0x3d, r28 ; 61 |
| 1312: 09 83 std Y+1, r16 ; 0x01 |
| int x,y,count,xs,ys,xm,ym; |
| x=(int)x1; |
| 1314: a8 2e mov r10, r24 |
| 1316: bb 24 eor r11, r11 |
| y=(int)y1; |
| 1318: c6 2e mov r12, r22 |
| 131a: dd 24 eor r13, r13 |
| xs=(int)x2 - (int)x1; |
| 131c: 64 2e mov r6, r20 |
| 131e: 77 24 eor r7, r7 |
| 1320: 73 01 movw r14, r6 |
| 1322: ea 18 sub r14, r10 |
| 1324: fb 08 sbc r15, r11 |
| ys=(int)y2 - (int)y1; |
| 1326: 82 2e mov r8, r18 |
| 1328: 99 24 eor r9, r9 |
| 132a: 84 01 movw r16, r8 |
| 132c: 0c 19 sub r16, r12 |
| 132e: 1d 09 sbc r17, r13 |
| if(xs < 0) |
| 1330: f7 fe sbrs r15, 7 |
| 1332: 04 c0 rjmp .+8 ; 0x133c <lcd_line+0x5e> |
| xm= -1; |
| 1334: 7f ef ldi r23, 0xFF ; 255 |
| 1336: 27 2e mov r2, r23 |
| 1338: 37 2e mov r3, r23 |
| 133a: 09 c0 rjmp .+18 ; 0x134e <lcd_line+0x70> |
| else |
| if(xs > 0) |
| 133c: 1e 14 cp r1, r14 |
| 133e: 1f 04 cpc r1, r15 |
| 1340: 24 f4 brge .+8 ; 0x134a <lcd_line+0x6c> |
| xm= 1; |
| 1342: 61 e0 ldi r22, 0x01 ; 1 |
| 1344: 26 2e mov r2, r22 |
| 1346: 31 2c mov r3, r1 |
| 1348: 02 c0 rjmp .+4 ; 0x134e <lcd_line+0x70> |
| else |
| xm= 0; |
| 134a: 22 24 eor r2, r2 |
| 134c: 33 24 eor r3, r3 |
| if(ys < 0) |
| 134e: 17 ff sbrs r17, 7 |
| 1350: 04 c0 rjmp .+8 ; 0x135a <lcd_line+0x7c> |
| ym= -1; |
| 1352: 5f ef ldi r21, 0xFF ; 255 |
| 1354: 45 2e mov r4, r21 |
| 1356: 55 2e mov r5, r21 |
| 1358: 09 c0 rjmp .+18 ; 0x136c <lcd_line+0x8e> |
| else |
| if(ys > 0) |
| 135a: 10 16 cp r1, r16 |
| 135c: 11 06 cpc r1, r17 |
| 135e: 24 f4 brge .+8 ; 0x1368 <lcd_line+0x8a> |
| ym= 1; |
| 1360: 41 e0 ldi r20, 0x01 ; 1 |
| 1362: 44 2e mov r4, r20 |
| 1364: 51 2c mov r5, r1 |
| 1366: 02 c0 rjmp .+4 ; 0x136c <lcd_line+0x8e> |
| else |
| ym= 0; |
| 1368: 44 24 eor r4, r4 |
| 136a: 55 24 eor r5, r5 |
| if(xs < 0) |
| 136c: f7 fe sbrs r15, 7 |
| 136e: 04 c0 rjmp .+8 ; 0x1378 <lcd_line+0x9a> |
| xs= -xs; |
| 1370: f0 94 com r15 |
| 1372: e1 94 neg r14 |
| 1374: f1 08 sbc r15, r1 |
| 1376: f3 94 inc r15 |
| if(ys < 0) |
| 1378: 17 ff sbrs r17, 7 |
| 137a: 03 c0 rjmp .+6 ; 0x1382 <lcd_line+0xa4> |
| ys= -ys; |
| 137c: 10 95 com r17 |
| 137e: 01 95 neg r16 |
| 1380: 1f 4f sbci r17, 0xFF ; 255 |
| lcd_plot((unsigned char)x, (unsigned char)y, mode); |
| 1382: 49 81 ldd r20, Y+1 ; 0x01 |
| 1384: 6c 2d mov r22, r12 |
| 1386: 8a 2d mov r24, r10 |
| 1388: 0e 94 26 09 call 0x124c <lcd_plot> |
| if(xs > ys) // Flat Line <45 degrees |
| 138c: 0e 15 cp r16, r14 |
| 138e: 1f 05 cpc r17, r15 |
| 1390: 4c f5 brge .+82 ; 0x13e4 <lcd_line+0x106> |
| { |
| count= -(xs / 2); |
| 1392: c7 01 movw r24, r14 |
| 1394: f7 fc sbrc r15, 7 |
| 1396: 01 96 adiw r24, 0x01 ; 1 |
| 1398: 95 95 asr r25 |
| 139a: 87 95 ror r24 |
| 139c: 22 27 eor r18, r18 |
| 139e: 33 27 eor r19, r19 |
| 13a0: 28 1b sub r18, r24 |
| 13a2: 39 0b sbc r19, r25 |
| 13a4: 3b 83 std Y+3, r19 ; 0x03 |
| 13a6: 2a 83 std Y+2, r18 ; 0x02 |
| while(x != x2) |
| { |
| count= count + ys; |
| x= x + xm; |
| if(count > 0) |
| { |
| y= y + ym; |
| count= count - xs; |
| } |
| lcd_plot((unsigned char)x, (unsigned char)y, mode); |
| 13a8: a6 14 cp r10, r6 |
| 13aa: b7 04 cpc r11, r7 |
| 13ac: 09 f4 brne .+2 ; 0x13b0 <lcd_line+0xd2> |
| 13ae: 41 c0 rjmp .+130 ; 0x1432 <lcd_line+0x154> |
| 13b0: 8a 81 ldd r24, Y+2 ; 0x02 |
| 13b2: 9b 81 ldd r25, Y+3 ; 0x03 |
| 13b4: 80 0f add r24, r16 |
| 13b6: 91 1f adc r25, r17 |
| 13b8: 9b 83 std Y+3, r25 ; 0x03 |
| 13ba: 8a 83 std Y+2, r24 ; 0x02 |
| 13bc: a2 0c add r10, r2 |
| 13be: b3 1c adc r11, r3 |
| 13c0: 18 16 cp r1, r24 |
| 13c2: 19 06 cpc r1, r25 |
| 13c4: 34 f4 brge .+12 ; 0x13d2 <lcd_line+0xf4> |
| 13c6: c4 0c add r12, r4 |
| 13c8: d5 1c adc r13, r5 |
| 13ca: 8e 19 sub r24, r14 |
| 13cc: 9f 09 sbc r25, r15 |
| 13ce: 9b 83 std Y+3, r25 ; 0x03 |
| 13d0: 8a 83 std Y+2, r24 ; 0x02 |
| 13d2: 49 81 ldd r20, Y+1 ; 0x01 |
| 13d4: 6c 2d mov r22, r12 |
| 13d6: 8a 2d mov r24, r10 |
| 13d8: 0e 94 26 09 call 0x124c <lcd_plot> |
| 13dc: a6 14 cp r10, r6 |
| 13de: b7 04 cpc r11, r7 |
| 13e0: 39 f7 brne .-50 ; 0x13b0 <lcd_line+0xd2> |
| 13e2: 27 c0 rjmp .+78 ; 0x1432 <lcd_line+0x154> |
| } |
| } |
| else // Line >=45 degrees |
| { |
| count=- (ys / 2); |
| 13e4: c8 01 movw r24, r16 |
| 13e6: 17 fd sbrc r17, 7 |
| 13e8: 01 96 adiw r24, 0x01 ; 1 |
| 13ea: 95 95 asr r25 |
| 13ec: 87 95 ror r24 |
| 13ee: ee 27 eor r30, r30 |
| 13f0: ff 27 eor r31, r31 |
| 13f2: e8 1b sub r30, r24 |
| 13f4: f9 0b sbc r31, r25 |
| 13f6: fb 83 std Y+3, r31 ; 0x03 |
| 13f8: ea 83 std Y+2, r30 ; 0x02 |
| while(y != y2) |
| { |
| count= count + xs; |
| y= y + ym; |
| if(count > 0) |
| { |
| x= x + xm; |
| count= count - ys; |
| } |
| lcd_plot((unsigned char)x, (unsigned char)y, mode); |
| 13fa: c8 14 cp r12, r8 |
| 13fc: d9 04 cpc r13, r9 |
| 13fe: c9 f0 breq .+50 ; 0x1432 <lcd_line+0x154> |
| 1400: 2a 81 ldd r18, Y+2 ; 0x02 |
| 1402: 3b 81 ldd r19, Y+3 ; 0x03 |
| 1404: 2e 0d add r18, r14 |
| 1406: 3f 1d adc r19, r15 |
| 1408: 3b 83 std Y+3, r19 ; 0x03 |
| 140a: 2a 83 std Y+2, r18 ; 0x02 |
| 140c: c4 0c add r12, r4 |
| 140e: d5 1c adc r13, r5 |
| 1410: 12 16 cp r1, r18 |
| 1412: 13 06 cpc r1, r19 |
| 1414: 34 f4 brge .+12 ; 0x1422 <lcd_line+0x144> |
| 1416: a2 0c add r10, r2 |
| 1418: b3 1c adc r11, r3 |
| 141a: 20 1b sub r18, r16 |
| 141c: 31 0b sbc r19, r17 |
| 141e: 3b 83 std Y+3, r19 ; 0x03 |
| 1420: 2a 83 std Y+2, r18 ; 0x02 |
| 1422: 49 81 ldd r20, Y+1 ; 0x01 |
| 1424: 6c 2d mov r22, r12 |
| 1426: 8a 2d mov r24, r10 |
| 1428: 0e 94 26 09 call 0x124c <lcd_plot> |
| 142c: c8 14 cp r12, r8 |
| 142e: d9 04 cpc r13, r9 |
| 1430: 39 f7 brne .-50 ; 0x1400 <lcd_line+0x122> |
| 1432: 23 96 adiw r28, 0x03 ; 3 |
| 1434: 0f b6 in r0, 0x3f ; 63 |
| 1436: f8 94 cli |
| 1438: de bf out 0x3e, r29 ; 62 |
| 143a: 0f be out 0x3f, r0 ; 63 |
| 143c: cd bf out 0x3d, r28 ; 61 |
| 143e: df 91 pop r29 |
| 1440: cf 91 pop r28 |
| 1442: 1f 91 pop r17 |
| 1444: 0f 91 pop r16 |
| 1446: ff 90 pop r15 |
| 1448: ef 90 pop r14 |
| 144a: df 90 pop r13 |
| 144c: cf 90 pop r12 |
| 144e: bf 90 pop r11 |
| 1450: af 90 pop r10 |
| 1452: 9f 90 pop r9 |
| 1454: 8f 90 pop r8 |
| 1456: 7f 90 pop r7 |
| 1458: 6f 90 pop r6 |
| 145a: 5f 90 pop r5 |
| 145c: 4f 90 pop r4 |
| 145e: 3f 90 pop r3 |
| 1460: 2f 90 pop r2 |
| 1462: 08 95 ret |
| 00001464 <lcd_frect>: |
| } |
| } |
| } |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| // + Filled rectangle |
| // + x1, y1 = upper left corner |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| void lcd_frect (uint8_t x1, uint8_t y1, uint8_t widthx, uint8_t widthy, uint8_t mode) |
| { |
| 1464: bf 92 push r11 |
| 1466: cf 92 push r12 |
| 1468: df 92 push r13 |
| 146a: ef 92 push r14 |
| 146c: ff 92 push r15 |
| 146e: 0f 93 push r16 |
| 1470: 1f 93 push r17 |
| 1472: cf 93 push r28 |
| 1474: df 93 push r29 |
| 1476: 18 2f mov r17, r24 |
| 1478: 82 2f mov r24, r18 |
| 147a: b0 2e mov r11, r16 |
| uint16_t x2, y2; |
| uint16_t i; |
| if (x1 >= DISP_W) |
| 147c: 17 fd sbrc r17, 7 |
| x1 = DISP_W - 1; |
| 147e: 1f e7 ldi r17, 0x7F ; 127 |
| if (y1 >= DISP_H) |
| 1480: 60 34 cpi r22, 0x40 ; 64 |
| 1482: 08 f0 brcs .+2 ; 0x1486 <lcd_frect+0x22> |
| y1 = DISP_H - 1; |
| 1484: 6f e3 ldi r22, 0x3F ; 63 |
| x2 = x1 + widthx; |
| 1486: 21 2f mov r18, r17 |
| 1488: 24 0f add r18, r20 |
| 148a: 31 2d mov r19, r1 |
| 148c: 31 1d adc r19, r1 |
| 148e: 69 01 movw r12, r18 |
| y2 = y1 + widthy; |
| 1490: 26 2f mov r18, r22 |
| 1492: 33 27 eor r19, r19 |
| 1494: 79 01 movw r14, r18 |
| 1496: e8 0e add r14, r24 |
| 1498: f1 1c adc r15, r1 |
| if (x2 > DISP_W) |
| 149a: 81 e8 ldi r24, 0x81 ; 129 |
| 149c: c8 16 cp r12, r24 |
| 149e: d1 04 cpc r13, r1 |
| 14a0: 18 f0 brcs .+6 ; 0x14a8 <lcd_frect+0x44> |
| x2 = DISP_W; |
| 14a2: f0 e8 ldi r31, 0x80 ; 128 |
| 14a4: cf 2e mov r12, r31 |
| 14a6: d1 2c mov r13, r1 |
| if (y2 > DISP_H) |
| 14a8: 81 e4 ldi r24, 0x41 ; 65 |
| 14aa: e8 16 cp r14, r24 |
| 14ac: f1 04 cpc r15, r1 |
| 14ae: 18 f0 brcs .+6 ; 0x14b6 <lcd_frect+0x52> |
| y2 = DISP_H; |
| 14b0: e0 e4 ldi r30, 0x40 ; 64 |
| 14b2: ee 2e mov r14, r30 |
| 14b4: f1 2c mov r15, r1 |
| for (i=y1;i<=y2;i++) |
| 14b6: e9 01 movw r28, r18 |
| 14b8: e2 16 cp r14, r18 |
| 14ba: f3 06 cpc r15, r19 |
| 14bc: 58 f0 brcs .+22 ; 0x14d4 <lcd_frect+0x70> |
| { |
| lcd_line(x1,i,x2,i,mode); |
| 14be: 0b 2d mov r16, r11 |
| 14c0: 2c 2f mov r18, r28 |
| 14c2: 4c 2d mov r20, r12 |
| 14c4: 6c 2f mov r22, r28 |
| 14c6: 81 2f mov r24, r17 |
| 14c8: 0e 94 6f 09 call 0x12de <lcd_line> |
| 14cc: 21 96 adiw r28, 0x01 ; 1 |
| 14ce: ec 16 cp r14, r28 |
| 14d0: fd 06 cpc r15, r29 |
| 14d2: a8 f7 brcc .-22 ; 0x14be <lcd_frect+0x5a> |
| 14d4: df 91 pop r29 |
| 14d6: cf 91 pop r28 |
| 14d8: 1f 91 pop r17 |
| 14da: 0f 91 pop r16 |
| 14dc: ff 90 pop r15 |
| 14de: ef 90 pop r14 |
| 14e0: df 90 pop r13 |
| 14e2: cf 90 pop r12 |
| 14e4: bf 90 pop r11 |
| 14e6: 08 95 ret |
| 000014e8 <lcd_rect>: |
| } |
| } |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| // + outline of rectangle |
| // + x1, y1 = upper left corner |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| void lcd_rect (uint8_t x1, uint8_t y1, uint8_t widthx, uint8_t widthy, uint8_t mode) |
| { |
| 14e8: cf 92 push r12 |
| 14ea: df 92 push r13 |
| 14ec: ef 92 push r14 |
| 14ee: ff 92 push r15 |
| 14f0: 0f 93 push r16 |
| 14f2: 1f 93 push r17 |
| 14f4: cf 93 push r28 |
| 14f6: df 93 push r29 |
| 14f8: d8 2e mov r13, r24 |
| 14fa: 16 2f mov r17, r22 |
| 14fc: c0 2e mov r12, r16 |
| uint16_t x2, y2; |
| if (x1 >= DISP_W) |
| 14fe: 87 ff sbrs r24, 7 |
| 1500: 02 c0 rjmp .+4 ; 0x1506 <lcd_rect+0x1e> |
| x1 = DISP_W - 1; |
| 1502: bf e7 ldi r27, 0x7F ; 127 |
| 1504: db 2e mov r13, r27 |
| if (y1 >= DISP_H) |
| 1506: 10 34 cpi r17, 0x40 ; 64 |
| 1508: 08 f0 brcs .+2 ; 0x150c <lcd_rect+0x24> |
| y1 = DISP_H - 1; |
| 150a: 1f e3 ldi r17, 0x3F ; 63 |
| x2 = x1 + widthx; |
| 150c: 8d 2d mov r24, r13 |
| 150e: 84 0f add r24, r20 |
| 1510: 91 2d mov r25, r1 |
| 1512: 91 1d adc r25, r1 |
| 1514: ec 01 movw r28, r24 |
| y2 = y1 + widthy; |
| 1516: 81 2f mov r24, r17 |
| 1518: 82 0f add r24, r18 |
| 151a: 91 2d mov r25, r1 |
| 151c: 91 1d adc r25, r1 |
| 151e: 7c 01 movw r14, r24 |
| if (x2 > DISP_W) |
| 1520: c1 38 cpi r28, 0x81 ; 129 |
| 1522: d1 05 cpc r29, r1 |
| 1524: 10 f0 brcs .+4 ; 0x152a <lcd_rect+0x42> |
| x2 = DISP_W; |
| 1526: c0 e8 ldi r28, 0x80 ; 128 |
| 1528: d0 e0 ldi r29, 0x00 ; 0 |
| if (y2 > DISP_H) |
| 152a: 91 e4 ldi r25, 0x41 ; 65 |
| 152c: e9 16 cp r14, r25 |
| 152e: f1 04 cpc r15, r1 |
| 1530: 18 f0 brcs .+6 ; 0x1538 <lcd_rect+0x50> |
| y2 = DISP_H; |
| 1532: a0 e4 ldi r26, 0x40 ; 64 |
| 1534: ea 2e mov r14, r26 |
| 1536: f1 2c mov r15, r1 |
| lcd_line (x1, y1, x2, y1, mode); |
| 1538: 0c 2d mov r16, r12 |
| 153a: 21 2f mov r18, r17 |
| 153c: 4c 2f mov r20, r28 |
| 153e: 61 2f mov r22, r17 |
| 1540: 8d 2d mov r24, r13 |
| 1542: 0e 94 6f 09 call 0x12de <lcd_line> |
| lcd_line (x2, y1, x2, y2, mode); |
| 1546: 2e 2d mov r18, r14 |
| 1548: 4c 2f mov r20, r28 |
| 154a: 61 2f mov r22, r17 |
| 154c: 8c 2f mov r24, r28 |
| 154e: 0e 94 6f 09 call 0x12de <lcd_line> |
| lcd_line (x2, y2, x1, y2, mode); |
| 1552: 2e 2d mov r18, r14 |
| 1554: 4d 2d mov r20, r13 |
| 1556: 6e 2d mov r22, r14 |
| 1558: 8c 2f mov r24, r28 |
| 155a: 0e 94 6f 09 call 0x12de <lcd_line> |
| lcd_line (x1, y2, x1, y1, mode); |
| 155e: 21 2f mov r18, r17 |
| 1560: 4d 2d mov r20, r13 |
| 1562: 6e 2d mov r22, r14 |
| 1564: 8d 2d mov r24, r13 |
| 1566: 0e 94 6f 09 call 0x12de <lcd_line> |
| 156a: df 91 pop r29 |
| 156c: cf 91 pop r28 |
| 156e: 1f 91 pop r17 |
| 1570: 0f 91 pop r16 |
| 1572: ff 90 pop r15 |
| 1574: ef 90 pop r14 |
| 1576: df 90 pop r13 |
| 1578: cf 90 pop r12 |
| 157a: 08 95 ret |
| 0000157c <draw_circle>: |
| } |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| // + outline of a circle |
| // + Based on Bresenham-algorithm found in wikipedia |
| // + modified by thkais (2007) |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| void draw_circle(int16_t x0, int16_t y0, int16_t radius, uint8_t mode) |
| { |
| 157c: 2f 92 push r2 |
| 157e: 3f 92 push r3 |
| 1580: 4f 92 push r4 |
| 1582: 5f 92 push r5 |
| 1584: 6f 92 push r6 |
| 1586: 7f 92 push r7 |
| 1588: 8f 92 push r8 |
| 158a: 9f 92 push r9 |
| 158c: af 92 push r10 |
| 158e: bf 92 push r11 |
| 1590: cf 92 push r12 |
| 1592: df 92 push r13 |
| 1594: ef 92 push r14 |
| 1596: ff 92 push r15 |
| 1598: 0f 93 push r16 |
| 159a: 1f 93 push r17 |
| 159c: cf 93 push r28 |
| 159e: df 93 push r29 |
| 15a0: 5c 01 movw r10, r24 |
| 15a2: 6b 01 movw r12, r22 |
| 15a4: e2 2e mov r14, r18 |
| int16_t f = 1 - radius; |
| 15a6: c1 e0 ldi r28, 0x01 ; 1 |
| 15a8: 8c 2e mov r8, r28 |
| 15aa: 91 2c mov r9, r1 |
| 15ac: 84 1a sub r8, r20 |
| 15ae: 95 0a sbc r9, r21 |
| int16_t ddF_x = 0; |
| 15b0: 22 24 eor r2, r2 |
| 15b2: 33 24 eor r3, r3 |
| int16_t ddF_y = -2 * radius; |
| 15b4: 8e ef ldi r24, 0xFE ; 254 |
| 15b6: 9f ef ldi r25, 0xFF ; 255 |
| 15b8: 48 9f mul r20, r24 |
| 15ba: 20 01 movw r4, r0 |
| 15bc: 49 9f mul r20, r25 |
| 15be: 50 0c add r5, r0 |
| 15c0: 58 9f mul r21, r24 |
| 15c2: 50 0c add r5, r0 |
| 15c4: 11 24 eor r1, r1 |
| int16_t x = 0; |
| 15c6: 31 01 movw r6, r2 |
| int16_t y = radius; |
| 15c8: ea 01 movw r28, r20 |
| lcd_plot(x0, y0 + radius, mode); |
| 15ca: 86 2f mov r24, r22 |
| 15cc: 84 0f add r24, r20 |
| 15ce: 42 2f mov r20, r18 |
| 15d0: 68 2f mov r22, r24 |
| 15d2: 8a 2d mov r24, r10 |
| 15d4: 0e 94 26 09 call 0x124c <lcd_plot> |
| lcd_plot(x0, y0 - radius, mode); |
| 15d8: 8c 2d mov r24, r12 |
| 15da: 8c 1b sub r24, r28 |
| 15dc: 4e 2d mov r20, r14 |
| 15de: 68 2f mov r22, r24 |
| 15e0: 8a 2d mov r24, r10 |
| 15e2: 0e 94 26 09 call 0x124c <lcd_plot> |
| lcd_plot(x0 + radius, y0, mode); |
| 15e6: 4e 2d mov r20, r14 |
| 15e8: 6c 2d mov r22, r12 |
| 15ea: 8a 2d mov r24, r10 |
| 15ec: 8c 0f add r24, r28 |
| 15ee: 0e 94 26 09 call 0x124c <lcd_plot> |
| lcd_plot(x0 - radius, y0, mode); |
| 15f2: 4e 2d mov r20, r14 |
| 15f4: 6c 2d mov r22, r12 |
| 15f6: 8a 2d mov r24, r10 |
| 15f8: 8c 1b sub r24, r28 |
| 15fa: 0e 94 26 09 call 0x124c <lcd_plot> |
| while(x < y) |
| { |
| if(f >= 0) |
| { |
| y --; |
| ddF_y += 2; |
| f += ddF_y; |
| } |
| x ++; |
| ddF_x += 2; |
| f += ddF_x + 1; |
| lcd_plot(x0 + x, y0 + y, mode); |
| lcd_plot(x0 - x, y0 + y, mode); |
| lcd_plot(x0 + x, y0 - y, mode); |
| lcd_plot(x0 - x, y0 - y, mode); |
| lcd_plot(x0 + y, y0 + x, mode); |
| lcd_plot(x0 - y, y0 + x, mode); |
| lcd_plot(x0 + y, y0 - x, mode); |
| lcd_plot(x0 - y, y0 - x, mode); |
| 15fe: 2c 16 cp r2, r28 |
| 1600: 3d 06 cpc r3, r29 |
| 1602: 0c f0 brlt .+2 ; 0x1606 <draw_circle+0x8a> |
| 1604: 51 c0 rjmp .+162 ; 0x16a8 <draw_circle+0x12c> |
| 1606: 97 fc sbrc r9, 7 |
| 1608: 07 c0 rjmp .+14 ; 0x1618 <draw_circle+0x9c> |
| 160a: 21 97 sbiw r28, 0x01 ; 1 |
| 160c: 82 e0 ldi r24, 0x02 ; 2 |
| 160e: 90 e0 ldi r25, 0x00 ; 0 |
| 1610: 48 0e add r4, r24 |
| 1612: 59 1e adc r5, r25 |
| 1614: 84 0c add r8, r4 |
| 1616: 95 1c adc r9, r5 |
| 1618: 08 94 sec |
| 161a: 61 1c adc r6, r1 |
| 161c: 71 1c adc r7, r1 |
| 161e: 82 e0 ldi r24, 0x02 ; 2 |
| 1620: 90 e0 ldi r25, 0x00 ; 0 |
| 1622: 28 0e add r2, r24 |
| 1624: 39 1e adc r3, r25 |
| 1626: 82 0c add r8, r2 |
| 1628: 93 1c adc r9, r3 |
| 162a: 08 94 sec |
| 162c: 81 1c adc r8, r1 |
| 162e: 91 1c adc r9, r1 |
| 1630: 1c 2d mov r17, r12 |
| 1632: 1c 0f add r17, r28 |
| 1634: fa 2c mov r15, r10 |
| 1636: f6 0c add r15, r6 |
| 1638: 4e 2d mov r20, r14 |
| 163a: 61 2f mov r22, r17 |
| 163c: 8f 2d mov r24, r15 |
| 163e: 0e 94 26 09 call 0x124c <lcd_plot> |
| 1642: 0a 2d mov r16, r10 |
| 1644: 06 19 sub r16, r6 |
| 1646: 4e 2d mov r20, r14 |
| 1648: 61 2f mov r22, r17 |
| 164a: 80 2f mov r24, r16 |
| 164c: 0e 94 26 09 call 0x124c <lcd_plot> |
| 1650: 1c 2d mov r17, r12 |
| 1652: 1c 1b sub r17, r28 |
| 1654: 4e 2d mov r20, r14 |
| 1656: 61 2f mov r22, r17 |
| 1658: 8f 2d mov r24, r15 |
| 165a: 0e 94 26 09 call 0x124c <lcd_plot> |
| 165e: 4e 2d mov r20, r14 |
| 1660: 61 2f mov r22, r17 |
| 1662: 80 2f mov r24, r16 |
| 1664: 0e 94 26 09 call 0x124c <lcd_plot> |
| 1668: 1c 2d mov r17, r12 |
| 166a: 16 0d add r17, r6 |
| 166c: fa 2c mov r15, r10 |
| 166e: fc 0e add r15, r28 |
| 1670: 4e 2d mov r20, r14 |
| 1672: 61 2f mov r22, r17 |
| 1674: 8f 2d mov r24, r15 |
| 1676: 0e 94 26 09 call 0x124c <lcd_plot> |
| 167a: 0a 2d mov r16, r10 |
| 167c: 0c 1b sub r16, r28 |
| 167e: 4e 2d mov r20, r14 |
| 1680: 61 2f mov r22, r17 |
| 1682: 80 2f mov r24, r16 |
| 1684: 0e 94 26 09 call 0x124c <lcd_plot> |
| 1688: 1c 2d mov r17, r12 |
| 168a: 16 19 sub r17, r6 |
| 168c: 4e 2d mov r20, r14 |
| 168e: 61 2f mov r22, r17 |
| 1690: 8f 2d mov r24, r15 |
| 1692: 0e 94 26 09 call 0x124c <lcd_plot> |
| 1696: 4e 2d mov r20, r14 |
| 1698: 61 2f mov r22, r17 |
| 169a: 80 2f mov r24, r16 |
| 169c: 0e 94 26 09 call 0x124c <lcd_plot> |
| 16a0: 6c 16 cp r6, r28 |
| 16a2: 7d 06 cpc r7, r29 |
| 16a4: 0c f4 brge .+2 ; 0x16a8 <draw_circle+0x12c> |
| 16a6: af cf rjmp .-162 ; 0x1606 <draw_circle+0x8a> |
| 16a8: df 91 pop r29 |
| 16aa: cf 91 pop r28 |
| 16ac: 1f 91 pop r17 |
| 16ae: 0f 91 pop r16 |
| 16b0: ff 90 pop r15 |
| 16b2: ef 90 pop r14 |
| 16b4: df 90 pop r13 |
| 16b6: cf 90 pop r12 |
| 16b8: bf 90 pop r11 |
| 16ba: af 90 pop r10 |
| 16bc: 9f 90 pop r9 |
| 16be: 8f 90 pop r8 |
| 16c0: 7f 90 pop r7 |
| 16c2: 6f 90 pop r6 |
| 16c4: 5f 90 pop r5 |
| 16c6: 4f 90 pop r4 |
| 16c8: 3f 90 pop r3 |
| 16ca: 2f 90 pop r2 |
| 16cc: 08 95 ret |
| 000016ce <draw_fcircle>: |
| } |
| } |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| // + filled Circle |
| // + modified circle-algorithm thkais (2007) |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| void draw_fcircle(int16_t x0, int16_t y0, int16_t radius) |
| { |
| 16ce: 2f 92 push r2 |
| 16d0: 3f 92 push r3 |
| 16d2: 4f 92 push r4 |
| 16d4: 5f 92 push r5 |
| 16d6: 6f 92 push r6 |
| 16d8: 7f 92 push r7 |
| 16da: 8f 92 push r8 |
| 16dc: 9f 92 push r9 |
| 16de: af 92 push r10 |
| 16e0: bf 92 push r11 |
| 16e2: cf 92 push r12 |
| 16e4: df 92 push r13 |
| 16e6: ff 92 push r15 |
| 16e8: 0f 93 push r16 |
| 16ea: 1f 93 push r17 |
| 16ec: cf 93 push r28 |
| 16ee: df 93 push r29 |
| 16f0: 5c 01 movw r10, r24 |
| 16f2: 6b 01 movw r12, r22 |
| int16_t f = 1 - radius; |
| 16f4: 11 e0 ldi r17, 0x01 ; 1 |
| 16f6: 61 2e mov r6, r17 |
| 16f8: 71 2c mov r7, r1 |
| 16fa: 64 1a sub r6, r20 |
| 16fc: 75 0a sbc r7, r21 |
| int16_t ddF_x = 0; |
| 16fe: 22 24 eor r2, r2 |
| 1700: 33 24 eor r3, r3 |
| int16_t ddF_y = -2 * radius; |
| 1702: 8e ef ldi r24, 0xFE ; 254 |
| 1704: 9f ef ldi r25, 0xFF ; 255 |
| 1706: 48 9f mul r20, r24 |
| 1708: 20 01 movw r4, r0 |
| 170a: 49 9f mul r20, r25 |
| 170c: 50 0c add r5, r0 |
| 170e: 58 9f mul r21, r24 |
| 1710: 50 0c add r5, r0 |
| 1712: 11 24 eor r1, r1 |
| int16_t x = 0; |
| 1714: 41 01 movw r8, r2 |
| int16_t y = radius; |
| 1716: ea 01 movw r28, r20 |
| lcd_line(x0, y0 + radius,x0, y0 - radius,1); |
| 1718: 86 2f mov r24, r22 |
| 171a: 84 1b sub r24, r20 |
| 171c: 96 2f mov r25, r22 |
| 171e: 94 0f add r25, r20 |
| 1720: 01 e0 ldi r16, 0x01 ; 1 |
| 1722: 28 2f mov r18, r24 |
| 1724: 4a 2d mov r20, r10 |
| 1726: 69 2f mov r22, r25 |
| 1728: 8a 2d mov r24, r10 |
| 172a: 0e 94 6f 09 call 0x12de <lcd_line> |
| lcd_line(x0 + radius, y0,x0 - radius, y0,1); |
| 172e: 8a 2d mov r24, r10 |
| 1730: 8c 1b sub r24, r28 |
| 1732: 2c 2d mov r18, r12 |
| 1734: 48 2f mov r20, r24 |
| 1736: 6c 2d mov r22, r12 |
| 1738: 8a 2d mov r24, r10 |
| 173a: 8c 0f add r24, r28 |
| 173c: 0e 94 6f 09 call 0x12de <lcd_line> |
| while(x < y) |
| { |
| if(f >= 0) |
| { |
| y--; |
| ddF_y += 2; |
| f += ddF_y; |
| } |
| x++; |
| ddF_x += 2; |
| f += ddF_x + 1; |
| lcd_line(x0 + x, y0 + y,x0 - x, y0 + y,1); |
| lcd_line(x0 + x, y0 - y,x0 - x, y0 - y,1); |
| lcd_line(x0 + y, y0 + x,x0 - y, y0 + x,1); |
| lcd_line(x0 + y, y0 - x,x0 - y, y0 - x,1); |
| 1740: 2c 16 cp r2, r28 |
| 1742: 3d 06 cpc r3, r29 |
| 1744: 0c f0 brlt .+2 ; 0x1748 <draw_fcircle+0x7a> |
| 1746: 42 c0 rjmp .+132 ; 0x17cc <draw_fcircle+0xfe> |
| 1748: 77 fc sbrc r7, 7 |
| 174a: 07 c0 rjmp .+14 ; 0x175a <draw_fcircle+0x8c> |
| 174c: 21 97 sbiw r28, 0x01 ; 1 |
| 174e: 82 e0 ldi r24, 0x02 ; 2 |
| 1750: 90 e0 ldi r25, 0x00 ; 0 |
| 1752: 48 0e add r4, r24 |
| 1754: 59 1e adc r5, r25 |
| 1756: 64 0c add r6, r4 |
| 1758: 75 1c adc r7, r5 |
| 175a: 08 94 sec |
| 175c: 81 1c adc r8, r1 |
| 175e: 91 1c adc r9, r1 |
| 1760: 82 e0 ldi r24, 0x02 ; 2 |
| 1762: 90 e0 ldi r25, 0x00 ; 0 |
| 1764: 28 0e add r2, r24 |
| 1766: 39 1e adc r3, r25 |
| 1768: 62 0c add r6, r2 |
| 176a: 73 1c adc r7, r3 |
| 176c: 08 94 sec |
| 176e: 61 1c adc r6, r1 |
| 1770: 71 1c adc r7, r1 |
| 1772: 8c 2d mov r24, r12 |
| 1774: 8c 0f add r24, r28 |
| 1776: 1a 2d mov r17, r10 |
| 1778: 18 19 sub r17, r8 |
| 177a: fa 2c mov r15, r10 |
| 177c: f8 0c add r15, r8 |
| 177e: 01 e0 ldi r16, 0x01 ; 1 |
| 1780: 28 2f mov r18, r24 |
| 1782: 41 2f mov r20, r17 |
| 1784: 68 2f mov r22, r24 |
| 1786: 8f 2d mov r24, r15 |
| 1788: 0e 94 6f 09 call 0x12de <lcd_line> |
| 178c: 8c 2d mov r24, r12 |
| 178e: 8c 1b sub r24, r28 |
| 1790: 28 2f mov r18, r24 |
| 1792: 41 2f mov r20, r17 |
| 1794: 68 2f mov r22, r24 |
| 1796: 8f 2d mov r24, r15 |
| 1798: 0e 94 6f 09 call 0x12de <lcd_line> |
| 179c: 8c 2d mov r24, r12 |
| 179e: 88 0d add r24, r8 |
| 17a0: 1a 2d mov r17, r10 |
| 17a2: 1c 1b sub r17, r28 |
| 17a4: fa 2c mov r15, r10 |
| 17a6: fc 0e add r15, r28 |
| 17a8: 28 2f mov r18, r24 |
| 17aa: 41 2f mov r20, r17 |
| 17ac: 68 2f mov r22, r24 |
| 17ae: 8f 2d mov r24, r15 |
| 17b0: 0e 94 6f 09 call 0x12de <lcd_line> |
| 17b4: 8c 2d mov r24, r12 |
| 17b6: 88 19 sub r24, r8 |
| 17b8: 28 2f mov r18, r24 |
| 17ba: 41 2f mov r20, r17 |
| 17bc: 68 2f mov r22, r24 |
| 17be: 8f 2d mov r24, r15 |
| 17c0: 0e 94 6f 09 call 0x12de <lcd_line> |
| 17c4: 8c 16 cp r8, r28 |
| 17c6: 9d 06 cpc r9, r29 |
| 17c8: 0c f4 brge .+2 ; 0x17cc <draw_fcircle+0xfe> |
| 17ca: be cf rjmp .-132 ; 0x1748 <draw_fcircle+0x7a> |
| 17cc: df 91 pop r29 |
| 17ce: cf 91 pop r28 |
| 17d0: 1f 91 pop r17 |
| 17d2: 0f 91 pop r16 |
| 17d4: ff 90 pop r15 |
| 17d6: df 90 pop r13 |
| 17d8: cf 90 pop r12 |
| 17da: bf 90 pop r11 |
| 17dc: af 90 pop r10 |
| 17de: 9f 90 pop r9 |
| 17e0: 8f 90 pop r8 |
| 17e2: 7f 90 pop r7 |
| 17e4: 6f 90 pop r6 |
| 17e6: 5f 90 pop r5 |
| 17e8: 4f 90 pop r4 |
| 17ea: 3f 90 pop r3 |
| 17ec: 2f 90 pop r2 |
| 17ee: 08 95 ret |
| 000017f0 <__vector_13>: |
| volatile uint8_t read_index, write_index; |
| volatile uint8_t rs232_buffer[16]; |
| ISR(USART_RXC_vect) |
| { |
| 17f0: 1f 92 push r1 |
| 17f2: 0f 92 push r0 |
| 17f4: 0f b6 in r0, 0x3f ; 63 |
| 17f6: 0f 92 push r0 |
| 17f8: 11 24 eor r1, r1 |
| 17fa: 8f 93 push r24 |
| 17fc: 9f 93 push r25 |
| 17fe: ef 93 push r30 |
| 1800: ff 93 push r31 |
| rs232_buffer[write_index++] = UDR; |
| 1802: 90 91 6c 05 lds r25, 0x056C |
| 1806: ee e6 ldi r30, 0x6E ; 110 |
| 1808: f5 e0 ldi r31, 0x05 ; 5 |
| 180a: e9 0f add r30, r25 |
| 180c: f1 1d adc r31, r1 |
| 180e: 8c b1 in r24, 0x0c ; 12 |
| 1810: 80 83 st Z, r24 |
| 1812: 9f 5f subi r25, 0xFF ; 255 |
| 1814: 90 93 6c 05 sts 0x056C, r25 |
| write_index &= 15; |
| 1818: 80 91 6c 05 lds r24, 0x056C |
| 181c: 8f 70 andi r24, 0x0F ; 15 |
| 181e: 80 93 6c 05 sts 0x056C, r24 |
| 1822: ff 91 pop r31 |
| 1824: ef 91 pop r30 |
| 1826: 9f 91 pop r25 |
| 1828: 8f 91 pop r24 |
| 182a: 0f 90 pop r0 |
| 182c: 0f be out 0x3f, r0 ; 63 |
| 182e: 0f 90 pop r0 |
| 1830: 1f 90 pop r1 |
| 1832: 18 95 reti |
| 00001834 <RS232_init>: |
| } |
| void RS232_init (void) |
| { |
| UCSRB = (1<<RXEN)|(1<<TXEN)|(1<<RXCIE); |
| 1834: 88 e9 ldi r24, 0x98 ; 152 |
| 1836: 8a b9 out 0x0a, r24 ; 10 |
| UBRRL = 7; // 57600 Baud @ 7,372800 MHz |
| 1838: 87 e0 ldi r24, 0x07 ; 7 |
| 183a: 89 b9 out 0x09, r24 ; 9 |
| 183c: 08 95 ret |
| 0000183e <RS232_get>: |
| } |
| uint8_t RS232_get (void) |
| { |
| uint8_t c; |
| rs232_timer = 10; |
| 183e: 8a e0 ldi r24, 0x0A ; 10 |
| 1840: 80 93 e5 04 sts 0x04E5, r24 |
| while ((read_index == write_index) && (rs232_timer > 0)); |
| 1844: 90 91 6d 05 lds r25, 0x056D |
| 1848: 80 91 6c 05 lds r24, 0x056C |
| 184c: 98 17 cp r25, r24 |
| 184e: 21 f4 brne .+8 ; 0x1858 <RS232_get+0x1a> |
| 1850: 80 91 e5 04 lds r24, 0x04E5 |
| 1854: 88 23 and r24, r24 |
| 1856: b1 f7 brne .-20 ; 0x1844 <RS232_get+0x6> |
| if (rs232_timer != 0) |
| 1858: 80 91 e5 04 lds r24, 0x04E5 |
| 185c: 88 23 and r24, r24 |
| 185e: 81 f0 breq .+32 ; 0x1880 <RS232_get+0x42> |
| { |
| c = rs232_buffer[read_index++]; |
| 1860: 80 91 6d 05 lds r24, 0x056D |
| 1864: e8 2f mov r30, r24 |
| 1866: ff 27 eor r31, r31 |
| 1868: e2 59 subi r30, 0x92 ; 146 |
| 186a: fa 4f sbci r31, 0xFA ; 250 |
| 186c: 8f 5f subi r24, 0xFF ; 255 |
| 186e: 80 93 6d 05 sts 0x056D, r24 |
| 1872: e0 81 ld r30, Z |
| read_index &= 15; |
| 1874: 80 91 6d 05 lds r24, 0x056D |
| 1878: 8f 70 andi r24, 0x0F ; 15 |
| 187a: 80 93 6d 05 sts 0x056D, r24 |
| 187e: 01 c0 rjmp .+2 ; 0x1882 <RS232_get+0x44> |
| } |
| else |
| { |
| c=0; |
| 1880: e8 2f mov r30, r24 |
| } |
| return c; |
| } |
| 1882: 8e 2f mov r24, r30 |
| 1884: 99 27 eor r25, r25 |
| 1886: 08 95 ret |
| 00001888 <RS232_send>: |
| void RS232_send (uint8_t data) |
| { |
| while ((UCSRA & (1<<UDRE)) == 0); |
| 1888: 5d 9b sbis 0x0b, 5 ; 11 |
| 188a: fe cf rjmp .-4 ; 0x1888 <RS232_send> |
| UDR = data; |
| 188c: 8c b9 out 0x0c, r24 ; 12 |
| 188e: 08 95 ret |
| 00001890 <RS232_text>: |
| } |
| void RS232_text (uint8_t *text) |
| { |
| 1890: cf 93 push r28 |
| 1892: df 93 push r29 |
| 1894: ec 01 movw r28, r24 |
| while (*text) |
| { |
| RS232_send(*text); |
| text++; |
| 1896: 88 81 ld r24, Y |
| 1898: 88 23 and r24, r24 |
| 189a: 31 f0 breq .+12 ; 0x18a8 <RS232_text+0x18> |
| 189c: 89 91 ld r24, Y+ |
| 189e: 0e 94 44 0c call 0x1888 <RS232_send> |
| 18a2: 88 81 ld r24, Y |
| 18a4: 88 23 and r24, r24 |
| 18a6: d1 f7 brne .-12 ; 0x189c <RS232_text+0xc> |
| 18a8: df 91 pop r29 |
| 18aa: cf 91 pop r28 |
| 18ac: 08 95 ret |
| 000018ae <base64_decode>: |
| } |
| uint8_t base64_decode(uint8_t number) // Wandelt die base64-Rohdaten in lesbare Daten um |
| { |
| 18ae: a8 2f mov r26, r24 |
| uint8_t p,q; |
| uint8_t a,b,c,d; |
| p = 2; |
| 18b0: 62 e0 ldi r22, 0x02 ; 2 |
| q = 0; |
| 18b2: 70 e0 ldi r23, 0x00 ; 0 |
| while (p < number) |
| { |
| a = r_buffer[p + 0] - 61; |
| b = r_buffer[p + 1] - 61; |
| c = r_buffer[p + 2] - 61; |
| d = r_buffer[p + 3] - 61; |
| p += 4; |
| p_buffer[q + 0] = (a << 2) | (b >> 4); // gespeichert werden die Daten in p_buffer |
| p_buffer[q + 1] = ((b & 0x0F) << 4) | (c >> 2); |
| p_buffer[q + 2] = ((c & 0x03) << 6) | d; |
| q += 3; |
| 18b4: 6a 17 cp r22, r26 |
| 18b6: b0 f5 brcc .+108 ; 0x1924 <base64_decode+0x76> |
| 18b8: e6 2f mov r30, r22 |
| 18ba: ff 27 eor r31, r31 |
| 18bc: e7 51 subi r30, 0x17 ; 23 |
| 18be: fb 4f sbci r31, 0xFB ; 251 |
| 18c0: 80 81 ld r24, Z |
| 18c2: 8d 53 subi r24, 0x3D ; 61 |
| 18c4: 31 81 ldd r19, Z+1 ; 0x01 |
| 18c6: 3d 53 subi r19, 0x3D ; 61 |
| 18c8: 52 81 ldd r21, Z+2 ; 0x02 |
| 18ca: 5d 53 subi r21, 0x3D ; 61 |
| 18cc: 43 81 ldd r20, Z+3 ; 0x03 |
| 18ce: 4d 53 subi r20, 0x3D ; 61 |
| 18d0: 6c 5f subi r22, 0xFC ; 252 |
| 18d2: e7 2f mov r30, r23 |
| 18d4: ff 27 eor r31, r31 |
| 18d6: ed 59 subi r30, 0x9D ; 157 |
| 18d8: fb 4f sbci r31, 0xFB ; 251 |
| 18da: 99 27 eor r25, r25 |
| 18dc: 88 0f add r24, r24 |
| 18de: 99 1f adc r25, r25 |
| 18e0: 88 0f add r24, r24 |
| 18e2: 99 1f adc r25, r25 |
| 18e4: 23 2f mov r18, r19 |
| 18e6: 22 95 swap r18 |
| 18e8: 2f 70 andi r18, 0x0F ; 15 |
| 18ea: 28 2b or r18, r24 |
| 18ec: 20 83 st Z, r18 |
| 18ee: 83 2f mov r24, r19 |
| 18f0: 99 27 eor r25, r25 |
| 18f2: 8f 70 andi r24, 0x0F ; 15 |
| 18f4: 90 70 andi r25, 0x00 ; 0 |
| 18f6: 34 e0 ldi r19, 0x04 ; 4 |
| 18f8: 88 0f add r24, r24 |
| 18fa: 99 1f adc r25, r25 |
| 18fc: 3a 95 dec r19 |
| 18fe: e1 f7 brne .-8 ; 0x18f8 <base64_decode+0x4a> |
| 1900: 25 2f mov r18, r21 |
| 1902: 26 95 lsr r18 |
| 1904: 26 95 lsr r18 |
| 1906: 28 2b or r18, r24 |
| 1908: 21 83 std Z+1, r18 ; 0x01 |
| 190a: 85 2f mov r24, r21 |
| 190c: 99 27 eor r25, r25 |
| 190e: 83 70 andi r24, 0x03 ; 3 |
| 1910: 90 70 andi r25, 0x00 ; 0 |
| 1912: 26 e0 ldi r18, 0x06 ; 6 |
| 1914: 88 0f add r24, r24 |
| 1916: 99 1f adc r25, r25 |
| 1918: 2a 95 dec r18 |
| 191a: e1 f7 brne .-8 ; 0x1914 <base64_decode+0x66> |
| 191c: 48 2b or r20, r24 |
| 191e: 42 83 std Z+2, r20 ; 0x02 |
| 1920: 7d 5f subi r23, 0xFD ; 253 |
| 1922: c8 cf rjmp .-112 ; 0x18b4 <base64_decode+0x6> |
| } |
| return q; // Rückgabe der Anzahl der Datenbytes |
| } |
| 1924: 87 2f mov r24, r23 |
| 1926: 99 27 eor r25, r25 |
| 1928: 08 95 ret |
| 0000192a <get_message>: |
| 192a: cf 93 push r28 |
| 192c: 84 e1 ldi r24, 0x14 ; 20 |
| 192e: 80 93 61 00 sts 0x0061, r24 |
| 1932: 0e 94 1f 0c call 0x183e <RS232_get> |
| 1936: 83 32 cpi r24, 0x23 ; 35 |
| 1938: 21 f0 breq .+8 ; 0x1942 <get_message+0x18> |
| 193a: 80 91 61 00 lds r24, 0x0061 |
| 193e: 88 23 and r24, r24 |
| 1940: c1 f7 brne .-16 ; 0x1932 <get_message+0x8> |
| 1942: 80 91 61 00 lds r24, 0x0061 |
| 1946: 88 23 and r24, r24 |
| 1948: 99 f0 breq .+38 ; 0x1970 <get_message+0x46> |
| 194a: c0 e0 ldi r28, 0x00 ; 0 |
| 194c: 0e 94 1f 0c call 0x183e <RS232_get> |
| 1950: ec 2f mov r30, r28 |
| 1952: ff 27 eor r31, r31 |
| 1954: e7 51 subi r30, 0x17 ; 23 |
| 1956: fb 4f sbci r31, 0xFB ; 251 |
| 1958: 80 83 st Z, r24 |
| 195a: cf 5f subi r28, 0xFF ; 255 |
| 195c: c7 fd sbrc r28, 7 |
| 195e: cf e7 ldi r28, 0x7F ; 127 |
| 1960: 8d 30 cpi r24, 0x0D ; 13 |
| 1962: a1 f7 brne .-24 ; 0x194c <get_message+0x22> |
| 1964: 8c 2f mov r24, r28 |
| 1966: 0e 94 57 0c call 0x18ae <base64_decode> |
| 196a: 80 e0 ldi r24, 0x00 ; 0 |
| 196c: 90 e0 ldi r25, 0x00 ; 0 |
| 196e: 02 c0 rjmp .+4 ; 0x1974 <get_message+0x4a> |
| 1970: 81 e0 ldi r24, 0x01 ; 1 |
| 1972: 90 e0 ldi r25, 0x00 ; 0 |
| 1974: cf 91 pop r28 |
| 1976: 08 95 ret |
| 00001978 <base64_send>: |
| void base64_send(uint8_t number) // Sendet Daten zur Flight-Control |
| { // Die Daten werden in p_buffer erwartet, umcodiert und gesendet |
| 1978: ff 92 push r15 |
| 197a: 0f 93 push r16 |
| 197c: 1f 93 push r17 |
| 197e: cf 93 push r28 |
| 1980: a8 2f mov r26, r24 |
| uint8_t bpointer,spointer; |
| uint8_t x,y,z,a; |
| uint16_t checksum; |
| r_buffer[0] = p_buffer[0]; |
| 1982: 80 91 63 04 lds r24, 0x0463 |
| 1986: 80 93 e9 04 sts 0x04E9, r24 |
| r_buffer[1] = p_buffer[1]; |
| 198a: 80 91 64 04 lds r24, 0x0464 |
| 198e: 80 93 ea 04 sts 0x04EA, r24 |
| r_buffer[2] = p_buffer[2]; |
| 1992: 80 91 65 04 lds r24, 0x0465 |
| 1996: 80 93 eb 04 sts 0x04EB, r24 |
| bpointer = 3; |
| 199a: 43 e0 ldi r20, 0x03 ; 3 |
| 199c: f4 2e mov r15, r20 |
| spointer = 3; |
| 199e: 7f 2d mov r23, r15 |
| while (spointer < number) |
| { |
| x = p_buffer[spointer]; |
| y = p_buffer[spointer + 1]; |
| z = p_buffer[spointer + 2]; |
| spointer += 3; |
| r_buffer[bpointer + 0] = (x >> 2) + 61; |
| r_buffer[bpointer + 1] = (((x & 0x03) << 4) | ((y & 0xF0) >> 4)) + 61; |
| r_buffer[bpointer + 2] = (((y & 0x0F) << 2) | ((z & 0xC0) >> 6)) + 61; |
| r_buffer[bpointer + 3] = (z & 0x3F) + 61; |
| bpointer += 4; |
| 19a0: fa 16 cp r15, r26 |
| 19a2: e0 f5 brcc .+120 ; 0x1a1c <base64_send+0xa4> |
| 19a4: e7 2f mov r30, r23 |
| 19a6: ff 27 eor r31, r31 |
| 19a8: ed 59 subi r30, 0x9D ; 157 |
| 19aa: fb 4f sbci r31, 0xFB ; 251 |
| 19ac: 90 81 ld r25, Z |
| 19ae: 21 81 ldd r18, Z+1 ; 0x01 |
| 19b0: 62 81 ldd r22, Z+2 ; 0x02 |
| 19b2: 7d 5f subi r23, 0xFD ; 253 |
| 19b4: ef 2d mov r30, r15 |
| 19b6: ff 27 eor r31, r31 |
| 19b8: e7 51 subi r30, 0x17 ; 23 |
| 19ba: fb 4f sbci r31, 0xFB ; 251 |
| 19bc: 89 2f mov r24, r25 |
| 19be: 86 95 lsr r24 |
| 19c0: 86 95 lsr r24 |
| 19c2: 83 5c subi r24, 0xC3 ; 195 |
| 19c4: 80 83 st Z, r24 |
| 19c6: 89 2f mov r24, r25 |
| 19c8: 99 27 eor r25, r25 |
| 19ca: 83 70 andi r24, 0x03 ; 3 |
| 19cc: 90 70 andi r25, 0x00 ; 0 |
| 19ce: 34 e0 ldi r19, 0x04 ; 4 |
| 19d0: 88 0f add r24, r24 |
| 19d2: 99 1f adc r25, r25 |
| 19d4: 3a 95 dec r19 |
| 19d6: e1 f7 brne .-8 ; 0x19d0 <base64_send+0x58> |
| 19d8: 42 2f mov r20, r18 |
| 19da: 55 27 eor r21, r21 |
| 19dc: 9a 01 movw r18, r20 |
| 19de: 94 e0 ldi r25, 0x04 ; 4 |
| 19e0: 36 95 lsr r19 |
| 19e2: 27 95 ror r18 |
| 19e4: 9a 95 dec r25 |
| 19e6: e1 f7 brne .-8 ; 0x19e0 <base64_send+0x68> |
| 19e8: 82 2b or r24, r18 |
| 19ea: 83 5c subi r24, 0xC3 ; 195 |
| 19ec: 81 83 std Z+1, r24 ; 0x01 |
| 19ee: 4f 70 andi r20, 0x0F ; 15 |
| 19f0: 50 70 andi r21, 0x00 ; 0 |
| 19f2: 44 0f add r20, r20 |
| 19f4: 55 1f adc r21, r21 |
| 19f6: 44 0f add r20, r20 |
| 19f8: 55 1f adc r21, r21 |
| 19fa: 86 2f mov r24, r22 |
| 19fc: 99 27 eor r25, r25 |
| 19fe: 16 e0 ldi r17, 0x06 ; 6 |
| 1a00: 96 95 lsr r25 |
| 1a02: 87 95 ror r24 |
| 1a04: 1a 95 dec r17 |
| 1a06: e1 f7 brne .-8 ; 0x1a00 <base64_send+0x88> |
| 1a08: 84 2b or r24, r20 |
| 1a0a: 83 5c subi r24, 0xC3 ; 195 |
| 1a0c: 82 83 std Z+2, r24 ; 0x02 |
| 1a0e: 6f 73 andi r22, 0x3F ; 63 |
| 1a10: 63 5c subi r22, 0xC3 ; 195 |
| 1a12: 63 83 std Z+3, r22 ; 0x03 |
| 1a14: 84 e0 ldi r24, 0x04 ; 4 |
| 1a16: f8 0e add r15, r24 |
| 1a18: 7a 17 cp r23, r26 |
| 1a1a: 20 f2 brcs .-120 ; 0x19a4 <base64_send+0x2c> |
| } |
| checksum = 0; |
| 1a1c: 20 e0 ldi r18, 0x00 ; 0 |
| 1a1e: 30 e0 ldi r19, 0x00 ; 0 |
| for(a=0;a<bpointer;a++) |
| 1a20: c0 e0 ldi r28, 0x00 ; 0 |
| 1a22: cf 15 cp r28, r15 |
| 1a24: 40 f4 brcc .+16 ; 0x1a36 <base64_send+0xbe> |
| 1a26: e9 ee ldi r30, 0xE9 ; 233 |
| 1a28: f4 e0 ldi r31, 0x04 ; 4 |
| checksum += r_buffer[a]; |
| 1a2a: 81 91 ld r24, Z+ |
| 1a2c: 28 0f add r18, r24 |
| 1a2e: 31 1d adc r19, r1 |
| 1a30: cf 5f subi r28, 0xFF ; 255 |
| 1a32: cf 15 cp r28, r15 |
| 1a34: d0 f3 brcs .-12 ; 0x1a2a <base64_send+0xb2> |
| checksum %= 4096; |
| 1a36: 3f 70 andi r19, 0x0F ; 15 |
| r_buffer[bpointer] = (checksum / 64) + 61; |
| 1a38: ef 2d mov r30, r15 |
| 1a3a: ff 27 eor r31, r31 |
| 1a3c: e7 51 subi r30, 0x17 ; 23 |
| 1a3e: fb 4f sbci r31, 0xFB ; 251 |
| 1a40: c9 01 movw r24, r18 |
| 1a42: c6 e0 ldi r28, 0x06 ; 6 |
| 1a44: 96 95 lsr r25 |
| 1a46: 87 95 ror r24 |
| 1a48: ca 95 dec r28 |
| 1a4a: e1 f7 brne .-8 ; 0x1a44 <base64_send+0xcc> |
| 1a4c: 83 5c subi r24, 0xC3 ; 195 |
| 1a4e: 80 83 st Z, r24 |
| r_buffer[bpointer + 1] = (checksum % 64) + 61; |
| 1a50: 2f 73 andi r18, 0x3F ; 63 |
| 1a52: 30 70 andi r19, 0x00 ; 0 |
| 1a54: 82 2f mov r24, r18 |
| 1a56: 83 5c subi r24, 0xC3 ; 195 |
| 1a58: 81 83 std Z+1, r24 ; 0x01 |
| r_buffer[bpointer + 2] = 13; |
| 1a5a: 8d e0 ldi r24, 0x0D ; 13 |
| 1a5c: 82 83 std Z+2, r24 ; 0x02 |
| r_buffer[bpointer + 3] = 0; |
| 1a5e: 13 82 std Z+3, r1 ; 0x03 |
| bpointer += 3; |
| 1a60: 83 e0 ldi r24, 0x03 ; 3 |
| 1a62: f8 0e add r15, r24 |
| for(a=0;a<bpointer;a++) |
| 1a64: c3 81 ldd r28, Z+3 ; 0x03 |
| 1a66: cf 15 cp r28, r15 |
| 1a68: 50 f4 brcc .+20 ; 0x1a7e <base64_send+0x106> |
| 1a6a: 09 ee ldi r16, 0xE9 ; 233 |
| 1a6c: 14 e0 ldi r17, 0x04 ; 4 |
| RS232_send(r_buffer[a]); |
| 1a6e: f8 01 movw r30, r16 |
| 1a70: 81 91 ld r24, Z+ |
| 1a72: 8f 01 movw r16, r30 |
| 1a74: 0e 94 44 0c call 0x1888 <RS232_send> |
| 1a78: cf 5f subi r28, 0xFF ; 255 |
| 1a7a: cf 15 cp r28, r15 |
| 1a7c: c0 f3 brcs .-16 ; 0x1a6e <base64_send+0xf6> |
| 1a7e: cf 91 pop r28 |
| 1a80: 1f 91 pop r17 |
| 1a82: 0f 91 pop r16 |
| 1a84: ff 90 pop r15 |
| 1a86: 08 95 ret |
| 00001a88 <displ_get_text>: |
| uint8_t displ_page; |
| void displ_get_text(uint8_t number) |
| { |
| 1a88: 1f 93 push r17 |
| 1a8a: cf 93 push r28 |
| 1a8c: df 93 push r29 |
| 1a8e: cd b7 in r28, 0x3d ; 61 |
| 1a90: de b7 in r29, 0x3e ; 62 |
| 1a92: 61 97 sbiw r28, 0x11 ; 17 |
| 1a94: 0f b6 in r0, 0x3f ; 63 |
| 1a96: f8 94 cli |
| 1a98: de bf out 0x3e, r29 ; 62 |
| 1a9a: 0f be out 0x3f, r0 ; 63 |
| 1a9c: cd bf out 0x3d, r28 ; 61 |
| 1a9e: 18 2f mov r17, r24 |
| uint8_t text[17]; |
| uint8_t i; |
| p_buffer[0] = '#'; |
| 1aa0: 83 e2 ldi r24, 0x23 ; 35 |
| 1aa2: 80 93 63 04 sts 0x0463, r24 |
| p_buffer[1] = 'a'; |
| 1aa6: 81 e6 ldi r24, 0x61 ; 97 |
| 1aa8: 80 93 64 04 sts 0x0464, r24 |
| p_buffer[2] = 'a'; |
| 1aac: 80 93 65 04 sts 0x0465, r24 |
| p_buffer[3] = number; |
| 1ab0: 10 93 66 04 sts 0x0466, r17 |
| p_buffer[4] = 0; |
| 1ab4: 10 92 67 04 sts 0x0467, r1 |
| p_buffer[5] = 0; |
| 1ab8: 10 92 68 04 sts 0x0468, r1 |
| base64_send(6); |
| 1abc: 86 e0 ldi r24, 0x06 ; 6 |
| 1abe: 0e 94 bc 0c call 0x1978 <base64_send> |
| do |
| { |
| get_message(); |
| 1ac2: 0e 94 95 0c call 0x192a <get_message> |
| } |
| 1ac6: 80 91 ea 04 lds r24, 0x04EA |
| 1aca: 81 34 cpi r24, 0x41 ; 65 |
| 1acc: d1 f7 brne .-12 ; 0x1ac2 <displ_get_text+0x3a> |
| 1ace: de 01 movw r26, r28 |
| 1ad0: 11 96 adiw r26, 0x01 ; 1 |
| 1ad2: e3 e6 ldi r30, 0x63 ; 99 |
| 1ad4: f4 e0 ldi r31, 0x04 ; 4 |
| 1ad6: 9f e0 ldi r25, 0x0F ; 15 |
| while (r_buffer[1] != 'A'); |
| for (i=0;i<16;i++) |
| text[i] = p_buffer[i]; |
| 1ad8: 81 91 ld r24, Z+ |
| 1ada: 8d 93 st X+, r24 |
| 1adc: 91 50 subi r25, 0x01 ; 1 |
| 1ade: 97 ff sbrs r25, 7 |
| 1ae0: fb cf rjmp .-10 ; 0x1ad8 <displ_get_text+0x50> |
| text[16] = 0x00; |
| 1ae2: 19 8a std Y+17, r1 ; 0x11 |
| lcd_print_at(0,(number & 0x07),text,0); |
| 1ae4: 17 70 andi r17, 0x07 ; 7 |
| 1ae6: 29 89 ldd r18, Y+17 ; 0x11 |
| 1ae8: ae 01 movw r20, r28 |
| 1aea: 4f 5f subi r20, 0xFF ; 255 |
| 1aec: 5f 4f sbci r21, 0xFF ; 255 |
| 1aee: 61 2f mov r22, r17 |
| 1af0: 82 2f mov r24, r18 |
| 1af2: 0e 94 1d 09 call 0x123a <lcd_print_at> |
| 1af6: 61 96 adiw r28, 0x11 ; 17 |
| 1af8: 0f b6 in r0, 0x3f ; 63 |
| 1afa: f8 94 cli |
| 1afc: de bf out 0x3e, r29 ; 62 |
| 1afe: 0f be out 0x3f, r0 ; 63 |
| 1b00: cd bf out 0x3d, r28 ; 61 |
| 1b02: df 91 pop r29 |
| 1b04: cf 91 pop r28 |
| 1b06: 1f 91 pop r17 |
| 1b08: 08 95 ret |
| 00001b0a <displ_values>: |
| } |
| void displ_values(void) |
| { |
| 1b0a: cf 92 push r12 |
| 1b0c: df 92 push r13 |
| 1b0e: ef 92 push r14 |
| 1b10: ff 92 push r15 |
| 1b12: 0f 93 push r16 |
| 1b14: 1f 93 push r17 |
| 1b16: cf 93 push r28 |
| 1b18: df 93 push r29 |
| 1b1a: cd b7 in r28, 0x3d ; 61 |
| 1b1c: de b7 in r29, 0x3e ; 62 |
| 1b1e: 61 97 sbiw r28, 0x11 ; 17 |
| 1b20: 0f b6 in r0, 0x3f ; 63 |
| 1b22: f8 94 cli |
| 1b24: de bf out 0x3e, r29 ; 62 |
| 1b26: 0f be out 0x3f, r0 ; 63 |
| 1b28: cd bf out 0x3d, r28 ; 61 |
| uint8_t displ_page, i; |
| int16_t value; |
| uint8_t text[17]; |
| displ_page = 0; // Page 0..3 (4 Pages zu je 8 Werte) |
| 1b2a: 00 e0 ldi r16, 0x00 ; 0 |
| lcd_cls(); // LCD löschen |
| 1b2c: 0e 94 36 07 call 0xe6c <lcd_cls> |
| do |
| { |
| for (i=0;i<8;i++) // Texte lesen und anzeigen |
| 1b30: 10 e0 ldi r17, 0x00 ; 0 |
| displ_get_text(i+displ_page*8); |
| 1b32: c0 2e mov r12, r16 |
| 1b34: dd 24 eor r13, r13 |
| 1b36: c6 01 movw r24, r12 |
| 1b38: 53 e0 ldi r21, 0x03 ; 3 |
| 1b3a: 88 0f add r24, r24 |
| 1b3c: 99 1f adc r25, r25 |
| 1b3e: 5a 95 dec r21 |
| 1b40: e1 f7 brne .-8 ; 0x1b3a <displ_values+0x30> |
| 1b42: 81 0f add r24, r17 |
| 1b44: 0e 94 44 0d call 0x1a88 <displ_get_text> |
| 1b48: 1f 5f subi r17, 0xFF ; 255 |
| 1b4a: 18 30 cpi r17, 0x08 ; 8 |
| 1b4c: 90 f3 brcs .-28 ; 0x1b32 <displ_values+0x28> |
| do |
| { |
| get_message(); |
| 1b4e: 0e 94 95 0c call 0x192a <get_message> |
| if(r_buffer[1] == 'D') |
| 1b52: 80 91 ea 04 lds r24, 0x04EA |
| 1b56: 84 34 cpi r24, 0x44 ; 68 |
| 1b58: 91 f5 brne .+100 ; 0x1bbe <displ_values+0xb4> |
| { |
| for (i=0;i<8;i++) |
| 1b5a: 10 e0 ldi r17, 0x00 ; 0 |
| 1b5c: ee 24 eor r14, r14 |
| 1b5e: ff 24 eor r15, r15 |
| { |
| value = p_buffer[i*2+displ_page*16+2] + 256*p_buffer[i*2+displ_page*16+3]; |
| 1b60: f6 01 movw r30, r12 |
| 1b62: 43 e0 ldi r20, 0x03 ; 3 |
| 1b64: ee 0f add r30, r30 |
| 1b66: ff 1f adc r31, r31 |
| 1b68: 4a 95 dec r20 |
| 1b6a: e1 f7 brne .-8 ; 0x1b64 <displ_values+0x5a> |
| 1b6c: ee 0d add r30, r14 |
| 1b6e: ff 1d adc r31, r15 |
| 1b70: ee 0f add r30, r30 |
| 1b72: ff 1f adc r31, r31 |
| 1b74: ed 59 subi r30, 0x9D ; 157 |
| 1b76: fb 4f sbci r31, 0xFB ; 251 |
| 1b78: 22 81 ldd r18, Z+2 ; 0x02 |
| 1b7a: 83 81 ldd r24, Z+3 ; 0x03 |
| 1b7c: 99 27 eor r25, r25 |
| 1b7e: 98 2f mov r25, r24 |
| 1b80: 88 27 eor r24, r24 |
| itoa(value,text,10); |
| 1b82: 4a e0 ldi r20, 0x0A ; 10 |
| 1b84: 50 e0 ldi r21, 0x00 ; 0 |
| 1b86: be 01 movw r22, r28 |
| 1b88: 6f 5f subi r22, 0xFF ; 255 |
| 1b8a: 7f 4f sbci r23, 0xFF ; 255 |
| 1b8c: 82 0f add r24, r18 |
| 1b8e: 91 1d adc r25, r1 |
| 1b90: 0e 94 cf 12 call 0x259e <itoa> |
| lcd_print_atp(14,i,PSTR(" "),0); |
| 1b94: 20 e0 ldi r18, 0x00 ; 0 |
| 1b96: 44 e5 ldi r20, 0x54 ; 84 |
| 1b98: 56 e0 ldi r21, 0x06 ; 6 |
| 1b9a: 61 2f mov r22, r17 |
| 1b9c: 8e e0 ldi r24, 0x0E ; 14 |
| 1b9e: 0e 94 e1 08 call 0x11c2 <lcd_print_atp> |
| lcd_print_at(14,i,text,0); |
| 1ba2: 20 e0 ldi r18, 0x00 ; 0 |
| 1ba4: ae 01 movw r20, r28 |
| 1ba6: 4f 5f subi r20, 0xFF ; 255 |
| 1ba8: 5f 4f sbci r21, 0xFF ; 255 |
| 1baa: 61 2f mov r22, r17 |
| 1bac: 8e e0 ldi r24, 0x0E ; 14 |
| 1bae: 0e 94 1d 09 call 0x123a <lcd_print_at> |
| 1bb2: 1f 5f subi r17, 0xFF ; 255 |
| 1bb4: 08 94 sec |
| 1bb6: e1 1c adc r14, r1 |
| 1bb8: f1 1c adc r15, r1 |
| 1bba: 18 30 cpi r17, 0x08 ; 8 |
| 1bbc: 88 f2 brcs .-94 ; 0x1b60 <displ_values+0x56> |
| } |
| } |
| } |
| 1bbe: 80 91 e6 04 lds r24, 0x04E6 |
| 1bc2: 88 23 and r24, r24 |
| 1bc4: 21 f2 breq .-120 ; 0x1b4e <displ_values+0x44> |
| while (key == 0x00); |
| if (key == 0x01) |
| 1bc6: 80 91 e6 04 lds r24, 0x04E6 |
| 1bca: 81 30 cpi r24, 0x01 ; 1 |
| 1bcc: 09 f4 brne .+2 ; 0x1bd0 <displ_values+0xc6> |
| displ_page++; |
| 1bce: 0f 5f subi r16, 0xFF ; 255 |
| if (key == 0x02) |
| 1bd0: 80 91 e6 04 lds r24, 0x04E6 |
| 1bd4: 82 30 cpi r24, 0x02 ; 2 |
| 1bd6: 09 f4 brne .+2 ; 0x1bda <displ_values+0xd0> |
| displ_page--; |
| 1bd8: 01 50 subi r16, 0x01 ; 1 |
| displ_page &= 0x03; |
| 1bda: 03 70 andi r16, 0x03 ; 3 |
| } |
| 1bdc: 80 91 e6 04 lds r24, 0x04E6 |
| 1be0: 88 30 cpi r24, 0x08 ; 8 |
| 1be2: 09 f0 breq .+2 ; 0x1be6 <displ_values+0xdc> |
| 1be4: a5 cf rjmp .-182 ; 0x1b30 <displ_values+0x26> |
| 1be6: 61 96 adiw r28, 0x11 ; 17 |
| 1be8: 0f b6 in r0, 0x3f ; 63 |
| 1bea: f8 94 cli |
| 1bec: de bf out 0x3e, r29 ; 62 |
| 1bee: 0f be out 0x3f, r0 ; 63 |
| 1bf0: cd bf out 0x3d, r28 ; 61 |
| 1bf2: df 91 pop r29 |
| 1bf4: cf 91 pop r28 |
| 1bf6: 1f 91 pop r17 |
| 1bf8: 0f 91 pop r16 |
| 1bfa: ff 90 pop r15 |
| 1bfc: ef 90 pop r14 |
| 1bfe: df 90 pop r13 |
| 1c00: cf 90 pop r12 |
| 1c02: 08 95 ret |
| 00001c04 <read_parameter>: |
| // Parameter lesen, editieren und zurückschreiben |
| uint8_t read_parameter (uint8_t number) // Number = Parameter-Set# |
| { |
| 1c04: cf 93 push r28 |
| uint8_t timeout; |
| timeout = 0; |
| 1c06: c0 e0 ldi r28, 0x00 ; 0 |
| p_buffer[0] = '#'; // Parameter anfordern |
| 1c08: 93 e2 ldi r25, 0x23 ; 35 |
| 1c0a: 90 93 63 04 sts 0x0463, r25 |
| p_buffer[1] = 'a'; |
| 1c0e: 91 e6 ldi r25, 0x61 ; 97 |
| 1c10: 90 93 64 04 sts 0x0464, r25 |
| p_buffer[2] = 'q'; |
| 1c14: 91 e7 ldi r25, 0x71 ; 113 |
| 1c16: 90 93 65 04 sts 0x0465, r25 |
| p_buffer[3] = number; |
| 1c1a: 80 93 66 04 sts 0x0466, r24 |
| p_buffer[4] = 0; |
| 1c1e: c0 93 67 04 sts 0x0467, r28 |
| p_buffer[5] = 0; |
| 1c22: c0 93 68 04 sts 0x0468, r28 |
| base64_send(6); |
| 1c26: 86 e0 ldi r24, 0x06 ; 6 |
| 1c28: 0e 94 bc 0c call 0x1978 <base64_send> |
| do // warten, bis die Parameter gesendet werden |
| { |
| if (get_message() == 1) // Fehler bei der Übertragung? |
| 1c2c: 0e 94 95 0c call 0x192a <get_message> |
| 1c30: 81 30 cpi r24, 0x01 ; 1 |
| 1c32: 09 f4 brne .+2 ; 0x1c36 <read_parameter+0x32> |
| timeout = 30; // Timeout sofort auf Endwert setzen |
| 1c34: ce e1 ldi r28, 0x1E ; 30 |
| timeout ++; |
| 1c36: cf 5f subi r28, 0xFF ; 255 |
| } |
| 1c38: 80 91 ea 04 lds r24, 0x04EA |
| 1c3c: 8c 54 subi r24, 0x4C ; 76 |
| 1c3e: 85 30 cpi r24, 0x05 ; 5 |
| 1c40: 10 f0 brcs .+4 ; 0x1c46 <read_parameter+0x42> |
| 1c42: ce 31 cpi r28, 0x1E ; 30 |
| 1c44: 98 f3 brcs .-26 ; 0x1c2c <read_parameter+0x28> |
| while (((r_buffer[1] < 'L') || (r_buffer[1] > 'P')) && (timeout < 30)); // warten, bis Parameter empfangen wurden oder ein Timeout auftrat |
| if (timeout >= 30) // Wenn ein Timeout (=Fehler) auftrat, eine 1 zurückgeben, ansonsten 0 |
| 1c46: ce 31 cpi r28, 0x1E ; 30 |
| 1c48: 18 f0 brcs .+6 ; 0x1c50 <read_parameter+0x4c> |
| return 1; |
| 1c4a: 81 e0 ldi r24, 0x01 ; 1 |
| 1c4c: 90 e0 ldi r25, 0x00 ; 0 |
| 1c4e: 02 c0 rjmp .+4 ; 0x1c54 <read_parameter+0x50> |
| else |
| return 0; |
| 1c50: 80 e0 ldi r24, 0x00 ; 0 |
| 1c52: 90 e0 ldi r25, 0x00 ; 0 |
| 1c54: cf 91 pop r28 |
| 1c56: 08 95 ret |
| 00001c58 <write_parameter>: |
| } |
| void write_parameter(uint8_t number) // Schreibe Parameter-Satz |
| { |
| 1c58: 98 2f mov r25, r24 |
| uint8_t i; |
| if (number <= 5) |
| 1c5a: 86 30 cpi r24, 0x06 ; 6 |
| 1c5c: b8 f4 brcc .+46 ; 0x1c8c <write_parameter+0x34> |
| 1c5e: e9 ea ldi r30, 0xA9 ; 169 |
| 1c60: f4 e0 ldi r31, 0x04 ; 4 |
| 1c62: 26 e4 ldi r18, 0x46 ; 70 |
| { |
| for (i=0;i<71;i++) // Den gesamten Parameter-Puffer um 3 Bytes nach hinten verschieben |
| p_buffer[(70-i)+3] = p_buffer[70-i]; |
| 1c64: 80 81 ld r24, Z |
| 1c66: 83 83 std Z+3, r24 ; 0x03 |
| 1c68: 21 50 subi r18, 0x01 ; 1 |
| 1c6a: 31 97 sbiw r30, 0x01 ; 1 |
| 1c6c: 27 ff sbrs r18, 7 |
| 1c6e: fa cf rjmp .-12 ; 0x1c64 <write_parameter+0xc> |
| p_buffer[0] = '#'; // Befehl zum Schreiben der Parameter |
| 1c70: 83 e2 ldi r24, 0x23 ; 35 |
| 1c72: 80 93 63 04 sts 0x0463, r24 |
| p_buffer[1] = 'a'; |
| 1c76: 81 e6 ldi r24, 0x61 ; 97 |
| 1c78: 80 93 64 04 sts 0x0464, r24 |
| p_buffer[2] = number + 'k'; // Nummer des Parameters |
| 1c7c: 95 59 subi r25, 0x95 ; 149 |
| 1c7e: 90 93 65 04 sts 0x0465, r25 |
| p_buffer[74] = 0; |
| 1c82: 10 92 ad 04 sts 0x04AD, r1 |
| base64_send(75); // Parameter in base64 kodieren und senden, 75 Bytes |
| 1c86: 8b e4 ldi r24, 0x4B ; 75 |
| 1c88: 0e 94 bc 0c call 0x1978 <base64_send> |
| 1c8c: 08 95 ret |
| 00001c8e <binary>: |
| } |
| } |
| void binary (uint8_t data, uint8_t *feld) // Wandelt eine 8-Bit Zahl in eine Binärzahl um (Array mit 8 Elementen) |
| { // Wird für die Flags (Loop + Grundkonfiguration) benötigt |
| 1c8e: 9b 01 movw r18, r22 |
| 1c90: 68 2f mov r22, r24 |
| 1c92: 77 27 eor r23, r23 |
| 1c94: 51 e0 ldi r21, 0x01 ; 1 |
| 1c96: f9 01 movw r30, r18 |
| 1c98: 20 e0 ldi r18, 0x00 ; 0 |
| 1c9a: 30 e0 ldi r19, 0x00 ; 0 |
| 1c9c: 47 e0 ldi r20, 0x07 ; 7 |
| uint8_t i; |
| i=0; |
| for (i=0;i<8;i++) |
| { |
| if ((1<<i) & data) |
| 1c9e: cb 01 movw r24, r22 |
| 1ca0: 02 2e mov r0, r18 |
| 1ca2: 02 c0 rjmp .+4 ; 0x1ca8 <binary+0x1a> |
| 1ca4: 95 95 asr r25 |
| 1ca6: 87 95 ror r24 |
| 1ca8: 0a 94 dec r0 |
| 1caa: e2 f7 brpl .-8 ; 0x1ca4 <binary+0x16> |
| 1cac: 80 ff sbrs r24, 0 |
| 1cae: 02 c0 rjmp .+4 ; 0x1cb4 <binary+0x26> |
| feld[i] = 1; |
| 1cb0: 50 83 st Z, r21 |
| 1cb2: 01 c0 rjmp .+2 ; 0x1cb6 <binary+0x28> |
| else |
| feld[i] = 0; |
| 1cb4: 10 82 st Z, r1 |
| 1cb6: 41 50 subi r20, 0x01 ; 1 |
| 1cb8: 2f 5f subi r18, 0xFF ; 255 |
| 1cba: 3f 4f sbci r19, 0xFF ; 255 |
| 1cbc: 31 96 adiw r30, 0x01 ; 1 |
| 1cbe: 47 ff sbrs r20, 7 |
| 1cc0: ee cf rjmp .-36 ; 0x1c9e <binary+0x10> |
| 1cc2: 08 95 ret |
| 00001cc4 <bindec>: |
| } |
| } |
| uint8_t bindec (uint8_t *feld) // wandelt eine Binärzahl (im Array) in eine 8-Bit Zahl |
| { // Wird für die Flags (Loop + Grundkonfiguration) benötigt |
| uint8_t i; |
| uint8_t result; |
| result = 0; |
| 1cc4: 50 e0 ldi r21, 0x00 ; 0 |
| 1cc6: 61 e0 ldi r22, 0x01 ; 1 |
| 1cc8: 70 e0 ldi r23, 0x00 ; 0 |
| 1cca: fc 01 movw r30, r24 |
| 1ccc: 20 e0 ldi r18, 0x00 ; 0 |
| 1cce: 30 e0 ldi r19, 0x00 ; 0 |
| 1cd0: 47 e0 ldi r20, 0x07 ; 7 |
| for (i=0;i<8;i++) |
| { |
| if (feld[i] == 1) |
| 1cd2: 81 91 ld r24, Z+ |
| 1cd4: 81 30 cpi r24, 0x01 ; 1 |
| 1cd6: 41 f4 brne .+16 ; 0x1ce8 <bindec+0x24> |
| result += 1<<i; |
| 1cd8: cb 01 movw r24, r22 |
| 1cda: 02 2e mov r0, r18 |
| 1cdc: 02 c0 rjmp .+4 ; 0x1ce2 <bindec+0x1e> |
| 1cde: 88 0f add r24, r24 |
| 1ce0: 99 1f adc r25, r25 |
| 1ce2: 0a 94 dec r0 |
| 1ce4: e2 f7 brpl .-8 ; 0x1cde <bindec+0x1a> |
| 1ce6: 58 0f add r21, r24 |
| 1ce8: 41 50 subi r20, 0x01 ; 1 |
| 1cea: 2f 5f subi r18, 0xFF ; 255 |
| 1cec: 3f 4f sbci r19, 0xFF ; 255 |
| 1cee: 47 ff sbrs r20, 7 |
| 1cf0: f0 cf rjmp .-32 ; 0x1cd2 <bindec+0xe> |
| } |
| return result; |
| } |
| 1cf2: 85 2f mov r24, r21 |
| 1cf4: 99 27 eor r25, r25 |
| 1cf6: 08 95 ret |
| 00001cf8 <decimal>: |
| void decimal (uint8_t data, uint8_t *text) // wandelt Wert in rechtsbündigen Text um |
| { // (schneller/kleiner als printf()) |
| 1cf8: 28 2f mov r18, r24 |
| 1cfa: fb 01 movw r30, r22 |
| text[0] = data/100; |
| 1cfc: 34 e6 ldi r19, 0x64 ; 100 |
| 1cfe: 63 2f mov r22, r19 |
| 1d00: 0e 94 16 13 call 0x262c <__udivmodqi4> |
| 1d04: 58 2f mov r21, r24 |
| data -= (text[0] * 100); |
| 1d06: 83 9f mul r24, r19 |
| 1d08: c0 01 movw r24, r0 |
| 1d0a: 11 24 eor r1, r1 |
| 1d0c: 28 1b sub r18, r24 |
| text[1] = data/10; |
| 1d0e: 3a e0 ldi r19, 0x0A ; 10 |
| 1d10: 82 2f mov r24, r18 |
| 1d12: 63 2f mov r22, r19 |
| 1d14: 0e 94 16 13 call 0x262c <__udivmodqi4> |
| 1d18: 48 2f mov r20, r24 |
| data -= (text[1] *10); |
| 1d1a: 83 9f mul r24, r19 |
| 1d1c: c0 01 movw r24, r0 |
| 1d1e: 11 24 eor r1, r1 |
| 1d20: 28 1b sub r18, r24 |
| text[2] = data + 0x30; |
| 1d22: 20 5d subi r18, 0xD0 ; 208 |
| 1d24: 22 83 std Z+2, r18 ; 0x02 |
| text[0] += 0x30; |
| 1d26: 85 2f mov r24, r21 |
| 1d28: 80 5d subi r24, 0xD0 ; 208 |
| 1d2a: 80 83 st Z, r24 |
| text[1] += 0x30; |
| 1d2c: 40 5d subi r20, 0xD0 ; 208 |
| 1d2e: 41 83 std Z+1, r20 ; 0x01 |
| if (text[0] == 0x30) |
| 1d30: 80 33 cpi r24, 0x30 ; 48 |
| 1d32: 29 f4 brne .+10 ; 0x1d3e <decimal+0x46> |
| { |
| text[0] = 0x20; |
| 1d34: 80 e2 ldi r24, 0x20 ; 32 |
| 1d36: 80 83 st Z, r24 |
| if (text[1] == 0x30) |
| 1d38: 40 33 cpi r20, 0x30 ; 48 |
| 1d3a: 09 f4 brne .+2 ; 0x1d3e <decimal+0x46> |
| text[1] = 0x20; |
| 1d3c: 81 83 std Z+1, r24 ; 0x01 |
| } |
| text[3] = 0x00; |
| 1d3e: 13 82 std Z+3, r1 ; 0x03 |
| 1d40: 08 95 ret |
| 00001d42 <show_parameter>: |
| } |
| uint8_t show_parameter (uint8_t number) // Zeigt eine Parameter-Seite an und gibt die ausgewählte Zeile zurück |
| { |
| 1d42: 9f 92 push r9 |
| 1d44: af 92 push r10 |
| 1d46: bf 92 push r11 |
| 1d48: cf 92 push r12 |
| 1d4a: df 92 push r13 |
| 1d4c: ef 92 push r14 |
| 1d4e: ff 92 push r15 |
| 1d50: 0f 93 push r16 |
| 1d52: 1f 93 push r17 |
| 1d54: cf 93 push r28 |
| 1d56: df 93 push r29 |
| 1d58: cd b7 in r28, 0x3d ; 61 |
| 1d5a: de b7 in r29, 0x3e ; 62 |
| 1d5c: a1 97 sbiw r28, 0x21 ; 33 |
| 1d5e: 0f b6 in r0, 0x3f ; 63 |
| 1d60: f8 94 cli |
| 1d62: de bf out 0x3e, r29 ; 62 |
| 1d64: 0f be out 0x3f, r0 ; 63 |
| 1d66: cd bf out 0x3d, r28 ; 61 |
| 1d68: 08 2f mov r16, r24 |
| uint8_t i; |
| uint8_t line; |
| uint8_t text[25]; |
| uint8_t bin[8]; |
| line = 0; |
| 1d6a: 99 24 eor r9, r9 |
| if (number > 1) |
| 1d6c: 82 30 cpi r24, 0x02 ; 2 |
| 1d6e: 08 f4 brcc .+2 ; 0x1d72 <show_parameter+0x30> |
| 1d70: 3e c0 rjmp .+124 ; 0x1dee <show_parameter+0xac> |
| { |
| for (i = 0; i<66; i++) |
| 1d72: 19 2d mov r17, r9 |
| 1d74: 4b e5 ldi r20, 0x5B ; 91 |
| 1d76: a4 2e mov r10, r20 |
| 1d78: 46 e0 ldi r20, 0x06 ; 6 |
| 1d7a: b4 2e mov r11, r20 |
| 1d7c: 33 e6 ldi r19, 0x63 ; 99 |
| 1d7e: c3 2e mov r12, r19 |
| 1d80: 34 e0 ldi r19, 0x04 ; 4 |
| 1d82: d3 2e mov r13, r19 |
| 1d84: 2d e7 ldi r18, 0x7D ; 125 |
| 1d86: e2 2e mov r14, r18 |
| 1d88: 2a e0 ldi r18, 0x0A ; 10 |
| 1d8a: f2 2e mov r15, r18 |
| { |
| if (pgm_read_byte(p_limits+i*3+2) == number) |
| 1d8c: f7 01 movw r30, r14 |
| 1d8e: 84 91 lpm r24, Z |
| 1d90: 80 17 cp r24, r16 |
| 1d92: f1 f4 brne .+60 ; 0x1dd0 <show_parameter+0x8e> |
| { |
| array[line] = i; |
| 1d94: e9 2d mov r30, r9 |
| 1d96: ff 27 eor r31, r31 |
| 1d98: e1 58 subi r30, 0x81 ; 129 |
| 1d9a: fa 4f sbci r31, 0xFA ; 250 |
| 1d9c: 10 83 st Z, r17 |
| decimal(p_buffer[i],text); |
| 1d9e: be 01 movw r22, r28 |
| 1da0: 6f 5f subi r22, 0xFF ; 255 |
| 1da2: 7f 4f sbci r23, 0xFF ; 255 |
| 1da4: f6 01 movw r30, r12 |
| 1da6: 80 81 ld r24, Z |
| 1da8: 0e 94 7c 0e call 0x1cf8 <decimal> |
| lcd_print_at(0,line,text,0); |
| 1dac: 20 e0 ldi r18, 0x00 ; 0 |
| 1dae: ae 01 movw r20, r28 |
| 1db0: 4f 5f subi r20, 0xFF ; 255 |
| 1db2: 5f 4f sbci r21, 0xFF ; 255 |
| 1db4: 69 2d mov r22, r9 |
| 1db6: 82 2f mov r24, r18 |
| 1db8: 0e 94 1d 09 call 0x123a <lcd_print_at> |
| lcd_print_atp(5,line,parameter[i],0); |
| 1dbc: 20 e0 ldi r18, 0x00 ; 0 |
| 1dbe: a5 01 movw r20, r10 |
| 1dc0: 69 2d mov r22, r9 |
| 1dc2: 85 e0 ldi r24, 0x05 ; 5 |
| 1dc4: 0e 94 e1 08 call 0x11c2 <lcd_print_atp> |
| if (line <= 7) |
| 1dc8: f7 e0 ldi r31, 0x07 ; 7 |
| 1dca: f9 15 cp r31, r9 |
| 1dcc: 08 f0 brcs .+2 ; 0x1dd0 <show_parameter+0x8e> |
| line++; |
| 1dce: 93 94 inc r9 |
| 1dd0: 1f 5f subi r17, 0xFF ; 255 |
| 1dd2: 83 e0 ldi r24, 0x03 ; 3 |
| 1dd4: 90 e0 ldi r25, 0x00 ; 0 |
| 1dd6: e8 0e add r14, r24 |
| 1dd8: f9 1e adc r15, r25 |
| 1dda: 08 94 sec |
| 1ddc: c1 1c adc r12, r1 |
| 1dde: d1 1c adc r13, r1 |
| 1de0: e0 e1 ldi r30, 0x10 ; 16 |
| 1de2: f0 e0 ldi r31, 0x00 ; 0 |
| 1de4: ae 0e add r10, r30 |
| 1de6: bf 1e adc r11, r31 |
| 1de8: 12 34 cpi r17, 0x42 ; 66 |
| 1dea: 80 f2 brcs .-96 ; 0x1d8c <show_parameter+0x4a> |
| 1dec: 5f c0 rjmp .+190 ; 0x1eac <show_parameter+0x16a> |
| } |
| } |
| } |
| else |
| { // Sonderfälle: Binäre Eingabe |
| if (number == 1) |
| 1dee: 81 30 cpi r24, 0x01 ; 1 |
| 1df0: 71 f5 brne .+92 ; 0x1e4e <show_parameter+0x10c> |
| { |
| binary(p_buffer[52],bin); // Loop-Config |
| 1df2: be 01 movw r22, r28 |
| 1df4: 66 5e subi r22, 0xE6 ; 230 |
| 1df6: 7f 4f sbci r23, 0xFF ; 255 |
| 1df8: 80 91 97 04 lds r24, 0x0497 |
| 1dfc: 0e 94 47 0e call 0x1c8e <binary> |
| text[1] = 0x00; |
| 1e00: 9a 82 std Y+2, r9 ; 0x02 |
| for (i=0;i<4;i++) |
| 1e02: 19 2d mov r17, r9 |
| 1e04: 9b eb ldi r25, 0xBB ; 187 |
| 1e06: c9 2e mov r12, r25 |
| 1e08: 99 e0 ldi r25, 0x09 ; 9 |
| 1e0a: d9 2e mov r13, r25 |
| 1e0c: ee 24 eor r14, r14 |
| 1e0e: ff 24 eor r15, r15 |
| { |
| text[0] = bin[i] + 0x30; |
| 1e10: ce 01 movw r24, r28 |
| 1e12: 01 96 adiw r24, 0x01 ; 1 |
| 1e14: f7 01 movw r30, r14 |
| 1e16: e8 0f add r30, r24 |
| 1e18: f9 1f adc r31, r25 |
| 1e1a: 21 8d ldd r18, Z+25 ; 0x19 |
| 1e1c: 20 5d subi r18, 0xD0 ; 208 |
| 1e1e: 29 83 std Y+1, r18 ; 0x01 |
| lcd_print_at(0,i,text,0); |
| 1e20: 20 e0 ldi r18, 0x00 ; 0 |
| 1e22: ac 01 movw r20, r24 |
| 1e24: 61 2f mov r22, r17 |
| 1e26: 82 2f mov r24, r18 |
| 1e28: 0e 94 1d 09 call 0x123a <lcd_print_at> |
| lcd_print_atp(5,i,bin_parameter[i],0); |
| 1e2c: 20 e0 ldi r18, 0x00 ; 0 |
| 1e2e: a6 01 movw r20, r12 |
| 1e30: 61 2f mov r22, r17 |
| 1e32: 85 e0 ldi r24, 0x05 ; 5 |
| 1e34: 0e 94 e1 08 call 0x11c2 <lcd_print_atp> |
| 1e38: 1f 5f subi r17, 0xFF ; 255 |
| 1e3a: 08 94 sec |
| 1e3c: e1 1c adc r14, r1 |
| 1e3e: f1 1c adc r15, r1 |
| 1e40: 80 e1 ldi r24, 0x10 ; 16 |
| 1e42: 90 e0 ldi r25, 0x00 ; 0 |
| 1e44: c8 0e add r12, r24 |
| 1e46: d9 1e adc r13, r25 |
| 1e48: 14 30 cpi r17, 0x04 ; 4 |
| 1e4a: 10 f3 brcs .-60 ; 0x1e10 <show_parameter+0xce> |
| 1e4c: 2f c0 rjmp .+94 ; 0x1eac <show_parameter+0x16a> |
| } |
| } |
| if (number == 0) |
| 1e4e: 88 23 and r24, r24 |
| 1e50: 69 f5 brne .+90 ; 0x1eac <show_parameter+0x16a> |
| { |
| binary(p_buffer[8],bin); // Config |
| 1e52: be 01 movw r22, r28 |
| 1e54: 66 5e subi r22, 0xE6 ; 230 |
| 1e56: 7f 4f sbci r23, 0xFF ; 255 |
| 1e58: 80 91 6b 04 lds r24, 0x046B |
| 1e5c: 0e 94 47 0e call 0x1c8e <binary> |
| text[1] = 0x00; |
| 1e60: 9a 82 std Y+2, r9 ; 0x02 |
| for (i=0;i<8;i++) |
| 1e62: 19 2d mov r17, r9 |
| 1e64: 8b ef ldi r24, 0xFB ; 251 |
| 1e66: c8 2e mov r12, r24 |
| 1e68: 89 e0 ldi r24, 0x09 ; 9 |
| 1e6a: d8 2e mov r13, r24 |
| 1e6c: ee 24 eor r14, r14 |
| 1e6e: ff 24 eor r15, r15 |
| { |
| text[0] = bin[i] + 0x30; |
| 1e70: ce 01 movw r24, r28 |
| 1e72: 01 96 adiw r24, 0x01 ; 1 |
| 1e74: f7 01 movw r30, r14 |
| 1e76: e8 0f add r30, r24 |
| 1e78: f9 1f adc r31, r25 |
| 1e7a: 21 8d ldd r18, Z+25 ; 0x19 |
| 1e7c: 20 5d subi r18, 0xD0 ; 208 |
| 1e7e: 29 83 std Y+1, r18 ; 0x01 |
| lcd_print_at(0,i,text,0); |
| 1e80: 20 e0 ldi r18, 0x00 ; 0 |
| 1e82: ac 01 movw r20, r24 |
| 1e84: 61 2f mov r22, r17 |
| 1e86: 82 2f mov r24, r18 |
| 1e88: 0e 94 1d 09 call 0x123a <lcd_print_at> |
| lcd_print_atp(5,i,bin_parameter[i+4],0); |
| 1e8c: 20 e0 ldi r18, 0x00 ; 0 |
| 1e8e: a6 01 movw r20, r12 |
| 1e90: 61 2f mov r22, r17 |
| 1e92: 85 e0 ldi r24, 0x05 ; 5 |
| 1e94: 0e 94 e1 08 call 0x11c2 <lcd_print_atp> |
| 1e98: 1f 5f subi r17, 0xFF ; 255 |
| 1e9a: 08 94 sec |
| 1e9c: e1 1c adc r14, r1 |
| 1e9e: f1 1c adc r15, r1 |
| 1ea0: e0 e1 ldi r30, 0x10 ; 16 |
| 1ea2: f0 e0 ldi r31, 0x00 ; 0 |
| 1ea4: ce 0e add r12, r30 |
| 1ea6: df 1e adc r13, r31 |
| 1ea8: 18 30 cpi r17, 0x08 ; 8 |
| 1eaa: 10 f3 brcs .-60 ; 0x1e70 <show_parameter+0x12e> |
| } |
| } |
| } |
| return line; |
| } |
| 1eac: 89 2d mov r24, r9 |
| 1eae: 99 27 eor r25, r25 |
| 1eb0: a1 96 adiw r28, 0x21 ; 33 |
| 1eb2: 0f b6 in r0, 0x3f ; 63 |
| 1eb4: f8 94 cli |
| 1eb6: de bf out 0x3e, r29 ; 62 |
| 1eb8: 0f be out 0x3f, r0 ; 63 |
| 1eba: cd bf out 0x3d, r28 ; 61 |
| 1ebc: df 91 pop r29 |
| 1ebe: cf 91 pop r28 |
| 1ec0: 1f 91 pop r17 |
| 1ec2: 0f 91 pop r16 |
| 1ec4: ff 90 pop r15 |
| 1ec6: ef 90 pop r14 |
| 1ec8: df 90 pop r13 |
| 1eca: cf 90 pop r12 |
| 1ecc: bf 90 pop r11 |
| 1ece: af 90 pop r10 |
| 1ed0: 9f 90 pop r9 |
| 1ed2: 08 95 ret |
| 00001ed4 <edit_parameter2>: |
| void edit_parameter2 (uint8_t page, uint8_t lines) // Ändern der Parameter einer Seite |
| { |
| 1ed4: 8f 92 push r8 |
| 1ed6: 9f 92 push r9 |
| 1ed8: af 92 push r10 |
| 1eda: bf 92 push r11 |
| 1edc: df 92 push r13 |
| 1ede: ef 92 push r14 |
| 1ee0: ff 92 push r15 |
| 1ee2: 0f 93 push r16 |
| 1ee4: 1f 93 push r17 |
| 1ee6: cf 93 push r28 |
| 1ee8: df 93 push r29 |
| 1eea: cd b7 in r28, 0x3d ; 61 |
| 1eec: de b7 in r29, 0x3e ; 62 |
| 1eee: 62 97 sbiw r28, 0x12 ; 18 |
| 1ef0: 0f b6 in r0, 0x3f ; 63 |
| 1ef2: f8 94 cli |
| 1ef4: de bf out 0x3e, r29 ; 62 |
| 1ef6: 0f be out 0x3f, r0 ; 63 |
| 1ef8: cd bf out 0x3d, r28 ; 61 |
| 1efa: d8 2e mov r13, r24 |
| uint8_t line; |
| uint8_t par; |
| uint8_t min; |
| uint8_t max; |
| uint8_t text[10]; |
| uint8_t bin[8]; |
| if (page > 1) // "normale" Parameter-Seiten |
| 1efc: 81 e0 ldi r24, 0x01 ; 1 |
| 1efe: 8d 15 cp r24, r13 |
| 1f00: 08 f0 brcs .+2 ; 0x1f04 <edit_parameter2+0x30> |
| 1f02: 55 c0 rjmp .+170 ; 0x1fae <edit_parameter2+0xda> |
| { |
| line = menu_choose(0,lines-1,4); |
| 1f04: 61 50 subi r22, 0x01 ; 1 |
| 1f06: 44 e0 ldi r20, 0x04 ; 4 |
| 1f08: 80 e0 ldi r24, 0x00 ; 0 |
| 1f0a: 0e 94 86 11 call 0x230c <menu_choose> |
| 1f0e: 08 2f mov r16, r24 |
| if (line != 255) // Wenn line == 255, wurde Escape gedrückt |
| 1f10: 8f 3f cpi r24, 0xFF ; 255 |
| 1f12: 09 f4 brne .+2 ; 0x1f16 <edit_parameter2+0x42> |
| 1f14: 4c c0 rjmp .+152 ; 0x1fae <edit_parameter2+0xda> |
| { |
| par = p_buffer[array[line]]; |
| 1f16: e8 2e mov r14, r24 |
| 1f18: ff 24 eor r15, r15 |
| 1f1a: f7 01 movw r30, r14 |
| 1f1c: e1 58 subi r30, 0x81 ; 129 |
| 1f1e: fa 4f sbci r31, 0xFA ; 250 |
| 1f20: 80 81 ld r24, Z |
| 1f22: e8 2f mov r30, r24 |
| 1f24: ff 27 eor r31, r31 |
| 1f26: ed 59 subi r30, 0x9D ; 157 |
| 1f28: fb 4f sbci r31, 0xFB ; 251 |
| 1f2a: 10 81 ld r17, Z |
| min = pgm_read_byte(p_limits + par * 3); |
| max = pgm_read_byte(p_limits + par * 3 + 1); |
| lcd_print_atp(4,line,PSTR("-"),0); |
| 1f2c: 20 e0 ldi r18, 0x00 ; 0 |
| 1f2e: 49 e0 ldi r20, 0x09 ; 9 |
| 1f30: 5c e0 ldi r21, 0x0C ; 12 |
| 1f32: 60 2f mov r22, r16 |
| 1f34: 84 e0 ldi r24, 0x04 ; 4 |
| 1f36: 0e 94 e1 08 call 0x11c2 <lcd_print_atp> |
| while (key != key_nokey); |
| 1f3a: 80 91 e6 04 lds r24, 0x04E6 |
| 1f3e: 88 23 and r24, r24 |
| 1f40: e1 f7 brne .-8 ; 0x1f3a <edit_parameter2+0x66> |
| do |
| { |
| if (key == key_minus) |
| 1f42: 80 91 e6 04 lds r24, 0x04E6 |
| 1f46: 81 30 cpi r24, 0x01 ; 1 |
| 1f48: 09 f4 brne .+2 ; 0x1f4c <edit_parameter2+0x78> |
| { |
| //if (par > min) // Überprüfung der Parameter auf Bereichsüberschreitung derzeit deaktiviert |
| par --; |
| 1f4a: 11 50 subi r17, 0x01 ; 1 |
| } |
| if (key == key_plus) |
| 1f4c: 80 91 e6 04 lds r24, 0x04E6 |
| 1f50: 82 30 cpi r24, 0x02 ; 2 |
| 1f52: 09 f4 brne .+2 ; 0x1f56 <edit_parameter2+0x82> |
| { |
| //if (par < max) |
| par ++; |
| 1f54: 1f 5f subi r17, 0xFF ; 255 |
| } |
| decimal(par,text); |
| 1f56: be 01 movw r22, r28 |
| 1f58: 6f 5f subi r22, 0xFF ; 255 |
| 1f5a: 7f 4f sbci r23, 0xFF ; 255 |
| 1f5c: 81 2f mov r24, r17 |
| 1f5e: 0e 94 7c 0e call 0x1cf8 <decimal> |
| lcd_print_at(0,line,text,0); |
| 1f62: 20 e0 ldi r18, 0x00 ; 0 |
| 1f64: ae 01 movw r20, r28 |
| 1f66: 4f 5f subi r20, 0xFF ; 255 |
| 1f68: 5f 4f sbci r21, 0xFF ; 255 |
| 1f6a: 60 2f mov r22, r16 |
| 1f6c: 82 2f mov r24, r18 |
| 1f6e: 0e 94 1d 09 call 0x123a <lcd_print_at> |
| timer = 20; |
| 1f72: 84 e1 ldi r24, 0x14 ; 20 |
| 1f74: 80 93 61 00 sts 0x0061, r24 |
| while (timer > 0); |
| 1f78: 80 91 61 00 lds r24, 0x0061 |
| 1f7c: 88 23 and r24, r24 |
| 1f7e: e1 f7 brne .-8 ; 0x1f78 <edit_parameter2+0xa4> |
| } |
| 1f80: 80 91 e6 04 lds r24, 0x04E6 |
| 1f84: 84 30 cpi r24, 0x04 ; 4 |
| 1f86: 21 f0 breq .+8 ; 0x1f90 <edit_parameter2+0xbc> |
| 1f88: 80 91 e6 04 lds r24, 0x04E6 |
| 1f8c: 88 30 cpi r24, 0x08 ; 8 |
| 1f8e: c9 f6 brne .-78 ; 0x1f42 <edit_parameter2+0x6e> |
| while ((key != 0x04) && (key != 0x08)); |
| if (key == 0x08) |
| 1f90: 80 91 e6 04 lds r24, 0x04E6 |
| 1f94: 88 30 cpi r24, 0x08 ; 8 |
| 1f96: 59 f4 brne .+22 ; 0x1fae <edit_parameter2+0xda> |
| p_buffer[array[line]] = par; |
| 1f98: ef e7 ldi r30, 0x7F ; 127 |
| 1f9a: f5 e0 ldi r31, 0x05 ; 5 |
| 1f9c: ee 0e add r14, r30 |
| 1f9e: ff 1e adc r15, r31 |
| 1fa0: f7 01 movw r30, r14 |
| 1fa2: 80 81 ld r24, Z |
| 1fa4: e8 2f mov r30, r24 |
| 1fa6: ff 27 eor r31, r31 |
| 1fa8: ed 59 subi r30, 0x9D ; 157 |
| 1faa: fb 4f sbci r31, 0xFB ; 251 |
| 1fac: 10 83 st Z, r17 |
| } |
| } |
| if (page == 1) // Spezialfall: Loop-Config (einzelne Bits setzen / löschen) |
| 1fae: f1 e0 ldi r31, 0x01 ; 1 |
| 1fb0: df 16 cp r13, r31 |
| 1fb2: 09 f0 breq .+2 ; 0x1fb6 <edit_parameter2+0xe2> |
| 1fb4: 6c c0 rjmp .+216 ; 0x208e <edit_parameter2+0x1ba> |
| { |
| binary(p_buffer[52],bin); |
| 1fb6: 6b e0 ldi r22, 0x0B ; 11 |
| 1fb8: 86 2e mov r8, r22 |
| 1fba: 91 2c mov r9, r1 |
| 1fbc: 8c 0e add r8, r28 |
| 1fbe: 9d 1e adc r9, r29 |
| 1fc0: b4 01 movw r22, r8 |
| 1fc2: 80 91 97 04 lds r24, 0x0497 |
| 1fc6: 0e 94 47 0e call 0x1c8e <binary> |
| text[1] = 0x00; |
| 1fca: 1a 82 std Y+2, r1 ; 0x02 |
| line = menu_choose(0,3,4); |
| 1fcc: 44 e0 ldi r20, 0x04 ; 4 |
| 1fce: 63 e0 ldi r22, 0x03 ; 3 |
| 1fd0: 8a 81 ldd r24, Y+2 ; 0x02 |
| 1fd2: 0e 94 86 11 call 0x230c <menu_choose> |
| 1fd6: 08 2f mov r16, r24 |
| if (line != 255) // Wenn line == 255, wurde Escape gedrückt |
| 1fd8: 8f 3f cpi r24, 0xFF ; 255 |
| 1fda: 09 f4 brne .+2 ; 0x1fde <edit_parameter2+0x10a> |
| 1fdc: c6 c0 rjmp .+396 ; 0x216a <edit_parameter2+0x296> |
| { |
| par = bin[line]; |
| 1fde: e8 2e mov r14, r24 |
| 1fe0: ff 24 eor r15, r15 |
| 1fe2: 5e 01 movw r10, r28 |
| 1fe4: 08 94 sec |
| 1fe6: a1 1c adc r10, r1 |
| 1fe8: b1 1c adc r11, r1 |
| 1fea: f7 01 movw r30, r14 |
| 1fec: ea 0d add r30, r10 |
| 1fee: fb 1d adc r31, r11 |
| 1ff0: 12 85 ldd r17, Z+10 ; 0x0a |
| lcd_print_atp(4,line,PSTR("-"),0); |
| 1ff2: 20 e0 ldi r18, 0x00 ; 0 |
| 1ff4: 4b e0 ldi r20, 0x0B ; 11 |
| 1ff6: 5c e0 ldi r21, 0x0C ; 12 |
| 1ff8: 68 2f mov r22, r24 |
| 1ffa: 84 e0 ldi r24, 0x04 ; 4 |
| 1ffc: 0e 94 e1 08 call 0x11c2 <lcd_print_atp> |
| do |
| { |
| if (key == key_minus) |
| 2000: 80 91 e6 04 lds r24, 0x04E6 |
| 2004: 81 30 cpi r24, 0x01 ; 1 |
| 2006: 09 f4 brne .+2 ; 0x200a <edit_parameter2+0x136> |
| { |
| par = 0x00; |
| 2008: 10 e0 ldi r17, 0x00 ; 0 |
| } |
| if (key == key_plus) |
| 200a: 80 91 e6 04 lds r24, 0x04E6 |
| 200e: 82 30 cpi r24, 0x02 ; 2 |
| 2010: 09 f4 brne .+2 ; 0x2014 <edit_parameter2+0x140> |
| { |
| par = 0x01; |
| 2012: 11 e0 ldi r17, 0x01 ; 1 |
| } |
| text[0] = par+0x30; |
| 2014: 10 5d subi r17, 0xD0 ; 208 |
| 2016: 19 83 std Y+1, r17 ; 0x01 |
| 2018: 10 53 subi r17, 0x30 ; 48 |
| lcd_print_at(0,line,text,0); |
| 201a: 20 e0 ldi r18, 0x00 ; 0 |
| 201c: ae 01 movw r20, r28 |
| 201e: 4f 5f subi r20, 0xFF ; 255 |
| 2020: 5f 4f sbci r21, 0xFF ; 255 |
| 2022: 60 2f mov r22, r16 |
| 2024: 82 2f mov r24, r18 |
| 2026: 0e 94 1d 09 call 0x123a <lcd_print_at> |
| timer = 20; |
| 202a: 84 e1 ldi r24, 0x14 ; 20 |
| 202c: 80 93 61 00 sts 0x0061, r24 |
| while (timer > 0); |
| 2030: d0 90 61 00 lds r13, 0x0061 |
| 2034: dd 20 and r13, r13 |
| 2036: e1 f7 brne .-8 ; 0x2030 <edit_parameter2+0x15c> |
| } |
| 2038: 80 91 e6 04 lds r24, 0x04E6 |
| 203c: 88 30 cpi r24, 0x08 ; 8 |
| 203e: 21 f0 breq .+8 ; 0x2048 <edit_parameter2+0x174> |
| 2040: 80 91 e6 04 lds r24, 0x04E6 |
| 2044: 84 30 cpi r24, 0x04 ; 4 |
| 2046: e1 f6 brne .-72 ; 0x2000 <edit_parameter2+0x12c> |
| while ((key != key_enter) && (key != key_esc)); |
| if (key == key_enter) |
| 2048: 80 91 e6 04 lds r24, 0x04E6 |
| 204c: 88 30 cpi r24, 0x08 ; 8 |
| 204e: 49 f4 brne .+18 ; 0x2062 <edit_parameter2+0x18e> |
| { |
| bin[line] = par; |
| 2050: ea 0c add r14, r10 |
| 2052: fb 1c adc r15, r11 |
| 2054: f7 01 movw r30, r14 |
| 2056: 12 87 std Z+10, r17 ; 0x0a |
| p_buffer[52] = bindec(bin); |
| 2058: c4 01 movw r24, r8 |
| 205a: 0e 94 62 0e call 0x1cc4 <bindec> |
| 205e: 80 93 97 04 sts 0x0497, r24 |
| } |
| lcd_cls(); |
| 2062: 0e 94 36 07 call 0xe6c <lcd_cls> |
| decimal(p_buffer[52],text); |
| 2066: be 01 movw r22, r28 |
| 2068: 6f 5f subi r22, 0xFF ; 255 |
| 206a: 7f 4f sbci r23, 0xFF ; 255 |
| 206c: 80 91 97 04 lds r24, 0x0497 |
| 2070: 0e 94 7c 0e call 0x1cf8 <decimal> |
| lcd_print(text,0); |
| 2074: 6d 2d mov r22, r13 |
| 2076: ce 01 movw r24, r28 |
| 2078: 01 96 adiw r24, 0x01 ; 1 |
| 207a: 0e 94 ea 08 call 0x11d4 <lcd_print> |
| timer = 200; |
| 207e: 88 ec ldi r24, 0xC8 ; 200 |
| 2080: 80 93 61 00 sts 0x0061, r24 |
| while(timer > 0); |
| 2084: 80 91 61 00 lds r24, 0x0061 |
| 2088: 88 23 and r24, r24 |
| 208a: e1 f7 brne .-8 ; 0x2084 <edit_parameter2+0x1b0> |
| 208c: 6e c0 rjmp .+220 ; 0x216a <edit_parameter2+0x296> |
| } |
| } |
| if (page == 0) // Spezialfall: Allgemeine Konfiguration (einzelne Bits setzen/löschen) |
| 208e: dd 20 and r13, r13 |
| 2090: 09 f0 breq .+2 ; 0x2094 <edit_parameter2+0x1c0> |
| 2092: 6b c0 rjmp .+214 ; 0x216a <edit_parameter2+0x296> |
| { |
| binary(p_buffer[8],bin); |
| 2094: 5b e0 ldi r21, 0x0B ; 11 |
| 2096: 85 2e mov r8, r21 |
| 2098: 91 2c mov r9, r1 |
| 209a: 8c 0e add r8, r28 |
| 209c: 9d 1e adc r9, r29 |
| 209e: b4 01 movw r22, r8 |
| 20a0: 80 91 6b 04 lds r24, 0x046B |
| 20a4: 0e 94 47 0e call 0x1c8e <binary> |
| text[1] = 0x00; |
| 20a8: da 82 std Y+2, r13 ; 0x02 |
| line = menu_choose(0,7,4); |
| 20aa: 44 e0 ldi r20, 0x04 ; 4 |
| 20ac: 67 e0 ldi r22, 0x07 ; 7 |
| 20ae: 8d 2d mov r24, r13 |
| 20b0: 0e 94 86 11 call 0x230c <menu_choose> |
| 20b4: 08 2f mov r16, r24 |
| if (line != 255) // Wenn line == 255, wurde Escape gedrückt |
| 20b6: 8f 3f cpi r24, 0xFF ; 255 |
| 20b8: 09 f4 brne .+2 ; 0x20bc <edit_parameter2+0x1e8> |
| 20ba: 57 c0 rjmp .+174 ; 0x216a <edit_parameter2+0x296> |
| { |
| par = bin[line]; |
| 20bc: e8 2e mov r14, r24 |
| 20be: ff 24 eor r15, r15 |
| 20c0: 5e 01 movw r10, r28 |
| 20c2: 08 94 sec |
| 20c4: a1 1c adc r10, r1 |
| 20c6: b1 1c adc r11, r1 |
| 20c8: f7 01 movw r30, r14 |
| 20ca: ea 0d add r30, r10 |
| 20cc: fb 1d adc r31, r11 |
| 20ce: 12 85 ldd r17, Z+10 ; 0x0a |
| lcd_print_atp(4,line,PSTR("-"),0); |
| 20d0: 2d 2d mov r18, r13 |
| 20d2: 4d e0 ldi r20, 0x0D ; 13 |
| 20d4: 5c e0 ldi r21, 0x0C ; 12 |
| 20d6: 68 2f mov r22, r24 |
| 20d8: 84 e0 ldi r24, 0x04 ; 4 |
| 20da: 0e 94 e1 08 call 0x11c2 <lcd_print_atp> |
| do |
| { |
| if (key == key_minus) |
| 20de: 80 91 e6 04 lds r24, 0x04E6 |
| 20e2: 81 30 cpi r24, 0x01 ; 1 |
| 20e4: 09 f4 brne .+2 ; 0x20e8 <edit_parameter2+0x214> |
| { |
| par = 0x00; |
| 20e6: 10 e0 ldi r17, 0x00 ; 0 |
| } |
| if (key == key_plus) |
| 20e8: 80 91 e6 04 lds r24, 0x04E6 |
| 20ec: 82 30 cpi r24, 0x02 ; 2 |
| 20ee: 09 f4 brne .+2 ; 0x20f2 <edit_parameter2+0x21e> |
| { |
| par = 0x01; |
| 20f0: 11 e0 ldi r17, 0x01 ; 1 |
| } |
| text[0] = par+0x30; |
| 20f2: 10 5d subi r17, 0xD0 ; 208 |
| 20f4: 19 83 std Y+1, r17 ; 0x01 |
| 20f6: 10 53 subi r17, 0x30 ; 48 |
| lcd_print_at(0,line,text,0); |
| 20f8: 20 e0 ldi r18, 0x00 ; 0 |
| 20fa: ae 01 movw r20, r28 |
| 20fc: 4f 5f subi r20, 0xFF ; 255 |
| 20fe: 5f 4f sbci r21, 0xFF ; 255 |
| 2100: 60 2f mov r22, r16 |
| 2102: 82 2f mov r24, r18 |
| 2104: 0e 94 1d 09 call 0x123a <lcd_print_at> |
| timer = 20; |
| 2108: 84 e1 ldi r24, 0x14 ; 20 |
| 210a: 80 93 61 00 sts 0x0061, r24 |
| while (timer > 0); |
| 210e: d0 90 61 00 lds r13, 0x0061 |
| 2112: dd 20 and r13, r13 |
| 2114: e1 f7 brne .-8 ; 0x210e <edit_parameter2+0x23a> |
| } |
| 2116: 80 91 e6 04 lds r24, 0x04E6 |
| 211a: 88 30 cpi r24, 0x08 ; 8 |
| 211c: 21 f0 breq .+8 ; 0x2126 <edit_parameter2+0x252> |
| 211e: 80 91 e6 04 lds r24, 0x04E6 |
| 2122: 84 30 cpi r24, 0x04 ; 4 |
| 2124: e1 f6 brne .-72 ; 0x20de <edit_parameter2+0x20a> |
| while ((key != key_enter) && (key != key_esc)); |
| if (key == key_enter) |
| 2126: 80 91 e6 04 lds r24, 0x04E6 |
| 212a: 88 30 cpi r24, 0x08 ; 8 |
| 212c: 49 f4 brne .+18 ; 0x2140 <edit_parameter2+0x26c> |
| { |
| bin[line] = par; |
| 212e: ea 0c add r14, r10 |
| 2130: fb 1c adc r15, r11 |
| 2132: f7 01 movw r30, r14 |
| 2134: 12 87 std Z+10, r17 ; 0x0a |
| p_buffer[8] = bindec(bin); |
| 2136: c4 01 movw r24, r8 |
| 2138: 0e 94 62 0e call 0x1cc4 <bindec> |
| 213c: 80 93 6b 04 sts 0x046B, r24 |
| } |
| lcd_cls(); |
| 2140: 0e 94 36 07 call 0xe6c <lcd_cls> |
| decimal(p_buffer[8],text); |
| 2144: be 01 movw r22, r28 |
| 2146: 6f 5f subi r22, 0xFF ; 255 |
| 2148: 7f 4f sbci r23, 0xFF ; 255 |
| 214a: 80 91 6b 04 lds r24, 0x046B |
| 214e: 0e 94 7c 0e call 0x1cf8 <decimal> |
| lcd_print(text,0); |
| 2152: 6d 2d mov r22, r13 |
| 2154: ce 01 movw r24, r28 |
| 2156: 01 96 adiw r24, 0x01 ; 1 |
| 2158: 0e 94 ea 08 call 0x11d4 <lcd_print> |
| timer = 200; |
| 215c: 88 ec ldi r24, 0xC8 ; 200 |
| 215e: 80 93 61 00 sts 0x0061, r24 |
| while(timer > 0); |
| 2162: 80 91 61 00 lds r24, 0x0061 |
| 2166: 88 23 and r24, r24 |
| 2168: e1 f7 brne .-8 ; 0x2162 <edit_parameter2+0x28e> |
| 216a: 62 96 adiw r28, 0x12 ; 18 |
| 216c: 0f b6 in r0, 0x3f ; 63 |
| 216e: f8 94 cli |
| 2170: de bf out 0x3e, r29 ; 62 |
| 2172: 0f be out 0x3f, r0 ; 63 |
| 2174: cd bf out 0x3d, r28 ; 61 |
| 2176: df 91 pop r29 |
| 2178: cf 91 pop r28 |
| 217a: 1f 91 pop r17 |
| 217c: 0f 91 pop r16 |
| 217e: ff 90 pop r15 |
| 2180: ef 90 pop r14 |
| 2182: df 90 pop r13 |
| 2184: bf 90 pop r11 |
| 2186: af 90 pop r10 |
| 2188: 9f 90 pop r9 |
| 218a: 8f 90 pop r8 |
| 218c: 08 95 ret |
| 0000218e <edit_parameter>: |
| } |
| } |
| } |
| void edit_parameter (void) // Blättert die Parameter seitenweise durch, Einsprung vom Hauptmenü |
| { |
| 218e: 1f 93 push r17 |
| 2190: cf 93 push r28 |
| 2192: df 93 push r29 |
| 2194: cd b7 in r28, 0x3d ; 61 |
| 2196: de b7 in r29, 0x3e ; 62 |
| 2198: 2f 97 sbiw r28, 0x0f ; 15 |
| 219a: 0f b6 in r0, 0x3f ; 63 |
| 219c: f8 94 cli |
| 219e: de bf out 0x3e, r29 ; 62 |
| 21a0: 0f be out 0x3f, r0 ; 63 |
| 21a2: cd bf out 0x3d, r28 ; 61 |
| uint8_t page; // 12 Pages |
| uint8_t text[15]; |
| uint8_t lines; |
| uint8_t parameter; |
| lcd_cls(); |
| 21a4: 0e 94 36 07 call 0xe6c <lcd_cls> |
| lcd_printp(PSTR("Lade Parameter\r\n"),0); |
| 21a8: 60 e0 ldi r22, 0x00 ; 0 |
| 21aa: 8f e0 ldi r24, 0x0F ; 15 |
| 21ac: 9c e0 ldi r25, 0x0C ; 12 |
| 21ae: 0e 94 aa 08 call 0x1154 <lcd_printp> |
| lcd_printp(PSTR(" 1:\r\n"),0); |
| 21b2: 60 e0 ldi r22, 0x00 ; 0 |
| 21b4: 80 e2 ldi r24, 0x20 ; 32 |
| 21b6: 9c e0 ldi r25, 0x0C ; 12 |
| 21b8: 0e 94 aa 08 call 0x1154 <lcd_printp> |
| lcd_printp(PSTR(" 2:\r\n"),0); |
| 21bc: 60 e0 ldi r22, 0x00 ; 0 |
| 21be: 86 e2 ldi r24, 0x26 ; 38 |
| 21c0: 9c e0 ldi r25, 0x0C ; 12 |
| 21c2: 0e 94 aa 08 call 0x1154 <lcd_printp> |
| lcd_printp(PSTR(" 3:\r\n"),0); |
| 21c6: 60 e0 ldi r22, 0x00 ; 0 |
| 21c8: 8c e2 ldi r24, 0x2C ; 44 |
| 21ca: 9c e0 ldi r25, 0x0C ; 12 |
| 21cc: 0e 94 aa 08 call 0x1154 <lcd_printp> |
| lcd_printp(PSTR(" 4:\r\n"),0); |
| 21d0: 60 e0 ldi r22, 0x00 ; 0 |
| 21d2: 82 e3 ldi r24, 0x32 ; 50 |
| 21d4: 9c e0 ldi r25, 0x0C ; 12 |
| 21d6: 0e 94 aa 08 call 0x1154 <lcd_printp> |
| lcd_printp(PSTR(" 5:\r\n"),0); |
| 21da: 60 e0 ldi r22, 0x00 ; 0 |
| 21dc: 88 e3 ldi r24, 0x38 ; 56 |
| 21de: 9c e0 ldi r25, 0x0C ; 12 |
| 21e0: 0e 94 aa 08 call 0x1154 <lcd_printp> |
| parameter = menu_choose(1,5,0); |
| 21e4: 40 e0 ldi r20, 0x00 ; 0 |
| 21e6: 65 e0 ldi r22, 0x05 ; 5 |
| 21e8: 81 e0 ldi r24, 0x01 ; 1 |
| 21ea: 0e 94 86 11 call 0x230c <menu_choose> |
| page = 2; |
| 21ee: 12 e0 ldi r17, 0x02 ; 2 |
| if (read_parameter(parameter) == 1) |
| 21f0: 0e 94 02 0e call 0x1c04 <read_parameter> |
| 21f4: 81 30 cpi r24, 0x01 ; 1 |
| 21f6: 41 f4 brne .+16 ; 0x2208 <edit_parameter+0x7a> |
| { |
| lcd_print_atp(0,6,PSTR("Timeout"),0); |
| 21f8: 20 e0 ldi r18, 0x00 ; 0 |
| 21fa: 4e e3 ldi r20, 0x3E ; 62 |
| 21fc: 5c e0 ldi r21, 0x0C ; 12 |
| 21fe: 66 e0 ldi r22, 0x06 ; 6 |
| 2200: 82 2f mov r24, r18 |
| 2202: 0e 94 e1 08 call 0x11c2 <lcd_print_atp> |
| 2206: 5c c0 rjmp .+184 ; 0x22c0 <edit_parameter+0x132> |
| } |
| else |
| { |
| do |
| { |
| lcd_cls(); |
| 2208: 0e 94 36 07 call 0xe6c <lcd_cls> |
| utoa(page,text,10); |
| 220c: 4a e0 ldi r20, 0x0A ; 10 |
| 220e: 50 e0 ldi r21, 0x00 ; 0 |
| 2210: be 01 movw r22, r28 |
| 2212: 6f 5f subi r22, 0xFF ; 255 |
| 2214: 7f 4f sbci r23, 0xFF ; 255 |
| 2216: 81 2f mov r24, r17 |
| 2218: 99 27 eor r25, r25 |
| 221a: 0e 94 f0 12 call 0x25e0 <utoa> |
| lcd_print(text,0); |
| 221e: 60 e0 ldi r22, 0x00 ; 0 |
| 2220: ce 01 movw r24, r28 |
| 2222: 01 96 adiw r24, 0x01 ; 1 |
| 2224: 0e 94 ea 08 call 0x11d4 <lcd_print> |
| timer = 50; |
| 2228: 82 e3 ldi r24, 0x32 ; 50 |
| 222a: 80 93 61 00 sts 0x0061, r24 |
| while (timer > 0); |
| 222e: 80 91 61 00 lds r24, 0x0061 |
| 2232: 88 23 and r24, r24 |
| 2234: e1 f7 brne .-8 ; 0x222e <edit_parameter+0xa0> |
| lcd_cls(); |
| 2236: 0e 94 36 07 call 0xe6c <lcd_cls> |
| lines = show_parameter(page); |
| 223a: 81 2f mov r24, r17 |
| 223c: 0e 94 a1 0e call 0x1d42 <show_parameter> |
| 2240: 68 2f mov r22, r24 |
| while (key == key_nokey); |
| 2242: 80 91 e6 04 lds r24, 0x04E6 |
| 2246: 88 23 and r24, r24 |
| 2248: e1 f3 breq .-8 ; 0x2242 <edit_parameter+0xb4> |
| if (key == key_plus) |
| 224a: 80 91 e6 04 lds r24, 0x04E6 |
| 224e: 82 30 cpi r24, 0x02 ; 2 |
| 2250: 09 f4 brne .+2 ; 0x2254 <edit_parameter+0xc6> |
| page++; |
| 2252: 1f 5f subi r17, 0xFF ; 255 |
| if (key == key_minus) |
| 2254: 80 91 e6 04 lds r24, 0x04E6 |
| 2258: 81 30 cpi r24, 0x01 ; 1 |
| 225a: 09 f4 brne .+2 ; 0x225e <edit_parameter+0xd0> |
| page--; |
| 225c: 11 50 subi r17, 0x01 ; 1 |
| if (page == 255) |
| 225e: 1f 3f cpi r17, 0xFF ; 255 |
| 2260: 11 f4 brne .+4 ; 0x2266 <edit_parameter+0xd8> |
| page = 12; |
| 2262: 1c e0 ldi r17, 0x0C ; 12 |
| 2264: 03 c0 rjmp .+6 ; 0x226c <edit_parameter+0xde> |
| if (page > 12) |
| 2266: 1d 30 cpi r17, 0x0D ; 13 |
| 2268: 08 f0 brcs .+2 ; 0x226c <edit_parameter+0xde> |
| page = 0; |
| 226a: 10 e0 ldi r17, 0x00 ; 0 |
| if (key == key_enter) |
| 226c: 80 91 e6 04 lds r24, 0x04E6 |
| 2270: 88 30 cpi r24, 0x08 ; 8 |
| 2272: 19 f4 brne .+6 ; 0x227a <edit_parameter+0xec> |
| edit_parameter2(page,lines); |
| 2274: 81 2f mov r24, r17 |
| 2276: 0e 94 6a 0f call 0x1ed4 <edit_parameter2> |
| } |
| 227a: 80 91 e6 04 lds r24, 0x04E6 |
| 227e: 84 30 cpi r24, 0x04 ; 4 |
| 2280: 19 f6 brne .-122 ; 0x2208 <edit_parameter+0x7a> |
| while (key != key_esc); |
| lcd_cls(); |
| 2282: 0e 94 36 07 call 0xe6c <lcd_cls> |
| lcd_printp(PSTR("Parameter speichern?\r\n ja\r\n nein"),0); |
| 2286: 60 e0 ldi r22, 0x00 ; 0 |
| 2288: 86 e4 ldi r24, 0x46 ; 70 |
| 228a: 9c e0 ldi r25, 0x0C ; 12 |
| 228c: 0e 94 aa 08 call 0x1154 <lcd_printp> |
| lines = menu_choose(1,2,0); |
| 2290: 40 e0 ldi r20, 0x00 ; 0 |
| 2292: 62 e0 ldi r22, 0x02 ; 2 |
| 2294: 81 e0 ldi r24, 0x01 ; 1 |
| 2296: 0e 94 86 11 call 0x230c <menu_choose> |
| if (lines == 1 ) |
| 229a: 81 30 cpi r24, 0x01 ; 1 |
| 229c: 61 f4 brne .+24 ; 0x22b6 <edit_parameter+0x128> |
| { |
| lcd_printp(PSTR("\r\n--->"),0); |
| 229e: 60 e0 ldi r22, 0x00 ; 0 |
| 22a0: 89 e6 ldi r24, 0x69 ; 105 |
| 22a2: 9c e0 ldi r25, 0x0C ; 12 |
| 22a4: 0e 94 aa 08 call 0x1154 <lcd_printp> |
| write_parameter(5); // Sicherheitshalber wird derzeit ausschließlich auf Parametersatz 5 gesichert. |
| 22a8: 85 e0 ldi r24, 0x05 ; 5 |
| 22aa: 0e 94 2c 0e call 0x1c58 <write_parameter> |
| lcd_printp(PSTR("\r\nParameter gespeichert"),0); |
| 22ae: 60 e0 ldi r22, 0x00 ; 0 |
| 22b0: 80 e7 ldi r24, 0x70 ; 112 |
| 22b2: 9c e0 ldi r25, 0x0C ; 12 |
| 22b4: 03 c0 rjmp .+6 ; 0x22bc <edit_parameter+0x12e> |
| } |
| else |
| { |
| lcd_printp(PSTR("\r\nNicht gespeichert"),0); |
| 22b6: 60 e0 ldi r22, 0x00 ; 0 |
| 22b8: 88 e8 ldi r24, 0x88 ; 136 |
| 22ba: 9c e0 ldi r25, 0x0C ; 12 |
| 22bc: 0e 94 aa 08 call 0x1154 <lcd_printp> |
| } |
| } |
| timer = 100; |
| 22c0: 84 e6 ldi r24, 0x64 ; 100 |
| 22c2: 80 93 61 00 sts 0x0061, r24 |
| while(timer > 0); |
| 22c6: 80 91 61 00 lds r24, 0x0061 |
| 22ca: 88 23 and r24, r24 |
| 22cc: e1 f7 brne .-8 ; 0x22c6 <edit_parameter+0x138> |
| 22ce: 2f 96 adiw r28, 0x0f ; 15 |
| 22d0: 0f b6 in r0, 0x3f ; 63 |
| 22d2: f8 94 cli |
| 22d4: de bf out 0x3e, r29 ; 62 |
| 22d6: 0f be out 0x3f, r0 ; 63 |
| 22d8: cd bf out 0x3d, r28 ; 61 |
| 22da: df 91 pop r29 |
| 22dc: cf 91 pop r28 |
| 22de: 1f 91 pop r17 |
| 22e0: 08 95 ret |
| 000022e2 <menu_set_cursor>: |
| // Subroutine für den Stern (*) bzw. Cursor |
| void menu_set_cursor (uint8_t before, uint8_t line, uint8_t pos) |
| { |
| 22e2: 0f 93 push r16 |
| 22e4: 1f 93 push r17 |
| 22e6: 06 2f mov r16, r22 |
| 22e8: 14 2f mov r17, r20 |
| lcd_print_atp(pos,before,PSTR(" "),0); // Die vorhergehende Position löschen |
| 22ea: 20 e0 ldi r18, 0x00 ; 0 |
| 22ec: 4c e9 ldi r20, 0x9C ; 156 |
| 22ee: 5c e0 ldi r21, 0x0C ; 12 |
| 22f0: 68 2f mov r22, r24 |
| 22f2: 81 2f mov r24, r17 |
| 22f4: 0e 94 e1 08 call 0x11c2 <lcd_print_atp> |
| lcd_print_atp(pos,line,PSTR("*"),0); // Den Cursor an der aktuellen Position anzeigen |
| 22f8: 20 e0 ldi r18, 0x00 ; 0 |
| 22fa: 4e e9 ldi r20, 0x9E ; 158 |
| 22fc: 5c e0 ldi r21, 0x0C ; 12 |
| 22fe: 60 2f mov r22, r16 |
| 2300: 81 2f mov r24, r17 |
| 2302: 0e 94 e1 08 call 0x11c2 <lcd_print_atp> |
| 2306: 1f 91 pop r17 |
| 2308: 0f 91 pop r16 |
| 230a: 08 95 ret |
| 0000230c <menu_choose>: |
| } |
| // Zeigt einen Stern (*) an der x-Position <pos> an, y-Position von min bis max. |
| // Mit der +/- Taste kann ein Menü-Punkt ausgewählt und mit (Enter) bestätigt werden. |
| // Die Zeilennummer des aktuellen Menüpunkts wird zurückgegeben. |
| uint8_t menu_choose (uint8_t min, uint8_t max, uint8_t pos) |
| { |
| 230c: ef 92 push r14 |
| 230e: ff 92 push r15 |
| 2310: 0f 93 push r16 |
| 2312: 1f 93 push r17 |
| 2314: cf 93 push r28 |
| 2316: f8 2e mov r15, r24 |
| 2318: e6 2e mov r14, r22 |
| 231a: 04 2f mov r16, r20 |
| uint8_t line, before; |
| line = min; |
| 231c: c8 2f mov r28, r24 |
| before = min; |
| 231e: 18 2f mov r17, r24 |
| menu_set_cursor(line,line,pos); |
| 2320: 68 2f mov r22, r24 |
| 2322: 0e 94 71 11 call 0x22e2 <menu_set_cursor> |
| do |
| { |
| while (key != key_nokey); |
| 2326: 80 91 e6 04 lds r24, 0x04E6 |
| 232a: 88 23 and r24, r24 |
| 232c: e1 f7 brne .-8 ; 0x2326 <menu_choose+0x1a> |
| while(key == key_nokey); |
| 232e: 80 91 e6 04 lds r24, 0x04E6 |
| 2332: 88 23 and r24, r24 |
| 2334: e1 f3 breq .-8 ; 0x232e <menu_choose+0x22> |
| if ((key == key_plus) && (line < max)) |
| 2336: 80 91 e6 04 lds r24, 0x04E6 |
| 233a: 82 30 cpi r24, 0x02 ; 2 |
| 233c: 19 f4 brne .+6 ; 0x2344 <menu_choose+0x38> |
| 233e: ce 15 cp r28, r14 |
| 2340: 08 f4 brcc .+2 ; 0x2344 <menu_choose+0x38> |
| line ++; |
| 2342: cf 5f subi r28, 0xFF ; 255 |
| if ((key == key_minus) && (line > min)) |
| 2344: 80 91 e6 04 lds r24, 0x04E6 |
| 2348: 81 30 cpi r24, 0x01 ; 1 |
| 234a: 19 f4 brne .+6 ; 0x2352 <menu_choose+0x46> |
| 234c: fc 16 cp r15, r28 |
| 234e: 08 f4 brcc .+2 ; 0x2352 <menu_choose+0x46> |
| line --; |
| 2350: c1 50 subi r28, 0x01 ; 1 |
| menu_set_cursor(before,line,pos); |
| 2352: 40 2f mov r20, r16 |
| 2354: 6c 2f mov r22, r28 |
| 2356: 81 2f mov r24, r17 |
| 2358: 0e 94 71 11 call 0x22e2 <menu_set_cursor> |
| before = line; |
| 235c: 1c 2f mov r17, r28 |
| } |
| 235e: 80 91 e6 04 lds r24, 0x04E6 |
| 2362: 88 30 cpi r24, 0x08 ; 8 |
| 2364: 21 f0 breq .+8 ; 0x236e <menu_choose+0x62> |
| 2366: 80 91 e6 04 lds r24, 0x04E6 |
| 236a: 84 30 cpi r24, 0x04 ; 4 |
| 236c: e1 f6 brne .-72 ; 0x2326 <menu_choose+0x1a> |
| while ((key != key_enter) && (key != key_esc)); // Schleife wiederholen, bis (Enter) / Esc gedrückt wurde |
| if (key == key_esc) |
| 236e: 80 91 e6 04 lds r24, 0x04E6 |
| 2372: 84 30 cpi r24, 0x04 ; 4 |
| 2374: 09 f4 brne .+2 ; 0x2378 <menu_choose+0x6c> |
| line = 255; |
| 2376: cf ef ldi r28, 0xFF ; 255 |
| while (key != key_nokey); // Warten, bis Taste wieder losgelassen wurde |
| 2378: 80 91 e6 04 lds r24, 0x04E6 |
| 237c: 88 23 and r24, r24 |
| 237e: e1 f7 brne .-8 ; 0x2378 <menu_choose+0x6c> |
| return line; |
| } |
| 2380: 8c 2f mov r24, r28 |
| 2382: 99 27 eor r25, r25 |
| 2384: cf 91 pop r28 |
| 2386: 1f 91 pop r17 |
| 2388: 0f 91 pop r16 |
| 238a: ff 90 pop r15 |
| 238c: ef 90 pop r14 |
| 238e: 08 95 ret |
| 00002390 <main_menu>: |
| void main_menu (void) |
| { |
| lcd_cls(); |
| 2390: 0e 94 36 07 call 0xe6c <lcd_cls> |
| lcd_printp(PSTR("Hauptmenü(BETA V0.1)\r\n"),0); |
| 2394: 60 e0 ldi r22, 0x00 ; 0 |
| 2396: 80 ea ldi r24, 0xA0 ; 160 |
| 2398: 9c e0 ldi r25, 0x0C ; 12 |
| 239a: 0e 94 aa 08 call 0x1154 <lcd_printp> |
| lcd_printp(PSTR("\r\nDisplay\r\n"),0); |
| 239e: 60 e0 ldi r22, 0x00 ; 0 |
| 23a0: 87 eb ldi r24, 0xB7 ; 183 |
| 23a2: 9c e0 ldi r25, 0x0C ; 12 |
| 23a4: 0e 94 aa 08 call 0x1154 <lcd_printp> |
| lcd_printp(PSTR("Parameter\r\n"),0); |
| 23a8: 60 e0 ldi r22, 0x00 ; 0 |
| 23aa: 83 ec ldi r24, 0xC3 ; 195 |
| 23ac: 9c e0 ldi r25, 0x0C ; 12 |
| 23ae: 0e 94 aa 08 call 0x1154 <lcd_printp> |
| lcd_printp(PSTR("Motortest"),0); |
| 23b2: 60 e0 ldi r22, 0x00 ; 0 |
| 23b4: 8f ec ldi r24, 0xCF ; 207 |
| 23b6: 9c e0 ldi r25, 0x0C ; 12 |
| 23b8: 0e 94 aa 08 call 0x1154 <lcd_printp> |
| switch(menu_choose(2,4,10)) |
| 23bc: 4a e0 ldi r20, 0x0A ; 10 |
| 23be: 64 e0 ldi r22, 0x04 ; 4 |
| 23c0: 82 e0 ldi r24, 0x02 ; 2 |
| 23c2: 0e 94 86 11 call 0x230c <menu_choose> |
| 23c6: 99 27 eor r25, r25 |
| 23c8: 83 30 cpi r24, 0x03 ; 3 |
| 23ca: 91 05 cpc r25, r1 |
| 23cc: 61 f0 breq .+24 ; 0x23e6 <main_menu+0x56> |
| 23ce: 84 30 cpi r24, 0x04 ; 4 |
| 23d0: 91 05 cpc r25, r1 |
| 23d2: 1c f4 brge .+6 ; 0x23da <main_menu+0x4a> |
| 23d4: 02 97 sbiw r24, 0x02 ; 2 |
| 23d6: 21 f0 breq .+8 ; 0x23e0 <main_menu+0x50> |
| 23d8: 08 95 ret |
| 23da: 04 97 sbiw r24, 0x04 ; 4 |
| 23dc: 39 f0 breq .+14 ; 0x23ec <main_menu+0x5c> |
| 23de: 08 95 ret |
| { |
| case 2: |
| display_data(); // LCD-Modus |
| 23e0: 0e 94 23 12 call 0x2446 <display_data> |
| break; |
| 23e4: 08 95 ret |
| case 3: |
| edit_parameter(); // Parameter (Settings) laden/editieren |
| 23e6: 0e 94 c7 10 call 0x218e <edit_parameter> |
| break; |
| 23ea: 08 95 ret |
| case 4: |
| motor_test(); // primitiver Motor-Test |
| 23ec: 0e 94 83 12 call 0x2506 <motor_test> |
| 23f0: 08 95 ret |
| 000023f2 <read_display>: |
| #include "parameter.h" |
| #include "menu.h" |
| uint8_t read_display (uint8_t command) // |
| { |
| 23f2: cf 93 push r28 |
| uint8_t timeout; |
| timeout = 0; |
| 23f4: c0 e0 ldi r28, 0x00 ; 0 |
| p_buffer[0] = '#'; // Display-Zeile anfordern |
| 23f6: 93 e2 ldi r25, 0x23 ; 35 |
| 23f8: 90 93 63 04 sts 0x0463, r25 |
| p_buffer[1] = 'a'; |
| 23fc: 91 e6 ldi r25, 0x61 ; 97 |
| 23fe: 90 93 64 04 sts 0x0464, r25 |
| p_buffer[2] = 'h'; |
| 2402: 98 e6 ldi r25, 0x68 ; 104 |
| 2404: 90 93 65 04 sts 0x0465, r25 |
| p_buffer[3] = command; |
| 2408: 80 93 66 04 sts 0x0466, r24 |
| p_buffer[4] = 0; |
| 240c: c0 93 67 04 sts 0x0467, r28 |
| p_buffer[5] = 0; |
| 2410: c0 93 68 04 sts 0x0468, r28 |
| base64_send(6); |
| 2414: 86 e0 ldi r24, 0x06 ; 6 |
| 2416: 0e 94 bc 0c call 0x1978 <base64_send> |
| do // warten, bis die Parameter gesendet werden |
| { |
| if (get_message() == 1) |
| 241a: 0e 94 95 0c call 0x192a <get_message> |
| 241e: 81 30 cpi r24, 0x01 ; 1 |
| 2420: 09 f4 brne .+2 ; 0x2424 <read_display+0x32> |
| timeout = 10; |
| 2422: ca e0 ldi r28, 0x0A ; 10 |
| timeout ++; |
| 2424: cf 5f subi r28, 0xFF ; 255 |
| } |
| 2426: 80 91 ea 04 lds r24, 0x04EA |
| 242a: 80 53 subi r24, 0x30 ; 48 |
| 242c: 85 30 cpi r24, 0x05 ; 5 |
| 242e: 10 f0 brcs .+4 ; 0x2434 <read_display+0x42> |
| 2430: ca 30 cpi r28, 0x0A ; 10 |
| 2432: 98 f3 brcs .-26 ; 0x241a <read_display+0x28> |
| while (((r_buffer[1] < '0') || (r_buffer[1] > '4')) && (timeout < 10)); |
| if (timeout >= 10) |
| 2434: ca 30 cpi r28, 0x0A ; 10 |
| 2436: 18 f0 brcs .+6 ; 0x243e <read_display+0x4c> |
| return 1; |
| 2438: 81 e0 ldi r24, 0x01 ; 1 |
| 243a: 90 e0 ldi r25, 0x00 ; 0 |
| 243c: 02 c0 rjmp .+4 ; 0x2442 <read_display+0x50> |
| else |
| return 0; |
| 243e: 80 e0 ldi r24, 0x00 ; 0 |
| 2440: 90 e0 ldi r25, 0x00 ; 0 |
| 2442: cf 91 pop r28 |
| 2444: 08 95 ret |
| 00002446 <display_data>: |
| } |
| void display_data (void) |
| { |
| 2446: 0f 93 push r16 |
| 2448: 1f 93 push r17 |
| 244a: cf 93 push r28 |
| 244c: df 93 push r29 |
| 244e: cd b7 in r28, 0x3d ; 61 |
| 2450: de b7 in r29, 0x3e ; 62 |
| 2452: 2a 97 sbiw r28, 0x0a ; 10 |
| 2454: 0f b6 in r0, 0x3f ; 63 |
| 2456: f8 94 cli |
| 2458: de bf out 0x3e, r29 ; 62 |
| 245a: 0f be out 0x3f, r0 ; 63 |
| 245c: cd bf out 0x3d, r28 ; 61 |
| uint8_t line; |
| uint8_t text[10]; |
| lcd_cls(); |
| 245e: 0e 94 36 07 call 0xe6c <lcd_cls> |
| lcd_printp(PSTR("Display"),0); |
| 2462: 60 e0 ldi r22, 0x00 ; 0 |
| 2464: 89 ed ldi r24, 0xD9 ; 217 |
| 2466: 9c e0 ldi r25, 0x0C ; 12 |
| 2468: 0e 94 aa 08 call 0x1154 <lcd_printp> |
| do |
| { |
| while (key != 0x00); |
| 246c: 00 91 e6 04 lds r16, 0x04E6 |
| 2470: 00 23 and r16, r16 |
| 2472: e1 f7 brne .-8 ; 0x246c <display_data+0x26> |
| if (read_display(0) == 1) |
| 2474: 80 2f mov r24, r16 |
| 2476: 0e 94 f9 11 call 0x23f2 <read_display> |
| 247a: 81 30 cpi r24, 0x01 ; 1 |
| 247c: 69 f4 brne .+26 ; 0x2498 <display_data+0x52> |
| { |
| lcd_printp(PSTR("\r\nTimeout!"),0); |
| 247e: 60 2f mov r22, r16 |
| 2480: 81 ee ldi r24, 0xE1 ; 225 |
| 2482: 9c e0 ldi r25, 0x0C ; 12 |
| 2484: 0e 94 aa 08 call 0x1154 <lcd_printp> |
| timer = 200; |
| 2488: 88 ec ldi r24, 0xC8 ; 200 |
| 248a: 80 93 61 00 sts 0x0061, r24 |
| while (timer > 0); |
| 248e: 80 91 61 00 lds r24, 0x0061 |
| 2492: 88 23 and r24, r24 |
| 2494: e1 f7 brne .-8 ; 0x248e <display_data+0x48> |
| break; |
| 2496: 2c c0 rjmp .+88 ; 0x24f0 <display_data+0xaa> |
| } |
| else |
| { |
| line = r_buffer[1]; |
| 2498: 10 91 ea 04 lds r17, 0x04EA |
| text[0] = line; |
| 249c: 19 83 std Y+1, r17 ; 0x01 |
| text[1] = 0x00; |
| 249e: 0a 83 std Y+2, r16 ; 0x02 |
| lcd_print_at(10,0,text,0); |
| 24a0: 20 2f mov r18, r16 |
| 24a2: ae 01 movw r20, r28 |
| 24a4: 4f 5f subi r20, 0xFF ; 255 |
| 24a6: 5f 4f sbci r21, 0xFF ; 255 |
| 24a8: 60 2f mov r22, r16 |
| 24aa: 8a e0 ldi r24, 0x0A ; 10 |
| 24ac: 0e 94 1d 09 call 0x123a <lcd_print_at> |
| lcd_print_at(0,line+1,p_buffer,0); |
| 24b0: 1f 5f subi r17, 0xFF ; 255 |
| 24b2: 20 2f mov r18, r16 |
| 24b4: 43 e6 ldi r20, 0x63 ; 99 |
| 24b6: 54 e0 ldi r21, 0x04 ; 4 |
| 24b8: 61 2f mov r22, r17 |
| 24ba: 80 2f mov r24, r16 |
| 24bc: 0e 94 1d 09 call 0x123a <lcd_print_at> |
| timer = 10; |
| 24c0: 8a e0 ldi r24, 0x0A ; 10 |
| 24c2: 80 93 61 00 sts 0x0061, r24 |
| while(timer > 0); |
| 24c6: 80 91 61 00 lds r24, 0x0061 |
| 24ca: 88 23 and r24, r24 |
| 24cc: e1 f7 brne .-8 ; 0x24c6 <display_data+0x80> |
| if (key == 0x01) |
| 24ce: 80 91 e6 04 lds r24, 0x04E6 |
| 24d2: 81 30 cpi r24, 0x01 ; 1 |
| 24d4: 11 f4 brne .+4 ; 0x24da <display_data+0x94> |
| read_display(1); |
| 24d6: 0e 94 f9 11 call 0x23f2 <read_display> |
| if (key == 0x02) |
| 24da: 80 91 e6 04 lds r24, 0x04E6 |
| 24de: 82 30 cpi r24, 0x02 ; 2 |
| 24e0: 11 f4 brne .+4 ; 0x24e6 <display_data+0xa0> |
| read_display(2); |
| 24e2: 0e 94 f9 11 call 0x23f2 <read_display> |
| } |
| } |
| 24e6: 80 91 e6 04 lds r24, 0x04E6 |
| 24ea: 84 30 cpi r24, 0x04 ; 4 |
| 24ec: 09 f0 breq .+2 ; 0x24f0 <display_data+0xaa> |
| 24ee: be cf rjmp .-132 ; 0x246c <display_data+0x26> |
| 24f0: 2a 96 adiw r28, 0x0a ; 10 |
| 24f2: 0f b6 in r0, 0x3f ; 63 |
| 24f4: f8 94 cli |
| 24f6: de bf out 0x3e, r29 ; 62 |
| 24f8: 0f be out 0x3f, r0 ; 63 |
| 24fa: cd bf out 0x3d, r28 ; 61 |
| 24fc: df 91 pop r29 |
| 24fe: cf 91 pop r28 |
| 2500: 1f 91 pop r17 |
| 2502: 0f 91 pop r16 |
| 2504: 08 95 ret |
| 00002506 <motor_test>: |
| #include "base64.h" |
| void motor_test(void) |
| { |
| lcd_cls(); |
| 2506: 0e 94 36 07 call 0xe6c <lcd_cls> |
| while (key != 0x00); |
| 250a: 60 91 e6 04 lds r22, 0x04E6 |
| 250e: 66 23 and r22, r22 |
| 2510: e1 f7 brne .-8 ; 0x250a <motor_test+0x4> |
| lcd_printp(PSTR("Taste drücken\r\n"),0); |
| 2512: 8c ee ldi r24, 0xEC ; 236 |
| 2514: 9c e0 ldi r25, 0x0C ; 12 |
| 2516: 0e 94 aa 08 call 0x1154 <lcd_printp> |
| while (key == 0x00); |
| 251a: 80 91 e6 04 lds r24, 0x04E6 |
| 251e: 88 23 and r24, r24 |
| 2520: e1 f3 breq .-8 ; 0x251a <motor_test+0x14> |
| if (key == 0x08) // nur, wenn die Bestätigungstaste gedrückt wird |
| 2522: 80 91 e6 04 lds r24, 0x04E6 |
| 2526: 88 30 cpi r24, 0x08 ; 8 |
| 2528: c9 f4 brne .+50 ; 0x255c <motor_test+0x56> |
| { |
| p_buffer[0] = '#'; // Motoren einschalten |
| 252a: 83 e2 ldi r24, 0x23 ; 35 |
| 252c: 80 93 63 04 sts 0x0463, r24 |
| p_buffer[1] = 'a'; |
| 2530: 81 e6 ldi r24, 0x61 ; 97 |
| 2532: 80 93 64 04 sts 0x0464, r24 |
| p_buffer[2] = 't'; |
| 2536: 84 e7 ldi r24, 0x74 ; 116 |
| 2538: 80 93 65 04 sts 0x0465, r24 |
| p_buffer[3] = 10; |
| 253c: 8a e0 ldi r24, 0x0A ; 10 |
| 253e: 80 93 66 04 sts 0x0466, r24 |
| p_buffer[4] = 10; |
| 2542: 80 93 67 04 sts 0x0467, r24 |
| p_buffer[5] = 10; |
| 2546: 80 93 68 04 sts 0x0468, r24 |
| p_buffer[6] = 10; |
| 254a: 80 93 69 04 sts 0x0469, r24 |
| p_buffer[7] = 0; |
| 254e: 10 92 6a 04 sts 0x046A, r1 |
| p_buffer[8] = 0; |
| 2552: 10 92 6b 04 sts 0x046B, r1 |
| base64_send(9); |
| 2556: 89 e0 ldi r24, 0x09 ; 9 |
| 2558: 0e 94 bc 0c call 0x1978 <base64_send> |
| } |
| while (key != 0x00); |
| 255c: 80 91 e6 04 lds r24, 0x04E6 |
| 2560: 88 23 and r24, r24 |
| 2562: e1 f7 brne .-8 ; 0x255c <motor_test+0x56> |
| while (key == 0x00); |
| 2564: 80 91 e6 04 lds r24, 0x04E6 |
| 2568: 88 23 and r24, r24 |
| 256a: e1 f3 breq .-8 ; 0x2564 <motor_test+0x5e> |
| p_buffer[0] = '#'; // Motoren ausschalten |
| 256c: 83 e2 ldi r24, 0x23 ; 35 |
| 256e: 80 93 63 04 sts 0x0463, r24 |
| p_buffer[1] = 'a'; |
| 2572: 81 e6 ldi r24, 0x61 ; 97 |
| 2574: 80 93 64 04 sts 0x0464, r24 |
| p_buffer[2] = 't'; |
| 2578: 84 e7 ldi r24, 0x74 ; 116 |
| 257a: 80 93 65 04 sts 0x0465, r24 |
| p_buffer[3] = 0; |
| 257e: 10 92 66 04 sts 0x0466, r1 |
| p_buffer[4] = 0; |
| 2582: 10 92 67 04 sts 0x0467, r1 |
| p_buffer[5] = 0; |
| 2586: 10 92 68 04 sts 0x0468, r1 |
| p_buffer[6] = 0; |
| 258a: 10 92 69 04 sts 0x0469, r1 |
| p_buffer[7] = 0; |
| 258e: 10 92 6a 04 sts 0x046A, r1 |
| p_buffer[8] = 0; |
| 2592: 10 92 6b 04 sts 0x046B, r1 |
| base64_send(9); |
| 2596: 89 e0 ldi r24, 0x09 ; 9 |
| 2598: 0e 94 bc 0c call 0x1978 <base64_send> |
| 259c: 08 95 ret |
| 0000259e <itoa>: |
| 259e: fb 01 movw r30, r22 |
| 25a0: 9f 01 movw r18, r30 |
| 25a2: e8 94 clt |
| 25a4: 42 30 cpi r20, 0x02 ; 2 |
| 25a6: c4 f0 brlt .+48 ; 0x25d8 <itoa+0x3a> |
| 25a8: 45 32 cpi r20, 0x25 ; 37 |
| 25aa: b4 f4 brge .+44 ; 0x25d8 <itoa+0x3a> |
| 25ac: 4a 30 cpi r20, 0x0A ; 10 |
| 25ae: 29 f4 brne .+10 ; 0x25ba <itoa+0x1c> |
| 25b0: 97 fb bst r25, 7 |
| 25b2: 1e f4 brtc .+6 ; 0x25ba <itoa+0x1c> |
| 25b4: 90 95 com r25 |
| 25b6: 81 95 neg r24 |
| 25b8: 9f 4f sbci r25, 0xFF ; 255 |
| 25ba: 64 2f mov r22, r20 |
| 25bc: 77 27 eor r23, r23 |
| 25be: 0e 94 22 13 call 0x2644 <__udivmodhi4> |
| 25c2: 80 5d subi r24, 0xD0 ; 208 |
| 25c4: 8a 33 cpi r24, 0x3A ; 58 |
| 25c6: 0c f0 brlt .+2 ; 0x25ca <itoa+0x2c> |
| 25c8: 89 5d subi r24, 0xD9 ; 217 |
| 25ca: 81 93 st Z+, r24 |
| 25cc: cb 01 movw r24, r22 |
| 25ce: 00 97 sbiw r24, 0x00 ; 0 |
| 25d0: a1 f7 brne .-24 ; 0x25ba <itoa+0x1c> |
| 25d2: 16 f4 brtc .+4 ; 0x25d8 <itoa+0x3a> |
| 25d4: 5d e2 ldi r21, 0x2D ; 45 |
| 25d6: 51 93 st Z+, r21 |
| 25d8: 10 82 st Z, r1 |
| 25da: c9 01 movw r24, r18 |
| 25dc: 0c 94 06 13 jmp 0x260c <strrev> |
| 000025e0 <utoa>: |
| 25e0: fb 01 movw r30, r22 |
| 25e2: 9f 01 movw r18, r30 |
| 25e4: 42 30 cpi r20, 0x02 ; 2 |
| 25e6: 74 f0 brlt .+28 ; 0x2604 <utoa+0x24> |
| 25e8: 45 32 cpi r20, 0x25 ; 37 |
| 25ea: 64 f4 brge .+24 ; 0x2604 <utoa+0x24> |
| 25ec: 64 2f mov r22, r20 |
| 25ee: 77 27 eor r23, r23 |
| 25f0: 0e 94 22 13 call 0x2644 <__udivmodhi4> |
| 25f4: 80 5d subi r24, 0xD0 ; 208 |
| 25f6: 8a 33 cpi r24, 0x3A ; 58 |
| 25f8: 0c f0 brlt .+2 ; 0x25fc <utoa+0x1c> |
| 25fa: 89 5d subi r24, 0xD9 ; 217 |
| 25fc: 81 93 st Z+, r24 |
| 25fe: cb 01 movw r24, r22 |
| 2600: 00 97 sbiw r24, 0x00 ; 0 |
| 2602: a1 f7 brne .-24 ; 0x25ec <utoa+0xc> |
| 2604: 10 82 st Z, r1 |
| 2606: c9 01 movw r24, r18 |
| 2608: 0c 94 06 13 jmp 0x260c <strrev> |
| 0000260c <strrev>: |
| 260c: dc 01 movw r26, r24 |
| 260e: fc 01 movw r30, r24 |
| 2610: 01 90 ld r0, Z+ |
| 2612: 00 20 and r0, r0 |
| 2614: e9 f7 brne .-6 ; 0x2610 <strrev+0x4> |
| 2616: 32 97 sbiw r30, 0x02 ; 2 |
| 2618: ae 17 cp r26, r30 |
| 261a: bf 07 cpc r27, r31 |
| 261c: 30 f4 brcc .+12 ; 0x262a <strrev+0x1e> |
| 261e: 7c 91 ld r23, X |
| 2620: 60 81 ld r22, Z |
| 2622: 70 83 st Z, r23 |
| 2624: 31 97 sbiw r30, 0x01 ; 1 |
| 2626: 6d 93 st X+, r22 |
| 2628: f7 cf rjmp .-18 ; 0x2618 <strrev+0xc> |
| 262a: 08 95 ret |
| 0000262c <__udivmodqi4>: |
| 262c: 99 1b sub r25, r25 |
| 262e: 79 e0 ldi r23, 0x09 ; 9 |
| 2630: 04 c0 rjmp .+8 ; 0x263a <__udivmodqi4_ep> |
| 00002632 <__udivmodqi4_loop>: |
| 2632: 99 1f adc r25, r25 |
| 2634: 96 17 cp r25, r22 |
| 2636: 08 f0 brcs .+2 ; 0x263a <__udivmodqi4_ep> |
| 2638: 96 1b sub r25, r22 |
| 0000263a <__udivmodqi4_ep>: |
| 263a: 88 1f adc r24, r24 |
| 263c: 7a 95 dec r23 |
| 263e: c9 f7 brne .-14 ; 0x2632 <__udivmodqi4_loop> |
| 2640: 80 95 com r24 |
| 2642: 08 95 ret |
| 00002644 <__udivmodhi4>: |
| 2644: aa 1b sub r26, r26 |
| 2646: bb 1b sub r27, r27 |
| 2648: 51 e1 ldi r21, 0x11 ; 17 |
| 264a: 07 c0 rjmp .+14 ; 0x265a <__udivmodhi4_ep> |
| 0000264c <__udivmodhi4_loop>: |
| 264c: aa 1f adc r26, r26 |
| 264e: bb 1f adc r27, r27 |
| 2650: a6 17 cp r26, r22 |
| 2652: b7 07 cpc r27, r23 |
| 2654: 10 f0 brcs .+4 ; 0x265a <__udivmodhi4_ep> |
| 2656: a6 1b sub r26, r22 |
| 2658: b7 0b sbc r27, r23 |
| 0000265a <__udivmodhi4_ep>: |
| 265a: 88 1f adc r24, r24 |
| 265c: 99 1f adc r25, r25 |
| 265e: 5a 95 dec r21 |
| 2660: a9 f7 brne .-22 ; 0x264c <__udivmodhi4_loop> |
| 2662: 80 95 com r24 |
| 2664: 90 95 com r25 |
| 2666: bc 01 movw r22, r24 |
| 2668: cd 01 movw r24, r26 |
| 266a: 08 95 ret |
| /Transportables_Koptertool/tags/V-0.1/main.map |
|---|
| 0,0 → 1,760 |
| Archive member included because of file (symbol) |
| F:/WinAvr/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodqi4.o) |
| parameter.o (__udivmodqi4) |
| F:/WinAvr/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
| main.o (__do_copy_data) |
| F:/WinAvr/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
| main.o (__do_clear_bss) |
| F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(itoa.o) |
| displ_val.o (itoa) |
| F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(utoa.o) |
| parameter.o (utoa) |
| F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(strrev.o) |
| F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(itoa.o) (strrev) |
| F:/WinAvr/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodhi4.o) |
| F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(itoa.o) (__udivmodhi4) |
| Allocating common symbols |
| Common symbol size file |
| display_page_counter |
| 0x1 main.o |
| timer 0x1 main.o |
| display_buffer 0x400 main.o |
| write_index 0x1 rs232.o |
| display_buffer_counter |
| 0x1 main.o |
| p_buffer 0x80 main.o |
| read_index 0x1 rs232.o |
| display_mode 0x1 main.o |
| displ_page 0x1 displ_val.o |
| counter 0x1 main.o |
| rs232_timer 0x1 main.o |
| rs232_buffer 0x10 rs232.o |
| key 0x1 main.o |
| display_buffer_pointer |
| 0x2 main.o |
| array 0x8 parameter.o |
| lcd_xpos 0x1 lcd.o |
| r_buffer 0x80 main.o |
| lcd_ypos 0x1 lcd.o |
| counter2 0x1 main.o |
| Memory Configuration |
| Name Origin Length Attributes |
| text 0x00000000 0x00020000 xr |
| data 0x00800060 0x0000ffa0 rw !x |
| eeprom 0x00810000 0x00010000 rw !x |
| *default* 0x00000000 0xffffffff |
| Linker script and memory map |
| LOAD F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
| LOAD main.o |
| LOAD timer.o |
| LOAD lcd.o |
| LOAD F8X6.o |
| LOAD rs232.o |
| LOAD base64.o |
| LOAD displ_val.o |
| LOAD parameter.o |
| LOAD menu.o |
| LOAD display.o |
| LOAD motortest.o |
| LOAD F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libm.a |
| LOAD F:/WinAvr/lib/gcc/avr/3.4.5/avr5\libgcc.a |
| LOAD F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a |
| LOAD F:/WinAvr/lib/gcc/avr/3.4.5/avr5\libgcc.a |
| .hash |
| *(.hash) |
| .dynsym |
| *(.dynsym) |
| .dynstr |
| *(.dynstr) |
| .gnu.version |
| *(.gnu.version) |
| .gnu.version_d |
| *(.gnu.version_d) |
| .gnu.version_r |
| *(.gnu.version_r) |
| .rel.init |
| *(.rel.init) |
| .rela.init |
| *(.rela.init) |
| .rel.text |
| *(.rel.text) |
| *(.rel.text.*) |
| *(.rel.gnu.linkonce.t*) |
| .rela.text |
| *(.rela.text) |
| *(.rela.text.*) |
| *(.rela.gnu.linkonce.t*) |
| .rel.fini |
| *(.rel.fini) |
| .rela.fini |
| *(.rela.fini) |
| .rel.rodata |
| *(.rel.rodata) |
| *(.rel.rodata.*) |
| *(.rel.gnu.linkonce.r*) |
| .rela.rodata |
| *(.rela.rodata) |
| *(.rela.rodata.*) |
| *(.rela.gnu.linkonce.r*) |
| .rel.data |
| *(.rel.data) |
| *(.rel.data.*) |
| *(.rel.gnu.linkonce.d*) |
| .rela.data |
| *(.rela.data) |
| *(.rela.data.*) |
| *(.rela.gnu.linkonce.d*) |
| .rel.ctors |
| *(.rel.ctors) |
| .rela.ctors |
| *(.rela.ctors) |
| .rel.dtors |
| *(.rel.dtors) |
| .rela.dtors |
| *(.rela.dtors) |
| .rel.got |
| *(.rel.got) |
| .rela.got |
| *(.rela.got) |
| .rel.bss |
| *(.rel.bss) |
| .rela.bss |
| *(.rela.bss) |
| .rel.plt |
| *(.rel.plt) |
| .rela.plt |
| *(.rela.plt) |
| .text 0x00000000 0x266c |
| *(.vectors) |
| .vectors 0x00000000 0x54 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
| 0x00000000 __vectors |
| 0x00000000 __vector_default |
| 0x00000054 __ctors_start = . |
| *(.ctors) |
| 0x00000054 __ctors_end = . |
| 0x00000054 __dtors_start = . |
| *(.dtors) |
| 0x00000054 __dtors_end = . |
| *(.progmem.gcc*) |
| *(.progmem*) |
| .progmem.data 0x00000054 0x600 F8X6.o |
| 0x00000054 f8x6 |
| .progmem.data 0x00000654 0x7 displ_val.o |
| .progmem.data 0x0000065b 0x641 parameter.o |
| 0x0000065b parameter |
| 0x00000a7b p_limits |
| 0x00000b42 p_menu_number |
| 0x000009bb bin_parameter |
| 0x00000b85 p_menus |
| .progmem.data 0x00000c9c 0x3d menu.o |
| .progmem.data 0x00000cd9 0x13 display.o |
| .progmem.data 0x00000cec 0x10 motortest.o |
| 0x00000cfc . = ALIGN (0x2) |
| *(.init0) |
| *(.init1) |
| *(.init2) |
| .init2 0x00000cfc 0xc F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
| *(.init3) |
| *(.init4) |
| .init4 0x00000d08 0x16 F:/WinAvr/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
| 0x00000d08 __do_copy_data |
| .init4 0x00000d1e 0x10 F:/WinAvr/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
| 0x00000d1e __do_clear_bss |
| *(.init5) |
| *(.init6) |
| *(.init7) |
| *(.init8) |
| *(.init9) |
| .init9 0x00000d2e 0x4 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
| *(.text) |
| .text 0x00000d32 0x4 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
| 0x00000d32 __vector_1 |
| 0x00000d32 __vector_12 |
| 0x00000d32 __bad_interrupt |
| 0x00000d32 __vector_6 |
| 0x00000d32 __vector_3 |
| 0x00000d32 __vector_11 |
| 0x00000d32 __vector_17 |
| 0x00000d32 __vector_19 |
| 0x00000d32 __vector_7 |
| 0x00000d32 __vector_5 |
| 0x00000d32 __vector_4 |
| 0x00000d32 __vector_9 |
| 0x00000d32 __vector_2 |
| 0x00000d32 __vector_15 |
| 0x00000d32 __vector_8 |
| 0x00000d32 __vector_14 |
| 0x00000d32 __vector_16 |
| 0x00000d32 __vector_18 |
| 0x00000d32 __vector_20 |
| .text 0x00000d36 0x34 main.o |
| 0x00000d36 main |
| .text 0x00000d6a 0x8e timer.o |
| 0x00000de8 timer_init |
| 0x00000d6a __vector_10 |
| .text 0x00000df8 0x9f8 lcd.o |
| 0x00000e6c lcd_cls |
| 0x0000123a lcd_print_at |
| 0x00000e72 wait_1ms |
| 0x0000124c lcd_plot |
| 0x00000df8 send_byte |
| 0x000012de lcd_line |
| 0x000011c2 lcd_print_atp |
| 0x0000113a new_line |
| 0x000016ce draw_fcircle |
| 0x000011d4 lcd_print |
| 0x00000f68 scroll |
| 0x00000f22 set_adress |
| 0x00000ea6 lcd_init |
| 0x00001464 lcd_frect |
| 0x00000e7c wait_ms |
| 0x000014e8 lcd_rect |
| 0x00000e08 cls |
| 0x0000157c draw_circle |
| 0x00001154 lcd_printp |
| 0x00000fd2 put_char |
| .text 0x000017f0 0xbe rs232.o |
| 0x00001834 RS232_init |
| 0x00001888 RS232_send |
| 0x000017f0 __vector_13 |
| 0x0000183e RS232_get |
| 0x00001890 RS232_text |
| .text 0x000018ae 0x1da base64.o |
| 0x00001978 base64_send |
| 0x0000192a get_message |
| 0x000018ae base64_decode |
| .text 0x00001a88 0x17c displ_val.o |
| 0x00001b0a displ_values |
| 0x00001a88 displ_get_text |
| .text 0x00001c04 0x6de parameter.o |
| 0x00001ed4 edit_parameter2 |
| 0x00001c04 read_parameter |
| 0x0000218e edit_parameter |
| 0x00001cc4 bindec |
| 0x00001d42 show_parameter |
| 0x00001cf8 decimal |
| 0x00001c8e binary |
| 0x00001c58 write_parameter |
| .text 0x000022e2 0x110 menu.o |
| 0x000022e2 menu_set_cursor |
| 0x0000230c menu_choose |
| 0x00002390 main_menu |
| .text 0x000023f2 0x114 display.o |
| 0x00002446 display_data |
| 0x000023f2 read_display |
| .text 0x00002506 0x98 motortest.o |
| 0x00002506 motor_test |
| .text 0x0000259e 0x42 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(itoa.o) |
| 0x0000259e itoa |
| .text 0x000025e0 0x2c F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(utoa.o) |
| 0x000025e0 utoa |
| .text 0x0000260c 0x20 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(strrev.o) |
| 0x0000260c strrev |
| 0x0000262c . = ALIGN (0x2) |
| *(.text.*) |
| .text.libgcc 0x0000262c 0x18 F:/WinAvr/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodqi4.o) |
| 0x0000262c __udivmodqi4 |
| .text.libgcc 0x00002644 0x28 F:/WinAvr/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodhi4.o) |
| 0x00002644 __udivmodhi4 |
| 0x0000266c . = ALIGN (0x2) |
| *(.fini9) |
| *(.fini8) |
| *(.fini7) |
| *(.fini6) |
| *(.fini5) |
| *(.fini4) |
| *(.fini3) |
| *(.fini2) |
| *(.fini1) |
| *(.fini0) |
| 0x0000266c _etext = . |
| .data 0x00800060 0x0 load address 0x0000266c |
| 0x00800060 PROVIDE (__data_start, .) |
| *(.data) |
| *(.gnu.linkonce.d*) |
| 0x00800060 . = ALIGN (0x2) |
| 0x00800060 _edata = . |
| 0x00800060 PROVIDE (__data_end, .) |
| .bss 0x00800060 0x527 |
| 0x00800060 PROVIDE (__bss_start, .) |
| *(.bss) |
| *(COMMON) |
| COMMON 0x00800060 0x50a main.o |
| 0x00800060 display_page_counter |
| 0x00800061 timer |
| 0x00800062 display_buffer |
| 0x00800462 display_buffer_counter |
| 0x00800463 p_buffer |
| 0x008004e3 display_mode |
| 0x008004e4 counter |
| 0x008004e5 rs232_timer |
| 0x008004e6 key |
| 0x008004e7 display_buffer_pointer |
| 0x008004e9 r_buffer |
| 0x00800569 counter2 |
| COMMON 0x0080056a 0x2 lcd.o |
| 0x0080056a lcd_xpos |
| 0x0080056b lcd_ypos |
| COMMON 0x0080056c 0x12 rs232.o |
| 0x0080056c write_index |
| 0x0080056d read_index |
| 0x0080056e rs232_buffer |
| COMMON 0x0080057e 0x1 displ_val.o |
| 0x0080057e displ_page |
| COMMON 0x0080057f 0x8 parameter.o |
| 0x0080057f array |
| 0x00800587 PROVIDE (__bss_end, .) |
| 0x0000266c __data_load_start = LOADADDR (.data) |
| 0x0000266c __data_load_end = (__data_load_start + SIZEOF (.data)) |
| .noinit 0x00800587 0x0 |
| 0x00800587 PROVIDE (__noinit_start, .) |
| *(.noinit*) |
| 0x00800587 PROVIDE (__noinit_end, .) |
| 0x00800587 _end = . |
| 0x00800587 PROVIDE (__heap_start, .) |
| .eeprom 0x00810000 0x0 |
| *(.eeprom*) |
| 0x00810000 __eeprom_end = . |
| .stab 0x00000000 0x36c |
| *(.stab) |
| .stab 0x00000000 0x36c F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
| .stabstr 0x00000000 0x84 |
| *(.stabstr) |
| .stabstr 0x00000000 0x84 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
| .stab.excl |
| *(.stab.excl) |
| .stab.exclstr |
| *(.stab.exclstr) |
| .stab.index |
| *(.stab.index) |
| .stab.indexstr |
| *(.stab.indexstr) |
| .comment |
| *(.comment) |
| .debug |
| *(.debug) |
| .line |
| *(.line) |
| .debug_srcinfo |
| *(.debug_srcinfo) |
| .debug_sfnames |
| *(.debug_sfnames) |
| .debug_aranges 0x00000000 0xc8 |
| *(.debug_aranges) |
| .debug_aranges |
| 0x00000000 0x14 main.o |
| .debug_aranges |
| 0x00000014 0x14 timer.o |
| .debug_aranges |
| 0x00000028 0x14 lcd.o |
| .debug_aranges |
| 0x0000003c 0x14 rs232.o |
| .debug_aranges |
| 0x00000050 0x14 base64.o |
| .debug_aranges |
| 0x00000064 0x14 displ_val.o |
| .debug_aranges |
| 0x00000078 0x14 parameter.o |
| .debug_aranges |
| 0x0000008c 0x14 menu.o |
| .debug_aranges |
| 0x000000a0 0x14 display.o |
| .debug_aranges |
| 0x000000b4 0x14 motortest.o |
| .debug_pubnames |
| 0x00000000 0x902 |
| *(.debug_pubnames) |
| .debug_pubnames |
| 0x00000000 0xe3 main.o |
| .debug_pubnames |
| 0x000000e3 0x6c timer.o |
| .debug_pubnames |
| 0x0000014f 0x1b1 lcd.o |
| .debug_pubnames |
| 0x00000300 0x1b F8X6.o |
| .debug_pubnames |
| 0x0000031b 0x8d rs232.o |
| .debug_pubnames |
| 0x000003a8 0xd1 base64.o |
| .debug_pubnames |
| 0x00000479 0xd2 displ_val.o |
| .debug_pubnames |
| 0x0000054b 0x177 parameter.o |
| .debug_pubnames |
| 0x000006c2 0xd1 menu.o |
| .debug_pubnames |
| 0x00000793 0xc1 display.o |
| .debug_pubnames |
| 0x00000854 0xae motortest.o |
| .debug_info 0x00000000 0x1dfa |
| *(.debug_info) |
| .debug_info 0x00000000 0x1c7 main.o |
| .debug_info 0x000001c7 0xe6 timer.o |
| .debug_info 0x000002ad 0x979 lcd.o |
| .debug_info 0x00000c26 0xdd F8X6.o |
| .debug_info 0x00000d03 0x174 rs232.o |
| .debug_info 0x00000e77 0x28d base64.o |
| .debug_info 0x00001104 0x21e displ_val.o |
| .debug_info 0x00001322 0x542 parameter.o |
| .debug_info 0x00001864 0x222 menu.o |
| .debug_info 0x00001a86 0x1f4 display.o |
| .debug_info 0x00001c7a 0x180 motortest.o |
| *(.gnu.linkonce.wi.*) |
| .debug_abbrev 0x00000000 0x98e |
| *(.debug_abbrev) |
| .debug_abbrev 0x00000000 0x92 main.o |
| .debug_abbrev 0x00000092 0x75 timer.o |
| .debug_abbrev 0x00000107 0x1c7 lcd.o |
| .debug_abbrev 0x000002ce 0x61 F8X6.o |
| .debug_abbrev 0x0000032f 0xde rs232.o |
| .debug_abbrev 0x0000040d 0xe5 base64.o |
| .debug_abbrev 0x000004f2 0xcc displ_val.o |
| .debug_abbrev 0x000005be 0x179 parameter.o |
| .debug_abbrev 0x00000737 0xed menu.o |
| .debug_abbrev 0x00000824 0xda display.o |
| .debug_abbrev 0x000008fe 0x90 motortest.o |
| .debug_line 0x00000000 0x1982 |
| *(.debug_line) |
| .debug_line 0x00000000 0x13b main.o |
| .debug_line 0x0000013b 0xcd timer.o |
| .debug_line 0x00000208 0x71f lcd.o |
| .debug_line 0x00000927 0xbf F8X6.o |
| .debug_line 0x000009e6 0x144 rs232.o |
| .debug_line 0x00000b2a 0x236 base64.o |
| .debug_line 0x00000d60 0x1c3 displ_val.o |
| .debug_line 0x00000f23 0x547 parameter.o |
| .debug_line 0x0000146a 0x1b2 menu.o |
| .debug_line 0x0000161c 0x1cd display.o |
| .debug_line 0x000017e9 0x199 motortest.o |
| .debug_frame |
| *(.debug_frame) |
| .debug_str 0x00000000 0x4dc |
| *(.debug_str) |
| .debug_str 0x00000000 0x124 main.o |
| 0x192 (size before relaxing) |
| .debug_str 0x00000124 0x1f timer.o |
| 0xf5 (size before relaxing) |
| .debug_str 0x00000143 0x166 lcd.o |
| 0x2e2 (size before relaxing) |
| .debug_str 0x000002a9 0x12 F8X6.o |
| 0x101 (size before relaxing) |
| .debug_str 0x000002bb 0x63 rs232.o |
| 0x12c (size before relaxing) |
| .debug_str 0x0000031e 0x4f base64.o |
| 0x1c5 (size before relaxing) |
| .debug_str 0x0000036d 0x39 displ_val.o |
| 0x1a8 (size before relaxing) |
| .debug_str 0x000003a6 0xbf parameter.o |
| 0x271 (size before relaxing) |
| .debug_str 0x00000465 0x34 menu.o |
| 0x19c (size before relaxing) |
| .debug_str 0x00000499 0x2c display.o |
| 0x1a7 (size before relaxing) |
| .debug_str 0x000004c5 0x17 motortest.o |
| 0x17a (size before relaxing) |
| .debug_loc |
| *(.debug_loc) |
| .debug_macinfo |
| *(.debug_macinfo) |
| OUTPUT(main.elf elf32-avr) |
| .debug_ranges 0x0000266c 0xc |
| .debug_ranges 0x0000266c 0xc lcd.o |
| Cross Reference Table |
| Symbol File |
| RS232_get rs232.o |
| base64.o |
| RS232_init rs232.o |
| main.o |
| RS232_send rs232.o |
| base64.o |
| RS232_text rs232.o |
| __bad_interrupt F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
| __bss_end F:/WinAvr/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
| __bss_start F:/WinAvr/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
| __data_end F:/WinAvr/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
| __data_load_start F:/WinAvr/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
| __data_start F:/WinAvr/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
| __do_clear_bss F:/WinAvr/lib/gcc/avr/3.4.5/avr5\libgcc.a(_clear_bss.o) |
| motortest.o |
| display.o |
| menu.o |
| parameter.o |
| displ_val.o |
| base64.o |
| rs232.o |
| F8X6.o |
| lcd.o |
| timer.o |
| main.o |
| __do_copy_data F:/WinAvr/lib/gcc/avr/3.4.5/avr5\libgcc.a(_copy_data.o) |
| motortest.o |
| display.o |
| menu.o |
| parameter.o |
| displ_val.o |
| base64.o |
| rs232.o |
| F8X6.o |
| lcd.o |
| timer.o |
| main.o |
| __heap_end F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
| __init F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
| __stack F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
| main.o |
| __udivmodhi4 F:/WinAvr/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodhi4.o) |
| F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(utoa.o) |
| F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(itoa.o) |
| __udivmodqi4 F:/WinAvr/lib/gcc/avr/3.4.5/avr5\libgcc.a(_udivmodqi4.o) |
| parameter.o |
| __vector_1 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
| __vector_10 timer.o |
| F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
| __vector_11 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
| __vector_12 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
| __vector_13 rs232.o |
| F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
| __vector_14 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
| __vector_15 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
| __vector_16 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
| __vector_17 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
| __vector_18 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
| __vector_19 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
| __vector_2 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
| __vector_20 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
| __vector_3 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
| __vector_4 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
| __vector_5 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
| __vector_6 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
| __vector_7 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
| __vector_8 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
| __vector_9 F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
| __vector_default F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
| __vectors F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
| array parameter.o |
| base64_decode base64.o |
| base64_send base64.o |
| motortest.o |
| display.o |
| parameter.o |
| displ_val.o |
| bin_parameter parameter.o |
| binary parameter.o |
| bindec parameter.o |
| cls lcd.o |
| counter timer.o |
| main.o |
| counter2 timer.o |
| main.o |
| decimal parameter.o |
| displ_get_text displ_val.o |
| displ_page displ_val.o |
| displ_values displ_val.o |
| display_buffer motortest.o |
| display.o |
| menu.o |
| parameter.o |
| displ_val.o |
| base64.o |
| lcd.o |
| main.o |
| display_buffer_counter motortest.o |
| display.o |
| menu.o |
| parameter.o |
| displ_val.o |
| base64.o |
| lcd.o |
| main.o |
| display_buffer_pointer motortest.o |
| display.o |
| menu.o |
| parameter.o |
| displ_val.o |
| base64.o |
| lcd.o |
| main.o |
| display_data display.o |
| menu.o |
| display_mode motortest.o |
| display.o |
| menu.o |
| parameter.o |
| displ_val.o |
| base64.o |
| lcd.o |
| main.o |
| display_page_counter motortest.o |
| display.o |
| menu.o |
| parameter.o |
| displ_val.o |
| base64.o |
| lcd.o |
| main.o |
| draw_circle lcd.o |
| draw_fcircle lcd.o |
| edit_parameter parameter.o |
| menu.o |
| edit_parameter2 parameter.o |
| f8x6 F8X6.o |
| lcd.o |
| get_message base64.o |
| display.o |
| parameter.o |
| displ_val.o |
| itoa F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(itoa.o) |
| displ_val.o |
| key motortest.o |
| display.o |
| menu.o |
| parameter.o |
| displ_val.o |
| timer.o |
| main.o |
| lcd_cls lcd.o |
| motortest.o |
| display.o |
| menu.o |
| parameter.o |
| displ_val.o |
| lcd_frect lcd.o |
| lcd_init lcd.o |
| main.o |
| lcd_line lcd.o |
| lcd_plot lcd.o |
| lcd_print lcd.o |
| parameter.o |
| lcd_print_at lcd.o |
| display.o |
| parameter.o |
| displ_val.o |
| lcd_print_atp lcd.o |
| menu.o |
| parameter.o |
| displ_val.o |
| lcd_printp lcd.o |
| motortest.o |
| display.o |
| menu.o |
| parameter.o |
| lcd_rect lcd.o |
| lcd_xpos lcd.o |
| lcd_ypos lcd.o |
| main main.o |
| F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5/crtm32.o |
| main_menu menu.o |
| main.o |
| menu_choose menu.o |
| parameter.o |
| menu_set_cursor menu.o |
| motor_test motortest.o |
| menu.o |
| new_line lcd.o |
| p_buffer motortest.o |
| display.o |
| menu.o |
| parameter.o |
| displ_val.o |
| base64.o |
| main.o |
| p_limits parameter.o |
| p_menu_number parameter.o |
| p_menus parameter.o |
| parameter parameter.o |
| put_char lcd.o |
| r_buffer motortest.o |
| display.o |
| menu.o |
| parameter.o |
| displ_val.o |
| base64.o |
| main.o |
| read_display display.o |
| read_index rs232.o |
| read_parameter parameter.o |
| rs232_buffer rs232.o |
| rs232_timer rs232.o |
| timer.o |
| main.o |
| scroll lcd.o |
| send_byte lcd.o |
| set_adress lcd.o |
| show_parameter parameter.o |
| strrev F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(strrev.o) |
| F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(utoa.o) |
| F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(itoa.o) |
| timer display.o |
| parameter.o |
| base64.o |
| timer.o |
| main.o |
| timer_init timer.o |
| main.o |
| utoa F:/WinAvr/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(utoa.o) |
| parameter.o |
| wait_1ms lcd.o |
| wait_ms lcd.o |
| write_index rs232.o |
| write_parameter parameter.o |
| /Transportables_Koptertool/tags/V-0.1/main.sym |
|---|
| 0,0 → 1,204 |
| 00000000 W __heap_end |
| 00000000 a __tmp_reg__ |
| 00000000 a __tmp_reg__ |
| 00000000 a __tmp_reg__ |
| 00000000 a __tmp_reg__ |
| 00000000 a __tmp_reg__ |
| 00000000 a __tmp_reg__ |
| 00000000 a __tmp_reg__ |
| 00000000 a __tmp_reg__ |
| 00000000 a __tmp_reg__ |
| 00000000 a __tmp_reg__ |
| 00000000 a __tmp_reg__ |
| 00000000 W __vector_default |
| 00000000 T __vectors |
| 00000001 a __zero_reg__ |
| 00000001 a __zero_reg__ |
| 00000001 a __zero_reg__ |
| 00000001 a __zero_reg__ |
| 00000001 a __zero_reg__ |
| 00000001 a __zero_reg__ |
| 00000001 a __zero_reg__ |
| 00000001 a __zero_reg__ |
| 00000001 a __zero_reg__ |
| 00000001 a __zero_reg__ |
| 00000001 a __zero_reg__ |
| 0000003d a __SP_L__ |
| 0000003d a __SP_L__ |
| 0000003d a __SP_L__ |
| 0000003d a __SP_L__ |
| 0000003d a __SP_L__ |
| 0000003d a __SP_L__ |
| 0000003d a __SP_L__ |
| 0000003d a __SP_L__ |
| 0000003d a __SP_L__ |
| 0000003d a __SP_L__ |
| 0000003d a __SP_L__ |
| 0000003e a __SP_H__ |
| 0000003e a __SP_H__ |
| 0000003e a __SP_H__ |
| 0000003e a __SP_H__ |
| 0000003e a __SP_H__ |
| 0000003e a __SP_H__ |
| 0000003e a __SP_H__ |
| 0000003e a __SP_H__ |
| 0000003e a __SP_H__ |
| 0000003e a __SP_H__ |
| 0000003e a __SP_H__ |
| 0000003f a __SREG__ |
| 0000003f a __SREG__ |
| 0000003f a __SREG__ |
| 0000003f a __SREG__ |
| 0000003f a __SREG__ |
| 0000003f a __SREG__ |
| 0000003f a __SREG__ |
| 0000003f a __SREG__ |
| 0000003f a __SREG__ |
| 0000003f a __SREG__ |
| 0000003f a __SREG__ |
| 00000054 T __ctors_end |
| 00000054 T __ctors_start |
| 00000054 T __dtors_end |
| 00000054 T __dtors_start |
| 00000054 T f8x6 |
| 00000654 t __c.0 |
| 0000065b T parameter |
| 0000085f W __stack |
| 000009bb T bin_parameter |
| 00000a7b T p_limits |
| 00000b42 T p_menu_number |
| 00000b85 T p_menus |
| 00000c09 t __c.11 |
| 00000c0b t __c.12 |
| 00000c0d t __c.13 |
| 00000c0f t __c.0 |
| 00000c20 t __c.1 |
| 00000c26 t __c.2 |
| 00000c2c t __c.3 |
| 00000c32 t __c.4 |
| 00000c38 t __c.5 |
| 00000c3e t __c.6 |
| 00000c46 t __c.7 |
| 00000c69 t __c.8 |
| 00000c70 t __c.9 |
| 00000c88 t __c.10 |
| 00000c9c t __c.4 |
| 00000c9e t __c.5 |
| 00000ca0 t __c.0 |
| 00000cb7 t __c.1 |
| 00000cc3 t __c.2 |
| 00000ccf t __c.3 |
| 00000cd9 t __c.0 |
| 00000ce1 t __c.1 |
| 00000cec t __c.0 |
| 00000cfc W __init |
| 00000d08 T __do_copy_data |
| 00000d14 t .do_copy_data_loop |
| 00000d18 t .do_copy_data_start |
| 00000d1e T __do_clear_bss |
| 00000d26 t .do_clear_bss_loop |
| 00000d28 t .do_clear_bss_start |
| 00000d32 T __bad_interrupt |
| 00000d32 W __vector_1 |
| 00000d32 W __vector_11 |
| 00000d32 W __vector_12 |
| 00000d32 W __vector_14 |
| 00000d32 W __vector_15 |
| 00000d32 W __vector_16 |
| 00000d32 W __vector_17 |
| 00000d32 W __vector_18 |
| 00000d32 W __vector_19 |
| 00000d32 W __vector_2 |
| 00000d32 W __vector_20 |
| 00000d32 W __vector_3 |
| 00000d32 W __vector_4 |
| 00000d32 W __vector_5 |
| 00000d32 W __vector_6 |
| 00000d32 W __vector_7 |
| 00000d32 W __vector_8 |
| 00000d32 W __vector_9 |
| 00000d36 T main |
| 00000d6a T __vector_10 |
| 00000de8 T timer_init |
| 00000df8 T send_byte |
| 00000e08 T cls |
| 00000e6c T lcd_cls |
| 00000e72 T wait_1ms |
| 00000e7c T wait_ms |
| 00000ea6 T lcd_init |
| 00000f22 T set_adress |
| 00000f68 T scroll |
| 00000fd2 T put_char |
| 0000113a T new_line |
| 00001154 T lcd_printp |
| 000011c2 T lcd_print_atp |
| 000011d4 T lcd_print |
| 0000123a T lcd_print_at |
| 0000124c T lcd_plot |
| 000012de T lcd_line |
| 00001464 T lcd_frect |
| 000014e8 T lcd_rect |
| 0000157c T draw_circle |
| 000016ce T draw_fcircle |
| 000017f0 T __vector_13 |
| 00001834 T RS232_init |
| 0000183e T RS232_get |
| 00001888 T RS232_send |
| 00001890 T RS232_text |
| 000018ae T base64_decode |
| 0000192a T get_message |
| 00001978 T base64_send |
| 00001a88 T displ_get_text |
| 00001b0a T displ_values |
| 00001c04 T read_parameter |
| 00001c58 T write_parameter |
| 00001c8e T binary |
| 00001cc4 T bindec |
| 00001cf8 T decimal |
| 00001d42 T show_parameter |
| 00001ed4 T edit_parameter2 |
| 0000218e T edit_parameter |
| 000022e2 T menu_set_cursor |
| 0000230c T menu_choose |
| 00002390 T main_menu |
| 000023f2 T read_display |
| 00002446 T display_data |
| 00002506 T motor_test |
| 0000259e T itoa |
| 000025e0 T utoa |
| 0000260c T strrev |
| 0000262c T __udivmodqi4 |
| 00002632 t __udivmodqi4_loop |
| 0000263a t __udivmodqi4_ep |
| 00002644 T __udivmodhi4 |
| 0000264c t __udivmodhi4_loop |
| 0000265a t __udivmodhi4_ep |
| 0000266c A __data_load_end |
| 0000266c A __data_load_start |
| 0000266c T _etext |
| 00800060 B __bss_start |
| 00800060 D __data_end |
| 00800060 D __data_start |
| 00800060 D _edata |
| 00800060 B display_page_counter |
| 00800061 B timer |
| 00800062 B display_buffer |
| 00800462 B display_buffer_counter |
| 00800463 B p_buffer |
| 008004e3 B display_mode |
| 008004e4 B counter |
| 008004e5 B rs232_timer |
| 008004e6 B key |
| 008004e7 B display_buffer_pointer |
| 008004e9 B r_buffer |
| 00800569 B counter2 |
| 0080056a B lcd_xpos |
| 0080056b B lcd_ypos |
| 0080056c B write_index |
| 0080056d B read_index |
| 0080056e B rs232_buffer |
| 0080057e B displ_page |
| 0080057f B array |
| 00800587 B __bss_end |
| 00800587 ? _end |
| 00810000 ? __eeprom_end |
| /Transportables_Koptertool/tags/V-0.1/makefile |
|---|
| 0,0 → 1,414 |
| # WinAVR Sample makefile written by Eric B. Weddington, Jörg Wunsch, et al. |
| # Released to the Public Domain |
| # Please read the make user manual! |
| # |
| # Additional material for this makefile was submitted by: |
| # Tim Henigan |
| # Peter Fleury |
| # Reiner Patommel |
| # Sander Pool |
| # Frederik Rouleau |
| # Markus Pfaff |
| # |
| # On command line: |
| # |
| # make all = Make software. |
| # |
| # make clean = Clean out built project files. |
| # |
| # make coff = Convert ELF to AVR COFF (for use with AVR Studio 3.x or VMLAB). |
| # |
| # make extcoff = Convert ELF to AVR Extended COFF (for use with AVR Studio |
| # 4.07 or greater). |
| # |
| # make program = Download the hex file to the device, using avrdude. Please |
| # customize the avrdude settings below first! |
| # |
| # make filename.s = Just compile filename.c into the assembler code only |
| # |
| # To rebuild project do "make clean" then "make all". |
| # |
| # MCU name |
| MCU = atmega32 |
| # Output format. (can be srec, ihex, binary) |
| FORMAT = ihex |
| #put the name of the target file here (without extension) |
| # TARGET = main |
| TARGET = MMT |
| #put your C sourcefiles here |
| # SRC = circle.c F8x8b.c F8x8a.c F8x6.c f8x8fv.c f8x6fv.c f6x5fv.c f6x4fv.c fontsoft.c serial.c paul.c bitmap.c demo.c draw.c F16x8a.c F16x8b.c F16x8c.c t6963.c $(TARGET).c |
| SRC = $(TARGET).c timer.c lcd.c F8X6.c rs232.c base64.c displ_val.c parameter.c menu.c display.c motortest.c |
| # Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization. |
| # (Note: 3 is not always the best optimization level. See avr-libc FAQ.) |
| OPT = s |
| # List C source files here. (C dependencies are automatically generated.) |
| # SRC = $(TARGET).c |
| # If there is more than one source file, append them above, or modify and |
| # uncomment the following: |
| #SRC += foo.c bar.c |
| # You can also wrap lines by appending a backslash to the end of the line: |
| #SRC += baz.c \ |
| #xyzzy.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 = |
| # List any extra directories to look for include files here. |
| # Each directory must be seperated by a space. |
| EXTRAINCDIRS = |
| # Optional compiler flags. |
| # -g: generate debugging information (for GDB, or for COFF conversion) |
| # -O*: optimization level |
| # -f...: tuning, see gcc manual and avr-libc documentation |
| # -Wall...: warning level |
| # -Wa,...: tell GCC to pass this to the assembler. |
| # -ahlms: create assembler listing |
| CFLAGS = -g -O$(OPT) \ |
| -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \ |
| -Wall -Wstrict-prototypes \ |
| -Wa,-adhlns=$(<:.c=.lst) \ |
| $(patsubst %,-I%,$(EXTRAINCDIRS)) |
| # Set a "language standard" compiler flag. |
| # Unremark just one line below to set the language standard to use. |
| # gnu99 = C99 + GNU extensions. See GCC manual for more information. |
| #CFLAGS += -std=c89 |
| #CFLAGS += -std=gnu89 |
| #CFLAGS += -std=c99 |
| CFLAGS += -std=gnu99 |
| # Optional assembler flags. |
| # -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 |
| # Optional linker flags. |
| # -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 |
| # Additional libraries |
| # Minimalistic printf version |
| #LDFLAGS += -Wl,-u,vfprintf -lprintf_min |
| # Floating point printf version (requires -lm below) |
| #LDFLAGS += -Wl,-u,vfprintf -lprintf_flt |
| # -lm = math library |
| LDFLAGS += -lm |
| # Programming support using avrdude. Settings and variables. |
| # 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 = avr911 |
| AVRDUDE_PORT = com4 # programmer connected to serial device |
| #AVRDUDE_PORT = lpt1 # programmer connected to parallel port |
| AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex |
| #AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep |
| AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) -b 115200 -F |
| # 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 += -y |
| # Uncomment the following if you do /not/ wish a verification to be |
| # performed after programming the device. |
| #AVRDUDE_FLAGS += -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_FLAGS += -v -v |
| # --------------------------------------------------------------------------- |
| # Define directories, if needed. |
| DIRAVR = F:/Eigene Dateien/Controller/winavr |
| DIRAVRBIN = $(DIRAVR)/bin |
| DIRAVRUTILS = $(DIRAVR)/utils/bin |
| DIRINC = . |
| DIRLIB = $(DIRAVR)/avr/lib |
| # Defines and commands. |
| SHELL = sh |
| CC = avr-gcc |
| OBJCOPY = avr-objcopy |
| OBJDUMP = avr-objdump |
| SIZE = avr-size |
| # Programming support using avrdude. |
| AVRDUDE = avrdude |
| REMOVE = rm -f |
| COPY = cp |
| HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex |
| ELFSIZE = $(SIZE) -A $(TARGET).elf |
| # 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 = $(ASRC:.S=.lst) $(SRC:.c=.lst) |
| # Combine all necessary flags and optional flags. |
| # Add target processor to flags. |
| ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) |
| ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) |
| # Default target. |
| all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex $(TARGET).eep \ |
| $(TARGET).lss $(TARGET).sym sizeafter finished end |
| # 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) |
| finished: |
| @echo $(MSG_ERRORS_NONE) |
| end: |
| @echo $(MSG_END) |
| @echo |
| # Display size of file. |
| sizebefore: |
| @if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi |
| sizeafter: |
| @if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi |
| # Display compiler version information. |
| gccversion : |
| @$(CC) --version |
| # 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 |
| # Programming support using ponyprog. Settings and variables. |
| #PONYPROG= ponyprog2000.exe |
| #PONYPROG= C:\Programme\ponyprog2000\ponyprog2000.exe |
| # Program the device. |
| #program: $(TARGET).hex $(TARGET).eep |
| # echo -e "SELECTDEVICE $(MCU)\nLOAD-PROG $(TARGET).hex\n#LOAD-DATA $(TARGET).eep\nWRITE-PROG" >isp.e2s |
| # $(PONYPROG) isp.e2s |
| program: $(TARGET).hex $(TARGET).eep |
| $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) |
| # 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) $@ |
| avr-nm -n $< > $@ |
| # Link: create ELF output file from object files. |
| .SECONDARY : $(TARGET).elf |
| .PRECIOUS : $(OBJ) |
| %.elf: $(OBJ) |
| @echo |
| @echo $(MSG_LINKING) $@ |
| $(CC) $(ALL_CFLAGS) $(OBJ) --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 $@ |
| # Target: clean project. |
| clean: begin clean_list finished end |
| clean_list : |
| @echo |
| @echo $(MSG_CLEANING) |
| $(REMOVE) $(TARGET).hex |
| $(REMOVE) $(TARGET).eep |
| $(REMOVE) $(TARGET).obj |
| $(REMOVE) $(TARGET).cof |
| $(REMOVE) $(TARGET).elf |
| $(REMOVE) $(TARGET).map |
| $(REMOVE) $(TARGET).obj |
| $(REMOVE) $(TARGET).a90 |
| $(REMOVE) $(TARGET).sym |
| $(REMOVE) $(TARGET).lnk |
| $(REMOVE) $(TARGET).lss |
| $(REMOVE) $(OBJ) |
| $(REMOVE) $(LST) |
| $(REMOVE) $(SRC:.c=.s) |
| $(REMOVE) $(SRC:.c=.d) |
| # Automatically generate C source code dependencies. |
| # (Code originally taken from the GNU make user manual and modified |
| # (See README.txt Credits).) |
| # |
| # Note that this will work with sh (bash) and sed that is shipped with WinAVR |
| # (see the SHELL variable defined above). |
| # This may not work with other shells or other seds. |
| # |
| %.d: %.c |
| set -e; $(CC) -MM $(ALL_CFLAGS) $< \ |
| | sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > $@; \ |
| [ -s $@ ] || rm -f $@ |
| # Remove the '-' if you want to see the dependency files generated. |
| -include $(SRC:.c=.d) |
| # Listing of phony targets. |
| .PHONY : all begin finish end sizebefore sizeafter gccversion coff extcoff \ |
| clean clean_list program |
| /Transportables_Koptertool/tags/V-0.1/menu.c |
|---|
| 0,0 → 1,90 |
| #include <avr/io.h> |
| #include <inttypes.h> |
| #include <stdlib.h> |
| #include <avr/pgmspace.h> |
| #include "main.h" |
| #include "lcd.h" |
| #include "rs232.h" |
| #include "base64.h" |
| #include "parameter.h" |
| #include "menu.h" |
| #include "display.h" |
| #include "motortest.h" |
| #include "debug.h" |
| #include "settings.h" |
| // Subroutine für den Stern (*) bzw. Cursor |
| void menu_set_cursor (uint8_t before, uint8_t line, uint8_t pos) |
| { |
| lcd_print_atp(pos,before,PSTR(" "),0); // Die vorhergehende Position löschen |
| lcd_print_atp(pos,line,PSTR("*"),0); // Den Cursor an der aktuellen Position anzeigen |
| } |
| // Zeigt einen Stern (*) an der x-Position <pos> an, y-Position von min bis max. |
| // Mit der +/- Taste kann ein Menü-Punkt ausgewählt und mit (Enter) bestätigt werden. |
| // Die Zeilennummer des aktuellen Menüpunkts wird zurückgegeben. |
| uint8_t menu_choose (uint8_t min, uint8_t max, uint8_t pos) |
| { |
| uint8_t line, before; |
| line = min; |
| before = min; |
| menu_set_cursor(line,line,pos); |
| do |
| { |
| while (key != key_nokey); |
| while(key == key_nokey); |
| if ((key == key_plus) && (line < max)) |
| line ++; |
| if ((key == key_minus) && (line > min)) |
| line --; |
| menu_set_cursor(before,line,pos); |
| before = line; |
| } |
| while ((key != key_enter) && (key != key_esc)); // Schleife wiederholen, bis (Enter) / Esc gedrückt wurde |
| if (key == key_esc) |
| line = 255; |
| while (key != key_nokey); // Warten, bis Taste wieder losgelassen wurde |
| return line; |
| } |
| void main_menu (void) |
| { |
| lcd_cls(); |
| lcd_printp(PSTR("Hauptmenü(BETA V0.1)\r\n"),0); |
| lcd_printp(PSTR("\r\nDisplay\r\n"),0); |
| lcd_printp(PSTR("Parameter\r\n"),0); |
| lcd_printp(PSTR("Motortest\r\n"),0); |
| lcd_printp(PSTR("Debug Daten\r\n"),0); |
| lcd_printp(PSTR("Settings\r\n"),0); |
| lcd_printp(PSTR("Mod by Mikeljo 05/08"),0); |
| switch(menu_choose(2,6,12)) |
| { |
| case 2: |
| display_data(); // LCD-Modus |
| break; |
| case 3: |
| edit_parameter(); // Parameter (Settings) laden/editieren |
| break; |
| case 4: |
| motor_test(); // primitiver Motor-Test |
| break; |
| case 5: |
| display_debug(); // Debug Daten |
| break; |
| case 6: |
| LCD_settings(); // Einstellungen |
| break; |
| } |
| } |
| /Transportables_Koptertool/tags/V-0.1/menu.h |
|---|
| 0,0 → 1,7 |
| #ifndef menu_h |
| #define menu_h |
| void main_menu (void); |
| uint8_t menu_choose (uint8_t min, uint8_t max, uint8_t pos); |
| #endif |
| /Transportables_Koptertool/tags/V-0.1/mmt.aws |
|---|
| 0,0 → 1,0 |
| <AVRWorkspace><IOSettings><CurrentRegisters/></IOSettings><part name="ATMEGA32"/><Files><File00000 Name="D:\Develop\MMT\lcd.c" Position="269 211 1116 677" LineCol="26 0" State="Maximized"/><File00001 Name="D:\Develop\MMT\settings.c" Position="309 265 1156 731" LineCol="9 0" State="Maximized"/><File00002 Name="D:\Develop\MMT\settings.h" Position="176 63 1185 766" LineCol="4 0" State="Maximized"/><File00003 Name="D:\Develop\MMT\main.h" Position="208 126 1055 592" LineCol="25 0" State="Maximized"/><File00004 Name="D:\Develop\MMT\lcd.h" Position="252 184 1099 650" LineCol="27 0" State="Maximized"/><File00005 Name="D:\Develop\MMT\main.c" Position="274 213 1121 679" LineCol="88 0" State="Maximized"/><File00006 Name="D:\Develop\MMT\menu.c" Position="185 69 1194 772" LineCol="0 0" State="Maximized"/><File00007 Name="D:\Develop\MMT\debug.c" Position="188 71 1197 774" LineCol="184 39" State="Maximized"/><File00008 Name="D:\Develop\MMT\base64.c" Position="214 130 1061 596" LineCol="77 0" State="Maximized"/><File00009 Name="D:\Develop\MMT\display.c" Position="236 159 1083 625" LineCol="32 72" State="Maximized"/><File00010 Name="D:\Develop\MMT\parameter.c" Position="258 188 1105 654" LineCol="277 18" State="Maximized"/><File00011 Name="D:\Develop\MMT\base64.h" Position="302 246 1149 712" LineCol="9 0" State="Maximized"/><File00012 Name="D:\Develop\MMT\debug.h" Position="324 275 1171 741" LineCol="8 10" State="Maximized"/><File00013 Name="D:\Develop\MMT\parameter.h" Position="346 304 1193 770" LineCol="4 43" State="Maximized"/></Files></AVRWorkspace> |
| /Transportables_Koptertool/tags/V-0.1/motortest.c |
|---|
| 0,0 → 1,52 |
| #include <avr/io.h> |
| #include <inttypes.h> |
| #include <stdlib.h> |
| #include <avr/pgmspace.h> |
| #include "main.h" |
| #include "motortest.h" |
| #include "lcd.h" |
| #include "base64.h" |
| void motor_test(void) |
| { |
| lcd_cls(); |
| while (key != 0x00); |
| lcd_printp(PSTR("Taste drücken\r\n"),0); |
| while (key == 0x00); |
| if (key == 0x08) // nur, wenn die Bestätigungstaste gedrückt wird |
| { |
| p_buffer[0] = '#'; // Motoren einschalten |
| p_buffer[1] = 'a'; |
| p_buffer[2] = 't'; |
| p_buffer[3] = 10; |
| p_buffer[4] = 10; |
| p_buffer[5] = 10; |
| p_buffer[6] = 10; |
| p_buffer[7] = 0; |
| p_buffer[8] = 0; |
| base64_send(9); |
| } |
| while (key != 0x00); |
| while (key == 0x00); |
| p_buffer[0] = '#'; // Motoren ausschalten |
| p_buffer[1] = 'a'; |
| p_buffer[2] = 't'; |
| p_buffer[3] = 0; |
| p_buffer[4] = 0; |
| p_buffer[5] = 0; |
| p_buffer[6] = 0; |
| p_buffer[7] = 0; |
| p_buffer[8] = 0; |
| base64_send(9); |
| } |
| /Transportables_Koptertool/tags/V-0.1/motortest.h |
|---|
| 0,0 → 1,6 |
| #ifndef motortest_h |
| #define motortest_h |
| void motor_test(void); |
| #endif |
| /Transportables_Koptertool/tags/V-0.1/parameter.c |
|---|
| 0,0 → 1,556 |
| #include <avr/io.h> |
| #include <inttypes.h> |
| #include <stdlib.h> |
| #include <avr/pgmspace.h> |
| #include "main.h" |
| #include "lcd.h" |
| #include "rs232.h" |
| #include "base64.h" |
| #include "parameter.h" |
| #include "menu.h" |
| uint8_t array[8]; |
| prog_uchar p_menus[12][11]= |
| { |
| "Config ", |
| "Channels ", |
| "Stick ", |
| "Hoehe ", |
| "Gyro ", |
| "Looping ", |
| "Camera ", |
| "Sonstiges ", |
| "User ", |
| "Coupling ", |
| "Config(2) ", |
| "Loopingset" |
| }; |
| // Diese Tabelle ordnet die eingelesenen Parameter den Menü-Seiten zu |
| prog_uchar p_menu_number[67]= |
| { |
| 2,2,2,2,2,2,2,2, // Die ersten 8 Parameter werden auf Menüseite 2 angezeigt (=Kanalzuordnungen) |
| 0,4,4,4,4,4,4,3, |
| 3,3,8,8,8,8,5,5, |
| 8,8,8,0,5,9,9,9, |
| 9,7,7,7,7,7,7,6, |
| 6,6,10,10,6,6,5,5, |
| 5,9,9,9,9,0,7,11, |
| 11,11,11,12,12, 12, |
| 12,12,12,12,12 |
| }; |
| prog_uchar p_limits[199]= // Limits für die Parameter |
| { |
| 1,8,2, // 2:Nick (3) |
| 1,8,2, // 2:Roll (4) |
| 1,8,2, // 2:Gas (2) |
| 1,8,2, // 2:Gier (1) |
| 1,8,2, // 2:Poti1 (6) |
| 1,8,2, // 2:Poti2 (6) |
| 1,8,2, // 2:Poti3 (7) |
| 1,8,2, // 2:Poti4 (5) |
| 0,0,0, // 1:Config |
| 0,255,4, // 4:Höhe MinGas (30) |
| 0,255,4, // 4:Luftdruck_D (30) |
| 0,255,4, // 4:MaxHöhe (Setpoint?) (Poti4) |
| 0,255,4, // 4:Höhe_P (10) |
| 0,50,4, // 4:Höhe Verstärkung (3) |
| 0,255,4, // 4:Höhe Z-acc (30) |
| 0,6,3, // 3:Nick/Roll P (3) |
| 0,64,3, // 3:Nick/Roll D (4) |
| 0,20,3, // 3:Gier_P (6) |
| 0,32,8, // 8:Min.Gas (15) |
| 33,250,8, // 8:Max.Gas (250) |
| 0,50,8, // 5:Gyro-Acc Faktor (30) |
| 0,255,8, // 8:Kompass-Wirkung (128) |
| 0,0,5, // 5:Gyro-P (80) |
| 0,0,5, // 5:Gyro-I (120) |
| 0,250,8, // 8:Unterspannung (94) |
| 0,250,8, // 8:Not-Gas Zeit (20) |
| 0,250,8, // 8:Not-Gas (35) |
| 0,1,0, // Ufo-Ausrichtung (X +) |
| 0,255,5, // I-Faktor (32) |
| 0,255,9, // 9:User1 (80) |
| 0,255,9, // 9:User2 (0) |
| 0,255,9, // 9:User3 |
| 0,255,9, // 9:User4 |
| 0,255,7, // 7:Servo Nick Control (100) |
| 0,250,7, // 7:Servo Nick Compensation (40) |
| 0,250,7, // 7:Servo Nick min (50) |
| 0,250,7, // 7:Servo Nick max (150) |
| 0,25,7, // 7:Servo Nick refrsh (5) |
| 0,255,6, // 6:Loop Gas Limit (50) |
| 0,250,6, // 6:Loop Ansprechschwelle (90) |
| 0,250,6, // 6:Loop Hysterese (50) |
| 0,255,10, // 10:Achskopplung (90) |
| 0,255,10, // 10:Achsgegenkopplung (5) |
| 0,250,6, // 6:Turnover Nick (100) |
| 0,250,6, // 6:Turnover Roll (100) |
| 0,250,5, // 5: Gyro-Abgleich (Comp.) (32) |
| 0,250,5, // 5: Drift (4) |
| 0,255,5, // 5: Dynamic stability (75) |
| 0,255,9, // 9:User5 |
| 0,255,9, // 9:User6 |
| 0,255,9, // 9:User7 |
| 0,255,9, // 9:User8 (0) |
| 0,0,1, // 6:Loop Config (0) |
| 0,1,7 // 7:Servo Nick Compensation Invert (0) |
| }; |
| prog_char bin_parameter[12][16] = // Die binär kodierten Parametern werden getrennt behandelt. |
| { |
| "Loop up ", |
| "Loop down ", |
| "Loop left ", |
| "Loop right ", |
| "Höhenregler ", // 8 |
| "Höhenschalter ", |
| "Headhold ", |
| "Kompass ", |
| "KompassFix ", |
| "GPS ", |
| "Achsenkopplung ", |
| "Drehrate " |
| }; |
| prog_char parameter[54][16]= |
| { |
| "Nick ", // 0 (3) |
| "Roll ", // 1 (4) |
| "Gas ", // (2) |
| "Gier ", // (1) |
| "Poti1 ", // (6) |
| "Poti2 ", // (6) |
| "Poti3 ", // (7) |
| "Poti4 ", // 7 (5) |
| "Config ", // 8 |
| "Hoehe_MinGas ", // 9 (30) |
| "Luftdruck_D ", // 10 Wert : 0-250 (30) |
| "MaxHoehe ", // 11 Wert : 0-250 251 -> Poti1 (Poti4) |
| "Hoehe_P ", // 12 Wert : 0-32 (10) |
| "Hoehe_Verstaerk", // 13 Wert : 0-50 |
| "Hoehe_ACC_Wirk.", // 14 Wert : 0-250 (30) |
| "Stick_P ", // 15 Wert : 1-6 |
| "Stick_D ", // 16 Wert : 0-64 |
| "Gier_P ", // 17 Wert : 1-20 POTI(?) |
| "Gas_Min ", // 17 Wert : 0-32 |
| "Gas_Max ", // 18 Wert : 33-250 |
| "GyroAccFaktor ", // 19 Wert : 1-64 |
| "KompassWirkung ", // 20 Wert : 0-250 |
| "Gyro_P ", // 21 Wert : 0-250 |
| "Gyro_I ", // 22 Wert : 0-250 |
| "Unterspannung ", // 23 Wert : 0-250 |
| "NotGas ", // 24 Wert : 0-250 // Gaswert bei Empangsverlust |
| "NotGasZeit ", // 25 Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
| "UfoAusrichtung ", // 26 X oder + Formation |
| "I_Faktor ", // 27 = 32; |
| "UserParam1 ", // 28 = 32 * 4; //zur freien Verwendung |
| "UserParam2 ", // 29 zur freien Verwendung |
| "UserParam3 ", // 30 zur freien Verwendung |
| "UserParam4 ", // 31 zur freien Verwendung |
| "ServoNickCtrl ", // 32 Wert : 0-250 // Stellung des Servos |
| "ServoNickComp ", // 33 Wert : 0-250 // Einfluss Gyro/Servo |
| "ServoNickMin ", // 34 Wert : 0-250 // Anschlag |
| "ServoNickMax ", // 35 Wert : 0-250 // Anschlag |
| "ServoNickRefrsh", // 36 |
| "LoopGasLimit ", // 37 |
| "LoopThreshold ", // 38 Wert: 0-250 Schwelle für Stickausschlag |
| "LoopHysterese ", // 39 |
| "AchsKopplung ", // 40 |
| "AchsGegenKoppl.", // 41 |
| "WinklUmschlNick", // 42 |
| "WinklUmschlRoll", // 43 |
| "GyroAccAbgleich", // 44 1/k |
| "Driftkomp ", // 45 |
| "DynamicStabilit", // 47 |
| "UserParam5 ", // 48 zur freien Verwendung |
| "UserParam6 ", // 49 zur freien Verwendung |
| "UserParam7 ", // 50 zur freien Verwendung |
| "UserParam8 ", // 51 zur freien Verwendung |
| "LoopConfig ", // 52 Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
| "ServoNickCompIn" // 53 Wert : 0-250 // Richtung Einfluss Gyro/Servo |
| // "Name " // 54 |
| }; |
| // Parameter lesen, editieren und zurückschreiben |
| uint8_t read_parameter (uint8_t number) // Number = Parameter-Set# |
| { |
| uint8_t timeout; |
| timeout = 0; |
| p_buffer[0] = '#'; // Parameter anfordern |
| p_buffer[1] = 'a'; |
| p_buffer[2] = 'q'; |
| p_buffer[3] = number; |
| p_buffer[4] = 0; |
| p_buffer[5] = 0; |
| base64_send(6); |
| do // warten, bis die Parameter gesendet werden |
| { |
| if (get_message() == 1) // Fehler bei der Übertragung? |
| timeout = 30; // Timeout sofort auf Endwert setzen |
| timeout ++; |
| } |
| while (((r_buffer[1] < 'L') || (r_buffer[1] > 'P')) && (timeout < 30)); // warten, bis Parameter empfangen wurden oder ein Timeout auftrat |
| if (timeout >= 30) // Wenn ein Timeout (=Fehler) auftrat, eine 1 zurückgeben, ansonsten 0 |
| return 1; |
| else |
| return 0; |
| } |
| void write_parameter(uint8_t number) // Schreibe Parameter-Satz |
| { |
| uint8_t i; |
| if (number <= 5) |
| { |
| for (i=0;i<71;i++) // Den gesamten Parameter-Puffer um 3 Bytes nach hinten verschieben |
| p_buffer[(70-i)+3] = p_buffer[70-i]; |
| p_buffer[0] = '#'; // Befehl zum Schreiben der Parameter |
| p_buffer[1] = 'a'; |
| p_buffer[2] = number + 'k'; // Nummer des Parameters |
| p_buffer[74] = 0; |
| base64_send(75); // Parameter in base64 kodieren und senden, 75 Bytes |
| } |
| } |
| void binary (uint8_t data, uint8_t *feld) // Wandelt eine 8-Bit Zahl in eine Binärzahl um (Array mit 8 Elementen) |
| { // Wird für die Flags (Loop + Grundkonfiguration) benötigt |
| uint8_t i; |
| i=0; |
| for (i=0;i<8;i++) |
| { |
| if ((1<<i) & data) |
| feld[i] = 1; |
| else |
| feld[i] = 0; |
| } |
| } |
| uint8_t bindec (uint8_t *feld) // wandelt eine Binärzahl (im Array) in eine 8-Bit Zahl |
| { // Wird für die Flags (Loop + Grundkonfiguration) benötigt |
| uint8_t i; |
| uint8_t result; |
| result = 0; |
| for (i=0;i<8;i++) |
| { |
| if (feld[i] == 1) |
| result += 1<<i; |
| } |
| return result; |
| } |
| void decimal (uint8_t data, uint8_t *text) // wandelt Wert in rechtsbündigen Text um |
| { // (schneller/kleiner als printf()) |
| text[0] = data/100; |
| data -= (text[0] * 100); |
| text[1] = data/10; |
| data -= (text[1] *10); |
| text[2] = data + 0x30; |
| text[0] += 0x30; |
| text[1] += 0x30; |
| if (text[0] == 0x30) |
| { |
| text[0] = 0x20; |
| if (text[1] == 0x30) |
| text[1] = 0x20; |
| } |
| text[3] = 0x00; |
| } |
| uint8_t show_parameter (uint8_t number) // Zeigt eine Parameter-Seite an und gibt die ausgewählte Zeile zurück |
| { |
| uint8_t i; |
| uint8_t line; |
| uint8_t text[25]; |
| uint8_t bin[8]; |
| line = 0; |
| if (number > 1) |
| { |
| for (i = 0; i<66; i++) |
| { |
| if (pgm_read_byte(p_limits+i*3+2) == number) |
| { |
| array[line] = i; |
| decimal(p_buffer[i],text); |
| lcd_print_at(0,line,text,0); |
| lcd_print_atp(5,line,parameter[i],0); |
| if (line <= 7) |
| line++; |
| } |
| } |
| } |
| else |
| { // Sonderfälle: Binäre Eingabe |
| if (number == 1) |
| { |
| binary(p_buffer[52],bin); // Loop-Config |
| text[1] = 0x00; |
| for (i=0;i<4;i++) |
| { |
| text[0] = bin[i] + 0x30; |
| lcd_print_at(0,i,text,0); |
| lcd_print_atp(5,i,bin_parameter[i],0); |
| } |
| } |
| if (number == 0) |
| { |
| binary(p_buffer[8],bin); // Config |
| text[1] = 0x00; |
| for (i=0;i<8;i++) |
| { |
| text[0] = bin[i] + 0x30; |
| lcd_print_at(0,i,text,0); |
| lcd_print_atp(5,i,bin_parameter[i+4],0); |
| } |
| } |
| } |
| return line; |
| } |
| void edit_parameter2 (uint8_t page, uint8_t lines) // Ändern der Parameter einer Seite |
| { |
| uint8_t line; |
| uint8_t par; |
| uint8_t min; |
| uint8_t max; |
| uint8_t text[10]; |
| uint8_t bin[8]; |
| if (page > 1) // "normale" Parameter-Seiten |
| { |
| line = menu_choose(0,lines-1,4); |
| if (line != 255) // Wenn line == 255, wurde Escape gedrückt |
| { |
| par = p_buffer[array[line]]; |
| min = pgm_read_byte(p_limits + par * 3); |
| max = pgm_read_byte(p_limits + par * 3 + 1); |
| lcd_print_atp(4,line,PSTR("-"),0); |
| while (key != key_nokey); |
| do |
| { |
| if (key == key_minus) |
| { |
| //if (par > min) // Überprüfung der Parameter auf Bereichsüberschreitung derzeit deaktiviert |
| par --; |
| } |
| if (key == key_plus) |
| { |
| //if (par < max) |
| par ++; |
| } |
| decimal(par,text); |
| lcd_print_at(0,line,text,0); |
| timer = 20; |
| while (timer > 0); |
| } |
| while ((key != 0x04) && (key != 0x08)); |
| if (key == 0x08) |
| p_buffer[array[line]] = par; |
| } |
| } |
| if (page == 1) // Spezialfall: Loop-Config (einzelne Bits setzen / löschen) |
| { |
| binary(p_buffer[52],bin); |
| text[1] = 0x00; |
| line = menu_choose(0,3,4); |
| if (line != 255) // Wenn line == 255, wurde Escape gedrückt |
| { |
| par = bin[line]; |
| lcd_print_atp(4,line,PSTR("-"),0); |
| do |
| { |
| if (key == key_minus) |
| { |
| par = 0x00; |
| } |
| if (key == key_plus) |
| { |
| par = 0x01; |
| } |
| text[0] = par+0x30; |
| lcd_print_at(0,line,text,0); |
| timer = 20; |
| while (timer > 0); |
| } |
| while ((key != key_enter) && (key != key_esc)); |
| if (key == key_enter) |
| { |
| bin[line] = par; |
| p_buffer[52] = bindec(bin); |
| } |
| lcd_cls(); |
| decimal(p_buffer[52],text); |
| lcd_print(text,0); |
| timer = 200; |
| while(timer > 0); |
| } |
| } |
| if (page == 0) // Spezialfall: Allgemeine Konfiguration (einzelne Bits setzen/löschen) |
| { |
| binary(p_buffer[8],bin); |
| text[1] = 0x00; |
| line = menu_choose(0,7,4); |
| if (line != 255) // Wenn line == 255, wurde Escape gedrückt |
| { |
| par = bin[line]; |
| lcd_print_atp(4,line,PSTR("-"),0); |
| do |
| { |
| if (key == key_minus) |
| { |
| par = 0x00; |
| } |
| if (key == key_plus) |
| { |
| par = 0x01; |
| } |
| text[0] = par+0x30; |
| lcd_print_at(0,line,text,0); |
| timer = 20; |
| while (timer > 0); |
| } |
| while ((key != key_enter) && (key != key_esc)); |
| if (key == key_enter) |
| { |
| bin[line] = par; |
| p_buffer[8] = bindec(bin); |
| } |
| lcd_cls(); |
| decimal(p_buffer[8],text); |
| lcd_print(text,0); |
| timer = 200; |
| while(timer > 0); |
| } |
| } |
| } |
| void edit_parameter (void) // Blättert die Parameter seitenweise durch, Einsprung vom Hauptmenü |
| { |
| uint8_t page; // 12 Pages |
| uint8_t text[15]; |
| uint8_t lines; |
| uint8_t parameter; |
| lcd_cls(); |
| lcd_printp(PSTR("Lade Parameter\r\n"),0); |
| lcd_printp(PSTR(" 1:\r\n"),0); |
| lcd_printp(PSTR(" 2:\r\n"),0); |
| lcd_printp(PSTR(" 3:\r\n"),0); |
| lcd_printp(PSTR(" 4:\r\n"),0); |
| lcd_printp(PSTR(" 5:\r\n"),0); |
| parameter = menu_choose(1,5,0); |
| page = 2; |
| if (read_parameter(parameter) == 1) |
| { |
| lcd_print_atp(0,6,PSTR("Timeout"),0); |
| } |
| else |
| { |
| do |
| { |
| lcd_cls(); |
| utoa(page,text,10); |
| lcd_print(text,0); |
| timer = 50; |
| while (timer > 0); |
| lcd_cls(); |
| lines = show_parameter(page); |
| while (key == key_nokey); |
| if (key == key_plus) |
| page++; |
| if (key == key_minus) |
| page--; |
| if (page == 255) |
| page = 12; |
| if (page > 12) |
| page = 0; |
| if (key == key_enter) |
| edit_parameter2(page,lines); |
| } |
| while (key != key_esc); |
| lcd_cls(); |
| lcd_printp(PSTR("Parameter speichern?\r\n ja\r\n nein"),0); |
| lines = menu_choose(1,2,0); |
| if (lines == 1 ) |
| { |
| lcd_printp(PSTR("\r\n--->"),0); |
| write_parameter(5); // Sicherheitshalber wird derzeit ausschließlich auf Parametersatz 5 gesichert. |
| lcd_printp(PSTR("\r\nParameter gespeichert"),0); |
| } |
| else |
| { |
| lcd_printp(PSTR("\r\nNicht gespeichert"),0); |
| } |
| } |
| timer = 100; |
| while(timer > 0); |
| } |
| /Transportables_Koptertool/tags/V-0.1/parameter.h |
|---|
| 0,0 → 1,7 |
| #ifndef parameter_h |
| #define parameter_h |
| void edit_parameter (void); |
| void decimal (uint8_t data, uint8_t *text); |
| #endif |
| /Transportables_Koptertool/tags/V-0.1/rs232.c |
|---|
| 0,0 → 1,58 |
| #include <avr/io.h> |
| #include <inttypes.h> |
| #include <stdlib.h> |
| #include <avr/interrupt.h> |
| #include "main.h" |
| #include "rs232.h" |
| volatile uint8_t read_index, write_index; |
| volatile uint8_t rs232_buffer[16]; |
| ISR(USART_RXC_vect) |
| { |
| rs232_buffer[write_index++] = UDR; |
| write_index &= 15; |
| } |
| void RS232_init (void) |
| { |
| UCSRB = (1<<RXEN)|(1<<TXEN)|(1<<RXCIE); |
| // UBRRL = 7; // 57600 Baud @ 7,372800 MHz |
| UBRR = 7; // 57600 Baud @ 7,372800 MHz |
| } |
| uint8_t RS232_get (void) |
| { |
| uint8_t c; |
| rs232_timer = 10; |
| while ((read_index == write_index) && (rs232_timer > 0)); |
| if (rs232_timer != 0) |
| { |
| c = rs232_buffer[read_index++]; |
| read_index &= 15; |
| } |
| else |
| { |
| c=0; |
| } |
| return c; |
| } |
| void RS232_send (uint8_t data) |
| { |
| // while ((UCSRA & (1<<UDRE)) == 0); |
| while ((USR & (1<<UDRE)) == 0); |
| UDR = data; |
| } |
| void RS232_text (uint8_t *text) |
| { |
| while (*text) |
| { |
| RS232_send(*text); |
| text++; |
| } |
| } |
| /Transportables_Koptertool/tags/V-0.1/rs232.h |
|---|
| 0,0 → 1,46 |
| #ifndef rs232_h |
| #define rs232_h |
| void RS232_init (void); |
| uint8_t RS232_get (void); |
| void RS232_send (uint8_t data); |
| void RS232_text (uint8_t *text); |
| #endif |
| //Anpassen der seriellen Schnittstellen Register wenn ein ATMega128 benutzt wird |
| #if defined (__AVR_ATmega128__) |
| #define USR UCSR0A |
| #define UCR UCSR0B |
| #define UDR UDR0 |
| #define UBRR UBRR0L |
| #define EICR EICRB |
| #endif |
| #if defined (__AVR_ATmega32__) |
| #define USR UCSRA |
| #define UCR UCSRB |
| #define UBRR UBRRL |
| #define EICR EICRB |
| #define INT_VEC_RX SIG_UART_RECV |
| #define INT_VEC_TX SIG_UART_TRANS |
| #endif |
| #if defined (__AVR_ATmega644__) |
| #define USR UCSR0A |
| #define UCR UCSR0B |
| #define UDR UDR0 |
| #define UBRR UBRR0L |
| #define EICR EICR0B |
| #define TXEN TXEN0 |
| #define RXEN RXEN0 |
| #define RXCIE RXCIE0 |
| #define TXCIE TXCIE0 |
| #define U2X U2X0 |
| #define UCSRB UCSR0B |
| #define UDRE UDRE0 |
| #define INT_VEC_RX SIG_USART_RECV |
| #define INT_VEC_TX SIG_USART_TRANS |
| #define USART_RXC_vect SIG_USART_RECV |
| #endif |
| /Transportables_Koptertool/tags/V-0.1/settings.c |
|---|
| 0,0 → 1,70 |
| #include <avr/io.h> |
| #include <avr/pgmspace.h> |
| #include <avr/interrupt.h> |
| #include "main.h" |
| #include "menu.h" |
| #include "lcd.h" |
| #include "settings.h" |
| void toggle_display(void) |
| { |
| cli(); |
| if (LCD_ORIENTATION == 0) |
| LCD_ORIENTATION = 4; |
| else LCD_ORIENTATION = 0; |
| eeprom_write_byte(&EEPromArray[EEPROM_ADR_ORIENTATION], LCD_ORIENTATION); |
| lcd_init(); |
| sei(); |
| } |
| void LCD_settings(void) |
| { |
| // uint8_t parameter; |
| char loop = 1; |
| while(loop) |
| { |
| lcd_cls(); |
| lcd_printp(PSTR("Einstellungen:\r\n"),0); |
| lcd_printp(PSTR("\r\n"),0); |
| lcd_printp(PSTR("Orientierung\r\n"),0); |
| lcd_printp(PSTR("Linie\r\n"),0); |
| lcd_printp(PSTR("Rechteck\r\n"),0); |
| // lcd_printp(PSTR("\r\n"),0); |
| lcd_printp(PSTR("Exit\r\n"),0); |
| // parameter = menu_choose(1,5,0); |
| switch(menu_choose(2,5,15)) |
| { |
| case 2: |
| toggle_display(); // LCD-Modus |
| break; |
| case 3: |
| lcd_cls(); |
| lcd_line(10,20,100,50, 1); |
| while ((key != key_enter) && (key != key_esc)); |
| break; |
| case 4: |
| lcd_cls(); |
| lcd_rect (10,20,100,40, 1); |
| while ((key != key_enter) && (key != key_esc)); |
| break; |
| case 5: |
| loop = 0; |
| break; |
| default: |
| loop = 0; |
| break; |
| } |
| } |
| } |
| /Transportables_Koptertool/tags/V-0.1/settings.h |
|---|
| 0,0 → 1,9 |
| void LCD_settings(void); |
| #if defined (__AVR_ATmega32__) |
| #endif |
| #if defined (__AVR_ATmega644__) |
| #endif |
| /Transportables_Koptertool/tags/V-0.1/timer.c |
|---|
| 0,0 → 1,37 |
| #include <avr/io.h> |
| #include <avr/interrupt.h> |
| #include "main.h" |
| #include "timer.h" |
| volatile uint8_t timer; |
| volatile uint8_t counter, counter2; |
| volatile uint8_t key; |
| volatile uint8_t rs232_timer; |
| ISR(SIG_OUTPUT_COMPARE0) // Timer-Interrupt (100 Hz) |
| { |
| if (counter > 0) |
| counter --; |
| else |
| { |
| counter = 10; |
| key = (~PINA >> 4) & 0x0F; |
| counter2 ++; |
| } |
| if (timer > 0) |
| timer --; |
| if (rs232_timer > 0) |
| rs232_timer --; |
| } |
| void timer_init (void) |
| { |
| TCCR0 = (1<<CS02)|(1<<CS00)|(1<<WGM01); // Prescaler 1024 |
| OCR0 = 72; // Interrupt 100Hz für 7,372800 MHz-Quarz |
| TIMSK |= (1<<OCIE0); // Interrupt freigeben für OCR |
| } |
| /Transportables_Koptertool/tags/V-0.1/timer.h |
|---|
| 0,0 → 1,26 |
| #ifndef timer_h |
| #define timer_h |
| volatile uint8_t timer; |
| volatile uint8_t counter, counter2; |
| volatile uint8_t key; |
| volatile uint8_t rs232_timer; |
| void timer_init (void); |
| #endif |
| #if defined (__AVR_ATmega32__) |
| #endif |
| #if defined (__AVR_ATmega644__) |
| #define TCCR0 TCCR0A |
| #define OCR0 OCR0A |
| #define TIMSK TIMSK0 |
| #define OCIE0 OCIE0A |
| #define INT_VEC_TX SIG_USART_TRANS |
| #define SIG_OUTPUT_COMPARE0 SIG_OUTPUT_COMPARE0A |
| #endif |
| /Transportables_Koptertool/tags/V-0.1.1/F8X6.c |
|---|
| 0,0 → 1,290 |
| /******************************************************************************* |
| ; |
| ; taskit Rechnertechnik Berlin GmbH |
| ; Kaiser-Friedrich-Straáe 51 |
| ; 1000 Berlin 12 |
| ; Tel. 030-3245836 |
| ; FAX 030-3232649 |
| ; |
| ; |
| ; Projekt : |
| ; |
| ; Datei : |
| ; |
| ; Funktion : |
| ; |
| ; Version : |
| ; |
| ; Letzte Änderung : 06/28/95 - 15:04:59 |
| ; |
| ; Info : |
| ; |
| *******************************************************************************/ |
| #include <avr/pgmspace.h> |
| //Die Bytes gehören zu jeweils einer Spalte des Buchstabens |
| //D7 ist dabei das unterste Bit. Es handelt sich um einen DOS-Font ! |
| //DOS-Zeichensatz |
| prog_uchar f8x6[ 256 ][ 6 ] = |
| { |
| { 0x00,0x00,0x00,0x00,0x00,0x00 }, // ASCII - 0 |
| { 0x3E,0x5B,0x4F,0x5B,0x3E,0x00 }, // ASCII - 1 |
| { 0x3E,0x6B,0x4F,0x6B,0x3E,0x00 }, // ASCII - 2 |
| { 0x1C,0x3E,0x7C,0x3E,0x1C,0x00 }, // ASCII - 3 |
| { 0x18,0x3C,0x7E,0x3C,0x18,0x00 }, // ASCII - 4 |
| { 0x1C,0x57,0x7D,0x57,0x1C,0x00 }, // ASCII - 5 |
| { 0x1C,0x5E,0x7F,0x5E,0x1C,0x00 }, // ASCII - 6 |
| { 0x00,0x18,0x3C,0x18,0x00,0x00 }, // ASCII - 7 |
| { 0xFF,0xE7,0xC3,0xE7,0xFF,0x00 }, // ASCII - 8 |
| { 0x00,0x18,0x24,0x18,0x00,0x00 }, // ASCII - 9 |
| { 0xFF,0xE7,0xDB,0xE7,0xFF,0x00 }, // ASCII - 10 |
| { 0x30,0x48,0x3A,0x06,0x0E,0x00 }, // ASCII - 11 |
| { 0x26,0x29,0x79,0x29,0x26,0x00 }, // ASCII - 12 |
| { 0x40,0x7F,0x05,0x05,0x07,0x00 }, // ASCII - 13 |
| { 0x40,0x7F,0x05,0x25,0x3F,0x00 }, // ASCII - 14 |
| { 0x5A,0x3C,0xE7,0x3C,0x5A,0x00 }, // ASCII - 15 |
| { 0x7F,0x3E,0x1C,0x1C,0x08,0x00 }, // ASCII - 16 |
| { 0x08,0x1C,0x1C,0x3E,0x7F,0x00 }, // ASCII - 17 |
| { 0x14,0x22,0x7F,0x22,0x14,0x00 }, // ASCII - 18 |
| { 0x5F,0x5F,0x00,0x5F,0x5F,0x00 }, // ASCII - 19 |
| { 0x06,0x09,0x7F,0x01,0x7F,0x00 }, // ASCII - 20 |
| { 0x00,0x66,0x89,0x95,0x6A,0x00 }, // ASCII - 21 |
| { 0x60,0x60,0x60,0x60,0x60,0x60 }, // ASCII - 22 |
| { 0x94,0xA2,0xFF,0xA2,0x94,0x00 }, // ASCII - 23 |
| { 0x08,0x04,0x7E,0x04,0x08,0x00 }, // ASCII - 24 |
| { 0x10,0x20,0x7E,0x20,0x10,0x00 }, // ASCII - 25 |
| { 0x08,0x08,0x2A,0x1C,0x08,0x00 }, // ASCII - 26 |
| { 0x08,0x1C,0x2A,0x08,0x08,0x00 }, // ASCII - 27 |
| { 0x1E,0x10,0x10,0x10,0x10,0x00 }, // ASCII - 28 |
| { 0x0C,0x1E,0x0C,0x1E,0x0C,0x00 }, // ASCII - 29 |
| { 0x30,0x38,0x3E,0x38,0x30,0x00 }, // ASCII - 30 |
| { 0x06,0x0E,0x3E,0x0E,0x06,0x00 }, // ASCII - 31 |
| { 0x00,0x00,0x00,0x00,0x00,0x00 }, // ASCII - 32 |
| { 0x00,0x00,0x5F,0x00,0x00,0x00 }, // ASCII - 33 |
| { 0x00,0x07,0x00,0x07,0x00,0x00 }, // ASCII - 34 |
| { 0x14,0x7F,0x14,0x7F,0x14,0x00 }, // ASCII - 35 |
| { 0x24,0x2A,0x7F,0x2A,0x12,0x00 }, // ASCII - 36 |
| { 0x23,0x13,0x08,0x64,0x62,0x00 }, // ASCII - 37 |
| { 0x36,0x49,0x56,0x20,0x50,0x00 }, // ASCII - 38 |
| { 0x00,0x08,0x07,0x03,0x00,0x00 }, // ASCII - 39 |
| { 0x00,0x1C,0x22,0x41,0x00,0x00 }, // ASCII - 40 |
| { 0x00,0x41,0x22,0x1C,0x00,0x00 }, // ASCII - 41 |
| { 0x2A,0x1C,0x7F,0x1C,0x2A,0x00 }, // ASCII - 42 |
| { 0x08,0x08,0x3E,0x08,0x08,0x00 }, // ASCII - 43 |
| { 0x00,0x80,0x70,0x30,0x00,0x00 }, // ASCII - 44 |
| { 0x08,0x08,0x08,0x08,0x08,0x00 }, // ASCII - 45 |
| { 0x00,0x00,0x60,0x60,0x00,0x00 }, // ASCII - 46 |
| { 0x20,0x10,0x08,0x04,0x02,0x00 }, // ASCII - 47 |
| { 0x3E,0x51,0x49,0x45,0x3E,0x00 }, // ASCII - 48 |
| { 0x00,0x42,0x7F,0x40,0x00,0x00 }, // ASCII - 49 |
| { 0x72,0x49,0x49,0x49,0x46,0x00 }, // ASCII - 50 |
| { 0x21,0x41,0x49,0x4D,0x33,0x00 }, // ASCII - 51 |
| { 0x18,0x14,0x12,0x7F,0x10,0x00 }, // ASCII - 52 |
| { 0x27,0x45,0x45,0x45,0x39,0x00 }, // ASCII - 53 |
| { 0x3C,0x4A,0x49,0x49,0x31,0x00 }, // ASCII - 54 |
| { 0x41,0x21,0x11,0x09,0x07,0x00 }, // ASCII - 55 |
| { 0x36,0x49,0x49,0x49,0x36,0x00 }, // ASCII - 56 |
| { 0x46,0x49,0x49,0x29,0x1E,0x00 }, // ASCII - 57 |
| { 0x00,0x00,0x14,0x00,0x00,0x00 }, // ASCII - 58 |
| { 0x00,0x40,0x34,0x00,0x00,0x00 }, // ASCII - 59 |
| { 0x00,0x08,0x14,0x22,0x41,0x00 }, // ASCII - 60 |
| { 0x14,0x14,0x14,0x14,0x14,0x00 }, // ASCII - 61 |
| { 0x00,0x41,0x22,0x14,0x08,0x00 }, // ASCII - 62 |
| { 0x02,0x01,0x59,0x09,0x06,0x00 }, // ASCII - 63 |
| { 0x3E,0x41,0x5D,0x59,0x4E,0x00 }, // ASCII - 64 |
| { 0x7C,0x12,0x11,0x12,0x7C,0x00 }, // ASCII - 65 |
| { 0x7F,0x49,0x49,0x49,0x36,0x00 }, // ASCII - 66 |
| { 0x3E,0x41,0x41,0x41,0x22,0x00 }, // ASCII - 67 |
| { 0x7F,0x41,0x41,0x41,0x3E,0x00 }, // ASCII - 68 |
| { 0x7F,0x49,0x49,0x49,0x41,0x00 }, // ASCII - 69 |
| { 0x7F,0x09,0x09,0x09,0x01,0x00 }, // ASCII - 70 |
| { 0x3E,0x41,0x41,0x51,0x73,0x00 }, // ASCII - 71 |
| { 0x7F,0x08,0x08,0x08,0x7F,0x00 }, // ASCII - 72 |
| { 0x00,0x41,0x7F,0x41,0x00,0x00 }, // ASCII - 73 |
| { 0x20,0x40,0x41,0x3F,0x01,0x00 }, // ASCII - 74 |
| { 0x7F,0x08,0x14,0x22,0x41,0x00 }, // ASCII - 75 |
| { 0x7F,0x40,0x40,0x40,0x40,0x00 }, // ASCII - 76 |
| { 0x7F,0x02,0x1C,0x02,0x7F,0x00 }, // ASCII - 77 |
| { 0x7F,0x04,0x08,0x10,0x7F,0x00 }, // ASCII - 78 |
| { 0x3E,0x41,0x41,0x41,0x3E,0x00 }, // ASCII - 79 |
| { 0x7F,0x09,0x09,0x09,0x06,0x00 }, // ASCII - 80 |
| { 0x3E,0x41,0x51,0x21,0x5E,0x00 }, // ASCII - 81 |
| { 0x7F,0x09,0x19,0x29,0x46,0x00 }, // ASCII - 82 |
| { 0x26,0x49,0x49,0x49,0x32,0x00 }, // ASCII - 83 |
| { 0x03,0x01,0x7F,0x01,0x03,0x00 }, // ASCII - 84 |
| { 0x3F,0x40,0x40,0x40,0x3F,0x00 }, // ASCII - 85 |
| { 0x1F,0x20,0x40,0x20,0x1F,0x00 }, // ASCII - 86 |
| { 0x3F,0x40,0x38,0x40,0x3F,0x00 }, // ASCII - 87 |
| { 0x63,0x14,0x08,0x14,0x63,0x00 }, // ASCII - 88 |
| { 0x03,0x04,0x78,0x04,0x03,0x00 }, // ASCII - 89 |
| { 0x61,0x59,0x49,0x4D,0x43,0x00 }, // ASCII - 90 |
| { 0x00,0x7F,0x41,0x41,0x41,0x00 }, // ASCII - 91 |
| { 0x02,0x04,0x08,0x10,0x20,0x00 }, // ASCII - 92 |
| { 0x00,0x41,0x41,0x41,0x7F,0x00 }, // ASCII - 93 |
| { 0x04,0x02,0x01,0x02,0x04,0x00 }, // ASCII - 94 |
| { 0x40,0x40,0x40,0x40,0x40,0x00 }, // ASCII - 95 |
| { 0x00,0x03,0x07,0x08,0x00,0x00 }, // ASCII - 96 |
| { 0x20,0x54,0x54,0x78,0x40,0x00 }, // ASCII - 97 |
| { 0x7F,0x28,0x44,0x44,0x38,0x00 }, // ASCII - 98 |
| { 0x38,0x44,0x44,0x44,0x28,0x00 }, // ASCII - 99 |
| { 0x38,0x44,0x44,0x28,0x7F,0x00 }, // ASCII - 100 |
| { 0x38,0x54,0x54,0x54,0x18,0x00 }, // ASCII - 101 |
| { 0x00,0x08,0x7E,0x09,0x02,0x00 }, // ASCII - 102 |
| { 0x18,0xA4,0xA4,0x9C,0x78,0x00 }, // ASCII - 103 |
| { 0x7F,0x08,0x04,0x04,0x78,0x00 }, // ASCII - 104 |
| { 0x00,0x44,0x7D,0x40,0x00,0x00 }, // ASCII - 105 |
| { 0x20,0x40,0x40,0x3D,0x00,0x00 }, // ASCII - 106 |
| { 0x7F,0x10,0x28,0x44,0x00,0x00 }, // ASCII - 107 |
| { 0x00,0x41,0x7F,0x40,0x00,0x00 }, // ASCII - 108 |
| { 0x7C,0x04,0x78,0x04,0x78,0x00 }, // ASCII - 109 |
| { 0x7C,0x08,0x04,0x04,0x78,0x00 }, // ASCII - 110 |
| { 0x38,0x44,0x44,0x44,0x38,0x00 }, // ASCII - 111 |
| { 0xFC,0x18,0x24,0x24,0x18,0x00 }, // ASCII - 112 |
| { 0x18,0x24,0x24,0x18,0xFC,0x00 }, // ASCII - 113 |
| { 0x7C,0x08,0x04,0x04,0x08,0x00 }, // ASCII - 114 |
| { 0x48,0x54,0x54,0x54,0x24,0x00 }, // ASCII - 115 |
| { 0x04,0x04,0x3F,0x44,0x24,0x00 }, // ASCII - 116 |
| { 0x3C,0x40,0x40,0x20,0x7C,0x00 }, // ASCII - 117 |
| { 0x1C,0x20,0x40,0x20,0x1C,0x00 }, // ASCII - 118 |
| { 0x3C,0x40,0x30,0x40,0x3C,0x00 }, // ASCII - 119 |
| { 0x44,0x28,0x10,0x28,0x44,0x00 }, // ASCII - 120 |
| { 0x4C,0x90,0x90,0x90,0x7C,0x00 }, // ASCII - 121 |
| { 0x44,0x64,0x54,0x4C,0x44,0x00 }, // ASCII - 122 |
| { 0x00,0x08,0x36,0x41,0x00,0x00 }, // ASCII - 123 |
| { 0x00,0x00,0x77,0x00,0x00,0x00 }, // ASCII - 124 |
| { 0x00,0x41,0x36,0x08,0x00,0x00 }, // ASCII - 125 |
| { 0x02,0x01,0x02,0x04,0x02,0x00 }, // ASCII - 126 |
| { 0x3C,0x26,0x23,0x26,0x3C,0x00 }, // ASCII - 127 |
| { 0x1E,0xA1,0xA1,0x61,0x12,0x00 }, // ASCII - 128 80 |
| { 0x3A,0x40,0x40,0x20,0x7A,0x00 }, // ASCII - 129 |
| { 0x38,0x54,0x54,0x55,0x59,0x00 }, // ASCII - 130 |
| { 0x21,0x55,0x55,0x79,0x41,0x00 }, // ASCII - 131 |
| { 0x21,0x54,0x54,0x78,0x41,0x00 }, // ASCII - 132 |
| { 0x21,0x55,0x54,0x78,0x40,0x00 }, // ASCII - 133 |
| { 0x20,0x54,0x55,0x79,0x40,0x00 }, // ASCII - 134 |
| { 0x0C,0x1E,0x52,0x72,0x12,0x00 }, // ASCII - 135 |
| { 0x39,0x55,0x55,0x55,0x59,0x00 }, // ASCII - 136 |
| { 0x39,0x54,0x54,0x54,0x59,0x00 }, // ASCII - 137 |
| { 0x39,0x55,0x54,0x54,0x58,0x00 }, // ASCII - 138 |
| { 0x00,0x00,0x45,0x7C,0x41,0x00 }, // ASCII - 139 |
| { 0x00,0x02,0x45,0x7D,0x42,0x00 }, // ASCII - 140 |
| { 0x00,0x01,0x45,0x7C,0x40,0x00 }, // ASCII - 141 |
| // { 0xF0,0x29,0x24,0x29,0xF0,0x00 }, // ASCII - 142 Ä |
| { 0x79,0x14,0x12,0x14,0x79,0x00 }, // ASCII - 142 Ä korrigiert |
| { 0xF0,0x28,0x25,0x28,0xF0,0x00 }, // ASCII - 143 |
| { 0x7C,0x54,0x55,0x45,0x00,0x00 }, // ASCII - 144 90 |
| { 0x20,0x54,0x54,0x7C,0x54,0x44 }, // ASCII - 145 |
| { 0x7C,0x0A,0x09,0x7F,0x49,0x41 }, // ASCII - 146 |
| { 0x32,0x49,0x49,0x49,0x32,0x00 }, // ASCII - 147 |
| { 0x32,0x48,0x48,0x48,0x32,0x00 }, // ASCII - 148 |
| { 0x32,0x4A,0x48,0x48,0x30,0x00 }, // ASCII - 149 |
| { 0x3A,0x41,0x41,0x21,0x7A,0x00 }, // ASCII - 150 |
| { 0x3A,0x42,0x40,0x20,0x78,0x00 }, // ASCII - 151 |
| { 0x00,0x9D,0xA0,0xA0,0x7D,0x00 }, // ASCII - 152 |
| { 0x39,0x44,0x44,0x44,0x39,0x00 }, // ASCII - 153 |
| { 0x3D,0x40,0x40,0x40,0x3D,0x00 }, // ASCII - 154 |
| { 0x3C,0x24,0xFF,0x24,0x24,0x00 }, // ASCII - 155 |
| { 0x48,0x7E,0x49,0x43,0x66,0x00 }, // ASCII - 156 |
| { 0x2B,0x2F,0xFC,0x2F,0x2B,0x00 }, // ASCII - 157 |
| { 0xFF,0x09,0x29,0xF6,0x20,0x00 }, // ASCII - 158 |
| { 0xC0,0x88,0x7E,0x09,0x03,0x00 }, // ASCII - 159 |
| { 0x20,0x54,0x54,0x79,0x41,0x00 }, // ASCII - 160 |
| { 0x00,0x00,0x44,0x7D,0x41,0x00 }, // ASCII - 161 |
| { 0x30,0x48,0x48,0x4A,0x32,0x00 }, // ASCII - 162 |
| { 0x38,0x40,0x40,0x22,0x7A,0x00 }, // ASCII - 163 |
| { 0x00,0x7A,0x0A,0x0A,0x72,0x00 }, // ASCII - 164 |
| { 0x7D,0x0D,0x19,0x31,0x7D,0x00 }, // ASCII - 165 |
| { 0x26,0x29,0x29,0x2F,0x28,0x00 }, // ASCII - 166 |
| { 0x26,0x29,0x29,0x29,0x26,0x00 }, // ASCII - 167 |
| { 0x30,0x48,0x4D,0x40,0x20,0x00 }, // ASCII - 168 |
| { 0x38,0x08,0x08,0x08,0x08,0x00 }, // ASCII - 169 |
| { 0x08,0x08,0x08,0x08,0x38,0x00 }, // ASCII - 170 |
| { 0x2F,0x10,0xC8,0xAC,0xBA,0x00 }, // ASCII - 171 |
| { 0x2F,0x10,0x28,0x34,0xFA,0x00 }, // ASCII - 172 |
| { 0x00,0x00,0x7B,0x00,0x00,0x00 }, // ASCII - 173 |
| { 0x08,0x14,0x2A,0x14,0x22,0x00 }, // ASCII - 174 |
| { 0x22,0x14,0x2A,0x14,0x08,0x00 }, // ASCII - 175 |
| { 0xAA,0x00,0x55,0x00,0xAA,0x00 }, // ASCII - 176 |
| { 0xAA,0x55,0xAA,0x55,0xAA,0x55 }, // ASCII - 177 |
| { 0x55,0xAA,0x55,0xAA,0x55,0xAA }, // ASCII - 178 |
| { 0x00,0x00,0x00,0xFF,0x00,0x00 }, // ASCII - 179 |
| { 0x10,0x10,0x10,0xFF,0x00,0x00 }, // ASCII - 180 |
| { 0x14,0x14,0x14,0xFF,0x00,0x00 }, // ASCII - 181 |
| { 0x10,0x10,0xFF,0x00,0xFF,0x00 }, // ASCII - 182 |
| { 0x10,0x10,0xF0,0x10,0xF0,0x00 }, // ASCII - 183 |
| { 0x14,0x14,0x14,0xFC,0x00,0x00 }, // ASCII - 184 |
| { 0x14,0x14,0xF7,0x00,0xFF,0x00 }, // ASCII - 185 |
| { 0x00,0x00,0xFF,0x00,0xFF,0x00 }, // ASCII - 186 |
| { 0x14,0x14,0xF4,0x04,0xFC,0x00 }, // ASCII - 187 |
| { 0x14,0x14,0x17,0x10,0x1F,0x00 }, // ASCII - 188 |
| { 0x10,0x10,0x1F,0x10,0x1F,0x00 }, // ASCII - 189 |
| { 0x14,0x14,0x14,0x1F,0x00,0x00 }, // ASCII - 190 |
| { 0x10,0x10,0x10,0xF0,0x00,0x00 }, // ASCII - 191 |
| { 0x00,0x00,0x00,0x1F,0x10,0x10 }, // ASCII - 192 |
| { 0x10,0x10,0x10,0x1F,0x10,0x10 }, // ASCII - 193 |
| { 0x10,0x10,0x10,0xF0,0x10,0x10 }, // ASCII - 194 |
| { 0x00,0x00,0x00,0xFF,0x10,0x10 }, // ASCII - 195 |
| { 0x10,0x10,0x10,0x10,0x10,0x10 }, // ASCII - 196 |
| { 0x10,0x10,0x10,0xFF,0x10,0x10 }, // ASCII - 197 |
| { 0x00,0x00,0x00,0xFF,0x14,0x14 }, // ASCII - 198 |
| { 0x00,0x00,0xFF,0x00,0xFF,0x10 }, // ASCII - 199 |
| { 0x00,0x00,0x1F,0x10,0x17,0x14 }, // ASCII - 200 |
| { 0x00,0x00,0xFC,0x04,0xF4,0x14 }, // ASCII - 201 |
| { 0x14,0x14,0x17,0x10,0x17,0x14 }, // ASCII - 202 |
| { 0x14,0x14,0xF4,0x04,0xF4,0x14 }, // ASCII - 203 |
| { 0x00,0x00,0xFF,0x00,0xF7,0x14 }, // ASCII - 204 |
| { 0x14,0x14,0x14,0x14,0x14,0x14 }, // ASCII - 205 |
| { 0x14,0x14,0xF7,0x00,0xF7,0x14 }, // ASCII - 206 |
| { 0x14,0x14,0x14,0x17,0x14,0x14 }, // ASCII - 207 |
| { 0x10,0x10,0x1F,0x10,0x1F,0x10 }, // ASCII - 208 |
| { 0x14,0x14,0x14,0xF4,0x14,0x14 }, // ASCII - 209 |
| { 0x10,0x10,0xF0,0x10,0xF0,0x10 }, // ASCII - 210 |
| { 0x00,0x00,0x1F,0x10,0x1F,0x10 }, // ASCII - 211 |
| { 0x00,0x00,0x00,0x1F,0x14,0x14 }, // ASCII - 212 |
| { 0x00,0x00,0x00,0xFC,0x14,0x14 }, // ASCII - 213 |
| { 0x00,0x00,0xF0,0x10,0xF0,0x10 }, // ASCII - 214 |
| { 0x10,0x10,0xFF,0x10,0xFF,0x10 }, // ASCII - 215 |
| { 0x14,0x14,0x14,0xFF,0x14,0x14 }, // ASCII - 216 |
| { 0x10,0x10,0x10,0x1F,0x00,0x00 }, // ASCII - 217 |
| { 0x00,0x00,0x00,0xF0,0x10,0x10 }, // ASCII - 218 |
| { 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF }, // ASCII - 219 |
| { 0xF0,0xF0,0xF0,0xF0,0xF0,0xF0 }, // ASCII - 220 |
| { 0xFF,0xFF,0xFF,0x00,0x00,0x00 }, // ASCII - 221 |
| { 0x00,0x00,0x00,0xFF,0xFF,0xFF }, // ASCII - 222 |
| { 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F }, // ASCII - 223 |
| { 0x38,0x44,0x44,0x38,0x44,0x00 }, // ASCII - 224 |
| { 0x7C,0x2A,0x2A,0x3E,0x14,0x00 }, // ASCII - 225 |
| { 0x7E,0x02,0x02,0x06,0x06,0x00 }, // ASCII - 226 |
| { 0x02,0x7E,0x02,0x7E,0x02,0x00 }, // ASCII - 227 |
| { 0x63,0x55,0x49,0x41,0x63,0x00 }, // ASCII - 228 |
| { 0x38,0x44,0x44,0x3C,0x04,0x00 }, // ASCII - 229 |
| { 0x40,0x7E,0x20,0x1E,0x20,0x00 }, // ASCII - 230 |
| { 0x06,0x02,0x7E,0x02,0x02,0x00 }, // ASCII - 231 |
| { 0x99,0xA5,0xE7,0xA5,0x99,0x00 }, // ASCII - 232 |
| { 0x1C,0x2A,0x49,0x2A,0x1C,0x00 }, // ASCII - 233 |
| { 0x4C,0x72,0x01,0x72,0x4C,0x00 }, // ASCII - 234 |
| { 0x30,0x4A,0x4D,0x4D,0x30,0x00 }, // ASCII - 235 |
| { 0x30,0x48,0x78,0x48,0x30,0x00 }, // ASCII - 236 |
| { 0xBC,0x62,0x5A,0x46,0x3D,0x00 }, // ASCII - 237 |
| { 0x3E,0x49,0x49,0x49,0x00,0x00 }, // ASCII - 238 |
| { 0x7E,0x01,0x01,0x01,0x7E,0x00 }, // ASCII - 239 |
| { 0x2A,0x2A,0x2A,0x2A,0x2A,0x00 }, // ASCII - 240 |
| { 0x44,0x44,0x5F,0x44,0x44,0x00 }, // ASCII - 241 |
| { 0x40,0x51,0x4A,0x44,0x40,0x00 }, // ASCII - 242 |
| { 0x40,0x44,0x4A,0x51,0x40,0x00 }, // ASCII - 243 |
| { 0x00,0x00,0xFF,0x01,0x03,0x00 }, // ASCII - 244 |
| { 0xE0,0x80,0xFF,0x00,0x00,0x00 }, // ASCII - 245 |
| { 0x08,0x08,0x6B,0x6B,0x08,0x08 }, // ASCII - 246 |
| { 0x36,0x12,0x36,0x24,0x36,0x00 }, // ASCII - 247 |
| { 0x06,0x0F,0x09,0x0F,0x06,0x00 }, // ASCII - 248 |
| { 0x00,0x00,0x18,0x18,0x00,0x00 }, // ASCII - 249 |
| { 0x00,0x00,0x10,0x10,0x00,0x00 }, // ASCII - 250 |
| { 0x30,0x40,0xFF,0x01,0x01,0x00 }, // ASCII - 251 |
| { 0x00,0x1F,0x01,0x01,0x1E,0x00 }, // ASCII - 252 |
| { 0x00,0x19,0x1D,0x17,0x12,0x00 }, // ASCII - 253 |
| { 0x00,0x3C,0x3C,0x3C,0x3C,0x00 }, // ASCII - 254 |
| { 0x00,0x00,0x00,0x00,0x00,0x00 } // ASCII - 255 |
| }; |
| /************************ E n d o f F i l e ****************************/ |
| /Transportables_Koptertool/tags/V-0.1.1/MMT.hex |
|---|
| 0,0 → 1,728 |
| :100000000C94E3060C9400070C9400070C94000772 |
| :100010000C9400070C9400070C9400070C94000744 |
| :100020000C9400070C9400070C94F1120C94000738 |
| :100030000C9400070C9497120C9400070C94000782 |
| :100040000C9400070C9400070C9400070C94000714 |
| :100050000C940007202020202020000D0A54696DF8 |
| :10006000656F75742100446973706C6179000000DC |
| :10007000000000003E5B4F5B3E003E6B4F6B3E005E |
| :100080001C3E7C3E1C00183C7E3C18001C577D57D3 |
| :100090001C001C5E7F5E1C0000183C180000FFE77F |
| :1000A000C3E7FF00001824180000FFE7DBE7FF00AC |
| :1000B00030483A060E00262979292600407F05059A |
| :1000C0000700407F05253F005A3CE73C5A007F3E31 |
| :1000D0001C1C0800081C1C3E7F0014227F221400F8 |
| :1000E0005F5F005F5F0006097F017F000066899502 |
| :1000F0006A0060606060606094A2FFA294000804DF |
| :100100007E04080010207E20100008082A1C080029 |
| :10011000081C2A0808001E10101010000C1E0C1ECF |
| :100120000C0030383E383000060E3E0E060000004F |
| :100130000000000000005F00000000070007000052 |
| :10014000147F147F1400242A7F2A120023130864CA |
| :100150006200364956205000000807030000001CCA |
| :10016000224100000041221C00002A1C7F1C2A00A2 |
| :1001700008083E08080000807030000008080808E1 |
| :1001800008000000606000002010080402003E51DA |
| :1001900049453E0000427F400000724949494600FF |
| :1001A0002141494D33001814127F10002745454561 |
| :1001B00039003C4A494931004121110907003649BB |
| :1001C00049493600464949291E0000001400000034 |
| :1001D00000403400000000081422410014141414DC |
| :1001E00014000041221408000201590906003E4192 |
| :1001F0005D594E007C1211127C007F49494936003E |
| :100200003E41414122007F4141413E007F494949F1 |
| :1002100041007F09090901003E41415173007F08F7 |
| :1002200008087F0000417F4100002040413F01005D |
| :100230007F08142241007F40404040007F021C02A2 |
| :100240007F007F0408107F003E4141413E007F094E |
| :10025000090906003E4151215E007F091929460027 |
| :1002600026494949320003017F0103003F404040D5 |
| :100270003F001F2040201F003F4038403F006314D4 |
| :10028000081463000304780403006159494D4300D6 |
| :10029000007F41414100020408102000004141411B |
| :1002A0007F0004020102040040404040400000037F |
| :1002B000070800002054547840007F284444380048 |
| :1002C000384444442800384444287F003854545467 |
| :1002D000180000087E09020018A4A49C78007F087A |
| :1002E0000404780000447D4000002040403D0000B0 |
| :1002F0007F102844000000417F4000007C04780407 |
| :1003000078007C0804047800384444443800FC1821 |
| :100310002424180018242418FC007C080404080075 |
| :1003200048545454240004043F4424003C404020DA |
| :100330007C001C2040201C003C4030403C004428F5 |
| :10034000102844004C9090907C004464544C44002D |
| :100350000008364100000000770000000041360828 |
| :1003600000000201020402003C2623263C001EA1DC |
| :10037000A16112003A4040207A0038545455590087 |
| :100380002155557941002154547841002155547824 |
| :1003900040002054557940000C1E5272120039550D |
| :1003A000555559003954545459003955545458002E |
| :1003B0000000457C41000002457D42000001457C73 |
| :1003C0004000791412147900F0282528F0007C549C |
| :1003D000554500002054547C54447C0A097F49410F |
| :1003E000324949493200324848483200324A484886 |
| :1003F00030003A4141217A003A4240207800009D85 |
| :10040000A0A07D003944444439003D4040403D00B7 |
| :100410003C24FF242400487E494366002B2FFC2FF8 |
| :100420002B00FF0929F62000C0887E090300205414 |
| :10043000547941000000447D41003048484A320070 |
| :10044000384040227A00007A0A0A72007D0D193184 |
| :100450007D002629292F2800262929292600304811 |
| :100460004D4020003808080808000808080838002F |
| :100470002F10C8ACBA002F102834FA0000007B00FF |
| :10048000000008142A14220022142A140800AA00CA |
| :100490005500AA00AA55AA55AA5555AA55AA55AA63 |
| :1004A000000000FF0000101010FF0000141414FFE3 |
| :1004B00000001010FF00FF001010F010F0001414E6 |
| :1004C00014FC00001414F700FF000000FF00FF0000 |
| :1004D0001414F404FC00141417101F0010101F1043 |
| :1004E0001F001414141F0000101010F00000000072 |
| :1004F000001F10101010101F1010101010F010100E |
| :10050000000000FF1010101010101010101010FF3D |
| :100510001010000000FF14140000FF00FF10000086 |
| :100520001F1017140000FC04F414141417101714EF |
| :100530001414F404F4140000FF00F7141414141439 |
| :1005400014141414F700F7141414141714141010BE |
| :100550001F101F10141414F414141010F010F010C5 |
| :1005600000001F101F100000001F1414000000FCEA |
| :1005700014140000F010F0101010FF10FF101414ED |
| :1005800014FF14141010101F0000000000F01010D1 |
| :10059000FFFFFFFFFFFFF0F0F0F0F0F0FFFFFF00C4 |
| :1005A0000000000000FFFFFF0F0F0F0F0F0F384478 |
| :1005B000443844007C2A2A3E14007E0202060600CB |
| :1005C000027E027E02006355494163003844443C88 |
| :1005D0000400407E201E200006027E02020099A533 |
| :1005E000E7A599001C2A492A1C004C7201724C0094 |
| :1005F000304A4D4D3000304878483000BC625A4691 |
| :100600003D003E49494900007E0101017E002A2A41 |
| :100610002A2A2A0044445F44440040514A4440008E |
| :1006200040444A5140000000FF010300E080FF0009 |
| :10063000000008086B6B0808361236243600060FD7 |
| :10064000090F06000000181800000000101000003C |
| :100650003040FF010100001F01011E0000191D179D |
| :100660001200003C3C3C3C000000000000004D6FCC |
| :1006700064206279204D696B656C6A6F2030352F7C |
| :1006800030380020202053657474696E67730D0A3A |
| :1006900000202020446562756720446174656E0DFA |
| :1006A0000A002020204D6F746F72746573740D0AF8 |
| :1006B00000202020506172616D657465720D0A0022 |
| :1006C000202020446973706C61790D0A0020204855 |
| :1006D000617570746D656EFC202856302E312E3198 |
| :1006E000290D0A00506F727461626C6573204B6F44 |
| :1006F00070746572746F6F6C0D0A002A00200054CC |
| :1007000061737465206472FC636B656E0D0A00434F |
| :100710006F6E66696720202020004368616E6E65F9 |
| :100720006C73202000537469636B2020202020000C |
| :10073000486F6568652020202020004779726F206F |
| :100740002020202020004C6F6F70696E67202020D1 |
| :100750000043616D6572612020202000536F6E732D |
| :10076000746967657320005573657220202020200E |
| :100770002000436F75706C696E67202000436F6EB8 |
| :1007800066696728322920004C6F6F70696E677345 |
| :100790006574000202020202020202000404040460 |
| :1007A00004040303030808080805050808080005F1 |
| :1007B000090909090707070707070606060A0A06BF |
| :1007C000060505050909090900070B0B0B0B0C0CA5 |
| :1007D0000C0C0C0C0C0C01080201080201080201AF |
| :1007E00008020108020108020108020108020000D3 |
| :1007F0000000FF0400FF0400FF0400FF04003204B7 |
| :1008000000FF040006030040030014030020082139 |
| :10081000FA0800320800FF0800000500000500FA91 |
| :100820000800FA0800FA0800010000FF0500FF09AF |
| :1008300000FF0900FF0900FF0900FF0700FA070099 |
| :10084000FA0700FA0700190700FF0600FA0600FA87 |
| :100850000600FF0A00FF0A00FA0600FA0600FA0581 |
| :1008600000FA0500FF0500FF0900FF0900FF09006D |
| :10087000FF09000001000107000000000000000067 |
| :100880000000000000000000000000000000000068 |
| :10089000000000000000000000000000004C6F6F2E |
| :1008A000702075702020202020202020004C6F6FA9 |
| :1008B0007020646F776E092020202000004C6F6F3D |
| :1008C00070206C656674202020202020004C6F6F03 |
| :1008D0007020726967687420202020200048F66824 |
| :1008E000656E7265676C6572202020200048F6688E |
| :1008F000656E736368616C74657220200048656181 |
| :1009000064686F6C6409090000000000004B6F6DA3 |
| :10091000706173730909000000000000004B6F6DE7 |
| :1009200070617373466978090900000000475053ED |
| :100930000909090000000000000000000041636890 |
| :1009400073656E6B6F70706C756E672000447265B6 |
| :10095000687261746509090000000000004E696357 |
| :100960006B202020202020202020202000526F6C8F |
| :100970006C20202020202020202020200047617390 |
| :1009800020202020202020202020202000476965D2 |
| :1009900072090909000000000000000000506F7497 |
| :1009A00069310909090000000000000000506F745F |
| :1009B00069320909090000000000000000506F744E |
| :1009C00069330909090000000000000000506F743D |
| :1009D00069340909090000000000000000436F6E3F |
| :1009E00066696709090900000000000000486F659A |
| :1009F00068655F4D696E476173202020004C756605 |
| :100A000074647275636B5F4420202020004D617810 |
| :100A1000486F6568652020202020202000486F65F1 |
| :100A200068655F50202020202020202000486F652E |
| :100A300068655F56657273746165726B00486F65B7 |
| :100A400068655F4143435F5769726B2E0053746959 |
| :100A5000636B5F50202020202020202000537469E9 |
| :100A6000636B5F4420202020202020200047696500 |
| :100A7000725F50202020202020202020004761731A |
| :100A80005F4D696E202020202020202000476173C8 |
| :100A90005F4D61782020202020202020004779729F |
| :100AA0006F41636346616B746F720900004B6F6D39 |
| :100AB000706173735769726B756E67200047797246 |
| :100AC0006F5F5020090900000000000000477972A4 |
| :100AD0006F5F4909090900000000000000556E74AD |
| :100AE00065727370616E6E756E672020004E6F7454 |
| :100AF000476173090909000000000000004E6F748F |
| :100B00004761735A65697420202020200055666F64 |
| :100B10004175737269636874756E672000495F463A |
| :100B2000616B746F72202020202020200055736597 |
| :100B300072506172616D31090900000000557365E2 |
| :100B400072506172616D32090900000000557365D1 |
| :100B500072506172616D33090900000000557365C0 |
| :100B600072506172616D34090900000000536572B2 |
| :100B7000766F4E69636B4374726C09000053657243 |
| :100B8000766F4E69636B436F6D7009000053657239 |
| :100B9000766F4E69636B4D696E0900000053657294 |
| :100BA000766F4E69636B4D61780900000053657282 |
| :100BB000766F4E69636B526566727368004C6F6F37 |
| :100BC000704761734C696D6974090000004C6F6F68 |
| :100BD000705468726573686F6C640900004C6F6FC5 |
| :100BE00070487973746572657365090000416368C4 |
| :100BF000734B6F70706C756E67090000004163681D |
| :100C000073476567656E4B6F70706C2E0057696E29 |
| :100C10006B6C556D7363686C4E69636B0057696EDE |
| :100C20006B6C556D7363686C526F6C6C00477972B6 |
| :100C30006F4163634162676C656963680044726910 |
| :100C400066746B6F6D700909000000000044796ED6 |
| :100C5000616D696353746162696C69740055736591 |
| :100C600072506172616D35090900000000557365AD |
| :100C700072506172616D360909000000005573659C |
| :100C800072506172616D370909000000005573658B |
| :100C900072506172616D380909000000004C6F6F7D |
| :100CA00070436F6E66696709090000000053657242 |
| :100CB000766F4E69636B436F6D70496E000D0A4E1F |
| :100CC00069636874206765737065696368657274C9 |
| :100CD000000D0A506172616D6574657220676573FD |
| :100CE0007065696368657274000D0A2D2D2D3E00D4 |
| :100CF000506172616D6574657220737065696368B7 |
| :100D000065726E3F0D0A20206A610D0A20206E6513 |
| :100D1000696E0054696D656F75740020353A0D0A6F |
| :100D20000020343A0D0A0020333A0D0A0020323AEE |
| :100D30000D0A0020313A0D0A004C616465205061B3 |
| :100D400072616D657465720D0A002D002D002D0015 |
| :100D5000457869740D0A00526563687465636B0DAC |
| :100D60000A004C696E69650D0A004F7269656E7400 |
| :100D7000696572756E670D0A000D0A0045696E732C |
| :100D800074656C6C756E67656E3A0D0A00202020E4 |
| :100D90002020202020202020202020202020202053 |
| :100DA00020000D0A54696D656F757421000D0A5499 |
| :100DB000696D656F7574210044656275672D4469BE |
| :100DC00073706C61790011241FBECFE5D8E0DEBFDF |
| :100DD000CDBF10E0A0E6B0E0ECE6FDE202C0059079 |
| :100DE0000D92A036B107D9F717E0A0E6B0E001C038 |
| :100DF0001D92A03DB107E1F70E94FE0D0C94B516BF |
| :100E00000C940000782F52E060E026C0E52FFF2709 |
| :100E1000E951FB4F21812D5332813D5343814D5385 |
| :100E20005C5FDC01AD59BB4F80818D53880F880F0B |
| :100E3000922F92959F70892B8C932295207F832FE0 |
| :100E400086958695282BFD0121833295330F330F2C |
| :100E5000307C342B32836D5F862F99275717B0F281 |
| :100E600008950F931F93B82F809163048093E70434 |
| :100E7000809164048093E804809165048093E90480 |
| :100E8000A3E073E035C0E72FFF27ED59FB4F8081CA |
| :100E9000418162817D5FEA2FFF27E951FB4F282FB7 |
| :100EA00026952695235C208355279927837090707B |
| :100EB00024E0880F991F2A95E1F79A0104E03695FE |
| :100EC00027950A95E1F7822B835C81834F705070E0 |
| :100ED000440F551F440F551F862F82958695869582 |
| :100EE0008370842B835C82836F73635C6383AC5FEA |
| :100EF0007B1748F290E020E030E008C0E92FFF27A0 |
| :100F0000E951FB4F8081280F311D9F5F9A17B1F780 |
| :100F10003F70EA2FFF27E951FB4FC90136E0969554 |
| :100F200087953A95E1F7835C80832F73235C218357 |
| :100F30008DE0828313820A2F0D5F10E008C0E12F3D |
| :100F4000FF27E951FB4F80810E94E3121F5F1017BA |
| :100F5000B1F71F910F9108951F9384E180936B0562 |
| :100F60000E94BE12833221F080916B058823C1F765 |
| :100F700080916B05882319F481E090E017C00E94EE |
| :100F8000BE128093E70411E00AC00E94BE12E12F56 |
| :100F9000FF27E951FB4F80831F5F17FD1FE78D304F |
| :100FA000A1F7812F0E94020780E090E01F91089531 |
| :100FB0001F93CF93DF93CDB7DEB761970FB6F89449 |
| :100FC000DEBF0FBECDBF182F83E28093630481E69E |
| :100FD0008093640480936504109366041092670400 |
| :100FE0001092680486E00E9431070E94AC0780914D |
| :100FF000E8048134D1F7E3E6F4E0DE011196819153 |
| :101000008D9384E0E337F807D1F7198A177020E051 |
| :10101000AE014F5F5F4F612F80E00E94FC0A619636 |
| :101020000FB6F894DEBF0FBECDBFDF91CF911F91F9 |
| :1010300008959F92AF92BF92CF92DF92EF92FF926C |
| :101040000F931F93CF93DF93CDB7DEB761970FB6A2 |
| :10105000F894DEBF0FBECDBF0E945A099924A92C77 |
| :10106000BB2453E0AA0CBB1C5A95E1F7FA2C00E014 |
| :1010700010E08F2D800F0E94D8070F5F1F4F0830A0 |
| :101080001105B9F70E94AC078091E804843489F512 |
| :101090007501EE0CFF1C85E694E0E80EF91ECC24E9 |
| :1010A000DD248E010F5F1F4FF70120818181992779 |
| :1010B000982F88274AE050E0B801820F911D0E94C6 |
| :1010C000271620E044E550E06C2D8EE00E94C60A11 |
| :1010D00020E0A8016C2D8EE00E94FC0A0894C11C3F |
| :1010E000D11C82E090E0E80EF91E98E0C916D10408 |
| :1010F000C1F680916E05882329F280916E058130BA |
| :1011000009F4939480916E05823009F49A94809149 |
| :101110006E05883019F0E3E09E22A1CF61960FB6EC |
| :10112000F894DEBF0FBECDBFDF91CF911F910F911D |
| :10113000FF90EF90DF90CF90BF90AF909F90089579 |
| :101140001F9393E29093630491E69093640498E66E |
| :10115000909365048093660410926704109268046B |
| :1011600086E00E94310710E00E94AC07813009F44C |
| :101170001AE01F5F8091E8048053853018F01A3020 |
| :1011800098F304C080E090E01A3010F081E090E025 |
| :101190001F9108951F93CF93DF93CDB7DEB72A97A2 |
| :1011A0000FB6F894DEBF0FBECDBF0E945A0960E0B3 |
| :1011B00086E690E00E94980A80916E058823E1F708 |
| :1011C0000E94A008813069F460E08BE590E00E9405 |
| :1011D000980A88EC80936B0580916B05882369F1F0 |
| :1011E000FBCF1091E80419831A8220E0AE014F5F13 |
| :1011F0005F4F60E08AE00E94FC0A1F5F20E043E648 |
| :1012000054E0612F80E00E94FC0A8AE080936B0525 |
| :1012100080916B058823E1F780916E05813011F490 |
| :101220000E94A00880916E05823011F40E94A008EF |
| :1012300080916E05843009F0BFCF2A960FB6F894DE |
| :10124000DEBF0FBECDBFDF91CF911F910895C4982F |
| :101250008FB9779BFECF8EB18EB9C49A08951F9334 |
| :10126000CF93DF93E2E6F0E0119284E0E236F807F4 |
| :10127000D9F710EBC398812F0E94270980E10E94C3 |
| :101280002709809161000E942709C39AC0E0D0E03D |
| :1012900080E00E9427092196C038D105C9F71F5F59 |
| :1012A000183B41F71092690510926A05DF91CF91C2 |
| :1012B0001F9108950E942F09089583E397E00197F5 |
| :1012C000F1F708950F931F93CF93DF938C01C0E044 |
| :1012D000D0E003C00E945D092196C017D107D1F765 |
| :1012E000DF91CF911F910F9108951092690510928F |
| :1012F0006A058FEF87BB8EE58DB9C49AC2988AE0E4 |
| :1013000090E00E946209C29AC498C39880E40E9447 |
| :10131000270980916100882329F481EA0E94270926 |
| :1013200080EC04C080EA0E94270988EC0E9427090B |
| :1013300086EA0E94270982EA0E9427098FE20E941A |
| :10134000270988EF0E94270980E00E94270987E289 |
| :101350000E94270981E80E94270986E10E94270947 |
| :101360008CEA0E94270980E00E9427098FEA0E94E8 |
| :1013700027090E942F090895FF920F931F938C0154 |
| :10138000F62EC398880F892F881F990B9195805549 |
| :101390000E942709809161000F77080F802F8295A6 |
| :1013A0008F70805F0E942709802F8F700E9427090D |
| :1013B000C39A8F2D0E9427091F910F91FF900895C6 |
| :1013C000EF92FF920F931F93CF93DF93C0E0D0E093 |
| :1013D00002E610E032EEE32E30E0F32EF7018191C9 |
| :1013E0007F01F801808361918F01CE010E94BC09C9 |
| :1013F0002196F3E0C038DF0789F702EE13E0F80129 |
| :1014000011928F0160E0CE010E94BC092196F4E0A8 |
| :10141000C030DF07A1F7DF91CF911F910F91FF90AF |
| :10142000EF900895CF92DF92EF92FF920F931F9368 |
| :10143000CF93DF93D22E4F3D81F0403E38F4463DAE |
| :10144000B1F04C3DB1F0443CA9F40FC0463F49F027 |
| :101450004C3F49F0443E71F402C041EE0BC044E8F9 |
| :1014600009C044E907C041E805C04EE803C049E9A6 |
| :1014700001C04AE9062F11271695102F002717954E |
| :10148000079526E0829FC0011124080F191F1370D1 |
| :10149000429F700111248EE690E0E80EF91ECC24E4 |
| :1014A000E801CE59DF4FF7019491F2E0DF16A1F089 |
| :1014B000FD1530F0DD2059F081E0D816B1F409C0F7 |
| :1014C000E3E0DE1661F0F4E0DF1679F40AC09883F9 |
| :1014D0000CC08881892B08C08881892705C0888134 |
| :1014E00002C088819095892388836991C8010E94F0 |
| :1014F000BC09C3940894E11CF11C0F5F1F4F86E0E8 |
| :10150000C81689F6DF91CF911F910F91FF90EF9050 |
| :10151000DF90CF90089580916A058F5F80936A0570 |
| :10152000883028F00E94E00987E080936A050895DA |
| :101530001F93CF93DF93EC01162F20C04032A0F011 |
| :101540002196212F60916A05809169050E94120AF7 |
| :10155000809169058F5F80936905853178F01092DD |
| :1015600069050E948B0A0AC04A3029F04D3029F4DF |
| :101570001092690502C00E948B0A2196FE014491D7 |
| :101580004423E1F6DF91CF911F910895809369057F |
| :1015900060936A05622FCA010E94980A08951F93FA |
| :1015A000CF93DF93EC01162F20C04032A0F021969C |
| :1015B000212F60916A05809169050E94120A80912D |
| :1015C00069058F5F80936905853178F01092690510 |
| :1015D0000E948B0A0AC04A3029F04D3029F410923B |
| :1015E000690502C00E948B0A219648814423E9F6CE |
| :1015F000DF91CF911F9108958093690560936A05EB |
| :10160000622FCA010E94CF0A0895982F87FD39C022 |
| :101610006034B8F5862F869586958695282F3327D2 |
| :101620003695322F222737952795290F311D677060 |
| :1016300081E090E001C0880F6A95EAF7682F337067 |
| :10164000413061F0413018F04230A1F40DC0F90191 |
| :10165000EE59FF4F8081609586230BC0F901EE594A |
| :10166000FF4F8081862B05C0F901EE59FF4F808125 |
| :1016700086278083F901EE59FF4F6081C9010E94DE |
| :10168000BC0908952F923F924F925F926F927F9282 |
| :101690008F929F92AF92BF92CF92DF92EF92FF9282 |
| :1016A0000F931F93CF93DF93CDB7DEB728970FB675 |
| :1016B000F894DEBF0FBECDBF8D83162F0E83682E2C |
| :1016C0007724862E9924842F99279C838B838619CF |
| :1016D0009709E22FFF27FA83E9839F012819390927 |
| :1016E00097FF04C0FFEF2F2E3F2E07C040E050E0D1 |
| :1016F000009711F041E050E01A0137FF04C0EFEF0E |
| :101700004E2E5E2E08C040E050E02115310511F04C |
| :1017100041E050E02A016C0197FF04C0D094C194CD |
| :10172000D108D394790137FF04C0F094E194F10813 |
| :10173000F3944E81682D862D0E94050BEC14FD0458 |
| :101740007CF5C60162E070E00E948E1644275527A2 |
| :10175000461B570B58874F83A22CB62CB20C5D81C9 |
| :10176000052F112717C08F8198858E0D9F1D988793 |
| :101770008F831816190634F4840C951C8C199D0956 |
| :1017800098878F834E81682D8B2D0E94050B020D4B |
| :10179000131DBA0CEB81FC810E171F0721F72DC01A |
| :1017A000C70162E070E00E948E1644275527461B51 |
| :1017B000570B58874F83A42CB82CB40C012F11273A |
| :1017C00017C08F8198858C0D9D1D98878F83181663 |
| :1017D000190634F4620C731C8E199F0998878F8345 |
| :1017E0004E816B2D862D0E94050B040D151DBA0C24 |
| :1017F000E981FA810E171F0721F728960FB6F89492 |
| :10180000DEBF0FBECDBFDF91CF911F910F91FF9033 |
| :10181000EF90DF90CF90BF90AF909F908F907F9090 |
| :101820006F905F904F903F902F900895BF92CF920E |
| :10183000DF92EF92FF920F931F93CF93DF93182FB6 |
| :10184000B02E87FD1FE7603408F06FE37727CB01E8 |
| :10185000820F911D9C01812F840F912D911D6C0190 |
| :1018600091E8C916D10418F0B0E8CB2ED12C79013B |
| :101870002134310518F0A0E4EA2EF12CEB0108C068 |
| :101880000B2D2C2F4C2D6C2F812F0E94420B21965B |
| :10189000EC16FD06A8F7DF91CF911F910F91FF90F5 |
| :1018A000EF90DF90CF90BF900895CF92DF92EF92AC |
| :1018B000FF920F931F93CF93DF93D82EC02E87FFF5 |
| :1018C00002C08FE7D82E162F603408F01FE3812F57 |
| :1018D000820F912D911DEC018D2D840F912D911D65 |
| :1018E0007C0191E8E916F10418F000E8E02EF12CF3 |
| :1018F0000C2D212F4E2D612F8D2D0E94420BC134B6 |
| :10190000D10510F0C0E4D0E00C2D2C2F4E2D612F0E |
| :101910008E2D0E94420B2C2F4D2D6C2F8E2D0E9450 |
| :10192000420B212F4D2D6C2F8D2D0E94420BDF91EC |
| :10193000CF911F910F91FF90EF90DF90CF9008957E |
| :101940002F923F924F925F926F927F928F929F92CF |
| :10195000AF92BF92CF92DF92EF92FF920F931F93BD |
| :10196000CF93DF93CDB7DEB724970FB6F894DEBFE1 |
| :101970000FBECDBF8C016B017A01A22E21E030E0B9 |
| :10198000241B350B3C832B83CA01880F991F6624C7 |
| :101990007724681A790A462E502E640F4A2D802F1C |
| :1019A0000E94050B6C2D6E194A2D802F0E94050B8D |
| :1019B0004A2D6C2D802F8E0D0E94050B4A2D6C2D0B |
| :1019C000802F8E190E94050B4701222433241A828E |
| :1019D000198258C08B819C8197FD0BC008948108A7 |
| :1019E0009108E2E0F0E06E0E7F1E860D971D9C834D |
| :1019F0008B830894211C311C29813A812E5F3F4F33 |
| :101A00003A8329838B819C810196820F931F9C834B |
| :101A10008B83142D180DD52CD20C4A2D612F8D2DB2 |
| :101A20000E94050BE52CE2184A2D612F8E2D0E9495 |
| :101A3000050B142D18194A2D612F8D2D0E94050BB1 |
| :101A40004A2D612F8E2D0E94050B142D120DE52CB1 |
| :101A5000E80C4A2D612F8E2D0E94050B952D9819AB |
| :101A6000092F4A2D612F892F0E94050B142D121961 |
| :101A70004A2D612F8E2D0E94050B4A2D612F802F3C |
| :101A80000E94050B281439040CF4A4CF24960FB639 |
| :101A9000F894DEBF0FBECDBFDF91CF911F910F91A4 |
| :101AA000FF90EF90DF90CF90BF90AF909F908F907E |
| :101AB0007F906F905F904F903F902F9008952F925E |
| :101AC0003F924F925F926F927F928F929F92AF92CE |
| :101AD000BF92CF92DF92EF92FF920F931F93CF931B |
| :101AE000DF936B017A0151E0A52EB12CAE18BF082F |
| :101AF0009701220F331F88249924821A930A662E95 |
| :101B0000782E262F2E196E0D01E0482F0E94420BD1 |
| :101B1000472D4E192C2D6C2D872D8E0D0E94420BBA |
| :101B2000E70144245524222433243AC0B7FC07C0DB |
| :101B3000219782E090E0880E991EA80CB91C0894A9 |
| :101B4000411C511C82E090E0280E391E0894A11C13 |
| :101B5000B11CA20CB31C1C2F662D6C0FE72CE418D3 |
| :101B6000D72CD40C01E0262F4E2D8D2D0E94420B38 |
| :101B7000662D6C1B262F4E2D8D2D0E94420B662D3F |
| :101B8000640DE72CEC1A170D262F4E2D812F0E9485 |
| :101B9000420B662D6419262F4E2D812F0E94420B79 |
| :101BA0004C165D061CF2DF91CF911F910F91FF90B3 |
| :101BB000EF90DF90CF90BF90AF909F908F907F90ED |
| :101BC0006F905F904F903F902F900895A2E0B0E00B |
| :101BD0000E94A116802D992780936100089581E0CD |
| :101BE00021E030E0D901082E0E94A91680E02F5F85 |
| :101BF0003F4FD901082E0E94A91608958FEF8BBB85 |
| :101C000083E488BB8CEF85BB8CE782BB83E084BB1D |
| :101C100080E881BB21E030E0D9010E94A116802D2F |
| :101C2000813071F081E0D901082E0E94A91680E070 |
| :101C30002F5F3F4FD901082E0E94A9162150304036 |
| :101C40002F5F3F4FD9010E94A116802D99278093C5 |
| :101C500061000E9475090E94B9120E9430137894A5 |
| :101C60000E94870EFDCF0F931F93062F142F20E0A5 |
| :101C70004DEF56E0682F812F0E94C60A20E04BEFFF |
| :101C800056E0602F812F0E94C60A1F910F91089580 |
| :101C9000EF92FF920F931F93082FE62EF42E682FDA |
| :101CA0000E94330E102F912F80916E058823E1F74B |
| :101CB00080916E058823E1F380916E05823019F4DE |
| :101CC0001E1508F41F5F80916E05813019F401170D |
| :101CD00008F411504F2D612F892F0E94330E8091EF |
| :101CE0006E05883021F080916E058430E1F6809198 |
| :101CF0006E05843009F41FEF80916E058823E1F7AB |
| :101D0000812F99271F910F91FF90EF9008950E94C6 |
| :101D10005A0960E084EE96E00E94980A60E08DEC3B |
| :101D200096E00E94980A60E080EC96E00E94980A93 |
| :101D300060E081EB96E00E94980A60E082EA96E01B |
| :101D40000E94980A60E081E996E00E94980A60E0AB |
| :101D500083E896E00E94980A60E08EE696E00E9492 |
| :101D6000980A4FE066E082E00E94480E843091F0CD |
| :101D7000853028F4823041F08330A1F408C08530EA |
| :101D800061F0863079F40CC00E94CA0808950E9460 |
| :101D9000E41108950E94D30E08950E94311508950C |
| :101DA0000E944E1308950E945A0980916E0588235F |
| :101DB000E1F760E08FEF96E00E94980A80916E054F |
| :101DC0008823E1F380916E058830C9F483E2809323 |
| :101DD000630481E68093640484E7809365048AE069 |
| :101DE00080936604809367048093680480936904F9 |
| :101DF00010926A0410926B0489E00E94310780916E |
| :101E00006E058823E1F780916E058823E1F383E274 |
| :101E10008093630481E68093640484E7809365047F |
| :101E2000109266041092670410926804109269047C |
| :101E300010926A0410926B0489E00E9431070895A1 |
| :101E4000FB0120E030E0482F552761E0CA01022E57 |
| :101E500002C0959587950A94E2F780FF02C06083DF |
| :101E600001C010822F5F3F4F31962830310571F746 |
| :101E7000089540E020E030E061E070E0FC018191F5 |
| :101E8000813041F4CB01022E02C0880F991F0A94C1 |
| :101E9000E2F7480F2F5F3F4F2830310581F7842F3D |
| :101EA00099270895482FFB0164E60E946E168083EF |
| :101EB00024E6829FC0011124481B842F6AE00E94FF |
| :101EC0006E162AE0829F90011124421B405D4283DE |
| :101ED0009081905D9083805D8183903329F490E2BE |
| :101EE0009083803309F4918313820895CF92DF9217 |
| :101EF000EF92FF920F931F93CF93DF93CDB7DEB78F |
| :101F000062970FB6F894DEBF0FBECDBF823008F4E3 |
| :101F100055C0615044E080E00E94480EC82E8FEF0B |
| :101F2000C81609F421C1EC2CFF24F701EA54F84F3C |
| :101F3000E081FF27ED59FB4FD08020E04EE45DE0CB |
| :101F40006C2D84E00E94C60A80916E058823E1F71B |
| :101F500080916E05813009F4DA9480916E058230AB |
| :101F600009F4D3948E01075F1F4FB8018D2D0E9495 |
| :101F7000520F20E0A8016C2D80E00E94FC0A84E151 |
| :101F800080936B0580916B058823E1F780916E0546 |
| :101F9000843021F080916E058830D1F680916E05F5 |
| :101FA000883009F0E1C0A6EBB7E0EA0EFB1ED701CE |
| :101FB000EC91FF27ED59FB4FD082D6C0813009F05C |
| :101FC00069C08E010F5F1F4FB801809197040E9476 |
| :101FD000200F1A8644E063E080E00E94480ED82E6D |
| :101FE000BFEF8B1709F4C0C0E82EFF240E0D1F1D94 |
| :101FF000F801008120E04CE45DE0682F84E00E945D |
| :10200000C60A80916E05813009F400E080916E056A |
| :10201000823009F401E0005D0987005320E0AE0141 |
| :10202000475F5F4F6D2D80E00E94FC0A84E1809342 |
| :102030006B0580916B058823E1F780916E058830F0 |
| :1020400021F080916E058430E1F680916E05883034 |
| :1020500051F4CE010196E80EF91ED7010C930E94AF |
| :10206000390F809397040E945A098E01075F1F4F12 |
| :10207000B801809197040E94520F60E0C8010E944D |
| :10208000CF0A88EC80936B0580916B05882309F457 |
| :102090006BC0FACF882309F067C08E010F5F1F4F16 |
| :1020A000B80180916B040E94200F1A8644E067E01B |
| :1020B00080E00E94480ED82EBFEF8B1709F454C061 |
| :1020C000E82EFF240E0D1F1DF801008120E04AE4D8 |
| :1020D0005DE0682F84E00E94C60A80916E05813021 |
| :1020E00009F400E080916E05823009F401E0005DA2 |
| :1020F0000987005320E0AE01475F5F4F6D2D80E000 |
| :102100000E94FC0A84E180936B0580916B05882313 |
| :10211000E1F780916E05883021F080916E05843062 |
| :10212000E1F680916E05883051F4CE010196E80EFB |
| :10213000F91ED7010C930E94390F80936B040E9403 |
| :102140005A098E01075F1F4FB80180916B040E94EE |
| :10215000520F60E0C8010E94CF0A88EC80936B05A3 |
| :1021600080916B058823E1F762960FB6F894DEBF85 |
| :102170000FBECDBFDF91CF911F910F91FF90EF90D8 |
| :10218000DF90CF9008956F927F928F929F92AF923F |
| :10219000BF92CF92DF92EF92FF920F931F93CF9354 |
| :1021A000DF93CDB7DEB7A1970FB6F894DEBF0FBEB1 |
| :1021B000CDBFE82E81E08E1508F044C048EDA42E76 |
| :1021C00047E0B42E3DE5632E39E0732EFF24CC2486 |
| :1021D000DD2423E6822E24E0922EF50184918E15D3 |
| :1021E000E9F4EF2DFF27EA54F84FC0828E01075F14 |
| :1021F0001F4FB801F40180810E94520F20E0A80116 |
| :102200006F2D80E00E94FC0A20E0A3016F2D85E085 |
| :102210000E94C60AF7E0FF1508F0F3940894C11C69 |
| :10222000D11C83E090E0A80EB91E0894811C911C7B |
| :10223000E0E1F0E06E0E7F1EF2E4CF16D10409F467 |
| :1022400063C0CBCF81E0E81679F58E010F5F1F4F99 |
| :10225000B801809197040E94200F1A869DE9A92E4B |
| :1022600098E0B92E6801CE0101961C2D181BF601CD |
| :1022700081916F01805D898720E0AE01475F5F4FEC |
| :10228000612F80E00E94FC0A20E0A501612F85E01B |
| :102290000E94C60A80E190E0A80EB91ECE01059604 |
| :1022A000C816D90681F1DFCFEE2069F58E010F5FE8 |
| :1022B0001F4FB80180916B040E94200F1A8668019D |
| :1022C0008DEDA82E88E0B82ECE010196FC2CF81AD0 |
| :1022D000F60181916F01805D89878E01075F1F4F35 |
| :1022E00020E0A8016F2D80E00E94FC0A20E0A501FB |
| :1022F0006F2D85E00E94C60A80E190E0A80EB91E0D |
| :10230000C016D10609F7FF248F2D9927A1960FB685 |
| :10231000F894DEBF0FBECDBFDF91CF911F910F911B |
| :10232000FF90EF90DF90CF90BF90AF909F908F90F5 |
| :102330007F906F900895982F8630D8F426E430E08F |
| :10234000E9EAF4E0808183832150304031978FEFB8 |
| :102350002F3F3807B9F783E28093630481E68093C7 |
| :1023600064049559909365041092AD048BE40E9427 |
| :10237000310708951F9393E29093630491E690933D |
| :10238000640491E790936504809366041092670457 |
| :102390001092680486E00E94310710E00E94AC07AA |
| :1023A000813009F41EE11F5F8091E8048C54853070 |
| :1023B00018F01E3198F304C080E090E01E3110F058 |
| :1023C00081E090E01F910895FF920F931F93CF93A8 |
| :1023D000DF93CDB7DEB72F970FB6F894DEBF0FBEF1 |
| :1023E000CDBF0E945A0960E089E39DE00E94980AEF |
| :1023F00060E083E39DE00E94980A60E08DE29DE04A |
| :102400000E94980A60E087E29DE00E94980A60E0DE |
| :1024100081E29DE00E94980A60E08BE19DE00E94CD |
| :10242000980A40E065E081E00E94480E0E94BA11DF |
| :10243000813041F420E043E15DE066E080E00E940D |
| :10244000C60A62C062E0F62E0E945A098E010F5F32 |
| :102450001F4F4AE050E0B8018F2D99270E9448167F |
| :1024600060E0C8010E94CF0A82E380936B058091EF |
| :102470006B058823E1F70E945A098F2D0E94C31033 |
| :10248000682F80916E058823E1F380916E0582307C |
| :1024900009F4F39480916E05813009F4FA948FEF7A |
| :1024A000F81619F45CE0F52E04C08CE08F1508F4E2 |
| :1024B000FF2480916E05883019F48F2D0E94760FCD |
| :1024C00080916E05843009F0BFCF0E945A0960E008 |
| :1024D00080EF9CE00E94980A40E062E081E00E9468 |
| :1024E000480E813061F460E089EE9CE00E94980A19 |
| :1024F00085E00E949B1160E081ED9CE003C060E0FC |
| :102500008DEB9CE00E94980A84E680936B05809195 |
| :102510006B058823E1F72F960FB6F894DEBF0FBE48 |
| :10252000CDBFDF91CF911F910F91FF9008951F9222 |
| :102530000F920FB60F9211248F939F93EF93FF93F7 |
| :102540008091BE079CB1E0ECF7E0E80FF11D9083AD |
| :102550008F5F8093BE078091BE078F708093BE0708 |
| :10256000FF91EF919F918F910F900FBE0F901F9051 |
| :10257000189588E98AB987E089B908958AE0809337 |
| :102580006D059091BF078091BE07981721F4809147 |
| :102590006D058823B1F780916D05882311F4E0E083 |
| :1025A0000FC08091BF07E82FFF27E054F84FE0816C |
| :1025B0008F5F8093BF078091BF078F708093BF07A5 |
| :1025C0008E2F992708955D9BFECF8CB90895FC014D |
| :1025D00004C05D9BFECF8CB9319680818823C9F7FA |
| :1025E00008951F920F920FB60F9211248F939F930D |
| :1025F00080916C05882331F080916C058150809327 |
| :102600006C0515C08AE080936C0589B39927809585 |
| :102610009095689413F8959587951694E1F78F70C7 |
| :1026200080936E0580916F058F5F80936F05809119 |
| :102630006B05882329F080916B05815080936B0591 |
| :1026400080916D05882329F080916D0581508093DC |
| :102650006D059F918F910F900FBE0F901F90189551 |
| :102660008DE083BF88E48CBF89B7826089BF0895FD |
| :10267000F89480916100882321F484E080936100C4 |
| :1026800002C01092610080916100A2E0B0E0082ECB |
| :102690000E94A9160E947509789408950F931F93BC |
| :1026A00011E00E945A0960E08CE79DE00E94980AC0 |
| :1026B00060E089E79DE00E94980A60E08AE69DE07C |
| :1026C0000E94980A60E082E69DE00E94980A60E01D |
| :1026D00087E59DE00E94980A60E080E59DE00E9409 |
| :1026E000980A4FE065E082E00E94480E833049F08E |
| :1026F0008430C9F0823011F010E026C00E943813F7 |
| :1027000023C00E945A0901E022E344E664E18AE022 |
| :102710000E94420B80916E058830B1F080916E0569 |
| :10272000843091F0F7CF0E945A0901E028E244E694 |
| :1027300064E18AE00E94550C80916E05883021F09A |
| :1027400080916E058430C1F7112309F0AACF1F9143 |
| :102750000F910895CF93DF93EC0152E070E026C013 |
| :10276000E52FFF27E951FB4F21812D5332813D5346 |
| :1027700043814D535C5FDE01A80FB91F80818D53EB |
| :10278000880F880F922F92959F70892B8C9322959A |
| :10279000207F832F86958695282BFD0121833295F6 |
| :1027A000330F330F307C342B32837D5F872F992793 |
| :1027B0005617B0F2DF91CF9108954F925F926F92CA |
| :1027C0007F928F929F92AF92BF92CF92DF92EF92C1 |
| :1027D000FF920F931F93CF93DF93FC01EB0180E2F5 |
| :1027E000888340E8E130F40718F46624772408C0B1 |
| :1027F000F095E195FF4F8DE2888351E0652E712CB5 |
| :102800002E010894411C511CCF0160E177E20E9427 |
| :102810007A168B01262F332780E197E2BC01269F91 |
| :10282000C001279F900D369F900D11249F01281BFA |
| :10283000390B42E0C42ED12CCC0EDD1EC90168EE4E |
| :1028400073E00E947A167B01462F552788EE93E0AD |
| :10285000FC014E9FC0014F9F900D5E9F900D112473 |
| :10286000281B390B93E0A92EB12CAC0EBD1EC9015B |
| :1028700064E670E00E947A16FB0184E6689FC0015E |
| :102880001124281B390B84E0882E912C8C0E9D1E60 |
| :10289000C9016AE070E00E947A168AE0689FC00170 |
| :1028A0001124281B390B205D2D83005D0983F0E383 |
| :1028B000EF0EEA82E05DEB83605D6C83003391F59F |
| :1028C00080E2888341E06416710409F48DE2898313 |
| :1028D000F6018081803331F580E2F2018083F1E0FE |
| :1028E0006F16710409F48DE2F6018083F501808191 |
| :1028F0008033C1F480E2F6018083F1E06F16710449 |
| :1029000009F48DE2F5018083F4018081803351F474 |
| :1029100080E2F5018083F1E06F16710409F48DE225 |
| :10292000F40180831E82DF91CF911F910F91FF9060 |
| :10293000EF90DF90CF90BF90AF909F908F907F905F |
| :102940006F905F904F9008950F931F93082F84E12D |
| :1029500080936B050E94BE12833221F080916B053B |
| :102960008823C1F780916B05882319F481E090E0FA |
| :1029700030C00E94BE128093E70411E00AC00E949A |
| :10298000BE12E12FFF27E951FB4F80831F5F17FD28 |
| :102990001FE78D30A1F7023221F4612F80E795E027 |
| :1029A0000AC0802F992774E0880F991F7A95E1F764 |
| :1029B000612F8A549A4F0E94AA13E02FFF2764E0E8 |
| :1029C000EE0FFF1F6A95E1F7EA54FA4F178680E091 |
| :1029D00090E01F910F910895FF920F931F93F82E8F |
| :1029E00083E28093630481E68093640492E2F916A3 |
| :1029F00071F483E680936504109266041092670474 |
| :102A00001092680486E00E94310704E40FC09FE141 |
| :102A10009F1520F080936504F0926604109267047D |
| :102A20001092680486E00E94310701E410E08F2DC7 |
| :102A30000E94A414813009F41EE11F5F8091E80414 |
| :102A4000801710F0081718F41E3188F304C080E0D6 |
| :102A500090E01E3110F081E090E01F910F91FF9007 |
| :102A600008954F925F927F928F929F92AF92BF9202 |
| :102A7000CF92DF92EF92FF920F931F93CF93DF934A |
| :102A8000CDB7DEB72B970FB6F894DEBF0FBECDBF24 |
| :102A90000E945A0960E088EB9DE00E94980A1B861C |
| :102AA00000E010E0802F0E94EC14813039F4802F78 |
| :102AB0000E94EC14813011F421E02B870F5F1F4F2F |
| :102AC0000032110579F73B85313019F088249924BB |
| :102AD0000EC060E08DEA9DE00E94980A88EC809329 |
| :102AE0006B0580916B05882309F49BC0FACF809118 |
| :102AF0006E058823E1F782E20E94EC14813071F4C4 |
| :102B000060E082EA9DE00E94980A88EC80936B0561 |
| :102B100080916B05882309F484C0FACF8E010F5F82 |
| :102B20001F4FB801C4010E94DD1320E0A80160E03E |
| :102B30008FE00E94FC0AC401B3E0880F991FBA9588 |
| :102B4000E1F7881999096C01CC0CDD1CE2E7F5E08E |
| :102B5000CE0EDF1E7C01F4E0EE0CFF1CFA95E1F7CF |
| :102B600026EB35E0E20EF31E442455245C01742C60 |
| :102B7000739430E2A316B104B4F48E010F5F1F4FBB |
| :102B8000B801F601808191810E94DD1320E0A70148 |
| :102B9000672D80E00E94FC0A20E0A801672D8DE0EF |
| :102BA0000E94FC0A07C020E04DE85DE0672D80E050 |
| :102BB0000E94C60A0894411C511C0894A11CB11C17 |
| :102BC00022E030E0C20ED31E80E190E0E80EF91E54 |
| :102BD00097E04916510459F68AE080936B0580917D |
| :102BE0006B058823E1F780916E05813039F40894F4 |
| :102BF0008108910897FE02C08824992480916E056F |
| :102C0000823051F40894811C911CE8E08E169104E6 |
| :102C10001CF0E7E08E2E912C80916E05843009F037 |
| :102C200066CF2B960FB6F894DEBF0FBECDBFDF91F7 |
| :102C3000CF911F910F91FF90EF90DF90CF90BF90B9 |
| :102C4000AF909F908F907F905F904F900895FB0181 |
| :102C50009F01E8944230C4F04532B4F44A3029F47C |
| :102C600097FB1EF4909581959F4F642F77270E94C4 |
| :102C70007A16805D8A330CF0895D8193CB010097D1 |
| :102C8000A1F716F45DE251931082C9010C945E160F |
| :102C9000FB019F01423074F0453264F4642F7727C2 |
| :102CA0000E947A16805D8A330CF0895D8193CB0196 |
| :102CB0000097A1F71082C9010C945E16DC01FC019B |
| :102CC000672F71917723E1F7329704C07C916D9360 |
| :102CD00070836291AE17BF07C8F30895991B79E01E |
| :102CE00004C0991F961708F0961B881F7A95C9F79C |
| :102CF00080950895AA1BBB1B51E107C0AA1FBB1FEB |
| :102D0000A617B70710F0A61BB70B881F991F5A9577 |
| :102D1000A9F780959095BC01CD01089597FB092EE8 |
| :102D200007260AD077FD04D0E5DF06D000201AF48C |
| :102D3000709561957F4F0895F6F7909581959F4F17 |
| :102D40000895E199FECFBFBBAEBBE09A11960DB2DC |
| :102D50000895E199FECFBFBBAEBB0DBA11960FB679 |
| :0C2D6000F894E29AE19A0FBE0895FFCFAC |
| :00000001FF |
| /Transportables_Koptertool/tags/V-0.1.1/Readme.txt |
|---|
| 0,0 → 1,17 |
| Version V 0.1.1 |
| Debug Anzeige liest nun die Texte aus der FC aus und stellt sie dar. |
| Beim Auslesen kann es immer mal wieder zu einem TimeOut kommen. Einfach nochmal die Daten anfordern. |
| Wenn keine Beschreibung angezeigt wird ist auch keine in der FC vorhanden. |
| Geblättert wird mit den beiden "Pfeiltasten". |
| Oben Rechts wird die Nummer der "Seite" angezeigt. |
| Das hex ist für einen AtMega32 mit 7,xx MHz. |
| getestet gegen FC V0.69j |
| Erstellt mit AVRStudio 4.13 |
| Have Fun |
| Mikeljo. 31.05.2008 |
| /Transportables_Koptertool/tags/V-0.1.1/Spezial/MMT-Mega32-16.hex |
|---|
| 0,0 → 1,728 |
| :100000000C94E3060C9400070C9400070C94000772 |
| :100010000C9400070C9400070C9400070C94000744 |
| :100020000C9400070C9400070C94F1120C94000738 |
| :100030000C9400070C9497120C9400070C94000782 |
| :100040000C9400070C9400070C9400070C94000714 |
| :100050000C940007202020202020000D0A54696DF8 |
| :10006000656F75742100446973706C6179000000DC |
| :10007000000000003E5B4F5B3E003E6B4F6B3E005E |
| :100080001C3E7C3E1C00183C7E3C18001C577D57D3 |
| :100090001C001C5E7F5E1C0000183C180000FFE77F |
| :1000A000C3E7FF00001824180000FFE7DBE7FF00AC |
| :1000B00030483A060E00262979292600407F05059A |
| :1000C0000700407F05253F005A3CE73C5A007F3E31 |
| :1000D0001C1C0800081C1C3E7F0014227F221400F8 |
| :1000E0005F5F005F5F0006097F017F000066899502 |
| :1000F0006A0060606060606094A2FFA294000804DF |
| :100100007E04080010207E20100008082A1C080029 |
| :10011000081C2A0808001E10101010000C1E0C1ECF |
| :100120000C0030383E383000060E3E0E060000004F |
| :100130000000000000005F00000000070007000052 |
| :10014000147F147F1400242A7F2A120023130864CA |
| :100150006200364956205000000807030000001CCA |
| :10016000224100000041221C00002A1C7F1C2A00A2 |
| :1001700008083E08080000807030000008080808E1 |
| :1001800008000000606000002010080402003E51DA |
| :1001900049453E0000427F400000724949494600FF |
| :1001A0002141494D33001814127F10002745454561 |
| :1001B00039003C4A494931004121110907003649BB |
| :1001C00049493600464949291E0000001400000034 |
| :1001D00000403400000000081422410014141414DC |
| :1001E00014000041221408000201590906003E4192 |
| :1001F0005D594E007C1211127C007F49494936003E |
| :100200003E41414122007F4141413E007F494949F1 |
| :1002100041007F09090901003E41415173007F08F7 |
| :1002200008087F0000417F4100002040413F01005D |
| :100230007F08142241007F40404040007F021C02A2 |
| :100240007F007F0408107F003E4141413E007F094E |
| :10025000090906003E4151215E007F091929460027 |
| :1002600026494949320003017F0103003F404040D5 |
| :100270003F001F2040201F003F4038403F006314D4 |
| :10028000081463000304780403006159494D4300D6 |
| :10029000007F41414100020408102000004141411B |
| :1002A0007F0004020102040040404040400000037F |
| :1002B000070800002054547840007F284444380048 |
| :1002C000384444442800384444287F003854545467 |
| :1002D000180000087E09020018A4A49C78007F087A |
| :1002E0000404780000447D4000002040403D0000B0 |
| :1002F0007F102844000000417F4000007C04780407 |
| :1003000078007C0804047800384444443800FC1821 |
| :100310002424180018242418FC007C080404080075 |
| :1003200048545454240004043F4424003C404020DA |
| :100330007C001C2040201C003C4030403C004428F5 |
| :10034000102844004C9090907C004464544C44002D |
| :100350000008364100000000770000000041360828 |
| :1003600000000201020402003C2623263C001EA1DC |
| :10037000A16112003A4040207A0038545455590087 |
| :100380002155557941002154547841002155547824 |
| :1003900040002054557940000C1E5272120039550D |
| :1003A000555559003954545459003955545458002E |
| :1003B0000000457C41000002457D42000001457C73 |
| :1003C0004000791412147900F0282528F0007C549C |
| :1003D000554500002054547C54447C0A097F49410F |
| :1003E000324949493200324848483200324A484886 |
| :1003F00030003A4141217A003A4240207800009D85 |
| :10040000A0A07D003944444439003D4040403D00B7 |
| :100410003C24FF242400487E494366002B2FFC2FF8 |
| :100420002B00FF0929F62000C0887E090300205414 |
| :10043000547941000000447D41003048484A320070 |
| :10044000384040227A00007A0A0A72007D0D193184 |
| :100450007D002629292F2800262929292600304811 |
| :100460004D4020003808080808000808080838002F |
| :100470002F10C8ACBA002F102834FA0000007B00FF |
| :10048000000008142A14220022142A140800AA00CA |
| :100490005500AA00AA55AA55AA5555AA55AA55AA63 |
| :1004A000000000FF0000101010FF0000141414FFE3 |
| :1004B00000001010FF00FF001010F010F0001414E6 |
| :1004C00014FC00001414F700FF000000FF00FF0000 |
| :1004D0001414F404FC00141417101F0010101F1043 |
| :1004E0001F001414141F0000101010F00000000072 |
| :1004F000001F10101010101F1010101010F010100E |
| :10050000000000FF1010101010101010101010FF3D |
| :100510001010000000FF14140000FF00FF10000086 |
| :100520001F1017140000FC04F414141417101714EF |
| :100530001414F404F4140000FF00F7141414141439 |
| :1005400014141414F700F7141414141714141010BE |
| :100550001F101F10141414F414141010F010F010C5 |
| :1005600000001F101F100000001F1414000000FCEA |
| :1005700014140000F010F0101010FF10FF101414ED |
| :1005800014FF14141010101F0000000000F01010D1 |
| :10059000FFFFFFFFFFFFF0F0F0F0F0F0FFFFFF00C4 |
| :1005A0000000000000FFFFFF0F0F0F0F0F0F384478 |
| :1005B000443844007C2A2A3E14007E0202060600CB |
| :1005C000027E027E02006355494163003844443C88 |
| :1005D0000400407E201E200006027E02020099A533 |
| :1005E000E7A599001C2A492A1C004C7201724C0094 |
| :1005F000304A4D4D3000304878483000BC625A4691 |
| :100600003D003E49494900007E0101017E002A2A41 |
| :100610002A2A2A0044445F44440040514A4440008E |
| :1006200040444A5140000000FF010300E080FF0009 |
| :10063000000008086B6B0808361236243600060FD7 |
| :10064000090F06000000181800000000101000003C |
| :100650003040FF010100001F01011E0000191D179D |
| :100660001200003C3C3C3C000000000000004D6FCC |
| :1006700064206279204D696B656C6A6F2030352F7C |
| :1006800030380020202053657474696E67730D0A3A |
| :1006900000202020446562756720446174656E0DFA |
| :1006A0000A002020204D6F746F72746573740D0AF8 |
| :1006B00000202020506172616D657465720D0A0022 |
| :1006C000202020446973706C61790D0A0020204855 |
| :1006D000617570746D656EFC202856302E312E3198 |
| :1006E000290D0A00506F727461626C6573204B6F44 |
| :1006F00070746572746F6F6C0D0A002A00200054CC |
| :1007000061737465206472FC636B656E0D0A00434F |
| :100710006F6E66696720202020004368616E6E65F9 |
| :100720006C73202000537469636B2020202020000C |
| :10073000486F6568652020202020004779726F206F |
| :100740002020202020004C6F6F70696E67202020D1 |
| :100750000043616D6572612020202000536F6E732D |
| :10076000746967657320005573657220202020200E |
| :100770002000436F75706C696E67202000436F6EB8 |
| :1007800066696728322920004C6F6F70696E677345 |
| :100790006574000202020202020202000404040460 |
| :1007A00004040303030808080805050808080005F1 |
| :1007B000090909090707070707070606060A0A06BF |
| :1007C000060505050909090900070B0B0B0B0C0CA5 |
| :1007D0000C0C0C0C0C0C01080201080201080201AF |
| :1007E00008020108020108020108020108020000D3 |
| :1007F0000000FF0400FF0400FF0400FF04003204B7 |
| :1008000000FF040006030040030014030020082139 |
| :10081000FA0800320800FF0800000500000500FA91 |
| :100820000800FA0800FA0800010000FF0500FF09AF |
| :1008300000FF0900FF0900FF0900FF0700FA070099 |
| :10084000FA0700FA0700190700FF0600FA0600FA87 |
| :100850000600FF0A00FF0A00FA0600FA0600FA0581 |
| :1008600000FA0500FF0500FF0900FF0900FF09006D |
| :10087000FF09000001000107000000000000000067 |
| :100880000000000000000000000000000000000068 |
| :10089000000000000000000000000000004C6F6F2E |
| :1008A000702075702020202020202020004C6F6FA9 |
| :1008B0007020646F776E092020202000004C6F6F3D |
| :1008C00070206C656674202020202020004C6F6F03 |
| :1008D0007020726967687420202020200048F66824 |
| :1008E000656E7265676C6572202020200048F6688E |
| :1008F000656E736368616C74657220200048656181 |
| :1009000064686F6C6409090000000000004B6F6DA3 |
| :10091000706173730909000000000000004B6F6DE7 |
| :1009200070617373466978090900000000475053ED |
| :100930000909090000000000000000000041636890 |
| :1009400073656E6B6F70706C756E672000447265B6 |
| :10095000687261746509090000000000004E696357 |
| :100960006B202020202020202020202000526F6C8F |
| :100970006C20202020202020202020200047617390 |
| :1009800020202020202020202020202000476965D2 |
| :1009900072090909000000000000000000506F7497 |
| :1009A00069310909090000000000000000506F745F |
| :1009B00069320909090000000000000000506F744E |
| :1009C00069330909090000000000000000506F743D |
| :1009D00069340909090000000000000000436F6E3F |
| :1009E00066696709090900000000000000486F659A |
| :1009F00068655F4D696E476173202020004C756605 |
| :100A000074647275636B5F4420202020004D617810 |
| :100A1000486F6568652020202020202000486F65F1 |
| :100A200068655F50202020202020202000486F652E |
| :100A300068655F56657273746165726B00486F65B7 |
| :100A400068655F4143435F5769726B2E0053746959 |
| :100A5000636B5F50202020202020202000537469E9 |
| :100A6000636B5F4420202020202020200047696500 |
| :100A7000725F50202020202020202020004761731A |
| :100A80005F4D696E202020202020202000476173C8 |
| :100A90005F4D61782020202020202020004779729F |
| :100AA0006F41636346616B746F720900004B6F6D39 |
| :100AB000706173735769726B756E67200047797246 |
| :100AC0006F5F5020090900000000000000477972A4 |
| :100AD0006F5F4909090900000000000000556E74AD |
| :100AE00065727370616E6E756E672020004E6F7454 |
| :100AF000476173090909000000000000004E6F748F |
| :100B00004761735A65697420202020200055666F64 |
| :100B10004175737269636874756E672000495F463A |
| :100B2000616B746F72202020202020200055736597 |
| :100B300072506172616D31090900000000557365E2 |
| :100B400072506172616D32090900000000557365D1 |
| :100B500072506172616D33090900000000557365C0 |
| :100B600072506172616D34090900000000536572B2 |
| :100B7000766F4E69636B4374726C09000053657243 |
| :100B8000766F4E69636B436F6D7009000053657239 |
| :100B9000766F4E69636B4D696E0900000053657294 |
| :100BA000766F4E69636B4D61780900000053657282 |
| :100BB000766F4E69636B526566727368004C6F6F37 |
| :100BC000704761734C696D6974090000004C6F6F68 |
| :100BD000705468726573686F6C640900004C6F6FC5 |
| :100BE00070487973746572657365090000416368C4 |
| :100BF000734B6F70706C756E67090000004163681D |
| :100C000073476567656E4B6F70706C2E0057696E29 |
| :100C10006B6C556D7363686C4E69636B0057696EDE |
| :100C20006B6C556D7363686C526F6C6C00477972B6 |
| :100C30006F4163634162676C656963680044726910 |
| :100C400066746B6F6D700909000000000044796ED6 |
| :100C5000616D696353746162696C69740055736591 |
| :100C600072506172616D35090900000000557365AD |
| :100C700072506172616D360909000000005573659C |
| :100C800072506172616D370909000000005573658B |
| :100C900072506172616D380909000000004C6F6F7D |
| :100CA00070436F6E66696709090000000053657242 |
| :100CB000766F4E69636B436F6D70496E000D0A4E1F |
| :100CC00069636874206765737065696368657274C9 |
| :100CD000000D0A506172616D6574657220676573FD |
| :100CE0007065696368657274000D0A2D2D2D3E00D4 |
| :100CF000506172616D6574657220737065696368B7 |
| :100D000065726E3F0D0A20206A610D0A20206E6513 |
| :100D1000696E0054696D656F75740020353A0D0A6F |
| :100D20000020343A0D0A0020333A0D0A0020323AEE |
| :100D30000D0A0020313A0D0A004C616465205061B3 |
| :100D400072616D657465720D0A002D002D002D0015 |
| :100D5000457869740D0A00526563687465636B0DAC |
| :100D60000A004C696E69650D0A004F7269656E7400 |
| :100D7000696572756E670D0A000D0A0045696E732C |
| :100D800074656C6C756E67656E3A0D0A00202020E4 |
| :100D90002020202020202020202020202020202053 |
| :100DA00020000D0A54696D656F757421000D0A5499 |
| :100DB000696D656F7574210044656275672D4469BE |
| :100DC00073706C61790011241FBECFE5D8E0DEBFDF |
| :100DD000CDBF10E0A0E6B0E0ECE6FDE202C0059079 |
| :100DE0000D92A036B107D9F717E0A0E6B0E001C038 |
| :100DF0001D92A03DB107E1F70E94FE0D0C94B516BF |
| :100E00000C940000782F52E060E026C0E52FFF2709 |
| :100E1000E951FB4F21812D5332813D5343814D5385 |
| :100E20005C5FDC01AD59BB4F80818D53880F880F0B |
| :100E3000922F92959F70892B8C932295207F832FE0 |
| :100E400086958695282BFD0121833295330F330F2C |
| :100E5000307C342B32836D5F862F99275717B0F281 |
| :100E600008950F931F93B82F809163048093E70434 |
| :100E7000809164048093E804809165048093E90480 |
| :100E8000A3E073E035C0E72FFF27ED59FB4F8081CA |
| :100E9000418162817D5FEA2FFF27E951FB4F282FB7 |
| :100EA00026952695235C208355279927837090707B |
| :100EB00024E0880F991F2A95E1F79A0104E03695FE |
| :100EC00027950A95E1F7822B835C81834F705070E0 |
| :100ED000440F551F440F551F862F82958695869582 |
| :100EE0008370842B835C82836F73635C6383AC5FEA |
| :100EF0007B1748F290E020E030E008C0E92FFF27A0 |
| :100F0000E951FB4F8081280F311D9F5F9A17B1F780 |
| :100F10003F70EA2FFF27E951FB4FC90136E0969554 |
| :100F200087953A95E1F7835C80832F73235C218357 |
| :100F30008DE0828313820A2F0D5F10E008C0E12F3D |
| :100F4000FF27E951FB4F80810E94E3121F5F1017BA |
| :100F5000B1F71F910F9108951F9384E180936B0562 |
| :100F60000E94BE12833221F080916B058823C1F765 |
| :100F700080916B05882319F481E090E017C00E94EE |
| :100F8000BE128093E70411E00AC00E94BE12E12F56 |
| :100F9000FF27E951FB4F80831F5F17FD1FE78D304F |
| :100FA000A1F7812F0E94020780E090E01F91089531 |
| :100FB0001F93CF93DF93CDB7DEB761970FB6F89449 |
| :100FC000DEBF0FBECDBF182F83E28093630481E69E |
| :100FD0008093640480936504109366041092670400 |
| :100FE0001092680486E00E9431070E94AC0780914D |
| :100FF000E8048134D1F7E3E6F4E0DE011196819153 |
| :101000008D9384E0E337F807D1F7198A177020E051 |
| :10101000AE014F5F5F4F612F80E00E94FC0A619636 |
| :101020000FB6F894DEBF0FBECDBFDF91CF911F91F9 |
| :1010300008959F92AF92BF92CF92DF92EF92FF926C |
| :101040000F931F93CF93DF93CDB7DEB761970FB6A2 |
| :10105000F894DEBF0FBECDBF0E945A099924A92C77 |
| :10106000BB2453E0AA0CBB1C5A95E1F7FA2C00E014 |
| :1010700010E08F2D800F0E94D8070F5F1F4F0830A0 |
| :101080001105B9F70E94AC078091E804843489F512 |
| :101090007501EE0CFF1C85E694E0E80EF91ECC24E9 |
| :1010A000DD248E010F5F1F4FF70120818181992779 |
| :1010B000982F88274AE050E0B801820F911D0E94C6 |
| :1010C000271620E044E550E06C2D8EE00E94C60A11 |
| :1010D00020E0A8016C2D8EE00E94FC0A0894C11C3F |
| :1010E000D11C82E090E0E80EF91E98E0C916D10408 |
| :1010F000C1F680916E05882329F280916E058130BA |
| :1011000009F4939480916E05823009F49A94809149 |
| :101110006E05883019F0E3E09E22A1CF61960FB6EC |
| :10112000F894DEBF0FBECDBFDF91CF911F910F911D |
| :10113000FF90EF90DF90CF90BF90AF909F90089579 |
| :101140001F9393E29093630491E69093640498E66E |
| :10115000909365048093660410926704109268046B |
| :1011600086E00E94310710E00E94AC07813009F44C |
| :101170001AE01F5F8091E8048053853018F01A3020 |
| :1011800098F304C080E090E01A3010F081E090E025 |
| :101190001F9108951F93CF93DF93CDB7DEB72A97A2 |
| :1011A0000FB6F894DEBF0FBECDBF0E945A0960E0B3 |
| :1011B00086E690E00E94980A80916E058823E1F708 |
| :1011C0000E94A008813069F460E08BE590E00E9405 |
| :1011D000980A88EC80936B0580916B05882369F1F0 |
| :1011E000FBCF1091E80419831A8220E0AE014F5F13 |
| :1011F0005F4F60E08AE00E94FC0A1F5F20E043E648 |
| :1012000054E0612F80E00E94FC0A8AE080936B0525 |
| :1012100080916B058823E1F780916E05813011F490 |
| :101220000E94A00880916E05823011F40E94A008EF |
| :1012300080916E05843009F0BFCF2A960FB6F894DE |
| :10124000DEBF0FBECDBFDF91CF911F910895C4982F |
| :101250008FB9779BFECF8EB18EB9C49A08951F9334 |
| :10126000CF93DF93E2E6F0E0119284E0E236F807F4 |
| :10127000D9F710EBC398812F0E94270980E10E94C3 |
| :101280002709809161000E942709C39AC0E0D0E03D |
| :1012900080E00E9427092196C038D105C9F71F5F59 |
| :1012A000183B41F71092690510926A05DF91CF91C2 |
| :1012B0001F9108950E942F09089580EA9FE00197E9 |
| :1012C000F1F708950F931F93CF93DF938C01C0E044 |
| :1012D000D0E003C00E945D092196C017D107D1F765 |
| :1012E000DF91CF911F910F9108951092690510928F |
| :1012F0006A058FEF87BB8EE58DB9C49AC2988AE0E4 |
| :1013000090E00E946209C29AC498C39880E40E9447 |
| :10131000270980916100882329F481EA0E94270926 |
| :1013200080EC04C080EA0E94270988EC0E9427090B |
| :1013300086EA0E94270982EA0E9427098FE20E941A |
| :10134000270988EF0E94270980E00E94270987E289 |
| :101350000E94270981E80E94270986E10E94270947 |
| :101360008CEA0E94270980E00E9427098FEA0E94E8 |
| :1013700027090E942F090895FF920F931F938C0154 |
| :10138000F62EC398880F892F881F990B9195805549 |
| :101390000E942709809161000F77080F802F8295A6 |
| :1013A0008F70805F0E942709802F8F700E9427090D |
| :1013B000C39A8F2D0E9427091F910F91FF900895C6 |
| :1013C000EF92FF920F931F93CF93DF93C0E0D0E093 |
| :1013D00002E610E032EEE32E30E0F32EF7018191C9 |
| :1013E0007F01F801808361918F01CE010E94BC09C9 |
| :1013F0002196F3E0C038DF0789F702EE13E0F80129 |
| :1014000011928F0160E0CE010E94BC092196F4E0A8 |
| :10141000C030DF07A1F7DF91CF911F910F91FF90AF |
| :10142000EF900895CF92DF92EF92FF920F931F9368 |
| :10143000CF93DF93D22E4F3D81F0403E38F4463DAE |
| :10144000B1F04C3DB1F0443CA9F40FC0463F49F027 |
| :101450004C3F49F0443E71F402C041EE0BC044E8F9 |
| :1014600009C044E907C041E805C04EE803C049E9A6 |
| :1014700001C04AE9062F11271695102F002717954E |
| :10148000079526E0829FC0011124080F191F1370D1 |
| :10149000429F700111248EE690E0E80EF91ECC24E4 |
| :1014A000E801CE59DF4FF7019491F2E0DF16A1F089 |
| :1014B000FD1530F0DD2059F081E0D816B1F409C0F7 |
| :1014C000E3E0DE1661F0F4E0DF1679F40AC09883F9 |
| :1014D0000CC08881892B08C08881892705C0888134 |
| :1014E00002C088819095892388836991C8010E94F0 |
| :1014F000BC09C3940894E11CF11C0F5F1F4F86E0E8 |
| :10150000C81689F6DF91CF911F910F91FF90EF9050 |
| :10151000DF90CF90089580916A058F5F80936A0570 |
| :10152000883028F00E94E00987E080936A050895DA |
| :101530001F93CF93DF93EC01162F20C04032A0F011 |
| :101540002196212F60916A05809169050E94120AF7 |
| :10155000809169058F5F80936905853178F01092DD |
| :1015600069050E948B0A0AC04A3029F04D3029F4DF |
| :101570001092690502C00E948B0A2196FE014491D7 |
| :101580004423E1F6DF91CF911F910895809369057F |
| :1015900060936A05622FCA010E94980A08951F93FA |
| :1015A000CF93DF93EC01162F20C04032A0F021969C |
| :1015B000212F60916A05809169050E94120A80912D |
| :1015C00069058F5F80936905853178F01092690510 |
| :1015D0000E948B0A0AC04A3029F04D3029F410923B |
| :1015E000690502C00E948B0A219648814423E9F6CE |
| :1015F000DF91CF911F9108958093690560936A05EB |
| :10160000622FCA010E94CF0A0895982F87FD39C022 |
| :101610006034B8F5862F869586958695282F3327D2 |
| :101620003695322F222737952795290F311D677060 |
| :1016300081E090E001C0880F6A95EAF7682F337067 |
| :10164000413061F0413018F04230A1F40DC0F90191 |
| :10165000EE59FF4F8081609586230BC0F901EE594A |
| :10166000FF4F8081862B05C0F901EE59FF4F808125 |
| :1016700086278083F901EE59FF4F6081C9010E94DE |
| :10168000BC0908952F923F924F925F926F927F9282 |
| :101690008F929F92AF92BF92CF92DF92EF92FF9282 |
| :1016A0000F931F93CF93DF93CDB7DEB728970FB675 |
| :1016B000F894DEBF0FBECDBF8D83162F0E83682E2C |
| :1016C0007724862E9924842F99279C838B838619CF |
| :1016D0009709E22FFF27FA83E9839F012819390927 |
| :1016E00097FF04C0FFEF2F2E3F2E07C040E050E0D1 |
| :1016F000009711F041E050E01A0137FF04C0EFEF0E |
| :101700004E2E5E2E08C040E050E02115310511F04C |
| :1017100041E050E02A016C0197FF04C0D094C194CD |
| :10172000D108D394790137FF04C0F094E194F10813 |
| :10173000F3944E81682D862D0E94050BEC14FD0458 |
| :101740007CF5C60162E070E00E948E1644275527A2 |
| :10175000461B570B58874F83A22CB62CB20C5D81C9 |
| :10176000052F112717C08F8198858E0D9F1D988793 |
| :101770008F831816190634F4840C951C8C199D0956 |
| :1017800098878F834E81682D8B2D0E94050B020D4B |
| :10179000131DBA0CEB81FC810E171F0721F72DC01A |
| :1017A000C70162E070E00E948E1644275527461B51 |
| :1017B000570B58874F83A42CB82CB40C012F11273A |
| :1017C00017C08F8198858C0D9D1D98878F83181663 |
| :1017D000190634F4620C731C8E199F0998878F8345 |
| :1017E0004E816B2D862D0E94050B040D151DBA0C24 |
| :1017F000E981FA810E171F0721F728960FB6F89492 |
| :10180000DEBF0FBECDBFDF91CF911F910F91FF9033 |
| :10181000EF90DF90CF90BF90AF909F908F907F9090 |
| :101820006F905F904F903F902F900895BF92CF920E |
| :10183000DF92EF92FF920F931F93CF93DF93182FB6 |
| :10184000B02E87FD1FE7603408F06FE37727CB01E8 |
| :10185000820F911D9C01812F840F912D911D6C0190 |
| :1018600091E8C916D10418F0B0E8CB2ED12C79013B |
| :101870002134310518F0A0E4EA2EF12CEB0108C068 |
| :101880000B2D2C2F4C2D6C2F812F0E94420B21965B |
| :10189000EC16FD06A8F7DF91CF911F910F91FF90F5 |
| :1018A000EF90DF90CF90BF900895CF92DF92EF92AC |
| :1018B000FF920F931F93CF93DF93D82EC02E87FFF5 |
| :1018C00002C08FE7D82E162F603408F01FE3812F57 |
| :1018D000820F912D911DEC018D2D840F912D911D65 |
| :1018E0007C0191E8E916F10418F000E8E02EF12CF3 |
| :1018F0000C2D212F4E2D612F8D2D0E94420BC134B6 |
| :10190000D10510F0C0E4D0E00C2D2C2F4E2D612F0E |
| :101910008E2D0E94420B2C2F4D2D6C2F8E2D0E9450 |
| :10192000420B212F4D2D6C2F8D2D0E94420BDF91EC |
| :10193000CF911F910F91FF90EF90DF90CF9008957E |
| :101940002F923F924F925F926F927F928F929F92CF |
| :10195000AF92BF92CF92DF92EF92FF920F931F93BD |
| :10196000CF93DF93CDB7DEB724970FB6F894DEBFE1 |
| :101970000FBECDBF8C016B017A01A22E21E030E0B9 |
| :10198000241B350B3C832B83CA01880F991F6624C7 |
| :101990007724681A790A462E502E640F4A2D802F1C |
| :1019A0000E94050B6C2D6E194A2D802F0E94050B8D |
| :1019B0004A2D6C2D802F8E0D0E94050B4A2D6C2D0B |
| :1019C000802F8E190E94050B4701222433241A828E |
| :1019D000198258C08B819C8197FD0BC008948108A7 |
| :1019E0009108E2E0F0E06E0E7F1E860D971D9C834D |
| :1019F0008B830894211C311C29813A812E5F3F4F33 |
| :101A00003A8329838B819C810196820F931F9C834B |
| :101A10008B83142D180DD52CD20C4A2D612F8D2DB2 |
| :101A20000E94050BE52CE2184A2D612F8E2D0E9495 |
| :101A3000050B142D18194A2D612F8D2D0E94050BB1 |
| :101A40004A2D612F8E2D0E94050B142D120DE52CB1 |
| :101A5000E80C4A2D612F8E2D0E94050B952D9819AB |
| :101A6000092F4A2D612F892F0E94050B142D121961 |
| :101A70004A2D612F8E2D0E94050B4A2D612F802F3C |
| :101A80000E94050B281439040CF4A4CF24960FB639 |
| :101A9000F894DEBF0FBECDBFDF91CF911F910F91A4 |
| :101AA000FF90EF90DF90CF90BF90AF909F908F907E |
| :101AB0007F906F905F904F903F902F9008952F925E |
| :101AC0003F924F925F926F927F928F929F92AF92CE |
| :101AD000BF92CF92DF92EF92FF920F931F93CF931B |
| :101AE000DF936B017A0151E0A52EB12CAE18BF082F |
| :101AF0009701220F331F88249924821A930A662E95 |
| :101B0000782E262F2E196E0D01E0482F0E94420BD1 |
| :101B1000472D4E192C2D6C2D872D8E0D0E94420BBA |
| :101B2000E70144245524222433243AC0B7FC07C0DB |
| :101B3000219782E090E0880E991EA80CB91C0894A9 |
| :101B4000411C511C82E090E0280E391E0894A11C13 |
| :101B5000B11CA20CB31C1C2F662D6C0FE72CE418D3 |
| :101B6000D72CD40C01E0262F4E2D8D2D0E94420B38 |
| :101B7000662D6C1B262F4E2D8D2D0E94420B662D3F |
| :101B8000640DE72CEC1A170D262F4E2D812F0E9485 |
| :101B9000420B662D6419262F4E2D812F0E94420B79 |
| :101BA0004C165D061CF2DF91CF911F910F91FF90B3 |
| :101BB000EF90DF90CF90BF90AF909F908F907F90ED |
| :101BC0006F905F904F903F902F900895A2E0B0E00B |
| :101BD0000E94A116802D992780936100089581E0CD |
| :101BE00021E030E0D901082E0E94A91680E02F5F85 |
| :101BF0003F4FD901082E0E94A91608958FEF8BBB85 |
| :101C000083E488BB8CEF85BB8CE782BB83E084BB1D |
| :101C100080E881BB21E030E0D9010E94A116802D2F |
| :101C2000813071F081E0D901082E0E94A91680E070 |
| :101C30002F5F3F4FD901082E0E94A9162150304036 |
| :101C40002F5F3F4FD9010E94A116802D99278093C5 |
| :101C500061000E9475090E94B9120E9430137894A5 |
| :101C60000E94870EFDCF0F931F93062F142F20E0A5 |
| :101C70004DEF56E0682F812F0E94C60A20E04BEFFF |
| :101C800056E0602F812F0E94C60A1F910F91089580 |
| :101C9000EF92FF920F931F93082FE62EF42E682FDA |
| :101CA0000E94330E102F912F80916E058823E1F74B |
| :101CB00080916E058823E1F380916E05823019F4DE |
| :101CC0001E1508F41F5F80916E05813019F401170D |
| :101CD00008F411504F2D612F892F0E94330E8091EF |
| :101CE0006E05883021F080916E058430E1F6809198 |
| :101CF0006E05843009F41FEF80916E058823E1F7AB |
| :101D0000812F99271F910F91FF90EF9008950E94C6 |
| :101D10005A0960E084EE96E00E94980A60E08DEC3B |
| :101D200096E00E94980A60E080EC96E00E94980A93 |
| :101D300060E081EB96E00E94980A60E082EA96E01B |
| :101D40000E94980A60E081E996E00E94980A60E0AB |
| :101D500083E896E00E94980A60E08EE696E00E9492 |
| :101D6000980A4FE066E082E00E94480E843091F0CD |
| :101D7000853028F4823041F08330A1F408C08530EA |
| :101D800061F0863079F40CC00E94CA0808950E9460 |
| :101D9000E41108950E94D30E08950E94311508950C |
| :101DA0000E944E1308950E945A0980916E0588235F |
| :101DB000E1F760E08FEF96E00E94980A80916E054F |
| :101DC0008823E1F380916E058830C9F483E2809323 |
| :101DD000630481E68093640484E7809365048AE069 |
| :101DE00080936604809367048093680480936904F9 |
| :101DF00010926A0410926B0489E00E94310780916E |
| :101E00006E058823E1F780916E058823E1F383E274 |
| :101E10008093630481E68093640484E7809365047F |
| :101E2000109266041092670410926804109269047C |
| :101E300010926A0410926B0489E00E9431070895A1 |
| :101E4000FB0120E030E0482F552761E0CA01022E57 |
| :101E500002C0959587950A94E2F780FF02C06083DF |
| :101E600001C010822F5F3F4F31962830310571F746 |
| :101E7000089540E020E030E061E070E0FC018191F5 |
| :101E8000813041F4CB01022E02C0880F991F0A94C1 |
| :101E9000E2F7480F2F5F3F4F2830310581F7842F3D |
| :101EA00099270895482FFB0164E60E946E168083EF |
| :101EB00024E6829FC0011124481B842F6AE00E94FF |
| :101EC0006E162AE0829F90011124421B405D4283DE |
| :101ED0009081905D9083805D8183903329F490E2BE |
| :101EE0009083803309F4918313820895CF92DF9217 |
| :101EF000EF92FF920F931F93CF93DF93CDB7DEB78F |
| :101F000062970FB6F894DEBF0FBECDBF823008F4E3 |
| :101F100055C0615044E080E00E94480EC82E8FEF0B |
| :101F2000C81609F421C1EC2CFF24F701EA54F84F3C |
| :101F3000E081FF27ED59FB4FD08020E04EE45DE0CB |
| :101F40006C2D84E00E94C60A80916E058823E1F71B |
| :101F500080916E05813009F4DA9480916E058230AB |
| :101F600009F4D3948E01075F1F4FB8018D2D0E9495 |
| :101F7000520F20E0A8016C2D80E00E94FC0A84E151 |
| :101F800080936B0580916B058823E1F780916E0546 |
| :101F9000843021F080916E058830D1F680916E05F5 |
| :101FA000883009F0E1C0A6EBB7E0EA0EFB1ED701CE |
| :101FB000EC91FF27ED59FB4FD082D6C0813009F05C |
| :101FC00069C08E010F5F1F4FB801809197040E9476 |
| :101FD000200F1A8644E063E080E00E94480ED82E6D |
| :101FE000BFEF8B1709F4C0C0E82EFF240E0D1F1D94 |
| :101FF000F801008120E04CE45DE0682F84E00E945D |
| :10200000C60A80916E05813009F400E080916E056A |
| :10201000823009F401E0005D0987005320E0AE0141 |
| :10202000475F5F4F6D2D80E00E94FC0A84E1809342 |
| :102030006B0580916B058823E1F780916E058830F0 |
| :1020400021F080916E058430E1F680916E05883034 |
| :1020500051F4CE010196E80EF91ED7010C930E94AF |
| :10206000390F809397040E945A098E01075F1F4F12 |
| :10207000B801809197040E94520F60E0C8010E944D |
| :10208000CF0A88EC80936B0580916B05882309F457 |
| :102090006BC0FACF882309F067C08E010F5F1F4F16 |
| :1020A000B80180916B040E94200F1A8644E067E01B |
| :1020B00080E00E94480ED82EBFEF8B1709F454C061 |
| :1020C000E82EFF240E0D1F1DF801008120E04AE4D8 |
| :1020D0005DE0682F84E00E94C60A80916E05813021 |
| :1020E00009F400E080916E05823009F401E0005DA2 |
| :1020F0000987005320E0AE01475F5F4F6D2D80E000 |
| :102100000E94FC0A84E180936B0580916B05882313 |
| :10211000E1F780916E05883021F080916E05843062 |
| :10212000E1F680916E05883051F4CE010196E80EFB |
| :10213000F91ED7010C930E94390F80936B040E9403 |
| :102140005A098E01075F1F4FB80180916B040E94EE |
| :10215000520F60E0C8010E94CF0A88EC80936B05A3 |
| :1021600080916B058823E1F762960FB6F894DEBF85 |
| :102170000FBECDBFDF91CF911F910F91FF90EF90D8 |
| :10218000DF90CF9008956F927F928F929F92AF923F |
| :10219000BF92CF92DF92EF92FF920F931F93CF9354 |
| :1021A000DF93CDB7DEB7A1970FB6F894DEBF0FBEB1 |
| :1021B000CDBFE82E81E08E1508F044C048EDA42E76 |
| :1021C00047E0B42E3DE5632E39E0732EFF24CC2486 |
| :1021D000DD2423E6822E24E0922EF50184918E15D3 |
| :1021E000E9F4EF2DFF27EA54F84FC0828E01075F14 |
| :1021F0001F4FB801F40180810E94520F20E0A80116 |
| :102200006F2D80E00E94FC0A20E0A3016F2D85E085 |
| :102210000E94C60AF7E0FF1508F0F3940894C11C69 |
| :10222000D11C83E090E0A80EB91E0894811C911C7B |
| :10223000E0E1F0E06E0E7F1EF2E4CF16D10409F467 |
| :1022400063C0CBCF81E0E81679F58E010F5F1F4F99 |
| :10225000B801809197040E94200F1A869DE9A92E4B |
| :1022600098E0B92E6801CE0101961C2D181BF601CD |
| :1022700081916F01805D898720E0AE01475F5F4FEC |
| :10228000612F80E00E94FC0A20E0A501612F85E01B |
| :102290000E94C60A80E190E0A80EB91ECE01059604 |
| :1022A000C816D90681F1DFCFEE2069F58E010F5FE8 |
| :1022B0001F4FB80180916B040E94200F1A8668019D |
| :1022C0008DEDA82E88E0B82ECE010196FC2CF81AD0 |
| :1022D000F60181916F01805D89878E01075F1F4F35 |
| :1022E00020E0A8016F2D80E00E94FC0A20E0A501FB |
| :1022F0006F2D85E00E94C60A80E190E0A80EB91E0D |
| :10230000C016D10609F7FF248F2D9927A1960FB685 |
| :10231000F894DEBF0FBECDBFDF91CF911F910F911B |
| :10232000FF90EF90DF90CF90BF90AF909F908F90F5 |
| :102330007F906F900895982F8630D8F426E430E08F |
| :10234000E9EAF4E0808183832150304031978FEFB8 |
| :102350002F3F3807B9F783E28093630481E68093C7 |
| :1023600064049559909365041092AD048BE40E9427 |
| :10237000310708951F9393E29093630491E690933D |
| :10238000640491E790936504809366041092670457 |
| :102390001092680486E00E94310710E00E94AC07AA |
| :1023A000813009F41EE11F5F8091E8048C54853070 |
| :1023B00018F01E3198F304C080E090E01E3110F058 |
| :1023C00081E090E01F910895FF920F931F93CF93A8 |
| :1023D000DF93CDB7DEB72F970FB6F894DEBF0FBEF1 |
| :1023E000CDBF0E945A0960E089E39DE00E94980AEF |
| :1023F00060E083E39DE00E94980A60E08DE29DE04A |
| :102400000E94980A60E087E29DE00E94980A60E0DE |
| :1024100081E29DE00E94980A60E08BE19DE00E94CD |
| :10242000980A40E065E081E00E94480E0E94BA11DF |
| :10243000813041F420E043E15DE066E080E00E940D |
| :10244000C60A62C062E0F62E0E945A098E010F5F32 |
| :102450001F4F4AE050E0B8018F2D99270E9448167F |
| :1024600060E0C8010E94CF0A82E380936B058091EF |
| :102470006B058823E1F70E945A098F2D0E94C31033 |
| :10248000682F80916E058823E1F380916E0582307C |
| :1024900009F4F39480916E05813009F4FA948FEF7A |
| :1024A000F81619F45CE0F52E04C08CE08F1508F4E2 |
| :1024B000FF2480916E05883019F48F2D0E94760FCD |
| :1024C00080916E05843009F0BFCF0E945A0960E008 |
| :1024D00080EF9CE00E94980A40E062E081E00E9468 |
| :1024E000480E813061F460E089EE9CE00E94980A19 |
| :1024F00085E00E949B1160E081ED9CE003C060E0FC |
| :102500008DEB9CE00E94980A84E680936B05809195 |
| :102510006B058823E1F72F960FB6F894DEBF0FBE48 |
| :10252000CDBFDF91CF911F910F91FF9008951F9222 |
| :102530000F920FB60F9211248F939F93EF93FF93F7 |
| :102540008091BE079CB1E0ECF7E0E80FF11D9083AD |
| :102550008F5F8093BE078091BE078F708093BE0708 |
| :10256000FF91EF919F918F910F900FBE0F901F9051 |
| :10257000189588E98AB980E189B908958AE080933D |
| :102580006D059091BF078091BE07981721F4809147 |
| :102590006D058823B1F780916D05882311F4E0E083 |
| :1025A0000FC08091BF07E82FFF27E054F84FE0816C |
| :1025B0008F5F8093BF078091BF078F708093BF07A5 |
| :1025C0008E2F992708955D9BFECF8CB90895FC014D |
| :1025D00004C05D9BFECF8CB9319680818823C9F7FA |
| :1025E00008951F920F920FB60F9211248F939F930D |
| :1025F00080916C05882331F080916C058150809327 |
| :102600006C0515C08AE080936C0589B39927809585 |
| :102610009095689413F8959587951694E1F78F70C7 |
| :1026200080936E0580916F058F5F80936F05809119 |
| :102630006B05882329F080916B05815080936B0591 |
| :1026400080916D05882329F080916D0581508093DC |
| :102650006D059F918F910F900FBE0F901F90189551 |
| :102660008DE083BF8CE98CBF89B7826089BF0895F4 |
| :10267000F89480916100882321F484E080936100C4 |
| :1026800002C01092610080916100A2E0B0E0082ECB |
| :102690000E94A9160E947509789408950F931F93BC |
| :1026A00011E00E945A0960E08CE79DE00E94980AC0 |
| :1026B00060E089E79DE00E94980A60E08AE69DE07C |
| :1026C0000E94980A60E082E69DE00E94980A60E01D |
| :1026D00087E59DE00E94980A60E080E59DE00E9409 |
| :1026E000980A4FE065E082E00E94480E833049F08E |
| :1026F0008430C9F0823011F010E026C00E943813F7 |
| :1027000023C00E945A0901E022E344E664E18AE022 |
| :102710000E94420B80916E058830B1F080916E0569 |
| :10272000843091F0F7CF0E945A0901E028E244E694 |
| :1027300064E18AE00E94550C80916E05883021F09A |
| :1027400080916E058430C1F7112309F0AACF1F9143 |
| :102750000F910895CF93DF93EC0152E070E026C013 |
| :10276000E52FFF27E951FB4F21812D5332813D5346 |
| :1027700043814D535C5FDE01A80FB91F80818D53EB |
| :10278000880F880F922F92959F70892B8C9322959A |
| :10279000207F832F86958695282BFD0121833295F6 |
| :1027A000330F330F307C342B32837D5F872F992793 |
| :1027B0005617B0F2DF91CF9108954F925F926F92CA |
| :1027C0007F928F929F92AF92BF92CF92DF92EF92C1 |
| :1027D000FF920F931F93CF93DF93FC01EB0180E2F5 |
| :1027E000888340E8E130F40718F46624772408C0B1 |
| :1027F000F095E195FF4F8DE2888351E0652E712CB5 |
| :102800002E010894411C511CCF0160E177E20E9427 |
| :102810007A168B01262F332780E197E2BC01269F91 |
| :10282000C001279F900D369F900D11249F01281BFA |
| :10283000390B42E0C42ED12CCC0EDD1EC90168EE4E |
| :1028400073E00E947A167B01462F552788EE93E0AD |
| :10285000FC014E9FC0014F9F900D5E9F900D112473 |
| :10286000281B390B93E0A92EB12CAC0EBD1EC9015B |
| :1028700064E670E00E947A16FB0184E6689FC0015E |
| :102880001124281B390B84E0882E912C8C0E9D1E60 |
| :10289000C9016AE070E00E947A168AE0689FC00170 |
| :1028A0001124281B390B205D2D83005D0983F0E383 |
| :1028B000EF0EEA82E05DEB83605D6C83003391F59F |
| :1028C00080E2888341E06416710409F48DE2898313 |
| :1028D000F6018081803331F580E2F2018083F1E0FE |
| :1028E0006F16710409F48DE2F6018083F501808191 |
| :1028F0008033C1F480E2F6018083F1E06F16710449 |
| :1029000009F48DE2F5018083F4018081803351F474 |
| :1029100080E2F5018083F1E06F16710409F48DE225 |
| :10292000F40180831E82DF91CF911F910F91FF9060 |
| :10293000EF90DF90CF90BF90AF909F908F907F905F |
| :102940006F905F904F9008950F931F93082F84E12D |
| :1029500080936B050E94BE12833221F080916B053B |
| :102960008823C1F780916B05882319F481E090E0FA |
| :1029700030C00E94BE128093E70411E00AC00E949A |
| :10298000BE12E12FFF27E951FB4F80831F5F17FD28 |
| :102990001FE78D30A1F7023221F4612F80E795E027 |
| :1029A0000AC0802F992774E0880F991F7A95E1F764 |
| :1029B000612F8A549A4F0E94AA13E02FFF2764E0E8 |
| :1029C000EE0FFF1F6A95E1F7EA54FA4F178680E091 |
| :1029D00090E01F910F910895FF920F931F93F82E8F |
| :1029E00083E28093630481E68093640492E2F916A3 |
| :1029F00071F483E680936504109266041092670474 |
| :102A00001092680486E00E94310704E40FC09FE141 |
| :102A10009F1520F080936504F0926604109267047D |
| :102A20001092680486E00E94310701E410E08F2DC7 |
| :102A30000E94A414813009F41EE11F5F8091E80414 |
| :102A4000801710F0081718F41E3188F304C080E0D6 |
| :102A500090E01E3110F081E090E01F910F91FF9007 |
| :102A600008954F925F927F928F929F92AF92BF9202 |
| :102A7000CF92DF92EF92FF920F931F93CF93DF934A |
| :102A8000CDB7DEB72B970FB6F894DEBF0FBECDBF24 |
| :102A90000E945A0960E088EB9DE00E94980A1B861C |
| :102AA00000E010E0802F0E94EC14813039F4802F78 |
| :102AB0000E94EC14813011F421E02B870F5F1F4F2F |
| :102AC0000032110579F73B85313019F088249924BB |
| :102AD0000EC060E08DEA9DE00E94980A88EC809329 |
| :102AE0006B0580916B05882309F49BC0FACF809118 |
| :102AF0006E058823E1F782E20E94EC14813071F4C4 |
| :102B000060E082EA9DE00E94980A88EC80936B0561 |
| :102B100080916B05882309F484C0FACF8E010F5F82 |
| :102B20001F4FB801C4010E94DD1320E0A80160E03E |
| :102B30008FE00E94FC0AC401B3E0880F991FBA9588 |
| :102B4000E1F7881999096C01CC0CDD1CE2E7F5E08E |
| :102B5000CE0EDF1E7C01F4E0EE0CFF1CFA95E1F7CF |
| :102B600026EB35E0E20EF31E442455245C01742C60 |
| :102B7000739430E2A316B104B4F48E010F5F1F4FBB |
| :102B8000B801F601808191810E94DD1320E0A70148 |
| :102B9000672D80E00E94FC0A20E0A801672D8DE0EF |
| :102BA0000E94FC0A07C020E04DE85DE0672D80E050 |
| :102BB0000E94C60A0894411C511C0894A11CB11C17 |
| :102BC00022E030E0C20ED31E80E190E0E80EF91E54 |
| :102BD00097E04916510459F68AE080936B0580917D |
| :102BE0006B058823E1F780916E05813039F40894F4 |
| :102BF0008108910897FE02C08824992480916E056F |
| :102C0000823051F40894811C911CE8E08E169104E6 |
| :102C10001CF0E7E08E2E912C80916E05843009F037 |
| :102C200066CF2B960FB6F894DEBF0FBECDBFDF91F7 |
| :102C3000CF911F910F91FF90EF90DF90CF90BF90B9 |
| :102C4000AF909F908F907F905F904F900895FB0181 |
| :102C50009F01E8944230C4F04532B4F44A3029F47C |
| :102C600097FB1EF4909581959F4F642F77270E94C4 |
| :102C70007A16805D8A330CF0895D8193CB010097D1 |
| :102C8000A1F716F45DE251931082C9010C945E160F |
| :102C9000FB019F01423074F0453264F4642F7727C2 |
| :102CA0000E947A16805D8A330CF0895D8193CB0196 |
| :102CB0000097A1F71082C9010C945E16DC01FC019B |
| :102CC000672F71917723E1F7329704C07C916D9360 |
| :102CD00070836291AE17BF07C8F30895991B79E01E |
| :102CE00004C0991F961708F0961B881F7A95C9F79C |
| :102CF00080950895AA1BBB1B51E107C0AA1FBB1FEB |
| :102D0000A617B70710F0A61BB70B881F991F5A9577 |
| :102D1000A9F780959095BC01CD01089597FB092EE8 |
| :102D200007260AD077FD04D0E5DF06D000201AF48C |
| :102D3000709561957F4F0895F6F7909581959F4F17 |
| :102D40000895E199FECFBFBBAEBBE09A11960DB2DC |
| :102D50000895E199FECFBFBBAEBB0DBA11960FB679 |
| :0C2D6000F894E29AE19A0FBE0895FFCFAC |
| :00000001FF |
| /Transportables_Koptertool/tags/V-0.1.1/Spezial/MMT-Mega32-20.hex |
|---|
| 0,0 → 1,728 |
| :100000000C94E3060C9400070C9400070C94000772 |
| :100010000C9400070C9400070C9400070C94000744 |
| :100020000C9400070C9400070C94F1120C94000738 |
| :100030000C9400070C9497120C9400070C94000782 |
| :100040000C9400070C9400070C9400070C94000714 |
| :100050000C940007202020202020000D0A54696DF8 |
| :10006000656F75742100446973706C6179000000DC |
| :10007000000000003E5B4F5B3E003E6B4F6B3E005E |
| :100080001C3E7C3E1C00183C7E3C18001C577D57D3 |
| :100090001C001C5E7F5E1C0000183C180000FFE77F |
| :1000A000C3E7FF00001824180000FFE7DBE7FF00AC |
| :1000B00030483A060E00262979292600407F05059A |
| :1000C0000700407F05253F005A3CE73C5A007F3E31 |
| :1000D0001C1C0800081C1C3E7F0014227F221400F8 |
| :1000E0005F5F005F5F0006097F017F000066899502 |
| :1000F0006A0060606060606094A2FFA294000804DF |
| :100100007E04080010207E20100008082A1C080029 |
| :10011000081C2A0808001E10101010000C1E0C1ECF |
| :100120000C0030383E383000060E3E0E060000004F |
| :100130000000000000005F00000000070007000052 |
| :10014000147F147F1400242A7F2A120023130864CA |
| :100150006200364956205000000807030000001CCA |
| :10016000224100000041221C00002A1C7F1C2A00A2 |
| :1001700008083E08080000807030000008080808E1 |
| :1001800008000000606000002010080402003E51DA |
| :1001900049453E0000427F400000724949494600FF |
| :1001A0002141494D33001814127F10002745454561 |
| :1001B00039003C4A494931004121110907003649BB |
| :1001C00049493600464949291E0000001400000034 |
| :1001D00000403400000000081422410014141414DC |
| :1001E00014000041221408000201590906003E4192 |
| :1001F0005D594E007C1211127C007F49494936003E |
| :100200003E41414122007F4141413E007F494949F1 |
| :1002100041007F09090901003E41415173007F08F7 |
| :1002200008087F0000417F4100002040413F01005D |
| :100230007F08142241007F40404040007F021C02A2 |
| :100240007F007F0408107F003E4141413E007F094E |
| :10025000090906003E4151215E007F091929460027 |
| :1002600026494949320003017F0103003F404040D5 |
| :100270003F001F2040201F003F4038403F006314D4 |
| :10028000081463000304780403006159494D4300D6 |
| :10029000007F41414100020408102000004141411B |
| :1002A0007F0004020102040040404040400000037F |
| :1002B000070800002054547840007F284444380048 |
| :1002C000384444442800384444287F003854545467 |
| :1002D000180000087E09020018A4A49C78007F087A |
| :1002E0000404780000447D4000002040403D0000B0 |
| :1002F0007F102844000000417F4000007C04780407 |
| :1003000078007C0804047800384444443800FC1821 |
| :100310002424180018242418FC007C080404080075 |
| :1003200048545454240004043F4424003C404020DA |
| :100330007C001C2040201C003C4030403C004428F5 |
| :10034000102844004C9090907C004464544C44002D |
| :100350000008364100000000770000000041360828 |
| :1003600000000201020402003C2623263C001EA1DC |
| :10037000A16112003A4040207A0038545455590087 |
| :100380002155557941002154547841002155547824 |
| :1003900040002054557940000C1E5272120039550D |
| :1003A000555559003954545459003955545458002E |
| :1003B0000000457C41000002457D42000001457C73 |
| :1003C0004000791412147900F0282528F0007C549C |
| :1003D000554500002054547C54447C0A097F49410F |
| :1003E000324949493200324848483200324A484886 |
| :1003F00030003A4141217A003A4240207800009D85 |
| :10040000A0A07D003944444439003D4040403D00B7 |
| :100410003C24FF242400487E494366002B2FFC2FF8 |
| :100420002B00FF0929F62000C0887E090300205414 |
| :10043000547941000000447D41003048484A320070 |
| :10044000384040227A00007A0A0A72007D0D193184 |
| :100450007D002629292F2800262929292600304811 |
| :100460004D4020003808080808000808080838002F |
| :100470002F10C8ACBA002F102834FA0000007B00FF |
| :10048000000008142A14220022142A140800AA00CA |
| :100490005500AA00AA55AA55AA5555AA55AA55AA63 |
| :1004A000000000FF0000101010FF0000141414FFE3 |
| :1004B00000001010FF00FF001010F010F0001414E6 |
| :1004C00014FC00001414F700FF000000FF00FF0000 |
| :1004D0001414F404FC00141417101F0010101F1043 |
| :1004E0001F001414141F0000101010F00000000072 |
| :1004F000001F10101010101F1010101010F010100E |
| :10050000000000FF1010101010101010101010FF3D |
| :100510001010000000FF14140000FF00FF10000086 |
| :100520001F1017140000FC04F414141417101714EF |
| :100530001414F404F4140000FF00F7141414141439 |
| :1005400014141414F700F7141414141714141010BE |
| :100550001F101F10141414F414141010F010F010C5 |
| :1005600000001F101F100000001F1414000000FCEA |
| :1005700014140000F010F0101010FF10FF101414ED |
| :1005800014FF14141010101F0000000000F01010D1 |
| :10059000FFFFFFFFFFFFF0F0F0F0F0F0FFFFFF00C4 |
| :1005A0000000000000FFFFFF0F0F0F0F0F0F384478 |
| :1005B000443844007C2A2A3E14007E0202060600CB |
| :1005C000027E027E02006355494163003844443C88 |
| :1005D0000400407E201E200006027E02020099A533 |
| :1005E000E7A599001C2A492A1C004C7201724C0094 |
| :1005F000304A4D4D3000304878483000BC625A4691 |
| :100600003D003E49494900007E0101017E002A2A41 |
| :100610002A2A2A0044445F44440040514A4440008E |
| :1006200040444A5140000000FF010300E080FF0009 |
| :10063000000008086B6B0808361236243600060FD7 |
| :10064000090F06000000181800000000101000003C |
| :100650003040FF010100001F01011E0000191D179D |
| :100660001200003C3C3C3C000000000000004D6FCC |
| :1006700064206279204D696B656C6A6F2030352F7C |
| :1006800030380020202053657474696E67730D0A3A |
| :1006900000202020446562756720446174656E0DFA |
| :1006A0000A002020204D6F746F72746573740D0AF8 |
| :1006B00000202020506172616D657465720D0A0022 |
| :1006C000202020446973706C61790D0A0020204855 |
| :1006D000617570746D656EFC202856302E312E3198 |
| :1006E000290D0A00506F727461626C6573204B6F44 |
| :1006F00070746572746F6F6C0D0A002A00200054CC |
| :1007000061737465206472FC636B656E0D0A00434F |
| :100710006F6E66696720202020004368616E6E65F9 |
| :100720006C73202000537469636B2020202020000C |
| :10073000486F6568652020202020004779726F206F |
| :100740002020202020004C6F6F70696E67202020D1 |
| :100750000043616D6572612020202000536F6E732D |
| :10076000746967657320005573657220202020200E |
| :100770002000436F75706C696E67202000436F6EB8 |
| :1007800066696728322920004C6F6F70696E677345 |
| :100790006574000202020202020202000404040460 |
| :1007A00004040303030808080805050808080005F1 |
| :1007B000090909090707070707070606060A0A06BF |
| :1007C000060505050909090900070B0B0B0B0C0CA5 |
| :1007D0000C0C0C0C0C0C01080201080201080201AF |
| :1007E00008020108020108020108020108020000D3 |
| :1007F0000000FF0400FF0400FF0400FF04003204B7 |
| :1008000000FF040006030040030014030020082139 |
| :10081000FA0800320800FF0800000500000500FA91 |
| :100820000800FA0800FA0800010000FF0500FF09AF |
| :1008300000FF0900FF0900FF0900FF0700FA070099 |
| :10084000FA0700FA0700190700FF0600FA0600FA87 |
| :100850000600FF0A00FF0A00FA0600FA0600FA0581 |
| :1008600000FA0500FF0500FF0900FF0900FF09006D |
| :10087000FF09000001000107000000000000000067 |
| :100880000000000000000000000000000000000068 |
| :10089000000000000000000000000000004C6F6F2E |
| :1008A000702075702020202020202020004C6F6FA9 |
| :1008B0007020646F776E092020202000004C6F6F3D |
| :1008C00070206C656674202020202020004C6F6F03 |
| :1008D0007020726967687420202020200048F66824 |
| :1008E000656E7265676C6572202020200048F6688E |
| :1008F000656E736368616C74657220200048656181 |
| :1009000064686F6C6409090000000000004B6F6DA3 |
| :10091000706173730909000000000000004B6F6DE7 |
| :1009200070617373466978090900000000475053ED |
| :100930000909090000000000000000000041636890 |
| :1009400073656E6B6F70706C756E672000447265B6 |
| :10095000687261746509090000000000004E696357 |
| :100960006B202020202020202020202000526F6C8F |
| :100970006C20202020202020202020200047617390 |
| :1009800020202020202020202020202000476965D2 |
| :1009900072090909000000000000000000506F7497 |
| :1009A00069310909090000000000000000506F745F |
| :1009B00069320909090000000000000000506F744E |
| :1009C00069330909090000000000000000506F743D |
| :1009D00069340909090000000000000000436F6E3F |
| :1009E00066696709090900000000000000486F659A |
| :1009F00068655F4D696E476173202020004C756605 |
| :100A000074647275636B5F4420202020004D617810 |
| :100A1000486F6568652020202020202000486F65F1 |
| :100A200068655F50202020202020202000486F652E |
| :100A300068655F56657273746165726B00486F65B7 |
| :100A400068655F4143435F5769726B2E0053746959 |
| :100A5000636B5F50202020202020202000537469E9 |
| :100A6000636B5F4420202020202020200047696500 |
| :100A7000725F50202020202020202020004761731A |
| :100A80005F4D696E202020202020202000476173C8 |
| :100A90005F4D61782020202020202020004779729F |
| :100AA0006F41636346616B746F720900004B6F6D39 |
| :100AB000706173735769726B756E67200047797246 |
| :100AC0006F5F5020090900000000000000477972A4 |
| :100AD0006F5F4909090900000000000000556E74AD |
| :100AE00065727370616E6E756E672020004E6F7454 |
| :100AF000476173090909000000000000004E6F748F |
| :100B00004761735A65697420202020200055666F64 |
| :100B10004175737269636874756E672000495F463A |
| :100B2000616B746F72202020202020200055736597 |
| :100B300072506172616D31090900000000557365E2 |
| :100B400072506172616D32090900000000557365D1 |
| :100B500072506172616D33090900000000557365C0 |
| :100B600072506172616D34090900000000536572B2 |
| :100B7000766F4E69636B4374726C09000053657243 |
| :100B8000766F4E69636B436F6D7009000053657239 |
| :100B9000766F4E69636B4D696E0900000053657294 |
| :100BA000766F4E69636B4D61780900000053657282 |
| :100BB000766F4E69636B526566727368004C6F6F37 |
| :100BC000704761734C696D6974090000004C6F6F68 |
| :100BD000705468726573686F6C640900004C6F6FC5 |
| :100BE00070487973746572657365090000416368C4 |
| :100BF000734B6F70706C756E67090000004163681D |
| :100C000073476567656E4B6F70706C2E0057696E29 |
| :100C10006B6C556D7363686C4E69636B0057696EDE |
| :100C20006B6C556D7363686C526F6C6C00477972B6 |
| :100C30006F4163634162676C656963680044726910 |
| :100C400066746B6F6D700909000000000044796ED6 |
| :100C5000616D696353746162696C69740055736591 |
| :100C600072506172616D35090900000000557365AD |
| :100C700072506172616D360909000000005573659C |
| :100C800072506172616D370909000000005573658B |
| :100C900072506172616D380909000000004C6F6F7D |
| :100CA00070436F6E66696709090000000053657242 |
| :100CB000766F4E69636B436F6D70496E000D0A4E1F |
| :100CC00069636874206765737065696368657274C9 |
| :100CD000000D0A506172616D6574657220676573FD |
| :100CE0007065696368657274000D0A2D2D2D3E00D4 |
| :100CF000506172616D6574657220737065696368B7 |
| :100D000065726E3F0D0A20206A610D0A20206E6513 |
| :100D1000696E0054696D656F75740020353A0D0A6F |
| :100D20000020343A0D0A0020333A0D0A0020323AEE |
| :100D30000D0A0020313A0D0A004C616465205061B3 |
| :100D400072616D657465720D0A002D002D002D0015 |
| :100D5000457869740D0A00526563687465636B0DAC |
| :100D60000A004C696E69650D0A004F7269656E7400 |
| :100D7000696572756E670D0A000D0A0045696E732C |
| :100D800074656C6C756E67656E3A0D0A00202020E4 |
| :100D90002020202020202020202020202020202053 |
| :100DA00020000D0A54696D656F757421000D0A5499 |
| :100DB000696D656F7574210044656275672D4469BE |
| :100DC00073706C61790011241FBECFE5D8E0DEBFDF |
| :100DD000CDBF10E0A0E6B0E0ECE6FDE202C0059079 |
| :100DE0000D92A036B107D9F717E0A0E6B0E001C038 |
| :100DF0001D92A03DB107E1F70E94FE0D0C94B516BF |
| :100E00000C940000782F52E060E026C0E52FFF2709 |
| :100E1000E951FB4F21812D5332813D5343814D5385 |
| :100E20005C5FDC01AD59BB4F80818D53880F880F0B |
| :100E3000922F92959F70892B8C932295207F832FE0 |
| :100E400086958695282BFD0121833295330F330F2C |
| :100E5000307C342B32836D5F862F99275717B0F281 |
| :100E600008950F931F93B82F809163048093E70434 |
| :100E7000809164048093E804809165048093E90480 |
| :100E8000A3E073E035C0E72FFF27ED59FB4F8081CA |
| :100E9000418162817D5FEA2FFF27E951FB4F282FB7 |
| :100EA00026952695235C208355279927837090707B |
| :100EB00024E0880F991F2A95E1F79A0104E03695FE |
| :100EC00027950A95E1F7822B835C81834F705070E0 |
| :100ED000440F551F440F551F862F82958695869582 |
| :100EE0008370842B835C82836F73635C6383AC5FEA |
| :100EF0007B1748F290E020E030E008C0E92FFF27A0 |
| :100F0000E951FB4F8081280F311D9F5F9A17B1F780 |
| :100F10003F70EA2FFF27E951FB4FC90136E0969554 |
| :100F200087953A95E1F7835C80832F73235C218357 |
| :100F30008DE0828313820A2F0D5F10E008C0E12F3D |
| :100F4000FF27E951FB4F80810E94E3121F5F1017BA |
| :100F5000B1F71F910F9108951F9384E180936B0562 |
| :100F60000E94BE12833221F080916B058823C1F765 |
| :100F700080916B05882319F481E090E017C00E94EE |
| :100F8000BE128093E70411E00AC00E94BE12E12F56 |
| :100F9000FF27E951FB4F80831F5F17FD1FE78D304F |
| :100FA000A1F7812F0E94020780E090E01F91089531 |
| :100FB0001F93CF93DF93CDB7DEB761970FB6F89449 |
| :100FC000DEBF0FBECDBF182F83E28093630481E69E |
| :100FD0008093640480936504109366041092670400 |
| :100FE0001092680486E00E9431070E94AC0780914D |
| :100FF000E8048134D1F7E3E6F4E0DE011196819153 |
| :101000008D9384E0E337F807D1F7198A177020E051 |
| :10101000AE014F5F5F4F612F80E00E94FC0A619636 |
| :101020000FB6F894DEBF0FBECDBFDF91CF911F91F9 |
| :1010300008959F92AF92BF92CF92DF92EF92FF926C |
| :101040000F931F93CF93DF93CDB7DEB761970FB6A2 |
| :10105000F894DEBF0FBECDBF0E945A099924A92C77 |
| :10106000BB2453E0AA0CBB1C5A95E1F7FA2C00E014 |
| :1010700010E08F2D800F0E94D8070F5F1F4F0830A0 |
| :101080001105B9F70E94AC078091E804843489F512 |
| :101090007501EE0CFF1C85E694E0E80EF91ECC24E9 |
| :1010A000DD248E010F5F1F4FF70120818181992779 |
| :1010B000982F88274AE050E0B801820F911D0E94C6 |
| :1010C000271620E044E550E06C2D8EE00E94C60A11 |
| :1010D00020E0A8016C2D8EE00E94FC0A0894C11C3F |
| :1010E000D11C82E090E0E80EF91E98E0C916D10408 |
| :1010F000C1F680916E05882329F280916E058130BA |
| :1011000009F4939480916E05823009F49A94809149 |
| :101110006E05883019F0E3E09E22A1CF61960FB6EC |
| :10112000F894DEBF0FBECDBFDF91CF911F910F911D |
| :10113000FF90EF90DF90CF90BF90AF909F90089579 |
| :101140001F9393E29093630491E69093640498E66E |
| :10115000909365048093660410926704109268046B |
| :1011600086E00E94310710E00E94AC07813009F44C |
| :101170001AE01F5F8091E8048053853018F01A3020 |
| :1011800098F304C080E090E01A3010F081E090E025 |
| :101190001F9108951F93CF93DF93CDB7DEB72A97A2 |
| :1011A0000FB6F894DEBF0FBECDBF0E945A0960E0B3 |
| :1011B00086E690E00E94980A80916E058823E1F708 |
| :1011C0000E94A008813069F460E08BE590E00E9405 |
| :1011D000980A88EC80936B0580916B05882369F1F0 |
| :1011E000FBCF1091E80419831A8220E0AE014F5F13 |
| :1011F0005F4F60E08AE00E94FC0A1F5F20E043E648 |
| :1012000054E0612F80E00E94FC0A8AE080936B0525 |
| :1012100080916B058823E1F780916E05813011F490 |
| :101220000E94A00880916E05823011F40E94A008EF |
| :1012300080916E05843009F0BFCF2A960FB6F894DE |
| :10124000DEBF0FBECDBFDF91CF911F910895C4982F |
| :101250008FB9779BFECF8EB18EB9C49A08951F9334 |
| :10126000CF93DF93E2E6F0E0119284E0E236F807F4 |
| :10127000D9F710EBC398812F0E94270980E10E94C3 |
| :101280002709809161000E942709C39AC0E0D0E03D |
| :1012900080E00E9427092196C038D105C9F71F5F59 |
| :1012A000183B41F71092690510926A05DF91CF91C2 |
| :1012B0001F9108950E942F09089588E893E10197EE |
| :1012C000F1F708950F931F93CF93DF938C01C0E044 |
| :1012D000D0E003C00E945D092196C017D107D1F765 |
| :1012E000DF91CF911F910F9108951092690510928F |
| :1012F0006A058FEF87BB8EE58DB9C49AC2988AE0E4 |
| :1013000090E00E946209C29AC498C39880E40E9447 |
| :10131000270980916100882329F481EA0E94270926 |
| :1013200080EC04C080EA0E94270988EC0E9427090B |
| :1013300086EA0E94270982EA0E9427098FE20E941A |
| :10134000270988EF0E94270980E00E94270987E289 |
| :101350000E94270981E80E94270986E10E94270947 |
| :101360008CEA0E94270980E00E9427098FEA0E94E8 |
| :1013700027090E942F090895FF920F931F938C0154 |
| :10138000F62EC398880F892F881F990B9195805549 |
| :101390000E942709809161000F77080F802F8295A6 |
| :1013A0008F70805F0E942709802F8F700E9427090D |
| :1013B000C39A8F2D0E9427091F910F91FF900895C6 |
| :1013C000EF92FF920F931F93CF93DF93C0E0D0E093 |
| :1013D00002E610E032EEE32E30E0F32EF7018191C9 |
| :1013E0007F01F801808361918F01CE010E94BC09C9 |
| :1013F0002196F3E0C038DF0789F702EE13E0F80129 |
| :1014000011928F0160E0CE010E94BC092196F4E0A8 |
| :10141000C030DF07A1F7DF91CF911F910F91FF90AF |
| :10142000EF900895CF92DF92EF92FF920F931F9368 |
| :10143000CF93DF93D22E4F3D81F0403E38F4463DAE |
| :10144000B1F04C3DB1F0443CA9F40FC0463F49F027 |
| :101450004C3F49F0443E71F402C041EE0BC044E8F9 |
| :1014600009C044E907C041E805C04EE803C049E9A6 |
| :1014700001C04AE9062F11271695102F002717954E |
| :10148000079526E0829FC0011124080F191F1370D1 |
| :10149000429F700111248EE690E0E80EF91ECC24E4 |
| :1014A000E801CE59DF4FF7019491F2E0DF16A1F089 |
| :1014B000FD1530F0DD2059F081E0D816B1F409C0F7 |
| :1014C000E3E0DE1661F0F4E0DF1679F40AC09883F9 |
| :1014D0000CC08881892B08C08881892705C0888134 |
| :1014E00002C088819095892388836991C8010E94F0 |
| :1014F000BC09C3940894E11CF11C0F5F1F4F86E0E8 |
| :10150000C81689F6DF91CF911F910F91FF90EF9050 |
| :10151000DF90CF90089580916A058F5F80936A0570 |
| :10152000883028F00E94E00987E080936A050895DA |
| :101530001F93CF93DF93EC01162F20C04032A0F011 |
| :101540002196212F60916A05809169050E94120AF7 |
| :10155000809169058F5F80936905853178F01092DD |
| :1015600069050E948B0A0AC04A3029F04D3029F4DF |
| :101570001092690502C00E948B0A2196FE014491D7 |
| :101580004423E1F6DF91CF911F910895809369057F |
| :1015900060936A05622FCA010E94980A08951F93FA |
| :1015A000CF93DF93EC01162F20C04032A0F021969C |
| :1015B000212F60916A05809169050E94120A80912D |
| :1015C00069058F5F80936905853178F01092690510 |
| :1015D0000E948B0A0AC04A3029F04D3029F410923B |
| :1015E000690502C00E948B0A219648814423E9F6CE |
| :1015F000DF91CF911F9108958093690560936A05EB |
| :10160000622FCA010E94CF0A0895982F87FD39C022 |
| :101610006034B8F5862F869586958695282F3327D2 |
| :101620003695322F222737952795290F311D677060 |
| :1016300081E090E001C0880F6A95EAF7682F337067 |
| :10164000413061F0413018F04230A1F40DC0F90191 |
| :10165000EE59FF4F8081609586230BC0F901EE594A |
| :10166000FF4F8081862B05C0F901EE59FF4F808125 |
| :1016700086278083F901EE59FF4F6081C9010E94DE |
| :10168000BC0908952F923F924F925F926F927F9282 |
| :101690008F929F92AF92BF92CF92DF92EF92FF9282 |
| :1016A0000F931F93CF93DF93CDB7DEB728970FB675 |
| :1016B000F894DEBF0FBECDBF8D83162F0E83682E2C |
| :1016C0007724862E9924842F99279C838B838619CF |
| :1016D0009709E22FFF27FA83E9839F012819390927 |
| :1016E00097FF04C0FFEF2F2E3F2E07C040E050E0D1 |
| :1016F000009711F041E050E01A0137FF04C0EFEF0E |
| :101700004E2E5E2E08C040E050E02115310511F04C |
| :1017100041E050E02A016C0197FF04C0D094C194CD |
| :10172000D108D394790137FF04C0F094E194F10813 |
| :10173000F3944E81682D862D0E94050BEC14FD0458 |
| :101740007CF5C60162E070E00E948E1644275527A2 |
| :10175000461B570B58874F83A22CB62CB20C5D81C9 |
| :10176000052F112717C08F8198858E0D9F1D988793 |
| :101770008F831816190634F4840C951C8C199D0956 |
| :1017800098878F834E81682D8B2D0E94050B020D4B |
| :10179000131DBA0CEB81FC810E171F0721F72DC01A |
| :1017A000C70162E070E00E948E1644275527461B51 |
| :1017B000570B58874F83A42CB82CB40C012F11273A |
| :1017C00017C08F8198858C0D9D1D98878F83181663 |
| :1017D000190634F4620C731C8E199F0998878F8345 |
| :1017E0004E816B2D862D0E94050B040D151DBA0C24 |
| :1017F000E981FA810E171F0721F728960FB6F89492 |
| :10180000DEBF0FBECDBFDF91CF911F910F91FF9033 |
| :10181000EF90DF90CF90BF90AF909F908F907F9090 |
| :101820006F905F904F903F902F900895BF92CF920E |
| :10183000DF92EF92FF920F931F93CF93DF93182FB6 |
| :10184000B02E87FD1FE7603408F06FE37727CB01E8 |
| :10185000820F911D9C01812F840F912D911D6C0190 |
| :1018600091E8C916D10418F0B0E8CB2ED12C79013B |
| :101870002134310518F0A0E4EA2EF12CEB0108C068 |
| :101880000B2D2C2F4C2D6C2F812F0E94420B21965B |
| :10189000EC16FD06A8F7DF91CF911F910F91FF90F5 |
| :1018A000EF90DF90CF90BF900895CF92DF92EF92AC |
| :1018B000FF920F931F93CF93DF93D82EC02E87FFF5 |
| :1018C00002C08FE7D82E162F603408F01FE3812F57 |
| :1018D000820F912D911DEC018D2D840F912D911D65 |
| :1018E0007C0191E8E916F10418F000E8E02EF12CF3 |
| :1018F0000C2D212F4E2D612F8D2D0E94420BC134B6 |
| :10190000D10510F0C0E4D0E00C2D2C2F4E2D612F0E |
| :101910008E2D0E94420B2C2F4D2D6C2F8E2D0E9450 |
| :10192000420B212F4D2D6C2F8D2D0E94420BDF91EC |
| :10193000CF911F910F91FF90EF90DF90CF9008957E |
| :101940002F923F924F925F926F927F928F929F92CF |
| :10195000AF92BF92CF92DF92EF92FF920F931F93BD |
| :10196000CF93DF93CDB7DEB724970FB6F894DEBFE1 |
| :101970000FBECDBF8C016B017A01A22E21E030E0B9 |
| :10198000241B350B3C832B83CA01880F991F6624C7 |
| :101990007724681A790A462E502E640F4A2D802F1C |
| :1019A0000E94050B6C2D6E194A2D802F0E94050B8D |
| :1019B0004A2D6C2D802F8E0D0E94050B4A2D6C2D0B |
| :1019C000802F8E190E94050B4701222433241A828E |
| :1019D000198258C08B819C8197FD0BC008948108A7 |
| :1019E0009108E2E0F0E06E0E7F1E860D971D9C834D |
| :1019F0008B830894211C311C29813A812E5F3F4F33 |
| :101A00003A8329838B819C810196820F931F9C834B |
| :101A10008B83142D180DD52CD20C4A2D612F8D2DB2 |
| :101A20000E94050BE52CE2184A2D612F8E2D0E9495 |
| :101A3000050B142D18194A2D612F8D2D0E94050BB1 |
| :101A40004A2D612F8E2D0E94050B142D120DE52CB1 |
| :101A5000E80C4A2D612F8E2D0E94050B952D9819AB |
| :101A6000092F4A2D612F892F0E94050B142D121961 |
| :101A70004A2D612F8E2D0E94050B4A2D612F802F3C |
| :101A80000E94050B281439040CF4A4CF24960FB639 |
| :101A9000F894DEBF0FBECDBFDF91CF911F910F91A4 |
| :101AA000FF90EF90DF90CF90BF90AF909F908F907E |
| :101AB0007F906F905F904F903F902F9008952F925E |
| :101AC0003F924F925F926F927F928F929F92AF92CE |
| :101AD000BF92CF92DF92EF92FF920F931F93CF931B |
| :101AE000DF936B017A0151E0A52EB12CAE18BF082F |
| :101AF0009701220F331F88249924821A930A662E95 |
| :101B0000782E262F2E196E0D01E0482F0E94420BD1 |
| :101B1000472D4E192C2D6C2D872D8E0D0E94420BBA |
| :101B2000E70144245524222433243AC0B7FC07C0DB |
| :101B3000219782E090E0880E991EA80CB91C0894A9 |
| :101B4000411C511C82E090E0280E391E0894A11C13 |
| :101B5000B11CA20CB31C1C2F662D6C0FE72CE418D3 |
| :101B6000D72CD40C01E0262F4E2D8D2D0E94420B38 |
| :101B7000662D6C1B262F4E2D8D2D0E94420B662D3F |
| :101B8000640DE72CEC1A170D262F4E2D812F0E9485 |
| :101B9000420B662D6419262F4E2D812F0E94420B79 |
| :101BA0004C165D061CF2DF91CF911F910F91FF90B3 |
| :101BB000EF90DF90CF90BF90AF909F908F907F90ED |
| :101BC0006F905F904F903F902F900895A2E0B0E00B |
| :101BD0000E94A116802D992780936100089581E0CD |
| :101BE00021E030E0D901082E0E94A91680E02F5F85 |
| :101BF0003F4FD901082E0E94A91608958FEF8BBB85 |
| :101C000083E488BB8CEF85BB8CE782BB83E084BB1D |
| :101C100080E881BB21E030E0D9010E94A116802D2F |
| :101C2000813071F081E0D901082E0E94A91680E070 |
| :101C30002F5F3F4FD901082E0E94A9162150304036 |
| :101C40002F5F3F4FD9010E94A116802D99278093C5 |
| :101C500061000E9475090E94B9120E9430137894A5 |
| :101C60000E94870EFDCF0F931F93062F142F20E0A5 |
| :101C70004DEF56E0682F812F0E94C60A20E04BEFFF |
| :101C800056E0602F812F0E94C60A1F910F91089580 |
| :101C9000EF92FF920F931F93082FE62EF42E682FDA |
| :101CA0000E94330E102F912F80916E058823E1F74B |
| :101CB00080916E058823E1F380916E05823019F4DE |
| :101CC0001E1508F41F5F80916E05813019F401170D |
| :101CD00008F411504F2D612F892F0E94330E8091EF |
| :101CE0006E05883021F080916E058430E1F6809198 |
| :101CF0006E05843009F41FEF80916E058823E1F7AB |
| :101D0000812F99271F910F91FF90EF9008950E94C6 |
| :101D10005A0960E084EE96E00E94980A60E08DEC3B |
| :101D200096E00E94980A60E080EC96E00E94980A93 |
| :101D300060E081EB96E00E94980A60E082EA96E01B |
| :101D40000E94980A60E081E996E00E94980A60E0AB |
| :101D500083E896E00E94980A60E08EE696E00E9492 |
| :101D6000980A4FE066E082E00E94480E843091F0CD |
| :101D7000853028F4823041F08330A1F408C08530EA |
| :101D800061F0863079F40CC00E94CA0808950E9460 |
| :101D9000E41108950E94D30E08950E94311508950C |
| :101DA0000E944E1308950E945A0980916E0588235F |
| :101DB000E1F760E08FEF96E00E94980A80916E054F |
| :101DC0008823E1F380916E058830C9F483E2809323 |
| :101DD000630481E68093640484E7809365048AE069 |
| :101DE00080936604809367048093680480936904F9 |
| :101DF00010926A0410926B0489E00E94310780916E |
| :101E00006E058823E1F780916E058823E1F383E274 |
| :101E10008093630481E68093640484E7809365047F |
| :101E2000109266041092670410926804109269047C |
| :101E300010926A0410926B0489E00E9431070895A1 |
| :101E4000FB0120E030E0482F552761E0CA01022E57 |
| :101E500002C0959587950A94E2F780FF02C06083DF |
| :101E600001C010822F5F3F4F31962830310571F746 |
| :101E7000089540E020E030E061E070E0FC018191F5 |
| :101E8000813041F4CB01022E02C0880F991F0A94C1 |
| :101E9000E2F7480F2F5F3F4F2830310581F7842F3D |
| :101EA00099270895482FFB0164E60E946E168083EF |
| :101EB00024E6829FC0011124481B842F6AE00E94FF |
| :101EC0006E162AE0829F90011124421B405D4283DE |
| :101ED0009081905D9083805D8183903329F490E2BE |
| :101EE0009083803309F4918313820895CF92DF9217 |
| :101EF000EF92FF920F931F93CF93DF93CDB7DEB78F |
| :101F000062970FB6F894DEBF0FBECDBF823008F4E3 |
| :101F100055C0615044E080E00E94480EC82E8FEF0B |
| :101F2000C81609F421C1EC2CFF24F701EA54F84F3C |
| :101F3000E081FF27ED59FB4FD08020E04EE45DE0CB |
| :101F40006C2D84E00E94C60A80916E058823E1F71B |
| :101F500080916E05813009F4DA9480916E058230AB |
| :101F600009F4D3948E01075F1F4FB8018D2D0E9495 |
| :101F7000520F20E0A8016C2D80E00E94FC0A84E151 |
| :101F800080936B0580916B058823E1F780916E0546 |
| :101F9000843021F080916E058830D1F680916E05F5 |
| :101FA000883009F0E1C0A6EBB7E0EA0EFB1ED701CE |
| :101FB000EC91FF27ED59FB4FD082D6C0813009F05C |
| :101FC00069C08E010F5F1F4FB801809197040E9476 |
| :101FD000200F1A8644E063E080E00E94480ED82E6D |
| :101FE000BFEF8B1709F4C0C0E82EFF240E0D1F1D94 |
| :101FF000F801008120E04CE45DE0682F84E00E945D |
| :10200000C60A80916E05813009F400E080916E056A |
| :10201000823009F401E0005D0987005320E0AE0141 |
| :10202000475F5F4F6D2D80E00E94FC0A84E1809342 |
| :102030006B0580916B058823E1F780916E058830F0 |
| :1020400021F080916E058430E1F680916E05883034 |
| :1020500051F4CE010196E80EF91ED7010C930E94AF |
| :10206000390F809397040E945A098E01075F1F4F12 |
| :10207000B801809197040E94520F60E0C8010E944D |
| :10208000CF0A88EC80936B0580916B05882309F457 |
| :102090006BC0FACF882309F067C08E010F5F1F4F16 |
| :1020A000B80180916B040E94200F1A8644E067E01B |
| :1020B00080E00E94480ED82EBFEF8B1709F454C061 |
| :1020C000E82EFF240E0D1F1DF801008120E04AE4D8 |
| :1020D0005DE0682F84E00E94C60A80916E05813021 |
| :1020E00009F400E080916E05823009F401E0005DA2 |
| :1020F0000987005320E0AE01475F5F4F6D2D80E000 |
| :102100000E94FC0A84E180936B0580916B05882313 |
| :10211000E1F780916E05883021F080916E05843062 |
| :10212000E1F680916E05883051F4CE010196E80EFB |
| :10213000F91ED7010C930E94390F80936B040E9403 |
| :102140005A098E01075F1F4FB80180916B040E94EE |
| :10215000520F60E0C8010E94CF0A88EC80936B05A3 |
| :1021600080916B058823E1F762960FB6F894DEBF85 |
| :102170000FBECDBFDF91CF911F910F91FF90EF90D8 |
| :10218000DF90CF9008956F927F928F929F92AF923F |
| :10219000BF92CF92DF92EF92FF920F931F93CF9354 |
| :1021A000DF93CDB7DEB7A1970FB6F894DEBF0FBEB1 |
| :1021B000CDBFE82E81E08E1508F044C048EDA42E76 |
| :1021C00047E0B42E3DE5632E39E0732EFF24CC2486 |
| :1021D000DD2423E6822E24E0922EF50184918E15D3 |
| :1021E000E9F4EF2DFF27EA54F84FC0828E01075F14 |
| :1021F0001F4FB801F40180810E94520F20E0A80116 |
| :102200006F2D80E00E94FC0A20E0A3016F2D85E085 |
| :102210000E94C60AF7E0FF1508F0F3940894C11C69 |
| :10222000D11C83E090E0A80EB91E0894811C911C7B |
| :10223000E0E1F0E06E0E7F1EF2E4CF16D10409F467 |
| :1022400063C0CBCF81E0E81679F58E010F5F1F4F99 |
| :10225000B801809197040E94200F1A869DE9A92E4B |
| :1022600098E0B92E6801CE0101961C2D181BF601CD |
| :1022700081916F01805D898720E0AE01475F5F4FEC |
| :10228000612F80E00E94FC0A20E0A501612F85E01B |
| :102290000E94C60A80E190E0A80EB91ECE01059604 |
| :1022A000C816D90681F1DFCFEE2069F58E010F5FE8 |
| :1022B0001F4FB80180916B040E94200F1A8668019D |
| :1022C0008DEDA82E88E0B82ECE010196FC2CF81AD0 |
| :1022D000F60181916F01805D89878E01075F1F4F35 |
| :1022E00020E0A8016F2D80E00E94FC0A20E0A501FB |
| :1022F0006F2D85E00E94C60A80E190E0A80EB91E0D |
| :10230000C016D10609F7FF248F2D9927A1960FB685 |
| :10231000F894DEBF0FBECDBFDF91CF911F910F911B |
| :10232000FF90EF90DF90CF90BF90AF909F908F90F5 |
| :102330007F906F900895982F8630D8F426E430E08F |
| :10234000E9EAF4E0808183832150304031978FEFB8 |
| :102350002F3F3807B9F783E28093630481E68093C7 |
| :1023600064049559909365041092AD048BE40E9427 |
| :10237000310708951F9393E29093630491E690933D |
| :10238000640491E790936504809366041092670457 |
| :102390001092680486E00E94310710E00E94AC07AA |
| :1023A000813009F41EE11F5F8091E8048C54853070 |
| :1023B00018F01E3198F304C080E090E01E3110F058 |
| :1023C00081E090E01F910895FF920F931F93CF93A8 |
| :1023D000DF93CDB7DEB72F970FB6F894DEBF0FBEF1 |
| :1023E000CDBF0E945A0960E089E39DE00E94980AEF |
| :1023F00060E083E39DE00E94980A60E08DE29DE04A |
| :102400000E94980A60E087E29DE00E94980A60E0DE |
| :1024100081E29DE00E94980A60E08BE19DE00E94CD |
| :10242000980A40E065E081E00E94480E0E94BA11DF |
| :10243000813041F420E043E15DE066E080E00E940D |
| :10244000C60A62C062E0F62E0E945A098E010F5F32 |
| :102450001F4F4AE050E0B8018F2D99270E9448167F |
| :1024600060E0C8010E94CF0A82E380936B058091EF |
| :102470006B058823E1F70E945A098F2D0E94C31033 |
| :10248000682F80916E058823E1F380916E0582307C |
| :1024900009F4F39480916E05813009F4FA948FEF7A |
| :1024A000F81619F45CE0F52E04C08CE08F1508F4E2 |
| :1024B000FF2480916E05883019F48F2D0E94760FCD |
| :1024C00080916E05843009F0BFCF0E945A0960E008 |
| :1024D00080EF9CE00E94980A40E062E081E00E9468 |
| :1024E000480E813061F460E089EE9CE00E94980A19 |
| :1024F00085E00E949B1160E081ED9CE003C060E0FC |
| :102500008DEB9CE00E94980A84E680936B05809195 |
| :102510006B058823E1F72F960FB6F894DEBF0FBE48 |
| :10252000CDBFDF91CF911F910F91FF9008951F9222 |
| :102530000F920FB60F9211248F939F93EF93FF93F7 |
| :102540008091BE079CB1E0ECF7E0E80FF11D9083AD |
| :102550008F5F8093BE078091BE078F708093BE0708 |
| :10256000FF91EF919F918F910F900FBE0F901F9051 |
| :10257000189588E98AB984E189B908958AE0809339 |
| :102580006D059091BF078091BE07981721F4809147 |
| :102590006D058823B1F780916D05882311F4E0E083 |
| :1025A0000FC08091BF07E82FFF27E054F84FE0816C |
| :1025B0008F5F8093BF078091BF078F708093BF07A5 |
| :1025C0008E2F992708955D9BFECF8CB90895FC014D |
| :1025D00004C05D9BFECF8CB9319680818823C9F7FA |
| :1025E00008951F920F920FB60F9211248F939F930D |
| :1025F00080916C05882331F080916C058150809327 |
| :102600006C0515C08AE080936C0589B39927809585 |
| :102610009095689413F8959587951694E1F78F70C7 |
| :1026200080936E0580916F058F5F80936F05809119 |
| :102630006B05882329F080916B05815080936B0591 |
| :1026400080916D05882329F080916D0581508093DC |
| :102650006D059F918F910F900FBE0F901F90189551 |
| :102660008DE083BF83EC8CBF89B7826089BF0895FA |
| :10267000F89480916100882321F484E080936100C4 |
| :1026800002C01092610080916100A2E0B0E0082ECB |
| :102690000E94A9160E947509789408950F931F93BC |
| :1026A00011E00E945A0960E08CE79DE00E94980AC0 |
| :1026B00060E089E79DE00E94980A60E08AE69DE07C |
| :1026C0000E94980A60E082E69DE00E94980A60E01D |
| :1026D00087E59DE00E94980A60E080E59DE00E9409 |
| :1026E000980A4FE065E082E00E94480E833049F08E |
| :1026F0008430C9F0823011F010E026C00E943813F7 |
| :1027000023C00E945A0901E022E344E664E18AE022 |
| :102710000E94420B80916E058830B1F080916E0569 |
| :10272000843091F0F7CF0E945A0901E028E244E694 |
| :1027300064E18AE00E94550C80916E05883021F09A |
| :1027400080916E058430C1F7112309F0AACF1F9143 |
| :102750000F910895CF93DF93EC0152E070E026C013 |
| :10276000E52FFF27E951FB4F21812D5332813D5346 |
| :1027700043814D535C5FDE01A80FB91F80818D53EB |
| :10278000880F880F922F92959F70892B8C9322959A |
| :10279000207F832F86958695282BFD0121833295F6 |
| :1027A000330F330F307C342B32837D5F872F992793 |
| :1027B0005617B0F2DF91CF9108954F925F926F92CA |
| :1027C0007F928F929F92AF92BF92CF92DF92EF92C1 |
| :1027D000FF920F931F93CF93DF93FC01EB0180E2F5 |
| :1027E000888340E8E130F40718F46624772408C0B1 |
| :1027F000F095E195FF4F8DE2888351E0652E712CB5 |
| :102800002E010894411C511CCF0160E177E20E9427 |
| :102810007A168B01262F332780E197E2BC01269F91 |
| :10282000C001279F900D369F900D11249F01281BFA |
| :10283000390B42E0C42ED12CCC0EDD1EC90168EE4E |
| :1028400073E00E947A167B01462F552788EE93E0AD |
| :10285000FC014E9FC0014F9F900D5E9F900D112473 |
| :10286000281B390B93E0A92EB12CAC0EBD1EC9015B |
| :1028700064E670E00E947A16FB0184E6689FC0015E |
| :102880001124281B390B84E0882E912C8C0E9D1E60 |
| :10289000C9016AE070E00E947A168AE0689FC00170 |
| :1028A0001124281B390B205D2D83005D0983F0E383 |
| :1028B000EF0EEA82E05DEB83605D6C83003391F59F |
| :1028C00080E2888341E06416710409F48DE2898313 |
| :1028D000F6018081803331F580E2F2018083F1E0FE |
| :1028E0006F16710409F48DE2F6018083F501808191 |
| :1028F0008033C1F480E2F6018083F1E06F16710449 |
| :1029000009F48DE2F5018083F4018081803351F474 |
| :1029100080E2F5018083F1E06F16710409F48DE225 |
| :10292000F40180831E82DF91CF911F910F91FF9060 |
| :10293000EF90DF90CF90BF90AF909F908F907F905F |
| :102940006F905F904F9008950F931F93082F84E12D |
| :1029500080936B050E94BE12833221F080916B053B |
| :102960008823C1F780916B05882319F481E090E0FA |
| :1029700030C00E94BE128093E70411E00AC00E949A |
| :10298000BE12E12FFF27E951FB4F80831F5F17FD28 |
| :102990001FE78D30A1F7023221F4612F80E795E027 |
| :1029A0000AC0802F992774E0880F991F7A95E1F764 |
| :1029B000612F8A549A4F0E94AA13E02FFF2764E0E8 |
| :1029C000EE0FFF1F6A95E1F7EA54FA4F178680E091 |
| :1029D00090E01F910F910895FF920F931F93F82E8F |
| :1029E00083E28093630481E68093640492E2F916A3 |
| :1029F00071F483E680936504109266041092670474 |
| :102A00001092680486E00E94310704E40FC09FE141 |
| :102A10009F1520F080936504F0926604109267047D |
| :102A20001092680486E00E94310701E410E08F2DC7 |
| :102A30000E94A414813009F41EE11F5F8091E80414 |
| :102A4000801710F0081718F41E3188F304C080E0D6 |
| :102A500090E01E3110F081E090E01F910F91FF9007 |
| :102A600008954F925F927F928F929F92AF92BF9202 |
| :102A7000CF92DF92EF92FF920F931F93CF93DF934A |
| :102A8000CDB7DEB72B970FB6F894DEBF0FBECDBF24 |
| :102A90000E945A0960E088EB9DE00E94980A1B861C |
| :102AA00000E010E0802F0E94EC14813039F4802F78 |
| :102AB0000E94EC14813011F421E02B870F5F1F4F2F |
| :102AC0000032110579F73B85313019F088249924BB |
| :102AD0000EC060E08DEA9DE00E94980A88EC809329 |
| :102AE0006B0580916B05882309F49BC0FACF809118 |
| :102AF0006E058823E1F782E20E94EC14813071F4C4 |
| :102B000060E082EA9DE00E94980A88EC80936B0561 |
| :102B100080916B05882309F484C0FACF8E010F5F82 |
| :102B20001F4FB801C4010E94DD1320E0A80160E03E |
| :102B30008FE00E94FC0AC401B3E0880F991FBA9588 |
| :102B4000E1F7881999096C01CC0CDD1CE2E7F5E08E |
| :102B5000CE0EDF1E7C01F4E0EE0CFF1CFA95E1F7CF |
| :102B600026EB35E0E20EF31E442455245C01742C60 |
| :102B7000739430E2A316B104B4F48E010F5F1F4FBB |
| :102B8000B801F601808191810E94DD1320E0A70148 |
| :102B9000672D80E00E94FC0A20E0A801672D8DE0EF |
| :102BA0000E94FC0A07C020E04DE85DE0672D80E050 |
| :102BB0000E94C60A0894411C511C0894A11CB11C17 |
| :102BC00022E030E0C20ED31E80E190E0E80EF91E54 |
| :102BD00097E04916510459F68AE080936B0580917D |
| :102BE0006B058823E1F780916E05813039F40894F4 |
| :102BF0008108910897FE02C08824992480916E056F |
| :102C0000823051F40894811C911CE8E08E169104E6 |
| :102C10001CF0E7E08E2E912C80916E05843009F037 |
| :102C200066CF2B960FB6F894DEBF0FBECDBFDF91F7 |
| :102C3000CF911F910F91FF90EF90DF90CF90BF90B9 |
| :102C4000AF909F908F907F905F904F900895FB0181 |
| :102C50009F01E8944230C4F04532B4F44A3029F47C |
| :102C600097FB1EF4909581959F4F642F77270E94C4 |
| :102C70007A16805D8A330CF0895D8193CB010097D1 |
| :102C8000A1F716F45DE251931082C9010C945E160F |
| :102C9000FB019F01423074F0453264F4642F7727C2 |
| :102CA0000E947A16805D8A330CF0895D8193CB0196 |
| :102CB0000097A1F71082C9010C945E16DC01FC019B |
| :102CC000672F71917723E1F7329704C07C916D9360 |
| :102CD00070836291AE17BF07C8F30895991B79E01E |
| :102CE00004C0991F961708F0961B881F7A95C9F79C |
| :102CF00080950895AA1BBB1B51E107C0AA1FBB1FEB |
| :102D0000A617B70710F0A61BB70B881F991F5A9577 |
| :102D1000A9F780959095BC01CD01089597FB092EE8 |
| :102D200007260AD077FD04D0E5DF06D000201AF48C |
| :102D3000709561957F4F0895F6F7909581959F4F17 |
| :102D40000895E199FECFBFBBAEBBE09A11960DB2DC |
| :102D50000895E199FECFBFBBAEBB0DBA11960FB679 |
| :0C2D6000F894E29AE19A0FBE0895FFCFAC |
| :00000001FF |
| /Transportables_Koptertool/tags/V-0.1.1/Spezial/MMT-Mega32-7.hex |
|---|
| 0,0 → 1,728 |
| :100000000C94E3060C9400070C9400070C94000772 |
| :100010000C9400070C9400070C9400070C94000744 |
| :100020000C9400070C9400070C94F1120C94000738 |
| :100030000C9400070C9497120C9400070C94000782 |
| :100040000C9400070C9400070C9400070C94000714 |
| :100050000C940007202020202020000D0A54696DF8 |
| :10006000656F75742100446973706C6179000000DC |
| :10007000000000003E5B4F5B3E003E6B4F6B3E005E |
| :100080001C3E7C3E1C00183C7E3C18001C577D57D3 |
| :100090001C001C5E7F5E1C0000183C180000FFE77F |
| :1000A000C3E7FF00001824180000FFE7DBE7FF00AC |
| :1000B00030483A060E00262979292600407F05059A |
| :1000C0000700407F05253F005A3CE73C5A007F3E31 |
| :1000D0001C1C0800081C1C3E7F0014227F221400F8 |
| :1000E0005F5F005F5F0006097F017F000066899502 |
| :1000F0006A0060606060606094A2FFA294000804DF |
| :100100007E04080010207E20100008082A1C080029 |
| :10011000081C2A0808001E10101010000C1E0C1ECF |
| :100120000C0030383E383000060E3E0E060000004F |
| :100130000000000000005F00000000070007000052 |
| :10014000147F147F1400242A7F2A120023130864CA |
| :100150006200364956205000000807030000001CCA |
| :10016000224100000041221C00002A1C7F1C2A00A2 |
| :1001700008083E08080000807030000008080808E1 |
| :1001800008000000606000002010080402003E51DA |
| :1001900049453E0000427F400000724949494600FF |
| :1001A0002141494D33001814127F10002745454561 |
| :1001B00039003C4A494931004121110907003649BB |
| :1001C00049493600464949291E0000001400000034 |
| :1001D00000403400000000081422410014141414DC |
| :1001E00014000041221408000201590906003E4192 |
| :1001F0005D594E007C1211127C007F49494936003E |
| :100200003E41414122007F4141413E007F494949F1 |
| :1002100041007F09090901003E41415173007F08F7 |
| :1002200008087F0000417F4100002040413F01005D |
| :100230007F08142241007F40404040007F021C02A2 |
| :100240007F007F0408107F003E4141413E007F094E |
| :10025000090906003E4151215E007F091929460027 |
| :1002600026494949320003017F0103003F404040D5 |
| :100270003F001F2040201F003F4038403F006314D4 |
| :10028000081463000304780403006159494D4300D6 |
| :10029000007F41414100020408102000004141411B |
| :1002A0007F0004020102040040404040400000037F |
| :1002B000070800002054547840007F284444380048 |
| :1002C000384444442800384444287F003854545467 |
| :1002D000180000087E09020018A4A49C78007F087A |
| :1002E0000404780000447D4000002040403D0000B0 |
| :1002F0007F102844000000417F4000007C04780407 |
| :1003000078007C0804047800384444443800FC1821 |
| :100310002424180018242418FC007C080404080075 |
| :1003200048545454240004043F4424003C404020DA |
| :100330007C001C2040201C003C4030403C004428F5 |
| :10034000102844004C9090907C004464544C44002D |
| :100350000008364100000000770000000041360828 |
| :1003600000000201020402003C2623263C001EA1DC |
| :10037000A16112003A4040207A0038545455590087 |
| :100380002155557941002154547841002155547824 |
| :1003900040002054557940000C1E5272120039550D |
| :1003A000555559003954545459003955545458002E |
| :1003B0000000457C41000002457D42000001457C73 |
| :1003C0004000791412147900F0282528F0007C549C |
| :1003D000554500002054547C54447C0A097F49410F |
| :1003E000324949493200324848483200324A484886 |
| :1003F00030003A4141217A003A4240207800009D85 |
| :10040000A0A07D003944444439003D4040403D00B7 |
| :100410003C24FF242400487E494366002B2FFC2FF8 |
| :100420002B00FF0929F62000C0887E090300205414 |
| :10043000547941000000447D41003048484A320070 |
| :10044000384040227A00007A0A0A72007D0D193184 |
| :100450007D002629292F2800262929292600304811 |
| :100460004D4020003808080808000808080838002F |
| :100470002F10C8ACBA002F102834FA0000007B00FF |
| :10048000000008142A14220022142A140800AA00CA |
| :100490005500AA00AA55AA55AA5555AA55AA55AA63 |
| :1004A000000000FF0000101010FF0000141414FFE3 |
| :1004B00000001010FF00FF001010F010F0001414E6 |
| :1004C00014FC00001414F700FF000000FF00FF0000 |
| :1004D0001414F404FC00141417101F0010101F1043 |
| :1004E0001F001414141F0000101010F00000000072 |
| :1004F000001F10101010101F1010101010F010100E |
| :10050000000000FF1010101010101010101010FF3D |
| :100510001010000000FF14140000FF00FF10000086 |
| :100520001F1017140000FC04F414141417101714EF |
| :100530001414F404F4140000FF00F7141414141439 |
| :1005400014141414F700F7141414141714141010BE |
| :100550001F101F10141414F414141010F010F010C5 |
| :1005600000001F101F100000001F1414000000FCEA |
| :1005700014140000F010F0101010FF10FF101414ED |
| :1005800014FF14141010101F0000000000F01010D1 |
| :10059000FFFFFFFFFFFFF0F0F0F0F0F0FFFFFF00C4 |
| :1005A0000000000000FFFFFF0F0F0F0F0F0F384478 |
| :1005B000443844007C2A2A3E14007E0202060600CB |
| :1005C000027E027E02006355494163003844443C88 |
| :1005D0000400407E201E200006027E02020099A533 |
| :1005E000E7A599001C2A492A1C004C7201724C0094 |
| :1005F000304A4D4D3000304878483000BC625A4691 |
| :100600003D003E49494900007E0101017E002A2A41 |
| :100610002A2A2A0044445F44440040514A4440008E |
| :1006200040444A5140000000FF010300E080FF0009 |
| :10063000000008086B6B0808361236243600060FD7 |
| :10064000090F06000000181800000000101000003C |
| :100650003040FF010100001F01011E0000191D179D |
| :100660001200003C3C3C3C000000000000004D6FCC |
| :1006700064206279204D696B656C6A6F2030352F7C |
| :1006800030380020202053657474696E67730D0A3A |
| :1006900000202020446562756720446174656E0DFA |
| :1006A0000A002020204D6F746F72746573740D0AF8 |
| :1006B00000202020506172616D657465720D0A0022 |
| :1006C000202020446973706C61790D0A0020204855 |
| :1006D000617570746D656EFC202856302E312E3198 |
| :1006E000290D0A00506F727461626C6573204B6F44 |
| :1006F00070746572746F6F6C0D0A002A00200054CC |
| :1007000061737465206472FC636B656E0D0A00434F |
| :100710006F6E66696720202020004368616E6E65F9 |
| :100720006C73202000537469636B2020202020000C |
| :10073000486F6568652020202020004779726F206F |
| :100740002020202020004C6F6F70696E67202020D1 |
| :100750000043616D6572612020202000536F6E732D |
| :10076000746967657320005573657220202020200E |
| :100770002000436F75706C696E67202000436F6EB8 |
| :1007800066696728322920004C6F6F70696E677345 |
| :100790006574000202020202020202000404040460 |
| :1007A00004040303030808080805050808080005F1 |
| :1007B000090909090707070707070606060A0A06BF |
| :1007C000060505050909090900070B0B0B0B0C0CA5 |
| :1007D0000C0C0C0C0C0C01080201080201080201AF |
| :1007E00008020108020108020108020108020000D3 |
| :1007F0000000FF0400FF0400FF0400FF04003204B7 |
| :1008000000FF040006030040030014030020082139 |
| :10081000FA0800320800FF0800000500000500FA91 |
| :100820000800FA0800FA0800010000FF0500FF09AF |
| :1008300000FF0900FF0900FF0900FF0700FA070099 |
| :10084000FA0700FA0700190700FF0600FA0600FA87 |
| :100850000600FF0A00FF0A00FA0600FA0600FA0581 |
| :1008600000FA0500FF0500FF0900FF0900FF09006D |
| :10087000FF09000001000107000000000000000067 |
| :100880000000000000000000000000000000000068 |
| :10089000000000000000000000000000004C6F6F2E |
| :1008A000702075702020202020202020004C6F6FA9 |
| :1008B0007020646F776E092020202000004C6F6F3D |
| :1008C00070206C656674202020202020004C6F6F03 |
| :1008D0007020726967687420202020200048F66824 |
| :1008E000656E7265676C6572202020200048F6688E |
| :1008F000656E736368616C74657220200048656181 |
| :1009000064686F6C6409090000000000004B6F6DA3 |
| :10091000706173730909000000000000004B6F6DE7 |
| :1009200070617373466978090900000000475053ED |
| :100930000909090000000000000000000041636890 |
| :1009400073656E6B6F70706C756E672000447265B6 |
| :10095000687261746509090000000000004E696357 |
| :100960006B202020202020202020202000526F6C8F |
| :100970006C20202020202020202020200047617390 |
| :1009800020202020202020202020202000476965D2 |
| :1009900072090909000000000000000000506F7497 |
| :1009A00069310909090000000000000000506F745F |
| :1009B00069320909090000000000000000506F744E |
| :1009C00069330909090000000000000000506F743D |
| :1009D00069340909090000000000000000436F6E3F |
| :1009E00066696709090900000000000000486F659A |
| :1009F00068655F4D696E476173202020004C756605 |
| :100A000074647275636B5F4420202020004D617810 |
| :100A1000486F6568652020202020202000486F65F1 |
| :100A200068655F50202020202020202000486F652E |
| :100A300068655F56657273746165726B00486F65B7 |
| :100A400068655F4143435F5769726B2E0053746959 |
| :100A5000636B5F50202020202020202000537469E9 |
| :100A6000636B5F4420202020202020200047696500 |
| :100A7000725F50202020202020202020004761731A |
| :100A80005F4D696E202020202020202000476173C8 |
| :100A90005F4D61782020202020202020004779729F |
| :100AA0006F41636346616B746F720900004B6F6D39 |
| :100AB000706173735769726B756E67200047797246 |
| :100AC0006F5F5020090900000000000000477972A4 |
| :100AD0006F5F4909090900000000000000556E74AD |
| :100AE00065727370616E6E756E672020004E6F7454 |
| :100AF000476173090909000000000000004E6F748F |
| :100B00004761735A65697420202020200055666F64 |
| :100B10004175737269636874756E672000495F463A |
| :100B2000616B746F72202020202020200055736597 |
| :100B300072506172616D31090900000000557365E2 |
| :100B400072506172616D32090900000000557365D1 |
| :100B500072506172616D33090900000000557365C0 |
| :100B600072506172616D34090900000000536572B2 |
| :100B7000766F4E69636B4374726C09000053657243 |
| :100B8000766F4E69636B436F6D7009000053657239 |
| :100B9000766F4E69636B4D696E0900000053657294 |
| :100BA000766F4E69636B4D61780900000053657282 |
| :100BB000766F4E69636B526566727368004C6F6F37 |
| :100BC000704761734C696D6974090000004C6F6F68 |
| :100BD000705468726573686F6C640900004C6F6FC5 |
| :100BE00070487973746572657365090000416368C4 |
| :100BF000734B6F70706C756E67090000004163681D |
| :100C000073476567656E4B6F70706C2E0057696E29 |
| :100C10006B6C556D7363686C4E69636B0057696EDE |
| :100C20006B6C556D7363686C526F6C6C00477972B6 |
| :100C30006F4163634162676C656963680044726910 |
| :100C400066746B6F6D700909000000000044796ED6 |
| :100C5000616D696353746162696C69740055736591 |
| :100C600072506172616D35090900000000557365AD |
| :100C700072506172616D360909000000005573659C |
| :100C800072506172616D370909000000005573658B |
| :100C900072506172616D380909000000004C6F6F7D |
| :100CA00070436F6E66696709090000000053657242 |
| :100CB000766F4E69636B436F6D70496E000D0A4E1F |
| :100CC00069636874206765737065696368657274C9 |
| :100CD000000D0A506172616D6574657220676573FD |
| :100CE0007065696368657274000D0A2D2D2D3E00D4 |
| :100CF000506172616D6574657220737065696368B7 |
| :100D000065726E3F0D0A20206A610D0A20206E6513 |
| :100D1000696E0054696D656F75740020353A0D0A6F |
| :100D20000020343A0D0A0020333A0D0A0020323AEE |
| :100D30000D0A0020313A0D0A004C616465205061B3 |
| :100D400072616D657465720D0A002D002D002D0015 |
| :100D5000457869740D0A00526563687465636B0DAC |
| :100D60000A004C696E69650D0A004F7269656E7400 |
| :100D7000696572756E670D0A000D0A0045696E732C |
| :100D800074656C6C756E67656E3A0D0A00202020E4 |
| :100D90002020202020202020202020202020202053 |
| :100DA00020000D0A54696D656F757421000D0A5499 |
| :100DB000696D656F7574210044656275672D4469BE |
| :100DC00073706C61790011241FBECFE5D8E0DEBFDF |
| :100DD000CDBF10E0A0E6B0E0ECE6FDE202C0059079 |
| :100DE0000D92A036B107D9F717E0A0E6B0E001C038 |
| :100DF0001D92A03DB107E1F70E94FE0D0C94B516BF |
| :100E00000C940000782F52E060E026C0E52FFF2709 |
| :100E1000E951FB4F21812D5332813D5343814D5385 |
| :100E20005C5FDC01AD59BB4F80818D53880F880F0B |
| :100E3000922F92959F70892B8C932295207F832FE0 |
| :100E400086958695282BFD0121833295330F330F2C |
| :100E5000307C342B32836D5F862F99275717B0F281 |
| :100E600008950F931F93B82F809163048093E70434 |
| :100E7000809164048093E804809165048093E90480 |
| :100E8000A3E073E035C0E72FFF27ED59FB4F8081CA |
| :100E9000418162817D5FEA2FFF27E951FB4F282FB7 |
| :100EA00026952695235C208355279927837090707B |
| :100EB00024E0880F991F2A95E1F79A0104E03695FE |
| :100EC00027950A95E1F7822B835C81834F705070E0 |
| :100ED000440F551F440F551F862F82958695869582 |
| :100EE0008370842B835C82836F73635C6383AC5FEA |
| :100EF0007B1748F290E020E030E008C0E92FFF27A0 |
| :100F0000E951FB4F8081280F311D9F5F9A17B1F780 |
| :100F10003F70EA2FFF27E951FB4FC90136E0969554 |
| :100F200087953A95E1F7835C80832F73235C218357 |
| :100F30008DE0828313820A2F0D5F10E008C0E12F3D |
| :100F4000FF27E951FB4F80810E94E3121F5F1017BA |
| :100F5000B1F71F910F9108951F9384E180936B0562 |
| :100F60000E94BE12833221F080916B058823C1F765 |
| :100F700080916B05882319F481E090E017C00E94EE |
| :100F8000BE128093E70411E00AC00E94BE12E12F56 |
| :100F9000FF27E951FB4F80831F5F17FD1FE78D304F |
| :100FA000A1F7812F0E94020780E090E01F91089531 |
| :100FB0001F93CF93DF93CDB7DEB761970FB6F89449 |
| :100FC000DEBF0FBECDBF182F83E28093630481E69E |
| :100FD0008093640480936504109366041092670400 |
| :100FE0001092680486E00E9431070E94AC0780914D |
| :100FF000E8048134D1F7E3E6F4E0DE011196819153 |
| :101000008D9384E0E337F807D1F7198A177020E051 |
| :10101000AE014F5F5F4F612F80E00E94FC0A619636 |
| :101020000FB6F894DEBF0FBECDBFDF91CF911F91F9 |
| :1010300008959F92AF92BF92CF92DF92EF92FF926C |
| :101040000F931F93CF93DF93CDB7DEB761970FB6A2 |
| :10105000F894DEBF0FBECDBF0E945A099924A92C77 |
| :10106000BB2453E0AA0CBB1C5A95E1F7FA2C00E014 |
| :1010700010E08F2D800F0E94D8070F5F1F4F0830A0 |
| :101080001105B9F70E94AC078091E804843489F512 |
| :101090007501EE0CFF1C85E694E0E80EF91ECC24E9 |
| :1010A000DD248E010F5F1F4FF70120818181992779 |
| :1010B000982F88274AE050E0B801820F911D0E94C6 |
| :1010C000271620E044E550E06C2D8EE00E94C60A11 |
| :1010D00020E0A8016C2D8EE00E94FC0A0894C11C3F |
| :1010E000D11C82E090E0E80EF91E98E0C916D10408 |
| :1010F000C1F680916E05882329F280916E058130BA |
| :1011000009F4939480916E05823009F49A94809149 |
| :101110006E05883019F0E3E09E22A1CF61960FB6EC |
| :10112000F894DEBF0FBECDBFDF91CF911F910F911D |
| :10113000FF90EF90DF90CF90BF90AF909F90089579 |
| :101140001F9393E29093630491E69093640498E66E |
| :10115000909365048093660410926704109268046B |
| :1011600086E00E94310710E00E94AC07813009F44C |
| :101170001AE01F5F8091E8048053853018F01A3020 |
| :1011800098F304C080E090E01A3010F081E090E025 |
| :101190001F9108951F93CF93DF93CDB7DEB72A97A2 |
| :1011A0000FB6F894DEBF0FBECDBF0E945A0960E0B3 |
| :1011B00086E690E00E94980A80916E058823E1F708 |
| :1011C0000E94A008813069F460E08BE590E00E9405 |
| :1011D000980A88EC80936B0580916B05882369F1F0 |
| :1011E000FBCF1091E80419831A8220E0AE014F5F13 |
| :1011F0005F4F60E08AE00E94FC0A1F5F20E043E648 |
| :1012000054E0612F80E00E94FC0A8AE080936B0525 |
| :1012100080916B058823E1F780916E05813011F490 |
| :101220000E94A00880916E05823011F40E94A008EF |
| :1012300080916E05843009F0BFCF2A960FB6F894DE |
| :10124000DEBF0FBECDBFDF91CF911F910895C4982F |
| :101250008FB9779BFECF8EB18EB9C49A08951F9334 |
| :10126000CF93DF93E2E6F0E0119284E0E236F807F4 |
| :10127000D9F710EBC398812F0E94270980E10E94C3 |
| :101280002709809161000E942709C39AC0E0D0E03D |
| :1012900080E00E9427092196C038D105C9F71F5F59 |
| :1012A000183B41F71092690510926A05DF91CF91C2 |
| :1012B0001F9108950E942F09089583E397E00197F5 |
| :1012C000F1F708950F931F93CF93DF938C01C0E044 |
| :1012D000D0E003C00E945D092196C017D107D1F765 |
| :1012E000DF91CF911F910F9108951092690510928F |
| :1012F0006A058FEF87BB8EE58DB9C49AC2988AE0E4 |
| :1013000090E00E946209C29AC498C39880E40E9447 |
| :10131000270980916100882329F481EA0E94270926 |
| :1013200080EC04C080EA0E94270988EC0E9427090B |
| :1013300086EA0E94270982EA0E9427098FE20E941A |
| :10134000270988EF0E94270980E00E94270987E289 |
| :101350000E94270981E80E94270986E10E94270947 |
| :101360008CEA0E94270980E00E9427098FEA0E94E8 |
| :1013700027090E942F090895FF920F931F938C0154 |
| :10138000F62EC398880F892F881F990B9195805549 |
| :101390000E942709809161000F77080F802F8295A6 |
| :1013A0008F70805F0E942709802F8F700E9427090D |
| :1013B000C39A8F2D0E9427091F910F91FF900895C6 |
| :1013C000EF92FF920F931F93CF93DF93C0E0D0E093 |
| :1013D00002E610E032EEE32E30E0F32EF7018191C9 |
| :1013E0007F01F801808361918F01CE010E94BC09C9 |
| :1013F0002196F3E0C038DF0789F702EE13E0F80129 |
| :1014000011928F0160E0CE010E94BC092196F4E0A8 |
| :10141000C030DF07A1F7DF91CF911F910F91FF90AF |
| :10142000EF900895CF92DF92EF92FF920F931F9368 |
| :10143000CF93DF93D22E4F3D81F0403E38F4463DAE |
| :10144000B1F04C3DB1F0443CA9F40FC0463F49F027 |
| :101450004C3F49F0443E71F402C041EE0BC044E8F9 |
| :1014600009C044E907C041E805C04EE803C049E9A6 |
| :1014700001C04AE9062F11271695102F002717954E |
| :10148000079526E0829FC0011124080F191F1370D1 |
| :10149000429F700111248EE690E0E80EF91ECC24E4 |
| :1014A000E801CE59DF4FF7019491F2E0DF16A1F089 |
| :1014B000FD1530F0DD2059F081E0D816B1F409C0F7 |
| :1014C000E3E0DE1661F0F4E0DF1679F40AC09883F9 |
| :1014D0000CC08881892B08C08881892705C0888134 |
| :1014E00002C088819095892388836991C8010E94F0 |
| :1014F000BC09C3940894E11CF11C0F5F1F4F86E0E8 |
| :10150000C81689F6DF91CF911F910F91FF90EF9050 |
| :10151000DF90CF90089580916A058F5F80936A0570 |
| :10152000883028F00E94E00987E080936A050895DA |
| :101530001F93CF93DF93EC01162F20C04032A0F011 |
| :101540002196212F60916A05809169050E94120AF7 |
| :10155000809169058F5F80936905853178F01092DD |
| :1015600069050E948B0A0AC04A3029F04D3029F4DF |
| :101570001092690502C00E948B0A2196FE014491D7 |
| :101580004423E1F6DF91CF911F910895809369057F |
| :1015900060936A05622FCA010E94980A08951F93FA |
| :1015A000CF93DF93EC01162F20C04032A0F021969C |
| :1015B000212F60916A05809169050E94120A80912D |
| :1015C00069058F5F80936905853178F01092690510 |
| :1015D0000E948B0A0AC04A3029F04D3029F410923B |
| :1015E000690502C00E948B0A219648814423E9F6CE |
| :1015F000DF91CF911F9108958093690560936A05EB |
| :10160000622FCA010E94CF0A0895982F87FD39C022 |
| :101610006034B8F5862F869586958695282F3327D2 |
| :101620003695322F222737952795290F311D677060 |
| :1016300081E090E001C0880F6A95EAF7682F337067 |
| :10164000413061F0413018F04230A1F40DC0F90191 |
| :10165000EE59FF4F8081609586230BC0F901EE594A |
| :10166000FF4F8081862B05C0F901EE59FF4F808125 |
| :1016700086278083F901EE59FF4F6081C9010E94DE |
| :10168000BC0908952F923F924F925F926F927F9282 |
| :101690008F929F92AF92BF92CF92DF92EF92FF9282 |
| :1016A0000F931F93CF93DF93CDB7DEB728970FB675 |
| :1016B000F894DEBF0FBECDBF8D83162F0E83682E2C |
| :1016C0007724862E9924842F99279C838B838619CF |
| :1016D0009709E22FFF27FA83E9839F012819390927 |
| :1016E00097FF04C0FFEF2F2E3F2E07C040E050E0D1 |
| :1016F000009711F041E050E01A0137FF04C0EFEF0E |
| :101700004E2E5E2E08C040E050E02115310511F04C |
| :1017100041E050E02A016C0197FF04C0D094C194CD |
| :10172000D108D394790137FF04C0F094E194F10813 |
| :10173000F3944E81682D862D0E94050BEC14FD0458 |
| :101740007CF5C60162E070E00E948E1644275527A2 |
| :10175000461B570B58874F83A22CB62CB20C5D81C9 |
| :10176000052F112717C08F8198858E0D9F1D988793 |
| :101770008F831816190634F4840C951C8C199D0956 |
| :1017800098878F834E81682D8B2D0E94050B020D4B |
| :10179000131DBA0CEB81FC810E171F0721F72DC01A |
| :1017A000C70162E070E00E948E1644275527461B51 |
| :1017B000570B58874F83A42CB82CB40C012F11273A |
| :1017C00017C08F8198858C0D9D1D98878F83181663 |
| :1017D000190634F4620C731C8E199F0998878F8345 |
| :1017E0004E816B2D862D0E94050B040D151DBA0C24 |
| :1017F000E981FA810E171F0721F728960FB6F89492 |
| :10180000DEBF0FBECDBFDF91CF911F910F91FF9033 |
| :10181000EF90DF90CF90BF90AF909F908F907F9090 |
| :101820006F905F904F903F902F900895BF92CF920E |
| :10183000DF92EF92FF920F931F93CF93DF93182FB6 |
| :10184000B02E87FD1FE7603408F06FE37727CB01E8 |
| :10185000820F911D9C01812F840F912D911D6C0190 |
| :1018600091E8C916D10418F0B0E8CB2ED12C79013B |
| :101870002134310518F0A0E4EA2EF12CEB0108C068 |
| :101880000B2D2C2F4C2D6C2F812F0E94420B21965B |
| :10189000EC16FD06A8F7DF91CF911F910F91FF90F5 |
| :1018A000EF90DF90CF90BF900895CF92DF92EF92AC |
| :1018B000FF920F931F93CF93DF93D82EC02E87FFF5 |
| :1018C00002C08FE7D82E162F603408F01FE3812F57 |
| :1018D000820F912D911DEC018D2D840F912D911D65 |
| :1018E0007C0191E8E916F10418F000E8E02EF12CF3 |
| :1018F0000C2D212F4E2D612F8D2D0E94420BC134B6 |
| :10190000D10510F0C0E4D0E00C2D2C2F4E2D612F0E |
| :101910008E2D0E94420B2C2F4D2D6C2F8E2D0E9450 |
| :10192000420B212F4D2D6C2F8D2D0E94420BDF91EC |
| :10193000CF911F910F91FF90EF90DF90CF9008957E |
| :101940002F923F924F925F926F927F928F929F92CF |
| :10195000AF92BF92CF92DF92EF92FF920F931F93BD |
| :10196000CF93DF93CDB7DEB724970FB6F894DEBFE1 |
| :101970000FBECDBF8C016B017A01A22E21E030E0B9 |
| :10198000241B350B3C832B83CA01880F991F6624C7 |
| :101990007724681A790A462E502E640F4A2D802F1C |
| :1019A0000E94050B6C2D6E194A2D802F0E94050B8D |
| :1019B0004A2D6C2D802F8E0D0E94050B4A2D6C2D0B |
| :1019C000802F8E190E94050B4701222433241A828E |
| :1019D000198258C08B819C8197FD0BC008948108A7 |
| :1019E0009108E2E0F0E06E0E7F1E860D971D9C834D |
| :1019F0008B830894211C311C29813A812E5F3F4F33 |
| :101A00003A8329838B819C810196820F931F9C834B |
| :101A10008B83142D180DD52CD20C4A2D612F8D2DB2 |
| :101A20000E94050BE52CE2184A2D612F8E2D0E9495 |
| :101A3000050B142D18194A2D612F8D2D0E94050BB1 |
| :101A40004A2D612F8E2D0E94050B142D120DE52CB1 |
| :101A5000E80C4A2D612F8E2D0E94050B952D9819AB |
| :101A6000092F4A2D612F892F0E94050B142D121961 |
| :101A70004A2D612F8E2D0E94050B4A2D612F802F3C |
| :101A80000E94050B281439040CF4A4CF24960FB639 |
| :101A9000F894DEBF0FBECDBFDF91CF911F910F91A4 |
| :101AA000FF90EF90DF90CF90BF90AF909F908F907E |
| :101AB0007F906F905F904F903F902F9008952F925E |
| :101AC0003F924F925F926F927F928F929F92AF92CE |
| :101AD000BF92CF92DF92EF92FF920F931F93CF931B |
| :101AE000DF936B017A0151E0A52EB12CAE18BF082F |
| :101AF0009701220F331F88249924821A930A662E95 |
| :101B0000782E262F2E196E0D01E0482F0E94420BD1 |
| :101B1000472D4E192C2D6C2D872D8E0D0E94420BBA |
| :101B2000E70144245524222433243AC0B7FC07C0DB |
| :101B3000219782E090E0880E991EA80CB91C0894A9 |
| :101B4000411C511C82E090E0280E391E0894A11C13 |
| :101B5000B11CA20CB31C1C2F662D6C0FE72CE418D3 |
| :101B6000D72CD40C01E0262F4E2D8D2D0E94420B38 |
| :101B7000662D6C1B262F4E2D8D2D0E94420B662D3F |
| :101B8000640DE72CEC1A170D262F4E2D812F0E9485 |
| :101B9000420B662D6419262F4E2D812F0E94420B79 |
| :101BA0004C165D061CF2DF91CF911F910F91FF90B3 |
| :101BB000EF90DF90CF90BF90AF909F908F907F90ED |
| :101BC0006F905F904F903F902F900895A2E0B0E00B |
| :101BD0000E94A116802D992780936100089581E0CD |
| :101BE00021E030E0D901082E0E94A91680E02F5F85 |
| :101BF0003F4FD901082E0E94A91608958FEF8BBB85 |
| :101C000083E488BB8CEF85BB8CE782BB83E084BB1D |
| :101C100080E881BB21E030E0D9010E94A116802D2F |
| :101C2000813071F081E0D901082E0E94A91680E070 |
| :101C30002F5F3F4FD901082E0E94A9162150304036 |
| :101C40002F5F3F4FD9010E94A116802D99278093C5 |
| :101C500061000E9475090E94B9120E9430137894A5 |
| :101C60000E94870EFDCF0F931F93062F142F20E0A5 |
| :101C70004DEF56E0682F812F0E94C60A20E04BEFFF |
| :101C800056E0602F812F0E94C60A1F910F91089580 |
| :101C9000EF92FF920F931F93082FE62EF42E682FDA |
| :101CA0000E94330E102F912F80916E058823E1F74B |
| :101CB00080916E058823E1F380916E05823019F4DE |
| :101CC0001E1508F41F5F80916E05813019F401170D |
| :101CD00008F411504F2D612F892F0E94330E8091EF |
| :101CE0006E05883021F080916E058430E1F6809198 |
| :101CF0006E05843009F41FEF80916E058823E1F7AB |
| :101D0000812F99271F910F91FF90EF9008950E94C6 |
| :101D10005A0960E084EE96E00E94980A60E08DEC3B |
| :101D200096E00E94980A60E080EC96E00E94980A93 |
| :101D300060E081EB96E00E94980A60E082EA96E01B |
| :101D40000E94980A60E081E996E00E94980A60E0AB |
| :101D500083E896E00E94980A60E08EE696E00E9492 |
| :101D6000980A4FE066E082E00E94480E843091F0CD |
| :101D7000853028F4823041F08330A1F408C08530EA |
| :101D800061F0863079F40CC00E94CA0808950E9460 |
| :101D9000E41108950E94D30E08950E94311508950C |
| :101DA0000E944E1308950E945A0980916E0588235F |
| :101DB000E1F760E08FEF96E00E94980A80916E054F |
| :101DC0008823E1F380916E058830C9F483E2809323 |
| :101DD000630481E68093640484E7809365048AE069 |
| :101DE00080936604809367048093680480936904F9 |
| :101DF00010926A0410926B0489E00E94310780916E |
| :101E00006E058823E1F780916E058823E1F383E274 |
| :101E10008093630481E68093640484E7809365047F |
| :101E2000109266041092670410926804109269047C |
| :101E300010926A0410926B0489E00E9431070895A1 |
| :101E4000FB0120E030E0482F552761E0CA01022E57 |
| :101E500002C0959587950A94E2F780FF02C06083DF |
| :101E600001C010822F5F3F4F31962830310571F746 |
| :101E7000089540E020E030E061E070E0FC018191F5 |
| :101E8000813041F4CB01022E02C0880F991F0A94C1 |
| :101E9000E2F7480F2F5F3F4F2830310581F7842F3D |
| :101EA00099270895482FFB0164E60E946E168083EF |
| :101EB00024E6829FC0011124481B842F6AE00E94FF |
| :101EC0006E162AE0829F90011124421B405D4283DE |
| :101ED0009081905D9083805D8183903329F490E2BE |
| :101EE0009083803309F4918313820895CF92DF9217 |
| :101EF000EF92FF920F931F93CF93DF93CDB7DEB78F |
| :101F000062970FB6F894DEBF0FBECDBF823008F4E3 |
| :101F100055C0615044E080E00E94480EC82E8FEF0B |
| :101F2000C81609F421C1EC2CFF24F701EA54F84F3C |
| :101F3000E081FF27ED59FB4FD08020E04EE45DE0CB |
| :101F40006C2D84E00E94C60A80916E058823E1F71B |
| :101F500080916E05813009F4DA9480916E058230AB |
| :101F600009F4D3948E01075F1F4FB8018D2D0E9495 |
| :101F7000520F20E0A8016C2D80E00E94FC0A84E151 |
| :101F800080936B0580916B058823E1F780916E0546 |
| :101F9000843021F080916E058830D1F680916E05F5 |
| :101FA000883009F0E1C0A6EBB7E0EA0EFB1ED701CE |
| :101FB000EC91FF27ED59FB4FD082D6C0813009F05C |
| :101FC00069C08E010F5F1F4FB801809197040E9476 |
| :101FD000200F1A8644E063E080E00E94480ED82E6D |
| :101FE000BFEF8B1709F4C0C0E82EFF240E0D1F1D94 |
| :101FF000F801008120E04CE45DE0682F84E00E945D |
| :10200000C60A80916E05813009F400E080916E056A |
| :10201000823009F401E0005D0987005320E0AE0141 |
| :10202000475F5F4F6D2D80E00E94FC0A84E1809342 |
| :102030006B0580916B058823E1F780916E058830F0 |
| :1020400021F080916E058430E1F680916E05883034 |
| :1020500051F4CE010196E80EF91ED7010C930E94AF |
| :10206000390F809397040E945A098E01075F1F4F12 |
| :10207000B801809197040E94520F60E0C8010E944D |
| :10208000CF0A88EC80936B0580916B05882309F457 |
| :102090006BC0FACF882309F067C08E010F5F1F4F16 |
| :1020A000B80180916B040E94200F1A8644E067E01B |
| :1020B00080E00E94480ED82EBFEF8B1709F454C061 |
| :1020C000E82EFF240E0D1F1DF801008120E04AE4D8 |
| :1020D0005DE0682F84E00E94C60A80916E05813021 |
| :1020E00009F400E080916E05823009F401E0005DA2 |
| :1020F0000987005320E0AE01475F5F4F6D2D80E000 |
| :102100000E94FC0A84E180936B0580916B05882313 |
| :10211000E1F780916E05883021F080916E05843062 |
| :10212000E1F680916E05883051F4CE010196E80EFB |
| :10213000F91ED7010C930E94390F80936B040E9403 |
| :102140005A098E01075F1F4FB80180916B040E94EE |
| :10215000520F60E0C8010E94CF0A88EC80936B05A3 |
| :1021600080916B058823E1F762960FB6F894DEBF85 |
| :102170000FBECDBFDF91CF911F910F91FF90EF90D8 |
| :10218000DF90CF9008956F927F928F929F92AF923F |
| :10219000BF92CF92DF92EF92FF920F931F93CF9354 |
| :1021A000DF93CDB7DEB7A1970FB6F894DEBF0FBEB1 |
| :1021B000CDBFE82E81E08E1508F044C048EDA42E76 |
| :1021C00047E0B42E3DE5632E39E0732EFF24CC2486 |
| :1021D000DD2423E6822E24E0922EF50184918E15D3 |
| :1021E000E9F4EF2DFF27EA54F84FC0828E01075F14 |
| :1021F0001F4FB801F40180810E94520F20E0A80116 |
| :102200006F2D80E00E94FC0A20E0A3016F2D85E085 |
| :102210000E94C60AF7E0FF1508F0F3940894C11C69 |
| :10222000D11C83E090E0A80EB91E0894811C911C7B |
| :10223000E0E1F0E06E0E7F1EF2E4CF16D10409F467 |
| :1022400063C0CBCF81E0E81679F58E010F5F1F4F99 |
| :10225000B801809197040E94200F1A869DE9A92E4B |
| :1022600098E0B92E6801CE0101961C2D181BF601CD |
| :1022700081916F01805D898720E0AE01475F5F4FEC |
| :10228000612F80E00E94FC0A20E0A501612F85E01B |
| :102290000E94C60A80E190E0A80EB91ECE01059604 |
| :1022A000C816D90681F1DFCFEE2069F58E010F5FE8 |
| :1022B0001F4FB80180916B040E94200F1A8668019D |
| :1022C0008DEDA82E88E0B82ECE010196FC2CF81AD0 |
| :1022D000F60181916F01805D89878E01075F1F4F35 |
| :1022E00020E0A8016F2D80E00E94FC0A20E0A501FB |
| :1022F0006F2D85E00E94C60A80E190E0A80EB91E0D |
| :10230000C016D10609F7FF248F2D9927A1960FB685 |
| :10231000F894DEBF0FBECDBFDF91CF911F910F911B |
| :10232000FF90EF90DF90CF90BF90AF909F908F90F5 |
| :102330007F906F900895982F8630D8F426E430E08F |
| :10234000E9EAF4E0808183832150304031978FEFB8 |
| :102350002F3F3807B9F783E28093630481E68093C7 |
| :1023600064049559909365041092AD048BE40E9427 |
| :10237000310708951F9393E29093630491E690933D |
| :10238000640491E790936504809366041092670457 |
| :102390001092680486E00E94310710E00E94AC07AA |
| :1023A000813009F41EE11F5F8091E8048C54853070 |
| :1023B00018F01E3198F304C080E090E01E3110F058 |
| :1023C00081E090E01F910895FF920F931F93CF93A8 |
| :1023D000DF93CDB7DEB72F970FB6F894DEBF0FBEF1 |
| :1023E000CDBF0E945A0960E089E39DE00E94980AEF |
| :1023F00060E083E39DE00E94980A60E08DE29DE04A |
| :102400000E94980A60E087E29DE00E94980A60E0DE |
| :1024100081E29DE00E94980A60E08BE19DE00E94CD |
| :10242000980A40E065E081E00E94480E0E94BA11DF |
| :10243000813041F420E043E15DE066E080E00E940D |
| :10244000C60A62C062E0F62E0E945A098E010F5F32 |
| :102450001F4F4AE050E0B8018F2D99270E9448167F |
| :1024600060E0C8010E94CF0A82E380936B058091EF |
| :102470006B058823E1F70E945A098F2D0E94C31033 |
| :10248000682F80916E058823E1F380916E0582307C |
| :1024900009F4F39480916E05813009F4FA948FEF7A |
| :1024A000F81619F45CE0F52E04C08CE08F1508F4E2 |
| :1024B000FF2480916E05883019F48F2D0E94760FCD |
| :1024C00080916E05843009F0BFCF0E945A0960E008 |
| :1024D00080EF9CE00E94980A40E062E081E00E9468 |
| :1024E000480E813061F460E089EE9CE00E94980A19 |
| :1024F00085E00E949B1160E081ED9CE003C060E0FC |
| :102500008DEB9CE00E94980A84E680936B05809195 |
| :102510006B058823E1F72F960FB6F894DEBF0FBE48 |
| :10252000CDBFDF91CF911F910F91FF9008951F9222 |
| :102530000F920FB60F9211248F939F93EF93FF93F7 |
| :102540008091BE079CB1E0ECF7E0E80FF11D9083AD |
| :102550008F5F8093BE078091BE078F708093BE0708 |
| :10256000FF91EF919F918F910F900FBE0F901F9051 |
| :10257000189588E98AB987E089B908958AE0809337 |
| :102580006D059091BF078091BE07981721F4809147 |
| :102590006D058823B1F780916D05882311F4E0E083 |
| :1025A0000FC08091BF07E82FFF27E054F84FE0816C |
| :1025B0008F5F8093BF078091BF078F708093BF07A5 |
| :1025C0008E2F992708955D9BFECF8CB90895FC014D |
| :1025D00004C05D9BFECF8CB9319680818823C9F7FA |
| :1025E00008951F920F920FB60F9211248F939F930D |
| :1025F00080916C05882331F080916C058150809327 |
| :102600006C0515C08AE080936C0589B39927809585 |
| :102610009095689413F8959587951694E1F78F70C7 |
| :1026200080936E0580916F058F5F80936F05809119 |
| :102630006B05882329F080916B05815080936B0591 |
| :1026400080916D05882329F080916D0581508093DC |
| :102650006D059F918F910F900FBE0F901F90189551 |
| :102660008DE083BF88E48CBF89B7826089BF0895FD |
| :10267000F89480916100882321F484E080936100C4 |
| :1026800002C01092610080916100A2E0B0E0082ECB |
| :102690000E94A9160E947509789408950F931F93BC |
| :1026A00011E00E945A0960E08CE79DE00E94980AC0 |
| :1026B00060E089E79DE00E94980A60E08AE69DE07C |
| :1026C0000E94980A60E082E69DE00E94980A60E01D |
| :1026D00087E59DE00E94980A60E080E59DE00E9409 |
| :1026E000980A4FE065E082E00E94480E833049F08E |
| :1026F0008430C9F0823011F010E026C00E943813F7 |
| :1027000023C00E945A0901E022E344E664E18AE022 |
| :102710000E94420B80916E058830B1F080916E0569 |
| :10272000843091F0F7CF0E945A0901E028E244E694 |
| :1027300064E18AE00E94550C80916E05883021F09A |
| :1027400080916E058430C1F7112309F0AACF1F9143 |
| :102750000F910895CF93DF93EC0152E070E026C013 |
| :10276000E52FFF27E951FB4F21812D5332813D5346 |
| :1027700043814D535C5FDE01A80FB91F80818D53EB |
| :10278000880F880F922F92959F70892B8C9322959A |
| :10279000207F832F86958695282BFD0121833295F6 |
| :1027A000330F330F307C342B32837D5F872F992793 |
| :1027B0005617B0F2DF91CF9108954F925F926F92CA |
| :1027C0007F928F929F92AF92BF92CF92DF92EF92C1 |
| :1027D000FF920F931F93CF93DF93FC01EB0180E2F5 |
| :1027E000888340E8E130F40718F46624772408C0B1 |
| :1027F000F095E195FF4F8DE2888351E0652E712CB5 |
| :102800002E010894411C511CCF0160E177E20E9427 |
| :102810007A168B01262F332780E197E2BC01269F91 |
| :10282000C001279F900D369F900D11249F01281BFA |
| :10283000390B42E0C42ED12CCC0EDD1EC90168EE4E |
| :1028400073E00E947A167B01462F552788EE93E0AD |
| :10285000FC014E9FC0014F9F900D5E9F900D112473 |
| :10286000281B390B93E0A92EB12CAC0EBD1EC9015B |
| :1028700064E670E00E947A16FB0184E6689FC0015E |
| :102880001124281B390B84E0882E912C8C0E9D1E60 |
| :10289000C9016AE070E00E947A168AE0689FC00170 |
| :1028A0001124281B390B205D2D83005D0983F0E383 |
| :1028B000EF0EEA82E05DEB83605D6C83003391F59F |
| :1028C00080E2888341E06416710409F48DE2898313 |
| :1028D000F6018081803331F580E2F2018083F1E0FE |
| :1028E0006F16710409F48DE2F6018083F501808191 |
| :1028F0008033C1F480E2F6018083F1E06F16710449 |
| :1029000009F48DE2F5018083F4018081803351F474 |
| :1029100080E2F5018083F1E06F16710409F48DE225 |
| :10292000F40180831E82DF91CF911F910F91FF9060 |
| :10293000EF90DF90CF90BF90AF909F908F907F905F |
| :102940006F905F904F9008950F931F93082F84E12D |
| :1029500080936B050E94BE12833221F080916B053B |
| :102960008823C1F780916B05882319F481E090E0FA |
| :1029700030C00E94BE128093E70411E00AC00E949A |
| :10298000BE12E12FFF27E951FB4F80831F5F17FD28 |
| :102990001FE78D30A1F7023221F4612F80E795E027 |
| :1029A0000AC0802F992774E0880F991F7A95E1F764 |
| :1029B000612F8A549A4F0E94AA13E02FFF2764E0E8 |
| :1029C000EE0FFF1F6A95E1F7EA54FA4F178680E091 |
| :1029D00090E01F910F910895FF920F931F93F82E8F |
| :1029E00083E28093630481E68093640492E2F916A3 |
| :1029F00071F483E680936504109266041092670474 |
| :102A00001092680486E00E94310704E40FC09FE141 |
| :102A10009F1520F080936504F0926604109267047D |
| :102A20001092680486E00E94310701E410E08F2DC7 |
| :102A30000E94A414813009F41EE11F5F8091E80414 |
| :102A4000801710F0081718F41E3188F304C080E0D6 |
| :102A500090E01E3110F081E090E01F910F91FF9007 |
| :102A600008954F925F927F928F929F92AF92BF9202 |
| :102A7000CF92DF92EF92FF920F931F93CF93DF934A |
| :102A8000CDB7DEB72B970FB6F894DEBF0FBECDBF24 |
| :102A90000E945A0960E088EB9DE00E94980A1B861C |
| :102AA00000E010E0802F0E94EC14813039F4802F78 |
| :102AB0000E94EC14813011F421E02B870F5F1F4F2F |
| :102AC0000032110579F73B85313019F088249924BB |
| :102AD0000EC060E08DEA9DE00E94980A88EC809329 |
| :102AE0006B0580916B05882309F49BC0FACF809118 |
| :102AF0006E058823E1F782E20E94EC14813071F4C4 |
| :102B000060E082EA9DE00E94980A88EC80936B0561 |
| :102B100080916B05882309F484C0FACF8E010F5F82 |
| :102B20001F4FB801C4010E94DD1320E0A80160E03E |
| :102B30008FE00E94FC0AC401B3E0880F991FBA9588 |
| :102B4000E1F7881999096C01CC0CDD1CE2E7F5E08E |
| :102B5000CE0EDF1E7C01F4E0EE0CFF1CFA95E1F7CF |
| :102B600026EB35E0E20EF31E442455245C01742C60 |
| :102B7000739430E2A316B104B4F48E010F5F1F4FBB |
| :102B8000B801F601808191810E94DD1320E0A70148 |
| :102B9000672D80E00E94FC0A20E0A801672D8DE0EF |
| :102BA0000E94FC0A07C020E04DE85DE0672D80E050 |
| :102BB0000E94C60A0894411C511C0894A11CB11C17 |
| :102BC00022E030E0C20ED31E80E190E0E80EF91E54 |
| :102BD00097E04916510459F68AE080936B0580917D |
| :102BE0006B058823E1F780916E05813039F40894F4 |
| :102BF0008108910897FE02C08824992480916E056F |
| :102C0000823051F40894811C911CE8E08E169104E6 |
| :102C10001CF0E7E08E2E912C80916E05843009F037 |
| :102C200066CF2B960FB6F894DEBF0FBECDBFDF91F7 |
| :102C3000CF911F910F91FF90EF90DF90CF90BF90B9 |
| :102C4000AF909F908F907F905F904F900895FB0181 |
| :102C50009F01E8944230C4F04532B4F44A3029F47C |
| :102C600097FB1EF4909581959F4F642F77270E94C4 |
| :102C70007A16805D8A330CF0895D8193CB010097D1 |
| :102C8000A1F716F45DE251931082C9010C945E160F |
| :102C9000FB019F01423074F0453264F4642F7727C2 |
| :102CA0000E947A16805D8A330CF0895D8193CB0196 |
| :102CB0000097A1F71082C9010C945E16DC01FC019B |
| :102CC000672F71917723E1F7329704C07C916D9360 |
| :102CD00070836291AE17BF07C8F30895991B79E01E |
| :102CE00004C0991F961708F0961B881F7A95C9F79C |
| :102CF00080950895AA1BBB1B51E107C0AA1FBB1FEB |
| :102D0000A617B70710F0A61BB70B881F991F5A9577 |
| :102D1000A9F780959095BC01CD01089597FB092EE8 |
| :102D200007260AD077FD04D0E5DF06D000201AF48C |
| :102D3000709561957F4F0895F6F7909581959F4F17 |
| :102D40000895E199FECFBFBBAEBBE09A11960DB2DC |
| :102D50000895E199FECFBFBBAEBB0DBA11960FB679 |
| :0C2D6000F894E29AE19A0FBE0895FFCFAC |
| :00000001FF |
| /Transportables_Koptertool/tags/V-0.1.1/Spezial/MMT-Mega644-16.hex |
|---|
| 0,0 → 1,732 |
| :100000000C94F1060C940E070C940E070C940E073A |
| :100010000C940E070C940E070C940E070C940E070C |
| :100020000C940E070C940E070C940E070C940E07FC |
| :100030000C940E070C940E070C940E070C940E07EC |
| :100040000C940A130C940E070C940E070C940E07D4 |
| :100050000C94A6120C940E070C940E070C940E0729 |
| :100060000C940E070C940E070C940E070C940E07BC |
| :10007000202020202020000D0A54696D656F7574C2 |
| :100080002100446973706C61790000000000000079 |
| :100090003E5B4F5B3E003E6B4F6B3E001C3E7C3E2A |
| :1000A0001C00183C7E3C18001C577D571C001C5E31 |
| :1000B0007F5E1C0000183C180000FFE7C3E7FF004C |
| :1000C000001824180000FFE7DBE7FF0030483A067D |
| :1000D0000E00262979292600407F05050700407F6C |
| :1000E00005253F005A3CE73C5A007F3E1C1C080097 |
| :1000F000081C1C3E7F0014227F2214005F5F005FFB |
| :100100005F0006097F017F00006689956A006060D4 |
| :100110006060606094A2FFA2940008047E0408005E |
| :1001200010207E20100008082A1C0800081C2A083D |
| :1001300008001E10101010000C1E0C1E0C00303891 |
| :100140003E383000060E3E0E0600000000000000A3 |
| :1001500000005F000000000700070000147F147F0C |
| :100160001400242A7F2A12002313086462003649EF |
| :1001700056205000000807030000001C2241000028 |
| :100180000041221C00002A1C7F1C2A0008083E088F |
| :10019000080000807030000008080808080000000F |
| :1001A000606000002010080402003E5149453E00F6 |
| :1001B00000427F4000007249494946002141494DB3 |
| :1001C00033001814127F10002745454539003C4A7A |
| :1001D0004949310041211109070036494949360092 |
| :1001E000464949291E000000140000000040340068 |
| :1001F00000000008142241001414141414000041DB |
| :10020000221408000201590906003E415D594E00C2 |
| :100210007C1211127C007F49494936003E41414120 |
| :1002200022007F4141413E007F49494941007F0909 |
| :10023000090901003E41415173007F0808087F0011 |
| :1002400000417F4100002040413F01007F0814220F |
| :1002500041007F40404040007F021C027F007F043D |
| :1002600008107F003E4141413E007F090909060018 |
| :100270003E4151215E007F0919294600264949491E |
| :10028000320003017F0103003F4040403F001F2038 |
| :1002900040201F003F4038403F00631408146300B3 |
| :1002A0000304780403006159494D4300007F414134 |
| :1002B0004100020408102000004141417F00040277 |
| :1002C00001020400404040404000000307080000D5 |
| :1002D0002054547840007F28444438003844444433 |
| :1002E0002800384444287F0038545454180000082B |
| :1002F0007E09020018A4A49C78007F0804047800FA |
| :1003000000447D4000002040403D00007F10284414 |
| :10031000000000417F4000007C04780478007C08E5 |
| :1003200004047800384444443800FC18242418009D |
| :1003300018242418FC007C08040408004854545471 |
| :10034000240004043F4424003C4040207C001C2046 |
| :1003500040201C003C4030403C0044281028440011 |
| :100360004C9090907C004464544C4400000836410A |
| :100370000000000077000000004136080000020184 |
| :10038000020402003C2623263C001EA1A1611200AB |
| :100390003A4040207A003854545559002155557937 |
| :1003A0004100215454784100215554784000205494 |
| :1003B000557940000C1E527212003955555559009E |
| :1003C0003954545459003955545458000000457C50 |
| :1003D00041000002457D42000001457C4000791447 |
| :1003E00012147900F0282528F0007C5455450000AF |
| :1003F0002054547C54447C0A097F4941324949497C |
| :100400003200324848483200324A484830003A41C7 |
| :1004100041217A003A4240207800009DA0A07D0052 |
| :100420003944444439003D4040403D003C24FF24D1 |
| :100430002400487E494366002B2FFC2F2B00FF0928 |
| :1004400029F62000C0887E09030020545479410019 |
| :100450000000447D41003048484A32003840402284 |
| :100460007A00007A0A0A72007D0D19317D00262972 |
| :10047000292F280026292929260030484D40200010 |
| :100480003808080808000808080838002F10C8AC09 |
| :10049000BA002F102834FA0000007B000000081476 |
| :1004A0002A14220022142A140800AA005500AA00C7 |
| :1004B000AA55AA55AA5555AA55AA55AA000000FF43 |
| :1004C0000000101010FF0000141414FF00001010A2 |
| :1004D000FF00FF001010F010F000141414FC0000D6 |
| :1004E0001414F700FF000000FF00FF001414F404D0 |
| :1004F000FC00141417101F0010101F101F001414FC |
| :10050000141F0000101010F000000000001F101059 |
| :100510001010101F1010101010F01010000000FF2D |
| :100520001010101010101010101010FF10100000FC |
| :1005300000FF14140000FF00FF1000001F1017142C |
| :100540000000FC04F4141414171017141414F40409 |
| :10055000F4140000FF00F7141414141414141414E9 |
| :10056000F700F71414141417141410101F101F1090 |
| :10057000141414F414141010F010F01000001F10D4 |
| :100580001F100000001F1414000000FC14140000D1 |
| :10059000F010F0101010FF10FF10141414FF1414BA |
| :1005A0001010101F0000000000F01010FFFFFFFFF0 |
| :1005B000FFFFF0F0F0F0F0F0FFFFFF0000000000A0 |
| :1005C00000FFFFFF0F0F0F0F0F0F38444438440098 |
| :1005D0007C2A2A3E14007E0202060600027E027E6B |
| :1005E00002006355494163003844443C0400407EA6 |
| :1005F000201E200006027E02020099A5E7A59900B0 |
| :100600001C2A492A1C004C7201724C00304A4D4D84 |
| :100610003000304878483000BC625A463D003E49C0 |
| :10062000494900007E0101017E002A2A2A2A2A0067 |
| :1006300044445F44440040514A44400040444A51CD |
| :1006400040000000FF010300E080FF0000000808F8 |
| :100650006B6B0808361236243600060F090F0600A9 |
| :100660000000181800000000101000003040FF01CA |
| :100670000100001F01011E0000191D171200003C9F |
| :100680003C3C3C000000000000004D6F642062799B |
| :10069000204D696B656C6A6F2030352F3038002033 |
| :1006A000202053657474696E67730D0A0020202042 |
| :1006B000446562756720446174656E0D0A002020F0 |
| :1006C000204D6F746F72746573740D0A00202020C2 |
| :1006D000506172616D657465720D0A0020202044BE |
| :1006E0006973706C61790D0A00202048617570741F |
| :1006F0006D656EFC202856302E312E31290D0A00F2 |
| :10070000506F727461626C6573204B6F70746572A8 |
| :10071000746F6F6C0D0A002A0020005461737465B9 |
| :10072000206472FC636B656E0D0A00436F6E666930 |
| :100730006720202020004368616E6E656C73202066 |
| :1007400000537469636B202020202000486F656887 |
| :10075000652020202020004779726F202020202053 |
| :1007600020004C6F6F70696E672020200043616D20 |
| :100770006572612020202000536F6E737469676575 |
| :100780007320005573657220202020202000436FC5 |
| :1007900075706C696E67202000436F6E666967280C |
| :1007A000322920004C6F6F70696E677365740002A8 |
| :1007B000020202020202020004040404040403030D |
| :1007C00003080808080505080808000509090909BB |
| :1007D0000707070707070606060A0A0606050505AE |
| :1007E0000909090900070B0B0B0B0C0C0C0C0C0C6A |
| :1007F0000C0C0108020108020108020108020108AC |
| :100800000201080201080201080200000000FF04C2 |
| :1008100000FF0400FF0400FF0400320400FF040096 |
| :10082000060300400300140300200821FA080032E8 |
| :100830000800FF0800000500000500FA0800FA089B |
| :1008400000FA0800010000FF0500FF0900FF090091 |
| :10085000FF0900FF0900FF0700FA0700FA0700FA86 |
| :100860000700190700FF0600FA0600FA0600FF0A53 |
| :1008700000FF0A00FA0600FA0600FA0500FA050071 |
| :10088000FF0500FF0900FF0900FF0900FF09000044 |
| :10089000010001070000000000000000000000004F |
| :1008A0000000000000000000000000000000000048 |
| :1008B0000000000000000000004C6F6F7020757099 |
| :1008C0002020202020202020004C6F6F7020646F9B |
| :1008D000776E092020202000004C6F6F70206C651F |
| :1008E0006674202020202020004C6F6F70207269D9 |
| :1008F00067687420202020200048F668656E7265C5 |
| :10090000676C6572202020200048F668656E73636E |
| :1009100068616C74657220200048656164686F6C62 |
| :100920006409090000000000004B6F6D7061737373 |
| :100930000909000000000000004B6F6D70617373C7 |
| :100940004669780909000000004750530909090069 |
| :1009500000000000000000000041636873656E6BDA |
| :100960006F70706C756E6720004472656872617498 |
| :100970006509090000000000004E69636B2020201B |
| :10098000202020202020202000526F6C6C2020206E |
| :1009900020202020202020200047617320202020BC |
| :1009A00020202020202020200047696572090909A5 |
| :1009B000000000000000000000506F746931090958 |
| :1009C000090000000000000000506F74693209093E |
| :1009D000090000000000000000506F74693309092D |
| :1009E000090000000000000000506F74693409091C |
| :1009F000090000000000000000436F6E666967098F |
| :100A0000090900000000000000486F6568655F4D3F |
| :100A1000696E476173202020004C7566746472759E |
| :100A2000636B5F4420202020004D6178486F65682B |
| :100A3000652020202020202000486F6568655F50D9 |
| :100A4000202020202020202000486F6568655F5608 |
| :100A5000657273746165726B00486F6568655F41AC |
| :100A600043435F5769726B2E00537469636B5F5029 |
| :100A7000202020202020202000537469636B5F44D5 |
| :100A8000202020202020202000476965725F502010 |
| :100A90002020202020202020004761735F4D696EB8 |
| :100AA0002020202020202020004761735F4D6178A6 |
| :100AB0002020202020202020004779726F4163638E |
| :100AC00046616B746F720900004B6F6D70617373D8 |
| :100AD0005769726B756E6720004779726F5F50209F |
| :100AE0000909000000000000004779726F5F4909A2 |
| :100AF000090900000000000000556E7465727370F3 |
| :100B0000616E6E756E672020004E6F7447617309C9 |
| :100B10000909000000000000004E6F744761735A1D |
| :100B200065697420202020200055666F417573721E |
| :100B300069636874756E672000495F46616B746F06 |
| :100B40007220202020202020005573657250617291 |
| :100B5000616D3109090000000055736572506172C2 |
| :100B6000616D3209090000000055736572506172B1 |
| :100B7000616D3309090000000055736572506172A0 |
| :100B8000616D34090900000000536572766F4E698B |
| :100B9000636B4374726C090000536572766F4E6923 |
| :100BA000636B436F6D70090000536572766F4E6919 |
| :100BB000636B4D696E09000000536572766F4E6974 |
| :100BC000636B4D617809000000536572766F4E6962 |
| :100BD000636B526566727368004C6F6F7047617328 |
| :100BE0004C696D6974090000004C6F6F7054687235 |
| :100BF0006573686F6C640900004C6F6F704879739F |
| :100C0000746572657365090000416368734B6F70AA |
| :100C1000706C756E67090000004163687347656713 |
| :100C2000656E4B6F70706C2E0057696E6B6C556DF6 |
| :100C30007363686C4E69636B0057696E6B6C556DBE |
| :100C40007363686C526F6C6C004779726F416363B9 |
| :100C50004162676C656963680044726966746B6FB2 |
| :100C60006D700909000000000044796E616D6963D0 |
| :100C700053746162696C6974005573657250617276 |
| :100C8000616D35090900000000557365725061728D |
| :100C9000616D36090900000000557365725061727C |
| :100CA000616D37090900000000557365725061726B |
| :100CB000616D380909000000004C6F6F70436F6E62 |
| :100CC000666967090900000000536572766F4E6916 |
| :100CD000636B436F6D70496E000D0A4E69636874F3 |
| :100CE000206765737065696368657274000D0A50EA |
| :100CF0006172616D657465722067657370656963A3 |
| :100D000068657274000D0A2D2D2D3E0050617261D0 |
| :100D10006D657465722073706569636865726E3F96 |
| :100D20000D0A20206A610D0A20206E65696E00544C |
| :100D3000696D656F75740020353A0D0A0020343AEC |
| :100D40000D0A0020333A0D0A0020323A0D0A002025 |
| :100D5000313A0D0A004C61646520506172616D6525 |
| :100D60007465720D0A002D002D002D004578697400 |
| :100D70000D0A00526563687465636B0D0A004C6967 |
| :100D80006E69650D0A004F7269656E7469657275EA |
| :100D90006E670D0A000D0A0045696E7374656C6C10 |
| :100DA000756E67656E3A0D0A0020202020202020F5 |
| :100DB00020202020202020202020202020000D0A7C |
| :100DC00054696D656F757421000D0A54696D656F06 |
| :100DD0007574210044656275672D446973706C6198 |
| :100DE000790011241FBECFEFD0E1DEBFCDBF11E0EF |
| :100DF000A0E0B1E0E2EAFDE202C005900D92A03071 |
| :100E0000B107D9F718E0A0E0B1E001C01D92A0370A |
| :100E1000B107E1F70E940D0E0C94D0160C9400005F |
| :100E2000782F52E060E026C0E52FFF27E957FA4F00 |
| :100E300021812D5332813D5343814D535C5FDC0151 |
| :100E4000AD5FBA4F80818D53880F880F922F929596 |
| :100E50009F70892B8C932295207F832F8695869572 |
| :100E6000282BFD0121833295330F330F307C342B37 |
| :100E700032836D5F862F99275717B0F208950F932D |
| :100E80001F93B82F809103058093870580910405F7 |
| :100E9000809388058091050580938905A3E073E020 |
| :100EA00035C0E72FFF27ED5FFA4F808141816281D6 |
| :100EB0007D5FEA2FFF27E957FA4F282F26952695C1 |
| :100EC000235C2083552799278370907024E0880F36 |
| :100ED000991F2A95E1F79A0104E0369527950A951E |
| :100EE000E1F7822B835C81834F705070440F551F54 |
| :100EF000440F551F862F8295869586958370842B87 |
| :100F0000835C82836F73635C6383AC5F7B1748F29F |
| :100F100090E020E030E008C0E92FFF27E957FA4FC2 |
| :100F20008081280F311D9F5F9A17B1F73F70EA2F1C |
| :100F3000FF27E957FA4FC90136E0969587953A950C |
| :100F4000E1F7835C80832F73235C21838DE08283B0 |
| :100F500013820A2F0D5F10E008C0E12FFF27E95729 |
| :100F6000FA4F80810E94F5121F5F1017B1F71F9191 |
| :100F70000F9108951F9384E180930B060E94D01275 |
| :100F8000833221F080910B068823C1F780910B06F4 |
| :100F9000882319F481E090E017C00E94D01280935A |
| :100FA000870511E00AC00E94D012E12FFF27E95700 |
| :100FB000FA4F80831F5F17FD1FE78D30A1F7812F48 |
| :100FC0000E94100780E090E01F9108951F93CF9337 |
| :100FD000DF93CDB7DEB761970FB6F894DEBF0FBED3 |
| :100FE000CDBF182F83E28093030581E6809304052B |
| :100FF00080930505109306051092070510920805C9 |
| :1010000086E00E943F070E94BA07809188058134DC |
| :10101000D1F7E3E0F5E0DE01119681918D9385E053 |
| :10102000E331F807D1F7198A177020E0AE014F5F5E |
| :101030005F4F612F80E00E940B0B61960FB6F89412 |
| :10104000DEBF0FBECDBFDF91CF911F9108959F925C |
| :10105000AF92BF92CF92DF92EF92FF920F931F93C6 |
| :10106000CF93DF93CDB7DEB761970FB6F894DEBFAD |
| :101070000FBECDBF0E9469099924A92CBB2453E05F |
| :10108000AA0CBB1C5A95E1F7FA2C00E010E08F2D5A |
| :10109000800F0E94E6070F5F1F4F08301105B9F758 |
| :1010A0000E94BA0780918805843489F57501EE0C99 |
| :1010B000FF1C85E095E0E80EF91ECC24DD248E01AE |
| :1010C0000F5F1F4FF701208181819927982F882773 |
| :1010D0004AE050E0B801820F911D0E94421620E0C4 |
| :1010E00040E750E06C2D8EE00E94D50A20E0A80178 |
| :1010F0006C2D8EE00E940B0B0894C11CD11C82E069 |
| :1011000090E0E80EF91E98E0C916D104C1F680916E |
| :101110000E06882329F280910E06813009F49394FB |
| :1011200080910E06823009F49A9480910E068830E0 |
| :1011300019F0E3E09E22A1CF61960FB6F894DEBFCE |
| :101140000FBECDBFDF91CF911F910F91FF90EF9018 |
| :10115000DF90CF90BF90AF909F9008951F9393E240 |
| :101160009093030591E69093040598E69093050506 |
| :1011700080930605109207051092080586E00E94EC |
| :101180003F0710E00E94BA07813009F41AE01F5FA0 |
| :10119000809188058053853018F01A3098F304C088 |
| :1011A00080E090E01A3010F081E090E01F91089507 |
| :1011B0001F93CF93DF93CDB7DEB72A970FB6F8947E |
| :1011C000DEBF0FBECDBF0E94690960E082E890E0FB |
| :1011D0000E94A70A80910E068823E1F70E94AE08BC |
| :1011E000813069F460E087E790E00E94A70A88EC0C |
| :1011F00080930B0680910B06882369F1FBCF109139 |
| :10120000880519831A8220E0AE014F5F5F4F60E0CE |
| :101210008AE00E940B0B1F5F20E043E055E0612F46 |
| :1012200080E00E940B0B8AE080930B0680910B06F6 |
| :101230008823E1F780910E06813011F40E94AE08F8 |
| :1012400080910E06823011F40E94AE0880910E0645 |
| :10125000843009F0BFCF2A960FB6F894DEBF0FBED8 |
| :10126000CDBFDF91CF911F9108952C988EBD0DB405 |
| :1012700007FEFDCF8DB58DBD2C9A08951F93CF939A |
| :10128000DF93E2E0F1E0119285E0E230F807D9F770 |
| :1012900010EB2B98812F0E94350980E10E943509BF |
| :1012A000809101010E9435092B9AC0E0D0E080E0D6 |
| :1012B0000E9435092196C038D105C9F71F5F183B38 |
| :1012C00041F71092090610920A06DF91CF911F9103 |
| :1012D00008950E943E09089580EA9FE00197F1F782 |
| :1012E00008950F931F93CF93DF938C01C0E0D0E05C |
| :1012F00003C00E946C092196C017D107D1F7DF9176 |
| :10130000CF911F910F9108951092090610920A062D |
| :101310008FEF84B98EE58CBD2C9A2A988AE090E0F4 |
| :101320000E9471092A9A2C982B9880E40E94350912 |
| :1013300080910101882329F481EA0E94350980EC1B |
| :1013400004C080EA0E94350988EC0E94350986EACB |
| :101350000E94350982EA0E9435098FE20E94350910 |
| :1013600088EF0E94350980E00E94350987E20E94DB |
| :10137000350981E80E94350986E10E9435098CEA29 |
| :101380000E94350980E00E9435098FEA0E943509E4 |
| :101390000E943E090895FF920F931F938C01F62E31 |
| :1013A0002B98880F892F881F990B919580550E9443 |
| :1013B0003509809101010F77080F802F82958F707A |
| :1013C000805F0E943509802F8F700E9435092B9A0B |
| :1013D0008F2D0E9435091F910F91FF900895EF9274 |
| :1013E000FF920F931F93CF93DF93C0E0D0E002E012 |
| :1013F00011E032E8E32E31E0F32EF70181917F0115 |
| :10140000F801808361918F01CE010E94CB09219662 |
| :10141000F3E0C038DF0789F702E814E0F801119221 |
| :101420008F0160E0CE010E94CB092196F4E0C0302C |
| :10143000DF07A1F7DF91CF911F910F91FF90EF9000 |
| :101440000895CF92DF92EF92FF920F931F93CF9365 |
| :10145000DF93D22E4F3D81F0403E38F4463DB1F04F |
| :101460004C3DB1F0443CA9F40FC0463F49F04C3F1D |
| :1014700049F0443E71F402C041EE0BC044E809C09B |
| :1014800044E907C041E805C04EE803C049E901C08E |
| :101490004AE9062F11271695102F00271795079553 |
| :1014A00026E0829FC0011124080F191F1370429F6C |
| :1014B000700111248AE890E0E80EF91ECC24E801BE |
| :1014C000CE5FDE4FF7019491F2E0DF16A1F0FD153B |
| :1014D00030F0DD2059F081E0D816B1F409C0E3E026 |
| :1014E000DE1661F0F4E0DF1679F40AC098830CC0D0 |
| :1014F0008881892B08C08881892705C0888102C01E |
| :1015000088819095892388836991C8010E94CB09BD |
| :10151000C3940894E11CF11C0F5F1F4F86E0C816AE |
| :1015200089F6DF91CF911F910F91FF90EF90DF909F |
| :10153000CF90089580910A068F5F80930A068830C5 |
| :1015400028F00E94EF0987E080930A0608951F9310 |
| :10155000CF93DF93EC01162F20C04032A0F02196EC |
| :10156000212F60910A06809109060E94210A80912C |
| :1015700009068F5F80930906853178F0109209067D |
| :101580000E949A0A0AC04A3029F04D3029F410927C |
| :10159000090602C00E949A0A2196FE014491442342 |
| :1015A000E1F6DF91CF911F91089580930906609332 |
| :1015B0000A06622FCA010E94A70A08951F93CF93BB |
| :1015C000DF93EC01162F20C04032A0F02196212F8E |
| :1015D00060910A06809109060E94210A80910906FD |
| :1015E0008F5F80930906853178F0109209060E947A |
| :1015F0009A0A0AC04A3029F04D3029F4109209069F |
| :1016000002C00E949A0A219648814423E9F6DF919C |
| :10161000CF911F9108958093090660930A06622F67 |
| :10162000CA010E94DE0A0895982F87FD39C06034F0 |
| :10163000B8F5862F869586958695282F332736957B |
| :10164000322F222737952795290F311D677081E0AA |
| :1016500090E001C0880F6A95EAF7682F3370413037 |
| :1016600061F0413018F04230A1F40DC0F901EE5F95 |
| :10167000FE4F8081609586230BC0F901EE5FFE4F1F |
| :101680008081862B05C0F901EE5FFE4F80818627A1 |
| :101690008083F901EE5FFE4F6081C9010E94CB0992 |
| :1016A00008952F923F924F925F926F927F928F9206 |
| :1016B0009F92AF92BF92CF92DF92EF92FF920F93E1 |
| :1016C0001F93CF93DF93CDB7DEB728970FB6F8946B |
| :1016D000DEBF0FBECDBF8D83162F0E83682E7724FD |
| :1016E000862E9924842F99279C838B8386199709AA |
| :1016F000E22FFF27FA83E9839F012819390997FF11 |
| :1017000004C0FFEF2F2E3F2E07C040E050E00097AF |
| :1017100011F041E050E01A0137FF04C0EFEF4E2E08 |
| :101720005E2E08C040E050E02115310511F041E087 |
| :1017300050E02A016C0197FF04C0D094C194D108F5 |
| :10174000D394790137FF04C0F094E194F108F39445 |
| :101750004E81682D862D0E94140BEC14FD047CF53F |
| :10176000C60162E070E00E94A91644275527461B77 |
| :10177000570B58874F83A22CB62CB20C5D81052FD6 |
| :10178000112717C08F8198858E0D9F1D98878F8395 |
| :101790001816190634F4840C951C8C199D09988729 |
| :1017A0008F834E81682D8B2D0E94140B020D131D0B |
| :1017B000BA0CEB81FC810E171F0721F72DC0C70162 |
| :1017C00062E070E00E94A91644275527461B570B7C |
| :1017D00058874F83A42CB82CB40C012F112717C0A5 |
| :1017E0008F8198858C0D9D1D98878F8318161906FB |
| :1017F00034F4620C731C8E199F0998878F834E8175 |
| :101800006B2D862D0E94140B040D151DBA0CE98159 |
| :10181000FA810E171F0721F728960FB6F894DEBF3E |
| :101820000FBECDBFDF91CF911F910F91FF90EF9031 |
| :10183000DF90CF90BF90AF909F908F907F906F90F0 |
| :101840005F904F903F902F900895BF92CF92DF927C |
| :10185000EF92FF920F931F93CF93DF93182FB02E29 |
| :1018600087FD1FE7603408F06FE37727CB01820F15 |
| :10187000911D9C01812F840F912D911D6C0191E888 |
| :10188000C916D10418F0B0E8CB2ED12C790121343F |
| :10189000310518F0A0E4EA2EF12CEB0108C00B2D65 |
| :1018A0002C2F4C2D6C2F812F0E94510B2196EC1662 |
| :1018B000FD06A8F7DF91CF911F910F91FF90EF9058 |
| :1018C000DF90CF90BF900895CF92DF92EF92FF927A |
| :1018D0000F931F93CF93DF93D82EC02E87FF02C0A4 |
| :1018E0008FE7D82E162F603408F01FE3812F820F68 |
| :1018F000912D911DEC018D2D840F912D911D7C0159 |
| :1019000091E8E916F10418F000E8E02EF12C0C2D16 |
| :10191000212F4E2D612F8D2D0E94510BC134D105E9 |
| :1019200010F0C0E4D0E00C2D2C2F4E2D612F8E2D09 |
| :101930000E94510B2C2F4D2D6C2F8E2D0E94510B80 |
| :10194000212F4D2D6C2F8D2D0E94510BDF91CF91AA |
| :101950001F910F91FF90EF90DF90CF9008952F92FD |
| :101960003F924F925F926F927F928F929F92AF922F |
| :10197000BF92CF92DF92EF92FF920F931F93CF937C |
| :10198000DF93CDB7DEB724970FB6F894DEBF0FBE56 |
| :10199000CDBF8C016B017A01A22E21E030E0241B27 |
| :1019A000350B3C832B83CA01880F991F662477244B |
| :1019B000681A790A462E502E640F4A2D802F0E94F5 |
| :1019C000140B6C2D6E194A2D802F0E94140B4A2D7A |
| :1019D0006C2D802F8E0D0E94140B4A2D6C2D802FA4 |
| :1019E0008E190E94140B4701222433241A82198273 |
| :1019F00058C08B819C8197FD0BC008948108910889 |
| :101A0000E2E0F0E06E0E7F1E860D971D9C838B83B7 |
| :101A10000894211C311C29813A812E5F3F4F3A8363 |
| :101A200029838B819C810196820F931F9C838B83DA |
| :101A3000142D180DD52CD20C4A2D612F8D2D0E94FE |
| :101A4000140BE52CE2184A2D612F8E2D0E94140BE9 |
| :101A5000142D18194A2D612F8D2D0E94140B4A2D1B |
| :101A6000612F8E2D0E94140B142D120DE52CE80C05 |
| :101A70004A2D612F8E2D0E94140B952D9819092F38 |
| :101A80004A2D612F892F0E94140B142D12194A2DF3 |
| :101A9000612F8E2D0E94140B4A2D612F802F0E94E2 |
| :101AA000140B281439040CF4A4CF24960FB6F89420 |
| :101AB000DEBF0FBECDBFDF91CF911F910F91FF9081 |
| :101AC000EF90DF90CF90BF90AF909F908F907F90DE |
| :101AD0006F905F904F903F902F9008952F923F927C |
| :101AE0004F925F926F927F928F929F92AF92BF922E |
| :101AF000CF92DF92EF92FF920F931F93CF93DF93DA |
| :101B00006B017A0151E0A52EB12CAE18BF089701E8 |
| :101B1000220F331F88249924821A930A662E782E66 |
| :101B2000262F2E196E0D01E0482F0E94510B472DD4 |
| :101B30004E192C2D6C2D872D8E0D0E94510BE70117 |
| :101B400044245524222433243AC0B7FC07C02197EB |
| :101B500082E090E0880E991EA80CB91C0894411CE4 |
| :101B6000511C82E090E0280E391E0894A11CB11C83 |
| :101B7000A20CB31C1C2F662D6C0FE72CE418D72C7D |
| :101B8000D40C01E0262F4E2D8D2D0E94510B662D79 |
| :101B90006C1B262F4E2D8D2D0E94510B662D640D32 |
| :101BA000E72CEC1A170D262F4E2D812F0E94510B7A |
| :101BB000662D6419262F4E2D812F0E94510B4C1635 |
| :101BC0005D061CF2DF91CF911F910F91FF90EF9076 |
| :101BD000DF90CF90BF90AF909F908F907F906F904D |
| :101BE0005F904F903F902F900895A2E0B0E00E9448 |
| :101BF000BC16802D992780930101089581E021E092 |
| :101C000030E0D901082E0E94C41680E02F5F3F4FBC |
| :101C1000D901082E0E94C41608958FEF82B983E47B |
| :101C200085B98CEF88B98CE78BB983E087B980E8F8 |
| :101C30008AB921E030E0D9010E94BC16802D8130A4 |
| :101C400071F081E0D901082E0E94C41680E02F5F58 |
| :101C50003F4FD901082E0E94C416215030402F5FFB |
| :101C60003F4FD9010E94BC16802D99278093010116 |
| :101C70000E9484090E94C9120E94491378940E940C |
| :101C8000960EFDCF0F931F93062F142F20E049E1EE |
| :101C900057E0682F812F0E94D50A20E047E157E0E6 |
| :101CA000602F812F0E94D50A1F910F910895EF9206 |
| :101CB000FF920F931F93082FE62EF42E682F0E9499 |
| :101CC000420E102F912F80910E068823E1F780910C |
| :101CD0000E068823E1F380910E06823019F41E155A |
| :101CE00008F41F5F80910E06813019F4011708F483 |
| :101CF00011504F2D612F892F0E94420E80910E06A8 |
| :101D0000883021F080910E068430E1F680910E0635 |
| :101D1000843009F41FEF80910E068823E1F7812FAC |
| :101D200099271F910F91FF90EF9008950E946909E4 |
| :101D300060E080E097E00E94A70A60E089EE96E00C |
| :101D40000E94A70A60E08CED96E00E94A70A60E07E |
| :101D50008DEC96E00E94A70A60E08EEB96E00E9470 |
| :101D6000A70A60E08DEA96E00E94A70A60E08FE98A |
| :101D700096E00E94A70A60E08AE896E00E94A70A1F |
| :101D80004FE066E082E00E94570E843091F085308B |
| :101D900028F4823041F08330A1F408C0853061F02E |
| :101DA000863079F40CC00E94D80808950E94F3117F |
| :101DB00008950E94E20E08950E944C1508950E9415 |
| :101DC000691308950E94690980910E068823E1F73E |
| :101DD00060E08BE197E00E94A70A80910E068823BD |
| :101DE000E1F380910E068830C9F483E28093030505 |
| :101DF00081E68093040584E7809305058AE080935B |
| :101E000006058093070580930805809309051092C5 |
| :101E10000A0510920B0589E00E943F0780910E068B |
| :101E20008823E1F780910E068823E1F383E2809313 |
| :101E3000030581E68093040584E7809305051092ED |
| :101E400006051092070510920805109209051092D8 |
| :101E50000A0510920B0589E00E943F070895FB01D7 |
| :101E600020E030E0482F552761E0CA01022E02C071 |
| :101E7000959587950A94E2F780FF02C0608301C0C0 |
| :101E800010822F5F3F4F31962830310571F708954A |
| :101E900040E020E030E061E070E0FC0181918130C1 |
| :101EA00041F4CB01022E02C0880F991F0A94E2F779 |
| :101EB000480F2F5F3F4F2830310581F7842F992736 |
| :101EC0000895482FFB0164E60E948916808324E66A |
| :101ED000829FC0011124481B842F6AE00E9489164A |
| :101EE0002AE0829F90011124421B405D4283908131 |
| :101EF000905D9083805D8183903329F490E290839C |
| :101F0000803309F4918313820895CF92DF92EF9288 |
| :101F1000FF920F931F93CF93DF93CDB7DEB76297F6 |
| :101F20000FB6F894DEBF0FBECDBF823008F455C0A7 |
| :101F3000615044E080E00E94570EC82E8FEFC81613 |
| :101F400009F421C1EC2CFF24F701EA5AF74FE08194 |
| :101F5000FF27ED5FFA4FD08020E04AE65DE06C2D70 |
| :101F600084E00E94D50A80910E068823E1F78091D3 |
| :101F70000E06813009F4DA9480910E06823009F45D |
| :101F8000D3948E01075F1F4FB8018D2D0E94610F02 |
| :101F900020E0A8016C2D80E00E940B0B84E180936F |
| :101FA0000B0680910B068823E1F780910E068430A2 |
| :101FB00021F080910E068830D1F680910E0688308F |
| :101FC00009F0E1C0A6E5B8E0EA0EFB1ED701EC91EE |
| :101FD000FF27ED5FFA4FD082D6C0813009F069C08B |
| :101FE0008E010F5F1F4FB801809137050E942F0FA0 |
| :101FF0001A8644E063E080E00E94570ED82EBFEFBF |
| :102000008B1709F4C0C0E82EFF240E0D1F1DF80128 |
| :10201000008120E048E65DE0682F84E00E94D50A58 |
| :1020200080910E06813009F400E080910E06823026 |
| :1020300009F401E0005D0987005320E0AE01475F2D |
| :102040005F4F6D2D80E00E940B0B84E180930B06A7 |
| :1020500080910B068823E1F780910E06883021F0ED |
| :1020600080910E068430E1F680910E06883051F49E |
| :10207000CE010196E80EF91ED7010C930E94480F7D |
| :10208000809337050E9469098E01075F1F4FB801D1 |
| :10209000809137050E94610F60E0C8010E94DE0A4E |
| :1020A00088EC80930B0680910B06882309F46BC0A3 |
| :1020B000FACF882309F067C08E010F5F1F4FB80168 |
| :1020C00080910B050E942F0F1A8644E067E080E0A4 |
| :1020D0000E94570ED82EBFEF8B1709F454C0E82E7C |
| :1020E000FF240E0D1F1DF801008120E046E65DE093 |
| :1020F000682F84E00E94D50A80910E06813009F491 |
| :1021000000E080910E06823009F401E0005D09874D |
| :10211000005320E0AE01475F5F4F6D2D80E00E94CD |
| :102120000B0B84E180930B0680910B068823E1F76B |
| :1021300080910E06883021F080910E068430E1F601 |
| :1021400080910E06883051F4CE010196E80EF91EFA |
| :10215000D7010C930E94480F80930B050E946909D8 |
| :102160008E01075F1F4FB80180910B050E94610F20 |
| :1021700060E0C8010E94DE0A88EC80930B06809123 |
| :102180000B068823E1F762960FB6F894DEBF0FBE08 |
| :10219000CDBFDF91CF911F910F91FF90EF90DF9016 |
| :1021A000CF9008956F927F928F929F92AF92BF923D |
| :1021B000CF92DF92EF92FF920F931F93CF93DF9313 |
| :1021C000CDB7DEB7A1970FB6F894DEBF0FBECDBF77 |
| :1021D000E82E81E08E1508F044C044EFA42E47E0BD |
| :1021E000B42E39E7632E39E0732EFF24CC24DD248E |
| :1021F00023E0822E25E0922EF50184918E15E9F4DC |
| :10220000EF2DFF27EA5AF74FC0828E01075F1F4F5D |
| :10221000B801F40180810E94610F20E0A8016F2DB8 |
| :1022200080E00E940B0B20E0A3016F2D85E00E944F |
| :10223000D50AF7E0FF1508F0F3940894C11CD11CEF |
| :1022400083E090E0A80EB91E0894811C911CE0E187 |
| :10225000F0E06E0E7F1EF2E4CF16D10409F463C0E5 |
| :10226000CBCF81E0E81679F58E010F5F1F4FB801E3 |
| :10227000809137050E942F0F1A8699EBA92E98E0BE |
| :10228000B92E6801CE0101961C2D181BF601819113 |
| :102290006F01805D898720E0AE01475F5F4F612F4E |
| :1022A00080E00E940B0B20E0A501612F85E00E94D9 |
| :1022B000D50A80E190E0A80EB91ECE010596C81699 |
| :1022C000D90681F1DFCFEE2069F58E010F5F1F4F38 |
| :1022D000B80180910B050E942F0F1A86680189EFC3 |
| :1022E000A82E88E0B82ECE010196FC2CF81AF60133 |
| :1022F00081916F01805D89878E01075F1F4F20E00C |
| :10230000A8016F2D80E00E940B0B20E0A5016F2D2E |
| :1023100085E00E94D50A80E190E0A80EB91EC016A3 |
| :10232000D10609F7FF248F2D9927A1960FB6F894AF |
| :10233000DEBF0FBECDBFDF91CF911F910F91FF90F8 |
| :10234000EF90DF90CF90BF90AF909F908F907F9055 |
| :102350006F900895982F8630D8F426E430E0E9E4B1 |
| :10236000F5E0808183832150304031978FEF2F3FFC |
| :102370003807B9F783E28093030581E6809304056B |
| :1023800095599093050510924D058BE40E943F07E7 |
| :1023900008951F9393E29093030591E690930405AB |
| :1023A00091E790930505809306051092070510921A |
| :1023B000080586E00E943F0710E00E94BA078130BE |
| :1023C00009F41EE11F5F809188058C54853018F058 |
| :1023D0001E3198F304C080E090E01E3110F081E0DF |
| :1023E00090E01F910895FF920F931F93CF93DF9377 |
| :1023F000CDB7DEB72F970FB6F894DEBF0FBECDBFB7 |
| :102400000E94690960E085E59DE00E94A70A60E0FE |
| :102410008FE49DE00E94A70A60E089E49DE00E94AD |
| :10242000A70A60E083E49DE00E94A70A60E08DE3D4 |
| :102430009DE00E94A70A60E087E39DE00E94A70A52 |
| :1024400040E065E081E00E94570E0E94C911813092 |
| :1024500041F420E04FE25DE066E080E00E94D50AB2 |
| :1024600062C062E0F62E0E9469098E010F5F1F4F65 |
| :102470004AE050E0B8018F2D99270E94631660E072 |
| :10248000C8010E94DE0A82E380930B0680910B064E |
| :102490008823E1F70E9469098F2D0E94D210682FCE |
| :1024A00080910E068823E1F380910E06823009F4B4 |
| :1024B000F39480910E06813009F4FA948FEFF816A8 |
| :1024C00019F45CE0F52E04C08CE08F1508F4FF24AD |
| :1024D00080910E06883019F48F2D0E94850F80910F |
| :1024E0000E06843009F0BFCF0E94690960E08CE0DD |
| :1024F0009DE00E94A70A40E062E081E00E94570E42 |
| :10250000813061F460E085E09DE00E94A70A85E0EB |
| :102510000E94AA1160E08DEE9CE003C060E089EDAE |
| :102520009CE00E94A70A84E680930B0680910B062C |
| :102530008823E1F72F960FB6F894DEBF0FBECDBF0C |
| :10254000DF91CF911F910F91FF9008951F920F92ED |
| :102550000FB60F9211248F939F93EF93FF93809167 |
| :102560005E089091C600E0E6F8E0E80FF11D908368 |
| :102570008F5F80935E0880915E088F7080935E0805 |
| :10258000FF91EF919F918F910F900FBE0F901F9031 |
| :10259000189588E98093C10080E18093C400089574 |
| :1025A0008AE080930D0690915F0880915E089817ED |
| :1025B00021F480910D068823B1F780910D068823C0 |
| :1025C00011F4E0E00FC080915F08E82FFF27E05A88 |
| :1025D000F74FE0818F5F80935F0880915F088F7075 |
| :1025E00080935F088E2F99270895982F8091C000BF |
| :1025F00085FFFCCF9093C6000895FC0107C0809131 |
| :10260000C00085FFFCCF9093C6003196908199233E |
| :10261000B1F708951F920F920FB60F9211248F9366 |
| :102620009F9380910C06882331F080910C06815095 |
| :1026300080930C0615C08AE080930C0680B1992720 |
| :1026400080959095689413F8959587951694E1F781 |
| :102650008F7080930E0680910F068F5F80930F0618 |
| :1026600080910B06882329F080910B06815080937E |
| :102670000B0680910D06882329F080910D0681506C |
| :1026800080930D069F918F910F900FBE0F901F901A |
| :10269000189587E084BD8CE987BDEEE6F0E0808187 |
| :1026A000826080830895F89480910101882321F449 |
| :1026B00084E08093010102C0109201018091010128 |
| :1026C000A2E0B0E0082E0E94C4160E94840978940B |
| :1026D00008950F931F9311E00E94690960E088E953 |
| :1026E0009DE00E94A70A60E085E99DE00E94A70A9C |
| :1026F00060E086E89DE00E94A70A60E08EE79DE02A |
| :102700000E94A70A60E083E79DE00E94A70A60E0BC |
| :102710008CE69DE00E94A70A4FE065E082E00E94FF |
| :10272000570E833049F08430C9F0823011F010E048 |
| :1027300026C00E94531323C00E94690901E022E3CE |
| :1027400044E664E18AE00E94510B80910E068830D5 |
| :10275000B1F080910E06843091F0F7CF0E946909A4 |
| :1027600001E028E244E664E18AE00E94640C809182 |
| :102770000E06883021F080910E068430C1F71123B7 |
| :1027800009F0AACF1F910F910895CF93DF93EC0129 |
| :1027900052E070E026C0E52FFF27E957FA4F21816C |
| :1027A0002D5332813D5343814D535C5FDE01A80FB1 |
| :1027B000B91F80818D53880F880F922F92959F703B |
| :1027C000892B8C932295207F832F86958695282BA5 |
| :1027D000FD0121833295330F330F307C342B32834C |
| :1027E0007D5F872F99275617B0F2DF91CF9108951B |
| :1027F0004F925F926F927F928F929F92AF92BF9211 |
| :10280000CF92DF92EF92FF920F931F93CF93DF93BC |
| :10281000FC01EB0180E2888340E8E130F40718F422 |
| :102820006624772408C0F095E195FF4F8DE28883F8 |
| :1028300051E0652E712C2E010894411C511CCF01D2 |
| :1028400060E177E20E9495168B01262F332780E105 |
| :1028500097E2BC01269FC001279F900D369F900DE7 |
| :1028600011249F01281B390B42E0C42ED12CCC0E21 |
| :10287000DD1EC90168EE73E00E9495167B01462FAC |
| :10288000552788EE93E0FC014E9FC0014F9F900DAD |
| :102890005E9F900D1124281B390B93E0A92EB12CBB |
| :1028A000AC0EBD1EC90164E670E00E949516FB01E6 |
| :1028B00084E6689FC0011124281B390B84E0882E10 |
| :1028C000912C8C0E9D1EC9016AE070E00E94951645 |
| :1028D0008AE0689FC0011124281B390B205D2D83DD |
| :1028E000005D0983F0E3EF0EEA82E05DEB83605D5B |
| :1028F0006C83003391F580E2888341E064167104B3 |
| :1029000009F48DE28983F6018081803331F580E21C |
| :10291000F2018083F1E06F16710409F48DE2F60193 |
| :102920008083F50180818033C1F480E2F6018083E9 |
| :10293000F1E06F16710409F48DE2F5018083F40172 |
| :102940008081803351F480E2F5018083F1E06F16DD |
| :10295000710409F48DE2F40180831E82DF91CF912E |
| :102960001F910F91FF90EF90DF90CF90BF90AF90AD |
| :102970009F908F907F906F905F904F9008950F93EE |
| :102980001F93082F84E180930B060E94D01283329C |
| :1029900021F080910B068823C1F780910B068823D4 |
| :1029A00019F481E090E030C00E94D0128093870536 |
| :1029B00011E00AC00E94D012E12FFF27E957FA4F19 |
| :1029C00080831F5F17FD1FE78D30A1F7023221F4CE |
| :1029D000612F80E196E00AC0802F992774E0880F6C |
| :1029E000991F7A95E1F7612F8A5A994F0E94C51372 |
| :1029F000E02FFF2764E0EE0FFF1F6A95E1F7EA5A28 |
| :102A0000F94F178680E090E01F910F910895FF9293 |
| :102A10000F931F93F82E83E28093030581E6809342 |
| :102A2000040592E2F91671F483E68093050510928D |
| :102A30000605109207051092080586E00E943F07E0 |
| :102A400004E40FC09FE19F1520F080930505F092EC |
| :102A50000605109207051092080586E00E943F07C0 |
| :102A600001E410E08F2D0E94BF14813009F41EE1B3 |
| :102A70001F5F80918805801710F0081718F41E3129 |
| :102A800088F304C080E090E01E3110F081E090E017 |
| :102A90001F910F91FF9008954F925F927F928F92B6 |
| :102AA0009F92AF92BF92CF92DF92EF92FF920F93DD |
| :102AB0001F93CF93DF93CDB7DEB72B970FB6F89464 |
| :102AC000DEBF0FBECDBF0E94690960E084ED9DE0CE |
| :102AD0000E94A70A1B8600E010E0802F0E940715C5 |
| :102AE000813039F4802F0E940715813011F421E0E4 |
| :102AF0002B870F5F1F4F0032110579F73B8531306F |
| :102B000019F0882499240EC060E089EC9DE00E94B1 |
| :102B1000A70A88EC80930B0680910B06882309F4A2 |
| :102B20009BC0FACF80910E068823E1F782E20E94D3 |
| :102B30000715813071F460E08EEB9DE00E94A70ADA |
| :102B400088EC80930B0680910B06882309F484C0DF |
| :102B5000FACF8E010F5F1F4FB801C4010E94F81316 |
| :102B600020E0A80160E08FE00E940B0BC401B3E0FD |
| :102B7000880F991FBA95E1F7881999096C01CC0C57 |
| :102B8000DD1CE2E1F6E0CE0EDF1E7C01F4E0EE0C8F |
| :102B9000FF1CFA95E1F726E536E0E20EF31E442429 |
| :102BA00055245C01742C739430E2A316B104B4F480 |
| :102BB0008E010F5F1F4FB801F601808191810E9445 |
| :102BC000F81320E0A701672D80E00E940B0B20E0A6 |
| :102BD000A801672D8DE00E940B0B07C020E049EA99 |
| :102BE0005DE0672D80E00E94D50A0894411C511CCD |
| :102BF0000894A11CB11C22E030E0C20ED31E80E17B |
| :102C000090E0E80EF91E97E04916510459F68AE063 |
| :102C100080930B0680910B068823E1F780910E06C6 |
| :102C2000813039F408948108910897FE02C0882405 |
| :102C3000992480910E06823051F40894811C911CD5 |
| :102C4000E8E08E1691041CF0E7E08E2E912C809126 |
| :102C50000E06843009F066CF2B960FB6F894DEBFCF |
| :102C60000FBECDBFDF91CF911F910F91FF90EF90DD |
| :102C7000DF90CF90BF90AF909F908F907F905F90AC |
| :102C80004F900895FB019F01E8944230C4F0453213 |
| :102C9000B4F44A3029F497FB1EF4909581959F4F28 |
| :102CA000642F77270E949516805D8A330CF0895D2A |
| :102CB0008193CB010097A1F716F45DE25193108246 |
| :102CC000C9010C947916FB019F01423074F0453222 |
| :102CD00064F4642F77270E949516805D8A330CF088 |
| :102CE000895D8193CB010097A1F71082C9010C94F3 |
| :102CF0007916DC01FC01672F71917723E1F7329798 |
| :102D000004C07C916D9370836291AE17BF07C8F3C6 |
| :102D10000895991B79E004C0991F961708F0961B37 |
| :102D2000881F7A95C9F780950895AA1BBB1B51E1AE |
| :102D300007C0AA1FBB1FA617B70710F0A61BB70B2B |
| :102D4000881F991F5A95A9F780959095BC01CD01D0 |
| :102D5000089597FB092E07260AD077FD04D0E5DFFA |
| :102D600006D000201AF4709561957F4F0895F6F70C |
| :102D7000909581959F4F0895F999FECFB2BDA1BD61 |
| :102D8000F89A119600B40895F999FECFB2BDA1BD8D |
| :102D900000BC11960FB6F894FA9AF99A0FBE0895EE |
| :022DA000FFCF63 |
| :00000001FF |
| /Transportables_Koptertool/tags/V-0.1.1/Spezial/MMT-Mega644-20.hex |
|---|
| 0,0 → 1,732 |
| :100000000C94F1060C940E070C940E070C940E073A |
| :100010000C940E070C940E070C940E070C940E070C |
| :100020000C940E070C940E070C940E070C940E07FC |
| :100030000C940E070C940E070C940E070C940E07EC |
| :100040000C940A130C940E070C940E070C940E07D4 |
| :100050000C94A6120C940E070C940E070C940E0729 |
| :100060000C940E070C940E070C940E070C940E07BC |
| :10007000202020202020000D0A54696D656F7574C2 |
| :100080002100446973706C61790000000000000079 |
| :100090003E5B4F5B3E003E6B4F6B3E001C3E7C3E2A |
| :1000A0001C00183C7E3C18001C577D571C001C5E31 |
| :1000B0007F5E1C0000183C180000FFE7C3E7FF004C |
| :1000C000001824180000FFE7DBE7FF0030483A067D |
| :1000D0000E00262979292600407F05050700407F6C |
| :1000E00005253F005A3CE73C5A007F3E1C1C080097 |
| :1000F000081C1C3E7F0014227F2214005F5F005FFB |
| :100100005F0006097F017F00006689956A006060D4 |
| :100110006060606094A2FFA2940008047E0408005E |
| :1001200010207E20100008082A1C0800081C2A083D |
| :1001300008001E10101010000C1E0C1E0C00303891 |
| :100140003E383000060E3E0E0600000000000000A3 |
| :1001500000005F000000000700070000147F147F0C |
| :100160001400242A7F2A12002313086462003649EF |
| :1001700056205000000807030000001C2241000028 |
| :100180000041221C00002A1C7F1C2A0008083E088F |
| :10019000080000807030000008080808080000000F |
| :1001A000606000002010080402003E5149453E00F6 |
| :1001B00000427F4000007249494946002141494DB3 |
| :1001C00033001814127F10002745454539003C4A7A |
| :1001D0004949310041211109070036494949360092 |
| :1001E000464949291E000000140000000040340068 |
| :1001F00000000008142241001414141414000041DB |
| :10020000221408000201590906003E415D594E00C2 |
| :100210007C1211127C007F49494936003E41414120 |
| :1002200022007F4141413E007F49494941007F0909 |
| :10023000090901003E41415173007F0808087F0011 |
| :1002400000417F4100002040413F01007F0814220F |
| :1002500041007F40404040007F021C027F007F043D |
| :1002600008107F003E4141413E007F090909060018 |
| :100270003E4151215E007F0919294600264949491E |
| :10028000320003017F0103003F4040403F001F2038 |
| :1002900040201F003F4038403F00631408146300B3 |
| :1002A0000304780403006159494D4300007F414134 |
| :1002B0004100020408102000004141417F00040277 |
| :1002C00001020400404040404000000307080000D5 |
| :1002D0002054547840007F28444438003844444433 |
| :1002E0002800384444287F0038545454180000082B |
| :1002F0007E09020018A4A49C78007F0804047800FA |
| :1003000000447D4000002040403D00007F10284414 |
| :10031000000000417F4000007C04780478007C08E5 |
| :1003200004047800384444443800FC18242418009D |
| :1003300018242418FC007C08040408004854545471 |
| :10034000240004043F4424003C4040207C001C2046 |
| :1003500040201C003C4030403C0044281028440011 |
| :100360004C9090907C004464544C4400000836410A |
| :100370000000000077000000004136080000020184 |
| :10038000020402003C2623263C001EA1A1611200AB |
| :100390003A4040207A003854545559002155557937 |
| :1003A0004100215454784100215554784000205494 |
| :1003B000557940000C1E527212003955555559009E |
| :1003C0003954545459003955545458000000457C50 |
| :1003D00041000002457D42000001457C4000791447 |
| :1003E00012147900F0282528F0007C5455450000AF |
| :1003F0002054547C54447C0A097F4941324949497C |
| :100400003200324848483200324A484830003A41C7 |
| :1004100041217A003A4240207800009DA0A07D0052 |
| :100420003944444439003D4040403D003C24FF24D1 |
| :100430002400487E494366002B2FFC2F2B00FF0928 |
| :1004400029F62000C0887E09030020545479410019 |
| :100450000000447D41003048484A32003840402284 |
| :100460007A00007A0A0A72007D0D19317D00262972 |
| :10047000292F280026292929260030484D40200010 |
| :100480003808080808000808080838002F10C8AC09 |
| :10049000BA002F102834FA0000007B000000081476 |
| :1004A0002A14220022142A140800AA005500AA00C7 |
| :1004B000AA55AA55AA5555AA55AA55AA000000FF43 |
| :1004C0000000101010FF0000141414FF00001010A2 |
| :1004D000FF00FF001010F010F000141414FC0000D6 |
| :1004E0001414F700FF000000FF00FF001414F404D0 |
| :1004F000FC00141417101F0010101F101F001414FC |
| :10050000141F0000101010F000000000001F101059 |
| :100510001010101F1010101010F01010000000FF2D |
| :100520001010101010101010101010FF10100000FC |
| :1005300000FF14140000FF00FF1000001F1017142C |
| :100540000000FC04F4141414171017141414F40409 |
| :10055000F4140000FF00F7141414141414141414E9 |
| :10056000F700F71414141417141410101F101F1090 |
| :10057000141414F414141010F010F01000001F10D4 |
| :100580001F100000001F1414000000FC14140000D1 |
| :10059000F010F0101010FF10FF10141414FF1414BA |
| :1005A0001010101F0000000000F01010FFFFFFFFF0 |
| :1005B000FFFFF0F0F0F0F0F0FFFFFF0000000000A0 |
| :1005C00000FFFFFF0F0F0F0F0F0F38444438440098 |
| :1005D0007C2A2A3E14007E0202060600027E027E6B |
| :1005E00002006355494163003844443C0400407EA6 |
| :1005F000201E200006027E02020099A5E7A59900B0 |
| :100600001C2A492A1C004C7201724C00304A4D4D84 |
| :100610003000304878483000BC625A463D003E49C0 |
| :10062000494900007E0101017E002A2A2A2A2A0067 |
| :1006300044445F44440040514A44400040444A51CD |
| :1006400040000000FF010300E080FF0000000808F8 |
| :100650006B6B0808361236243600060F090F0600A9 |
| :100660000000181800000000101000003040FF01CA |
| :100670000100001F01011E0000191D171200003C9F |
| :100680003C3C3C000000000000004D6F642062799B |
| :10069000204D696B656C6A6F2030352F3038002033 |
| :1006A000202053657474696E67730D0A0020202042 |
| :1006B000446562756720446174656E0D0A002020F0 |
| :1006C000204D6F746F72746573740D0A00202020C2 |
| :1006D000506172616D657465720D0A0020202044BE |
| :1006E0006973706C61790D0A00202048617570741F |
| :1006F0006D656EFC202856302E312E31290D0A00F2 |
| :10070000506F727461626C6573204B6F70746572A8 |
| :10071000746F6F6C0D0A002A0020005461737465B9 |
| :10072000206472FC636B656E0D0A00436F6E666930 |
| :100730006720202020004368616E6E656C73202066 |
| :1007400000537469636B202020202000486F656887 |
| :10075000652020202020004779726F202020202053 |
| :1007600020004C6F6F70696E672020200043616D20 |
| :100770006572612020202000536F6E737469676575 |
| :100780007320005573657220202020202000436FC5 |
| :1007900075706C696E67202000436F6E666967280C |
| :1007A000322920004C6F6F70696E677365740002A8 |
| :1007B000020202020202020004040404040403030D |
| :1007C00003080808080505080808000509090909BB |
| :1007D0000707070707070606060A0A0606050505AE |
| :1007E0000909090900070B0B0B0B0C0C0C0C0C0C6A |
| :1007F0000C0C0108020108020108020108020108AC |
| :100800000201080201080201080200000000FF04C2 |
| :1008100000FF0400FF0400FF0400320400FF040096 |
| :10082000060300400300140300200821FA080032E8 |
| :100830000800FF0800000500000500FA0800FA089B |
| :1008400000FA0800010000FF0500FF0900FF090091 |
| :10085000FF0900FF0900FF0700FA0700FA0700FA86 |
| :100860000700190700FF0600FA0600FA0600FF0A53 |
| :1008700000FF0A00FA0600FA0600FA0500FA050071 |
| :10088000FF0500FF0900FF0900FF0900FF09000044 |
| :10089000010001070000000000000000000000004F |
| :1008A0000000000000000000000000000000000048 |
| :1008B0000000000000000000004C6F6F7020757099 |
| :1008C0002020202020202020004C6F6F7020646F9B |
| :1008D000776E092020202000004C6F6F70206C651F |
| :1008E0006674202020202020004C6F6F70207269D9 |
| :1008F00067687420202020200048F668656E7265C5 |
| :10090000676C6572202020200048F668656E73636E |
| :1009100068616C74657220200048656164686F6C62 |
| :100920006409090000000000004B6F6D7061737373 |
| :100930000909000000000000004B6F6D70617373C7 |
| :100940004669780909000000004750530909090069 |
| :1009500000000000000000000041636873656E6BDA |
| :100960006F70706C756E6720004472656872617498 |
| :100970006509090000000000004E69636B2020201B |
| :10098000202020202020202000526F6C6C2020206E |
| :1009900020202020202020200047617320202020BC |
| :1009A00020202020202020200047696572090909A5 |
| :1009B000000000000000000000506F746931090958 |
| :1009C000090000000000000000506F74693209093E |
| :1009D000090000000000000000506F74693309092D |
| :1009E000090000000000000000506F74693409091C |
| :1009F000090000000000000000436F6E666967098F |
| :100A0000090900000000000000486F6568655F4D3F |
| :100A1000696E476173202020004C7566746472759E |
| :100A2000636B5F4420202020004D6178486F65682B |
| :100A3000652020202020202000486F6568655F50D9 |
| :100A4000202020202020202000486F6568655F5608 |
| :100A5000657273746165726B00486F6568655F41AC |
| :100A600043435F5769726B2E00537469636B5F5029 |
| :100A7000202020202020202000537469636B5F44D5 |
| :100A8000202020202020202000476965725F502010 |
| :100A90002020202020202020004761735F4D696EB8 |
| :100AA0002020202020202020004761735F4D6178A6 |
| :100AB0002020202020202020004779726F4163638E |
| :100AC00046616B746F720900004B6F6D70617373D8 |
| :100AD0005769726B756E6720004779726F5F50209F |
| :100AE0000909000000000000004779726F5F4909A2 |
| :100AF000090900000000000000556E7465727370F3 |
| :100B0000616E6E756E672020004E6F7447617309C9 |
| :100B10000909000000000000004E6F744761735A1D |
| :100B200065697420202020200055666F417573721E |
| :100B300069636874756E672000495F46616B746F06 |
| :100B40007220202020202020005573657250617291 |
| :100B5000616D3109090000000055736572506172C2 |
| :100B6000616D3209090000000055736572506172B1 |
| :100B7000616D3309090000000055736572506172A0 |
| :100B8000616D34090900000000536572766F4E698B |
| :100B9000636B4374726C090000536572766F4E6923 |
| :100BA000636B436F6D70090000536572766F4E6919 |
| :100BB000636B4D696E09000000536572766F4E6974 |
| :100BC000636B4D617809000000536572766F4E6962 |
| :100BD000636B526566727368004C6F6F7047617328 |
| :100BE0004C696D6974090000004C6F6F7054687235 |
| :100BF0006573686F6C640900004C6F6F704879739F |
| :100C0000746572657365090000416368734B6F70AA |
| :100C1000706C756E67090000004163687347656713 |
| :100C2000656E4B6F70706C2E0057696E6B6C556DF6 |
| :100C30007363686C4E69636B0057696E6B6C556DBE |
| :100C40007363686C526F6C6C004779726F416363B9 |
| :100C50004162676C656963680044726966746B6FB2 |
| :100C60006D700909000000000044796E616D6963D0 |
| :100C700053746162696C6974005573657250617276 |
| :100C8000616D35090900000000557365725061728D |
| :100C9000616D36090900000000557365725061727C |
| :100CA000616D37090900000000557365725061726B |
| :100CB000616D380909000000004C6F6F70436F6E62 |
| :100CC000666967090900000000536572766F4E6916 |
| :100CD000636B436F6D70496E000D0A4E69636874F3 |
| :100CE000206765737065696368657274000D0A50EA |
| :100CF0006172616D657465722067657370656963A3 |
| :100D000068657274000D0A2D2D2D3E0050617261D0 |
| :100D10006D657465722073706569636865726E3F96 |
| :100D20000D0A20206A610D0A20206E65696E00544C |
| :100D3000696D656F75740020353A0D0A0020343AEC |
| :100D40000D0A0020333A0D0A0020323A0D0A002025 |
| :100D5000313A0D0A004C61646520506172616D6525 |
| :100D60007465720D0A002D002D002D004578697400 |
| :100D70000D0A00526563687465636B0D0A004C6967 |
| :100D80006E69650D0A004F7269656E7469657275EA |
| :100D90006E670D0A000D0A0045696E7374656C6C10 |
| :100DA000756E67656E3A0D0A0020202020202020F5 |
| :100DB00020202020202020202020202020000D0A7C |
| :100DC00054696D656F757421000D0A54696D656F06 |
| :100DD0007574210044656275672D446973706C6198 |
| :100DE000790011241FBECFEFD0E1DEBFCDBF11E0EF |
| :100DF000A0E0B1E0E2EAFDE202C005900D92A03071 |
| :100E0000B107D9F718E0A0E0B1E001C01D92A0370A |
| :100E1000B107E1F70E940D0E0C94D0160C9400005F |
| :100E2000782F52E060E026C0E52FFF27E957FA4F00 |
| :100E300021812D5332813D5343814D535C5FDC0151 |
| :100E4000AD5FBA4F80818D53880F880F922F929596 |
| :100E50009F70892B8C932295207F832F8695869572 |
| :100E6000282BFD0121833295330F330F307C342B37 |
| :100E700032836D5F862F99275717B0F208950F932D |
| :100E80001F93B82F809103058093870580910405F7 |
| :100E9000809388058091050580938905A3E073E020 |
| :100EA00035C0E72FFF27ED5FFA4F808141816281D6 |
| :100EB0007D5FEA2FFF27E957FA4F282F26952695C1 |
| :100EC000235C2083552799278370907024E0880F36 |
| :100ED000991F2A95E1F79A0104E0369527950A951E |
| :100EE000E1F7822B835C81834F705070440F551F54 |
| :100EF000440F551F862F8295869586958370842B87 |
| :100F0000835C82836F73635C6383AC5F7B1748F29F |
| :100F100090E020E030E008C0E92FFF27E957FA4FC2 |
| :100F20008081280F311D9F5F9A17B1F73F70EA2F1C |
| :100F3000FF27E957FA4FC90136E0969587953A950C |
| :100F4000E1F7835C80832F73235C21838DE08283B0 |
| :100F500013820A2F0D5F10E008C0E12FFF27E95729 |
| :100F6000FA4F80810E94F5121F5F1017B1F71F9191 |
| :100F70000F9108951F9384E180930B060E94D01275 |
| :100F8000833221F080910B068823C1F780910B06F4 |
| :100F9000882319F481E090E017C00E94D01280935A |
| :100FA000870511E00AC00E94D012E12FFF27E95700 |
| :100FB000FA4F80831F5F17FD1FE78D30A1F7812F48 |
| :100FC0000E94100780E090E01F9108951F93CF9337 |
| :100FD000DF93CDB7DEB761970FB6F894DEBF0FBED3 |
| :100FE000CDBF182F83E28093030581E6809304052B |
| :100FF00080930505109306051092070510920805C9 |
| :1010000086E00E943F070E94BA07809188058134DC |
| :10101000D1F7E3E0F5E0DE01119681918D9385E053 |
| :10102000E331F807D1F7198A177020E0AE014F5F5E |
| :101030005F4F612F80E00E940B0B61960FB6F89412 |
| :10104000DEBF0FBECDBFDF91CF911F9108959F925C |
| :10105000AF92BF92CF92DF92EF92FF920F931F93C6 |
| :10106000CF93DF93CDB7DEB761970FB6F894DEBFAD |
| :101070000FBECDBF0E9469099924A92CBB2453E05F |
| :10108000AA0CBB1C5A95E1F7FA2C00E010E08F2D5A |
| :10109000800F0E94E6070F5F1F4F08301105B9F758 |
| :1010A0000E94BA0780918805843489F57501EE0C99 |
| :1010B000FF1C85E095E0E80EF91ECC24DD248E01AE |
| :1010C0000F5F1F4FF701208181819927982F882773 |
| :1010D0004AE050E0B801820F911D0E94421620E0C4 |
| :1010E00040E750E06C2D8EE00E94D50A20E0A80178 |
| :1010F0006C2D8EE00E940B0B0894C11CD11C82E069 |
| :1011000090E0E80EF91E98E0C916D104C1F680916E |
| :101110000E06882329F280910E06813009F49394FB |
| :1011200080910E06823009F49A9480910E068830E0 |
| :1011300019F0E3E09E22A1CF61960FB6F894DEBFCE |
| :101140000FBECDBFDF91CF911F910F91FF90EF9018 |
| :10115000DF90CF90BF90AF909F9008951F9393E240 |
| :101160009093030591E69093040598E69093050506 |
| :1011700080930605109207051092080586E00E94EC |
| :101180003F0710E00E94BA07813009F41AE01F5FA0 |
| :10119000809188058053853018F01A3098F304C088 |
| :1011A00080E090E01A3010F081E090E01F91089507 |
| :1011B0001F93CF93DF93CDB7DEB72A970FB6F8947E |
| :1011C000DEBF0FBECDBF0E94690960E082E890E0FB |
| :1011D0000E94A70A80910E068823E1F70E94AE08BC |
| :1011E000813069F460E087E790E00E94A70A88EC0C |
| :1011F00080930B0680910B06882369F1FBCF109139 |
| :10120000880519831A8220E0AE014F5F5F4F60E0CE |
| :101210008AE00E940B0B1F5F20E043E055E0612F46 |
| :1012200080E00E940B0B8AE080930B0680910B06F6 |
| :101230008823E1F780910E06813011F40E94AE08F8 |
| :1012400080910E06823011F40E94AE0880910E0645 |
| :10125000843009F0BFCF2A960FB6F894DEBF0FBED8 |
| :10126000CDBFDF91CF911F9108952C988EBD0DB405 |
| :1012700007FEFDCF8DB58DBD2C9A08951F93CF939A |
| :10128000DF93E2E0F1E0119285E0E230F807D9F770 |
| :1012900010EB2B98812F0E94350980E10E943509BF |
| :1012A000809101010E9435092B9AC0E0D0E080E0D6 |
| :1012B0000E9435092196C038D105C9F71F5F183B38 |
| :1012C00041F71092090610920A06DF91CF911F9103 |
| :1012D00008950E943E09089588E893E10197F1F787 |
| :1012E00008950F931F93CF93DF938C01C0E0D0E05C |
| :1012F00003C00E946C092196C017D107D1F7DF9176 |
| :10130000CF911F910F9108951092090610920A062D |
| :101310008FEF84B98EE58CBD2C9A2A988AE090E0F4 |
| :101320000E9471092A9A2C982B9880E40E94350912 |
| :1013300080910101882329F481EA0E94350980EC1B |
| :1013400004C080EA0E94350988EC0E94350986EACB |
| :101350000E94350982EA0E9435098FE20E94350910 |
| :1013600088EF0E94350980E00E94350987E20E94DB |
| :10137000350981E80E94350986E10E9435098CEA29 |
| :101380000E94350980E00E9435098FEA0E943509E4 |
| :101390000E943E090895FF920F931F938C01F62E31 |
| :1013A0002B98880F892F881F990B919580550E9443 |
| :1013B0003509809101010F77080F802F82958F707A |
| :1013C000805F0E943509802F8F700E9435092B9A0B |
| :1013D0008F2D0E9435091F910F91FF900895EF9274 |
| :1013E000FF920F931F93CF93DF93C0E0D0E002E012 |
| :1013F00011E032E8E32E31E0F32EF70181917F0115 |
| :10140000F801808361918F01CE010E94CB09219662 |
| :10141000F3E0C038DF0789F702E814E0F801119221 |
| :101420008F0160E0CE010E94CB092196F4E0C0302C |
| :10143000DF07A1F7DF91CF911F910F91FF90EF9000 |
| :101440000895CF92DF92EF92FF920F931F93CF9365 |
| :10145000DF93D22E4F3D81F0403E38F4463DB1F04F |
| :101460004C3DB1F0443CA9F40FC0463F49F04C3F1D |
| :1014700049F0443E71F402C041EE0BC044E809C09B |
| :1014800044E907C041E805C04EE803C049E901C08E |
| :101490004AE9062F11271695102F00271795079553 |
| :1014A00026E0829FC0011124080F191F1370429F6C |
| :1014B000700111248AE890E0E80EF91ECC24E801BE |
| :1014C000CE5FDE4FF7019491F2E0DF16A1F0FD153B |
| :1014D00030F0DD2059F081E0D816B1F409C0E3E026 |
| :1014E000DE1661F0F4E0DF1679F40AC098830CC0D0 |
| :1014F0008881892B08C08881892705C0888102C01E |
| :1015000088819095892388836991C8010E94CB09BD |
| :10151000C3940894E11CF11C0F5F1F4F86E0C816AE |
| :1015200089F6DF91CF911F910F91FF90EF90DF909F |
| :10153000CF90089580910A068F5F80930A068830C5 |
| :1015400028F00E94EF0987E080930A0608951F9310 |
| :10155000CF93DF93EC01162F20C04032A0F02196EC |
| :10156000212F60910A06809109060E94210A80912C |
| :1015700009068F5F80930906853178F0109209067D |
| :101580000E949A0A0AC04A3029F04D3029F410927C |
| :10159000090602C00E949A0A2196FE014491442342 |
| :1015A000E1F6DF91CF911F91089580930906609332 |
| :1015B0000A06622FCA010E94A70A08951F93CF93BB |
| :1015C000DF93EC01162F20C04032A0F02196212F8E |
| :1015D00060910A06809109060E94210A80910906FD |
| :1015E0008F5F80930906853178F0109209060E947A |
| :1015F0009A0A0AC04A3029F04D3029F4109209069F |
| :1016000002C00E949A0A219648814423E9F6DF919C |
| :10161000CF911F9108958093090660930A06622F67 |
| :10162000CA010E94DE0A0895982F87FD39C06034F0 |
| :10163000B8F5862F869586958695282F332736957B |
| :10164000322F222737952795290F311D677081E0AA |
| :1016500090E001C0880F6A95EAF7682F3370413037 |
| :1016600061F0413018F04230A1F40DC0F901EE5F95 |
| :10167000FE4F8081609586230BC0F901EE5FFE4F1F |
| :101680008081862B05C0F901EE5FFE4F80818627A1 |
| :101690008083F901EE5FFE4F6081C9010E94CB0992 |
| :1016A00008952F923F924F925F926F927F928F9206 |
| :1016B0009F92AF92BF92CF92DF92EF92FF920F93E1 |
| :1016C0001F93CF93DF93CDB7DEB728970FB6F8946B |
| :1016D000DEBF0FBECDBF8D83162F0E83682E7724FD |
| :1016E000862E9924842F99279C838B8386199709AA |
| :1016F000E22FFF27FA83E9839F012819390997FF11 |
| :1017000004C0FFEF2F2E3F2E07C040E050E00097AF |
| :1017100011F041E050E01A0137FF04C0EFEF4E2E08 |
| :101720005E2E08C040E050E02115310511F041E087 |
| :1017300050E02A016C0197FF04C0D094C194D108F5 |
| :10174000D394790137FF04C0F094E194F108F39445 |
| :101750004E81682D862D0E94140BEC14FD047CF53F |
| :10176000C60162E070E00E94A91644275527461B77 |
| :10177000570B58874F83A22CB62CB20C5D81052FD6 |
| :10178000112717C08F8198858E0D9F1D98878F8395 |
| :101790001816190634F4840C951C8C199D09988729 |
| :1017A0008F834E81682D8B2D0E94140B020D131D0B |
| :1017B000BA0CEB81FC810E171F0721F72DC0C70162 |
| :1017C00062E070E00E94A91644275527461B570B7C |
| :1017D00058874F83A42CB82CB40C012F112717C0A5 |
| :1017E0008F8198858C0D9D1D98878F8318161906FB |
| :1017F00034F4620C731C8E199F0998878F834E8175 |
| :101800006B2D862D0E94140B040D151DBA0CE98159 |
| :10181000FA810E171F0721F728960FB6F894DEBF3E |
| :101820000FBECDBFDF91CF911F910F91FF90EF9031 |
| :10183000DF90CF90BF90AF909F908F907F906F90F0 |
| :101840005F904F903F902F900895BF92CF92DF927C |
| :10185000EF92FF920F931F93CF93DF93182FB02E29 |
| :1018600087FD1FE7603408F06FE37727CB01820F15 |
| :10187000911D9C01812F840F912D911D6C0191E888 |
| :10188000C916D10418F0B0E8CB2ED12C790121343F |
| :10189000310518F0A0E4EA2EF12CEB0108C00B2D65 |
| :1018A0002C2F4C2D6C2F812F0E94510B2196EC1662 |
| :1018B000FD06A8F7DF91CF911F910F91FF90EF9058 |
| :1018C000DF90CF90BF900895CF92DF92EF92FF927A |
| :1018D0000F931F93CF93DF93D82EC02E87FF02C0A4 |
| :1018E0008FE7D82E162F603408F01FE3812F820F68 |
| :1018F000912D911DEC018D2D840F912D911D7C0159 |
| :1019000091E8E916F10418F000E8E02EF12C0C2D16 |
| :10191000212F4E2D612F8D2D0E94510BC134D105E9 |
| :1019200010F0C0E4D0E00C2D2C2F4E2D612F8E2D09 |
| :101930000E94510B2C2F4D2D6C2F8E2D0E94510B80 |
| :10194000212F4D2D6C2F8D2D0E94510BDF91CF91AA |
| :101950001F910F91FF90EF90DF90CF9008952F92FD |
| :101960003F924F925F926F927F928F929F92AF922F |
| :10197000BF92CF92DF92EF92FF920F931F93CF937C |
| :10198000DF93CDB7DEB724970FB6F894DEBF0FBE56 |
| :10199000CDBF8C016B017A01A22E21E030E0241B27 |
| :1019A000350B3C832B83CA01880F991F662477244B |
| :1019B000681A790A462E502E640F4A2D802F0E94F5 |
| :1019C000140B6C2D6E194A2D802F0E94140B4A2D7A |
| :1019D0006C2D802F8E0D0E94140B4A2D6C2D802FA4 |
| :1019E0008E190E94140B4701222433241A82198273 |
| :1019F00058C08B819C8197FD0BC008948108910889 |
| :101A0000E2E0F0E06E0E7F1E860D971D9C838B83B7 |
| :101A10000894211C311C29813A812E5F3F4F3A8363 |
| :101A200029838B819C810196820F931F9C838B83DA |
| :101A3000142D180DD52CD20C4A2D612F8D2D0E94FE |
| :101A4000140BE52CE2184A2D612F8E2D0E94140BE9 |
| :101A5000142D18194A2D612F8D2D0E94140B4A2D1B |
| :101A6000612F8E2D0E94140B142D120DE52CE80C05 |
| :101A70004A2D612F8E2D0E94140B952D9819092F38 |
| :101A80004A2D612F892F0E94140B142D12194A2DF3 |
| :101A9000612F8E2D0E94140B4A2D612F802F0E94E2 |
| :101AA000140B281439040CF4A4CF24960FB6F89420 |
| :101AB000DEBF0FBECDBFDF91CF911F910F91FF9081 |
| :101AC000EF90DF90CF90BF90AF909F908F907F90DE |
| :101AD0006F905F904F903F902F9008952F923F927C |
| :101AE0004F925F926F927F928F929F92AF92BF922E |
| :101AF000CF92DF92EF92FF920F931F93CF93DF93DA |
| :101B00006B017A0151E0A52EB12CAE18BF089701E8 |
| :101B1000220F331F88249924821A930A662E782E66 |
| :101B2000262F2E196E0D01E0482F0E94510B472DD4 |
| :101B30004E192C2D6C2D872D8E0D0E94510BE70117 |
| :101B400044245524222433243AC0B7FC07C02197EB |
| :101B500082E090E0880E991EA80CB91C0894411CE4 |
| :101B6000511C82E090E0280E391E0894A11CB11C83 |
| :101B7000A20CB31C1C2F662D6C0FE72CE418D72C7D |
| :101B8000D40C01E0262F4E2D8D2D0E94510B662D79 |
| :101B90006C1B262F4E2D8D2D0E94510B662D640D32 |
| :101BA000E72CEC1A170D262F4E2D812F0E94510B7A |
| :101BB000662D6419262F4E2D812F0E94510B4C1635 |
| :101BC0005D061CF2DF91CF911F910F91FF90EF9076 |
| :101BD000DF90CF90BF90AF909F908F907F906F904D |
| :101BE0005F904F903F902F900895A2E0B0E00E9448 |
| :101BF000BC16802D992780930101089581E021E092 |
| :101C000030E0D901082E0E94C41680E02F5F3F4FBC |
| :101C1000D901082E0E94C41608958FEF82B983E47B |
| :101C200085B98CEF88B98CE78BB983E087B980E8F8 |
| :101C30008AB921E030E0D9010E94BC16802D8130A4 |
| :101C400071F081E0D901082E0E94C41680E02F5F58 |
| :101C50003F4FD901082E0E94C416215030402F5FFB |
| :101C60003F4FD9010E94BC16802D99278093010116 |
| :101C70000E9484090E94C9120E94491378940E940C |
| :101C8000960EFDCF0F931F93062F142F20E049E1EE |
| :101C900057E0682F812F0E94D50A20E047E157E0E6 |
| :101CA000602F812F0E94D50A1F910F910895EF9206 |
| :101CB000FF920F931F93082FE62EF42E682F0E9499 |
| :101CC000420E102F912F80910E068823E1F780910C |
| :101CD0000E068823E1F380910E06823019F41E155A |
| :101CE00008F41F5F80910E06813019F4011708F483 |
| :101CF00011504F2D612F892F0E94420E80910E06A8 |
| :101D0000883021F080910E068430E1F680910E0635 |
| :101D1000843009F41FEF80910E068823E1F7812FAC |
| :101D200099271F910F91FF90EF9008950E946909E4 |
| :101D300060E080E097E00E94A70A60E089EE96E00C |
| :101D40000E94A70A60E08CED96E00E94A70A60E07E |
| :101D50008DEC96E00E94A70A60E08EEB96E00E9470 |
| :101D6000A70A60E08DEA96E00E94A70A60E08FE98A |
| :101D700096E00E94A70A60E08AE896E00E94A70A1F |
| :101D80004FE066E082E00E94570E843091F085308B |
| :101D900028F4823041F08330A1F408C0853061F02E |
| :101DA000863079F40CC00E94D80808950E94F3117F |
| :101DB00008950E94E20E08950E944C1508950E9415 |
| :101DC000691308950E94690980910E068823E1F73E |
| :101DD00060E08BE197E00E94A70A80910E068823BD |
| :101DE000E1F380910E068830C9F483E28093030505 |
| :101DF00081E68093040584E7809305058AE080935B |
| :101E000006058093070580930805809309051092C5 |
| :101E10000A0510920B0589E00E943F0780910E068B |
| :101E20008823E1F780910E068823E1F383E2809313 |
| :101E3000030581E68093040584E7809305051092ED |
| :101E400006051092070510920805109209051092D8 |
| :101E50000A0510920B0589E00E943F070895FB01D7 |
| :101E600020E030E0482F552761E0CA01022E02C071 |
| :101E7000959587950A94E2F780FF02C0608301C0C0 |
| :101E800010822F5F3F4F31962830310571F708954A |
| :101E900040E020E030E061E070E0FC0181918130C1 |
| :101EA00041F4CB01022E02C0880F991F0A94E2F779 |
| :101EB000480F2F5F3F4F2830310581F7842F992736 |
| :101EC0000895482FFB0164E60E948916808324E66A |
| :101ED000829FC0011124481B842F6AE00E9489164A |
| :101EE0002AE0829F90011124421B405D4283908131 |
| :101EF000905D9083805D8183903329F490E290839C |
| :101F0000803309F4918313820895CF92DF92EF9288 |
| :101F1000FF920F931F93CF93DF93CDB7DEB76297F6 |
| :101F20000FB6F894DEBF0FBECDBF823008F455C0A7 |
| :101F3000615044E080E00E94570EC82E8FEFC81613 |
| :101F400009F421C1EC2CFF24F701EA5AF74FE08194 |
| :101F5000FF27ED5FFA4FD08020E04AE65DE06C2D70 |
| :101F600084E00E94D50A80910E068823E1F78091D3 |
| :101F70000E06813009F4DA9480910E06823009F45D |
| :101F8000D3948E01075F1F4FB8018D2D0E94610F02 |
| :101F900020E0A8016C2D80E00E940B0B84E180936F |
| :101FA0000B0680910B068823E1F780910E068430A2 |
| :101FB00021F080910E068830D1F680910E0688308F |
| :101FC00009F0E1C0A6E5B8E0EA0EFB1ED701EC91EE |
| :101FD000FF27ED5FFA4FD082D6C0813009F069C08B |
| :101FE0008E010F5F1F4FB801809137050E942F0FA0 |
| :101FF0001A8644E063E080E00E94570ED82EBFEFBF |
| :102000008B1709F4C0C0E82EFF240E0D1F1DF80128 |
| :10201000008120E048E65DE0682F84E00E94D50A58 |
| :1020200080910E06813009F400E080910E06823026 |
| :1020300009F401E0005D0987005320E0AE01475F2D |
| :102040005F4F6D2D80E00E940B0B84E180930B06A7 |
| :1020500080910B068823E1F780910E06883021F0ED |
| :1020600080910E068430E1F680910E06883051F49E |
| :10207000CE010196E80EF91ED7010C930E94480F7D |
| :10208000809337050E9469098E01075F1F4FB801D1 |
| :10209000809137050E94610F60E0C8010E94DE0A4E |
| :1020A00088EC80930B0680910B06882309F46BC0A3 |
| :1020B000FACF882309F067C08E010F5F1F4FB80168 |
| :1020C00080910B050E942F0F1A8644E067E080E0A4 |
| :1020D0000E94570ED82EBFEF8B1709F454C0E82E7C |
| :1020E000FF240E0D1F1DF801008120E046E65DE093 |
| :1020F000682F84E00E94D50A80910E06813009F491 |
| :1021000000E080910E06823009F401E0005D09874D |
| :10211000005320E0AE01475F5F4F6D2D80E00E94CD |
| :102120000B0B84E180930B0680910B068823E1F76B |
| :1021300080910E06883021F080910E068430E1F601 |
| :1021400080910E06883051F4CE010196E80EF91EFA |
| :10215000D7010C930E94480F80930B050E946909D8 |
| :102160008E01075F1F4FB80180910B050E94610F20 |
| :1021700060E0C8010E94DE0A88EC80930B06809123 |
| :102180000B068823E1F762960FB6F894DEBF0FBE08 |
| :10219000CDBFDF91CF911F910F91FF90EF90DF9016 |
| :1021A000CF9008956F927F928F929F92AF92BF923D |
| :1021B000CF92DF92EF92FF920F931F93CF93DF9313 |
| :1021C000CDB7DEB7A1970FB6F894DEBF0FBECDBF77 |
| :1021D000E82E81E08E1508F044C044EFA42E47E0BD |
| :1021E000B42E39E7632E39E0732EFF24CC24DD248E |
| :1021F00023E0822E25E0922EF50184918E15E9F4DC |
| :10220000EF2DFF27EA5AF74FC0828E01075F1F4F5D |
| :10221000B801F40180810E94610F20E0A8016F2DB8 |
| :1022200080E00E940B0B20E0A3016F2D85E00E944F |
| :10223000D50AF7E0FF1508F0F3940894C11CD11CEF |
| :1022400083E090E0A80EB91E0894811C911CE0E187 |
| :10225000F0E06E0E7F1EF2E4CF16D10409F463C0E5 |
| :10226000CBCF81E0E81679F58E010F5F1F4FB801E3 |
| :10227000809137050E942F0F1A8699EBA92E98E0BE |
| :10228000B92E6801CE0101961C2D181BF601819113 |
| :102290006F01805D898720E0AE01475F5F4F612F4E |
| :1022A00080E00E940B0B20E0A501612F85E00E94D9 |
| :1022B000D50A80E190E0A80EB91ECE010596C81699 |
| :1022C000D90681F1DFCFEE2069F58E010F5F1F4F38 |
| :1022D000B80180910B050E942F0F1A86680189EFC3 |
| :1022E000A82E88E0B82ECE010196FC2CF81AF60133 |
| :1022F00081916F01805D89878E01075F1F4F20E00C |
| :10230000A8016F2D80E00E940B0B20E0A5016F2D2E |
| :1023100085E00E94D50A80E190E0A80EB91EC016A3 |
| :10232000D10609F7FF248F2D9927A1960FB6F894AF |
| :10233000DEBF0FBECDBFDF91CF911F910F91FF90F8 |
| :10234000EF90DF90CF90BF90AF909F908F907F9055 |
| :102350006F900895982F8630D8F426E430E0E9E4B1 |
| :10236000F5E0808183832150304031978FEF2F3FFC |
| :102370003807B9F783E28093030581E6809304056B |
| :1023800095599093050510924D058BE40E943F07E7 |
| :1023900008951F9393E29093030591E690930405AB |
| :1023A00091E790930505809306051092070510921A |
| :1023B000080586E00E943F0710E00E94BA078130BE |
| :1023C00009F41EE11F5F809188058C54853018F058 |
| :1023D0001E3198F304C080E090E01E3110F081E0DF |
| :1023E00090E01F910895FF920F931F93CF93DF9377 |
| :1023F000CDB7DEB72F970FB6F894DEBF0FBECDBFB7 |
| :102400000E94690960E085E59DE00E94A70A60E0FE |
| :102410008FE49DE00E94A70A60E089E49DE00E94AD |
| :10242000A70A60E083E49DE00E94A70A60E08DE3D4 |
| :102430009DE00E94A70A60E087E39DE00E94A70A52 |
| :1024400040E065E081E00E94570E0E94C911813092 |
| :1024500041F420E04FE25DE066E080E00E94D50AB2 |
| :1024600062C062E0F62E0E9469098E010F5F1F4F65 |
| :102470004AE050E0B8018F2D99270E94631660E072 |
| :10248000C8010E94DE0A82E380930B0680910B064E |
| :102490008823E1F70E9469098F2D0E94D210682FCE |
| :1024A00080910E068823E1F380910E06823009F4B4 |
| :1024B000F39480910E06813009F4FA948FEFF816A8 |
| :1024C00019F45CE0F52E04C08CE08F1508F4FF24AD |
| :1024D00080910E06883019F48F2D0E94850F80910F |
| :1024E0000E06843009F0BFCF0E94690960E08CE0DD |
| :1024F0009DE00E94A70A40E062E081E00E94570E42 |
| :10250000813061F460E085E09DE00E94A70A85E0EB |
| :102510000E94AA1160E08DEE9CE003C060E089EDAE |
| :102520009CE00E94A70A84E680930B0680910B062C |
| :102530008823E1F72F960FB6F894DEBF0FBECDBF0C |
| :10254000DF91CF911F910F91FF9008951F920F92ED |
| :102550000FB60F9211248F939F93EF93FF93809167 |
| :102560005E089091C600E0E6F8E0E80FF11D908368 |
| :102570008F5F80935E0880915E088F7080935E0805 |
| :10258000FF91EF919F918F910F900FBE0F901F9031 |
| :10259000189588E98093C10084E18093C400089570 |
| :1025A0008AE080930D0690915F0880915E089817ED |
| :1025B00021F480910D068823B1F780910D068823C0 |
| :1025C00011F4E0E00FC080915F08E82FFF27E05A88 |
| :1025D000F74FE0818F5F80935F0880915F088F7075 |
| :1025E00080935F088E2F99270895982F8091C000BF |
| :1025F00085FFFCCF9093C6000895FC0107C0809131 |
| :10260000C00085FFFCCF9093C6003196908199233E |
| :10261000B1F708951F920F920FB60F9211248F9366 |
| :102620009F9380910C06882331F080910C06815095 |
| :1026300080930C0615C08AE080930C0680B1992720 |
| :1026400080959095689413F8959587951694E1F781 |
| :102650008F7080930E0680910F068F5F80930F0618 |
| :1026600080910B06882329F080910B06815080937E |
| :102670000B0680910D06882329F080910D0681506C |
| :1026800080930D069F918F910F900FBE0F901F901A |
| :10269000189587E084BD83EC87BDEEE6F0E080818D |
| :1026A000826080830895F89480910101882321F449 |
| :1026B00084E08093010102C0109201018091010128 |
| :1026C000A2E0B0E0082E0E94C4160E94840978940B |
| :1026D00008950F931F9311E00E94690960E088E953 |
| :1026E0009DE00E94A70A60E085E99DE00E94A70A9C |
| :1026F00060E086E89DE00E94A70A60E08EE79DE02A |
| :102700000E94A70A60E083E79DE00E94A70A60E0BC |
| :102710008CE69DE00E94A70A4FE065E082E00E94FF |
| :10272000570E833049F08430C9F0823011F010E048 |
| :1027300026C00E94531323C00E94690901E022E3CE |
| :1027400044E664E18AE00E94510B80910E068830D5 |
| :10275000B1F080910E06843091F0F7CF0E946909A4 |
| :1027600001E028E244E664E18AE00E94640C809182 |
| :102770000E06883021F080910E068430C1F71123B7 |
| :1027800009F0AACF1F910F910895CF93DF93EC0129 |
| :1027900052E070E026C0E52FFF27E957FA4F21816C |
| :1027A0002D5332813D5343814D535C5FDE01A80FB1 |
| :1027B000B91F80818D53880F880F922F92959F703B |
| :1027C000892B8C932295207F832F86958695282BA5 |
| :1027D000FD0121833295330F330F307C342B32834C |
| :1027E0007D5F872F99275617B0F2DF91CF9108951B |
| :1027F0004F925F926F927F928F929F92AF92BF9211 |
| :10280000CF92DF92EF92FF920F931F93CF93DF93BC |
| :10281000FC01EB0180E2888340E8E130F40718F422 |
| :102820006624772408C0F095E195FF4F8DE28883F8 |
| :1028300051E0652E712C2E010894411C511CCF01D2 |
| :1028400060E177E20E9495168B01262F332780E105 |
| :1028500097E2BC01269FC001279F900D369F900DE7 |
| :1028600011249F01281B390B42E0C42ED12CCC0E21 |
| :10287000DD1EC90168EE73E00E9495167B01462FAC |
| :10288000552788EE93E0FC014E9FC0014F9F900DAD |
| :102890005E9F900D1124281B390B93E0A92EB12CBB |
| :1028A000AC0EBD1EC90164E670E00E949516FB01E6 |
| :1028B00084E6689FC0011124281B390B84E0882E10 |
| :1028C000912C8C0E9D1EC9016AE070E00E94951645 |
| :1028D0008AE0689FC0011124281B390B205D2D83DD |
| :1028E000005D0983F0E3EF0EEA82E05DEB83605D5B |
| :1028F0006C83003391F580E2888341E064167104B3 |
| :1029000009F48DE28983F6018081803331F580E21C |
| :10291000F2018083F1E06F16710409F48DE2F60193 |
| :102920008083F50180818033C1F480E2F6018083E9 |
| :10293000F1E06F16710409F48DE2F5018083F40172 |
| :102940008081803351F480E2F5018083F1E06F16DD |
| :10295000710409F48DE2F40180831E82DF91CF912E |
| :102960001F910F91FF90EF90DF90CF90BF90AF90AD |
| :102970009F908F907F906F905F904F9008950F93EE |
| :102980001F93082F84E180930B060E94D01283329C |
| :1029900021F080910B068823C1F780910B068823D4 |
| :1029A00019F481E090E030C00E94D0128093870536 |
| :1029B00011E00AC00E94D012E12FFF27E957FA4F19 |
| :1029C00080831F5F17FD1FE78D30A1F7023221F4CE |
| :1029D000612F80E196E00AC0802F992774E0880F6C |
| :1029E000991F7A95E1F7612F8A5A994F0E94C51372 |
| :1029F000E02FFF2764E0EE0FFF1F6A95E1F7EA5A28 |
| :102A0000F94F178680E090E01F910F910895FF9293 |
| :102A10000F931F93F82E83E28093030581E6809342 |
| :102A2000040592E2F91671F483E68093050510928D |
| :102A30000605109207051092080586E00E943F07E0 |
| :102A400004E40FC09FE19F1520F080930505F092EC |
| :102A50000605109207051092080586E00E943F07C0 |
| :102A600001E410E08F2D0E94BF14813009F41EE1B3 |
| :102A70001F5F80918805801710F0081718F41E3129 |
| :102A800088F304C080E090E01E3110F081E090E017 |
| :102A90001F910F91FF9008954F925F927F928F92B6 |
| :102AA0009F92AF92BF92CF92DF92EF92FF920F93DD |
| :102AB0001F93CF93DF93CDB7DEB72B970FB6F89464 |
| :102AC000DEBF0FBECDBF0E94690960E084ED9DE0CE |
| :102AD0000E94A70A1B8600E010E0802F0E940715C5 |
| :102AE000813039F4802F0E940715813011F421E0E4 |
| :102AF0002B870F5F1F4F0032110579F73B8531306F |
| :102B000019F0882499240EC060E089EC9DE00E94B1 |
| :102B1000A70A88EC80930B0680910B06882309F4A2 |
| :102B20009BC0FACF80910E068823E1F782E20E94D3 |
| :102B30000715813071F460E08EEB9DE00E94A70ADA |
| :102B400088EC80930B0680910B06882309F484C0DF |
| :102B5000FACF8E010F5F1F4FB801C4010E94F81316 |
| :102B600020E0A80160E08FE00E940B0BC401B3E0FD |
| :102B7000880F991FBA95E1F7881999096C01CC0C57 |
| :102B8000DD1CE2E1F6E0CE0EDF1E7C01F4E0EE0C8F |
| :102B9000FF1CFA95E1F726E536E0E20EF31E442429 |
| :102BA00055245C01742C739430E2A316B104B4F480 |
| :102BB0008E010F5F1F4FB801F601808191810E9445 |
| :102BC000F81320E0A701672D80E00E940B0B20E0A6 |
| :102BD000A801672D8DE00E940B0B07C020E049EA99 |
| :102BE0005DE0672D80E00E94D50A0894411C511CCD |
| :102BF0000894A11CB11C22E030E0C20ED31E80E17B |
| :102C000090E0E80EF91E97E04916510459F68AE063 |
| :102C100080930B0680910B068823E1F780910E06C6 |
| :102C2000813039F408948108910897FE02C0882405 |
| :102C3000992480910E06823051F40894811C911CD5 |
| :102C4000E8E08E1691041CF0E7E08E2E912C809126 |
| :102C50000E06843009F066CF2B960FB6F894DEBFCF |
| :102C60000FBECDBFDF91CF911F910F91FF90EF90DD |
| :102C7000DF90CF90BF90AF909F908F907F905F90AC |
| :102C80004F900895FB019F01E8944230C4F0453213 |
| :102C9000B4F44A3029F497FB1EF4909581959F4F28 |
| :102CA000642F77270E949516805D8A330CF0895D2A |
| :102CB0008193CB010097A1F716F45DE25193108246 |
| :102CC000C9010C947916FB019F01423074F0453222 |
| :102CD00064F4642F77270E949516805D8A330CF088 |
| :102CE000895D8193CB010097A1F71082C9010C94F3 |
| :102CF0007916DC01FC01672F71917723E1F7329798 |
| :102D000004C07C916D9370836291AE17BF07C8F3C6 |
| :102D10000895991B79E004C0991F961708F0961B37 |
| :102D2000881F7A95C9F780950895AA1BBB1B51E1AE |
| :102D300007C0AA1FBB1FA617B70710F0A61BB70B2B |
| :102D4000881F991F5A95A9F780959095BC01CD01D0 |
| :102D5000089597FB092E07260AD077FD04D0E5DFFA |
| :102D600006D000201AF4709561957F4F0895F6F70C |
| :102D7000909581959F4F0895F999FECFB2BDA1BD61 |
| :102D8000F89A119600B40895F999FECFB2BDA1BD8D |
| :102D900000BC11960FB6F894FA9AF99A0FBE0895EE |
| :022DA000FFCF63 |
| :00000001FF |
| /Transportables_Koptertool/tags/V-0.1.1/base64.c |
|---|
| 0,0 → 1,116 |
| #include <avr/io.h> |
| #include <inttypes.h> |
| #include <stdlib.h> |
| #include <avr/pgmspace.h> |
| #include "main.h" |
| #include "rs232.h" |
| #include "base64.h" |
| #include "lcd.h" |
| uint8_t r_buffer[129]; // Dieser Puffer enthält die Rohdaten (kodiert) |
| uint8_t p_buffer[129]; // Dieser Puffer enthält die Daten im Klartext |
| //struct str_DebugIn *p_buffer; |
| uint8_t get_message() // Liest eine komplette Übertragung und dekodiert sie |
| { |
| uint8_t index, comm; |
| timer = 20; // Timer für Timeout |
| while ((RS232_get() != '#') && (timer > 0)); // Warten auf Start-Zeichen # |
| if (timer > 0) // Falls kein Timeout auftrat |
| { |
| index = 0; // Die Rohdaten in r_buffer einlesen |
| do |
| { |
| comm = RS232_get(); |
| r_buffer[index++] = comm; |
| if (index > 127) // Schutz vor Puffer-Überlauf |
| index = 127; |
| } |
| while (comm != 0x0D); // ... bis End-Signal = 0x0D kommt... |
| base64_decode(index); // Die base64-kodierten Rohdaten umwandeln |
| return 0; // kein Fehler aufgetreten |
| } |
| else |
| { |
| return 1; // Fehler aufgetreten |
| } |
| } |
| uint8_t base64_decode(uint8_t number) // Wandelt die base64-Rohdaten in lesbare Daten um |
| { |
| uint8_t p,q; |
| uint8_t a,b,c,d; |
| p = 2; |
| q = 0; |
| while (p < number) |
| { |
| a = r_buffer[p + 0] - 61; |
| b = r_buffer[p + 1] - 61; |
| c = r_buffer[p + 2] - 61; |
| d = r_buffer[p + 3] - 61; |
| p += 4; |
| p_buffer[q + 0] = (a << 2) | (b >> 4); // gespeichert werden die Daten in p_buffer |
| p_buffer[q + 1] = ((b & 0x0F) << 4) | (c >> 2); |
| p_buffer[q + 2] = ((c & 0x03) << 6) | d; |
| q += 3; |
| } |
| return q; // Rückgabe der Anzahl der Datenbytes |
| } |
| void base64_send(uint8_t number) // Sendet Daten zur Flight-Control |
| { // Die Daten werden in p_buffer erwartet, umcodiert und gesendet |
| uint8_t bpointer,spointer; |
| uint8_t x,y,z,a; |
| uint16_t checksum; |
| r_buffer[0] = p_buffer[0]; |
| r_buffer[1] = p_buffer[1]; |
| r_buffer[2] = p_buffer[2]; |
| bpointer = 3; |
| spointer = 3; |
| while (spointer < number) |
| { |
| x = p_buffer[spointer]; |
| y = p_buffer[spointer + 1]; |
| z = p_buffer[spointer + 2]; |
| spointer += 3; |
| r_buffer[bpointer + 0] = (x >> 2) + 61; |
| r_buffer[bpointer + 1] = (((x & 0x03) << 4) | ((y & 0xF0) >> 4)) + 61; |
| r_buffer[bpointer + 2] = (((y & 0x0F) << 2) | ((z & 0xC0) >> 6)) + 61; |
| r_buffer[bpointer + 3] = (z & 0x3F) + 61; |
| bpointer += 4; |
| } |
| checksum = 0; |
| for(a=0;a<bpointer;a++) |
| checksum += r_buffer[a]; |
| checksum %= 4096; |
| r_buffer[bpointer] = (checksum / 64) + 61; |
| r_buffer[bpointer + 1] = (checksum % 64) + 61; |
| r_buffer[bpointer + 2] = 13; |
| r_buffer[bpointer + 3] = 0; |
| bpointer += 3; |
| for(a=0;a<bpointer;a++) |
| RS232_send(r_buffer[a]); |
| } |
| /Transportables_Koptertool/tags/V-0.1.1/base64.h |
|---|
| 0,0 → 1,12 |
| #ifndef base64_h |
| #define base64_h |
| uint8_t base64_decode(uint8_t number); |
| void base64_send(uint8_t number); |
| uint8_t get_message(void); |
| uint8_t p_buffer[129]; // Dieser Puffer enthält die Daten im Klartext |
| uint8_t r_buffer[129]; // Dieser Puffer enthält die Rohdaten (kodiert) |
| #endif |
| /Transportables_Koptertool/tags/V-0.1.1/debug.c |
|---|
| 0,0 → 1,257 |
| // debug Data |
| #include <avr/io.h> |
| #include <inttypes.h> |
| #include <stdlib.h> |
| #include <avr/pgmspace.h> |
| #include "main.h" |
| #include "lcd.h" |
| #include "rs232.h" |
| #include "base64.h" |
| #include "parameter.h" |
| #include "menu.h" |
| #include "debug.h" |
| uint8_t r_buffer[129]; // Dieser Puffer enthält die Rohdaten (kodiert) |
| uint8_t base64_decode_debug(unsigned char *ptrOut, uint8_t number) // Wandelt die base64-Rohdaten in lesbare Daten um |
| { |
| uint8_t p,q; |
| uint8_t a,b,c,d; |
| p = 2; |
| q = 0; |
| while (p < number) |
| { |
| a = r_buffer[p + 0] - 61; |
| b = r_buffer[p + 1] - 61; |
| c = r_buffer[p + 2] - 61; |
| d = r_buffer[p + 3] - 61; |
| p += 4; |
| ptrOut[q + 0] = (a << 2) | (b >> 4); // gespeichert werden die Daten in ptrOut |
| ptrOut[q + 1] = ((b & 0x0F) << 4) | (c >> 2); |
| ptrOut[q + 2] = ((c & 0x03) << 6) | d; |
| q += 3; |
| } |
| return q; // Rückgabe der Anzahl der Datenbytes |
| } |
| uint8_t get_message_debug(uint8_t command) // Liest eine komplette Übertragung und dekodiert sie |
| { |
| uint8_t index, comm; |
| timer = 20; // Timer für Timeout |
| while ((RS232_get() != '#') && (timer > 0)); // Warten auf Start-Zeichen # |
| if (timer > 0) // Falls kein Timeout auftrat |
| { |
| index = 0; // Die Rohdaten in r_buffer einlesen |
| do |
| { |
| comm = RS232_get(); |
| r_buffer[index++] = comm; |
| if (index > 127) // Schutz vor Puffer-Überlauf |
| index = 127; |
| } |
| while (comm != 0x0D); // ... bis End-Signal = 0x0D kommt... |
| if (command == 34) |
| base64_decode_debug((unsigned char *) &DebugIn,index); // Die base64-kodierten Rohdaten umwandeln |
| else |
| base64_decode_debug((unsigned char *) &DebugInText[command][0], index); // Die base64-kodierten Rohdaten umwandeln |
| DebugInText[command][15] = 0x00; // Ende Zeichen setzen!! |
| return 0; // kein Fehler aufgetreten |
| } |
| else |
| { |
| return 1; // Fehler aufgetreten |
| } |
| } |
| uint8_t read_debug(uint8_t command_read) // |
| { |
| uint8_t timeout; |
| char compare; |
| timeout = 0; |
| p_buffer[0] = '#'; // Debug-Daten anfordern |
| p_buffer[1] = 'a'; |
| if (command_read == 34) |
| { |
| p_buffer[2] = 'c'; |
| p_buffer[3] = 0; |
| } |
| if (command_read < 32) |
| { |
| p_buffer[2] = 'a'; |
| p_buffer[3] = command_read; |
| } |
| p_buffer[4] = 0; |
| p_buffer[5] = 0; |
| base64_send(6); |
| if (command_read == 34) |
| compare = 'D'; |
| else |
| compare = 'A'; |
| do // warten, bis die Parameter gesendet werden |
| { |
| if (get_message_debug(command_read) == 1) |
| timeout = 30; |
| timeout ++; |
| } |
| while (((r_buffer[1] < compare) || (r_buffer[1] > compare)) && (timeout < 30)); // "!=" funktioniert witzigerweise ned |
| if (timeout >= 30) |
| return 1; |
| else |
| return 0; |
| } |
| #define isminus 65536 / 2 |
| void decimal_int (unsigned int data, uint8_t *text) // wandelt Wert in rechtsbündigen Text um |
| { |
| int sign = 0; |
| text[0] = 0x20; // (schneller/kleiner als printf()) |
| if (data > isminus) |
| { |
| data = 65536 - data; |
| sign = 1; |
| text[0] = '-'; |
| } |
| text[1] = data/10000; |
| data -= (text[1] * 10000); |
| text[2] = data/1000; |
| data -= (text[2] *1000); |
| text[3] = data/100; |
| data -= (text[3] * 100); |
| text[4] = data/10; |
| data -= (text[4] *10); |
| text[5] = data + 0x30; |
| text[1] += 0x30; |
| text[2] += 0x30; |
| text[3] += 0x30; |
| text[4] += 0x30; |
| if (text[1] == 0x30) |
| { |
| text[0] = 0x20; |
| if (sign == 1) text[1] = '-'; else text[1] = 0x20; |
| if (text[2] == 0x30) |
| { |
| text[1] = 0x20; |
| if (sign == 1) text[2] = '-'; else text[2] = 0x20; |
| if (text[3] == 0x30) |
| { |
| text[2] = 0x20; |
| if (sign == 1) text[3] = '-'; else text[3] = 0x20; |
| if (text[4] == 0x30) |
| { |
| text[3] = 0x20; |
| if (sign == 1) text[4] = '-'; else text[4] = 0x20; |
| } |
| } |
| } |
| } |
| text[6] = 0x00; |
| } |
| void display_debug(void) |
| { |
| uint8_t zeile; |
| uint8_t text[10]; |
| uint8_t i = 0; |
| int page = 0; |
| #define step 7 |
| uint8_t flag = 0; |
| lcd_cls(); |
| zeile = 0; |
| lcd_printp(PSTR("Debug-Display"),0); |
| for (i=0;i<32;i++) |
| { |
| if (read_debug(i) == 1) |
| { |
| if (read_debug(i) == 1) // 2mal Probieren |
| flag = 1; |
| } |
| } |
| if (flag == 1) |
| { |
| flag = 0; |
| lcd_printp(PSTR("\r\nTimeout!"),0); |
| timer = 200; |
| while (timer > 0); |
| } |
| else |
| { |
| do |
| { |
| while (key != 0x00); |
| if (read_debug(34) == 1) //Debugwerte |
| { |
| lcd_printp(PSTR("\r\nTimeout!"),0); |
| timer = 200; |
| while (timer > 0); |
| break; |
| } |
| else |
| { |
| decimal_int(page,text); |
| // lcd_print_atp(0,6,PSTR("Page"),0); |
| lcd_print_at(15,0,text,0); |
| for (i=0;i<step;i++) |
| { |
| if ((i + (page * step)) < 32) |
| { |
| decimal_int(DebugIn.Analog[i + (page * step)],text); |
| lcd_print_at(0,i+1,DebugInText[i + (page * step)],0); |
| lcd_print_at(13,i+1,text,0); |
| } |
| else |
| lcd_print_atp(0,i+1,PSTR(" "),0); |
| } |
| // decimal_int(DebugIn.Analog[9],text); |
| // lcd_print_atp(0,7,PSTR("Spannung"),0); |
| // lcd_print_at(10,7,text,0); |
| timer = 10; |
| while(timer > 0); |
| if (key == 0x01) |
| { |
| page--; |
| if (page < 0) page = 0; |
| } |
| if (key == 0x02) |
| { |
| page++; |
| if (page > 7) page = 7; |
| } |
| } // end else |
| } |
| while (key != 0x04); // ESC |
| } // end else |
| } |
| /Transportables_Koptertool/tags/V-0.1.1/debug.h |
|---|
| 0,0 → 1,26 |
| #ifndef debug_h |
| #define debug_h |
| void display_debug(void); |
| struct str_DebugIn |
| { |
| unsigned char Digital[2]; |
| signed int Analog[34]; // Debugwerte |
| }; |
| struct str_DebugIn DebugIn; |
| //struct str_DebugIn_Text |
| //{ |
| // unsigned char Texte[16]; |
| //}; |
| //struct str_DebugIn_Text DebugInText[32]; |
| unsigned char DebugInText[32][16]; |
| //extern struct str_DebugIn *p_buffer; |
| #endif |
| /Transportables_Koptertool/tags/V-0.1.1/displ_val.c |
|---|
| 0,0 → 1,83 |
| #include <avr/io.h> |
| #include <inttypes.h> |
| #include <stdlib.h> |
| #include <avr/pgmspace.h> |
| #include "main.h" |
| #include "base64.h" |
| #include "lcd.h" |
| #include "rs232.h" |
| // Insgesamt 32 Werte können angezeigt werden |
| // jeweils 8 Stück werden gleichzeitg angezeigt |
| // Auswahl über Tasten |
| uint8_t displ_page; |
| void displ_get_text(uint8_t number) |
| { |
| uint8_t text[17]; |
| uint8_t i; |
| p_buffer[0] = '#'; |
| p_buffer[1] = 'a'; |
| p_buffer[2] = 'a'; |
| p_buffer[3] = number; |
| p_buffer[4] = 0; |
| p_buffer[5] = 0; |
| base64_send(6); |
| do |
| { |
| get_message(); |
| } |
| while (r_buffer[1] != 'A'); |
| for (i=0;i<16;i++) |
| text[i] = p_buffer[i]; |
| text[16] = 0x00; |
| lcd_print_at(0,(number & 0x07),text,0); |
| } |
| void displ_values(void) |
| { |
| uint8_t displ_page, i; |
| int16_t value; |
| uint8_t text[17]; |
| displ_page = 0; // Page 0..3 (4 Pages zu je 8 Werte) |
| lcd_cls(); // LCD löschen |
| do |
| { |
| for (i=0;i<8;i++) // Texte lesen und anzeigen |
| displ_get_text(i+displ_page*8); |
| do |
| { |
| get_message(); |
| if(r_buffer[1] == 'D') |
| { |
| for (i=0;i<8;i++) |
| { |
| value = p_buffer[i*2+displ_page*16+2] + 256*p_buffer[i*2+displ_page*16+3]; |
| itoa(value,text,10); |
| lcd_print_atp(14,i,PSTR(" "),0); |
| lcd_print_at(14,i,text,0); |
| } |
| } |
| } |
| while (key == 0x00); |
| if (key == 0x01) |
| displ_page++; |
| if (key == 0x02) |
| displ_page--; |
| displ_page &= 0x03; |
| } |
| while(key != 0x08); |
| } |
| /Transportables_Koptertool/tags/V-0.1.1/displ_val.h |
|---|
| 0,0 → 1,6 |
| #ifndef displ_val_h |
| #define displ_val_h |
| void displ_values(void); |
| #endif |
| /Transportables_Koptertool/tags/V-0.1.1/display.c |
|---|
| 0,0 → 1,78 |
| #include <avr/io.h> |
| #include <inttypes.h> |
| #include <stdlib.h> |
| #include <avr/pgmspace.h> |
| #include "main.h" |
| #include "lcd.h" |
| #include "rs232.h" |
| #include "base64.h" |
| #include "parameter.h" |
| #include "menu.h" |
| uint8_t read_display (uint8_t command) // |
| { |
| uint8_t timeout; |
| timeout = 0; |
| p_buffer[0] = '#'; // Display-Zeile anfordern |
| p_buffer[1] = 'a'; |
| p_buffer[2] = 'h'; |
| p_buffer[3] = command; |
| p_buffer[4] = 0; |
| p_buffer[5] = 0; |
| base64_send(6); |
| do // warten, bis die Parameter gesendet werden |
| { |
| if (get_message() == 1) |
| timeout = 10; |
| timeout ++; |
| } |
| while (((r_buffer[1] < '0') || (r_buffer[1] > '4')) && (timeout < 10)); |
| if (timeout >= 10) |
| return 1; |
| else |
| return 0; |
| } |
| void display_data (void) |
| { |
| uint8_t line; |
| uint8_t text[10]; |
| lcd_cls(); |
| lcd_printp(PSTR("Display"),0); |
| do |
| { |
| while (key != 0x00); |
| if (read_display(0) == 1) |
| { |
| lcd_printp(PSTR("\r\nTimeout!"),0); |
| timer = 200; |
| while (timer > 0); |
| break; |
| } |
| else |
| { |
| line = r_buffer[1]; |
| text[0] = line; |
| text[1] = 0x00; |
| lcd_print_at(10,0,text,0); |
| lcd_print_at(0,line+1,p_buffer,0); |
| timer = 10; |
| while(timer > 0); |
| if (key == 0x01) |
| read_display(1); |
| if (key == 0x02) |
| read_display(2); |
| } |
| } |
| while (key != 0x04); |
| } |
| /Transportables_Koptertool/tags/V-0.1.1/display.h |
|---|
| 0,0 → 1,6 |
| #ifndef display_h |
| #define display_h |
| void display_data (void); |
| #endif |
| /Transportables_Koptertool/tags/V-0.1.1/font8x6.h |
|---|
| 0,0 → 1,9 |
| #ifndef font8x6_h |
| #define font8x6_h |
| #include <avr/pgmspace.h> |
| extern prog_uint8_t f8x6[256][6]; |
| #endif |
| /Transportables_Koptertool/tags/V-0.1.1/lcd.c |
|---|
| 0,0 → 1,558 |
| //#define F_CPU 7372800UL |
| #include <avr/io.h> |
| #include <inttypes.h> |
| #include <stdlib.h> |
| #include <avr/pgmspace.h> |
| #include <util/delay.h> |
| #include "font8x6.h" |
| #include "main.h" |
| #include "lcd.h" |
| #define DISP_W 128 |
| #define DISP_H 64 |
| // #define LCD_ORIENTATION 0 // 0 MJ Tasten unten / 4 Original Tasten oben |
| uint8_t lcd_xpos; |
| uint8_t lcd_ypos; |
| //volatile uint8_t display_buffer[1024]; // Display-Puffer, weil nicht zurückgelesen werden kann |
| //volatile uint16_t display_buffer_pointer; // Pointer auf das aktuell übertragene Byte |
| //volatile uint8_t display_buffer_counter; // Hilfszähler zur Selektierung der Page |
| //volatile uint8_t display_page_counter; // aktuelle Page-Nummer |
| //volatile uint8_t display_mode; // Modus für State-Machine |
| void send_byte (uint8_t data) |
| { |
| clr_cs(); |
| SPDR = data; |
| while(!(SPSR & (1<<SPIF))); |
| SPSR = SPSR; |
| set_cs(); |
| } |
| void cls (void) |
| { |
| uint16_t i,j; |
| for (i=0;i<1024;i++) |
| display_buffer[i] = 0x00; |
| for (i=0;i<8;i++) |
| { |
| clr_A0(); |
| send_byte(0xB0+i); //1011xxxx |
| send_byte(0x10); //00010000 |
| // send_byte(0x04); //00000100 gedreht plus 4 Byte |
| // send_byte(0x00); //00000000 |
| send_byte(LCD_ORIENTATION); //00000000 |
| set_A0(); |
| for (j=0;j<128;j++) |
| send_byte(0x00); |
| } |
| lcd_xpos = 0; |
| lcd_ypos = 0; |
| } |
| void lcd_cls (void) |
| { |
| cls(); |
| } |
| void wait_1ms(void) |
| { |
| _delay_ms (1.0); |
| } |
| void wait_ms (uint16_t time) |
| { |
| uint16_t i; |
| for (i=0; i<time; i++) |
| wait_1ms(); |
| } |
| void lcd_init (void) |
| { |
| lcd_xpos = 0; |
| lcd_ypos = 0; |
| DDRB = 0xFF; |
| SPCR = (1<<SPE)|(1<<MSTR)|(1<<CPHA)|(1<<CPOL)|(1<<SPR1); |
| set_cs(); |
| clr_reset(); |
| wait_ms(10); |
| set_reset(); |
| clr_cs(); |
| clr_A0(); |
| send_byte(0x40); |
| if (LCD_ORIENTATION == 0) |
| { |
| send_byte(0xA1); // A1 normal A0 reverse(original) |
| send_byte(0xC0); // C0 normal C8 reverse(original) |
| } |
| else |
| { |
| send_byte(0xA0); // A1 normal A0 reverse(original) |
| send_byte(0xC8); // C0 normal C8 reverse(original) |
| } |
| send_byte(0xA6); |
| send_byte(0xA2); |
| send_byte(0x2F); |
| send_byte(0xF8); |
| send_byte(0x00); |
| send_byte(0x27); |
| send_byte(0x81); |
| send_byte(0x16); |
| send_byte(0xAC); |
| send_byte(0x00); |
| send_byte(0xAF); |
| cls(); |
| } |
| void set_adress (uint16_t adress, uint8_t data) |
| { |
| uint8_t page; |
| uint8_t column; |
| page = adress >> 7; |
| clr_A0(); |
| send_byte(0xB0 + page); |
| // column = (adress & 0x7F) + 4; Wenn gedreht |
| // column = (adress & 0x7F); |
| column = (adress & 0x7F) + LCD_ORIENTATION; |
| send_byte(0x10 + (column >> 4)); |
| send_byte(column & 0x0F); |
| set_A0(); |
| send_byte(data); |
| } |
| void scroll (void) |
| { |
| uint16_t adress; |
| for (adress=0;adress<896;adress++) |
| { |
| display_buffer[adress] = display_buffer[adress+128]; |
| set_adress(adress,display_buffer[adress]); |
| } |
| for (adress=896;adress<1024;adress++) |
| { |
| display_buffer[adress] = 0; |
| set_adress(adress,0); |
| } |
| } |
| // |
| // x,y = character-Pos. ! |
| // |
| // mode: 0=Overwrite, 1 = OR, 2 = XOR, 3 = AND, 4 = Delete |
| void put_char (uint8_t x, uint8_t y, uint8_t c, uint8_t mode) |
| { |
| uint8_t ch; |
| uint8_t i; |
| uint16_t adress; |
| switch(c) |
| { |
| case 'ä': |
| c = 0x84; |
| break; |
| case 'ö': |
| c = 0x94; |
| break; |
| case 'ü': |
| c = 0x81; |
| break; |
| case 'Ä': |
| c = 0x8E; |
| break; |
| case 'Ö': |
| c = 0x99; |
| break; |
| case 'Ü': |
| c = 0x9A; |
| break; |
| case 'ß': |
| c = 0xE1; |
| break; |
| } |
| adress = y*128 + x*6; |
| adress &= 0x3FF; |
| for (i=0;i<6;i++) |
| { |
| ch = pgm_read_byte (&f8x6[0][0] + i + c * 6); |
| switch (mode) |
| { |
| case 0: |
| display_buffer[adress+i] = ch; |
| break; |
| case 1: |
| display_buffer[adress+i] |= ch; |
| break; |
| case 2: |
| display_buffer[adress+i] ^= ch; |
| break; |
| case 3: |
| display_buffer[adress+i] &= ch; |
| break; |
| case 4: |
| display_buffer[adress+i] &= ~ch; |
| break; |
| } |
| set_adress(adress+i,display_buffer[adress+i]); |
| } |
| } |
| void new_line (void) |
| { |
| lcd_ypos++; |
| if (lcd_ypos > 7) |
| { |
| scroll(); |
| lcd_ypos = 7; |
| } |
| } |
| void lcd_printp (const char *text, uint8_t mode) |
| { |
| while (pgm_read_byte(text)) |
| { |
| if (pgm_read_byte(text) > 0x1F) |
| { |
| put_char(lcd_xpos,lcd_ypos,pgm_read_byte(text++),mode); |
| lcd_xpos++; |
| if (lcd_xpos > 20) |
| { |
| lcd_xpos = 0; |
| new_line(); |
| } |
| } |
| else |
| { |
| switch (pgm_read_byte(text)) |
| { |
| case 0x0D: |
| lcd_xpos = 0; |
| break; |
| case 0x0A: |
| new_line(); |
| break; |
| } |
| text++; |
| } |
| } |
| } |
| void lcd_print_atp (uint8_t x, uint8_t y, const char *text, uint8_t mode) |
| { |
| lcd_xpos = x; |
| lcd_ypos = y; |
| lcd_printp (text, mode); |
| } |
| void lcd_print (uint8_t *text, uint8_t mode) |
| { |
| while (*text) |
| { |
| if (*text > 0x1F) |
| { |
| put_char(lcd_xpos,lcd_ypos,*text++,mode); |
| lcd_xpos++; |
| if (lcd_xpos > 20) |
| { |
| lcd_xpos = 0; |
| new_line(); |
| } |
| } |
| else |
| { |
| switch (*text) |
| { |
| case 0x0D: |
| lcd_xpos = 0; |
| break; |
| case 0x0A: |
| new_line(); |
| break; |
| } |
| text++; |
| } |
| } |
| } |
| void lcd_print_at (uint8_t x, uint8_t y, uint8_t *text, uint8_t mode) |
| { |
| lcd_xpos = x; |
| lcd_ypos = y; |
| lcd_print(text, mode); |
| } |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| // + Plot (set one Pixel) |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| // mode: |
| // 0=Clear, 1=Set, 2=XOR |
| void lcd_plot (uint8_t xpos, uint8_t ypos, uint8_t mode) |
| { |
| uint16_t adress; |
| uint8_t mask; |
| if ((xpos < 128) && (ypos < 64)) |
| { |
| adress = (ypos/8) * 128 + xpos; // adress = 0/8 * 128 + 0 = 0 |
| mask = 1<<(ypos & 0x07); // mask = 1<<0 = 1 |
| adress &= 0x3FF; |
| switch (mode) |
| { |
| case 0: |
| display_buffer[adress] &=~mask; |
| break; |
| case 1: |
| display_buffer[adress] |= mask; |
| break; |
| case 2: |
| display_buffer[adress] ^= mask; |
| break; |
| } |
| set_adress(adress,display_buffer[adress]); |
| } |
| } |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| // + Line (draws a line from x1,y1 to x2,y2 |
| // + Based on Bresenham line-Algorithm |
| // + found in the internet, modified by thkais 2007 |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| void lcd_line(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, uint8_t mode) |
| { |
| int x,y,count,xs,ys,xm,ym; |
| x=(int)x1; |
| y=(int)y1; |
| xs=(int)x2 - (int)x1; |
| ys=(int)y2 - (int)y1; |
| if(xs < 0) |
| xm= -1; |
| else |
| if(xs > 0) |
| xm= 1; |
| else |
| xm= 0; |
| if(ys < 0) |
| ym= -1; |
| else |
| if(ys > 0) |
| ym= 1; |
| else |
| ym= 0; |
| if(xs < 0) |
| xs= -xs; |
| if(ys < 0) |
| ys= -ys; |
| lcd_plot((unsigned char)x, (unsigned char)y, mode); |
| if(xs > ys) // Flat Line <45 degrees |
| { |
| count= -(xs / 2); |
| while(x != x2) |
| { |
| count= count + ys; |
| x= x + xm; |
| if(count > 0) |
| { |
| y= y + ym; |
| count= count - xs; |
| } |
| lcd_plot((unsigned char)x, (unsigned char)y, mode); |
| } |
| } |
| else // Line >=45 degrees |
| { |
| count=- (ys / 2); |
| while(y != y2) |
| { |
| count= count + xs; |
| y= y + ym; |
| if(count > 0) |
| { |
| x= x + xm; |
| count= count - ys; |
| } |
| lcd_plot((unsigned char)x, (unsigned char)y, mode); |
| } |
| } |
| } |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| // + Filled rectangle |
| // + x1, y1 = upper left corner |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| void lcd_frect (uint8_t x1, uint8_t y1, uint8_t widthx, uint8_t widthy, uint8_t mode) |
| { |
| uint16_t x2, y2; |
| uint16_t i; |
| if (x1 >= DISP_W) |
| x1 = DISP_W - 1; |
| if (y1 >= DISP_H) |
| y1 = DISP_H - 1; |
| x2 = x1 + widthx; |
| y2 = y1 + widthy; |
| if (x2 > DISP_W) |
| x2 = DISP_W; |
| if (y2 > DISP_H) |
| y2 = DISP_H; |
| for (i=y1;i<=y2;i++) |
| { |
| lcd_line(x1,i,x2,i,mode); |
| } |
| } |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| // + outline of rectangle |
| // + x1, y1 = upper left corner |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| void lcd_rect (uint8_t x1, uint8_t y1, uint8_t widthx, uint8_t widthy, uint8_t mode) |
| { |
| uint16_t x2, y2; |
| if (x1 >= DISP_W) |
| x1 = DISP_W - 1; |
| if (y1 >= DISP_H) |
| y1 = DISP_H - 1; |
| x2 = x1 + widthx; |
| y2 = y1 + widthy; |
| if (x2 > DISP_W) |
| x2 = DISP_W; |
| if (y2 > DISP_H) |
| y2 = DISP_H; |
| lcd_line (x1, y1, x2, y1, mode); |
| lcd_line (x2, y1, x2, y2, mode); |
| lcd_line (x2, y2, x1, y2, mode); |
| lcd_line (x1, y2, x1, y1, mode); |
| } |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| // + outline of a circle |
| // + Based on Bresenham-algorithm found in wikipedia |
| // + modified by thkais (2007) |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| void draw_circle(int16_t x0, int16_t y0, int16_t radius, uint8_t mode) |
| { |
| int16_t f = 1 - radius; |
| int16_t ddF_x = 0; |
| int16_t ddF_y = -2 * radius; |
| int16_t x = 0; |
| int16_t y = radius; |
| lcd_plot(x0, y0 + radius, mode); |
| lcd_plot(x0, y0 - radius, mode); |
| lcd_plot(x0 + radius, y0, mode); |
| lcd_plot(x0 - radius, y0, mode); |
| while(x < y) |
| { |
| if(f >= 0) |
| { |
| y --; |
| ddF_y += 2; |
| f += ddF_y; |
| } |
| x ++; |
| ddF_x += 2; |
| f += ddF_x + 1; |
| lcd_plot(x0 + x, y0 + y, mode); |
| lcd_plot(x0 - x, y0 + y, mode); |
| lcd_plot(x0 + x, y0 - y, mode); |
| lcd_plot(x0 - x, y0 - y, mode); |
| lcd_plot(x0 + y, y0 + x, mode); |
| lcd_plot(x0 - y, y0 + x, mode); |
| lcd_plot(x0 + y, y0 - x, mode); |
| lcd_plot(x0 - y, y0 - x, mode); |
| } |
| } |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| // + filled Circle |
| // + modified circle-algorithm thkais (2007) |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| void draw_fcircle(int16_t x0, int16_t y0, int16_t radius) |
| { |
| int16_t f = 1 - radius; |
| int16_t ddF_x = 0; |
| int16_t ddF_y = -2 * radius; |
| int16_t x = 0; |
| int16_t y = radius; |
| lcd_line(x0, y0 + radius,x0, y0 - radius,1); |
| lcd_line(x0 + radius, y0,x0 - radius, y0,1); |
| while(x < y) |
| { |
| if(f >= 0) |
| { |
| y--; |
| ddF_y += 2; |
| f += ddF_y; |
| } |
| x++; |
| ddF_x += 2; |
| f += ddF_x + 1; |
| lcd_line(x0 + x, y0 + y,x0 - x, y0 + y,1); |
| lcd_line(x0 + x, y0 - y,x0 - x, y0 - y,1); |
| lcd_line(x0 + y, y0 + x,x0 - y, y0 + x,1); |
| lcd_line(x0 + y, y0 - x,x0 - y, y0 - x,1); |
| } |
| } |
| /Transportables_Koptertool/tags/V-0.1.1/lcd.h |
|---|
| 0,0 → 1,27 |
| #ifndef graphics_h |
| #define graphics_h |
| void lcd_init (void); |
| void lcd_plot (uint8_t x, uint8_t y, uint8_t mode); |
| void lcd_rect (uint8_t x1, uint8_t y1, uint8_t widthx, uint8_t widthy,uint8_t mode); |
| void lcd_frect (uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2, uint8_t mode); |
| void draw_circle(int16_t x0, int16_t y0, int16_t radius, uint8_t mode); |
| void draw_fcircle(int16_t x0, int16_t y0, int16_t radius); |
| void put_char (uint8_t x, uint8_t y, uint8_t c, uint8_t mode); |
| void lcd_line(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, uint8_t mode); |
| void send_byte (uint8_t data); |
| void lcd_print(uint8_t *text, uint8_t mode); |
| void lcd_print_at (uint8_t x, uint8_t y, uint8_t *text, uint8_t mode); |
| void lcd_printp (const char *text, uint8_t mode); |
| void lcd_print_atp (uint8_t x, uint8_t y, const char *text, uint8_t mode); |
| void lcd_cls (void); |
| volatile uint8_t display_buffer[1024]; // Display-Puffer, weil nicht zurückgelesen werden kann |
| volatile uint16_t display_buffer_pointer; // Pointer auf das aktuell übertragene Byte |
| volatile uint8_t display_buffer_counter; // Hilfszähler zur Selektierung der Page |
| volatile uint8_t display_page_counter; // aktuelle Page-Nummer |
| volatile uint8_t display_mode; // Modus für State-Machine |
| volatile uint8_t LCD_ORIENTATION; |
| #endif |
| /Transportables_Koptertool/tags/V-0.1.1/main.c |
|---|
| 0,0 → 1,88 |
| /* |
| Mobiles Mikrokopter-Tool |
| +++++ BETA 0.1 +++++ |
| Diese Software ist Open-Source und darf nicht für kommerzielle Zwecke verwendet werden. |
| Die Software darf kopiert, verändert und weitergegeben werden, unter der Bedingung, |
| dass immer der komplette Source inklusive dieser Lizenz weitergegeben wird. |
| Für den LCD-Font gilt das dort angegebene Copyright. |
| (C) 2008 Thomas Kaiser, thomas@ft-fanpage.de |
| Die Software wird "so wie sie ist" geliefert. |
| Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion. |
| Benutzung auf eigene Gefahr. |
| Ich übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden. |
| Dies gilt insbesondere für die vorliegende Beta-Version. |
| Teile des Source (z.B. die base64-Funktionen) sind abgewandelte Funktionen aus dem Mikrokopter-Source, |
| siehe http://www.mikrokopter.de |
| */ |
| //#define F_CPU 7378200ul |
| #include <avr/io.h> |
| #include <util/delay.h> |
| #include <avr/interrupt.h> |
| #include <stdlib.h> |
| #include <avr/pgmspace.h> |
| #include "main.h" |
| #include "lcd.h" |
| #include "rs232.h" |
| #include "parameter.h" |
| #include "menu.h" |
| #include "display.h" |
| #include "base64.h" |
| #include "timer.h" |
| unsigned char EEPromArray[E2END+1] EEMEM; |
| void ReadParameter(void) |
| { |
| // unsigned char *buffer; |
| LCD_ORIENTATION = eeprom_read_byte(&EEPromArray[EEPROM_ADR_ORIENTATION]); |
| // set = eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET]); |
| // if (number > 5) number = 5; |
| // eeprom_read_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * number], length); |
| } |
| void WriteParameterset(void) |
| { |
| eeprom_write_byte(&EEPromArray[EEPROM_ADR_VALID], 1); |
| eeprom_write_byte(&EEPromArray[EEPROM_ADR_ORIENTATION], 0); |
| // if(number > 5) number = 5; |
| // eeprom_write_block(buffer, &EEPromArray[EEPROM_ADR_PARAM_BEGIN + length * number], length); |
| // eeprom_write_byte(&EEPromArray[EEPROM_ADR_ACTIVE_SET], number); // diesen Parametersatz als aktuell merken |
| } |
| int main (void) |
| { |
| PORTA = 0xFF; // unbenutzte Pins auf Pull-Up |
| PORTB = 0x43; |
| PORTC = 0xFC; |
| PORTD = 0x7C; |
| DDRC = 0x03; // Pins für Beleuchtung auf Ausgang |
| DDRD = 0x80; |
| if ((eeprom_read_byte(&EEPromArray[EEPROM_ADR_VALID])) != 1) |
| WriteParameterset(); |
| ReadParameter(); |
| // LCD_ORIENTATION = 0; |
| lcd_init(); |
| RS232_init(); |
| timer_init(); |
| sei(); |
| for (;;) |
| main_menu(); |
| } |
| /Transportables_Koptertool/tags/V-0.1.1/main.h |
|---|
| 0,0 → 1,47 |
| #ifndef main_h |
| #define main_h |
| #include <avr/eeprom.h> |
| #define set_cs() PORTB |= (1<<4) |
| #define clr_cs() PORTB &=~(1<<4) |
| #define set_reset() PORTB |= (1<<2) |
| #define clr_reset() PORTB &=~(1<<2) |
| #define set_A0() PORTB |= (1<<3) // Data |
| #define clr_A0() PORTB &=~(1<<3) // Command |
| #define set_scl() PORTB |= (1<<7) |
| #define clr_scl() PORTB &=~(1<<7) |
| #define set_si() PORTB |= (1<<5) |
| #define clr_si() PORTB &=~(1<<5) |
| #define key_enter 0x08 |
| #define key_esc 0x04 |
| #define key_plus 0x02 |
| #define key_minus 0x01 |
| #define key_nokey 0x00 |
| //#define SYSCLK F_CPU |
| extern uint8_t r_buffer[129]; |
| extern uint8_t p_buffer[129]; |
| //extern struct str_DebugIn *p_buffer; |
| extern volatile uint8_t key; |
| extern volatile uint8_t timer; |
| extern volatile uint8_t rs232_timer; |
| #endif |
| //#define EEPROM_ADR_VALID 1 |
| #define EEPROM_ADR_VALID 1 |
| #define EEPROM_ADR_ORIENTATION 2 |
| extern unsigned char EEPromArray[]; |
| #ifndef EEMEM |
| #define EEMEM __attribute__ ((section (".eeprom"))) |
| #endif |
| /Transportables_Koptertool/tags/V-0.1.1/makefile |
|---|
| 0,0 → 1,414 |
| # WinAVR Sample makefile written by Eric B. Weddington, Jörg Wunsch, et al. |
| # Released to the Public Domain |
| # Please read the make user manual! |
| # |
| # Additional material for this makefile was submitted by: |
| # Tim Henigan |
| # Peter Fleury |
| # Reiner Patommel |
| # Sander Pool |
| # Frederik Rouleau |
| # Markus Pfaff |
| # |
| # On command line: |
| # |
| # make all = Make software. |
| # |
| # make clean = Clean out built project files. |
| # |
| # make coff = Convert ELF to AVR COFF (for use with AVR Studio 3.x or VMLAB). |
| # |
| # make extcoff = Convert ELF to AVR Extended COFF (for use with AVR Studio |
| # 4.07 or greater). |
| # |
| # make program = Download the hex file to the device, using avrdude. Please |
| # customize the avrdude settings below first! |
| # |
| # make filename.s = Just compile filename.c into the assembler code only |
| # |
| # To rebuild project do "make clean" then "make all". |
| # |
| # MCU name |
| MCU = atmega32 |
| # Output format. (can be srec, ihex, binary) |
| FORMAT = ihex |
| #put the name of the target file here (without extension) |
| # TARGET = main |
| TARGET = MMT |
| #put your C sourcefiles here |
| # SRC = circle.c F8x8b.c F8x8a.c F8x6.c f8x8fv.c f8x6fv.c f6x5fv.c f6x4fv.c fontsoft.c serial.c paul.c bitmap.c demo.c draw.c F16x8a.c F16x8b.c F16x8c.c t6963.c $(TARGET).c |
| SRC = $(TARGET).c timer.c lcd.c F8X6.c rs232.c base64.c displ_val.c parameter.c menu.c display.c motortest.c |
| # Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization. |
| # (Note: 3 is not always the best optimization level. See avr-libc FAQ.) |
| OPT = s |
| # List C source files here. (C dependencies are automatically generated.) |
| # SRC = $(TARGET).c |
| # If there is more than one source file, append them above, or modify and |
| # uncomment the following: |
| #SRC += foo.c bar.c |
| # You can also wrap lines by appending a backslash to the end of the line: |
| #SRC += baz.c \ |
| #xyzzy.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 = |
| # List any extra directories to look for include files here. |
| # Each directory must be seperated by a space. |
| EXTRAINCDIRS = |
| # Optional compiler flags. |
| # -g: generate debugging information (for GDB, or for COFF conversion) |
| # -O*: optimization level |
| # -f...: tuning, see gcc manual and avr-libc documentation |
| # -Wall...: warning level |
| # -Wa,...: tell GCC to pass this to the assembler. |
| # -ahlms: create assembler listing |
| CFLAGS = -g -O$(OPT) \ |
| -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \ |
| -Wall -Wstrict-prototypes \ |
| -Wa,-adhlns=$(<:.c=.lst) \ |
| $(patsubst %,-I%,$(EXTRAINCDIRS)) |
| # Set a "language standard" compiler flag. |
| # Unremark just one line below to set the language standard to use. |
| # gnu99 = C99 + GNU extensions. See GCC manual for more information. |
| #CFLAGS += -std=c89 |
| #CFLAGS += -std=gnu89 |
| #CFLAGS += -std=c99 |
| CFLAGS += -std=gnu99 |
| # Optional assembler flags. |
| # -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 |
| # Optional linker flags. |
| # -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 |
| # Additional libraries |
| # Minimalistic printf version |
| #LDFLAGS += -Wl,-u,vfprintf -lprintf_min |
| # Floating point printf version (requires -lm below) |
| #LDFLAGS += -Wl,-u,vfprintf -lprintf_flt |
| # -lm = math library |
| LDFLAGS += -lm |
| # Programming support using avrdude. Settings and variables. |
| # 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 = avr911 |
| AVRDUDE_PORT = com4 # programmer connected to serial device |
| #AVRDUDE_PORT = lpt1 # programmer connected to parallel port |
| AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex |
| #AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep |
| AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) -b 115200 -F |
| # 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 += -y |
| # Uncomment the following if you do /not/ wish a verification to be |
| # performed after programming the device. |
| #AVRDUDE_FLAGS += -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_FLAGS += -v -v |
| # --------------------------------------------------------------------------- |
| # Define directories, if needed. |
| DIRAVR = F:/Eigene Dateien/Controller/winavr |
| DIRAVRBIN = $(DIRAVR)/bin |
| DIRAVRUTILS = $(DIRAVR)/utils/bin |
| DIRINC = . |
| DIRLIB = $(DIRAVR)/avr/lib |
| # Defines and commands. |
| SHELL = sh |
| CC = avr-gcc |
| OBJCOPY = avr-objcopy |
| OBJDUMP = avr-objdump |
| SIZE = avr-size |
| # Programming support using avrdude. |
| AVRDUDE = avrdude |
| REMOVE = rm -f |
| COPY = cp |
| HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex |
| ELFSIZE = $(SIZE) -A $(TARGET).elf |
| # 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 = $(ASRC:.S=.lst) $(SRC:.c=.lst) |
| # Combine all necessary flags and optional flags. |
| # Add target processor to flags. |
| ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) |
| ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) |
| # Default target. |
| all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex $(TARGET).eep \ |
| $(TARGET).lss $(TARGET).sym sizeafter finished end |
| # 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) |
| finished: |
| @echo $(MSG_ERRORS_NONE) |
| end: |
| @echo $(MSG_END) |
| @echo |
| # Display size of file. |
| sizebefore: |
| @if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi |
| sizeafter: |
| @if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi |
| # Display compiler version information. |
| gccversion : |
| @$(CC) --version |
| # 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 |
| # Programming support using ponyprog. Settings and variables. |
| #PONYPROG= ponyprog2000.exe |
| #PONYPROG= C:\Programme\ponyprog2000\ponyprog2000.exe |
| # Program the device. |
| #program: $(TARGET).hex $(TARGET).eep |
| # echo -e "SELECTDEVICE $(MCU)\nLOAD-PROG $(TARGET).hex\n#LOAD-DATA $(TARGET).eep\nWRITE-PROG" >isp.e2s |
| # $(PONYPROG) isp.e2s |
| program: $(TARGET).hex $(TARGET).eep |
| $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) |
| # 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) $@ |
| avr-nm -n $< > $@ |
| # Link: create ELF output file from object files. |
| .SECONDARY : $(TARGET).elf |
| .PRECIOUS : $(OBJ) |
| %.elf: $(OBJ) |
| @echo |
| @echo $(MSG_LINKING) $@ |
| $(CC) $(ALL_CFLAGS) $(OBJ) --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 $@ |
| # Target: clean project. |
| clean: begin clean_list finished end |
| clean_list : |
| @echo |
| @echo $(MSG_CLEANING) |
| $(REMOVE) $(TARGET).hex |
| $(REMOVE) $(TARGET).eep |
| $(REMOVE) $(TARGET).obj |
| $(REMOVE) $(TARGET).cof |
| $(REMOVE) $(TARGET).elf |
| $(REMOVE) $(TARGET).map |
| $(REMOVE) $(TARGET).obj |
| $(REMOVE) $(TARGET).a90 |
| $(REMOVE) $(TARGET).sym |
| $(REMOVE) $(TARGET).lnk |
| $(REMOVE) $(TARGET).lss |
| $(REMOVE) $(OBJ) |
| $(REMOVE) $(LST) |
| $(REMOVE) $(SRC:.c=.s) |
| $(REMOVE) $(SRC:.c=.d) |
| # Automatically generate C source code dependencies. |
| # (Code originally taken from the GNU make user manual and modified |
| # (See README.txt Credits).) |
| # |
| # Note that this will work with sh (bash) and sed that is shipped with WinAVR |
| # (see the SHELL variable defined above). |
| # This may not work with other shells or other seds. |
| # |
| %.d: %.c |
| set -e; $(CC) -MM $(ALL_CFLAGS) $< \ |
| | sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > $@; \ |
| [ -s $@ ] || rm -f $@ |
| # Remove the '-' if you want to see the dependency files generated. |
| -include $(SRC:.c=.d) |
| # Listing of phony targets. |
| .PHONY : all begin finish end sizebefore sizeafter gccversion coff extcoff \ |
| clean clean_list program |
| /Transportables_Koptertool/tags/V-0.1.1/menu.c |
|---|
| 0,0 → 1,91 |
| #include <avr/io.h> |
| #include <inttypes.h> |
| #include <stdlib.h> |
| #include <avr/pgmspace.h> |
| #include "main.h" |
| #include "lcd.h" |
| #include "rs232.h" |
| #include "base64.h" |
| #include "parameter.h" |
| #include "menu.h" |
| #include "display.h" |
| #include "motortest.h" |
| #include "debug.h" |
| #include "settings.h" |
| // Subroutine für den Stern (*) bzw. Cursor |
| void menu_set_cursor (uint8_t before, uint8_t line, uint8_t pos) |
| { |
| lcd_print_atp(pos,before,PSTR(" "),0); // Die vorhergehende Position löschen |
| lcd_print_atp(pos,line,PSTR("*"),0); // Den Cursor an der aktuellen Position anzeigen |
| } |
| // Zeigt einen Stern (*) an der x-Position <pos> an, y-Position von min bis max. |
| // Mit der +/- Taste kann ein Menü-Punkt ausgewählt und mit (Enter) bestätigt werden. |
| // Die Zeilennummer des aktuellen Menüpunkts wird zurückgegeben. |
| uint8_t menu_choose (uint8_t min, uint8_t max, uint8_t pos) |
| { |
| uint8_t line, before; |
| line = min; |
| before = min; |
| menu_set_cursor(line,line,pos); |
| do |
| { |
| while (key != key_nokey); |
| while(key == key_nokey); |
| if ((key == key_plus) && (line < max)) |
| line ++; |
| if ((key == key_minus) && (line > min)) |
| line --; |
| menu_set_cursor(before,line,pos); |
| before = line; |
| } |
| while ((key != key_enter) && (key != key_esc)); // Schleife wiederholen, bis (Enter) / Esc gedrückt wurde |
| if (key == key_esc) |
| line = 255; |
| while (key != key_nokey); // Warten, bis Taste wieder losgelassen wurde |
| return line; |
| } |
| void main_menu (void) |
| { |
| lcd_cls(); |
| lcd_printp(PSTR("Portables Koptertool\r\n"),0); |
| lcd_printp(PSTR(" Hauptmenü (V0.1.1)\r\n"),0); |
| lcd_printp(PSTR(" Display\r\n"),0); |
| lcd_printp(PSTR(" Parameter\r\n"),0); |
| lcd_printp(PSTR(" Motortest\r\n"),0); |
| lcd_printp(PSTR(" Debug Daten\r\n"),0); |
| lcd_printp(PSTR(" Settings\r\n"),0); |
| lcd_printp(PSTR("Mod by Mikeljo 05/08"),0); |
| switch(menu_choose(2,6,15)) |
| { |
| case 2: |
| display_data(); // LCD-Modus |
| break; |
| case 3: |
| edit_parameter(); // Parameter (Settings) laden/editieren |
| break; |
| case 4: |
| motor_test(); // primitiver Motor-Test |
| break; |
| case 5: |
| display_debug(); // Debug Daten |
| break; |
| case 6: |
| LCD_settings(); // Einstellungen |
| break; |
| } |
| } |
| /Transportables_Koptertool/tags/V-0.1.1/menu.h |
|---|
| 0,0 → 1,7 |
| #ifndef menu_h |
| #define menu_h |
| void main_menu (void); |
| uint8_t menu_choose (uint8_t min, uint8_t max, uint8_t pos); |
| #endif |
| /Transportables_Koptertool/tags/V-0.1.1/motortest.c |
|---|
| 0,0 → 1,52 |
| #include <avr/io.h> |
| #include <inttypes.h> |
| #include <stdlib.h> |
| #include <avr/pgmspace.h> |
| #include "main.h" |
| #include "motortest.h" |
| #include "lcd.h" |
| #include "base64.h" |
| void motor_test(void) |
| { |
| lcd_cls(); |
| while (key != 0x00); |
| lcd_printp(PSTR("Taste drücken\r\n"),0); |
| while (key == 0x00); |
| if (key == 0x08) // nur, wenn die Bestätigungstaste gedrückt wird |
| { |
| p_buffer[0] = '#'; // Motoren einschalten |
| p_buffer[1] = 'a'; |
| p_buffer[2] = 't'; |
| p_buffer[3] = 10; |
| p_buffer[4] = 10; |
| p_buffer[5] = 10; |
| p_buffer[6] = 10; |
| p_buffer[7] = 0; |
| p_buffer[8] = 0; |
| base64_send(9); |
| } |
| while (key != 0x00); |
| while (key == 0x00); |
| p_buffer[0] = '#'; // Motoren ausschalten |
| p_buffer[1] = 'a'; |
| p_buffer[2] = 't'; |
| p_buffer[3] = 0; |
| p_buffer[4] = 0; |
| p_buffer[5] = 0; |
| p_buffer[6] = 0; |
| p_buffer[7] = 0; |
| p_buffer[8] = 0; |
| base64_send(9); |
| } |
| /Transportables_Koptertool/tags/V-0.1.1/motortest.h |
|---|
| 0,0 → 1,6 |
| #ifndef motortest_h |
| #define motortest_h |
| void motor_test(void); |
| #endif |
| /Transportables_Koptertool/tags/V-0.1.1/parameter.c |
|---|
| 0,0 → 1,556 |
| #include <avr/io.h> |
| #include <inttypes.h> |
| #include <stdlib.h> |
| #include <avr/pgmspace.h> |
| #include "main.h" |
| #include "lcd.h" |
| #include "rs232.h" |
| #include "base64.h" |
| #include "parameter.h" |
| #include "menu.h" |
| uint8_t array[8]; |
| prog_uchar p_menus[12][11]= |
| { |
| "Config ", |
| "Channels ", |
| "Stick ", |
| "Hoehe ", |
| "Gyro ", |
| "Looping ", |
| "Camera ", |
| "Sonstiges ", |
| "User ", |
| "Coupling ", |
| "Config(2) ", |
| "Loopingset" |
| }; |
| // Diese Tabelle ordnet die eingelesenen Parameter den Menü-Seiten zu |
| prog_uchar p_menu_number[67]= |
| { |
| 2,2,2,2,2,2,2,2, // Die ersten 8 Parameter werden auf Menüseite 2 angezeigt (=Kanalzuordnungen) |
| 0,4,4,4,4,4,4,3, |
| 3,3,8,8,8,8,5,5, |
| 8,8,8,0,5,9,9,9, |
| 9,7,7,7,7,7,7,6, |
| 6,6,10,10,6,6,5,5, |
| 5,9,9,9,9,0,7,11, |
| 11,11,11,12,12, 12, |
| 12,12,12,12,12 |
| }; |
| prog_uchar p_limits[199]= // Limits für die Parameter |
| { |
| 1,8,2, // 2:Nick (3) |
| 1,8,2, // 2:Roll (4) |
| 1,8,2, // 2:Gas (2) |
| 1,8,2, // 2:Gier (1) |
| 1,8,2, // 2:Poti1 (6) |
| 1,8,2, // 2:Poti2 (6) |
| 1,8,2, // 2:Poti3 (7) |
| 1,8,2, // 2:Poti4 (5) |
| 0,0,0, // 1:Config |
| 0,255,4, // 4:Höhe MinGas (30) |
| 0,255,4, // 4:Luftdruck_D (30) |
| 0,255,4, // 4:MaxHöhe (Setpoint?) (Poti4) |
| 0,255,4, // 4:Höhe_P (10) |
| 0,50,4, // 4:Höhe Verstärkung (3) |
| 0,255,4, // 4:Höhe Z-acc (30) |
| 0,6,3, // 3:Nick/Roll P (3) |
| 0,64,3, // 3:Nick/Roll D (4) |
| 0,20,3, // 3:Gier_P (6) |
| 0,32,8, // 8:Min.Gas (15) |
| 33,250,8, // 8:Max.Gas (250) |
| 0,50,8, // 5:Gyro-Acc Faktor (30) |
| 0,255,8, // 8:Kompass-Wirkung (128) |
| 0,0,5, // 5:Gyro-P (80) |
| 0,0,5, // 5:Gyro-I (120) |
| 0,250,8, // 8:Unterspannung (94) |
| 0,250,8, // 8:Not-Gas Zeit (20) |
| 0,250,8, // 8:Not-Gas (35) |
| 0,1,0, // Ufo-Ausrichtung (X +) |
| 0,255,5, // I-Faktor (32) |
| 0,255,9, // 9:User1 (80) |
| 0,255,9, // 9:User2 (0) |
| 0,255,9, // 9:User3 |
| 0,255,9, // 9:User4 |
| 0,255,7, // 7:Servo Nick Control (100) |
| 0,250,7, // 7:Servo Nick Compensation (40) |
| 0,250,7, // 7:Servo Nick min (50) |
| 0,250,7, // 7:Servo Nick max (150) |
| 0,25,7, // 7:Servo Nick refrsh (5) |
| 0,255,6, // 6:Loop Gas Limit (50) |
| 0,250,6, // 6:Loop Ansprechschwelle (90) |
| 0,250,6, // 6:Loop Hysterese (50) |
| 0,255,10, // 10:Achskopplung (90) |
| 0,255,10, // 10:Achsgegenkopplung (5) |
| 0,250,6, // 6:Turnover Nick (100) |
| 0,250,6, // 6:Turnover Roll (100) |
| 0,250,5, // 5: Gyro-Abgleich (Comp.) (32) |
| 0,250,5, // 5: Drift (4) |
| 0,255,5, // 5: Dynamic stability (75) |
| 0,255,9, // 9:User5 |
| 0,255,9, // 9:User6 |
| 0,255,9, // 9:User7 |
| 0,255,9, // 9:User8 (0) |
| 0,0,1, // 6:Loop Config (0) |
| 0,1,7 // 7:Servo Nick Compensation Invert (0) |
| }; |
| prog_char bin_parameter[12][16] = // Die binär kodierten Parametern werden getrennt behandelt. |
| { |
| "Loop up ", |
| "Loop down ", |
| "Loop left ", |
| "Loop right ", |
| "Höhenregler ", // 8 |
| "Höhenschalter ", |
| "Headhold ", |
| "Kompass ", |
| "KompassFix ", |
| "GPS ", |
| "Achsenkopplung ", |
| "Drehrate " |
| }; |
| prog_char parameter[54][16]= |
| { |
| "Nick ", // 0 (3) |
| "Roll ", // 1 (4) |
| "Gas ", // (2) |
| "Gier ", // (1) |
| "Poti1 ", // (6) |
| "Poti2 ", // (6) |
| "Poti3 ", // (7) |
| "Poti4 ", // 7 (5) |
| "Config ", // 8 |
| "Hoehe_MinGas ", // 9 (30) |
| "Luftdruck_D ", // 10 Wert : 0-250 (30) |
| "MaxHoehe ", // 11 Wert : 0-250 251 -> Poti1 (Poti4) |
| "Hoehe_P ", // 12 Wert : 0-32 (10) |
| "Hoehe_Verstaerk", // 13 Wert : 0-50 |
| "Hoehe_ACC_Wirk.", // 14 Wert : 0-250 (30) |
| "Stick_P ", // 15 Wert : 1-6 |
| "Stick_D ", // 16 Wert : 0-64 |
| "Gier_P ", // 17 Wert : 1-20 POTI(?) |
| "Gas_Min ", // 17 Wert : 0-32 |
| "Gas_Max ", // 18 Wert : 33-250 |
| "GyroAccFaktor ", // 19 Wert : 1-64 |
| "KompassWirkung ", // 20 Wert : 0-250 |
| "Gyro_P ", // 21 Wert : 0-250 |
| "Gyro_I ", // 22 Wert : 0-250 |
| "Unterspannung ", // 23 Wert : 0-250 |
| "NotGas ", // 24 Wert : 0-250 // Gaswert bei Empangsverlust |
| "NotGasZeit ", // 25 Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
| "UfoAusrichtung ", // 26 X oder + Formation |
| "I_Faktor ", // 27 = 32; |
| "UserParam1 ", // 28 = 32 * 4; //zur freien Verwendung |
| "UserParam2 ", // 29 zur freien Verwendung |
| "UserParam3 ", // 30 zur freien Verwendung |
| "UserParam4 ", // 31 zur freien Verwendung |
| "ServoNickCtrl ", // 32 Wert : 0-250 // Stellung des Servos |
| "ServoNickComp ", // 33 Wert : 0-250 // Einfluss Gyro/Servo |
| "ServoNickMin ", // 34 Wert : 0-250 // Anschlag |
| "ServoNickMax ", // 35 Wert : 0-250 // Anschlag |
| "ServoNickRefrsh", // 36 |
| "LoopGasLimit ", // 37 |
| "LoopThreshold ", // 38 Wert: 0-250 Schwelle für Stickausschlag |
| "LoopHysterese ", // 39 |
| "AchsKopplung ", // 40 |
| "AchsGegenKoppl.", // 41 |
| "WinklUmschlNick", // 42 |
| "WinklUmschlRoll", // 43 |
| "GyroAccAbgleich", // 44 1/k |
| "Driftkomp ", // 45 |
| "DynamicStabilit", // 47 |
| "UserParam5 ", // 48 zur freien Verwendung |
| "UserParam6 ", // 49 zur freien Verwendung |
| "UserParam7 ", // 50 zur freien Verwendung |
| "UserParam8 ", // 51 zur freien Verwendung |
| "LoopConfig ", // 52 Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
| "ServoNickCompIn" // 53 Wert : 0-250 // Richtung Einfluss Gyro/Servo |
| // "Name " // 54 |
| }; |
| // Parameter lesen, editieren und zurückschreiben |
| uint8_t read_parameter (uint8_t number) // Number = Parameter-Set# |
| { |
| uint8_t timeout; |
| timeout = 0; |
| p_buffer[0] = '#'; // Parameter anfordern |
| p_buffer[1] = 'a'; |
| p_buffer[2] = 'q'; |
| p_buffer[3] = number; |
| p_buffer[4] = 0; |
| p_buffer[5] = 0; |
| base64_send(6); |
| do // warten, bis die Parameter gesendet werden |
| { |
| if (get_message() == 1) // Fehler bei der Übertragung? |
| timeout = 30; // Timeout sofort auf Endwert setzen |
| timeout ++; |
| } |
| while (((r_buffer[1] < 'L') || (r_buffer[1] > 'P')) && (timeout < 30)); // warten, bis Parameter empfangen wurden oder ein Timeout auftrat |
| if (timeout >= 30) // Wenn ein Timeout (=Fehler) auftrat, eine 1 zurückgeben, ansonsten 0 |
| return 1; |
| else |
| return 0; |
| } |
| void write_parameter(uint8_t number) // Schreibe Parameter-Satz |
| { |
| uint8_t i; |
| if (number <= 5) |
| { |
| for (i=0;i<71;i++) // Den gesamten Parameter-Puffer um 3 Bytes nach hinten verschieben |
| p_buffer[(70-i)+3] = p_buffer[70-i]; |
| p_buffer[0] = '#'; // Befehl zum Schreiben der Parameter |
| p_buffer[1] = 'a'; |
| p_buffer[2] = number + 'k'; // Nummer des Parameters |
| p_buffer[74] = 0; |
| base64_send(75); // Parameter in base64 kodieren und senden, 75 Bytes |
| } |
| } |
| void binary (uint8_t data, uint8_t *feld) // Wandelt eine 8-Bit Zahl in eine Binärzahl um (Array mit 8 Elementen) |
| { // Wird für die Flags (Loop + Grundkonfiguration) benötigt |
| uint8_t i; |
| i=0; |
| for (i=0;i<8;i++) |
| { |
| if ((1<<i) & data) |
| feld[i] = 1; |
| else |
| feld[i] = 0; |
| } |
| } |
| uint8_t bindec (uint8_t *feld) // wandelt eine Binärzahl (im Array) in eine 8-Bit Zahl |
| { // Wird für die Flags (Loop + Grundkonfiguration) benötigt |
| uint8_t i; |
| uint8_t result; |
| result = 0; |
| for (i=0;i<8;i++) |
| { |
| if (feld[i] == 1) |
| result += 1<<i; |
| } |
| return result; |
| } |
| void decimal (uint8_t data, uint8_t *text) // wandelt Wert in rechtsbündigen Text um |
| { // (schneller/kleiner als printf()) |
| text[0] = data/100; |
| data -= (text[0] * 100); |
| text[1] = data/10; |
| data -= (text[1] *10); |
| text[2] = data + 0x30; |
| text[0] += 0x30; |
| text[1] += 0x30; |
| if (text[0] == 0x30) |
| { |
| text[0] = 0x20; |
| if (text[1] == 0x30) |
| text[1] = 0x20; |
| } |
| text[3] = 0x00; |
| } |
| uint8_t show_parameter (uint8_t number) // Zeigt eine Parameter-Seite an und gibt die ausgewählte Zeile zurück |
| { |
| uint8_t i; |
| uint8_t line; |
| uint8_t text[25]; |
| uint8_t bin[8]; |
| line = 0; |
| if (number > 1) |
| { |
| for (i = 0; i<66; i++) |
| { |
| if (pgm_read_byte(p_limits+i*3+2) == number) |
| { |
| array[line] = i; |
| decimal(p_buffer[i],text); |
| lcd_print_at(0,line,text,0); |
| lcd_print_atp(5,line,parameter[i],0); |
| if (line <= 7) |
| line++; |
| } |
| } |
| } |
| else |
| { // Sonderfälle: Binäre Eingabe |
| if (number == 1) |
| { |
| binary(p_buffer[52],bin); // Loop-Config |
| text[1] = 0x00; |
| for (i=0;i<4;i++) |
| { |
| text[0] = bin[i] + 0x30; |
| lcd_print_at(0,i,text,0); |
| lcd_print_atp(5,i,bin_parameter[i],0); |
| } |
| } |
| if (number == 0) |
| { |
| binary(p_buffer[8],bin); // Config |
| text[1] = 0x00; |
| for (i=0;i<8;i++) |
| { |
| text[0] = bin[i] + 0x30; |
| lcd_print_at(0,i,text,0); |
| lcd_print_atp(5,i,bin_parameter[i+4],0); |
| } |
| } |
| } |
| return line; |
| } |
| void edit_parameter2 (uint8_t page, uint8_t lines) // Ändern der Parameter einer Seite |
| { |
| uint8_t line; |
| uint8_t par; |
| uint8_t min; |
| uint8_t max; |
| uint8_t text[10]; |
| uint8_t bin[8]; |
| if (page > 1) // "normale" Parameter-Seiten |
| { |
| line = menu_choose(0,lines-1,4); |
| if (line != 255) // Wenn line == 255, wurde Escape gedrückt |
| { |
| par = p_buffer[array[line]]; |
| min = pgm_read_byte(p_limits + par * 3); |
| max = pgm_read_byte(p_limits + par * 3 + 1); |
| lcd_print_atp(4,line,PSTR("-"),0); |
| while (key != key_nokey); |
| do |
| { |
| if (key == key_minus) |
| { |
| //if (par > min) // Überprüfung der Parameter auf Bereichsüberschreitung derzeit deaktiviert |
| par --; |
| } |
| if (key == key_plus) |
| { |
| //if (par < max) |
| par ++; |
| } |
| decimal(par,text); |
| lcd_print_at(0,line,text,0); |
| timer = 20; |
| while (timer > 0); |
| } |
| while ((key != 0x04) && (key != 0x08)); |
| if (key == 0x08) |
| p_buffer[array[line]] = par; |
| } |
| } |
| if (page == 1) // Spezialfall: Loop-Config (einzelne Bits setzen / löschen) |
| { |
| binary(p_buffer[52],bin); |
| text[1] = 0x00; |
| line = menu_choose(0,3,4); |
| if (line != 255) // Wenn line == 255, wurde Escape gedrückt |
| { |
| par = bin[line]; |
| lcd_print_atp(4,line,PSTR("-"),0); |
| do |
| { |
| if (key == key_minus) |
| { |
| par = 0x00; |
| } |
| if (key == key_plus) |
| { |
| par = 0x01; |
| } |
| text[0] = par+0x30; |
| lcd_print_at(0,line,text,0); |
| timer = 20; |
| while (timer > 0); |
| } |
| while ((key != key_enter) && (key != key_esc)); |
| if (key == key_enter) |
| { |
| bin[line] = par; |
| p_buffer[52] = bindec(bin); |
| } |
| lcd_cls(); |
| decimal(p_buffer[52],text); |
| lcd_print(text,0); |
| timer = 200; |
| while(timer > 0); |
| } |
| } |
| if (page == 0) // Spezialfall: Allgemeine Konfiguration (einzelne Bits setzen/löschen) |
| { |
| binary(p_buffer[8],bin); |
| text[1] = 0x00; |
| line = menu_choose(0,7,4); |
| if (line != 255) // Wenn line == 255, wurde Escape gedrückt |
| { |
| par = bin[line]; |
| lcd_print_atp(4,line,PSTR("-"),0); |
| do |
| { |
| if (key == key_minus) |
| { |
| par = 0x00; |
| } |
| if (key == key_plus) |
| { |
| par = 0x01; |
| } |
| text[0] = par+0x30; |
| lcd_print_at(0,line,text,0); |
| timer = 20; |
| while (timer > 0); |
| } |
| while ((key != key_enter) && (key != key_esc)); |
| if (key == key_enter) |
| { |
| bin[line] = par; |
| p_buffer[8] = bindec(bin); |
| } |
| lcd_cls(); |
| decimal(p_buffer[8],text); |
| lcd_print(text,0); |
| timer = 200; |
| while(timer > 0); |
| } |
| } |
| } |
| void edit_parameter (void) // Blättert die Parameter seitenweise durch, Einsprung vom Hauptmenü |
| { |
| uint8_t page; // 12 Pages |
| uint8_t text[15]; |
| uint8_t lines; |
| uint8_t parameter; |
| lcd_cls(); |
| lcd_printp(PSTR("Lade Parameter\r\n"),0); |
| lcd_printp(PSTR(" 1:\r\n"),0); |
| lcd_printp(PSTR(" 2:\r\n"),0); |
| lcd_printp(PSTR(" 3:\r\n"),0); |
| lcd_printp(PSTR(" 4:\r\n"),0); |
| lcd_printp(PSTR(" 5:\r\n"),0); |
| parameter = menu_choose(1,5,0); |
| page = 2; |
| if (read_parameter(parameter) == 1) |
| { |
| lcd_print_atp(0,6,PSTR("Timeout"),0); |
| } |
| else |
| { |
| do |
| { |
| lcd_cls(); |
| utoa(page,text,10); |
| lcd_print(text,0); |
| timer = 50; |
| while (timer > 0); |
| lcd_cls(); |
| lines = show_parameter(page); |
| while (key == key_nokey); |
| if (key == key_plus) |
| page++; |
| if (key == key_minus) |
| page--; |
| if (page == 255) |
| page = 12; |
| if (page > 12) |
| page = 0; |
| if (key == key_enter) |
| edit_parameter2(page,lines); |
| } |
| while (key != key_esc); |
| lcd_cls(); |
| lcd_printp(PSTR("Parameter speichern?\r\n ja\r\n nein"),0); |
| lines = menu_choose(1,2,0); |
| if (lines == 1 ) |
| { |
| lcd_printp(PSTR("\r\n--->"),0); |
| write_parameter(5); // Sicherheitshalber wird derzeit ausschließlich auf Parametersatz 5 gesichert. |
| lcd_printp(PSTR("\r\nParameter gespeichert"),0); |
| } |
| else |
| { |
| lcd_printp(PSTR("\r\nNicht gespeichert"),0); |
| } |
| } |
| timer = 100; |
| while(timer > 0); |
| } |
| /Transportables_Koptertool/tags/V-0.1.1/parameter.h |
|---|
| 0,0 → 1,7 |
| #ifndef parameter_h |
| #define parameter_h |
| void edit_parameter (void); |
| void decimal (uint8_t data, uint8_t *text); |
| #endif |
| /Transportables_Koptertool/tags/V-0.1.1/rs232.c |
|---|
| 0,0 → 1,60 |
| #include <avr/io.h> |
| #include <inttypes.h> |
| #include <stdlib.h> |
| #include <avr/interrupt.h> |
| #include "main.h" |
| #include "rs232.h" |
| volatile uint8_t read_index, write_index; |
| volatile uint8_t rs232_buffer[16]; |
| ISR(USART_RXC_vect) |
| { |
| rs232_buffer[write_index++] = UDR; |
| write_index &= 15; |
| } |
| void RS232_init (void) |
| { |
| UCSRB = (1<<RXEN)|(1<<TXEN)|(1<<RXCIE); |
| // UBRRL = 7; // 57600 Baud @ 7,372800 MHz |
| // UBRR = 7; // 57600 Baud @ 7,372800 MHz |
| UBRR=(F_CPU / (BAUD_RATE * 16L) - 1); |
| } |
| uint8_t RS232_get (void) |
| { |
| uint8_t c; |
| rs232_timer = 10; |
| while ((read_index == write_index) && (rs232_timer > 0)); |
| if (rs232_timer != 0) |
| { |
| c = rs232_buffer[read_index++]; |
| read_index &= 15; |
| } |
| else |
| { |
| c=0; |
| } |
| return c; |
| } |
| void RS232_send (uint8_t data) |
| { |
| // while ((UCSRA & (1<<UDRE)) == 0); |
| while ((USR & (1<<UDRE)) == 0); |
| UDR = data; |
| } |
| void RS232_text (uint8_t *text) |
| { |
| while (*text) |
| { |
| RS232_send(*text); |
| text++; |
| } |
| } |
| /Transportables_Koptertool/tags/V-0.1.1/rs232.h |
|---|
| 0,0 → 1,67 |
| #ifndef rs232_h |
| #define rs232_h |
| void RS232_init (void); |
| uint8_t RS232_get (void); |
| void RS232_send (uint8_t data); |
| void RS232_text (uint8_t *text); |
| #define BAUD_RATE 57600 //Baud Rate für die Serielle Schnittstelle |
| #endif |
| //Anpassen der seriellen Schnittstellen Register wenn ein ATMega128 benutzt wird |
| #if defined (__AVR_ATmega128__) |
| #define USR UCSR0A |
| #define UCR UCSR0B |
| #define UDR UDR0 |
| #define UBRR UBRR0L |
| #define EICR EICRB |
| #endif |
| #if defined (__AVR_ATmega32__) |
| #define USR UCSRA |
| #define UCR UCSRB |
| #define UBRR UBRRL |
| #define EICR EICRB |
| #define INT_VEC_RX SIG_UART_RECV |
| #define INT_VEC_TX SIG_UART_TRANS |
| #endif |
| #if defined (__AVR_ATmega644__) |
| #define USR UCSR0A |
| #define UCR UCSR0B |
| #define UDR UDR0 |
| #define UBRR UBRR0L |
| #define EICR EICR0B |
| #define TXEN TXEN0 |
| #define RXEN RXEN0 |
| #define RXCIE RXCIE0 |
| #define TXCIE TXCIE0 |
| #define U2X U2X0 |
| #define UCSRB UCSR0B |
| #define UDRE UDRE0 |
| #define INT_VEC_RX SIG_USART_RECV |
| #define INT_VEC_TX SIG_USART_TRANS |
| #define USART_RXC_vect SIG_USART_RECV |
| #endif |
| #if defined (__AVR_ATmega644P__) |
| #define USR UCSR0A |
| #define UCR UCSR0B |
| #define UDR UDR0 |
| #define UBRR UBRR0L |
| #define EICR EICR0B |
| #define TXEN TXEN0 |
| #define RXEN RXEN0 |
| #define RXCIE RXCIE0 |
| #define TXCIE TXCIE0 |
| #define U2X U2X0 |
| #define UCSRB UCSR0B |
| #define UDRE UDRE0 |
| #define INT_VEC_RX SIG_USART_RECV |
| #define INT_VEC_TX SIG_USART_TRANS |
| #define USART_RXC_vect SIG_USART_RECV |
| #endif |
| /Transportables_Koptertool/tags/V-0.1.1/settings.c |
|---|
| 0,0 → 1,70 |
| #include <avr/io.h> |
| #include <avr/pgmspace.h> |
| #include <avr/interrupt.h> |
| #include "main.h" |
| #include "menu.h" |
| #include "lcd.h" |
| #include "settings.h" |
| void toggle_display(void) |
| { |
| cli(); |
| if (LCD_ORIENTATION == 0) |
| LCD_ORIENTATION = 4; |
| else LCD_ORIENTATION = 0; |
| eeprom_write_byte(&EEPromArray[EEPROM_ADR_ORIENTATION], LCD_ORIENTATION); |
| lcd_init(); |
| sei(); |
| } |
| void LCD_settings(void) |
| { |
| // uint8_t parameter; |
| char loop = 1; |
| while(loop) |
| { |
| lcd_cls(); |
| lcd_printp(PSTR("Einstellungen:\r\n"),0); |
| lcd_printp(PSTR("\r\n"),0); |
| lcd_printp(PSTR("Orientierung\r\n"),0); |
| lcd_printp(PSTR("Linie\r\n"),0); |
| lcd_printp(PSTR("Rechteck\r\n"),0); |
| // lcd_printp(PSTR("\r\n"),0); |
| lcd_printp(PSTR("Exit\r\n"),0); |
| // parameter = menu_choose(1,5,0); |
| switch(menu_choose(2,5,15)) |
| { |
| case 2: |
| toggle_display(); // LCD-Modus |
| break; |
| case 3: |
| lcd_cls(); |
| lcd_line(10,20,100,50, 1); |
| while ((key != key_enter) && (key != key_esc)); |
| break; |
| case 4: |
| lcd_cls(); |
| lcd_rect (10,20,100,40, 1); |
| while ((key != key_enter) && (key != key_esc)); |
| break; |
| case 5: |
| loop = 0; |
| break; |
| default: |
| loop = 0; |
| break; |
| } |
| } |
| } |
| /Transportables_Koptertool/tags/V-0.1.1/settings.h |
|---|
| 0,0 → 1,9 |
| void LCD_settings(void); |
| #if defined (__AVR_ATmega32__) |
| #endif |
| #if defined (__AVR_ATmega644__) |
| #endif |
| /Transportables_Koptertool/tags/V-0.1.1/timer.c |
|---|
| 0,0 → 1,41 |
| #include <avr/io.h> |
| #include <avr/interrupt.h> |
| #include "main.h" |
| #include "timer.h" |
| volatile uint8_t timer; |
| volatile uint8_t counter, counter2; |
| volatile uint8_t key; |
| volatile uint8_t rs232_timer; |
| ISR(SIG_OUTPUT_COMPARE0) // Timer-Interrupt (100 Hz) |
| { |
| if (counter > 0) |
| counter --; |
| else |
| { |
| counter = 10; |
| key = (~PINA >> 4) & 0x0F; |
| counter2 ++; |
| } |
| if (timer > 0) |
| timer --; |
| if (rs232_timer > 0) |
| rs232_timer --; |
| } |
| void timer_init (void) |
| { |
| TCCR0 = (1<<CS02)|(1<<CS00)|(1<<WGM01); // Prescaler 1024 |
| // OCR0 = 72; // Interrupt 100Hz für 7,372800 MHz-Quarz |
| // OCR0 = (F_CPU / ( 100 * 2 * 1024)) -1 ; |
| OCR0 = (F_CPU / ( 100L * 1024L)) ; |
| TIMSK |= (1<<OCIE0); // Interrupt freigeben für OCR |
| } |
| /Transportables_Koptertool/tags/V-0.1.1/timer.h |
|---|
| 0,0 → 1,37 |
| #ifndef timer_h |
| #define timer_h |
| volatile uint8_t timer; |
| volatile uint8_t counter, counter2; |
| volatile uint8_t key; |
| volatile uint8_t rs232_timer; |
| void timer_init (void); |
| #endif |
| #if defined (__AVR_ATmega32__) |
| #endif |
| #if defined (__AVR_ATmega644__) |
| #define TCCR0 TCCR0A |
| #define OCR0 OCR0A |
| #define TIMSK TIMSK0 |
| #define OCIE0 OCIE0A |
| #define INT_VEC_TX SIG_USART_TRANS |
| #define SIG_OUTPUT_COMPARE0 SIG_OUTPUT_COMPARE0A |
| #endif |
| #if defined (__AVR_ATmega644P__) |
| #define TCCR0 TCCR0A |
| #define OCR0 OCR0A |
| #define TIMSK TIMSK0 |
| #define OCIE0 OCIE0A |
| #define INT_VEC_TX SIG_USART_TRANS |
| #define SIG_OUTPUT_COMPARE0 SIG_OUTPUT_COMPARE0A |
| #endif |
| /Transportables_Koptertool/tags/V-0.1.2/CHANGE.LOG |
|---|
| 0,0 → 1,194 |
| /**************************************************************************** |
| * Copyright (C) 2009 by Claas Anders "CaScAdE" Rathje * |
| * admiralcascade@gmail.com * |
| * Project-URL: http://www.mylifesucks.de/oss/c-osd/ * |
| * * |
| * This program is free software; you can redistribute it and/or modify * |
| * it under the terms of the GNU General Public License as published by * |
| * the Free Software Foundation; either version 2 of the License. * |
| * * |
| * This program 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 General Public License for more details. * |
| * * |
| * You should have received a copy of the GNU General Public License * |
| * along with this program; if not, write to the * |
| * Free Software Foundation, Inc., * |
| * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
| ****************************************************************************/ |
| 20090612-2100 |
| *spi transfer now struct driven (needs C-Strom 20090612-2100 now!!!) |
| *lesser spi update rate (caused problems on some strom-slaves) |
| *voltage gets transfered via spi as well |
| *menu to switch display of 2nd voltage measured by C-Strom on and off |
| 20090604-1350 |
| *bugfix for stats |
| 20090604-1330 |
| *possible to choose between different osd-layouts (via menu) |
| 20090604-0700 |
| +(shaddi)osd_ncmode_minimal for less symbols during FPV |
| 20090601-2233 |
| *(woggle) changed timer init an interupt to be more precise |
| *(woggle) remove all warning during compile |
| *(woggle) simplify draw_big_variometer |
| *(woggle) put compass rose to PROGMEM |
| *(woggle) put directions array to PROGMEM |
| 20090525-2305 |
| +HUD on/off via RC (connect to PPM, according to manual) testing stuff |
| 20090523-1150 |
| +pal/ntsc changable in menu (applied immedeately!) |
| 20090519-2245 |
| *mah corrected |
| +config gets saved now (menu item!) |
| *source moved a bit |
| 20090519-0115 |
| +mah currently wasted |
| *some small changes |
| 20090517-2345 |
| *modded the real alpha stuff i have been talking about below |
| 20090516-2345 |
| +some really testing stuff 'bout current measurement, more to come |
| 20090513-2350 |
| *cellnumber autoconfig modified, offset set to 1,5V |
| *copy paste nick/roll error fixed |
| *clean after build in dist.sh |
| +a little shellscript to auto-build the files (testing) |
| *osd-layouts in seperate files so including own layouts should get easier |
| +build date is displayed during init to know which version you are runing |
| 20090513-1040 |
| *some code movement |
| +artificial horizon for FC-ONLY mode |
| 20090512-2100 |
| +some FCONLY basics (set FCONLY to 1 in main.h to use it) |
| 20090511-2345 |
| *battery voltages now calculated according to CELL_VOLT_MIN CELL_VOLT_MAX and CELL_NUM |
| *CELL_NUM -1 causes a rough auto detection of cell number |
| -UBAT_WRN and UBAT_MAX are now deprecated |
| 20090427-2315 |
| +write_gps_pos(...) (needs to be tested) |
| +gps position is shown in stats screen for testing purpose |
| 20090427-2131 |
| *stats are only collected while engines running (shaddi) |
| 20090427-2102 |
| *fixed maximum distance in stats (shaddi) |
| 20090427-2050 |
| *clear() now faster |
| *fixed calculation of max speed in stats (shaddi) |
| *littel typo in artificial horizon (thx joko) |
| *stats are only shown AFTER flight (more specific, after motors had been on at least once) |
| +indication icon for serial link (requires new character 198) |
| +indication icon for manual controll (stick > stick threshold) |
| (Character set 192 needs to be reflashed since new icon is in it) |
| 20090420-0205 |
| *reset-bug fixed |
| *moved code a bit |
| 20090419-2145 |
| *reset-bug workaround in usart1.c: usart1_DisableTXD and usart1_EnableTXD |
| 20090419-1900 |
| *fixed bug in heading-fine conv for bearing to home |
| 20090419-1245 |
| *compass characters bigger |
| *battery position |
| +voltage-symbol to battery-voltage |
| (Character Set 208 needs to be reflashed since compass chars are in it) |
| 20090418-2015 |
| *fixed bug in Character Set 128 (reflash it if you already flashed it!) |
| +another set of vario chars |
| *changed vario to use new characters |
| *moved vario/home-bearing positions |
| *big vario now enabled via menu or BIGVARIO |
| (Character Set 112 needs to be flashed) |
| 20090418-1235 |
| +big vario for testing purpose |
| (Character Set 192 needs to be flashed) |
| 20090418-0100 |
| *variometer uses more steps (9 instead of 5) |
| *home-arrow is now home-clock using more steps (22,5° resolution) |
| +visual battery-gauge according to difference between UBAT_WRN and UBAT_MAX |
| 20090417-1115 |
| *changed calculation of km/h (thx wowie) |
| *added JochenK_(joko)'s characters |
| (Character-Sets 128, 136, 144, 152, 160, 168, 176 and 184 need to be flashed!) |
| 20090408-1245 (shaddi) |
| *fixed distance towards home |
| 20090408-0035 |
| *rewrote number->display functions |
| *fixed height bug (uint vs int) |
| 20090407-2100 |
| +added request of OSD data, disrequest of debug data and uptime reset to menu |
| -removed the uptime-reset binding from S2 |
| +pgm space for some strings to save _normal_ data space |
| *some code movement |
| 20090406-0130 |
| *MK-Datastruct updated to work with NaviCtrl 0.15c firmware |
| *changed flags from NO* to invers versions |
| *enhanced the menu a bit |
| -artificial horizon at bootup, the menu is cooler imho |
| 20090405-0207 |
| +NOOSD as requested |
| *height now corrected (thx lephisto) and displayed as .x up to 10m |
| 20090402-0106 |
| + disabling the txd pin while not using it so it won't interfere with KopterTool usage (thx joko) |
| + if no data has been received for over 2sec we re-request it |
| * tried source organisation a bit |
| 20090401-1741 (shaddi) |
| + More precise Veriometer. Uses more more characters to show the speed of the movement |
| (Character-Set 232 needs to be flashed!) |
| 20090331-1549 |
| + simple config menu during runtime, press S1 to jump in, S2 to cyle and S1 to accept choice |
| - S1 no longer requests the NC data |
| 20090331-1305 |
| + added more statistics |
| * corrected S1/S2 mapping (d'oh) |
| + started simple mode controll, press S2 during bootup toggles artificial horizon |
| 20090329-1452 |
| * fixed bearing to home |
| + added flight stats (shown while engines off) |
| + sat icon should indicate PH/CH/Free now |
| + you need to flash characters 224-231 if you were using previous versions |
| 20090327-2140 |
| * fixed km/h (was cm/s) |
| * fixed height m (was dm) |
| * modified incoming data speed to 100ms (was 200ms) |
| 20090326-2031 |
| + first binary release |
| /Transportables_Koptertool/tags/V-0.1.2/LICENSE.TXT |
|---|
| 0,0 → 1,340 |
| GNU GENERAL PUBLIC LICENSE |
| Version 2, June 1991 |
| Copyright (C) 1989, 1991 Free Software Foundation, Inc. |
| 59 Temple Place, Suite 330, Boston, MA 02111-1307 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 |
| How to Apply These Terms to Your New Programs |
| If you develop a new program, and you want it to be of the greatest |
| possible use to the public, the best way to achieve this is to make it |
| free software which everyone can redistribute and change under these terms. |
| To do so, attach the following notices to the program. It is safest |
| to attach them to the start of each source file to most effectively |
| convey the exclusion of warranty; and each file should have at least |
| the "copyright" line and a pointer to where the full notice is found. |
| <one line to give the program's name and a brief idea of what it does.> |
| Copyright (C) <year> <name of author> |
| This program is free software; you can redistribute it and/or modify |
| it under the terms of the GNU General Public License as published by |
| the Free Software Foundation; either version 2 of the License, or |
| (at your option) any later version. |
| This program 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 General Public License for more details. |
| You should have received a copy of the GNU General Public License |
| along with this program; if not, write to the Free Software |
| Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| Also add information on how to contact you by electronic and paper mail. |
| If the program is interactive, make it output a short notice like this |
| when it starts in an interactive mode: |
| Gnomovision version 69, Copyright (C) year name of author |
| Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. |
| This is free software, and you are welcome to redistribute it |
| under certain conditions; type `show c' for details. |
| The hypothetical commands `show w' and `show c' should show the appropriate |
| parts of the General Public License. Of course, the commands you use may |
| be called something other than `show w' and `show c'; they could even be |
| mouse-clicks or menu items--whatever suits your program. |
| You should also get your employer (if you work as a programmer) or your |
| school, if any, to sign a "copyright disclaimer" for the program, if |
| necessary. Here is a sample; alter the names: |
| Yoyodyne, Inc., hereby disclaims all copyright interest in the program |
| `Gnomovision' (which makes passes at compilers) written by James Hacker. |
| <signature of Ty Coon>, 1 April 1989 |
| Ty Coon, President of Vice |
| This General Public License does not permit incorporating your program into |
| proprietary programs. If your program is a subroutine library, you may |
| consider it more useful to permit linking proprietary applications with the |
| library. If this is what you want to do, use the GNU Library General |
| Public License instead of this License. |
| /Transportables_Koptertool/tags/V-0.1.2/MMB 1.pdf |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /Transportables_Koptertool/tags/V-0.1.2/MMB 1.sch |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /Transportables_Koptertool/tags/V-0.1.2/Makefile |
|---|
| 0,0 → 1,499 |
| #------------------------------------------------------------------- |
| # Use only one! |
| # _M_obiles _M_ikrokopter _T_ool http://forum.mikrokopter.de/topic-4061-1.html |
| # MK Multi Box |
| BOARD = MMB |
| # |
| #BOARD = xxx |
| #------------------------------------------------------------------- |
| VERSION_MAJOR = 0 |
| VERSION_MINOR = 2 |
| VERSION_PATCH = 1 |
| VERSION_SERIAL_MAJOR = 10 # Serial Protocol Major Version |
| VERSION_SERIAL_MINOR = 0 # Serial Protocol Minor Version |
| #------------------------------------------------------------------- |
| # get SVN revision |
| REV := $(shell sh -c "cat .svn/entries | sed -n '4p'") |
| ifeq ($(BOARD), MMT) |
| # The original with ATmega32 and 7.3 MHz |
| MCU = atmega32 |
| F_CPU = 7372800 |
| QUARZ = 7MHZ |
| FUSE_SETTINGS = -u -U lfuse:w:0x3f:m -U hfuse:w:0xcf:m |
| HEX_NAME = $(BOARD)_MEGA32 |
| endif |
| ifeq ($(BOARD), MMB) |
| # MK Multi Box with ATmega644p and 20 MHz |
| MCU = atmega644p |
| F_CPU = 20000000 |
| QUARZ = 20MHZ |
| FUSE_SETTINGS = -u -U lfuse:w:0xd7:m -U hfuse:w:0xdf:m -U efuse:w:0xfc:m |
| HEX_NAME = $(BOARD)_MEGA644p |
| endif |
| ifeq ($(BOARD), MMB1) |
| # original board. ATmega32 replaced with ATmega644p |
| MCU = atmega644p |
| F_CPU = 7372800 |
| QUARZ = 7MHZ |
| FUSE_SETTINGS = -u -U lfuse:w:0xd7:m -U hfuse:w:0xdf:m -U efuse:w:0xfc:m |
| HEX_NAME = $(BOARD)_MEGA644p |
| endif |
| # Output format. (can be srec, ihex, binary) |
| FORMAT = ihex |
| # Target file name (without extension). |
| ifeq ($(VERSION_PATCH), 0) |
| TARGET = $(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)a_SVN$(REV) |
| endif |
| ifeq ($(VERSION_PATCH), 1) |
| TARGET = $(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)b_SVN$(REV) |
| endif |
| ifeq ($(VERSION_PATCH), 2) |
| TARGET = $(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)c_SVN$(REV) |
| endif |
| ifeq ($(VERSION_PATCH), 3) |
| TARGET = $(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)d_SVN$(REV) |
| endif |
| ifeq ($(VERSION_PATCH), 4) |
| TARGET = $(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)e_SVN$(REV) |
| endif |
| ifeq ($(VERSION_PATCH), 5) |
| TARGET = $(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)f_SVN$(REV) |
| endif |
| ifeq ($(VERSION_PATCH), 6) |
| TARGET = $(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)g_SVN$(REV) |
| endif |
| ifeq ($(VERSION_PATCH), 7) |
| TARGET = $(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)h_SVN$(REV) |
| endif |
| ifeq ($(VERSION_PATCH), 8) |
| TARGET = $(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)i_SVN$(REV) |
| endif |
| ifeq ($(VERSION_PATCH), 9) |
| TARGET = $(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)j_SVN$(REV) |
| endif |
| ifeq ($(VERSION_PATCH), 10) |
| TARGET = $(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)k_SVN$(REV) |
| endif |
| ifeq ($(VERSION_PATCH), 11) |
| TARGET = $(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)l_SVN$(REV) |
| endif |
| ifeq ($(VERSION_PATCH), 12) |
| TARGET = $(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)m_SVN$(REV) |
| endif |
| ifeq ($(VERSION_PATCH), 13) |
| TARGET = $(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)n_SVN$(REV) |
| endif |
| ifeq ($(VERSION_PATCH), 14) |
| TARGET = $(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)o_SVN$(REV) |
| endif |
| ifeq ($(VERSION_PATCH), 15) |
| TARGET = $(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)p_SVN$(REV) |
| endif |
| ifeq ($(VERSION_PATCH), 16) |
| TARGET = $(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)q_SVN$(REV) |
| endif |
| ifeq ($(VERSION_PATCH), 17) |
| TARGET = $(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)r_SVN$(REV) |
| endif |
| ifeq ($(VERSION_PATCH), 18) |
| TARGET = $(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)s_SVN$(REV) |
| endif |
| ifeq ($(VERSION_PATCH), 19) |
| TARGET = $(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)t_SVN$(REV) |
| endif |
| ifeq ($(VERSION_PATCH), 20) |
| TARGET = $(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)u_SVN$(REV) |
| endif |
| ifeq ($(VERSION_PATCH), 21) |
| TARGET = $(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)v_SVN$(REV) |
| endif |
| ifeq ($(VERSION_PATCH), 22) |
| TARGET = $(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)w_SVN$(REV) |
| endif |
| ifeq ($(VERSION_PATCH), 23) |
| TARGET = $(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)x_SVN$(REV) |
| endif |
| ifeq ($(VERSION_PATCH), 24) |
| TARGET = $(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)y_SVN$(REV) |
| endif |
| ifeq ($(VERSION_PATCH), 25) |
| TARGET = $(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)z_SVN$(REV) |
| endif |
| # Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization. |
| # (Note: 3 is not always the best optimization level. See avr-libc FAQ.) |
| OPT = s |
| ########################################################################################################## |
| # List C source files here. (C dependencies are automatically generated.) |
| SRC = main.c menu.c timer.c lcd.c font8X6.c font8x8.c usart.c settings.c motortest.c display.c osd.c debug.c jeti.c servo.c lipo.c parameter.c status.c eeprom.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 = |
| # List any extra directories to look for include files here. |
| # Each directory must be seperated by a space. |
| EXTRAINCDIRS = |
| # Optional compiler flags. |
| # -g: generate debugging information (for GDB, or for COFF conversion) |
| # -O*: optimization level |
| # -f...: tuning, see gcc manual and avr-libc documentation |
| # -Wall...: warning level |
| # -Wa,...: tell GCC to pass this to the assembler. |
| # -ahlms: create assembler listing |
| CFLAGS = -O$(OPT) |
| CFLAGS += -funsigned-char |
| CFLAGS += -funsigned-bitfields |
| CFLAGS += -fpack-struct |
| CFLAGS += -fshort-enums |
| CFLAGS += -Wall |
| CFLAGS += -Wstrict-prototypes |
| CFLAGS += -Wa,-adhlns=$(<:.c=.lst) |
| CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) |
| # Compiler flag to set the C Standard level. |
| # Unremark just one line below to set the language standard to use. |
| # c89 = "ANSI" C |
| # gnu89 = c89 plus GCC extensions |
| # c99 = ISO C99 standard (not yet fully implemented) |
| # gnu99 = c99 plus GCC extensions |
| #CFLAGS += -std=c89 |
| #CFLAGS += -std=gnu89 |
| #CFLAGS += -std=c99 |
| CFLAGS += -std=gnu99 |
| CFLAGS += -DF_CPU=$(F_CPU) |
| CFLAGS += -DQUARZ=$(QUARZ) |
| CFLAGS += -DVERSION_MAJOR=$(VERSION_MAJOR) |
| CFLAGS += -DVERSION_MINOR=$(VERSION_MINOR) |
| CFLAGS += -DVERSION_PATCH=$(VERSION_PATCH) |
| CFLAGS += -DVERSION_SERIAL_MAJOR=$(VERSION_SERIAL_MAJOR) |
| CFLAGS += -DVERSION_SERIAL_MINOR=$(VERSION_SERIAL_MINOR) |
| ifeq ($(BOARD), MMT) |
| CFLAGS += -DUSE_MMT |
| endif |
| ifeq ($(BOARD), MMTNG) |
| CFLAGS += -DUSE_MMTNG |
| endif |
| # Optional assembler flags. |
| # -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 |
| # Optional linker flags. |
| # -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 |
| # Additional libraries |
| # Minimalistic printf version |
| #LDFLAGS += -Wl,-u,vfprintf -lprintf_min |
| # Floating point printf version (requires -lm below) |
| #LDFLAGS += -Wl,-u,vfprintf -lprintf_flt |
| # -lm = math library |
| LDFLAGS += -lm |
| ##LDFLAGS += -T./linkerfile/avr5.x |
| # Programming support using avrdude. Settings and variables. |
| # Programming hardware: |
| # |
| # Type: avrdude -c ? |
| # to get a full listing. |
| # |
| AVRDUDE_PROGRAMMER = usbasp |
| #falls Ponyser ausgewählt wird, muss sich unsere avrdude-Configdatei im Bin-Verzeichnis des Compilers befinden |
| #AVRDUDE_PORT = com1 # programmer connected to serial device |
| #AVRDUDE_PORT = lpt1 # programmer connected to parallel port |
| #AVRDUDE_PORT = usb # programmer connected to USB |
| AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex |
| AVRDUDE_WRITE_FUSE = $(FUSE_SETTINGS) |
| AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep |
| #avrdude -c avrispv2 -P usb -p m32 -U flash:w:blink.hex |
| #AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) |
| AVRDUDE_FLAGS = -p $(MCU) -c $(AVRDUDE_PROGRAMMER) |
| # 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 += -y |
| # Uncomment the following if you do /not/ wish a verification to be |
| # performed after programming the device. |
| AVRDUDE_FLAGS += -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_FLAGS += -v -v |
| # --------------------------------------------------------------------------- |
| # Define directories, if needed. |
| #DIRAVR = c:/winavr |
| #DIRAVRBIN = $(DIRAVR)/bin |
| #DIRAVRUTILS = $(DIRAVR)/utils/bin |
| #DIRINC = . |
| #DIRLIB = $(DIRAVR)/avr/lib |
| # Define programs and commands. |
| SHELL = sh |
| CC = avr-gcc |
| OBJCOPY = avr-objcopy |
| OBJDUMP = avr-objdump |
| SIZE = avr-size |
| # Programming support using avrdude. |
| AVRDUDE = avrdude |
| REMOVE = rm -f |
| COPY = cp |
| HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex |
| ##ELFSIZE = $(SIZE) -A $(TARGET).elf |
| ELFSIZE = $(SIZE) --mcu=$(MCU) --format=avr $(TARGET).elf |
| # 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) |
| # Combine all necessary flags and optional flags. |
| # Add target processor to flags. |
| #ALL_CFLAGS = -mmcu=$(MCU) -DF_CPU=$(F_CPU) -I. $(CFLAGS) |
| ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) |
| ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) |
| # Default target. |
| all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex $(TARGET).eep \ |
| $(TARGET).lss $(TARGET).sym sizeafter finished end |
| # 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) |
| finished: |
| @echo $(MSG_ERRORS_NONE) |
| end: |
| @echo $(MSG_END) |
| @echo |
| # Display size of file. |
| sizebefore: |
| @if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi |
| sizeafter: |
| @if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi |
| # Display compiler version information. |
| gccversion : |
| @$(CC) --version |
| # 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 |
| # Program the device. |
| flash: $(TARGET).hex |
| $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) |
| eeprom: $(TARGET).eep |
| $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_EEPROM) |
| fuse: |
| $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FUSE) |
| reset: |
| $(AVRDUDE) $(AVRDUDE_FLAGS) |
| # 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) $@ |
| avr-nm -n $< > $@ |
| # Link: create ELF output file from object files. |
| .SECONDARY : $(TARGET).elf |
| .PRECIOUS : $(OBJ) |
| %.elf: $(OBJ) |
| @echo |
| @echo $(MSG_LINKING) $@ |
| $(CC) $(ALL_CFLAGS) $(OBJ) --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 $@ |
| # Target: clean project. |
| clean: begin clean_list finished end |
| clean_list : |
| @echo |
| @echo $(MSG_CLEANING) |
| # $(REMOVE) $(TARGET).hex |
| $(REMOVE) $(TARGET).eep |
| $(REMOVE) $(TARGET).obj |
| $(REMOVE) $(TARGET).cof |
| $(REMOVE) $(TARGET).elf |
| $(REMOVE) $(TARGET).map |
| $(REMOVE) $(TARGET).obj |
| $(REMOVE) $(TARGET).a90 |
| $(REMOVE) $(TARGET).sym |
| $(REMOVE) $(TARGET).lnk |
| $(REMOVE) $(TARGET).lss |
| $(REMOVE) $(OBJ) |
| $(REMOVE) $(LST) |
| $(REMOVE) $(SRC:.c=.s) |
| $(REMOVE) $(SRC:.c=.d) |
| @echo |
| # Automatically generate C source code dependencies. |
| # (Code originally taken from the GNU make user manual and modified |
| # (See README.txt Credits).) |
| # |
| # Note that this will work with sh (bash) and sed that is shipped with WinAVR |
| # (see the SHELL variable defined above). |
| # This may not work with other shells or other seds. |
| # |
| %.d: %.c |
| @set -e; $(CC) -MM $(ALL_CFLAGS) $< \ |
| | sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > $@; \ |
| [ -s $@ ] || rm -f $@ |
| # Remove the '-' if you want to see the dependency files generated. |
| -include $(SRC:.c=.d) |
| # Listing of phony targets. |
| .PHONY : all begin finish end sizebefore sizeafter gccversion coff extcoff clean clean_list flash eeprom fuse reset |
| /Transportables_Koptertool/tags/V-0.1.2/README.txt |
|---|
| 0,0 → 1,166 |
| MK Multi Box: |
| ============= |
| Stand: 16.01.2010 |
| Was kann die MMB: |
| - Anzeige der OSD-Daten |
| - MK Display |
| - MK Motor Test |
| - MK Debug-Daten |
| - Jeti Box |
| - Servo Tester |
| Das muß noch geschrieben/überarbeitet/getestet werde: |
| - MK Parameter |
| - LiPo Überwachung |
| - I2C-Tester für BL-Ctrl |
| Die MMB entstand aus dem Projekt "Transportables Kopter Tool" von thkais: |
| http://www.ft-fanpage.de/mikrokopter/ |
| und |
| http://forum.mikrokopter.de/topic-4061-1.html |
| Das Projekt hatte ich mal auf Lochraster nachgebaut. |
| Leider war es kurz nach dem Bau ziemlich nutzlos. |
| Die FC bekam ein Firmware-Update und niemand hat sich um die Software-Anpassung des Tools gekümmert. :-( |
| So lag es denn einige Monate und staubte vor sich hin... |
| Mitte 2009 wollte ich mich mit den AVRs beschäftigen und |
| mir etwas basteln um die OSD-Daten vom MK zu visualisieren. |
| Und zufällig schweift mein Blick über die verstaubte Kopter-Tool Hardware. ;-) |
| Herausgekommen ist die MMB. |
| Die Hardware basiert weitestgehend auf dem Entwurf von thkais. |
| Ich habe nur etwas "modernisiert", d.h. den ATmega32 durch einen ATmega644p mit 20 MHz ersetzt. |
| Die genauen Hardware-Details finden sich im Schaltplan, der auch im Eagle-Format vorliegt. |
| Die "tausend" LEDs habe ich mir nur als "Debug-Hilfe" dazugebastelt |
| und können auch weggelassen werden. |
| Entwickelt habe ich auf dem Mac (Mac OS X 10.6) mit Crosspack. Als Editor mußte XCode herhalten. |
| Der Source sollte sich aber auch unter Linux oder (zur Not) auch Windows mit den entsprechenden AVR-Tools compilieren lassen. |
| Die Tasten |
| ^ v ⎋ ⏎ |
| ^ - Up |
| v - Down |
| ⎋ - Escape/Back/Top |
| ⏎ - Enter |
| Wenn genug Platz im Display vorhanden ist, wird in der untersten Zeile die aktuelle |
| Tastenbelegung eingeblendet. Das ist aber leider nicht immer möglich. |
| Hauptmenü: |
| ========== |
| - Navi Data |
| - Display |
| - Parameters |
| - Debug Data |
| - Jeti |
| - Utilities... |
| 1) Navi Data |
| Anzeige des OSD Datensatzes der NC. |
| Tasten: |
| ---- ---- Exit Status |
| Beim Stoppen der Motoren wird einen Statusseite angezeigt. |
| Die Statusseite kann auch gezielt mit der Status-taste ausgerufen werden. |
| Tasten (Statusseite): |
| ---- ---- Exit ---- |
| 2) Display |
| Anzeigen des MK-Displays. |
| Tasten: |
| page- page+ Exit NC/FC |
| 3) Parameters |
| -- noch nicht funktionsfähig --- |
| Auslesen und Ändern der FC Parameter. |
| 4) Debug Data |
| Anzeige der MK Debug Daten. |
| Tasten: |
| page- page+ Exit NC/FC |
| 5) Jeti |
| Die MK Multi Box arbeitet als "Jeti Box". |
| Die Belegung der Tasten hat sich wie folgt geändert: |
| ^ v < > |
| ^ - Up |
| v - Down |
| < - Left |
| > - Right |
| Die "Jeti Box"-Funktion wird über längeres Drückern der <-Taste (Left) verlassen. |
| 6) Utilities... |
| Weiter zum Sub-Menü "Utilities". |
| Utilities: |
| ========== |
| - Motor Test |
| - Servo Tester |
| - LiPo Status |
| - Status |
| - Settings... |
| 1) Motor Test |
| MK Motortest |
| 2) Servo Tester |
| Generiert einen Servo Puls mit variabler Länge von 1.0 ms bis 2.0 ms |
| mit einer Wiederholrate vom 20 ms. |
| Tasten: |
| -10 +10 Exit >|< |
| -10 - -10 Steps |
| +10 - +10 Steps |
| Exit - Servo-Test verlassen |
| >|< - Servo in Mittenposition (1,5 ms) |
| Langes Drücken auf >|< schaltet die Schrittweite auf +1/-1 um. |
| Schrittweite ist 0,32 µs. |
| 3) LiPo Status |
| Anzeige der Zellenspannungen eines LiPos bis max 4S. |
| 4) Status |
| Einige Statusinformationen... |
| 5) Settings... |
| Weiter zum Sub-Menü "Settings". |
| Settings: |
| ========= |
| - Orientation |
| - LiPo Warn |
| - View Font |
| - Line |
| - Rectangle |
| 1) Orientation |
| Anzeige um 128 Grad drehen. |
| Einstellung wird im EEPROM gespeichert. |
| 2) LiPo Warn |
| Einstellen der Warnschwelle |
| 3) View Font |
| Anzeige des 6x8 Fonts. |
| 4) Line |
| ***TEST |
| 5) Rectangle |
| ***TEST |
| /Transportables_Koptertool/tags/V-0.1.2/TODO.txt |
|---|
| 0,0 → 1,8 |
| - MK Parameter |
| - LiPo Überwachung |
| Warnung ausgeben! |
| - I2C BL-Ctrl Tester |
| entweder zusammen mit dem Motor-Test (einfach alle Motoren bzw. alle I2C BL-Ctrl Adressen) oder |
| als extra Menü und Reglernummer wählbar |
| /Transportables_Koptertool/tags/V-0.1.2/debug.c |
|---|
| 0,0 → 1,278 |
| /***************************************************************************** |
| * Copyright (C) 2008 Thomas Kaiser, thomas@ft-fanpage.de * |
| * Copyright (C) 2009 Peter "woggle" Mack, mac@denich.net * |
| * * |
| * This program is free software; you can redistribute it and/or modify * |
| * it under the terms of the GNU General Public License as published by * |
| * the Free Software Foundation; either version 2 of the License. * |
| * * |
| * This program 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 General Public License for more details. * |
| * * |
| * You should have received a copy of the GNU General Public License * |
| * along with this program; if not, write to the * |
| * Free Software Foundation, Inc., * |
| * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
| * * |
| *****************************************************************************/ |
| // @TODO: maybe choose a smaler font for the debug data. 6x6 or 6x7 would be nice and gives some additional space for status lines |
| #include <avr/io.h> |
| #include <avr/pgmspace.h> |
| #include <util/delay.h> |
| #include <string.h> |
| #include "main.h" |
| #include "menu.h" |
| #include "lcd.h" |
| #include "usart.h" |
| #include "debug.h" |
| #include "timer.h" |
| #include "mk-data-structs.h" |
| #define TIMEOUT 200 // 2 sec |
| #define ANALOGTIME 20 // 200 ms |
| // WARNING: this work for NC & FC only |
| // if current_hardware == MK3MAG or MKGPS the access is outside of the array... |
| uint8_t AnalogNames[2][32][16 + 1]; // 32 names, 16 characters + 1 0x00 |
| uint8_t AnalogNamesRead[2] = {0,0}; |
| //***************************************************************************** |
| // |
| void GetAnalogNames (void) |
| { |
| uint8_t i = AnalogNamesRead[current_hardware - 1]; |
| uint8_t t = 0; |
| lcd_cls (); |
| lcd_printp_at (0, 3, PSTR("Reading"), 0); |
| lcd_printp_at (0, 4, PSTR("Analog Names: "), 0); |
| mode = 'A'; // read Names |
| _delay_ms(200); |
| rxd_buffer_locked = FALSE; |
| timer = ANALOGTIME; |
| while (i < 32) |
| { |
| SendOutData ('a', ADDRESS_ANY, 1, &i, 1); |
| while (!rxd_buffer_locked && timer); |
| if (timer) |
| { |
| Decode64 (); |
| if (i == *pRxData) |
| { |
| write_ndigit_number_u(14, 4, i, 2, 0); |
| memcpy (AnalogNames[current_hardware - 1][*pRxData], (uint8_t *) pRxData + 1, 16); |
| AnalogNames[current_hardware - 1][*pRxData][16] = 0; |
| i++; |
| t = 0; |
| } |
| else |
| { |
| _delay_ms (100); |
| } |
| timer = ANALOGTIME; |
| rxd_buffer_locked = FALSE; |
| } |
| else |
| { // timeout occured |
| t++; |
| timer = ANALOGTIME; |
| if (t >= 50) |
| { |
| lcd_printp_at (0, 2, PSTR("ERROR: no data"), 0); |
| timer = 100; |
| while (timer > 0); |
| break; |
| } |
| } |
| } |
| AnalogNamesRead[current_hardware - 1] = i; |
| #if 0 |
| if (timer) |
| { |
| for (page = 0; page < 4; page++) |
| { |
| for (i = 0; i < 7; i++) |
| { |
| lcd_print_at (0, i, AnalogNames[current_hardware - 1][i + page * 8], 0); |
| } |
| while (!get_key_press (1 << KEY_ESC)); // ESC |
| } |
| } |
| //return; |
| #endif |
| } |
| //***************************************************************************** |
| // |
| void display_debug (void) |
| { |
| uint8_t i = 0; |
| uint8_t tmp_dat; |
| uint8_t page = 0; |
| DebugData_t *DebugData; |
| lcd_cls (); |
| timer = TIMEOUT; |
| if (AnalogNamesRead[current_hardware - 1] < 32) { |
| GetAnalogNames (); |
| } |
| if (!timer) |
| { |
| return; |
| } |
| mode = 'D'; // Debug Data |
| rxd_buffer_locked = FALSE; |
| timer = TIMEOUT; |
| tmp_dat = 10; |
| SendOutData ('d', ADDRESS_ANY, 1, &tmp_dat, 1); |
| for (i = 0; i < 8; i++) |
| { |
| lcd_print_at (0, i, AnalogNames[current_hardware - 1][i + page * 8], 0); |
| } |
| do |
| { |
| if (rxd_buffer_locked) |
| { |
| Decode64 (); |
| DebugData = (DebugData_t *) pRxData; |
| //lcd_printp_at (0,6,PSTR("Page"),0); |
| lcd_write_number_u_at (20, 0, page); |
| switch (current_hardware) |
| { |
| case FC: |
| lcd_printp_at (20, 1, PSTR("F"), 0); |
| break; |
| case NC: |
| lcd_printp_at (20, 1, PSTR("N"), 0); |
| break; |
| default: |
| lcd_printp_at (20, 1, PSTR("?"), 0); |
| break; |
| } |
| for (i = 0; i < 8; i++) |
| { |
| //lcd_print_at (0, i, AnalogNames[i + page * 8], 0); |
| if (current_hardware == NC) |
| { |
| write_ndigit_number_u (14, i, DebugData->Analog[i + page * 8], 5, 0); |
| } |
| else |
| { |
| write_ndigit_number_s (14, i, DebugData->Analog[i + page * 8], 5, 0); |
| } |
| } |
| timer = TIMEOUT; |
| rxd_buffer_locked = FALSE; |
| } |
| if (get_key_press (1 << KEY_MINUS)) |
| { |
| page--; |
| page &= 0x03; |
| lcd_cls (); |
| for (i = 0; i < 8; i++) |
| { |
| lcd_print_at (0, i, AnalogNames[current_hardware - 1][i + page * 8], 0); |
| } |
| } |
| else if (get_key_press (1 << KEY_PLUS)) |
| { |
| page++; |
| page &= 0x03; |
| lcd_cls (); |
| for (i = 0; i < 8; i++) |
| { |
| lcd_print_at (0, i, AnalogNames[current_hardware - 1][i + page * 8], 0); |
| } |
| } |
| if ((hardware == NC) && get_key_press (1 << KEY_ENTER)) |
| { |
| tmp_dat = 0; |
| SendOutData ('d', ADDRESS_ANY, 1, &tmp_dat, 1); |
| _delay_ms (200); |
| if (current_hardware == NC) |
| { |
| SwitchToFC(); |
| timer = TIMEOUT; |
| //lcd_printpns_at (0, 7, PSTR(" \x1c \x1d Exit NC"), 0); |
| } |
| else |
| { |
| SwitchToNC(); |
| timer = TIMEOUT; |
| //lcd_printpns_at (0, 7, PSTR(" \x1c \x1d Exit FC"), 0); |
| } |
| _delay_ms (200); |
| if (AnalogNamesRead[current_hardware - 1] < 32) { |
| GetAnalogNames (); |
| } |
| mode = 'D'; // Debug Data |
| rxd_buffer_locked = FALSE; |
| timer = TIMEOUT; |
| tmp_dat = 10; |
| SendOutData ('d', ADDRESS_ANY, 1, &tmp_dat, 1); |
| lcd_cls (); |
| page = 0; |
| for (i = 0; i < 8; i++) |
| { |
| lcd_print_at (0, i, AnalogNames[current_hardware - 1][i + page * 8], 0); |
| } |
| } |
| } |
| while (!get_key_press (1 << KEY_ESC) && timer); // ESC |
| tmp_dat = 0; |
| SendOutData ('d', ADDRESS_ANY, 1, &tmp_dat, 1); |
| mode = 0; |
| rxd_buffer_locked = FALSE; |
| if (!timer) |
| { // timeout occured |
| lcd_cls (); |
| lcd_printp_at (0, 2, PSTR("ERROR: no data"), 0); |
| timer = 100; |
| while (timer > 0); |
| } |
| } |
| /Transportables_Koptertool/tags/V-0.1.2/debug.h |
|---|
| 0,0 → 1,32 |
| /***************************************************************************** |
| * Copyright (C) 2008 Thomas Kaiser, thomas@ft-fanpage.de * |
| * Copyright (C) 2009 Peter "woggle" Mack, mac@denich.net * |
| * * |
| * This program is free software; you can redistribute it and/or modify * |
| * it under the terms of the GNU General Public License as published by * |
| * the Free Software Foundation; either version 2 of the License. * |
| * * |
| * This program 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 General Public License for more details. * |
| * * |
| * You should have received a copy of the GNU General Public License * |
| * along with this program; if not, write to the * |
| * Free Software Foundation, Inc., * |
| * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
| * * |
| *****************************************************************************/ |
| #ifndef _DEBUG_H |
| #define _DEBUG_H |
| //***************************************************************************** |
| // |
| extern uint8_t AnalogNamesRead[2]; |
| //***************************************************************************** |
| // |
| void display_debug(void); |
| #endif |
| /Transportables_Koptertool/tags/V-0.1.2/displ_val.c |
|---|
| 0,0 → 1,88 |
| #include <avr/io.h> |
| #include <inttypes.h> |
| #include <stdlib.h> |
| #include <avr/pgmspace.h> |
| #include "main.h" |
| #include "lcd.h" |
| #include "usart.h" |
| // Insgesamt 32 Werte können angezeigt werden |
| // jeweils 8 Stück werden gleichzeitg angezeigt |
| // Auswahl über Tasten |
| uint8_t displ_page; |
| void displ_get_text (uint8_t number) |
| { |
| #if 0 |
| uint8_t text[17]; |
| uint8_t i; |
| buffer[0] = '#'; |
| buffer[1] = 'a'; |
| buffer[2] = 'a'; |
| buffer[3] = number; |
| buffer[4] = 0; |
| buffer[5] = 0; |
| // base64_send(6); |
| do |
| { |
| // get_message (); |
| } |
| while (buffer[1] != 'A'); |
| for (i = 0; i < 16; i++) |
| text[i] = buffer[i]; |
| text[16] = 0x00; |
| lcd_print_at (0, (number & 0x07), text, 0); |
| #endif |
| } |
| void displ_values (void) |
| { |
| #if 0 |
| uint8_t displ_page, i; |
| int16_t value; |
| uint8_t text[17]; |
| displ_page = 0; // Page 0..3 (4 Pages zu je 8 Werte) |
| lcd_cls (); // LCD löschen |
| do |
| { |
| for (i = 0; i < 8; i++) // Texte lesen und anzeigen |
| displ_get_text (i + displ_page * 8); |
| do |
| { |
| // get_message (); |
| if (buffer[1] == 'D') |
| { |
| for (i = 0; i < 8; i++) |
| { |
| value = buffer[i * 2 + displ_page * 16 + 2] + 256 * buffer[i * 2 + displ_page * 16 + 3]; |
| itoa (value, text, 10); |
| lcd_printp_at (14, i, PSTR(" "), 0); |
| lcd_print_at (14, i, text, 0); |
| } |
| } |
| } |
| while (key == key_nokey); |
| if (key == key_minus) |
| displ_page++; |
| if (key == key_plus) |
| displ_page--; |
| displ_page &= 0x03; |
| } |
| while (key != key_enter); |
| #endif |
| } |
| /Transportables_Koptertool/tags/V-0.1.2/displ_val.h |
|---|
| 0,0 → 1,9 |
| #ifndef _DISPL_VAL_H |
| #define _DISPL_VAL_H |
| //***************************************************************************** |
| // |
| void displ_values(void); |
| #endif |
| /Transportables_Koptertool/tags/V-0.1.2/display.c |
|---|
| 0,0 → 1,153 |
| /***************************************************************************** |
| * Copyright (C) 2009 Peter "woggle" Mack, mac@denich.net * |
| * * |
| * This program is free software; you can redistribute it and/or modify * |
| * it under the terms of the GNU General Public License as published by * |
| * the Free Software Foundation; either version 2 of the License. * |
| * * |
| * This program 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 General Public License for more details. * |
| * * |
| * You should have received a copy of the GNU General Public License * |
| * along with this program; if not, write to the * |
| * Free Software Foundation, Inc., * |
| * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
| * * |
| *****************************************************************************/ |
| #include <avr/io.h> |
| #include <avr/pgmspace.h> |
| #include <util/delay.h> |
| #include "main.h" |
| #include "lcd.h" |
| #include "usart.h" |
| #include "timer.h" |
| #include "mk-data-structs.h" |
| #define TIMEOUT 500 // 5 sec |
| void display_data (void) |
| { |
| uint8_t cmd; |
| uint8_t flag = 0;; |
| mode = 'H'; |
| lcd_cls (); |
| if (current_hardware == NC) |
| { |
| lcd_printpns_at (0, 7, PSTR(" \x1c \x1d Exit FC"), 0); |
| } |
| else |
| { |
| if (hardware == FC) |
| { |
| lcd_printpns_at (0, 7, PSTR(" \x1c \x1d Exit"), 0); |
| } |
| else |
| { |
| lcd_printpns_at (0, 7, PSTR(" \x1c \x1d Exit NC"), 0); |
| } |
| } |
| lcd_printp_at (0, 0, PSTR("Display"), 0); |
| rxd_buffer_locked = FALSE; |
| timer = TIMEOUT; |
| cmd = 0x03; // Home = first page |
| do |
| { |
| SendOutData('h', ADDRESS_ANY, 1, &cmd, 1); |
| cmd = 0; |
| //LED6_TOGGLE; |
| _delay_ms (250); |
| if (rxd_buffer_locked) |
| { |
| Decode64 (); |
| flag = 1; |
| if (!hardware) |
| { // hardware was not detected at startup |
| hardware = rxd_buffer[1] - 'a'; |
| if (hardware == NC) |
| { |
| lcd_printpns_at (0, 7, PSTR(" \x1c \x1d Exit FC"), 0); |
| current_hardware = NC; |
| } |
| else |
| { |
| lcd_printpns_at (0, 7, PSTR(" \x1c \x1d Exit"), 0); |
| current_hardware = FC; |
| } |
| } |
| rxd_buffer[24] = 0; |
| lcd_print_at (0, rxd_buffer[3] + 1, (uint8_t *) &rxd_buffer[4], 0); |
| rxd_buffer_locked = FALSE; |
| timer = TIMEOUT; |
| } |
| if (get_key_press (1 << KEY_MINUS)) |
| { |
| cmd = 0x01; // next page |
| LED1_TOGGLE; |
| //SendOutData('h', ADDRESS_ANY, 1, &cmd, 1); |
| //cmd = 0; |
| } |
| else if (get_key_press (1 << KEY_PLUS)) |
| { |
| cmd = 0x02; // previous page |
| LED2_TOGGLE; |
| //SendOutData('h', ADDRESS_ANY, 1, &cmd, 1); |
| //cmd = 0; |
| } |
| else if ((hardware == NC) && get_key_press (1 << KEY_ENTER)) |
| { |
| if (current_hardware == NC) |
| { |
| SwitchToFC(); |
| //timer = TIMEOUT; |
| lcd_printpns_at (0, 7, PSTR(" \x1c \x1d Exit NC"), 0); |
| LED3_TOGGLE; |
| } |
| else |
| { |
| SwitchToNC(); |
| //timer = TIMEOUT; |
| lcd_printpns_at (0, 7, PSTR(" \x1c \x1d Exit FC"), 0); |
| LED4_TOGGLE; |
| } |
| cmd = 0x03; // Home = first page |
| //SendOutData('h', ADDRESS_ANY, 1, &cmd, 1); |
| //cmd = 0; |
| } |
| } |
| while (!get_key_press (1 << KEY_ESC) && timer); |
| get_key_press(KEY_ALL); |
| mode = 0; |
| rxd_buffer_locked = FALSE; |
| if (!timer) |
| { // timeout occured |
| if (flag) |
| { |
| lcd_cls (); |
| } |
| lcd_printp_at (0, 2, PSTR("ERROR: no data"), 0); |
| timer = 100; |
| while (timer > 0); |
| } |
| LED_ALL_OFF; |
| } |
| /Transportables_Koptertool/tags/V-0.1.2/display.h |
|---|
| 0,0 → 1,27 |
| /***************************************************************************** |
| * Copyright (C) 2009 Peter "woggle" Mack, mac@denich.net * |
| * * |
| * This program is free software; you can redistribute it and/or modify * |
| * it under the terms of the GNU General Public License as published by * |
| * the Free Software Foundation; either version 2 of the License. * |
| * * |
| * This program 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 General Public License for more details. * |
| * * |
| * You should have received a copy of the GNU General Public License * |
| * along with this program; if not, write to the * |
| * Free Software Foundation, Inc., * |
| * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
| * * |
| *****************************************************************************/ |
| #ifndef _DISPLAY_H |
| #define _DISPLAY_H |
| //***************************************************************************** |
| // |
| void display_data (void); |
| #endif |
| /Transportables_Koptertool/tags/V-0.1.2/eeprom.c |
|---|
| 0,0 → 1,60 |
| /***************************************************************************** |
| * Copyright (C) 2010 Peter "woggle" Mack, mac@denich.net * |
| * * |
| * This program is free software; you can redistribute it and/or modify * |
| * it under the terms of the GNU General Public License as published by * |
| * the Free Software Foundation; either version 2 of the License. * |
| * * |
| * This program 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 General Public License for more details. * |
| * * |
| * You should have received a copy of the GNU General Public License * |
| * along with this program; if not, write to the * |
| * Free Software Foundation, Inc., * |
| * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
| * * |
| *****************************************************************************/ |
| #include <avr/io.h> |
| #include <avr/eeprom.h> |
| #include <avr/pgmspace.h> |
| #include "eeprom.h" |
| #include "lcd.h" |
| #include "lipo.h" |
| #include "timer.h" |
| //***************************************************************************** |
| // |
| unsigned char EEPromArray[E2END+1] EEMEM; |
| //***************************************************************************** |
| // |
| void WriteParameterDefaults (void) |
| { |
| eeprom_write_byte(&EEPromArray[EEPROM_ADDR_VALID], EEPROM_REV); |
| eeprom_write_byte(&EEPromArray[EEPROM_ADDR_ORIENTATION], 0); |
| eeprom_write_byte(&EEPromArray[EEPROM_ADDR_LIPO], 33); |
| } |
| //***************************************************************************** |
| // |
| void ReadParameter (void) |
| { |
| if ((eeprom_read_byte(&EEPromArray[EEPROM_ADDR_VALID])) != EEPROM_REV) |
| { |
| WriteParameterDefaults(); |
| } |
| LCD_ORIENTATION = eeprom_read_byte (&EEPromArray[EEPROM_ADDR_ORIENTATION]); |
| AD_WarnLevel = eeprom_read_byte (&EEPromArray[EEPROM_ADDR_LIPO]); |
| } |
| //***************************************************************************** |
| // |
| void WriteParameter (void) |
| { |
| eeprom_write_byte(&EEPromArray[EEPROM_ADDR_ORIENTATION], LCD_ORIENTATION); |
| eeprom_write_byte(&EEPromArray[EEPROM_ADDR_LIPO], AD_WarnLevel); |
| } |
| /Transportables_Koptertool/tags/V-0.1.2/eeprom.h |
|---|
| 0,0 → 1,34 |
| /***************************************************************************** |
| * Copyright (C) 2010 Peter "woggle" Mack, mac@denich.net * |
| * * |
| * This program is free software; you can redistribute it and/or modify * |
| * it under the terms of the GNU General Public License as published by * |
| * the Free Software Foundation; either version 2 of the License. * |
| * * |
| * This program 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 General Public License for more details. * |
| * * |
| * You should have received a copy of the GNU General Public License * |
| * along with this program; if not, write to the * |
| * Free Software Foundation, Inc., * |
| * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
| * * |
| *****************************************************************************/ |
| #ifndef _EEPROM_H |
| #define _EEPROM_H |
| #define EEPROM_REV 1 // please increment when adding or changing parameters! |
| #define EEPROM_ADDR_VALID 1 |
| #define EEPROM_ADDR_ORIENTATION 2 |
| #define EEPROM_ADDR_LIPO 3 |
| //***************************************************************************** |
| // |
| void ReadParameter (void); |
| void WriteParameter (void); |
| #endif |
| /Transportables_Koptertool/tags/V-0.1.2/font8X6.c |
|---|
| 0,0 → 1,158 |
| /***************************************************************************** |
| * Copyright (C) 2009 Peter "woggle" Mack, mac@denich.net * |
| * - font provided by Claas Anders "CaScAdE" Rathje * |
| * - umlauts and special characters by Peter "woggle" Mack * |
| * * |
| * This program is free software; you can redistribute it and/or modify * |
| * it under the terms of the GNU General Public License as published by * |
| * the Free Software Foundation; either version 2 of the License. * |
| * * |
| * This program 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 General Public License for more details. * |
| * * |
| * You should have received a copy of the GNU General Public License * |
| * along with this program; if not, write to the * |
| * Free Software Foundation, Inc., * |
| * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
| * * |
| *****************************************************************************/ |
| #include <avr/pgmspace.h> |
| // one byte is a column |
| // bit 7 is the bottom |
| prog_uint8_t font8x6[128][6] = |
| { |
| { 0x78,0x15,0x14,0x15,0x78,0x00 }, // ASCII - 0 'Ä' |
| { 0x20,0x55,0x54,0x55,0x78,0x00 }, // ASCII - 1 'ä' |
| { 0x38,0x45,0x44,0x45,0x38,0x00 }, // ASCII - 2 'Ö' |
| { 0x30,0x49,0x48,0x49,0x30,0x00 }, // ASCII - 3 'ö' |
| { 0x3c,0x41,0x40,0x41,0x3c,0x00 }, // ASCII - 4 'Ü' |
| { 0x38,0x41,0x40,0x21,0x78,0x00 }, // ASCII - 5 'ü' |
| { 0x7e,0x15,0x15,0x15,0x0a,0x00 }, // ASCII - 6 'ß' |
| { 0x00,0x00,0x00,0x00,0x00,0x00 }, // ASCII - 7 |
| { 0x00,0x00,0x00,0x00,0x00,0x00 }, // ASCII - 8 |
| { 0x00,0x00,0x00,0x00,0x00,0x00 }, // ASCII - 9 |
| { 0x00,0x00,0x00,0x00,0x00,0x00 }, // ASCII - 10 A (not useable) |
| { 0x00,0x00,0x00,0x00,0x00,0x00 }, // ASCII - 11 B |
| { 0x10,0x38,0x54,0x10,0x10,0x1e }, // ASCII - 12 C Enter Symbol |
| { 0x00,0x00,0x00,0x00,0x00,0x00 }, // ASCII - 13 D (not useable) |
| { 0x10,0x10,0x10,0x10,0x10,0x10 }, // ASCII - 14 E hor. line |
| { 0x10,0x10,0x10,0x7c,0x10,0x10 }, // ASCII - 15 F hor. line with tick mark |
| { 0x00,0x00,0x00,0x00,0x00,0x00 }, // ASCII - 16 10 |
| { 0x00,0x00,0x00,0x00,0x00,0x00 }, // ASCII - 17 11 |
| { 0x00,0x00,0x00,0x00,0x00,0x00 }, // ASCII - 18 12 |
| { 0x00,0x00,0x00,0x00,0x00,0x00 }, // ASCII - 19 13 |
| { 0x00,0x00,0x00,0x00,0x00,0x00 }, // ASCII - 20 14 |
| { 0x00,0x00,0x00,0x00,0x00,0x00 }, // ASCII - 21 15 |
| { 0x04,0x02,0x7f,0x02,0x04,0x00 }, // ASCII - 22 16 Arrow up |
| { 0x10,0x20,0x7f,0x20,0x10,0x00 }, // ASCII - 23 17 Arrow down |
| { 0x10,0x38,0x54,0x10,0x10,0x10 }, // ASCII - 24 18 <- |
| { 0x10,0x10,0x10,0x54,0x38,0x10 }, // ASCII - 25 19 -> |
| { 0x10,0x18,0x1c,0x1c,0x18,0x10 }, // ASCII - 26 1A ^ |
| { 0x08,0x18,0x38,0x38,0x18,0x08 }, // ASCII - 27 1B v |
| { 0x00,0x08,0x1c,0x3e,0x7f,0x00 }, // ASCII - 28 1C < |
| { 0x00,0x7f,0x3e,0x1c,0x08,0x00 }, // ASCII - 29 1D > |
| { 0x06,0x09,0x09,0x09,0x06,0x00 }, // ASCII - 30 1E '°' |
| { 0x06,0x49,0x7d,0x49,0x06,0x00 }, // ASCII - 31 1F RC-Tx |
| { 0x00,0x00,0x00,0x00,0x00,0x00 }, // ASCII - 32 20 ' ' |
| { 0x00,0x00,0x2f,0x00,0x00,0x00 }, // ASCII - 33 21 '!' |
| { 0x00,0x07,0x00,0x07,0x00,0x00 }, // ASCII - 34 22 '"' |
| { 0x14,0x7f,0x14,0x7f,0x14,0x00 }, // ASCII - 35 23 '#' |
| { 0x24,0x2a,0x6b,0x2a,0x12,0x00 }, // ASCII - 36 24 '$' |
| { 0x23,0x13,0x08,0x64,0x62,0x00 }, // ASCII - 37 25 '%' |
| { 0x36,0x49,0x55,0x22,0x50,0x00 }, // ASCII - 38 26 '&' |
| { 0x00,0x05,0x03,0x00,0x00,0x00 }, // ASCII - 39 27 ''' |
| { 0x00,0x1c,0x22,0x41,0x00,0x00 }, // ASCII - 40 28 '(' |
| { 0x00,0x41,0x22,0x1c,0x00,0x00 }, // ASCII - 41 29 ')' |
| { 0x14,0x08,0x3e,0x08,0x14,0x00 }, // ASCII - 42 2a '*' |
| { 0x08,0x08,0x3e,0x08,0x08,0x00 }, // ASCII - 43 2b '+' |
| { 0x00,0x50,0x30,0x00,0x00,0x00 }, // ASCII - 44 2c ',' |
| { 0x08,0x08,0x08,0x08,0x08,0x00 }, // ASCII - 45 2d '-' |
| { 0x00,0x60,0x60,0x00,0x00,0x00 }, // ASCII - 46 2e '.' |
| { 0x20,0x10,0x08,0x04,0x02,0x00 }, // ASCII - 47 2f '/' |
| { 0x3e,0x51,0x49,0x45,0x3e,0x00 }, // ASCII - 48 30 '0' |
| { 0x00,0x42,0x7f,0x40,0x00,0x00 }, // ASCII - 49 31 '1' |
| { 0x42,0x61,0x51,0x49,0x46,0x00 }, // ASCII - 50 32 '2' |
| { 0x21,0x41,0x45,0x4b,0x31,0x00 }, // ASCII - 51 33 '3' |
| { 0x18,0x14,0x12,0x7f,0x10,0x00 }, // ASCII - 52 34 '4' |
| { 0x27,0x45,0x45,0x45,0x39,0x00 }, // ASCII - 53 35 '5' |
| { 0x3c,0x4a,0x49,0x49,0x30,0x00 }, // ASCII - 54 36 '6' |
| { 0x03,0x01,0x71,0x09,0x07,0x00 }, // ASCII - 55 37 '7' |
| { 0x36,0x49,0x49,0x49,0x36,0x00 }, // ASCII - 56 38 '8' |
| { 0x06,0x49,0x49,0x29,0x1e,0x00 }, // ASCII - 57 39 '9' |
| { 0x00,0x36,0x36,0x00,0x00,0x00 }, // ASCII - 58 3a ':' |
| { 0x00,0x56,0x36,0x00,0x00,0x00 }, // ASCII - 59 3b ';' |
| { 0x08,0x14,0x22,0x41,0x00,0x00 }, // ASCII - 60 3c '<' |
| { 0x14,0x14,0x14,0x14,0x14,0x00 }, // ASCII - 61 3d '=' |
| { 0x00,0x41,0x22,0x14,0x08,0x00 }, // ASCII - 62 3e '>' |
| { 0x02,0x01,0x51,0x09,0x06,0x00 }, // ASCII - 63 3f '?' |
| { 0x32,0x49,0x79,0x41,0x3e,0x00 }, // ASCII - 64 40 '@' |
| { 0x7e,0x11,0x11,0x11,0x7e,0x00 }, // ASCII - 65 41 'A' |
| { 0x7f,0x49,0x49,0x49,0x36,0x00 }, // ASCII - 66 42 'B' |
| { 0x3e,0x41,0x41,0x41,0x22,0x00 }, // ASCII - 67 43 'C' |
| { 0x7f,0x41,0x41,0x22,0x1c,0x00 }, // ASCII - 68 44 'D' |
| { 0x7f,0x49,0x49,0x49,0x41,0x00 }, // ASCII - 69 45 'E' |
| { 0x7f,0x09,0x09,0x09,0x01,0x00 }, // ASCII - 70 46 'F' |
| { 0x3e,0x41,0x49,0x49,0x7a,0x00 }, // ASCII - 71 47 'G' |
| { 0x7f,0x08,0x08,0x08,0x7f,0x00 }, // ASCII - 72 48 'H' |
| { 0x00,0x41,0x7f,0x41,0x00,0x00 }, // ASCII - 73 49 'I' |
| { 0x20,0x40,0x41,0x3f,0x01,0x00 }, // ASCII - 74 4a 'J' |
| { 0x7f,0x08,0x14,0x22,0x41,0x00 }, // ASCII - 75 4b 'K' |
| { 0x7f,0x40,0x40,0x40,0x40,0x00 }, // ASCII - 76 4c 'L' |
| { 0x7f,0x02,0x0c,0x02,0x7f,0x00 }, // ASCII - 77 4d 'M' |
| { 0x7f,0x04,0x08,0x10,0x7f,0x00 }, // ASCII - 78 4e 'N' |
| { 0x3e,0x41,0x41,0x41,0x3e,0x00 }, // ASCII - 79 4f 'O' |
| { 0x7f,0x09,0x09,0x09,0x06,0x00 }, // ASCII - 80 50 'P' |
| { 0x3e,0x41,0x51,0x21,0x5e,0x00 }, // ASCII - 81 51 'Q' |
| { 0x7f,0x09,0x19,0x29,0x46,0x00 }, // ASCII - 82 52 'R' |
| { 0x46,0x49,0x49,0x49,0x31,0x00 }, // ASCII - 83 53 'S' |
| { 0x01,0x01,0x7f,0x01,0x01,0x00 }, // ASCII - 84 54 'T' |
| { 0x3f,0x40,0x40,0x40,0x3f,0x00 }, // ASCII - 85 55 'U' |
| { 0x1f,0x20,0x40,0x20,0x1f,0x00 }, // ASCII - 86 56 'V' |
| { 0x3f,0x40,0x38,0x40,0x3f,0x00 }, // ASCII - 87 57 'W' |
| { 0x63,0x14,0x08,0x14,0x63,0x00 }, // ASCII - 88 58 'X' |
| { 0x07,0x08,0x70,0x08,0x07,0x00 }, // ASCII - 89 59 'Y' |
| { 0x61,0x51,0x49,0x45,0x43,0x00 }, // ASCII - 90 5a 'Z' |
| { 0x7f,0x41,0x41,0x00,0x00,0x00 }, // ASCII - 91 5b '[' |
| { 0x02,0x04,0x08,0x10,0x20,0x00 }, // ASCII - 92 5c '\' |
| { 0x00,0x41,0x41,0x7f,0x00,0x00 }, // ASCII - 93 5d ']' |
| { 0x04,0x02,0x01,0x02,0x04,0x00 }, // ASCII - 94 5e '^' |
| { 0x40,0x40,0x40,0x40,0x40,0x00 }, // ASCII - 95 5f '_' |
| { 0x00,0x01,0x02,0x04,0x00,0x00 }, // ASCII - 96 60 '`' |
| { 0x20,0x54,0x54,0x54,0x78,0x00 }, // ASCII - 97 61 'a' |
| { 0x7f,0x48,0x44,0x44,0x38,0x00 }, // ASCII - 98 62 'b' |
| { 0x38,0x44,0x44,0x44,0x20,0x00 }, // ASCII - 99 63 'c' |
| { 0x38,0x44,0x44,0x48,0x7f,0x00 }, // ASCII - 100 64 'd' |
| { 0x38,0x54,0x54,0x54,0x18,0x00 }, // ASCII - 101 65 'e' |
| { 0x08,0x7e,0x09,0x01,0x02,0x00 }, // ASCII - 102 66 'f' |
| { 0x0c,0x52,0x52,0x52,0x3e,0x00 }, // ASCII - 103 67 'g' |
| { 0x7f,0x08,0x04,0x04,0x78,0x00 }, // ASCII - 104 68 'h' |
| { 0x00,0x44,0x7d,0x40,0x00,0x00 }, // ASCII - 105 69 'i' |
| { 0x20,0x40,0x44,0x3d,0x00,0x00 }, // ASCII - 106 6a 'j' |
| { 0x7f,0x10,0x28,0x44,0x00,0x00 }, // ASCII - 107 6b 'k' |
| { 0x00,0x41,0x7f,0x40,0x00,0x00 }, // ASCII - 108 6c 'l' |
| { 0x7c,0x04,0x18,0x04,0x78,0x00 }, // ASCII - 109 6d 'm' |
| { 0x7c,0x08,0x04,0x04,0x78,0x00 }, // ASCII - 110 6e 'n' |
| { 0x38,0x44,0x44,0x44,0x38,0x00 }, // ASCII - 111 6f 'o' |
| { 0x7c,0x14,0x14,0x14,0x08,0x00 }, // ASCII - 112 70 'p' |
| { 0x08,0x14,0x14,0x18,0x7c,0x00 }, // ASCII - 113 71 'q' |
| { 0x7c,0x08,0x04,0x04,0x08,0x00 }, // ASCII - 114 72 'r' |
| { 0x48,0x54,0x54,0x54,0x20,0x00 }, // ASCII - 115 73 's' |
| { 0x04,0x3f,0x44,0x40,0x20,0x00 }, // ASCII - 116 74 't' |
| { 0x3c,0x40,0x40,0x20,0x7c,0x00 }, // ASCII - 117 75 'u' |
| { 0x1c,0x20,0x40,0x20,0x1c,0x00 }, // ASCII - 118 76 'v' |
| { 0x3c,0x40,0x38,0x40,0x3c,0x00 }, // ASCII - 119 77 'w' |
| { 0x44,0x28,0x10,0x28,0x44,0x00 }, // ASCII - 120 78 'x' |
| { 0x0c,0x50,0x50,0x50,0x3c,0x00 }, // ASCII - 121 79 'y' |
| { 0x44,0x64,0x54,0x4c,0x44,0x00 }, // ASCII - 122 7a 'z' |
| { 0x00,0x08,0x36,0x41,0x00,0x00 }, // ASCII - 123 7b '{' |
| { 0x00,0x00,0x7f,0x00,0x00,0x00 }, // ASCII - 124 7c '|' |
| { 0x00,0x41,0x36,0x08,0x00,0x00 }, // ASCII - 125 7d '}' |
| { 0x08,0x08,0x2a,0x1c,0x08,0x00 }, // ASCII - 126 7e -> |
| { 0x08,0x1c,0x2a,0x08,0x08,0x00 }, // ASCII - 127 7f <- |
| }; |
| /Transportables_Koptertool/tags/V-0.1.2/font8x6.h |
|---|
| 0,0 → 1,31 |
| /***************************************************************************** |
| * Copyright (C) 2009 Peter "woggle" Mack, mac@denich.net * |
| * - font provided by Claas Anders "CaScAdE" Rathje * |
| * - umlauts and special characters by Peter "woggle" Mack * |
| * * |
| * This program is free software; you can redistribute it and/or modify * |
| * it under the terms of the GNU General Public License as published by * |
| * the Free Software Foundation; either version 2 of the License. * |
| * * |
| * This program 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 General Public License for more details. * |
| * * |
| * You should have received a copy of the GNU General Public License * |
| * along with this program; if not, write to the * |
| * Free Software Foundation, Inc., * |
| * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
| * * |
| *****************************************************************************/ |
| #ifndef _FONT8X6_H |
| #define _FONT8X6_H |
| #include <avr/pgmspace.h> |
| //***************************************************************************** |
| // |
| extern prog_uint8_t font8x6[128][6]; |
| #endif |
| /Transportables_Koptertool/tags/V-0.1.2/font8x8.c |
|---|
| 0,0 → 1,271 |
| /* |
| * font8x8.c |
| * LCD-OSD |
| * |
| * Created by Peter Mack on 26.12.09. |
| * Copyright 2009 SCS GmbH & Co. KG. All rights reserved. |
| * |
| */ |
| #include <avr/pgmspace.h> |
| prog_uint8_t font8x8[256][8]={ |
| {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x00 |
| {0x7E,0x81,0x95,0xB1,0xB1,0x95,0x81,0x7E}, // 0x01 |
| {0x7E,0xFF,0xEB,0xCF,0xCF,0xEB,0xFF,0x7E}, // 0x02 |
| {0x0E,0x1F,0x3F,0x7E,0x3F,0x1F,0x0E,0x00}, // 0x03 |
| {0x08,0x1C,0x3E,0x7F,0x3E,0x1C,0x08,0x00}, // 0x04 |
| {0x38,0x3A,0x9F,0xFF,0x9F,0x3A,0x38,0x00}, // 0x05 |
| {0x10,0x38,0xBC,0xFF,0xBC,0x38,0x10,0x00}, // 0x06 |
| {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x07 |
| {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x08 |
| {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x09 |
| {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x0A |
| {0x70,0xF8,0x88,0x88,0xFD,0x7F,0x07,0x0F}, // 0x0B |
| {0x00,0x4E,0x5F,0xF1,0xF1,0x5F,0x4E,0x00}, // 0x0C |
| {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x0D |
| {0xC0,0xFF,0x7F,0x05,0x05,0x65,0x7F,0x3F}, // 0x0E |
| {0x99,0x5A,0x3C,0xE7,0xE7,0x3C,0x5A,0x99}, // 0x0F |
| {0x7F,0x3E,0x3E,0x1C,0x1C,0x08,0x08,0x00}, // 0x10 |
| {0x08,0x08,0x1C,0x1C,0x3E,0x3E,0x7F,0x00}, // 0x11 |
| {0x00,0x24,0x66,0xFF,0xFF,0x66,0x24,0x00}, // 0x12 |
| {0x00,0x5F,0x5F,0x00,0x00,0x5F,0x5F,0x00}, // 0x13 |
| {0x06,0x0F,0x09,0x7F,0x7F,0x01,0x7F,0x7F}, // 0x14 |
| {0xDA,0xBF,0xA5,0xA5,0xFD,0x59,0x03,0x02}, // 0x15 |
| {0x00,0x70,0x70,0x70,0x70,0x70,0x70,0x00}, // 0x16 |
| {0x80,0x94,0xB6,0xFF,0xFF,0xB6,0x94,0x80}, // 0x17 |
| {0x00,0x04,0x06,0x7F,0x7F,0x06,0x04,0x00}, // 0x18 |
| {0x00,0x10,0x30,0x7F,0x7F,0x30,0x10,0x00}, // 0x19 |
| {0x08,0x08,0x08,0x2A,0x3E,0x1C,0x08,0x00}, // 0x1A |
| {0x08,0x1C,0x3E,0x2A,0x08,0x08,0x08,0x00}, // 0x1B |
| {0x3C,0x3C,0x20,0x20,0x20,0x20,0x20,0x00}, // 0x1C |
| {0x08,0x1C,0x3E,0x08,0x08,0x3E,0x1C,0x08}, // 0x1D |
| {0x30,0x38,0x3C,0x3E,0x3E,0x3C,0x38,0x30}, // 0x1E |
| {0x06,0x0E,0x1E,0x3E,0x3E,0x1E,0x0E,0x06}, // 0x1F |
| {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x20 |
| {0x00,0x06,0x5F,0x5F,0x06,0x00,0x00,0x00}, // 0x21 |
| {0x00,0x07,0x07,0x00,0x07,0x07,0x00,0x00}, // 0x22 |
| {0x14,0x7F,0x7F,0x14,0x7F,0x7F,0x14,0x00}, // 0x23 |
| {0x24,0x2E,0x6B,0x6B,0x3A,0x12,0x00,0x00}, // 0x24 |
| {0x46,0x66,0x30,0x18,0x0C,0x66,0x62,0x00}, // 0x25 |
| {0x30,0x7A,0x4F,0x5D,0x37,0x7A,0x48,0x00}, // 0x26 |
| {0x04,0x07,0x03,0x00,0x00,0x00,0x00,0x00}, // 0x27 |
| {0x00,0x1C,0x3E,0x63,0x41,0x00,0x00,0x00}, // 0x28 |
| {0x00,0x41,0x63,0x3E,0x1C,0x00,0x00,0x00}, // 0x29 |
| {0x08,0x2A,0x3E,0x1C,0x1C,0x3E,0x2A,0x08}, // 0x2A |
| {0x08,0x08,0x3E,0x3E,0x08,0x08,0x00,0x00}, // 0x2B |
| {0x00,0xA0,0xE0,0x60,0x00,0x00,0x00,0x00}, // 0x2C |
| {0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00}, // 0x2D |
| {0x00,0x00,0x60,0x60,0x00,0x00,0x00,0x00}, // 0x2E |
| {0x60,0x30,0x18,0x0C,0x06,0x03,0x01,0x00}, // 0x2F |
| {0x3E,0x7F,0x59,0x4D,0x7F,0x3E,0x00,0x00}, // 0x30 |
| {0x42,0x42,0x7F,0x7F,0x40,0x40,0x00,0x00}, // 0x31 |
| {0x62,0x73,0x59,0x49,0x6F,0x66,0x00,0x00}, // 0x32 |
| {0x22,0x63,0x49,0x49,0x7F,0x36,0x00,0x00}, // 0x33 |
| {0x18,0x1C,0x16,0x13,0x7F,0x7F,0x10,0x00}, // 0x34 |
| {0x27,0x67,0x45,0x45,0x7D,0x39,0x00,0x00}, // 0x35 |
| {0x3C,0x7E,0x4B,0x49,0x79,0x30,0x00,0x00}, // 0x36 |
| {0x03,0x63,0x71,0x19,0x0F,0x07,0x00,0x00}, // 0x37 |
| {0x36,0x7F,0x49,0x49,0x7F,0x36,0x00,0x00}, // 0x38 |
| {0x06,0x4F,0x49,0x69,0x3F,0x1E,0x00,0x00}, // 0x39 |
| {0x00,0x00,0x6C,0x6C,0x00,0x00,0x00,0x00}, // 0x3A |
| {0x00,0xA0,0xEC,0x6C,0x00,0x00,0x00,0x00}, // 0x3B |
| {0x08,0x1C,0x36,0x63,0x41,0x00,0x00,0x00}, // 0x3C |
| {0x14,0x14,0x14,0x14,0x14,0x14,0x00,0x00}, // 0x3D |
| {0x00,0x41,0x63,0x36,0x1C,0x08,0x00,0x00}, // 0x3E |
| {0x02,0x03,0x51,0x59,0x0F,0x06,0x00,0x00}, // 0x3F |
| {0x3E,0x7F,0x41,0x5D,0x5D,0x1F,0x1E,0x00}, // 0x40 |
| {0x7C,0x7E,0x13,0x13,0x7E,0x7C,0x00,0x00}, // 0x41 |
| {0x41,0x7F,0x7F,0x49,0x49,0x7F,0x36,0x00}, // 0x42 |
| {0x1C,0x3E,0x63,0x41,0x41,0x63,0x22,0x00}, // 0x43 |
| {0x41,0x7F,0x7F,0x41,0x63,0x7F,0x1C,0x00}, // 0x44 |
| {0x41,0x7F,0x7F,0x49,0x5D,0x41,0x63,0x00}, // 0x45 |
| {0x41,0x7F,0x7F,0x49,0x1D,0x01,0x03,0x00}, // 0x46 |
| {0x1C,0x3E,0x63,0x41,0x51,0x73,0x72,0x00}, // 0x47 |
| {0x7F,0x7F,0x08,0x08,0x7F,0x7F,0x00,0x00}, // 0x48 |
| {0x00,0x41,0x7F,0x7F,0x41,0x00,0x00,0x00}, // 0x49 |
| {0x30,0x70,0x40,0x41,0x7F,0x3F,0x01,0x00}, // 0x4A |
| {0x41,0x7F,0x7F,0x08,0x1C,0x77,0x63,0x00}, // 0x4B |
| {0x41,0x7F,0x7F,0x41,0x40,0x60,0x70,0x00}, // 0x4C |
| {0x7F,0x7F,0x06,0x0C,0x06,0x7F,0x7F,0x00}, // 0x4D |
| {0x7F,0x7F,0x06,0x0C,0x18,0x7F,0x7F,0x00}, // 0x4E |
| {0x1C,0x3E,0x63,0x41,0x63,0x3E,0x1C,0x00}, // 0x4F |
| {0x41,0x7F,0x7F,0x49,0x09,0x0F,0x06,0x00}, // 0x50 |
| {0x1E,0x3F,0x21,0x71,0x7F,0x5E,0x00,0x00}, // 0x51 |
| {0x41,0x7F,0x7F,0x19,0x39,0x6F,0x46,0x00}, // 0x52 |
| {0x26,0x67,0x4D,0x59,0x7B,0x32,0x00,0x00}, // 0x53 |
| {0x03,0x41,0x7F,0x7F,0x41,0x03,0x00,0x00}, // 0x54 |
| {0x7F,0x7F,0x40,0x40,0x7F,0x7F,0x00,0x00}, // 0x55 |
| {0x1F,0x3F,0x60,0x60,0x3F,0x1F,0x00,0x00}, // 0x56 |
| {0x7F,0x7F,0x30,0x18,0x30,0x7F,0x7F,0x00}, // 0x57 |
| {0x63,0x77,0x1C,0x08,0x1C,0x77,0x63,0x00}, // 0x58 |
| {0x07,0x4F,0x78,0x78,0x4F,0x07,0x00,0x00}, // 0x59 |
| {0x67,0x73,0x59,0x4D,0x47,0x63,0x71,0x00}, // 0x5A |
| {0x00,0x7F,0x7F,0x41,0x41,0x00,0x00,0x00}, // 0x5B |
| {0x01,0x03,0x06,0x0C,0x18,0x30,0x60,0x00}, // 0x5C |
| {0x00,0x41,0x41,0x7F,0x7F,0x00,0x00,0x00}, // 0x5D |
| {0x08,0x0C,0x06,0x03,0x06,0x0C,0x08,0x00}, // 0x5E |
| {0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80}, // 0x5F |
| {0x00,0x00,0x03,0x07,0x04,0x00,0x00,0x00}, // 0x60 |
| {0x20,0x74,0x54,0x54,0x3C,0x78,0x40,0x00}, // 0x61 |
| {0x41,0x3F,0x7F,0x44,0x44,0x7C,0x38,0x00}, // 0x62 |
| {0x38,0x7C,0x44,0x44,0x6C,0x28,0x00,0x00}, // 0x63 |
| {0x30,0x78,0x48,0x49,0x3F,0x7F,0x40,0x00}, // 0x64 |
| {0x38,0x7C,0x54,0x54,0x5C,0x18,0x00,0x00}, // 0x65 |
| {0x48,0x7E,0x7F,0x49,0x03,0x02,0x00,0x00}, // 0x66 |
| {0x98,0xBC,0xA4,0xA4,0xF8,0x7C,0x04,0x00}, // 0x67 |
| {0x41,0x7F,0x7F,0x08,0x04,0x7C,0x78,0x00}, // 0x68 |
| {0x00,0x44,0x7D,0x7D,0x40,0x00,0x00,0x00}, // 0x69 |
| {0x40,0xC4,0x84,0xFD,0x7D,0x00,0x00,0x00}, // 0x6A |
| {0x41,0x7F,0x7F,0x10,0x38,0x6C,0x44,0x00}, // 0x6B |
| {0x00,0x41,0x7F,0x7F,0x40,0x00,0x00,0x00}, // 0x6C |
| {0x7C,0x7C,0x0C,0x18,0x0C,0x7C,0x78,0x00}, // 0x6D |
| {0x7C,0x7C,0x04,0x04,0x7C,0x78,0x00,0x00}, // 0x6E |
| {0x38,0x7C,0x44,0x44,0x7C,0x38,0x00,0x00}, // 0x6F |
| {0x84,0xFC,0xF8,0xA4,0x24,0x3C,0x18,0x00}, // 0x70 |
| {0x18,0x3C,0x24,0xA4,0xF8,0xFC,0x84,0x00}, // 0x71 |
| {0x44,0x7C,0x78,0x44,0x1C,0x18,0x00,0x00}, // 0x72 |
| {0x48,0x5C,0x54,0x54,0x74,0x24,0x00,0x00}, // 0x73 |
| {0x00,0x04,0x3E,0x7F,0x44,0x24,0x00,0x00}, // 0x74 |
| {0x3C,0x7C,0x40,0x40,0x3C,0x7C,0x40,0x00}, // 0x75 |
| {0x1C,0x3C,0x60,0x60,0x3C,0x1C,0x00,0x00}, // 0x76 |
| {0x3C,0x7C,0x60,0x30,0x60,0x7C,0x3C,0x00}, // 0x77 |
| {0x44,0x6C,0x38,0x10,0x38,0x6C,0x44,0x00}, // 0x78 |
| {0x9C,0xBC,0xA0,0xA0,0xFC,0x7C,0x00,0x00}, // 0x79 |
| {0x4C,0x64,0x74,0x5C,0x4C,0x64,0x00,0x00}, // 0x7A |
| {0x08,0x08,0x3E,0x77,0x41,0x41,0x00,0x00}, // 0x7B |
| {0x00,0x00,0x00,0x77,0x77,0x00,0x00,0x00}, // 0x7C |
| {0x41,0x41,0x77,0x3E,0x08,0x08,0x00,0x00}, // 0x7D |
| {0x02,0x03,0x01,0x03,0x02,0x03,0x01,0x00}, // 0x7E |
| {0x78,0x7C,0x46,0x43,0x46,0x7C,0x78,0x00}, // 0x7F |
| {0x1E,0xBF,0xE1,0x61,0x33,0x12,0x00,0x00}, // 0x80 |
| {0x3A,0x7A,0x40,0x40,0x7A,0x7A,0x40,0x00}, // 0x81 |
| {0x38,0x7C,0x56,0x57,0x5D,0x18,0x00,0x00}, // 0x82 |
| {0x02,0x23,0x75,0x55,0x55,0x7D,0x7B,0x42}, // 0x83 |
| {0x21,0x75,0x54,0x54,0x7D,0x79,0x40,0x00}, // 0x84 |
| {0x20,0x75,0x57,0x56,0x7C,0x78,0x40,0x00}, // 0x85 |
| {0x00,0x22,0x77,0x55,0x55,0x7F,0x7A,0x40}, // 0x86 |
| {0x1C,0xBE,0xE2,0x62,0x36,0x14,0x00,0x00}, // 0x87 |
| {0x02,0x3B,0x7D,0x55,0x55,0x5D,0x1B,0x02}, // 0x88 |
| {0x39,0x7D,0x54,0x54,0x5D,0x19,0x00,0x00}, // 0x89 |
| {0x38,0x7D,0x57,0x56,0x5C,0x18,0x00,0x00}, // 0x8A |
| {0x01,0x45,0x7C,0x7C,0x41,0x01,0x00,0x00}, // 0x8B |
| {0x02,0x03,0x45,0x7D,0x7D,0x43,0x02,0x00}, // 0x8C |
| {0x00,0x45,0x7F,0x7E,0x40,0x00,0x00,0x00}, // 0x8D |
| {0x79,0x7D,0x26,0x26,0x7D,0x79,0x00,0x00}, // 0x8E |
| {0x70,0x7A,0x2D,0x2D,0x7A,0x70,0x00,0x00}, // 0x8F |
| {0x44,0x7C,0x7E,0x57,0x55,0x44,0x00,0x00}, // 0x90 |
| {0x20,0x74,0x54,0x54,0x7C,0x7C,0x54,0x54}, // 0x91 |
| {0x7C,0x7E,0x0B,0x09,0x7F,0x7F,0x49,0x00}, // 0x92 |
| {0x32,0x7B,0x49,0x49,0x7B,0x32,0x00,0x00}, // 0x93 |
| {0x32,0x7A,0x48,0x48,0x7A,0x32,0x00,0x00}, // 0x94 |
| {0x30,0x79,0x4B,0x4A,0x78,0x30,0x00,0x00}, // 0x95 |
| {0x3A,0x7B,0x41,0x41,0x7B,0x7A,0x40,0x00}, // 0x96 |
| {0x38,0x79,0x43,0x42,0x78,0x78,0x40,0x00}, // 0x97 |
| {0xBA,0xBA,0xA0,0xA0,0xFA,0x7A,0x00,0x00}, // 0x98 |
| {0x39,0x7D,0x44,0x44,0x44,0x7D,0x39,0x00}, // 0x99 |
| {0x3D,0x7D,0x40,0x40,0x7D,0x3D,0x00,0x00}, // 0x9A |
| {0x38,0x7C,0x64,0x54,0x4C,0x7C,0x38,0x00}, // 0x9B |
| {0x68,0x7E,0x7F,0x49,0x43,0x66,0x20,0x00}, // 0x9C |
| {0x5C,0x3E,0x73,0x49,0x67,0x3E,0x1D,0x00}, // 0x9D |
| {0x44,0x6C,0x38,0x38,0x6C,0x44,0x00,0x00}, // 0x9E |
| {0x40,0xC8,0x88,0xFE,0x7F,0x09,0x0B,0x02}, // 0x9F |
| {0x20,0x74,0x56,0x57,0x7D,0x78,0x40,0x00}, // 0xA0 |
| {0x00,0x44,0x7E,0x7F,0x41,0x00,0x00,0x00}, // 0xA1 |
| {0x30,0x78,0x48,0x4A,0x7B,0x31,0x00,0x00}, // 0xA2 |
| {0x38,0x78,0x40,0x42,0x7B,0x79,0x40,0x00}, // 0xA3 |
| {0x7A,0x7B,0x09,0x0B,0x7A,0x73,0x01,0x00}, // 0xA4 |
| {0x7A,0x7B,0x19,0x33,0x7A,0x7B,0x01,0x00}, // 0xA5 |
| {0x00,0x26,0x2F,0x29,0x2F,0x2F,0x28,0x00}, // 0xA6 |
| {0x00,0x26,0x2F,0x29,0x29,0x2F,0x26,0x00}, // 0xA7 |
| {0x30,0x78,0x4D,0x45,0x60,0x20,0x00,0x00}, // 0xA8 |
| {0x1C,0x22,0x7D,0x4B,0x5B,0x65,0x22,0x1C}, // 0xA9 |
| {0x08,0x08,0x08,0x08,0x38,0x38,0x00,0x00}, // 0xAA |
| {0x61,0x3F,0x1F,0xCC,0xEE,0xAB,0xB9,0x90}, // 0xAB |
| {0x61,0x3F,0x1F,0x4C,0x66,0x73,0xD9,0xF8}, // 0xAC |
| {0x00,0x00,0x60,0xFA,0xFA,0x60,0x00,0x00}, // 0xAD |
| {0x08,0x1C,0x36,0x22,0x08,0x1C,0x36,0x22}, // 0xAE |
| {0x22,0x36,0x1C,0x08,0x22,0x36,0x1C,0x08}, // 0xAF |
| {0xAA,0x00,0x55,0x00,0xAA,0x00,0x55,0x00}, // 0xB0 |
| {0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55}, // 0xB1 |
| {0x55,0xFF,0xAA,0xFF,0x55,0xFF,0xAA,0xFF}, // 0xB2 |
| {0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00}, // 0xB3 |
| {0x10,0x10,0x10,0xFF,0xFF,0x00,0x00,0x00}, // 0xB4 |
| {0x70,0x78,0x2C,0x2E,0x7B,0x71,0x00,0x00}, // 0xB5 |
| {0x72,0x79,0x2D,0x2D,0x79,0x72,0x00,0x00}, // 0xB6 |
| {0x71,0x7B,0x2E,0x2C,0x78,0x70,0x00,0x00}, // 0xB7 |
| {0x1C,0x22,0x5D,0x55,0x55,0x41,0x22,0x1C}, // 0xB8 |
| {0x14,0x14,0xF7,0xF7,0x00,0xFF,0xFF,0x00}, // 0xB9 |
| {0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00}, // 0xBA |
| {0x14,0x14,0xF4,0xF4,0x04,0xFC,0xFC,0x00}, // 0xBB |
| {0x14,0x14,0x17,0x17,0x10,0x1F,0x1F,0x00}, // 0xBC |
| {0x18,0x3C,0x24,0xE7,0xE7,0x24,0x24,0x00}, // 0xBD |
| {0x2B,0x2F,0xFC,0xFC,0x2F,0x2B,0x00,0x00}, // 0xBE |
| {0x10,0x10,0x10,0xF0,0xF0,0x00,0x00,0x00}, // 0xBF |
| {0x00,0x00,0x00,0x1F,0x1F,0x10,0x10,0x10}, // 0xC0 |
| {0x10,0x10,0x10,0x1F,0x1F,0x10,0x10,0x10}, // 0xC1 |
| {0x10,0x10,0x10,0xF0,0xF0,0x10,0x10,0x10}, // 0xC2 |
| {0x00,0x00,0x00,0xFF,0xFF,0x10,0x10,0x10}, // 0xC3 |
| {0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10}, // 0xC4 |
| {0x10,0x10,0x10,0xFF,0xFF,0x10,0x10,0x10}, // 0xC5 |
| {0x22,0x77,0x55,0x57,0x7E,0x7B,0x41,0x00}, // 0xC6 |
| {0x72,0x7B,0x2D,0x2F,0x7A,0x73,0x01,0x00}, // 0xC7 |
| {0x00,0x00,0x1F,0x1F,0x10,0x17,0x17,0x14}, // 0xC8 |
| {0x00,0x00,0xFC,0xFC,0x04,0xF4,0xF4,0x14}, // 0xC9 |
| {0x14,0x14,0x17,0x17,0x10,0x17,0x17,0x14}, // 0xCA |
| {0x14,0x14,0xF4,0xF4,0x04,0xF4,0xF4,0x14}, // 0xCB |
| {0x00,0x00,0xFF,0xFF,0x00,0xF7,0xF7,0x14}, // 0xCC |
| {0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14}, // 0xCD |
| {0x14,0x14,0xF7,0xF7,0x00,0xF7,0xF7,0x14}, // 0xCE |
| {0x66,0x3C,0x3C,0x24,0x3C,0x3C,0x66,0x00}, // 0xCF |
| {0x05,0x27,0x72,0x57,0x7D,0x38,0x00,0x00}, // 0xD0 |
| {0x49,0x7F,0x7F,0x49,0x63,0x7F,0x1C,0x00}, // 0xD1 |
| {0x46,0x7D,0x7D,0x55,0x55,0x46,0x00,0x00}, // 0xD2 |
| {0x45,0x7D,0x7C,0x54,0x55,0x45,0x00,0x00}, // 0xD3 |
| {0x44,0x7D,0x7F,0x56,0x54,0x44,0x00,0x00}, // 0xD4 |
| {0x0A,0x0E,0x08,0x00,0x00,0x00,0x00,0x00}, // 0xD5 |
| {0x00,0x44,0x7E,0x7F,0x45,0x00,0x00,0x00}, // 0xD6 |
| {0x02,0x45,0x7D,0x7D,0x45,0x02,0x00,0x00}, // 0xD7 |
| {0x01,0x45,0x7C,0x7C,0x45,0x01,0x00,0x00}, // 0xD8 |
| {0x10,0x10,0x10,0x1F,0x1F,0x00,0x00,0x00}, // 0xD9 |
| {0x00,0x00,0x00,0xF0,0xF0,0x10,0x10,0x10}, // 0xDA |
| {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}, // 0xDB |
| {0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0}, // 0xDC |
| {0x00,0x00,0x00,0x77,0x77,0x00,0x00,0x00}, // 0xDD |
| {0x00,0x45,0x7F,0x7E,0x44,0x00,0x00,0x00}, // 0xDE |
| {0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F}, // 0xDF |
| {0x38,0x7C,0x46,0x47,0x45,0x7C,0x38,0x00}, // 0xE0 |
| {0xFC,0xFE,0x2A,0x2A,0x3E,0x14,0x00,0x00}, // 0xE1 |
| {0x3A,0x7D,0x45,0x45,0x45,0x7D,0x3A,0x00}, // 0xE2 |
| {0x38,0x7C,0x45,0x47,0x46,0x7C,0x38,0x00}, // 0xE3 |
| {0x32,0x7B,0x49,0x4B,0x7A,0x33,0x01,0x00}, // 0xE4 |
| {0x3A,0x7F,0x45,0x47,0x46,0x7F,0x39,0x00}, // 0xE5 |
| {0x80,0xFE,0x7E,0x20,0x20,0x3E,0x1E,0x00}, // 0xE6 |
| {0x42,0x7E,0x7E,0x54,0x1C,0x08,0x00,0x00}, // 0xE7 |
| {0x41,0x7F,0x7F,0x55,0x14,0x1C,0x08,0x00}, // 0xE8 |
| {0x3C,0x7C,0x42,0x43,0x7D,0x3C,0x00,0x00}, // 0xE9 |
| {0x3A,0x79,0x41,0x41,0x79,0x3A,0x00,0x00}, // 0xEA |
| {0x3C,0x7D,0x43,0x42,0x7C,0x3C,0x00,0x00}, // 0xEB |
| {0xB8,0xB8,0xA2,0xA3,0xF9,0x78,0x00,0x00}, // 0xEC |
| {0x0C,0x5C,0x72,0x73,0x5D,0x0C,0x00,0x00}, // 0xED |
| {0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00}, // 0xEE |
| {0x00,0x00,0x02,0x03,0x01,0x00,0x00,0x00}, // 0xEF |
| {0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00}, // 0xF0 |
| {0x44,0x44,0x5F,0x5F,0x44,0x44,0x00,0x00}, // 0xF1 |
| {0x28,0x28,0x28,0x28,0x28,0x28,0x00,0x00}, // 0xF2 |
| {0x71,0x35,0x1F,0x4C,0x66,0x73,0xD9,0xF8}, // 0xF3 |
| {0x06,0x0F,0x09,0x7F,0x7F,0x01,0x7F,0x7F}, // 0xF4 |
| {0xDA,0xBF,0xA5,0xA5,0xFD,0x59,0x03,0x02}, // 0xF5 |
| {0x08,0x08,0x6B,0x6B,0x08,0x08,0x00,0x00}, // 0xF6 |
| {0x00,0x80,0xC0,0x40,0x00,0x00,0x00,0x00}, // 0xF7 |
| {0x00,0x06,0x0F,0x09,0x0F,0x06,0x00,0x00}, // 0xF8 |
| {0x02,0x02,0x00,0x00,0x02,0x02,0x00,0x00}, // 0xF9 |
| {0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00}, // 0xFA |
| {0x00,0x12,0x13,0x1F,0x1F,0x10,0x10,0x00}, // 0xFB |
| {0x00,0x11,0x15,0x15,0x1F,0x1F,0x0A,0x00}, // 0xFC |
| {0x00,0x19,0x1D,0x15,0x17,0x12,0x00,0x00}, // 0xFD |
| {0x00,0x00,0x3C,0x3C,0x3C,0x3C,0x00,0x00}, // 0xFE |
| {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00} // 0xFF |
| }; |
| /Transportables_Koptertool/tags/V-0.1.2/font8x8.h |
|---|
| 0,0 → 1,19 |
| /* |
| * font8x8.h |
| * LCD-OSD |
| * |
| * Created by Peter Mack on 26.12.09. |
| * Copyright 2009 SCS GmbH & Co. KG. All rights reserved. |
| * |
| */ |
| #ifndef _FONT8X8_H |
| #define _FONT8X8_H |
| #include <avr/pgmspace.h> |
| //***************************************************************************** |
| // |
| extern prog_uint8_t font8x8[256][8]; |
| #endif |
| /Transportables_Koptertool/tags/V-0.1.2/jeti.c |
|---|
| 0,0 → 1,260 |
| /***************************************************************************** |
| * Copyright (C) 2009-2010 Peter "woggle" Mack, mac@denich.net * |
| * * |
| * see this fine thread on RCLine: * |
| * http://www.rclineforum.de/forum/thread.php?threadid=226786 * |
| * * |
| * This program is free software; you can redistribute it and/or modify * |
| * it under the terms of the GNU General Public License as published by * |
| * the Free Software Foundation; either version 2 of the License. * |
| * * |
| * This program 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 General Public License for more details. * |
| * * |
| * You should have received a copy of the GNU General Public License * |
| * along with this program; if not, write to the * |
| * Free Software Foundation, Inc., * |
| * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
| * * |
| *****************************************************************************/ |
| #include <avr/io.h> |
| #include <avr/interrupt.h> |
| #include <avr/pgmspace.h> |
| #include <util/delay.h> |
| #include "main.h" // LEDs |
| #include "timer.h" // Keys |
| #include "lcd.h" |
| #include "jeti.h" |
| #define font8x8 |
| uint8_t JetiBuffer[32]; // 32 characters |
| volatile uint8_t JetiBufferReady; |
| //***************************************************************************** |
| // |
| ISR (USART1_RX_vect) |
| { |
| uint8_t stat; |
| uint8_t rh; |
| uint8_t rl; |
| static uint8_t jbp; |
| stat = UCSR1A; |
| rh = UCSR1B; |
| rl = UDR1; |
| if (stat & ((1 << FE1) | (1 << DOR1) | (1 << UPE1))) |
| { // discard buffer and start new on any error |
| JetiBufferReady = 0; |
| jbp = 0; |
| //1234567890123456 |
| lcd_printpj_at (0, 3, PSTR(" Communication "), 0); |
| lcd_printpj_at (0, 4, PSTR(" Error "), 0); |
| LED6_TOGGLE; |
| } |
| else if ((rh & (1 << RXB81)) == 0) |
| { // control |
| if (rl == 0xfe) |
| { // start condition |
| JetiBufferReady = 0; |
| jbp = 0; |
| LED1_ON; |
| } |
| else if (rl == 0xff) |
| { // stop condition |
| JetiBufferReady = 1; |
| LED1_OFF; |
| } |
| } |
| else |
| { // data |
| if (jbp < 32) |
| { |
| JetiBuffer[jbp++] = rl; |
| } |
| } |
| } |
| //***************************************************************************** |
| // |
| void JETI_Init (void) |
| { |
| DDRD &= ~(1 << DDD3); // set TXD1 pin as input |
| PORTD &= ~(1 << PORTD3); // disable pullup on TXD1 pin |
| // set clock divider |
| #undef BAUD |
| #define BAUD 9600 |
| #include <util/setbaud.h> |
| UBRR1H = UBRRH_VALUE; |
| UBRR1L = UBRRL_VALUE; |
| #if USE_2X |
| UCSR1A |= (1 << U2X1); // enable double speed operation |
| #else |
| UCSR1A &= ~(1 << U2X1); // disable double speed operation |
| #endif |
| // set 9O1 |
| UCSR1C = (1 << UPM11) | (1 << UPM10) | (1 << UCSZ11) | (1 << UCSZ10); |
| UCSR1B = (1 << UCSZ12); |
| // flush receive buffer |
| while ( UCSR1A & (1 << RXC1) ) UDR1; |
| } |
| //***************************************************************************** |
| // disable the txd pin of usart |
| void JETI_DisableTXD (void) |
| { |
| UCSR1B &= ~(1 << TXEN1); // disable TX} |
| } |
| //***************************************************************************** |
| // enable the txd pin of usart |
| void JETI_EnableTXD (void) |
| { |
| UCSR1B |= (1 << TXEN1); // enable TX |
| } |
| //***************************************************************************** |
| // |
| void JETI_putw (uint16_t c) |
| { |
| loop_until_bit_is_set(UCSR1A, UDRE1); |
| UCSR1B &= ~(1 << TXB81); |
| if (c & 0x0100) |
| { |
| UCSR1B |= (1 << TXB81); |
| } |
| UDR1 = c; |
| } |
| //***************************************************************************** |
| // |
| void JETI_putc (uint8_t c) |
| { |
| loop_until_bit_is_set(UCSR1A, UDRE1); |
| // UCSRB &= ~(1 << TXB8); |
| UCSR1B |= (1 << TXB81); |
| UDR1 = c; |
| } |
| //***************************************************************************** |
| // |
| void JETI_puts (char *s) |
| { |
| while (*s) |
| { |
| JETI_putc (*s); |
| s++; |
| } |
| } |
| //***************************************************************************** |
| // |
| void JETI_puts_p (const char *s) |
| { |
| while (pgm_read_byte(s)) |
| { |
| JETI_putc (pgm_read_byte(s)); |
| s++; |
| } |
| } |
| //***************************************************************************** |
| // |
| void JETI_put_start (void) |
| { |
| loop_until_bit_is_set(UCSR1A, UDRE1); |
| UCSR1B &= ~(1 << TXB81); |
| UDR1 = 0xFE; |
| } |
| //***************************************************************************** |
| // |
| void JETI_put_stop (void) |
| { |
| loop_until_bit_is_set(UCSR1A, UDRE1); |
| UCSR1B &= ~(1 << TXB81); |
| UDR1 = 0xFF; |
| } |
| //***************************************************************************** |
| // |
| void jeti (void) |
| { |
| uint8_t key; |
| uint8_t i; |
| // enable Rx |
| UCSR1B |= (1 << RXEN1); |
| UCSR1B |= (1 << RXCIE1); |
| lcd_cls (); |
| lcd_printp_at (0, 0, PSTR("Jeti Box Display"), 0); |
| lcd_printpns_at (0, 7, PSTR(" \x1a \x1b \x1c \x1d"), 0); |
| #ifdef font8x8 |
| lcd_line(0, 21, 127, 21, 1); |
| lcd_line(0, 22, 127, 22, 1); |
| lcd_line(0, 40, 127, 40, 1); |
| lcd_line(0, 41, 127, 41, 1); |
| #else |
| lcd_rect(10, 22, 98, 18, 1); |
| #endif |
| do |
| { |
| if (JetiBufferReady) |
| { |
| JETI_EnableTXD(); |
| LED2_ON; |
| for (i = 0; i < 16; i++) |
| { |
| #ifdef font8x8 |
| lcd_putc_jeti(i, 3, JetiBuffer[i], 0); |
| #else |
| lcd_putc (2 + i, 3, JetiBuffer[i], 0); |
| #endif |
| } |
| for (i = 0; i < 16; i++) |
| { |
| #ifdef font8x8 |
| lcd_putc_jeti(i, 4, JetiBuffer[i + 16], 0); |
| #else |
| lcd_putc (2 + i, 4, JetiBuffer[i + 16], 0); |
| #endif |
| } |
| JetiBufferReady = 0; // invalidate buffer |
| LED2_OFF; |
| _delay_ms (1); // |
| // Writing to the display takes aprox. 5.8 ms @ 7 MHz and 3.2 ms @ 20 MHz. |
| // With the additional 4 ms we had a 10 ms delay. |
| // 10 ms works perfect with the MUI30 and the MT125 |
| // But not with the TU transceiver module. |
| key = get_key_short ((1 << KEY_MINUS) | (1 << KEY_PLUS) | (1 << KEY_ESC) | (1 << KEY_ENTER)); |
| key = (key << 1) | (key >> 3); |
| key = (~key) & 0xf0; |
| JETI_putw((uint16_t) key); |
| _delay_ms (1); |
| JETI_DisableTXD(); |
| } |
| } |
| while (!get_key_long (1 << KEY_ESC)); |
| get_key_press(KEY_ALL); |
| // disable Rx |
| UCSR1B &= ~(1 << RXCIE1); |
| UCSR1B &= ~(1 << RXEN1); |
| } |
| /Transportables_Koptertool/tags/V-0.1.2/jeti.h |
|---|
| 0,0 → 1,40 |
| /***************************************************************************** |
| * Copyright (C) 2009 Peter "woggle" Mack, mac@denich.net * |
| * * |
| * see this fine thread on RCLine: * |
| * http://www.rclineforum.de/forum/thread.php?threadid=226786 * |
| * * |
| * This program is free software; you can redistribute it and/or modify * |
| * it under the terms of the GNU General Public License as published by * |
| * the Free Software Foundation; either version 2 of the License. * |
| * * |
| * This program 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 General Public License for more details. * |
| * * |
| * You should have received a copy of the GNU General Public License * |
| * along with this program; if not, write to the * |
| * Free Software Foundation, Inc., * |
| * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
| * * |
| *****************************************************************************/ |
| #ifndef _JETI_H |
| #define _JETI_H |
| //***************************************************************************** |
| // |
| void JETI_Init (void); |
| void JETI_DisableTXD (void); |
| void JETI_EnableTXD (void); |
| void JETI_putw (uint16_t c); |
| void JETI_putc (uint8_t c); |
| void JETI_puts (char *s); |
| void JETI_puts_p (const char *s); |
| void JETI_put_start (void); |
| void JETI_put_stop (void); |
| void jeti (void); |
| #endif |
| /Transportables_Koptertool/tags/V-0.1.2/lcd.c |
|---|
| 0,0 → 1,1130 |
| /***************************************************************************** |
| * Copyright (C) 2009 Peter "woggle" Mack, mac@denich.net * |
| * - original LCD control by Thomas "thkais" Kaiser * |
| * - special number formating routines taken from C-OSD * |
| * from Claas Anders "CaScAdE" Rathje * |
| * - some extension, ellipse and circ_line by Peter "woggle" Mack * |
| * * |
| * This program is free software; you can redistribute it and/or modify * |
| * it under the terms of the GNU General Public License as published by * |
| * the Free Software Foundation; either version 2 of the License. * |
| * * |
| * This program 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 General Public License for more details. * |
| * * |
| * You should have received a copy of the GNU General Public License * |
| * along with this program; if not, write to the * |
| * Free Software Foundation, Inc., * |
| * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
| * * |
| *****************************************************************************/ |
| #include <avr/io.h> |
| #include <avr/pgmspace.h> |
| #include <util/delay.h> |
| #include <stdlib.h> |
| #include <string.h> |
| #include <math.h> |
| #include "font8x6.h" |
| #include "font8x8.h" |
| #include "main.h" |
| #include "lcd.h" |
| #define DISP_W 128 |
| #define DISP_H 64 |
| #define DISP_BUFFER ((DISP_H * DISP_W) / 8) |
| volatile uint8_t display_buffer[DISP_BUFFER]; // Display-Puffer, weil nicht zurückgelesen werden kann |
| volatile uint16_t display_buffer_pointer; // Pointer auf das aktuell übertragene Byte |
| volatile uint8_t display_buffer_counter; // Hilfszähler zur Selektierung der Page |
| volatile uint8_t display_page_counter; // aktuelle Page-Nummer |
| volatile uint8_t display_mode; // Modus für State-Machine |
| volatile uint8_t LCD_ORIENTATION; |
| // DOG: 128 x 64 with 6x8 Font => 21 x 8 |
| // MAX7456: 30 x 16 |
| uint8_t lcd_xpos; |
| uint8_t lcd_ypos; |
| void send_byte (uint8_t data) |
| { |
| clr_cs (); |
| SPDR = data; |
| while (!(SPSR & (1<<SPIF))); |
| //SPSR = SPSR; |
| set_cs (); |
| } |
| void lcd_cls (void) |
| { |
| uint16_t i, j; |
| // memset (display_buffer, 0, 1024); |
| for (i = 0; i < DISP_BUFFER; i++) |
| display_buffer[i] = 0x00; |
| for (i = 0; i < 8; i++) |
| { |
| clr_A0 (); |
| send_byte (0xB0 + i); //1011xxxx |
| send_byte (0x10); //00010000 |
| // send_byte(0x04); //00000100 gedreht plus 4 Byte |
| // send_byte(0x00); //00000000 |
| send_byte (LCD_ORIENTATION); //00000000 |
| set_A0 (); |
| for (j = 0; j < 128; j++) |
| send_byte (0x00); |
| } |
| lcd_xpos = 0; |
| lcd_ypos = 0; |
| } |
| void wait_1ms (void) |
| { |
| _delay_ms (1.0); |
| } |
| void wait_ms (uint16_t time) |
| { |
| uint16_t i; |
| for (i = 0; i < time; i++) |
| wait_1ms (); |
| } |
| void LCD_Init (void) |
| { |
| lcd_xpos = 0; |
| lcd_ypos = 0; |
| DDRB = 0xFF; |
| // SPI max. speed |
| // the DOGM128 lcd controller can work at 20 MHz |
| SPCR = (1 << SPE) | (1 << MSTR) | (1 << CPHA) | (1 << CPOL); |
| SPSR = (1 << SPI2X); |
| set_cs (); |
| clr_reset (); |
| wait_ms (10); |
| set_reset (); |
| clr_cs (); |
| clr_A0 (); |
| send_byte (0x40); |
| if (LCD_ORIENTATION == 0) |
| { |
| send_byte (0xA1); // A1 normal A0 reverse(original) |
| send_byte (0xC0); // C0 normal C8 reverse(original) |
| } |
| else |
| { |
| send_byte (0xA0); // A1 normal A0 reverse(original) |
| send_byte (0xC8); // C0 normal C8 reverse(original) |
| } |
| send_byte (0xA6); |
| send_byte (0xA2); |
| send_byte (0x2F); |
| send_byte (0xF8); |
| send_byte (0x00); |
| send_byte (0x27); |
| send_byte (0x81); |
| send_byte (0x16); |
| send_byte (0xAC); |
| send_byte (0x00); |
| send_byte (0xAF); |
| lcd_cls (); |
| } |
| void set_adress (uint16_t adress, uint8_t data) |
| { |
| uint8_t page; |
| uint8_t column; |
| page = adress >> 7; |
| clr_A0 (); |
| send_byte (0xB0 + page); |
| // column = (adress & 0x7F) + 4; Wenn gedreht |
| // column = (adress & 0x7F); |
| column = (adress & 0x7F) + LCD_ORIENTATION; |
| send_byte (0x10 + (column >> 4)); |
| send_byte (column & 0x0F); |
| set_A0 (); |
| send_byte (data); |
| } |
| void scroll (void) |
| { |
| uint16_t adress; |
| for (adress = 0; adress < 896; adress++) |
| { |
| display_buffer[adress] = display_buffer[adress + 128]; |
| set_adress (adress, display_buffer[adress]); |
| } |
| for (adress = 896; adress < 1024; adress++) |
| { |
| display_buffer[adress] = 0; |
| set_adress (adress, 0); |
| } |
| } |
| // |
| // x,y = character-Pos. ! |
| // |
| // mode: 0=Overwrite, 1 = OR, 2 = XOR, 3 = AND, 4 = Delete |
| void lcd_putc (uint8_t x, uint8_t y, uint8_t c, uint8_t mode) |
| { |
| uint8_t ch; |
| uint8_t i; |
| uint16_t adress; |
| switch (c) |
| { // ISO 8859-1 |
| case 0xc4: // Ä |
| c = 0x00; |
| break; |
| case 0xe4: // ä |
| c = 0x01; |
| break; |
| case 0xd6: // Ö |
| c = 0x02; |
| break; |
| case 0xf6: // ö |
| c = 0x03; |
| break; |
| case 0xdc: // Ü |
| c = 0x04; |
| break; |
| case 0xfc: // ü |
| c = 0x05; |
| break; |
| case 0xdf: // ß |
| //c = 0x06; |
| c = 0x1e; // ° (used by Jeti) |
| break; |
| } |
| c &= 0x7f; |
| adress = y * 128 + x * 6; |
| adress &= 0x3FF; |
| for (i = 0; i < 6; i++) |
| { |
| ch = pgm_read_byte (&font8x6[0][0] + i + c * 6); |
| switch (mode) |
| { |
| case 0: |
| display_buffer[adress+i] = ch; |
| break; |
| case 1: |
| display_buffer[adress+i] |= ch; |
| break; |
| case 2: |
| display_buffer[adress+i] ^= ch; |
| break; |
| case 3: |
| display_buffer[adress+i] &= ch; |
| break; |
| case 4: |
| display_buffer[adress+i] &= ~ch; |
| break; |
| } |
| set_adress (adress + i, display_buffer[adress + i]); |
| } |
| } |
| void lcd_putc_jeti (uint8_t x, uint8_t y, uint8_t c, uint8_t mode) |
| { |
| uint8_t ch; |
| uint8_t i; |
| uint16_t adress; |
| switch (c) |
| { |
| case 0x7e: |
| c = 0x1a; // -> |
| break; |
| case 0x7f: |
| c = 0x1b; // <- |
| break; |
| case 0xdf: |
| c = 0xf8; // ° |
| break; |
| } |
| adress = y * 128 + x * 8; |
| adress &= 0x3FF; |
| for (i = 0; i < 8; i++) |
| { |
| ch = pgm_read_byte (&font8x8[0][0] + i + c * 8); |
| switch (mode) |
| { |
| case 0: |
| display_buffer[adress+i] = ch; |
| break; |
| case 1: |
| display_buffer[adress+i] |= ch; |
| break; |
| case 2: |
| display_buffer[adress+i] ^= ch; |
| break; |
| case 3: |
| display_buffer[adress+i] &= ch; |
| break; |
| case 4: |
| display_buffer[adress+i] &= ~ch; |
| break; |
| } |
| set_adress (adress + i, display_buffer[adress + i]); |
| } |
| } |
| void new_line (void) |
| { |
| lcd_ypos++; |
| if (lcd_ypos > 7) |
| { |
| scroll (); |
| lcd_ypos = 7; |
| } |
| } |
| void lcd_printpj (const char *text, uint8_t mode) |
| { |
| while (pgm_read_byte(text)) |
| { |
| switch (pgm_read_byte(text)) |
| { |
| case 0x0D: |
| lcd_xpos = 0; |
| break; |
| case 0x0A: |
| new_line(); |
| break; |
| default: |
| lcd_putc_jeti (lcd_xpos, lcd_ypos, pgm_read_byte(text), mode); |
| lcd_xpos++; |
| if (lcd_xpos > 20) |
| { |
| lcd_xpos = 0; |
| new_line (); |
| } |
| break; |
| } |
| text++; |
| } |
| } |
| void lcd_printpj_at (uint8_t x, uint8_t y, const char *text, uint8_t mode) |
| { |
| lcd_xpos = x; |
| lcd_ypos = y; |
| lcd_printpj (text, mode); |
| } |
| void lcd_printpns (const char *text, uint8_t mode) |
| { |
| while (pgm_read_byte(text)) |
| { |
| switch (pgm_read_byte(text)) |
| { |
| case 0x0D: |
| lcd_xpos = 0; |
| break; |
| case 0x0A: |
| new_line(); |
| break; |
| default: |
| lcd_putc (lcd_xpos, lcd_ypos, pgm_read_byte(text), mode); |
| lcd_xpos++; |
| if (lcd_xpos > 20) |
| { |
| lcd_xpos = 0; |
| // new_line (); |
| } |
| break; |
| } |
| text++; |
| } |
| } |
| void lcd_printpns_at (uint8_t x, uint8_t y, const char *text, uint8_t mode) |
| { |
| lcd_xpos = x; |
| lcd_ypos = y; |
| lcd_printpns (text, mode); |
| } |
| void lcd_printp (const char *text, uint8_t mode) |
| { |
| while (pgm_read_byte(text)) |
| { |
| switch (pgm_read_byte(text)) |
| { |
| case 0x0D: |
| lcd_xpos = 0; |
| break; |
| case 0x0A: |
| new_line(); |
| break; |
| default: |
| lcd_putc (lcd_xpos, lcd_ypos, pgm_read_byte(text), mode); |
| lcd_xpos++; |
| if (lcd_xpos > 20) |
| { |
| lcd_xpos = 0; |
| new_line (); |
| } |
| break; |
| } |
| text++; |
| } |
| } |
| void lcd_printp_at (uint8_t x, uint8_t y, const char *text, uint8_t mode) |
| { |
| lcd_xpos = x; |
| lcd_ypos = y; |
| lcd_printp (text, mode); |
| } |
| void lcd_print (uint8_t *text, uint8_t mode) |
| { |
| while (*text) |
| { |
| switch (*text) |
| { |
| case 0x0D: |
| lcd_xpos = 0; |
| break; |
| case 0x0A: |
| new_line(); |
| break; |
| default: |
| lcd_putc (lcd_xpos, lcd_ypos, *text, mode); |
| lcd_xpos++; |
| if (lcd_xpos > 20) |
| { |
| lcd_xpos = 0; |
| new_line (); |
| } |
| break; |
| } |
| text++; |
| } |
| } |
| void lcd_print_at (uint8_t x, uint8_t y, uint8_t *text, uint8_t mode) |
| { |
| lcd_xpos = x; |
| lcd_ypos = y; |
| lcd_print (text, mode); |
| } |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| // + Plot (set one Pixel) |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| // mode: |
| // 0=Clear, 1=Set, 2=XOR |
| void lcd_plot (uint8_t xpos, uint8_t ypos, uint8_t mode) |
| { |
| uint16_t adress; |
| uint8_t mask; |
| if ((xpos < DISP_W) && (ypos < DISP_H)) |
| { |
| adress = (ypos / 8) * DISP_W + xpos; // adress = 0/8 * 128 + 0 = 0 |
| mask = 1 << (ypos & 0x07); // mask = 1<<0 = 1 |
| adress &= DISP_BUFFER - 1; |
| switch (mode) |
| { |
| case 0: |
| display_buffer[adress] &= ~mask; |
| break; |
| case 1: |
| display_buffer[adress] |= mask; |
| break; |
| case 2: |
| display_buffer[adress] ^= mask; |
| break; |
| } |
| set_adress (adress, display_buffer[adress]); |
| } |
| } |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| // + Line (draws a line from x1,y1 to x2,y2 |
| // + Based on Bresenham line-Algorithm |
| // + found in the internet, modified by thkais 2007 |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| void lcd_line (unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, uint8_t mode) |
| { |
| int x, y, count, xs, ys, xm, ym; |
| x = (int) x1; |
| y = (int) y1; |
| xs = (int) x2 - (int) x1; |
| ys = (int) y2 - (int) y1; |
| if (xs < 0) |
| xm = -1; |
| else |
| if (xs > 0) |
| xm = 1; |
| else |
| xm = 0; |
| if (ys < 0) |
| ym = -1; |
| else |
| if (ys > 0) |
| ym = 1; |
| else |
| ym = 0; |
| if (xs < 0) |
| xs = -xs; |
| if (ys < 0) |
| ys = -ys; |
| lcd_plot ((unsigned char) x, (unsigned char) y, mode); |
| if (xs > ys) // Flat Line <45 degrees |
| { |
| count = -(xs / 2); |
| while (x != x2) |
| { |
| count = count + ys; |
| x = x + xm; |
| if (count > 0) |
| { |
| y = y + ym; |
| count = count - xs; |
| } |
| lcd_plot ((unsigned char) x, (unsigned char) y, mode); |
| } |
| } |
| else // Line >=45 degrees |
| { |
| count =- (ys / 2); |
| while (y != y2) |
| { |
| count = count + xs; |
| y = y + ym; |
| if (count > 0) |
| { |
| x = x + xm; |
| count = count - ys; |
| } |
| lcd_plot ((unsigned char) x, (unsigned char) y, mode); |
| } |
| } |
| } |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| // + Filled rectangle |
| // + x1, y1 = upper left corner |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| void lcd_frect (uint8_t x1, uint8_t y1, uint8_t widthx, uint8_t widthy, uint8_t mode) |
| { |
| uint16_t x2, y2; |
| uint16_t i; |
| if (x1 >= DISP_W) |
| x1 = DISP_W - 1; |
| if (y1 >= DISP_H) |
| y1 = DISP_H - 1; |
| x2 = x1 + widthx; |
| y2 = y1 + widthy; |
| if (x2 > DISP_W) |
| x2 = DISP_W; |
| if (y2 > DISP_H) |
| y2 = DISP_H; |
| for (i = y1; i <= y2; i++) |
| { |
| lcd_line (x1, i, x2, i, mode); |
| } |
| } |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| // + outline of rectangle |
| // + x1, y1 = upper left corner |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| void lcd_rect (uint8_t x1, uint8_t y1, uint8_t widthx, uint8_t widthy, uint8_t mode) |
| { |
| uint16_t x2, y2; |
| if (x1 >= DISP_W) |
| x1 = DISP_W - 1; |
| if (y1 >= DISP_H) |
| y1 = DISP_H - 1; |
| x2 = x1 + widthx; |
| y2 = y1 + widthy; |
| if (x2 > DISP_W) |
| x2 = DISP_W; |
| if (y2 > DISP_H) |
| y2 = DISP_H; |
| lcd_line (x1, y1, x2, y1, mode); |
| lcd_line (x2, y1, x2, y2, mode); |
| lcd_line (x2, y2, x1, y2, mode); |
| lcd_line (x1, y2, x1, y1, mode); |
| } |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| // + outline of a circle |
| // + Based on Bresenham-algorithm found in wikipedia |
| // + modified by thkais (2007) |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| void lcd_circle (int16_t x0, int16_t y0, int16_t radius, uint8_t mode) |
| { |
| int16_t f = 1 - radius; |
| int16_t ddF_x = 0; |
| int16_t ddF_y = -2 * radius; |
| int16_t x = 0; |
| int16_t y = radius; |
| lcd_plot (x0, y0 + radius, mode); |
| lcd_plot (x0, y0 - radius, mode); |
| lcd_plot (x0 + radius, y0, mode); |
| lcd_plot (x0 - radius, y0, mode); |
| while (x < y) |
| { |
| if (f >= 0) |
| { |
| y --; |
| ddF_y += 2; |
| f += ddF_y; |
| } |
| x ++; |
| ddF_x += 2; |
| f += ddF_x + 1; |
| lcd_plot (x0 + x, y0 + y, mode); |
| lcd_plot (x0 - x, y0 + y, mode); |
| lcd_plot (x0 + x, y0 - y, mode); |
| lcd_plot (x0 - x, y0 - y, mode); |
| lcd_plot (x0 + y, y0 + x, mode); |
| lcd_plot (x0 - y, y0 + x, mode); |
| lcd_plot (x0 + y, y0 - x, mode); |
| lcd_plot (x0 - y, y0 - x, mode); |
| } |
| } |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| // + filled Circle |
| // + modified circle-algorithm thkais (2007) |
| // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| void lcd_fcircle (int16_t x0, int16_t y0, int16_t radius) |
| { |
| int16_t f = 1 - radius; |
| int16_t ddF_x = 0; |
| int16_t ddF_y = -2 * radius; |
| int16_t x = 0; |
| int16_t y = radius; |
| lcd_line (x0, y0 + radius, x0, y0 - radius, 1); |
| lcd_line (x0 + radius, y0, x0 - radius, y0, 1); |
| while (x < y) |
| { |
| if (f >= 0) |
| { |
| y--; |
| ddF_y += 2; |
| f += ddF_y; |
| } |
| x++; |
| ddF_x += 2; |
| f += ddF_x + 1; |
| lcd_line (x0 + x, y0 + y, x0 - x, y0 + y, 1); |
| lcd_line (x0 + x, y0 - y, x0 - x, y0 - y, 1); |
| lcd_line (x0 + y, y0 + x, x0 - y, y0 + x, 1); |
| lcd_line (x0 + y, y0 - x, x0 - y, y0 - x, 1); |
| } |
| } |
| //***************************************************************************** |
| // |
| void lcd_circ_line (uint8_t x, uint8_t y, uint8_t r, uint16_t deg, uint8_t mode) |
| { |
| uint8_t xc, yc; |
| double deg_rad; |
| deg_rad = (deg * M_PI) / 180.0; |
| yc = y - (uint8_t) round (cos (deg_rad) * (double) r); |
| xc = x + (uint8_t) round (sin (deg_rad) * (double) r); |
| lcd_line (x, y, xc, yc, mode); |
| } |
| //***************************************************************************** |
| // |
| void lcd_ellipse_line (uint8_t x, uint8_t y, uint8_t rx, uint8_t ry, uint16_t deg, uint8_t mode) |
| { |
| uint8_t xc, yc; |
| double deg_rad; |
| deg_rad = (deg * M_PI) / 180.0; |
| yc = y - (uint8_t) round (cos (deg_rad) * (double) ry); |
| xc = x + (uint8_t) round (sin (deg_rad) * (double) rx); |
| lcd_line (x, y, xc, yc, mode); |
| } |
| //***************************************************************************** |
| // |
| void lcd_ellipse (int16_t x0, int16_t y0, int16_t rx, int16_t ry, uint8_t mode) |
| { |
| const int16_t rx2 = rx * rx; |
| const int16_t ry2 = ry * ry; |
| int16_t F = round (ry2 - rx2 * ry + 0.25 * rx2); |
| int16_t ddF_x = 0; |
| int16_t ddF_y = 2 * rx2 * ry; |
| int16_t x = 0; |
| int16_t y = ry; |
| lcd_plot (x0, y0 + ry, mode); |
| lcd_plot (x0, y0 - ry, mode); |
| lcd_plot (x0 + rx, y0, mode); |
| lcd_plot (x0 - rx, y0, mode); |
| // while ( 2*ry2*x < 2*rx2*y ) { we can use ddF_x and ddF_y |
| while (ddF_x < ddF_y) |
| { |
| if(F >= 0) |
| { |
| y -= 1; // south |
| ddF_y -= 2 * rx2; |
| F -= ddF_y; |
| } |
| x += 1; // east |
| ddF_x += 2 * ry2; |
| F += ddF_x + ry2; |
| lcd_plot (x0 + x, y0 + y, mode); |
| lcd_plot (x0 + x, y0 - y, mode); |
| lcd_plot (x0 - x, y0 + y, mode); |
| lcd_plot (x0 - x, y0 - y, mode); |
| } |
| F = round (ry2 * (x + 0.5) * (x + 0.5) + rx2 * (y - 1) * (y - 1) - rx2 * ry2); |
| while(y > 0) |
| { |
| if(F <= 0) |
| { |
| x += 1; // east |
| ddF_x += 2 * ry2; |
| F += ddF_x; |
| } |
| y -=1; // south |
| ddF_y -= 2 * rx2; |
| F += rx2 - ddF_y; |
| lcd_plot (x0 + x, y0 + y, mode); |
| lcd_plot (x0 + x, y0 - y, mode); |
| lcd_plot (x0 - x, y0 + y, mode); |
| lcd_plot (x0 - x, y0 - y, mode); |
| } |
| } |
| //***************************************************************************** |
| // |
| void lcd_ecircle (int16_t x0, int16_t y0, int16_t radius, uint8_t mode) |
| { |
| lcd_ellipse (x0, y0, radius + 3, radius, mode); |
| } |
| //***************************************************************************** |
| // |
| void lcd_ecirc_line (uint8_t x, uint8_t y, uint8_t r, uint16_t deg, uint8_t mode) |
| { |
| lcd_ellipse_line(x, y, r + 3, r, deg, mode); |
| } |
| //***************************************************************************** |
| // |
| void lcd_view_font (uint8_t page) |
| { |
| int x; |
| int y; |
| lcd_cls (); |
| lcd_printp (PSTR(" 0123456789ABCDEF\r\n"), 0); |
| // lcd_printpns_at (0, 7, PSTR(" \x16 \x17 Exit"), 0); |
| lcd_printpns_at (0, 7, PSTR(" \x1a \x1b Exit"), 0); |
| lcd_ypos = 2; |
| for (y = page * 4 ; y < (page * 4 + 4); y++) |
| { |
| if (y < 10) |
| { |
| lcd_putc (0, lcd_ypos, '0' + y, 0); |
| } |
| else |
| { |
| lcd_putc (0, lcd_ypos, 'A' + y - 10, 0); |
| } |
| lcd_xpos = 2; |
| for (x = 0; x < 16; x++) |
| { |
| lcd_putc (lcd_xpos, lcd_ypos, y * 16 + x, 0); |
| lcd_xpos++; |
| } |
| lcd_ypos++; |
| } |
| } |
| uint8_t hdigit (uint8_t d) |
| { |
| if (d < 10) |
| { |
| return '0' + d; |
| } |
| else |
| { |
| return 'A' + d - 10; |
| } |
| } |
| void lcd_print_hex_at (uint8_t x, uint8_t y, uint8_t h, uint8_t mode) |
| { |
| lcd_xpos = x; |
| lcd_ypos = y; |
| lcd_putc (lcd_xpos++, lcd_ypos, hdigit (h >> 4), mode); |
| lcd_putc (lcd_xpos, lcd_ypos, hdigit (h & 0x0f), mode); |
| } |
| void lcd_write_number_u (uint8_t number) |
| { |
| uint8_t num = 100; |
| uint8_t started = 0; |
| while (num > 0) |
| { |
| uint8_t b = number / num; |
| if (b > 0 || started || num == 1) |
| { |
| lcd_putc (lcd_xpos++, lcd_ypos, '0' + b, 0); |
| started = 1; |
| } |
| number -= b * num; |
| num /= 10; |
| } |
| } |
| void lcd_write_number_u_at (uint8_t x, uint8_t y, uint8_t number) |
| { |
| lcd_xpos = x; |
| lcd_ypos = y; |
| lcd_write_number_u (number); |
| } |
| /** |
| * Write only some digits of a unsigned <number> at <x>/<y> to MAX7456 display memory |
| * <num> represents the largest multiple of 10 that will still be displayable as |
| * the first digit, so num = 10 will be 0-99 and so on |
| * <pad> = 1 will cause blank spaced to be filled up with zeros e.g. 007 instead of 7 |
| */ |
| void write_ndigit_number_u (uint8_t x, uint8_t y, uint16_t number, int16_t length, uint8_t pad) |
| { |
| char s[7]; |
| utoa(number, s, 10 ); |
| uint8_t len = strlen(s); |
| if (length < len) |
| { |
| for (uint8_t i = 0; i < length; i++) |
| { |
| lcd_putc (x++, y, '*', 0); |
| } |
| return; |
| } |
| for (uint8_t i = 0; i < length - len; i++) |
| { |
| if (pad) |
| { |
| lcd_putc (x++, y, '0', 0); |
| } |
| else |
| { |
| lcd_putc (x++, y, ' ', 0); |
| } |
| } |
| lcd_print_at(x, y, s, 0); |
| } |
| /** |
| * Write only some digits of a signed <number> at <x>/<y> to MAX7456 display memory |
| * <num> represents the largest multiple of 10 that will still be displayable as |
| * the first digit, so num = 10 will be 0-99 and so on |
| * <pad> = 1 will cause blank spaced to be filled up with zeros e.g. 007 instead of 7 |
| */ |
| void write_ndigit_number_s (uint8_t x, uint8_t y, int16_t number, int16_t length, uint8_t pad) |
| { |
| char s[7]; |
| itoa(number, s, 10 ); |
| uint8_t len = strlen(s); |
| if (length < len) |
| { |
| for (uint8_t i = 0; i < length; i++) |
| { |
| lcd_putc (x++, y, '*', 0); |
| } |
| return; |
| } |
| for (uint8_t i = 0; i < length - len; i++) |
| { |
| if (pad) |
| { |
| lcd_putc (x++, y, '0', 0); |
| } |
| else |
| { |
| lcd_putc (x++, y, ' ', 0); |
| } |
| } |
| lcd_print_at(x, y, s, 0); |
| } |
| /** |
| * Write only some digits of a unsigned <number> at <x>/<y> to MAX7456 display memory |
| * as /10th of the value |
| * <num> represents the largest multiple of 10 that will still be displayable as |
| * the first digit, so num = 10 will be 0-99 and so on |
| * <pad> = 1 will cause blank spaced to be filled up with zeros e.g. 007 instead of 7 |
| */ |
| void write_ndigit_number_u_10th (uint8_t x, uint8_t y, uint16_t number, int16_t length, uint8_t pad) |
| { |
| char s[7]; |
| itoa(number, s, 10 ); |
| uint8_t len = strlen(s); |
| if (length < len) |
| { |
| for (uint8_t i = 0; i < length; i++) |
| { |
| lcd_putc (x++, y, '*', 0); |
| } |
| return; |
| } |
| for (uint8_t i = 0; i < length - len; i++) |
| { |
| if (pad) |
| { |
| lcd_putc (x++, y, '0', 0); |
| } |
| else |
| { |
| lcd_putc (x++, y, ' ', 0); |
| } |
| } |
| char rest = s[len - 1]; |
| s[len - 1] = 0; |
| if (len == 1) |
| { |
| lcd_putc (x-1, y, '0', 0); |
| } |
| else if (len == 2 && s[0] == '-') |
| { |
| lcd_putc (x-1, y, '-', 0); |
| lcd_putc (x, y, '0', 0); |
| } |
| else |
| { |
| lcd_print_at(x, y, s, 0); |
| } |
| x += len - 1; |
| lcd_putc (x++, y, '.', 0); |
| lcd_putc (x++, y, rest, 0); |
| } |
| void write_ndigit_number_u_100th (uint8_t x, uint8_t y, uint16_t number, int16_t length, uint8_t pad) |
| { |
| uint8_t num = 100; |
| while (num > 0) |
| { |
| uint8_t b = number / num; |
| if ((num / 10) == 1) |
| { |
| lcd_putc (x++, y, '.', 0); |
| } |
| lcd_putc (x++, y, '0' + b, 0); |
| number -= b * num; |
| num /= 10; |
| } |
| } |
| /** |
| * Write only some digits of a signed <number> at <x>/<y> to MAX7456 display memory |
| * as /10th of the value |
| * <num> represents the largest multiple of 10 that will still be displayable as |
| * the first digit, so num = 10 will be 0-99 and so on |
| * <pad> = 1 will cause blank spaced to be filled up with zeros e.g. 007 instead of 7 |
| */ |
| void write_ndigit_number_s_10th (uint8_t x, uint8_t y, int16_t number, int16_t length, uint8_t pad) |
| { |
| char s[7]; |
| itoa (number, s, 10 ); |
| uint8_t len = strlen(s); |
| if (length < len) |
| { |
| for (uint8_t i = 0; i < length; i++) |
| { |
| lcd_putc (x++, y, '*', 0); |
| } |
| return; |
| } |
| for (uint8_t i = 0; i < length - len; i++) |
| { |
| if (pad) |
| { |
| lcd_putc (x++, y, '0', 0); |
| } |
| else |
| { |
| lcd_putc (x++, y, ' ', 0); |
| } |
| } |
| char rest = s[len - 1]; |
| s[len - 1] = 0; |
| if (len == 1) |
| { |
| lcd_putc (x-1, y, '0', 0); |
| } |
| else if (len == 2 && s[0] == '-') |
| { |
| lcd_putc (x-1, y, '-', 0); |
| lcd_putc (x, y, '0', 0); |
| } |
| else |
| { |
| lcd_print_at(x, y, s, 0); |
| } |
| x += len - 1; |
| lcd_putc (x++, y, '.', 0); |
| lcd_putc (x++, y, rest, 0); |
| } |
| /** |
| * write <seconds> as human readable time at <x>/<y> to MAX7456 display mem |
| */ |
| void write_time (uint8_t x, uint8_t y, uint16_t seconds) |
| { |
| uint16_t min = seconds / 60; |
| seconds -= min * 60; |
| write_ndigit_number_u (x, y, min, 2, 0); |
| lcd_putc (x + 2, y, ':', 0); |
| write_ndigit_number_u (x + 3, y, seconds, 2, 1); |
| } |
| /** |
| * wirte a <position> at <x>/<y> assuming it is a gps position for long-/latitude |
| */ |
| void write_gps_pos (uint8_t x, uint8_t y, int32_t position) |
| { |
| if (position < 0) |
| { |
| position ^= ~0; |
| position++; |
| lcd_putc (x++, y, '-', 0); |
| } |
| else |
| { |
| lcd_putc (x++, y, ' ', 0); |
| } |
| write_ndigit_number_u (x, y, (uint16_t) (position / (int32_t) 10000000), 3, 1); |
| lcd_putc (x + 3, y, '.', 0); |
| position = position - ((position / (int32_t) 10000000) * (int32_t) 10000000); |
| write_ndigit_number_u (x + 4, y, (uint16_t) (position / (int32_t) 1000), 4, 1); |
| position = position - ((uint16_t) (position / (int32_t) 1000) * (int32_t) 1000); |
| write_ndigit_number_u (x + 8, y, (uint16_t) position, 3, 1); |
| lcd_putc (x + 11, y, 0x1e, 0); // degree symbol |
| } |
| /Transportables_Koptertool/tags/V-0.1.2/lcd.h |
|---|
| 0,0 → 1,118 |
| /***************************************************************************** |
| * Copyright (C) 2009 Peter "woggle" Mack, mac@denich.net * |
| * - original LCD control by Thomas "thkais" Kaiser * |
| * - special number formating routines taken from C-OSD * |
| * from Claas Anders "CaScAdE" Rathje * |
| * - some extension, ellipse and circ_line by Peter "woggle" Mack * |
| * * |
| * This program is free software; you can redistribute it and/or modify * |
| * it under the terms of the GNU General Public License as published by * |
| * the Free Software Foundation; either version 2 of the License. * |
| * * |
| * This program 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 General Public License for more details. * |
| * * |
| * You should have received a copy of the GNU General Public License * |
| * along with this program; if not, write to the * |
| * Free Software Foundation, Inc., * |
| * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
| * * |
| *****************************************************************************/ |
| #ifndef _LCD_H |
| #define _LCD_H |
| //***************************************************************************** |
| // |
| extern volatile uint8_t LCD_ORIENTATION; |
| extern uint8_t lcd_xpos; |
| extern uint8_t lcd_ypos; |
| //***************************************************************************** |
| // |
| void LCD_Init (void); |
| void lcd_putc (uint8_t x, uint8_t y, uint8_t c, uint8_t mode); |
| //void send_byte (uint8_t data); |
| void lcd_print (uint8_t *text, uint8_t mode); |
| void lcd_print_at (uint8_t x, uint8_t y, uint8_t *text, uint8_t mode); |
| void lcd_printp (const char *text, uint8_t mode); |
| void lcd_printp_at (uint8_t x, uint8_t y, const char *text, uint8_t mode); |
| void lcd_printpns (const char *text, uint8_t mode); |
| void lcd_printpns_at (uint8_t x, uint8_t y, const char *text, uint8_t mode); |
| void lcd_cls (void); |
| // Jeti |
| void lcd_putc_jeti (uint8_t x, uint8_t y, uint8_t c, uint8_t mode); |
| void lcd_printpj (const char *text, uint8_t mode); |
| void lcd_printpj_at (uint8_t x, uint8_t y, const char *text, uint8_t mode); |
| void lcd_plot (uint8_t x, uint8_t y, uint8_t mode); |
| void lcd_line (unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, uint8_t mode); |
| void lcd_rect (uint8_t x1, uint8_t y1, uint8_t widthx, uint8_t widthy, uint8_t mode); |
| void lcd_frect (uint8_t x1, uint8_t y1, uint8_t widthx, uint8_t widthy, uint8_t mode); |
| void lcd_circle (int16_t x0, int16_t y0, int16_t radius, uint8_t mode); |
| void lcd_fcircle (int16_t x0, int16_t y0, int16_t radius); |
| void lcd_circ_line (uint8_t x, uint8_t y, uint8_t r, uint16_t deg, uint8_t mode); |
| void lcd_ellipse (int16_t x0, int16_t y0, int16_t rx, int16_t ry, uint8_t mode); |
| void lcd_ellipse_line (uint8_t x, uint8_t y, uint8_t rx, uint8_t ry, uint16_t deg, uint8_t mode); |
| void lcd_ecircle (int16_t x0, int16_t y0, int16_t radius, uint8_t mode); |
| void lcd_ecirc_line (uint8_t x, uint8_t y, uint8_t r, uint16_t deg, uint8_t mode); |
| void lcd_view_font (uint8_t page); |
| void lcd_print_hex_at (uint8_t x, uint8_t y, uint8_t h, uint8_t mode); |
| void lcd_write_number_u (uint8_t number); |
| void lcd_write_number_u_at (uint8_t x, uint8_t y, uint8_t number); |
| /** |
| * Write only some digits of a unsigned <number> at <x>/<y> |
| * <length> represents the length to rightbound the number |
| * <pad> = 1 will cause blank spaced to be filled up with zeros e.g. 007 instead of 7 |
| */ |
| void write_ndigit_number_u (uint8_t x, uint8_t y, uint16_t number, int16_t length, uint8_t pad); |
| /** |
| * Write only some digits of a signed <number> at <x>/<y> |
| * <length> represents the length to rightbound the number |
| * <pad> = 1 will cause blank spaced to be filled up with zeros e.g. 007 instead of 7 |
| */ |
| void write_ndigit_number_s (uint8_t x, uint8_t y, int16_t number, int16_t length, uint8_t pad); |
| /** |
| * Write only some digits of a unsigned <number> at <x>/<y> as /10th of the value |
| * <length> represents the length to rightbound the number |
| * <pad> = 1 will cause blank spaced to be filled up with zeros e.g. 00.7 instead of .7 |
| */ |
| void write_ndigit_number_u_10th (uint8_t x, uint8_t y, uint16_t number, int16_t length, uint8_t pad); |
| /** |
| * Write only some digits of a unsigned <number> at <x>/<y> as /100th of the value |
| * <length> represents the length to rightbound the number |
| * <pad> = 1 will cause blank spaced to be filled up with zeros e.g. 00.7 instead of .7 |
| */ |
| void write_ndigit_number_u_100th (uint8_t x, uint8_t y, uint16_t number, int16_t length, uint8_t pad); |
| /** |
| * Write only some digits of a signed <number> at <x>/<y> as /10th of the value |
| * <length> represents the length to rightbound the number |
| * <pad> = 1 will cause blank spaced to be filled up with zeros e.g. 00.7 instead of .7 |
| */ |
| void write_ndigit_number_s_10th (uint8_t x, uint8_t y, int16_t number, int16_t length, uint8_t pad); |
| /** |
| * write <seconds> as human readable time at <x>/<y> |
| */ |
| void write_time (uint8_t x, uint8_t y, uint16_t seconds); |
| /** |
| * wirte a <position> at <x>/<y> assuming it is a gps position for long-/latitude |
| */ |
| void write_gps_pos (uint8_t x, uint8_t y, int32_t position); |
| #endif |
| /Transportables_Koptertool/tags/V-0.1.2/lipo.c |
|---|
| 0,0 → 1,105 |
| /***************************************************************************** |
| * Copyright (C) 2009 Peter "woggle" Mack, mac@denich.net * |
| * * |
| * This program is free software; you can redistribute it and/or modify * |
| * it under the terms of the GNU General Public License as published by * |
| * the Free Software Foundation; either version 2 of the License. * |
| * * |
| * This program 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 General Public License for more details. * |
| * * |
| * You should have received a copy of the GNU General Public License * |
| * along with this program; if not, write to the * |
| * Free Software Foundation, Inc., * |
| * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
| * * |
| *****************************************************************************/ |
| #include <avr/io.h> |
| #include <avr/interrupt.h> |
| #include <avr/pgmspace.h> |
| #include <util/delay.h> |
| #include "main.h" // LEDs |
| #include "timer.h" // Keys |
| #include "lcd.h" |
| #include "lipo.h" |
| volatile uint8_t AD_Ready = 0; |
| volatile uint8_t AD_Channel = 0; |
| volatile uint16_t AD_Val[4]; |
| volatile uint8_t AD_WarnLevel; |
| volatile uint8_t AD_Warn = 0; |
| //***************************************************************************** |
| // |
| ISR(ADC_vect) |
| { |
| LED1_TOGGLE; |
| AD_Val[AD_Channel] = ADC; |
| if (AD_Val[AD_Channel] <= (AD_WarnLevel * 20)) |
| { |
| AD_Warn |= (1 << AD_Channel); |
| } |
| AD_Channel++; |
| AD_Channel &= 0x03; |
| ADMUX = (ADMUX & 0xe0) | AD_Channel; |
| if (AD_Channel) |
| { |
| ADCSRA |= (1 << ADSC); |
| } |
| else |
| { |
| AD_Ready = 1; |
| } |
| } |
| //***************************************************************************** |
| // |
| void ADC_Init(void) |
| { |
| DIDR0 = 0x0f; // disable digital inputs on PA0-3 |
| ADMUX = (1 << REFS1) | (1 << REFS0); // internal 2.56 V ref. |
| ADCSRB = 0; // free running mode |
| // enable ADC, start conversion, auto trigger, enable interrupt, prescaler = 128 |
| ADCSRA = (1 << ADEN) | (1 << ADSC) | (0 << ADATE) | (1 << ADIE) | (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); |
| } |
| //***************************************************************************** |
| // |
| void lipo (void) |
| { |
| uint8_t i; |
| lcd_cls (); |
| lcd_printp_at (0, 0, PSTR("LiPo Display"), 0); |
| lcd_printpns_at (0, 7, PSTR(" Exit"), 0); |
| lcd_printp_at (0, 2, PSTR("Cell 1:"), 0); |
| lcd_printp_at (0, 3, PSTR("Cell 2:"), 0); |
| lcd_printp_at (0, 4, PSTR("Cell 3:"), 0); |
| lcd_printp_at (0, 5, PSTR("Cell 4:"), 0); |
| do |
| { |
| if (AD_Ready) |
| { |
| for (i = 0; i < 4; i++) |
| { |
| //write_ndigit_number_u (0, 2 + i, AD_Val[i], 4, 0); |
| //write_ndigit_number_u_10th (6, 2 + i, AD_Val[i] >> 1, 3, 0); |
| write_ndigit_number_u_100th (10, 2 + i, AD_Val[i] >> 1, 10, 0); |
| } |
| AD_Ready = 0; |
| ADCSRA |= (1 << ADSC); |
| } |
| } |
| while (!get_key_press (1 << KEY_ESC)); |
| get_key_press(KEY_ALL); |
| } |
| /Transportables_Koptertool/tags/V-0.1.2/lipo.h |
|---|
| 0,0 → 1,34 |
| /***************************************************************************** |
| * Copyright (C) 2009 Peter "woggle" Mack, mac@denich.net * |
| * * |
| * This program is free software; you can redistribute it and/or modify * |
| * it under the terms of the GNU General Public License as published by * |
| * the Free Software Foundation; either version 2 of the License. * |
| * * |
| * This program 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 General Public License for more details. * |
| * * |
| * You should have received a copy of the GNU General Public License * |
| * along with this program; if not, write to the * |
| * Free Software Foundation, Inc., * |
| * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
| * * |
| *****************************************************************************/ |
| #ifndef _LIPO_H |
| #define _LIPO_H |
| //***************************************************************************** |
| // |
| extern volatile uint16_t AD_Val[4]; |
| extern volatile uint8_t AD_WarnLevel; |
| extern volatile uint8_t AD_Warn; |
| //***************************************************************************** |
| // |
| void ADC_Init(void); |
| void lipo (void); |
| #endif |
| /Transportables_Koptertool/tags/V-0.1.2/main.c |
|---|
| 0,0 → 1,156 |
| /***************************************************************************** |
| * Copyright (C) 2008 Thomas Kaiser, thomas@ft-fanpage.de * |
| * Copyright (C) 2009-2010 Peter "woggle" Mack, mac@denich.net * |
| * * |
| * This program is free software; you can redistribute it and/or modify * |
| * it under the terms of the GNU General Public License as published by * |
| * the Free Software Foundation; either version 2 of the License. * |
| * * |
| * This program 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 General Public License for more details. * |
| * * |
| * You should have received a copy of the GNU General Public License * |
| * along with this program; if not, write to the * |
| * Free Software Foundation, Inc., * |
| * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
| * * |
| * * |
| * Credits to: * |
| * Holger Buss & Ingo Busker from mikrokopter.de for the MK project + SVN * |
| * http://www.mikrokopter.de * |
| * Gregor "killagreg" Stobrawa for his version of the MK code * |
| * Thomas Kaiser "thkais" for the original project. See * |
| * http://www.ft-fanpage.de/mikrokopter/ * |
| * http://forum.mikrokopter.de/topic-4061-1.html * |
| * Claas Anders "CaScAdE" Rathje for providing the font and his C-OSD code * |
| * http://www.mylifesucks.de/oss/c-osd/ * |
| *****************************************************************************/ |
| #include <inttypes.h> |
| #include <avr/io.h> |
| #include <avr/interrupt.h> |
| #include <avr/pgmspace.h> |
| #include <avr/eeprom.h> |
| #include <util/delay.h> |
| #include "main.h" |
| #include "lcd.h" |
| #include "usart.h" |
| #include "parameter.h" |
| #include "menu.h" |
| #include "display.h" |
| #include "timer.h" |
| #include "jeti.h" |
| #include "lipo.h" |
| #include "eeprom.h" |
| #include "mk-data-structs.h" |
| #define LEDS // my development board has some status LEDs |
| //#define MTEST // Menu Test (skip FC/NC detection) |
| Version_t *version; |
| volatile uint8_t mode = 0; |
| uint8_t hardware = 0; |
| uint8_t current_hardware = 0; |
| int main (void) |
| { |
| uint8_t timeout; |
| PORTA = 0xF0; |
| PORTB = 0x43; |
| PORTC = 0xFF; |
| PORTD = 0x70; |
| #ifdef LEDS |
| DDRC = 0x1C; |
| DDRD = 0xF0; |
| #else |
| // DDRC = 0x03; |
| DDRD = 0x80; |
| #endif |
| ReadParameter (); |
| LCD_Init (); |
| USART_Init (); |
| JETI_Init(); |
| TIMER0_Init (); |
| ADC_Init(); |
| sei (); |
| #ifndef MTEST |
| lcd_cls (); |
| //lcd_printp (PSTR("Portable Kopter Tool\r\n"), 0); |
| lcd_printp (PSTR("MK Multi Box\r\n"), 0); |
| lcd_printp (PSTR("checking hardware..."), 0); |
| // switch to NC |
| USART_putc (0x1b); |
| USART_putc (0x1b); |
| USART_putc (0x55); |
| USART_putc (0xaa); |
| USART_putc (0x00); |
| mode = 'V'; |
| timeout = 50; |
| while (!rxd_buffer_locked && timeout) |
| { |
| SendOutData('v', ADDRESS_ANY, 0); |
| timer = 20; |
| while (timer > 0); |
| timeout--; |
| } |
| if (timeout != 0) |
| { |
| Decode64 (); |
| version = (Version_t *) pRxData; |
| lcd_cls (); |
| //lcd_printp (PSTR("Portable Kopter Tool\r\n"), 0); |
| lcd_printp (PSTR("MK Multi Box\r\n"), 0); |
| lcd_printp (PSTR("found:\r\n\n"), 0); |
| if ((rxd_buffer[1] - 'a') == ADDRESS_FC) |
| { |
| lcd_printp (PSTR("Flight-Ctrl\r\n"), 0); |
| hardware = FC; |
| current_hardware = hardware; |
| } |
| else if ((rxd_buffer[1] - 'a') == ADDRESS_NC) |
| { |
| lcd_printp (PSTR("Navi-Ctrl\r\n"), 0); |
| hardware = NC; |
| current_hardware = hardware; |
| } |
| lcd_printp (PSTR("Version: "), 0); |
| lcd_write_number_u (version->SWMajor); |
| lcd_printp (PSTR("."), 0); |
| lcd_write_number_u (version->SWMinor); |
| lcd_putc (lcd_xpos, lcd_ypos, version->SWPatch + 'a', 0); |
| } |
| else |
| { // timeout occured |
| lcd_printp (PSTR("\r\n\nERROR: no data"), 0); |
| } |
| mode = 0; |
| rxd_buffer_locked = FALSE; |
| timer = 200; |
| while (timer > 0); |
| #endif |
| for (;;) |
| { |
| main_menu (); |
| } |
| } |
| /Transportables_Koptertool/tags/V-0.1.2/main.h |
|---|
| 0,0 → 1,84 |
| /***************************************************************************** |
| * Copyright (C) 2008 Thomas Kaiser, thomas@ft-fanpage.de * |
| * Copyright (C) 2009 Peter "woggle" Mack, mac@denich.net * |
| * * |
| * This program is free software; you can redistribute it and/or modify * |
| * it under the terms of the GNU General Public License as published by * |
| * the Free Software Foundation; either version 2 of the License. * |
| * * |
| * This program 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 General Public License for more details. * |
| * * |
| * You should have received a copy of the GNU General Public License * |
| * along with this program; if not, write to the * |
| * Free Software Foundation, Inc., * |
| * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
| * * |
| * * |
| * Credits to: * |
| * Holger Buss & Ingo Busker from mikrokopter.de for the MK project + SVN * |
| * http://www.mikrokopter.de * |
| * Gregor "killagreg" Stobrawa for his version of the MK code * |
| * Thomas Kaiser "thkais" for the original project. See * |
| * http://www.ft-fanpage.de/mikrokopter/ * |
| * http://forum.mikrokopter.de/topic-4061-1.html * |
| * Claas Anders "CaScAdE" Rathje for providing the font and his C-OSD code * |
| * http://www.mylifesucks.de/oss/c-osd/ * |
| *****************************************************************************/ |
| #ifndef _MAIN_H |
| #define _MAIN_H |
| //***************************************************************************** |
| // |
| #define set_cs() (PORTB |= (1 << PB4)) |
| #define clr_cs() (PORTB &= ~(1 << PB4)) |
| #define set_reset() (PORTB |= (1 << PB2)) |
| #define clr_reset() (PORTB &= ~(1 << PB2)) |
| #define set_A0() (PORTB |= (1 << PB3)) // Data |
| #define clr_A0() (PORTB &= ~(1 << PB3)) // Command |
| #define set_scl() (PORTB |= (1 << PB7)) |
| #define clr_scl() (PORTB &= ~(1 << PB7)) |
| #define set_si() (PORTB |= (1 << PB5)) |
| #define clr_si() (PORTB &= ~(1 << PB5)) |
| #define LED1_OFF PORTC |= (1 << PC3) |
| #define LED1_ON PORTC &= ~(1 << PC3) |
| #define LED1_TOGGLE PORTC ^= (1 << PC3) |
| #define LED2_OFF PORTD |= (1 << PD4) |
| #define LED2_ON PORTD &= ~(1 << PD4) |
| #define LED2_TOGGLE PORTD ^= (1 << PD4) |
| #define LED3_OFF PORTD |= (1 << PD5) |
| #define LED3_ON PORTD &= ~(1 << PD5) |
| #define LED3_TOGGLE PORTD ^= (1 << PD5) |
| #define LED4_OFF PORTD |= (1 << PD6) |
| #define LED4_ON PORTD &= ~(1 << PD6) |
| #define LED4_TOGGLE PORTD ^= (1 << PD6) |
| #define LED5_OFF PORTC |= (1 << PC4) |
| #define LED5_ON PORTC &= ~(1 << PC4) |
| #define LED5_TOGGLE PORTC ^= (1 << PC4) |
| #define LED6_OFF PORTC |= (1 << PC2) |
| #define LED6_ON PORTC &= ~(1 << PC2) |
| #define LED6_TOGGLE PORTC ^= (1 << PC2) |
| #define LED_ALL_OFF {LED1_OFF; LED2_OFF; LED3_OFF; LED4_OFF; LED5_OFF; LED6_OFF;} |
| #define NC 1 |
| #define FC 2 |
| #define MK3MAG 3 |
| #define MKGPS 4 |
| //***************************************************************************** |
| // |
| extern volatile uint8_t mode; |
| extern uint8_t hardware; |
| extern uint8_t current_hardware; |
| #endif |
| /Transportables_Koptertool/tags/V-0.1.2/menu.c |
|---|
| 0,0 → 1,253 |
| /***************************************************************************** |
| * Copyright (C) 2009-2010 Peter "woggle" Mack, mac@denich.net * |
| * * |
| * This program is free software; you can redistribute it and/or modify * |
| * it under the terms of the GNU General Public License as published by * |
| * the Free Software Foundation; either version 2 of the License. * |
| * * |
| * This program 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 General Public License for more details. * |
| * * |
| * You should have received a copy of the GNU General Public License * |
| * along with this program; if not, write to the * |
| * Free Software Foundation, Inc., * |
| * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
| * * |
| *****************************************************************************/ |
| #include <avr/io.h> |
| #include <inttypes.h> |
| #include <stdlib.h> |
| #include <avr/pgmspace.h> |
| #include "main.h" |
| #include "lcd.h" |
| #include "parameter.h" |
| #include "menu.h" |
| #include "display.h" |
| #include "motortest.h" |
| #include "debug.h" |
| #include "settings.h" |
| #include "timer.h" |
| #include "osd.h" |
| #include "jeti.h" |
| #include "servo.h" |
| #include "lipo.h" |
| #include "status.h" |
| void utils (void); |
| void sett (void); |
| //***************************************************************************** |
| // Main Menu |
| const char mm_item_0[] PROGMEM = "Navi Data"; |
| const char mm_item_1[] PROGMEM = "Display"; |
| const char mm_item_2[] PROGMEM = "Parameters"; |
| const char mm_item_3[] PROGMEM = "Debug Data"; |
| const char mm_item_4[] PROGMEM = "Jeti"; |
| const char mm_item_5[] PROGMEM = "Utilities..."; |
| const struct menu menu_main[] PROGMEM = { |
| {mm_item_0, osd}, |
| {mm_item_1, display_data}, |
| {mm_item_2, edit_parameter}, |
| {mm_item_3, display_debug}, |
| {mm_item_4, jeti}, |
| {mm_item_5, utils}, // sub menu |
| }; |
| #define N_MAIN (sizeof menu_main / sizeof menu_main[0]) |
| //***************************************************************************** |
| // Utilities Menu |
| const char mu_item_0[] PROGMEM = "Motor Test"; |
| const char mu_item_1[] PROGMEM = "I2C Motor Test"; |
| const char mu_item_2[] PROGMEM = "Servo Tester"; |
| const char mu_item_3[] PROGMEM = "LiPo Status"; |
| const char mu_item_4[] PROGMEM = "Status"; |
| const char mu_item_5[] PROGMEM = "Settings..."; |
| const struct menu menu_util[] PROGMEM = { |
| {mu_item_0, motor_test}, |
| {mu_item_1, motor_i2c}, |
| {mu_item_2, servo_test}, |
| {mu_item_3, lipo}, |
| {mu_item_4, status}, |
| {mu_item_5, sett}, // sub menu |
| }; |
| #define N_UTIL (sizeof menu_util / sizeof menu_util[0]) |
| //***************************************************************************** |
| // Settings Menu |
| const char ms_item_0[] PROGMEM = "Orientation"; |
| const char ms_item_1[] PROGMEM = "LiPo Warn"; |
| const char ms_item_2[] PROGMEM = "View Font"; |
| const char ms_item_3[] PROGMEM = "Line"; |
| const char ms_item_4[] PROGMEM = "Rectangle"; |
| const struct menu menu_set[] PROGMEM = { |
| {ms_item_0, set_toggledisplay}, |
| {ms_item_1, set_lipo}, |
| {ms_item_2, set_viewfont}, |
| {ms_item_3, set_line}, |
| {ms_item_4, set_rect}, |
| }; |
| #define N_SET (sizeof menu_set / sizeof menu_set[0]) |
| #if 0 |
| const struct menus PROGMEM = { |
| {menu_main, N_MAIN, title_main}, |
| {menu_util, N_UTIL, title_util}, |
| {menu_set, N_SET, title_set}, |
| }; |
| #endif |
| //***************************************************************************** |
| // |
| void menu_print (const struct menu m[], uint8_t size) |
| { |
| uint8_t i; |
| for (i = MENU_LINE; i < MENU_LINE + size; i++) |
| { |
| lcd_printp_at (MENU_COL, i, (const char *) pgm_read_word(&(m[i - MENU_LINE].str)), 0); |
| } |
| lcd_printpns_at (0, 7, PSTR(" \x1a \x1b Back \x0c"), 0); |
| } |
| //***************************************************************************** |
| // |
| void utils (void) |
| { |
| static uint8_t f = MENU_LINE; |
| do |
| { |
| lcd_cls (); |
| lcd_printp (PSTR("Utilities:"), 0); |
| menu_print(menu_util, N_UTIL); |
| f = menu_choose (MENU_LINE, N_UTIL, CURSOR_COL, f); |
| if (f != 255) |
| { |
| ((pfunc)(pgm_read_word (&(menu_util[f - MENU_LINE].func))))(); |
| } |
| } |
| while (f != 255); |
| f = MENU_LINE; |
| } |
| //***************************************************************************** |
| // |
| void sett (void) |
| { |
| static uint8_t f = MENU_LINE; |
| do |
| { |
| lcd_cls (); |
| lcd_printp (PSTR("Settings:"), 0); |
| menu_print(menu_set, N_SET); |
| f = menu_choose (MENU_LINE, N_SET, CURSOR_COL, f); |
| if (f != 255) |
| { |
| ((pfunc)(pgm_read_word (&(menu_set[f - MENU_LINE].func))))(); |
| } |
| } |
| while (f != 255); |
| f = MENU_LINE; |
| } |
| //***************************************************************************** |
| // print cursor |
| void menu_set_cursor (uint8_t before, uint8_t line, uint8_t pos) |
| { |
| lcd_printp_at (pos, before, PSTR(" "), 0); |
| lcd_printp_at (pos, line, PSTR("\x1D"), 0); |
| } |
| //***************************************************************************** |
| // |
| uint8_t menu_choose (uint8_t min, uint8_t max, uint8_t pos, uint8_t start) |
| { |
| uint8_t line = start; |
| uint8_t before = start; |
| uint8_t k; |
| menu_set_cursor (line, line, pos); |
| do |
| { |
| if (get_key_press (1 << KEY_PLUS)) |
| { |
| if (line < max) |
| { |
| line ++; |
| } |
| else |
| { |
| line = min; |
| } |
| } |
| if (get_key_press (1 << KEY_MINUS)) |
| { |
| if (line > min) |
| { |
| line --; |
| } |
| else |
| { |
| line = max; |
| } |
| } |
| if (line != before) |
| { |
| menu_set_cursor (before, line, pos); |
| before = line; |
| } |
| } |
| while (!(k = get_key_press ((1 << KEY_ENTER) | (1 << KEY_ESC)))); |
| if (k & (1 << KEY_ESC)) |
| { |
| line = 255; |
| } |
| return line; |
| } |
| //***************************************************************************** |
| // |
| void main_menu (void) |
| { |
| static uint8_t f = MENU_LINE; |
| lcd_cls (); |
| //lcd_printp (PSTR("Portable Kopter Tool"), 0); |
| lcd_printp (PSTR("MK Multi Box"), 0); |
| menu_print(menu_main, N_MAIN); |
| f = menu_choose (MENU_LINE, N_MAIN, CURSOR_COL, f); |
| if (f != 255) |
| { |
| ((pfunc)(pgm_read_word (&(menu_main[f - MENU_LINE].func))))(); |
| } |
| else |
| { |
| f = MENU_LINE; |
| } |
| } |
| /Transportables_Koptertool/tags/V-0.1.2/menu.h |
|---|
| 0,0 → 1,43 |
| /***************************************************************************** |
| * Copyright (C) 2009 Peter "woggle" Mack, mac@denich.net * |
| * * |
| * This program is free software; you can redistribute it and/or modify * |
| * it under the terms of the GNU General Public License as published by * |
| * the Free Software Foundation; either version 2 of the License. * |
| * * |
| * This program 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 General Public License for more details. * |
| * * |
| * You should have received a copy of the GNU General Public License * |
| * along with this program; if not, write to the * |
| * Free Software Foundation, Inc., * |
| * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
| * * |
| *****************************************************************************/ |
| #ifndef _MENU_H |
| #define _MENU_H |
| //***************************************************************************** |
| // |
| #define CURSOR_COL 1 // column where the menu cursor is displayed |
| #define MENU_LINE 1 // starting line of menu |
| #define MENU_COL 3 // column where the menu starts |
| //***************************************************************************** |
| // |
| typedef void(*pfunc)(void); |
| struct menu { |
| const char *str; |
| pfunc func; |
| }; |
| //***************************************************************************** |
| // |
| void main_menu (void); |
| uint8_t menu_choose (uint8_t min, uint8_t max, uint8_t pos, uint8_t start); |
| #endif |
| /Transportables_Koptertool/tags/V-0.1.2/mk-data-structs.h |
|---|
| 0,0 → 1,246 |
| /**************************************************************************** |
| * Copyright (C) 2009 by Claas Anders "CaScAdE" Rathje * |
| * admiralcascade@gmail.com * |
| * Project-URL: http://www.mylifesucks.de/oss/c-osd/ * |
| * * |
| * This program is free software; you can redistribute it and/or modify * |
| * it under the terms of the GNU General Public License as published by * |
| * the Free Software Foundation; either version 2 of the License. * |
| * * |
| * This program 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 General Public License for more details. * |
| * * |
| * You should have received a copy of the GNU General Public License * |
| * along with this program; if not, write to the * |
| * Free Software Foundation, Inc., * |
| * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
| ****************************************************************************/ |
| /* ########################################################################## |
| * gain some fake arm compat :) |
| * ##########################################################################*/ |
| #define u8 uint8_t |
| #define s8 int8_t |
| #define u16 uint16_t |
| #define s16 int16_t |
| #define u32 uint32_t |
| #define s32 int32_t |
| //***************************************************************************** |
| // |
| #define NUMBER_OF_DEBUG_DATAS 32 |
| #define ANALOG_NAME_LENGTH 16 |
| // Version of supported serial protocol |
| #define MIN_VERSION 7 |
| #define MAX_VERSION 10 |
| // Setting index |
| #define SETTING_1 1 |
| #define SETTING_2 2 |
| #define SETTING_3 3 |
| #define SETTING_4 4 |
| #define SETTING_5 5 |
| #define SETTING_CURRENT 0xff |
| typedef struct |
| { |
| unsigned char SWMajor; |
| unsigned char SWMinor; |
| unsigned char ProtoMajor; |
| unsigned char ProtoMinor; |
| unsigned char SWPatch; |
| unsigned char Reserved[5]; |
| } __attribute__((packed)) Version_t; |
| /* |
| * FC Debug Struct |
| * portions taken and adapted from |
| * http://svn.mikrokopter.de/mikrowebsvn/filedetails.php?repname=FlightCtrl&path=%2Ftags%2FV0.72p%2Fuart.h |
| */ |
| typedef struct { |
| uint8_t Digital[2]; |
| // NC: unsigned; FC: signed !!!! |
| int16_t Analog[32]; // Debugvalues |
| } __attribute__((packed)) DebugData_t; |
| typedef struct { |
| uint8_t line; |
| uint8_t text[20]; |
| } __attribute__((packed)) Display_t; |
| typedef struct |
| { |
| char Revision; |
| char Name[12]; |
| signed char Motor[16][4]; |
| } __attribute__((packed)) Mixer_t; |
| /* |
| * NaviCtrl OSD Structs |
| * portions taken and adapted from |
| * http://svn.mikrokopter.de/mikrowebsvn/filedetails.php?repname=NaviCtrl&path=%2Ftags%2FV0.15c%2Fuart1.h |
| */ |
| typedef struct { |
| s32 Longitude; // in 1E-7 deg |
| s32 Latitude; // in 1E-7 deg |
| s32 Altitude; // in mm |
| u8 Status; // validity of data |
| } __attribute__((packed)) GPS_Pos_t; |
| typedef struct { |
| s16 Distance; // distance to target in cm |
| s16 Bearing; // course to target in deg |
| } __attribute__((packed)) GPS_PosDev_t; |
| typedef struct { |
| u8 Version; // version of the data structure |
| GPS_Pos_t CurrentPosition; // see ubx.h for details |
| GPS_Pos_t TargetPosition; |
| GPS_PosDev_t TargetPositionDeviation; |
| GPS_Pos_t HomePosition; |
| GPS_PosDev_t HomePositionDeviation; |
| u8 WaypointIndex; // index of current waypoints running from 0 to WaypointNumber-1 |
| u8 WaypointNumber; // number of stored waypoints |
| u8 SatsInUse; // number of satellites used for position solution |
| s16 Altimeter; // hight according to air pressure |
| s16 Variometer; // climb(+) and sink(-) rate |
| u16 FlyingTime; // in seconds |
| u8 UBat; // Battery Voltage in 0.1 Volts |
| u16 GroundSpeed; // speed over ground in cm/s (2D) |
| s16 Heading; // current flight direction in ∞ as angle to north |
| s16 CompassHeading; // current compass value in ∞ |
| s8 AngleNick; // current Nick angle in 1∞ |
| s8 AngleRoll; // current Rick angle in 1∞ |
| u8 RC_Quality; // RC_Quality |
| u8 MKFlags; // Flags from FC |
| u8 NCFlags; // Flags from NC |
| u8 Errorcode; // 0 --> okay |
| u8 OperatingRadius; // current operation radius around the Home Position in m |
| s16 TopSpeed; // velocity in vertical direction in cm/s |
| u8 TargetHoldTime; // time in s to stay at the given target, counts down to 0 if target has been reached |
| u8 Reserve[4]; // for future use |
| } __attribute__((packed)) NaviData_t; |
| /* |
| * MikroKopter Flags |
| * taken from |
| * http://svn.mikrokopter.de/mikrowebsvn/filedetails.php?repname=FlightCtrl&path=%2Ftags%2FV0.73d%2Ffc.h |
| */ |
| #define FLAG_MOTOR_RUN 1 |
| #define FLAG_FLY 2 |
| #define FLAG_CALIBRATE 4 |
| #define FLAG_START 8 |
| #define FLAG_NOTLANDUNG 16 |
| #define FLAG_LOWBAT 32 |
| /* |
| * NaviCtrl Flags |
| * taken from |
| * http://mikrocontroller.cco-ev.de/mikrowebsvn/filedetails.php?repname=NaviCtrl&path=%2Ftags%2FV0.15c%2Fuart1.h |
| */ |
| #define NC_FLAG_FREE 0x01 |
| #define NC_FLAG_PH 0x02 |
| #define NC_FLAG_CH 0x04 |
| #define NC_FLAG_RANGE_LIMIT 0x08 |
| #define NC_FLAG_NOSERIALLINK 0x10 |
| #define NC_FLAG_TARGET_REACHED 0x20 |
| #define NC_FLAG_MANUAL_CONTROL 0x40 |
| #define NC_FLAG_8 0x80 |
| typedef struct |
| { |
| unsigned char Kanalbelegung[8]; // GAS[0], GIER[1],NICK[2], ROLL[3], POTI1, POTI2, POTI3 |
| unsigned char GlobalConfig; // 0x01=Höhenregler aktiv,0x02=Kompass aktiv, 0x04=GPS aktiv, 0x08=Heading Hold aktiv |
| unsigned char Hoehe_MinGas; // Wert : 0-100 |
| unsigned char Luftdruck_D; // Wert : 0-250 |
| unsigned char MaxHoehe; // Wert : 0-32 |
| unsigned char Hoehe_P; // Wert : 0-32 |
| unsigned char Hoehe_Verstaerkung; // Wert : 0-50 |
| unsigned char Hoehe_ACC_Wirkung; // Wert : 0-250 |
| unsigned char Hoehe_HoverBand; // Wert : 0-250 |
| unsigned char Hoehe_GPS_Z; // Wert : 0-250 |
| unsigned char Hoehe_StickNeutralPoint;// Wert : 0-250 |
| unsigned char Stick_P; // Wert : 1-6 |
| unsigned char Stick_D; // Wert : 0-64 |
| unsigned char Gier_P; // Wert : 1-20 |
| unsigned char Gas_Min; // Wert : 0-32 |
| unsigned char Gas_Max; // Wert : 33-250 |
| unsigned char GyroAccFaktor; // Wert : 1-64 |
| unsigned char KompassWirkung; // Wert : 0-32 |
| unsigned char Gyro_P; // Wert : 10-250 |
| unsigned char Gyro_I; // Wert : 0-250 |
| unsigned char Gyro_D; // Wert : 0-250 |
| unsigned char Gyro_Gier_P; // Wert : 10-250 |
| unsigned char Gyro_Gier_I; // Wert : 0-250 |
| unsigned char UnterspannungsWarnung; // Wert : 0-250 |
| unsigned char NotGas; // Wert : 0-250 //Gaswert bei Empängsverlust |
| unsigned char NotGasZeit; // Wert : 0-250 // Zeitbis auf NotGas geschaltet wird, wg. Rx-Problemen |
| unsigned char UfoAusrichtung; // X oder + Formation |
| unsigned char I_Faktor; // Wert : 0-250 |
| unsigned char UserParam1; // Wert : 0-250 |
| unsigned char UserParam2; // Wert : 0-250 |
| unsigned char UserParam3; // Wert : 0-250 |
| unsigned char UserParam4; // Wert : 0-250 |
| unsigned char ServoNickControl; // Wert : 0-250 // Stellung des Servos |
| unsigned char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo |
| unsigned char ServoNickMin; // Wert : 0-250 // Anschlag |
| unsigned char ServoNickMax; // Wert : 0-250 // Anschlag |
| //--- Seit V0.75 |
| unsigned char ServoRollControl; // Wert : 0-250 // Stellung des Servos |
| unsigned char ServoRollComp; // Wert : 0-250 |
| unsigned char ServoRollMin; // Wert : 0-250 |
| unsigned char ServoRollMax; // Wert : 0-250 |
| //--- |
| unsigned char ServoNickRefresh; // |
| unsigned char LoopGasLimit; // Wert: 0-250 max. Gas während Looping |
| unsigned char LoopThreshold; // Wert: 0-250 Schwelle für Stickausschlag |
| unsigned char LoopHysterese; // Wert: 0-250 Hysterese für Stickausschlag |
| unsigned char AchsKopplung1; // Wert: 0-250 Faktor, mit dem Gier die Achsen Roll und Nick koppelt (NickRollMitkopplung) |
| unsigned char AchsKopplung2; // Wert: 0-250 Faktor, mit dem Nick und Roll verkoppelt werden |
| unsigned char CouplingYawCorrection; // Wert: 0-250 Faktor, mit dem Nick und Roll verkoppelt werden |
| unsigned char WinkelUmschlagNick; // Wert: 0-250 180°-Punkt |
| unsigned char WinkelUmschlagRoll; // Wert: 0-250 180°-Punkt |
| unsigned char GyroAccAbgleich; // 1/k (Koppel_ACC_Wirkung) |
| unsigned char Driftkomp; |
| unsigned char DynamicStability; |
| unsigned char UserParam5; // Wert : 0-250 |
| unsigned char UserParam6; // Wert : 0-250 |
| unsigned char UserParam7; // Wert : 0-250 |
| unsigned char UserParam8; // Wert : 0-250 |
| //---Output --------------------------------------------- |
| unsigned char J16Bitmask; // for the J16 Output |
| unsigned char J16Timing; // for the J16 Output |
| unsigned char J17Bitmask; // for the J17 Output |
| unsigned char J17Timing; // for the J17 Output |
| // seit version V0.75c |
| unsigned char WARN_J16_Bitmask; // for the J16 Output |
| unsigned char WARN_J17_Bitmask; // for the J17 Output |
| //---NaviCtrl--------------------------------------------- |
| unsigned char NaviGpsModeControl; // Parameters for the Naviboard |
| unsigned char NaviGpsGain; |
| unsigned char NaviGpsP; |
| unsigned char NaviGpsI; |
| unsigned char NaviGpsD; |
| unsigned char NaviGpsPLimit; |
| unsigned char NaviGpsILimit; |
| unsigned char NaviGpsDLimit; |
| unsigned char NaviGpsACC; |
| unsigned char NaviGpsMinSat; |
| unsigned char NaviStickThreshold; |
| unsigned char NaviWindCorrection; |
| unsigned char NaviSpeedCompensation; |
| unsigned char NaviOperatingRadius; |
| unsigned char NaviAngleLimitation; |
| unsigned char NaviPH_LoginTime; |
| //---Ext.Ctrl--------------------------------------------- |
| unsigned char ExternalControl; // for serial Control |
| //------------------------------------------------ |
| unsigned char BitConfig; // (war Loop-Cfg) Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
| unsigned char ServoCompInvert; // // 0x01 = Nick, 0x02 = Roll 0 oder 1 // WICHTIG!!! am Ende lassen |
| unsigned char ExtraConfig; // bitcodiert |
| char Name[12]; |
| } __attribute__((packed)) mk_param_struct_t; |
| #define STRUCT_PARAM_LAENGE sizeof(mk_param_struct_t) |
| /Transportables_Koptertool/tags/V-0.1.2/motortest.c |
|---|
| 0,0 → 1,281 |
| /***************************************************************************** |
| * Copyright (C) 2009 Peter "woggle" Mack, mac@denich.net * |
| * * |
| * This program is free software; you can redistribute it and/or modify * |
| * it under the terms of the GNU General Public License as published by * |
| * the Free Software Foundation; either version 2 of the License. * |
| * * |
| * This program 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 General Public License for more details. * |
| * * |
| * You should have received a copy of the GNU General Public License * |
| * along with this program; if not, write to the * |
| * Free Software Foundation, Inc., * |
| * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
| * * |
| *****************************************************************************/ |
| #include <avr/io.h> |
| #include <avr/interrupt.h> |
| #include <avr/pgmspace.h> |
| #include <string.h> |
| #include <util/twi.h> |
| #include "main.h" |
| #include "motortest.h" |
| #include "lcd.h" |
| #include "usart.h" |
| #include "timer.h" |
| uint8_t m; |
| #define SCL_FREQ 200000L |
| #define I2C_STATE_TX_ADDRESS 0 |
| #define I2C_STATE_TX_DATA 1 |
| #define I2C_STATE_TX_STOP 2 |
| #define I2C_STATE_RX_ADDRESS 3 |
| #define I2C_STATE_RX_1BYTE 4 |
| #define I2C_STATE_RX_2BYTE 5 |
| volatile uint8_t i2c_state; |
| volatile uint8_t motor_addr = 0; |
| //***************************************************************************** |
| // |
| void I2C_Init(void) |
| { |
| uint8_t sreg = SREG; |
| cli(); |
| DDRC &= ~(1<<DDC1); // SDA is input |
| DDRC |= (1<<DDC0); // SCL is output |
| PORTC |= (1<<PORTC0)|(1<<PORTC1); // pull up SDA and SCL |
| // prescaler 1 (TWPS1 = 0, TWPS0 = 0) |
| TWSR &= ~((1<<TWPS1)|(1<<TWPS0)); |
| TWBR = ((F_CPU/SCL_FREQ)-16)/2; |
| i2c_state = I2C_STATE_TX_ADDRESS; |
| SREG = sreg; |
| } |
| //***************************************************************************** |
| // |
| void I2C_Start(uint8_t start_state) |
| { |
| i2c_state = start_state; |
| // generate start condition and enable interrupts |
| TWCR = (1<<TWINT) | (1<<TWSTA) | (1<<TWEN) | (1<<TWIE); |
| } |
| //***************************************************************************** |
| // |
| void I2C_Stop(uint8_t start_state) |
| { |
| i2c_state = start_state; |
| // generate stop condition and disable interrupt |
| TWCR = (1<<TWINT) | (1<<TWSTO) | (1<<TWEN); |
| } |
| //***************************************************************************** |
| // |
| void I2C_WriteByte(int8_t b) |
| { |
| TWDR = b; |
| // clear interrupt flag (TWINT = 1) |
| // enable i2c bus (TWEN = 1) |
| // enable interrupt (TWIE = 1) |
| TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE); |
| } |
| //***************************************************************************** |
| // |
| void I2C_ReceiveByte(void) |
| { |
| TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE) | (1<<TWEA); |
| } |
| //***************************************************************************** |
| // |
| void I2C_ReceiveLastByte(void) |
| { |
| TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE); |
| } |
| //***************************************************************************** |
| // |
| ISR (TWI_vect) |
| { |
| int8_t mrCurrent; |
| int8_t mrMaxpwm; |
| switch (i2c_state++) |
| { |
| // TWI Master Transmit |
| case I2C_STATE_TX_ADDRESS: |
| I2C_WriteByte(0x52 + (motor_addr * 2) ); // select slave adress in tx mode |
| break; |
| case I2C_STATE_TX_DATA: |
| I2C_WriteByte(m); |
| break; |
| case I2C_STATE_TX_STOP: |
| if(TWSR == TW_MT_DATA_NACK) // Data transmitted, NACK received |
| { |
| // error occured |
| } |
| I2C_Stop(I2C_STATE_TX_ADDRESS); |
| I2C_Start(I2C_STATE_RX_ADDRESS); // Repeated start -> switch slave or switch Master Transmit -> Master Receive |
| break; |
| // Master Receive Data |
| case I2C_STATE_RX_ADDRESS: |
| I2C_WriteByte(0x53 + (motor_addr * 2) ); // select slave adress in rx mode |
| if(TWSR != TW_MR_SLA_ACK) // SLA+R transmitted, if not ACK received |
| { // no response from the addressed slave received |
| I2C_Stop(I2C_STATE_TX_ADDRESS); |
| } |
| else |
| { |
| I2C_ReceiveByte(); //Transmit 1st byte |
| } |
| break; |
| case I2C_STATE_RX_1BYTE: //Read 1st byte and transmit 2nd Byte |
| mrCurrent = TWDR; |
| I2C_ReceiveLastByte(); // nack |
| break; |
| case I2C_STATE_RX_2BYTE: |
| //Read 2nd byte |
| mrMaxpwm = TWDR;; |
| I2C_Stop(I2C_STATE_TX_ADDRESS); |
| break; |
| default: |
| I2C_Stop(I2C_STATE_TX_ADDRESS); |
| break; |
| } |
| } |
| //***************************************************************************** |
| // |
| void motor_i2c (void) |
| { |
| uint8_t blc = 0; |
| lcd_cls (); |
| m = 0; |
| lcd_printp (PSTR("I2C Motor Test"), 0); |
| lcd_printpns_at (0, 7, PSTR("dec inc Exit Off"), 0); |
| lcd_printp (PSTR("BLC #"), 0); |
| do |
| { |
| if ((get_key_press (1 << KEY_PLUS) || get_key_rpt (1 << KEY_PLUS)) && (m < 254)) |
| { |
| m++; |
| } |
| if ((get_key_press (1 << KEY_MINUS) || get_key_rpt (1 << KEY_MINUS)) && (m > 0)) |
| { |
| lcd_frect (GX, GY, (m * 108) / 255, 10, 0); |
| m--; |
| } |
| if (get_key_press (1 << KEY_ENTER)) |
| { |
| lcd_frect (GX, GY, (m * 108) / 255, 10, 0); |
| m = 0; |
| } |
| } |
| while (!get_key_press (1 << KEY_ESC)); |
| // switch all engines off at exit ! |
| } |
| //***************************************************************************** |
| // |
| void motor (uint8_t m) |
| { |
| memset (buffer, m, 16); |
| #if 0 |
| buffer[0] = m; // 0 |
| buffer[1] = m; // 1 |
| buffer[2] = m; // 2 |
| buffer[3] = m; // 3 |
| buffer[4] = m; // 4 |
| buffer[5] = m; // 5 |
| buffer[6] = m; // 6 |
| buffer[7] = m; // 7 |
| buffer[8] = m; // 8 |
| buffer[9] = m; // 9 |
| buffer[10] = m; // 10 |
| buffer[11] = m; // 11 |
| buffer[12] = m; // 12 |
| buffer[13] = m; // 13 |
| buffer[14] = m; // 14 |
| buffer[15] = m; // 15 |
| #endif |
| SendOutData('t', ADDRESS_FC, 1, buffer, 16); |
| // hier könnte man noch eine I2C-Ausgabe einbauen... |
| lcd_frect (GX, GY, (m * 108) / 255, 10, 1); |
| write_ndigit_number_u (MX, MY, m, 3, 0); |
| } |
| //***************************************************************************** |
| // |
| void motor_test (void) |
| { |
| //uint8_t m; |
| lcd_cls (); |
| m = 0; |
| lcd_printp (PSTR("Motor Test"), 0); |
| lcd_printpns_at (0, 7, PSTR("dec inc Exit Off"), 0); |
| if (hardware == NC && current_hardware == NC) |
| { |
| SwitchToFC(); |
| } |
| motor (m); |
| do |
| { |
| if ((get_key_press (1 << KEY_PLUS) || get_key_rpt (1 << KEY_PLUS)) && (m < 254)) |
| { |
| m++; |
| } |
| if ((get_key_press (1 << KEY_MINUS) || get_key_rpt (1 << KEY_MINUS)) && (m > 0)) |
| { |
| lcd_frect (GX, GY, (m * 108) / 255, 10, 0); |
| m--; |
| } |
| if (get_key_press (1 << KEY_ENTER)) |
| { |
| lcd_frect (GX, GY, (m * 108) / 255, 10, 0); |
| m = 0; |
| } |
| motor (m); |
| } |
| while (!get_key_press (1 << KEY_ESC)); |
| // switch all engines off at exit ! |
| motor (0); |
| } |
| /Transportables_Koptertool/tags/V-0.1.2/motortest.h |
|---|
| 0,0 → 1,36 |
| /***************************************************************************** |
| * Copyright (C) 2009 Peter "woggle" Mack, mac@denich.net * |
| * * |
| * This program is free software; you can redistribute it and/or modify * |
| * it under the terms of the GNU General Public License as published by * |
| * the Free Software Foundation; either version 2 of the License. * |
| * * |
| * This program 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 General Public License for more details. * |
| * * |
| * You should have received a copy of the GNU General Public License * |
| * along with this program; if not, write to the * |
| * Free Software Foundation, Inc., * |
| * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
| * * |
| *****************************************************************************/ |
| #ifndef _MOTORTEST_H |
| #define _MOTORTEST_H |
| //***************************************************************************** |
| // |
| #define MX 0 |
| #define MY 3 |
| #define GX (MX + 3) * 6 + 1 // 3 for 3 digits |
| #define GY MY * 8 - 2 |
| #define MAXGX 128 - GX |
| //***************************************************************************** |
| // |
| void motor_test (void); |
| void motor_i2c (void); |
| #endif |
| /Transportables_Koptertool/tags/V-0.1.2/osd.c |
|---|
| 0,0 → 1,462 |
| /***************************************************************************** |
| * Copyright (C) 2009 Peter "woggle" Mack, mac@denich.net * |
| * based on the C-OSD code from CaScAdE * |
| * http://www.mylifesucks.de/oss/c-osd/ * |
| * * |
| * This program is free software; you can redistribute it and/or modify * |
| * it under the terms of the GNU General Public License as published by * |
| * the Free Software Foundation; either version 2 of the License. * |
| * * |
| * This program 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 General Public License for more details. * |
| * * |
| * You should have received a copy of the GNU General Public License * |
| * along with this program; if not, write to the * |
| * Free Software Foundation, Inc., * |
| * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
| * * |
| *****************************************************************************/ |
| #include <avr/io.h> |
| #include <inttypes.h> |
| #include <stdlib.h> |
| #include <avr/pgmspace.h> |
| #include "main.h" |
| #include "osd.h" |
| #include "lcd.h" |
| #include "timer.h" |
| #include "usart.h" |
| #include "mk-data-structs.h" |
| #define COSD_WASFLYING 4 |
| /* ########################################################################## |
| * global definitions and global vars |
| * ##########################################################################*/ |
| NaviData_t *naviData; |
| // stats for after flight |
| int16_t max_Altimeter = 0; |
| uint16_t max_GroundSpeed = 0; |
| int16_t max_Distance = 0; |
| uint8_t min_UBat = 255; |
| uint16_t max_FlyingTime = 0; |
| // cache old vars for blinking attribute, checkup is faster than full |
| // attribute write each time |
| volatile uint8_t last_UBat = 255; |
| volatile uint8_t last_RC_Quality = 255; |
| volatile uint16_t ftimer = 0; |
| // store stats description in progmem to save space |
| const char stats_item_0[] PROGMEM = "max Altitude:"; |
| const char stats_item_1[] PROGMEM = "max Speed :"; |
| const char stats_item_2[] PROGMEM = "max Distance:"; |
| const char stats_item_3[] PROGMEM = "min Voltage :"; |
| const char stats_item_4[] PROGMEM = "max Time :"; |
| const char stats_item_5[] PROGMEM = "Long. :"; |
| const char stats_item_6[] PROGMEM = "Lat. :"; |
| const char *stats_item_pointers[] PROGMEM = { |
| stats_item_0, |
| stats_item_1, |
| stats_item_2, |
| stats_item_3, |
| stats_item_4, |
| stats_item_5, |
| stats_item_6 |
| }; |
| //char* rose = "-+-N-+-O-+-S-+-W-+-N-+-O-+-S-+-W-+-N-+-O-+-S-+-W"; |
| const char rose[48] PROGMEM = { |
| 0x0e, 0x0f, 0x0e, 'N', 0x0e, 0x0f, 0x0e, 'O', 0x0e, 0x0f, 0x0e, 'S', |
| 0x0e, 0x0f, 0x0e, 'W', 0x0e, 0x0f, 0x0e, 'N', 0x0e, 0x0f, 0x0e, 'O', |
| 0x0e, 0x0f, 0x0e, 'S', 0x0e, 0x0f, 0x0e, 'W', 0x0e, 0x0f, 0x0e, 'N', |
| 0x0e, 0x0f, 0x0e, 'O', 0x0e, 0x0f, 0x0e, 'S', 0x0e, 0x0f, 0x0e, 'W'}; |
| // the center is char 19 (north), we add the current heading in 8th |
| // which would be 22.5 degrees, but float would bloat up the code |
| // and *10 / 225 would take ages... so we take the uncorrect way |
| const char str_NE[] PROGMEM = "NE"; |
| const char str_E[] PROGMEM = "E "; |
| const char str_SE[] PROGMEM = "SE"; |
| const char str_S[] PROGMEM = "S "; |
| const char str_SW[] PROGMEM = "SW"; |
| const char str_W[] PROGMEM = "W "; |
| const char str_NW[] PROGMEM = "NW"; |
| const char str_N[] PROGMEM = "N "; |
| const char *directions_p[8] PROGMEM = { |
| str_NE, |
| str_E, |
| str_SE, |
| str_S, |
| str_SW, |
| str_W, |
| str_NW, |
| str_N |
| }; |
| // Flags |
| uint8_t COSD_FLAGS2 = 0; |
| /** |
| * convert the <heading> gotton from NC into an index |
| */ |
| uint8_t heading_conv (uint16_t heading) |
| { |
| if (heading > 23 && heading < 68) |
| { |
| return 0; //direction = "NE"; |
| } |
| else if (heading > 67 && heading < 113) |
| { |
| return 1; //direction = "E "; |
| } |
| else if (heading > 112 && heading < 158) |
| { |
| return 2; //direction = "SE"; |
| } |
| else if (heading > 157 && heading < 203) |
| { |
| return 3; //direction = "S "; |
| } |
| else if (heading > 202 && heading < 248) |
| { |
| return 4; //direction = "SW"; |
| } |
| else if (heading > 247 && heading < 293) |
| { |
| return 5; //direction = "W "; |
| } |
| else if (heading > 292 && heading < 338) |
| { |
| return 6; //direction = "NW"; |
| } |
| return 7; //direction = "N "; |
| } |
| /** |
| * draw a compass rose at <x>/<y> for <heading> |
| */ |
| void draw_compass (uint8_t x, uint8_t y, uint16_t heading) |
| { |
| uint8_t front = 19 + (heading / 22); |
| for (uint8_t i = 0; i < 9; i++) |
| { |
| lcd_putc (x++, y, pgm_read_byte(&rose[front - 4 + i]), 0); |
| } |
| } |
| /* ########################################################################## |
| * variometer |
| * ##########################################################################*/ |
| /** |
| * draw variometer arrows at <x>/<y> according to <variometer> |
| */ |
| void draw_variometer (uint8_t x, uint8_t y, uint8_t width_x, uint8_t width_y, int16_t variometer) |
| { |
| lcd_rect (x, y - ((width_y - 1) / 2), width_x, width_y, 1); |
| lcd_frect (x + 1, y - ((width_y - 1) / 2) + 1, width_x - 2, width_y - 2, 0); |
| lcd_line (x, y, x + width_x, y, 1); |
| if (variometer > 0) |
| { // gain height |
| switch (variometer / 5) |
| { |
| case 0: |
| lcd_frect (x + 3, y - 1, 3, 1, 1); |
| break; |
| case 1: |
| lcd_frect (x + 2, y - 3, 5, 3, 1); |
| break; |
| case 2: |
| lcd_frect (x + 2, y - 4, 5, 4, 1); |
| break; |
| default: |
| lcd_frect (x + 1, y - 5, 7, 5, 1); |
| break; |
| } |
| } |
| else |
| { // sink |
| switch (variometer / -5) |
| { |
| case 0: |
| lcd_frect (x + 3, y, 3, 1, 1); |
| break; |
| case 1: |
| lcd_frect (x + 2, y, 5, 3, 1); |
| break; |
| case 2: |
| lcd_frect (x + 2, y, 5, 4, 1); |
| break; |
| default: |
| lcd_frect (x + 1, y, 7, 5, 1); |
| break; |
| } |
| } |
| } |
| #define TIMEOUT 200 // 2 sec |
| void print_statistics (void) |
| { |
| uint8_t line = 0; |
| lcd_cls (); |
| // max Altitude |
| lcd_printpns_at (0, line, stats_item_pointers[0], 0); |
| write_ndigit_number_s (13, line, max_Altimeter / 30, 4, 0); |
| lcd_putc (17, line, 'm', 0); |
| // max Speed |
| lcd_printpns_at (0, ++line, stats_item_pointers[1], 0); |
| write_ndigit_number_u (14, line, (uint16_t) (((uint32_t) max_GroundSpeed * (uint32_t) 9) / (uint32_t) 250), 3, 0); |
| lcd_printpns_at(17, line, PSTR("km/h"), 0); |
| // max Distance |
| lcd_printpns_at (0, ++line, stats_item_pointers[2], 0); |
| write_ndigit_number_u (14, line, max_Distance / 10, 3, 0); |
| lcd_putc (17, line, 'm', 0); |
| // min voltage |
| lcd_printpns_at (0, ++line, stats_item_pointers[3], 0); |
| write_ndigit_number_u_10th (13, line, min_UBat, 3, 0); |
| lcd_putc (17, line, 'V', 0); |
| // max time |
| lcd_printpns_at (0, ++line, stats_item_pointers[4], 0); |
| write_time (13, line, max_FlyingTime); |
| // longitude |
| lcd_printpns_at (0, ++line, stats_item_pointers[5], 0); |
| write_gps_pos (8, line, naviData->CurrentPosition.Longitude); |
| // latitude |
| lcd_printpns_at (0, ++line, stats_item_pointers[6], 0); |
| write_gps_pos (8, line, naviData->CurrentPosition.Latitude); |
| while (!get_key_press (1 << KEY_ESC)) |
| timer = TIMEOUT; |
| COSD_FLAGS2 &= ~COSD_WASFLYING; |
| get_key_press(KEY_ALL); |
| lcd_cls(); |
| } |
| void osd (void) |
| { |
| uint8_t flag; |
| uint8_t tmp_dat; |
| // Clear statistics |
| max_Altimeter = 0; |
| max_GroundSpeed = 0; |
| max_Distance = 0; |
| min_UBat = 255; |
| max_FlyingTime = 0; |
| // flags from last round to check for changes |
| uint8_t old_MKFlags = 0; |
| uint16_t old_hh = 0; |
| lcd_cls(); |
| if (hardware == FC) |
| { |
| lcd_printp_at(0, 3, PSTR("Only with NC !"), 0); |
| timer = 100; |
| while (timer > 0); |
| } |
| SwitchToNC(); |
| mode = 'O'; |
| // request OSD Data from NC every 100ms |
| // RS232_request_mk_data (1, 'o', 100); |
| tmp_dat = 10; |
| SendOutData ('o', ADDRESS_NC, 1, &tmp_dat, 1); |
| // and disable debug... |
| // RS232_request_mk_data (0, 'd', 0); |
| tmp_dat = 0; |
| SendOutData ('d', ADDRESS_ANY, 1, &tmp_dat, 1); |
| flag = 0; |
| timer = TIMEOUT; |
| do |
| { |
| if (rxd_buffer_locked) |
| { |
| timer = TIMEOUT; |
| Decode64 (); |
| naviData = (NaviData_t *) pRxData; |
| flag = 1; |
| if (naviData->MKFlags & FLAG_MOTOR_RUN) |
| { // should be engines running |
| // motors are on, assume we were/are flying |
| COSD_FLAGS2 |= COSD_WASFLYING; |
| } |
| else |
| { // stats |
| if ((COSD_FLAGS2 & COSD_WASFLYING) || (get_key_press (1 << KEY_ENTER))) |
| { |
| print_statistics (); |
| } |
| } |
| // lcd_printpns_at (0, 3, PSTR("012345678901234567890"), 0); |
| lcd_ecircle(22, 35, 16, 1); |
| // Ground Speed |
| write_ndigit_number_u (1, 0, (uint16_t) (((uint32_t) naviData->GroundSpeed * (uint32_t) 9) / (uint32_t) 250), 3, 0); |
| lcd_printpns_at(4, 0, PSTR("km/h"), 0); |
| // Compass |
| write_ndigit_number_u (14, 0, naviData->CompassHeading, 3, 0); |
| lcd_putc (17, 0, 0x1E, 0); // degree symbol |
| lcd_printpns_at (18, 0, (const char *) (pgm_read_word ( &(directions_p[heading_conv(naviData->CompassHeading)]))), 0); |
| draw_compass (12, 1, naviData->CompassHeading); |
| // Altitude |
| //note:lephisto:according to several sources it's /30 |
| if (naviData->Altimeter > 300 || naviData->Altimeter < -300) |
| { |
| // above 10m only write full meters |
| write_ndigit_number_s (0, 1, naviData->Altimeter / 30, 4, 0); |
| } |
| else |
| { |
| // up to 10m write meters.dm |
| write_ndigit_number_s_10th (0, 1, naviData->Altimeter / 3, 3, 0); |
| } |
| lcd_putc (4, 1, 'm', 0); |
| draw_variometer (55, 7, 9, 13, naviData->Variometer); |
| // TODO: verify correctness |
| uint16_t heading_home = (naviData->HomePositionDeviation.Bearing + 360 - naviData->CompassHeading) % 360; |
| lcd_ecirc_line (22, 35, 15, old_hh, 0); |
| old_hh = heading_home; |
| lcd_ecirc_line (22, 35, 15, heading_home, 1); |
| write_ndigit_number_u (7, 3, heading_home, 3, 0); |
| lcd_putc (10, 3, 0x1e, 0); // degree symbol |
| write_ndigit_number_u (7, 2, naviData->HomePositionDeviation.Distance / 10, 3, 0); |
| lcd_putc (10, 2, 'm', 0); |
| // Sats in use |
| lcd_printp_at(10, 4, PSTR("Sats"), 0); |
| write_ndigit_number_u (8, 4, naviData->SatsInUse, 2, 0); |
| if (naviData->NCFlags & NC_FLAG_MANUAL_CONTROL) |
| { |
| lcd_putc (19, 4, 'M', 0); // rc transmitter |
| } |
| else |
| { |
| lcd_putc (19, 4, ' ', 0); // clear |
| } |
| #if 0 |
| lcd_printp_at(11, 5, PSTR("Mode:"), 0); |
| if (naviData->NCFlags & NC_FLAG_CH) |
| { |
| lcd_printpns_at (17, 5, PSTR("CH "), 0); |
| } |
| else if (naviData->NCFlags & NC_FLAG_PH) |
| { |
| lcd_printpns_at (17, 5, PSTR("PH "), 0); |
| } |
| else |
| { // (naviData->NCFlags & NC_FLAG_FREE) |
| lcd_printpns_at (17, 5, PSTR("Free"), 0); // sat2 (free) |
| } |
| #endif |
| if (naviData->NCFlags & NC_FLAG_CH) |
| { |
| lcd_printpns_at (10, 5, PSTR("Coming Home"), 0); |
| } |
| else if (naviData->NCFlags & NC_FLAG_PH) |
| { |
| lcd_printpns_at (10, 5, PSTR("Pos. Hold "), 0); |
| } |
| else |
| { // (naviData->NCFlags & NC_FLAG_FREE) |
| lcd_printpns_at (10, 5, PSTR("Free "), 0); |
| } |
| // Battery level |
| write_ndigit_number_u_10th (0, 7, naviData->UBat, 3, 0); |
| lcd_putc (4, 7, 'V', 0); |
| // Flying time |
| write_time (7, 7, naviData->FlyingTime); |
| // lcd_printp_at (7, 6, PSTR("Fly"), 0); |
| // RC |
| write_ndigit_number_u (15, 7, naviData->RC_Quality, 3, 0); |
| lcd_putc (18, 7, 0x1F, 0); // RC-transmitter |
| if (naviData->NCFlags & NC_FLAG_NOSERIALLINK) |
| { |
| lcd_printpns_at(19, 7, PSTR(" "), 0); // clear |
| } |
| else |
| { |
| lcd_printpns_at(19, 7, PSTR("PC"), 0); |
| } |
| // remember statistics (only when engines running) |
| if (naviData->MKFlags & FLAG_MOTOR_RUN) |
| { |
| if (naviData->Altimeter > max_Altimeter) max_Altimeter = naviData->Altimeter; |
| if (naviData->GroundSpeed > max_GroundSpeed) max_GroundSpeed = naviData->GroundSpeed; |
| if (naviData->HomePositionDeviation.Distance > max_Distance) max_Distance = naviData->HomePositionDeviation.Distance; |
| if (naviData->UBat < min_UBat) min_UBat = naviData->UBat; |
| if (naviData->FlyingTime > max_FlyingTime) max_FlyingTime = naviData->FlyingTime; |
| } |
| // remember last values |
| last_RC_Quality = naviData->RC_Quality; |
| last_UBat = naviData->UBat; |
| old_MKFlags = naviData->MKFlags; |
| rxd_buffer_locked = FALSE; |
| } |
| } |
| while (!get_key_press (1 << KEY_ESC) && timer); |
| get_key_press(KEY_ALL); |
| // disable OSD Data from NC |
| // RS232_request_mk_data (1, 'o', 0); |
| tmp_dat = 0; |
| SendOutData ('o', ADDRESS_NC, 1, &tmp_dat, 1); |
| mode = 0; |
| rxd_buffer_locked = FALSE; |
| if (!timer) |
| { // timeout occured |
| if (flag) |
| { |
| lcd_cls (); |
| } |
| lcd_printp_at (0, 2, PSTR("ERROR: no data"), 0); |
| timer = 100; |
| while (timer > 0); |
| print_statistics (); |
| } |
| } |
| /Transportables_Koptertool/tags/V-0.1.2/osd.h |
|---|
| 0,0 → 1,29 |
| /***************************************************************************** |
| * Copyright (C) 2009 Peter "woggle" Mack, mac@denich.net * |
| * based on the C-OSD code from CaScAdE * |
| * http://www.mylifesucks.de/oss/c-osd/ * |
| * * |
| * This program is free software; you can redistribute it and/or modify * |
| * it under the terms of the GNU General Public License as published by * |
| * the Free Software Foundation; either version 2 of the License. * |
| * * |
| * This program 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 General Public License for more details. * |
| * * |
| * You should have received a copy of the GNU General Public License * |
| * along with this program; if not, write to the * |
| * Free Software Foundation, Inc., * |
| * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
| * * |
| *****************************************************************************/ |
| #ifndef _OSD_H |
| #define _OSD_H |
| //***************************************************************************** |
| // |
| void osd (void); |
| #endif |
| /Transportables_Koptertool/tags/V-0.1.2/parameter.c |
|---|
| 0,0 → 1,687 |
| /***************************************************************************** |
| * Copyright (C) 2008 Thomas Kaiser, thomas@ft-fanpage.de * |
| * Copyright (C) 2009 Peter "woggle" Mack, mac@denich.net * |
| * * |
| * This program is free software; you can redistribute it and/or modify * |
| * it under the terms of the GNU General Public License as published by * |
| * the Free Software Foundation; either version 2 of the License. * |
| * * |
| * This program 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 General Public License for more details. * |
| * * |
| * You should have received a copy of the GNU General Public License * |
| * along with this program; if not, write to the * |
| * Free Software Foundation, Inc., * |
| * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
| * * |
| *****************************************************************************/ |
| #include <avr/io.h> |
| #include <avr/pgmspace.h> |
| #include <util/delay.h> |
| #include <string.h> |
| #include <stdlib.h> |
| #include "main.h" |
| #include "lcd.h" |
| #include "timer.h" |
| #include "usart.h" |
| #include "parameter.h" |
| #include "menu.h" |
| #include "mk-data-structs.h" |
| #define TIMEOUT 500 // 5 sec |
| mk_param_struct_t *mk_param_struct; |
| uint8_t array[8]; |
| prog_uchar p_menus[12][11]= |
| { |
| "Config ", |
| "Channels ", |
| "Stick ", |
| "Hight ", |
| "Gyro ", |
| "Looping ", |
| "Camera ", |
| "Misc. ", |
| "User ", |
| "Coupling ", |
| "Config(2) ", |
| "Loopingset" |
| }; |
| // Diese Tabelle ordnet die eingelesenen Parameter den Menü-Seiten zu |
| prog_uchar p_menu_number[67]= |
| { |
| 2, 2, 2, 2, 2, 2, 2, 2, // Die ersten 8 Parameter werden auf Menüseite 2 angezeigt (=Kanalzuordnungen) |
| 0, 4, 4, 4, 4, 4, 4, 3, |
| 3, 3, 8, 8, 8, 8, 5, 5, |
| 8,8,8,0,5,9,9,9, |
| 9,7,7,7,7,7,7,6, |
| 6,6,10,10,6,6,5,5, |
| 5,9,9,9,9,0,7,11, |
| 11,11,11,12,12, 12, |
| 12,12,12,12,12 |
| }; |
| prog_uchar p_limits[199]= // Limits f¸r die Parameter |
| { |
| 1,8,2, // 2:Nick (3) |
| 1,8,2, // 2:Roll (4) |
| 1,8,2, // 2:Gas (2) |
| 1,8,2, // 2:Gier (1) |
| 1,8,2, // 2:Poti1 (6) |
| 1,8,2, // 2:Poti2 (6) |
| 1,8,2, // 2:Poti3 (7) |
| 1,8,2, // 2:Poti4 (5) |
| 0,0,0, // 1:Config |
| 0,255,4, // 4:Höhe MinGas (30) |
| 0,255,4, // 4:Luftdruck_D (30) |
| 0,255,4, // 4:MaxHöhe (Setpoint?) (Poti4) |
| 0,255,4, // 4:Höhe_P (10) |
| 0,50,4, // 4:Höhe Verst‰rkung (3) |
| 0,255,4, // 4:Höhe Z-acc (30) |
| 0,6,3, // 3:Nick/Roll P (3) |
| 0,64,3, // 3:Nick/Roll D (4) |
| 0,20,3, // 3:Gier_P (6) |
| 0,32,8, // 8:Min.Gas (15) |
| 33,250,8, // 8:Max.Gas (250) |
| 0,50,8, // 5:Gyro-Acc Faktor (30) |
| 0,255,8, // 8:Kompass-Wirkung (128) |
| 0,0,5, // 5:Gyro-P (80) |
| 0,0,5, // 5:Gyro-I (120) |
| 0,250,8, // 8:Unterspannung (94) |
| 0,250,8, // 8:Not-Gas Zeit (20) |
| 0,250,8, // 8:Not-Gas (35) |
| 0,1,0, // Ufo-Ausrichtung (X +) |
| 0,255,5, // I-Faktor (32) |
| 0,255,9, // 9:User1 (80) |
| 0,255,9, // 9:User2 (0) |
| 0,255,9, // 9:User3 |
| 0,255,9, // 9:User4 |
| 0,255,7, // 7:Servo Nick Control (100) |
| 0,250,7, // 7:Servo Nick Compensation (40) |
| 0,250,7, // 7:Servo Nick min (50) |
| 0,250,7, // 7:Servo Nick max (150) |
| 0,25,7, // 7:Servo Nick refrsh (5) |
| 0,255,6, // 6:Loop Gas Limit (50) |
| 0,250,6, // 6:Loop Ansprechschwelle (90) |
| 0,250,6, // 6:Loop Hysterese (50) |
| 0,255,10, // 10:Achskopplung (90) |
| 0,255,10, // 10:Achsgegenkopplung (5) |
| 0,250,6, // 6:Turnover Nick (100) |
| 0,250,6, // 6:Turnover Roll (100) |
| 0,250,5, // 5: Gyro-Abgleich (Comp.) (32) |
| 0,250,5, // 5: Drift (4) |
| 0,255,5, // 5: Dynamic stability (75) |
| 0,255,9, // 9:User5 |
| 0,255,9, // 9:User6 |
| 0,255,9, // 9:User7 |
| 0,255,9, // 9:User8 (0) |
| 0,0,1, // 6:Loop Config (0) |
| 0,1,7 // 7:Servo Nick Compensation Invert (0) |
| }; |
| prog_char bin_parameter[12][16] = // Die bin‰r kodierten Parametern werden getrennt behandelt. |
| { |
| "Loop up ", |
| "Loop down ", |
| "Loop left ", |
| "Loop right ", |
| "Höhenregler ", // 8 |
| "Höhenschalter ", |
| "Headhold ", |
| "Kompass ", |
| "KompassFix ", |
| "GPS ", |
| "Achsenkopplung ", |
| "Drehrate " |
| }; |
| prog_char parameter[54][16]= |
| { |
| "Nick ", // 0 (3) |
| "Roll ", // 1 (4) |
| "Gas ", // (2) |
| "Gier ", // (1) |
| "Poti1 ", // (6) |
| "Poti2 ", // (6) |
| "Poti3 ", // (7) |
| "Poti4 ", // 7 (5) |
| "Config ", // 8 |
| "Höhe_MinGas ", // 9 (30) |
| "Luftdruck_D ", // 10 Wert : 0-250 (30) |
| "MaxHöhe ", // 11 Wert : 0-250 251 -> Poti1 (Poti4) |
| "Höhe_P ", // 12 Wert : 0-32 (10) |
| "Höhe_Verstaerk", // 13 Wert : 0-50 |
| "Höhe_ACC_Wirk.", // 14 Wert : 0-250 (30) |
| "Stick_P ", // 15 Wert : 1-6 |
| "Stick_D ", // 16 Wert : 0-64 |
| "Gier_P ", // 17 Wert : 1-20 POTI(?) |
| "Gas_Min ", // 17 Wert : 0-32 |
| "Gas_Max ", // 18 Wert : 33-250 |
| "GyroAccFaktor ", // 19 Wert : 1-64 |
| "KompassWirkung ", // 20 Wert : 0-250 |
| "Gyro_P ", // 21 Wert : 0-250 |
| "Gyro_I ", // 22 Wert : 0-250 |
| "Unterspannung ", // 23 Wert : 0-250 |
| "NotGas ", // 24 Wert : 0-250 // Gaswert bei Empangsverlust |
| "NotGasZeit ", // 25 Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen |
| "UfoAusrichtung ", // 26 X oder + Formation |
| "I_Faktor ", // 27 = 32; |
| "UserParam1 ", // 28 = 32 * 4; //zur freien Verwendung |
| "UserParam2 ", // 29 zur freien Verwendung |
| "UserParam3 ", // 30 zur freien Verwendung |
| "UserParam4 ", // 31 zur freien Verwendung |
| "ServoNickCtrl ", // 32 Wert : 0-250 // Stellung des Servos |
| "ServoNickComp ", // 33 Wert : 0-250 // Einfluss Gyro/Servo |
| "ServoNickMin ", // 34 Wert : 0-250 // Anschlag |
| "ServoNickMax ", // 35 Wert : 0-250 // Anschlag |
| "ServoNickRefrsh", // 36 |
| "LoopGasLimit ", // 37 |
| "LoopThreshold ", // 38 Wert: 0-250 Schwelle f¸r Stickausschlag |
| "LoopHysterese ", // 39 |
| "AchsKopplung ", // 40 |
| "AchsGegenKoppl.", // 41 |
| "WinklUmschlNick", // 42 |
| "WinklUmschlRoll", // 43 |
| "GyroAccAbgleich", // 44 1/k |
| "Driftkomp ", // 45 |
| "DynamicStabilit", // 47 |
| "UserParam5 ", // 48 zur freien Verwendung |
| "UserParam6 ", // 49 zur freien Verwendung |
| "UserParam7 ", // 50 zur freien Verwendung |
| "UserParam8 ", // 51 zur freien Verwendung |
| "LoopConfig ", // 52 Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
| "ServoNickCompIn" // 53 Wert : 0-250 // Richtung Einfluss Gyro/Servo |
| // "Name " // 54 |
| }; |
| void binary (uint8_t data, uint8_t *feld) // Wandelt eine 8-Bit Zahl in eine Bin‰rzahl um (Array mit 8 Elementen) |
| { // Wird f¸r die Flags (Loop + Grundkonfiguration) benˆtigt |
| uint8_t i; |
| i=0; |
| for (i = 0; i < 8; i++) |
| { |
| if ((1 << i) & data) |
| feld[i] = 1; |
| else |
| feld[i] = 0; |
| } |
| } |
| uint8_t bindec (uint8_t *feld) // wandelt eine Bin‰rzahl (im Array) in eine 8-Bit Zahl |
| { // Wird f¸r die Flags (Loop + Grundkonfiguration) benˆtigt |
| uint8_t i; |
| uint8_t result; |
| result = 0; |
| for (i = 0; i < 8; i++) |
| { |
| if (feld[i] == 1) |
| result += 1 << i; |
| } |
| return result; |
| } |
| void decimal (uint8_t data, uint8_t *text) // wandelt Wert in rechtsbündigen Text um |
| { // (schneller/kleiner als printf()) |
| text[0] = data/100; |
| data -= (text[0] * 100); |
| text[1] = data/10; |
| data -= (text[1] *10); |
| text[2] = data + 0x30; |
| text[0] += 0x30; |
| text[1] += 0x30; |
| if (text[0] == 0x30) |
| { |
| text[0] = 0x20; |
| if (text[1] == 0x30) |
| text[1] = 0x20; |
| } |
| text[3] = 0x00; |
| } |
| uint8_t show_parameter (uint8_t number) // Zeigt eine Parameter-Seite an und gibt die ausgew‰hlte Zeile zur¸ck |
| { |
| #if 0 |
| uint8_t i; |
| uint8_t line; |
| uint8_t text[25]; |
| uint8_t bin[8]; |
| line = 0; |
| if (number > 1) |
| { |
| for (i = 0; i<66; i++) |
| { |
| if (pgm_read_byte(p_limits+i*3+2) == number) |
| { |
| array[line] = i; |
| decimal(buffer[i],text); |
| lcd_print_at(0,line,text,0); |
| lcd_printp_at (5,line,parameter[i],0); |
| if (line <= 7) |
| line++; |
| } |
| } |
| } |
| else |
| { // Sonderf‰lle: Bin‰re Eingabe |
| if (number == 1) |
| { |
| binary(buffer[52],bin); // Loop-Config |
| text[1] = 0x00; |
| for (i = 0; i < 4; i++) |
| { |
| text[0] = bin[i] + 0x30; |
| lcd_print_at (0, i, text, 0); |
| lcd_printp_at (5, i, bin_parameter[i], 0); |
| } |
| } |
| if (number == 0) |
| { |
| binary (buffer[8], bin); // Config |
| text[1] = 0x00; |
| for (i = 0; i < 8; i++) |
| { |
| text[0] = bin[i] + 0x30; |
| lcd_print_at (0, i, text, 0); |
| lcd_printp_at (5, i, bin_parameter[i + 4], 0); |
| } |
| } |
| } |
| return line; |
| #endif |
| } |
| void edit_parameter2 (uint8_t page, uint8_t lines) // ƒndern der Parameter einer Seite |
| { |
| #if 0 |
| uint8_t line; |
| uint8_t par; |
| uint8_t min; |
| uint8_t max; |
| uint8_t text[10]; |
| uint8_t bin[8]; |
| if (page > 1) // "normale" Parameter-Seiten |
| { |
| line = menu_choose(0,lines-1,4); |
| if (line != 255) // Wenn line == 255, wurde Escape gedr¸ckt |
| { |
| par = buffer[array[line]]; |
| min = pgm_read_byte(p_limits + par * 3); |
| max = pgm_read_byte(p_limits + par * 3 + 1); |
| lcd_printp_at(4,line,PSTR("-"),0); |
| while (key != key_nokey); |
| do |
| { |
| if (key == key_minus) |
| { |
| //if (par > min) // ‹berpr¸fung der Parameter auf Bereichs¸berschreitung derzeit deaktiviert |
| par --; |
| } |
| if (key == key_plus) |
| { |
| //if (par < max) |
| par ++; |
| } |
| decimal(par,text); |
| lcd_print_at(0,line,text,0); |
| timer = 20; |
| while (timer > 0); |
| } |
| while ((key != 0x04) && (key != 0x08)); |
| if (key == 0x08) |
| buffer[array[line]] = par; |
| } |
| } |
| if (page == 1) // Spezialfall: Loop-Config (einzelne Bits setzen / lˆschen) |
| { |
| binary(buffer[52],bin); |
| text[1] = 0x00; |
| line = menu_choose(0,3,4); |
| if (line != 255) // Wenn line == 255, wurde Escape gedr¸ckt |
| { |
| par = bin[line]; |
| lcd_printp_at(4,line,PSTR("-"),0); |
| do |
| { |
| if (key == key_minus) |
| { |
| par = 0x00; |
| } |
| if (key == key_plus) |
| { |
| par = 0x01; |
| } |
| text[0] = par+0x30; |
| lcd_print_at(0,line,text,0); |
| timer = 20; |
| while (timer > 0); |
| } |
| while ((key != key_enter) && (key != key_esc)); |
| if (key == key_enter) |
| { |
| bin[line] = par; |
| buffer[52] = bindec(bin); |
| } |
| lcd_cls(); |
| decimal(buffer[52],text); |
| lcd_print(text,0); |
| timer = 200; |
| while(timer > 0); |
| } |
| } |
| if (page == 0) // Spezialfall: Allgemeine Konfiguration (einzelne Bits setzen/lˆschen) |
| { |
| binary(buffer[8],bin); |
| text[1] = 0x00; |
| line = menu_choose(0,7,4); |
| if (line != 255) // Wenn line == 255, wurde Escape gedr¸ckt |
| { |
| par = bin[line]; |
| lcd_printp_at(4,line,PSTR("-"),0); |
| do |
| { |
| if (key == key_minus) |
| { |
| par = 0x00; |
| } |
| if (key == key_plus) |
| { |
| par = 0x01; |
| } |
| text[0] = par+0x30; |
| lcd_print_at(0,line,text,0); |
| timer = 20; |
| while (timer > 0); |
| } |
| while ((key != key_enter) && (key != key_esc)); |
| if (key == key_enter) |
| { |
| bin[line] = par; |
| buffer[8] = bindec(bin); |
| } |
| lcd_cls(); |
| decimal(buffer[8],text); |
| lcd_print(text,0); |
| timer = 200; |
| while(timer > 0); |
| } |
| } |
| #endif |
| } |
| void edit_parameter1 (void) |
| { |
| uint8_t cmd; |
| uint8_t setting = 0xff; |
| mode = 'P'; // Settings |
| lcd_cls (); |
| //mode = 'Q'; // Settings |
| _delay_ms (50); |
| rxd_buffer_locked = FALSE; |
| timer = TIMEOUT; |
| LED2_ON; |
| //SendOutData ('q', ADDRESS_FC, 1, &setting, 1); |
| SendOutData ('p', ADDRESS_FC, 1); |
| while (!rxd_buffer_locked && timer); |
| if (timer) |
| { |
| LED3_ON; |
| Decode64 (); |
| #if 0 |
| mk_param_struct = (mk_param_struct_t *) pRxData + 2; |
| lcd_printp (PSTR("Current Setting: "), 0); |
| lcd_write_number_u (*pRxData); |
| lcd_printp (PSTR("Setting Version: "), 0); |
| lcd_write_number_u (*pRxData+1); |
| #endif |
| LED3_OFF; |
| } |
| else |
| { // timeout occured |
| lcd_printp_at (0, 2, PSTR("ERROR: no data"), 0); |
| timer = 100; |
| while (timer > 0); |
| return; |
| } |
| LED2_OFF; |
| // after all work is done... |
| rxd_buffer_locked = FALSE; |
| #if 0 |
| uint8_t page; // 12 Pages |
| uint8_t text[15]; |
| uint8_t lines; |
| uint8_t parameter; |
| lcd_cls (); |
| lcd_printp (PSTR("Load Setting\r\n"), 0); |
| lcd_printp (PSTR(" 1:\r\n"), 0); |
| lcd_printp (PSTR(" 2:\r\n"), 0); |
| lcd_printp (PSTR(" 3:\r\n"), 0); |
| lcd_printp (PSTR(" 4:\r\n"), 0); |
| lcd_printp (PSTR(" 5:\r\n"), 0); |
| parameter = menu_choose (1, 5, 0); |
| page = 2; |
| if (read_parameter (parameter) == 1) |
| { |
| lcd_printp_at (0, 6, PSTR("Timeout"), 0); |
| } |
| else |
| { |
| do |
| { |
| lcd_cls (); |
| utoa (page, text, 10); |
| lcd_print (text, 0); |
| timer = 50; |
| while (timer > 0); |
| lcd_cls (); |
| lines = show_parameter (page); |
| while (key == key_nokey); |
| if (key == key_plus) |
| page++; |
| if (key == key_minus) |
| page--; |
| if (page == 255) |
| page = 12; |
| if (page > 12) |
| page = 0; |
| if (key == key_enter) |
| edit_parameter2 (page, lines); |
| } |
| while (key != key_esc); |
| lcd_cls (); |
| lcd_printp (PSTR("Parameter speichern?\r\n ja\r\n nein"), 0); |
| lines = menu_choose (1, 2, 0); |
| if (lines == 1 ) |
| { |
| lcd_printp (PSTR("\r\n--->"), 0); |
| write_parameter (5); // Sicherheitshalber wird derzeit ausschliefllich auf Parametersatz 5 gesichert. |
| lcd_printp (PSTR("\r\nParameter gespeichert"), 0); |
| } |
| else |
| { |
| lcd_printp (PSTR("\r\nNicht gespeichert"), 0); |
| } |
| } |
| timer = 100; |
| while (timer > 0); |
| #endif |
| } |
| void display_page (uint8_t page) |
| { |
| lcd_cls (); |
| switch (page) |
| { |
| case 0: |
| lcd_printp (PSTR("Current Setting: "), 0); |
| lcd_write_number_u (*pRxData); |
| lcd_printp (PSTR("\r\nSetting Version: "), 0); |
| lcd_write_number_u (*(pRxData + 1)); |
| #if 0 |
| lcd_printp (PSTR("\r\nRxDataLen: "), 0); |
| lcd_write_number_u (RxDataLen); |
| lcd_printp (PSTR("\r\nRxBytes: "), 0); |
| lcd_write_number_u (ReceivedBytes); |
| #endif |
| break; |
| case 1: |
| lcd_printp (PSTR("Pitch: "), 0); |
| lcd_write_number_u (mk_param_struct->Kanalbelegung[0]); |
| lcd_printp (PSTR("Yaw : "), 0); |
| lcd_write_number_u (mk_param_struct->Kanalbelegung[1]); |
| lcd_printp (PSTR("Nick : "), 0); |
| lcd_write_number_u (mk_param_struct->Kanalbelegung[2]); |
| lcd_printp (PSTR("Roll : "), 0); |
| lcd_write_number_u (mk_param_struct->Kanalbelegung[3]); |
| lcd_printp (PSTR("Poti1: "), 0); |
| lcd_write_number_u (mk_param_struct->Kanalbelegung[4]); |
| lcd_printp (PSTR("Poti2: "), 0); |
| lcd_write_number_u (mk_param_struct->Kanalbelegung[5]); |
| lcd_printp (PSTR("Poti3: "), 0); |
| lcd_write_number_u (mk_param_struct->Kanalbelegung[6]); |
| lcd_printp (PSTR("Poti4: "), 0); |
| lcd_write_number_u (mk_param_struct->Kanalbelegung[7]); |
| break; |
| } |
| } |
| void edit_parameter (void) |
| { |
| uint8_t cmd; |
| uint8_t sett = 0xff; // current active parameter set |
| uint8_t page = 0; |
| SwitchToFC(); |
| mode = 'Q'; // Settings |
| lcd_cls (); |
| _delay_ms (50); |
| rxd_buffer_locked = FALSE; |
| timer = TIMEOUT; |
| SendOutData ('q', ADDRESS_FC, 1, &sett, 1); |
| while (!rxd_buffer_locked && timer); |
| if (timer) |
| { |
| Decode64 (); |
| mk_param_struct = (mk_param_struct_t *) pRxData + 2; |
| display_page (page); |
| if (get_key_press (1 << KEY_MINUS)) |
| { |
| page--; |
| } |
| else if (get_key_press (1 << KEY_PLUS)) |
| { |
| page++; |
| } |
| } |
| else |
| { // timeout occured |
| lcd_printp_at (0, 2, PSTR("ERROR: no data"), 0); |
| timer = 100; |
| while (timer > 0); |
| return; |
| } |
| // after all work is done... |
| //rxd_buffer_locked = FALSE; |
| while (!get_key_press (1 << KEY_ESC)); // ESC |
| mode = 0; |
| rxd_buffer_locked = FALSE; |
| } |
| /Transportables_Koptertool/tags/V-0.1.2/parameter.h |
|---|
| 0,0 → 1,29 |
| /***************************************************************************** |
| * Copyright (C) 2008 Thomas Kaiser, thomas@ft-fanpage.de * |
| * Copyright (C) 2009 Peter "woggle" Mack, mac@denich.net * |
| * * |
| * This program is free software; you can redistribute it and/or modify * |
| * it under the terms of the GNU General Public License as published by * |
| * the Free Software Foundation; either version 2 of the License. * |
| * * |
| * This program 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 General Public License for more details. * |
| * * |
| * You should have received a copy of the GNU General Public License * |
| * along with this program; if not, write to the * |
| * Free Software Foundation, Inc., * |
| * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
| * * |
| *****************************************************************************/ |
| #ifndef _PARAMETER_H |
| #define _PARAMETER_H |
| //***************************************************************************** |
| // |
| void edit_parameter (void); |
| void decimal (uint8_t data, uint8_t *text); |
| #endif |
| /Transportables_Koptertool/tags/V-0.1.2/servo.c |
|---|
| 0,0 → 1,128 |
| /***************************************************************************** |
| * Copyright (C) 2009 Peter "woggle" Mack, mac@denich.net * |
| * * |
| * This program is free software; you can redistribute it and/or modify * |
| * it under the terms of the GNU General Public License as published by * |
| * the Free Software Foundation; either version 2 of the License. * |
| * * |
| * This program 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 General Public License for more details. * |
| * * |
| * You should have received a copy of the GNU General Public License * |
| * along with this program; if not, write to the * |
| * Free Software Foundation, Inc., * |
| * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
| * * |
| *****************************************************************************/ |
| #include <avr/io.h> |
| #include <avr/interrupt.h> |
| #include <avr/pgmspace.h> |
| #include "lcd.h" |
| #include "timer.h" // Keys |
| #include "servo.h" |
| #define SERVO_MIN 313 // 1.0 ms (Servo min) |
| #define SERVO_MAX 625 // 2.0 ms (Servo max) |
| #define SERVO_CENTER 469 // 1.5 ms |
| #define SERVO_PULSE 6250 // 20 ms |
| //***************************************************************************** |
| // |
| ISR(TIMER1_COMPA_vect) |
| { |
| PORTD |= (1 << PD7); |
| } |
| //***************************************************************************** |
| // |
| ISR(TIMER1_COMPB_vect) |
| { |
| PORTD &= ~(1 << PD7); |
| } |
| //***************************************************************************** |
| // |
| void servo_test (void) |
| { |
| uint8_t chg = 0; |
| uint8_t step = 10; |
| DDRD |= (1 << DDD7); // PD7 output |
| TCCR1B = (1 << WGM12) | (1 << CS11) | (1 << CS10); // Prescaler 1/64, CTC mode |
| // 1 step = 3,2 µs (@ 20 MHz) |
| OCR1A = SERVO_PULSE; |
| OCR1B = SERVO_CENTER; |
| TIMSK1 = (1 << OCIE1A) | (1 << OCIE1B); |
| lcd_cls (); |
| lcd_printp (PSTR("Servo Tester"), 0); |
| //lcd_printpns_at (0, 7, PSTR("-1 +1 Exit \x1d\x7c\x1c"), 0); |
| lcd_printpns_at (0, 7, PSTR("-10 +10 Exit \x1d\x7c\x1c"), 0); |
| lcd_frect (SGX, SGY, ((OCR1B - SERVO_MIN) * SMAXGX) / (SERVO_MAX - SERVO_MIN), 10, 1); |
| //write_ndigit_number_u (SMX, SMY, ((OCR1B - SERVO_MIN) * 100) / (SERVO_MAX - SERVO_MIN), 3, 0); // Pulse width in % |
| write_ndigit_number_u_100th(SMX, SMY, (OCR1B * 64) / 200 , 3, 0); // Pulse width in ms |
| do |
| { |
| if ((get_key_press (1 << KEY_PLUS) || get_key_rpt (1 << KEY_PLUS)) && (OCR1B < SERVO_MAX)) |
| { |
| OCR1B += step; |
| if (OCR1B > SERVO_MAX) |
| { |
| OCR1B = SERVO_MAX; |
| } |
| chg++; |
| } |
| else if ((get_key_press (1 << KEY_MINUS) || get_key_rpt (1 << KEY_MINUS)) && (OCR1B > SERVO_MIN)) |
| { |
| lcd_frect (SGX, SGY, ((OCR1B - SERVO_MIN) * SMAXGX) / (SERVO_MAX - SERVO_MIN), 10, 0); |
| OCR1B -= step; |
| if (OCR1B < SERVO_MIN) |
| { |
| OCR1B = SERVO_MIN; |
| } |
| chg++; |
| } |
| else if (get_key_short (1 << KEY_ENTER)) |
| { |
| lcd_frect (SGX, SGY, ((OCR1B - SERVO_MIN) * SMAXGX) / (SERVO_MAX - SERVO_MIN), 10, 0); |
| OCR1B = SERVO_CENTER; |
| chg++; |
| } |
| else if (get_key_long (1 << KEY_ENTER)) |
| { |
| if (step == 1) |
| { |
| step = 10; |
| lcd_printpns_at (0, 7, PSTR("-10 +10 Exit \x1d\x7c\x1c"), 0); |
| } |
| else |
| { |
| step = 1; |
| lcd_printpns_at (0, 7, PSTR("-1 +1 Exit \x1d\x7c\x1c"), 0); |
| } |
| } |
| if (chg) |
| { |
| chg = 0; |
| lcd_frect (SGX, SGY, ((OCR1B - SERVO_MIN) * SMAXGX) / (SERVO_MAX - SERVO_MIN), 10, 1); |
| //write_ndigit_number_u (SMX, SMY, ((OCR1B - SERVO_MIN) * 100) / (SERVO_MAX - SERVO_MIN), 3, 0); // Pulse width in % |
| write_ndigit_number_u_100th(SMX, SMY, (OCR1B * 64) / 200 , 3, 0); // Pulse width in ms |
| } |
| } |
| while (!get_key_press (1 << KEY_ESC)); |
| get_key_press(KEY_ALL); |
| TIMSK1 = 0; |
| } |
| /Transportables_Koptertool/tags/V-0.1.2/servo.h |
|---|
| 0,0 → 1,41 |
| /***************************************************************************** |
| * Copyright (C) 2009-2010 Peter "woggle" Mack, mac@denich.net * |
| * * |
| * This program is free software; you can redistribute it and/or modify * |
| * it under the terms of the GNU General Public License as published by * |
| * the Free Software Foundation; either version 2 of the License. * |
| * * |
| * This program 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 General Public License for more details. * |
| * * |
| * You should have received a copy of the GNU General Public License * |
| * along with this program; if not, write to the * |
| * Free Software Foundation, Inc., * |
| * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
| * * |
| *****************************************************************************/ |
| #ifndef _SERVO_H |
| #define _SERVO_H |
| //***************************************************************************** |
| // |
| // text position |
| #define SMX 0 |
| #define SMY 3 |
| // graphics position |
| //#define SGX ((SMX + 3) * 6 + 1) // 3 for 3 digits |
| #define SGX ((SMX + 4) * 6 + 1) // 4 for 4 digits |
| #define SGY (SMY * 8 - 2) |
| #define SMAXGX (128 - SGX) |
| //***************************************************************************** |
| // |
| void servo_test (void); |
| #endif |
| /Transportables_Koptertool/tags/V-0.1.2/settings.c |
|---|
| 0,0 → 1,142 |
| /***************************************************************************** |
| * Copyright (C) 2008 Thomas Kaiser, thomas@ft-fanpage.de * |
| * Copyright (C) 2009-2010 Peter "woggle" Mack, mac@denich.net * |
| * * |
| * This program is free software; you can redistribute it and/or modify * |
| * it under the terms of the GNU General Public License as published by * |
| * the Free Software Foundation; either version 2 of the License. * |
| * * |
| * This program 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 General Public License for more details. * |
| * * |
| * You should have received a copy of the GNU General Public License * |
| * along with this program; if not, write to the * |
| * Free Software Foundation, Inc., * |
| * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
| * * |
| *****************************************************************************/ |
| #include <avr/io.h> |
| #include <avr/pgmspace.h> |
| #include <avr/interrupt.h> |
| #include "main.h" |
| #include "menu.h" |
| #include "lcd.h" |
| #include "settings.h" |
| #include "timer.h" |
| #include "lipo.h" |
| #include "eeprom.h" |
| //***************************************************************************** |
| // |
| void set_toggledisplay(void) |
| { |
| cli(); |
| if (LCD_ORIENTATION == 0) |
| LCD_ORIENTATION = 4; |
| else |
| LCD_ORIENTATION = 0; |
| WriteParameter (); |
| LCD_Init(); |
| sei(); |
| } |
| //***************************************************************************** |
| // |
| void set_viewfont(void) |
| { |
| uint8_t page; |
| page = 0; |
| lcd_view_font (page); |
| do |
| { |
| if (get_key_press (1 << KEY_PLUS) && (page < 1)) |
| { |
| page++; |
| lcd_view_font (page); |
| } |
| if (get_key_press (1 << KEY_MINUS) && (page > 0)) |
| { |
| page--; |
| lcd_view_font (page); |
| } |
| } |
| while (!get_key_press (1 << KEY_ESC)); |
| get_key_press(KEY_ALL); |
| } |
| //***************************************************************************** |
| // |
| void set_lipo(void) |
| { |
| lcd_cls(); |
| lcd_printp_at(0, 0, PSTR("LiPo Under Voltage:"), 0); |
| lcd_printp_at(0, 2, PSTR("Warn Voltage: "), 0); |
| lcd_printpns_at (0, 7, PSTR(" - + Ok"), 0); |
| do |
| { |
| write_ndigit_number_u_10th(14, 2, AD_WarnLevel, 3, 0); |
| if (get_key_press (1 << KEY_PLUS) && (AD_WarnLevel < 40)) |
| { |
| AD_WarnLevel++; |
| } |
| else if (get_key_press (1 << KEY_MINUS) && (AD_WarnLevel > 20)) |
| { |
| AD_WarnLevel--; |
| } |
| } |
| while (!get_key_press (1 << KEY_ESC)); |
| get_key_press(KEY_ALL); |
| WriteParameter (); |
| } |
| // Not really usefull :-) |
| // testing.... |
| //***************************************************************************** |
| // |
| void set_line(void) |
| { |
| lcd_cls (); |
| #if 1 |
| lcd_line (10, 20, 100, 50, 1); // draw a line |
| #else |
| lcd_ecircle(22, 35, 18, 1); |
| uint16_t old_d = 0; |
| for (uint16_t i = 0; i < 360; i += 10) |
| { |
| lcd_ecirc_line (22, 35, 17, old_d, 0); |
| old_d = i; |
| lcd_ecirc_line (22, 35, 17, i, 1); |
| while (!get_key_press (1 << KEY_ENTER)); |
| } |
| #endif |
| while (!get_key_press (1 << KEY_ESC)); |
| } |
| //***************************************************************************** |
| // |
| void set_rect(void) |
| { |
| lcd_cls (); |
| //lcd_rect (10, 20, 100, 40, 1); // draw a rect |
| //lcd_ellipse(60, 30, 23, 20, 1); |
| lcd_frect(10, 10, 20, -5, 1); |
| write_ndigit_number_s (10, 1, -10, 2, 0); |
| write_ndigit_number_s (10, 2, -10, 3, 0); |
| write_ndigit_number_s (10, 3, -10, 4, 0); |
| write_ndigit_number_s (10, 4, -10, 5, 0); |
| while (!get_key_press (1 << KEY_ESC)); |
| } |
| /Transportables_Koptertool/tags/V-0.1.2/settings.h |
|---|
| 0,0 → 1,34 |
| /***************************************************************************** |
| * Copyright (C) 2008 Thomas Kaiser, thomas@ft-fanpage.de * |
| * Copyright (C) 2009-2010 Peter "woggle" Mack, mac@denich.net * |
| * * |
| * This program is free software; you can redistribute it and/or modify * |
| * it under the terms of the GNU General Public License as published by * |
| * the Free Software Foundation; either version 2 of the License. * |
| * * |
| * This program 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 General Public License for more details. * |
| * * |
| * You should have received a copy of the GNU General Public License * |
| * along with this program; if not, write to the * |
| * Free Software Foundation, Inc., * |
| * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
| * * |
| *****************************************************************************/ |
| #ifndef _SETTINGS_H |
| #define _SETTINGS_H |
| //***************************************************************************** |
| // |
| void set_toggledisplay(void); |
| void set_viewfont(void); |
| void set_line(void); |
| void set_rect(void); |
| void set_lipo(void); |
| #endif |
| /Transportables_Koptertool/tags/V-0.1.2/status.c |
|---|
| 0,0 → 1,65 |
| /***************************************************************************** |
| * Copyright (C) 2010 Peter "woggle" Mack, mac@denich.net * |
| * * |
| * This program is free software; you can redistribute it and/or modify * |
| * it under the terms of the GNU General Public License as published by * |
| * the Free Software Foundation; either version 2 of the License. * |
| * * |
| * This program 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 General Public License for more details. * |
| * * |
| * You should have received a copy of the GNU General Public License * |
| * along with this program; if not, write to the * |
| * Free Software Foundation, Inc., * |
| * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
| * * |
| *****************************************************************************/ |
| #include <avr/io.h> |
| #include <avr/interrupt.h> |
| #include <avr/pgmspace.h> |
| #include "lcd.h" |
| #include "timer.h" // Keys |
| #include "usart.h" |
| #include "status.h" |
| #include "debug.h" |
| //***************************************************************************** |
| // |
| void status (void) |
| { |
| uint8_t line = 1; |
| lcd_cls (); |
| lcd_printp (PSTR("Status:"), 0); |
| lcd_printpns_at (0, 7, PSTR(" Back "), 0); |
| lcd_printp_at(0, line, PSTR("MMB Version: "), 0); |
| lcd_write_number_u (VERSION_MAJOR); |
| lcd_printp(PSTR("."), 0); |
| lcd_write_number_u (VERSION_MINOR); |
| line++; |
| lcd_printp_at(0, line, PSTR("UART CRC ERR: "), 0); |
| write_ndigit_number_u(15, line, stat_crc_error, 5, 0); |
| line++; |
| lcd_printp_at(0, line, PSTR("UART OVEFLOW: "), 0); |
| write_ndigit_number_u(15, line, stat_overflow_error, 5, 0); |
| line++; |
| lcd_printp_at(0, line, PSTR("Names NC: "), 0); |
| write_ndigit_number_u(15, line, AnalogNamesRead[0], 5, 0); |
| line++; |
| lcd_printp_at(0, line, PSTR("AN FC: "), 0); |
| write_ndigit_number_u(15, line, AnalogNamesRead[1], 5, 0); |
| line++; |
| while (!get_key_press (1 << KEY_ESC)); |
| } |
| /Transportables_Koptertool/tags/V-0.1.2/status.h |
|---|
| 0,0 → 1,30 |
| /***************************************************************************** |
| * Copyright (C) 2010 Peter "woggle" Mack, mac@denich.net * |
| * * |
| * This program is free software; you can redistribute it and/or modify * |
| * it under the terms of the GNU General Public License as published by * |
| * the Free Software Foundation; either version 2 of the License. * |
| * * |
| * This program 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 General Public License for more details. * |
| * * |
| * You should have received a copy of the GNU General Public License * |
| * along with this program; if not, write to the * |
| * Free Software Foundation, Inc., * |
| * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
| * * |
| *****************************************************************************/ |
| #ifndef _STATUS_H |
| #define _STATUS_H |
| //***************************************************************************** |
| // |
| //***************************************************************************** |
| // |
| void status (void); |
| #endif |
| /Transportables_Koptertool/tags/V-0.1.2/timer.c |
|---|
| 0,0 → 1,169 |
| /***************************************************************************** |
| * Copyright (C) 2009 Peter "woggle" Mack, mac@denich.net * |
| * based on the key handling by Peter Dannegger * |
| * see www.mikrocontroller.net * |
| * * |
| * This program is free software; you can redistribute it and/or modify * |
| * it under the terms of the GNU General Public License as published by * |
| * the Free Software Foundation; either version 2 of the License. * |
| * * |
| * This program 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 General Public License for more details. * |
| * * |
| * You should have received a copy of the GNU General Public License * |
| * along with this program; if not, write to the * |
| * Free Software Foundation, Inc., * |
| * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
| * * |
| *****************************************************************************/ |
| #include <avr/io.h> |
| #include <avr/interrupt.h> |
| #include "main.h" |
| #include "timer.h" |
| volatile uint16_t timer; |
| uint8_t key_state = 0; // debounced and inverted key state: |
| // bit = 1: key pressed |
| uint8_t key_press = 0; // key press detect |
| uint8_t key_rpt; // key long press and repeat |
| //***************************************************************************** |
| // |
| #if defined (__AVR_ATmega32__) |
| ISR(TIMER0_COMP_vect) // Timer-Interrupt (100 Hz) |
| #else |
| ISR(TIMER0_COMPA_vect) // Timer-Interrupt (100 Hz) |
| #endif |
| { |
| static uint8_t ct0 = 0; |
| static uint8_t ct1 = 0; |
| static uint8_t rpt = 0; |
| uint8_t i; |
| // Key handling by Peter Dannegger |
| // see www.mikrocontroller.net |
| i = key_state ^ ~KEY_PIN; // key changed ? |
| ct0 = ~(ct0 & i); // reset or count ct0 |
| ct1 = ct0 ^ (ct1 & i); // reset or count ct1 |
| i &= (ct0 & ct1); // count until roll over ? |
| key_state ^= i; // then toggle debounced state |
| key_press |= (key_state & i); // 0->1: key press detect |
| if ((key_state & REPEAT_MASK) == 0) // check repeat function |
| { |
| rpt = REPEAT_START; // start delay |
| } |
| if (--rpt == 0) |
| { |
| rpt = REPEAT_NEXT; // repeat delay |
| key_rpt |= (key_state & REPEAT_MASK); |
| } |
| if (timer > 0) |
| timer --; |
| } |
| //***************************************************************************** |
| // |
| void TIMER0_Init (void) |
| { |
| timer = 0; |
| #if defined (__AVR_ATmega32__) |
| TCCR0 = (1 << CS02) | (1 << CS00) | (1 << WGM01); // Prescaler 1024 |
| OCR0 = (F_CPU / (100L * 1024L)) ; |
| TIMSK |= (1 << OCIE0); // enable interrupt for OCR |
| #else |
| TCCR0A = (1 << WGM01); |
| TCCR0B = (1 << CS02) | (1 << CS00); |
| OCR0A = (F_CPU / (100L * 1024L)) ; |
| TIMSK0 |= (1 << OCIE0A); // enable interrupt for OCR |
| #endif |
| } |
| //***************************************************************************** |
| // |
| uint8_t get_key_press (uint8_t key_mask) |
| { |
| uint8_t sreg = SREG; |
| // disable all interrupts |
| cli(); |
| key_mask &= key_press; // read key(s) |
| key_press ^= key_mask; // clear key(s) |
| SREG = sreg; // restore status register |
| return key_mask; |
| } |
| //***************************************************************************** |
| // |
| uint8_t get_key_rpt (uint8_t key_mask) |
| { |
| uint8_t sreg = SREG; |
| // disable all interrupts |
| cli(); |
| key_mask &= key_rpt; // read key(s) |
| key_rpt ^= key_mask; // clear key(s) |
| SREG = sreg; // restore status register |
| return key_mask; |
| } |
| //***************************************************************************** |
| // |
| uint8_t get_key_short (uint8_t key_mask) |
| { |
| uint8_t ret; |
| uint8_t sreg = SREG; |
| // disable all interrupts |
| cli(); |
| ret = get_key_press (~key_state & key_mask); |
| SREG = sreg; // restore status register |
| return ret; |
| } |
| //***************************************************************************** |
| // |
| uint8_t get_key_long (uint8_t key_mask) |
| { |
| return get_key_press (get_key_rpt (key_mask)); |
| } |
| //***************************************************************************** |
| // |
| uint8_t get_key_long2 (uint8_t key_mask) |
| { |
| return get_key_press (get_key_rpt (key_press^key_mask)); |
| } |
| //***************************************************************************** |
| // |
| uint8_t get_key_long_rpt (uint8_t key_mask) |
| { |
| return get_key_rpt (~key_press^key_mask); |
| } |
| /Transportables_Koptertool/tags/V-0.1.2/timer.h |
|---|
| 0,0 → 1,47 |
| /***************************************************************************** |
| * Copyright (C) 2009 Peter "woggle" Mack, mac@denich.net * |
| * based on the key handling by Peter Dannegger * |
| * see www.mikrocontroller.net * |
| * * |
| * This program is free software; you can redistribute it and/or modify * |
| * it under the terms of the GNU General Public License as published by * |
| * the Free Software Foundation; either version 2 of the License. * |
| * * |
| * This program 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 General Public License for more details. * |
| * * |
| * You should have received a copy of the GNU General Public License * |
| * along with this program; if not, write to the * |
| * Free Software Foundation, Inc., * |
| * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
| * * |
| *****************************************************************************/ |
| #ifndef _TIMER_H |
| #define _TIMER_H |
| #define KEY_PIN PINA |
| #define KEY_ENTER PA7 |
| #define KEY_ESC PA6 |
| #define KEY_PLUS PA5 |
| #define KEY_MINUS PA4 |
| #define KEY_ALL ((1 << KEY_PLUS) | (1 << KEY_MINUS) | (1 << KEY_ENTER) | (1 << KEY_ESC)) |
| #define REPEAT_MASK ((1 << KEY_PLUS) | (1 << KEY_MINUS) | (1 << KEY_ENTER) | (1 << KEY_ESC)) // repeat: MODE |
| #define REPEAT_START 50 // after 500ms |
| #define REPEAT_NEXT 10 // every 100ms |
| extern volatile uint16_t timer; |
| void TIMER0_Init (void); |
| uint8_t get_key_press (uint8_t key_mask); |
| uint8_t get_key_rpt (uint8_t key_mask); |
| uint8_t get_key_short (uint8_t key_mask); |
| uint8_t get_key_long (uint8_t key_mask); |
| uint8_t get_key_long2 (uint8_t key_mask); |
| uint8_t get_key_long_rpt (uint8_t key_mask); |
| #endif |
| /Transportables_Koptertool/tags/V-0.1.2/usart.c |
|---|
| 0,0 → 1,515 |
| /***************************************************************************** |
| * Copyright (C) 2009 Peter "woggle" Mack, mac@denich.net * |
| * taken some ideas from the C-OSD code from CaScAdE * |
| * the MK communication routines are taken from the MK source * |
| * (killagreg version) * |
| * * |
| * This program is free software; you can redistribute it and/or modify * |
| * it under the terms of the GNU General Public License as published by * |
| * the Free Software Foundation; either version 2 of the License. * |
| * * |
| * This program 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 General Public License for more details. * |
| * * |
| * You should have received a copy of the GNU General Public License * |
| * along with this program; if not, write to the * |
| * Free Software Foundation, Inc., * |
| * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
| * * |
| *****************************************************************************/ |
| #include <avr/io.h> |
| #include <avr/interrupt.h> |
| #include <avr/pgmspace.h> |
| #include <avr/wdt.h> |
| #include <util/delay.h> |
| #include <stdarg.h> |
| #include "main.h" |
| #include "usart.h" |
| #include "lcd.h" |
| uint8_t buffer[30]; |
| volatile uint8_t txd_buffer[TXD_BUFFER_LEN]; |
| volatile uint8_t txd_complete = TRUE; |
| volatile uint8_t rxd_buffer[RXD_BUFFER_LEN]; |
| volatile uint8_t rxd_buffer_locked = FALSE; |
| volatile uint8_t ReceivedBytes = 0; |
| volatile uint8_t *pRxData = 0; |
| volatile uint8_t RxDataLen = 0; |
| volatile uint16_t stat_crc_error = 0; |
| volatile uint16_t stat_overflow_error = 0; |
| #ifdef DEBUG_UART |
| //***************************************************************************** |
| // USART1 transmitter ISR |
| ISR (USART1_TXC_vect) |
| { |
| static uint16_t ptr_txd_buffer = 0; |
| uint8_t tmp_tx; |
| if(!txd_complete) // transmission not completed |
| { |
| ptr_txd_buffer++; // [0] was already sent |
| tmp_tx = txd_buffer[ptr_txd_buffer]; |
| // if terminating character or end of txd buffer was reached |
| if((tmp_tx == '\r') || (ptr_txd_buffer == TXD_BUFFER_LEN)) |
| { |
| ptr_txd_buffer = 0; // reset txd pointer |
| txd_complete = TRUE; // stop transmission |
| } |
| UDR1 = tmp_tx; // send current byte will trigger this ISR again |
| } |
| // transmission completed |
| else ptr_txd_buffer = 0; |
| } |
| //***************************************************************************** |
| // |
| void USART1_Init (void) |
| { |
| // set clock divider |
| #undef BAUD |
| #define BAUD USART_BAUD |
| #include <util/setbaud.h> |
| UBRR1H = UBRRH_VALUE; |
| UBRR1L = UBRRL_VALUE; |
| #if USE_2X |
| UCSR1A |= (1 << U2X1); // enable double speed operation |
| #else |
| UCSR1A &= ~(1 << U2X1); // disable double speed operation |
| #endif |
| // set 8N1 |
| UCSR1C = (1 << UCSZ11) | (1 << UCSZ10); |
| UCSR1B &= ~(1 << UCSZ12); |
| // flush receive buffer |
| while ( UCSR1A & (1 << RXC1) ) UDR1; |
| // UCSR1B |= (1 << RXEN1) | (1 << TXEN1); |
| // UCSR1B |= (1 << RXCIE1) | (1 << TXCIE1); |
| UCSR1B |= (1 << RXEN1) | (1 << TXEN1); |
| UCSR1B |= (1 << TXCIE1); |
| } |
| void debug () |
| { |
| sprintf (txd_buffer, "test\r"); |
| txd_complete = FALSE; |
| UDR1 = txd_buffer[0]; |
| } |
| #endif |
| #ifdef USART_INT |
| //***************************************************************************** |
| // USART0 transmitter ISR |
| ISR (USART_TXC_vect) |
| { |
| static uint16_t ptr_txd_buffer = 0; |
| uint8_t tmp_tx; |
| if(!txd_complete) // transmission not completed |
| { |
| ptr_txd_buffer++; // [0] was already sent |
| tmp_tx = txd_buffer[ptr_txd_buffer]; |
| // if terminating character or end of txd buffer was reached |
| if((tmp_tx == '\r') || (ptr_txd_buffer == TXD_BUFFER_LEN)) |
| { |
| ptr_txd_buffer = 0; // reset txd pointer |
| txd_complete = TRUE; // stop transmission |
| } |
| UDR = tmp_tx; // send current byte will trigger this ISR again |
| } |
| // transmission completed |
| else ptr_txd_buffer = 0; |
| } |
| #endif |
| //***************************************************************************** |
| // |
| ISR (USART_RXC_vect) |
| { |
| static uint16_t crc; |
| static uint8_t ptr_rxd_buffer = 0; |
| uint8_t crc1, crc2; |
| uint8_t c; |
| c = UDR; // catch the received byte |
| if (rxd_buffer_locked) |
| { |
| return; // if rxd buffer is locked immediately return |
| } |
| // the rxd buffer is unlocked |
| if ((ptr_rxd_buffer == 0) && (c == '#')) // if rxd buffer is empty and syncronisation character is received |
| { |
| LED6_OFF; |
| rxd_buffer[ptr_rxd_buffer++] = c; // copy 1st byte to buffer |
| crc = c; // init crc |
| } |
| else if (ptr_rxd_buffer < RXD_BUFFER_LEN) // collect incomming bytes |
| { |
| if(c != '\r') // no termination character |
| { |
| rxd_buffer[ptr_rxd_buffer++] = c; // copy byte to rxd buffer |
| crc += c; // update crc |
| } |
| else // termination character was received |
| { |
| // the last 2 bytes are no subject for checksum calculation |
| // they are the checksum itself |
| crc -= rxd_buffer[ptr_rxd_buffer-2]; |
| crc -= rxd_buffer[ptr_rxd_buffer-1]; |
| // calculate checksum from transmitted data |
| crc %= 4096; |
| crc1 = '=' + crc / 64; |
| crc2 = '=' + crc % 64; |
| // compare checksum to transmitted checksum bytes |
| if((crc1 == rxd_buffer[ptr_rxd_buffer-2]) && (crc2 == rxd_buffer[ptr_rxd_buffer-1])) |
| { // checksum valid |
| rxd_buffer[ptr_rxd_buffer] = '\r'; // set termination character |
| ReceivedBytes = ptr_rxd_buffer + 1;// store number of received bytes |
| if (mode == rxd_buffer[2]) |
| { |
| rxd_buffer_locked = TRUE; // lock the rxd buffer |
| LED6_ON; |
| // if 2nd byte is an 'R' enable watchdog that will result in an reset |
| if(rxd_buffer[2] == 'R') {wdt_enable(WDTO_250MS);} // Reset-Commando |
| } |
| } |
| else |
| { // checksum invalid |
| stat_crc_error++; |
| rxd_buffer_locked = FALSE; // unlock rxd buffer |
| //LED5_TOGGLE; |
| //lcd_putc(0, 6, rxd_buffer[2], 0); |
| } |
| ptr_rxd_buffer = 0; // reset rxd buffer pointer |
| } |
| } |
| else // rxd buffer overrun |
| { |
| //LED4_TOGGLE; |
| stat_overflow_error++; |
| ptr_rxd_buffer = 0; // reset rxd buffer |
| rxd_buffer_locked = FALSE; // unlock rxd buffer |
| } |
| } |
| //***************************************************************************** |
| // |
| void USART_Init (void) |
| { |
| // set clock divider |
| #undef BAUD |
| #define BAUD USART_BAUD |
| #include <util/setbaud.h> |
| UBRRH = UBRRH_VALUE; |
| UBRRL = UBRRL_VALUE; |
| #if USE_2X |
| UCSRA |= (1 << U2X); // enable double speed operation |
| #else |
| UCSRA &= ~(1 << U2X); // disable double speed operation |
| #endif |
| // set 8N1 |
| #if defined (__AVR_ATmega8__) || defined (__AVR_ATmega32__) |
| UCSRC = (1 << URSEL) | (1 << UCSZ1) | (1 << UCSZ0); |
| #else |
| UCSRC = (1 << UCSZ1) | (1 << UCSZ0); |
| #endif |
| UCSRB &= ~(1 << UCSZ2); |
| // flush receive buffer |
| while ( UCSRA & (1 << RXC) ) UDR; |
| UCSRB |= (1 << RXEN) | (1 << TXEN); |
| #ifdef USART_INT |
| UCSRB |= (1 << RXCIE) | (1 << TXCIE); |
| #else |
| UCSRB |= (1 << RXCIE); |
| #endif |
| } |
| //***************************************************************************** |
| // disable the txd pin of usart |
| void USART_DisableTXD (void) |
| { |
| #ifdef USART_INT |
| UCSRB &= ~(1 << TXCIE); // disable TX-Interrupt |
| #endif |
| UCSRB &= ~(1 << TXEN); // disable TX in USART |
| DDRB &= ~(1 << DDB3); // set TXD pin as input |
| PORTB &= ~(1 << PORTB3); // disable pullup on TXD pin |
| } |
| //***************************************************************************** |
| // enable the txd pin of usart |
| void USART_EnableTXD (void) |
| { |
| DDRB |= (1 << DDB3); // set TXD pin as output |
| PORTB &= ~(1 << PORTB3); // disable pullup on TXD pin |
| UCSRB |= (1 << TXEN); // enable TX in USART |
| #ifdef USART_INT |
| UCSRB |= (1 << TXCIE); // enable TX-Interrupt |
| #endif |
| } |
| //***************************************************************************** |
| // short script to directly send a request thorugh usart including en- and disabling it |
| // where <address> is the address of the receipient, <label> is which data set to request |
| // and <ms> represents the milliseconds delay between data |
| void USART_request_mk_data (uint8_t cmd, uint8_t addr, uint8_t ms) |
| { |
| USART_EnableTXD (); // re-enable TXD pin |
| unsigned char mstenth = ms/10; |
| SendOutData(cmd, addr, 1, &mstenth, 1); |
| // wait until command transmitted |
| while (txd_complete == FALSE); |
| USART_DisableTXD (); // disable TXD pin again |
| } |
| //***************************************************************************** |
| // |
| void USART_putc (char c) |
| { |
| #ifdef USART_INT |
| #else |
| loop_until_bit_is_set(UCSRA, UDRE); |
| UDR = c; |
| #endif |
| } |
| //***************************************************************************** |
| // |
| void USART_puts (char *s) |
| { |
| #ifdef USART_INT |
| #else |
| while (*s) |
| { |
| USART_putc (*s); |
| s++; |
| } |
| #endif |
| } |
| //***************************************************************************** |
| // |
| void USART_puts_p (const char *s) |
| { |
| #ifdef USART_INT |
| #else |
| while (pgm_read_byte(s)) |
| { |
| USART_putc (pgm_read_byte(s)); |
| s++; |
| } |
| #endif |
| } |
| //***************************************************************************** |
| // |
| void SendOutData(uint8_t cmd, uint8_t addr, uint8_t numofbuffers, ...) // uint8_t *pdata, uint8_t len, ... |
| { |
| va_list ap; |
| uint16_t pt = 0; |
| uint8_t a,b,c; |
| uint8_t ptr = 0; |
| uint16_t tmpCRC = 0; |
| uint8_t *pdata = 0; |
| int len = 0; |
| txd_buffer[pt++] = '#'; // Start character |
| txd_buffer[pt++] = 'a' + addr; // Address (a=0; b=1,...) |
| txd_buffer[pt++] = cmd; // Command |
| va_start(ap, numofbuffers); |
| if(numofbuffers) |
| { |
| pdata = va_arg (ap, uint8_t*); |
| len = va_arg (ap, int); |
| ptr = 0; |
| numofbuffers--; |
| } |
| while(len) |
| { |
| if(len) |
| { |
| a = pdata[ptr++]; |
| len--; |
| if((!len) && numofbuffers) |
| { |
| pdata = va_arg(ap, uint8_t*); |
| len = va_arg(ap, int); |
| ptr = 0; |
| numofbuffers--; |
| } |
| } |
| else a = 0; |
| if(len) |
| { |
| b = pdata[ptr++]; |
| len--; |
| if((!len) && numofbuffers) |
| { |
| pdata = va_arg(ap, uint8_t*); |
| len = va_arg(ap, int); |
| ptr = 0; |
| numofbuffers--; |
| } |
| } |
| else b = 0; |
| if(len) |
| { |
| c = pdata[ptr++]; |
| len--; |
| if((!len) && numofbuffers) |
| { |
| pdata = va_arg(ap, uint8_t*); |
| len = va_arg(ap, int); |
| ptr = 0; |
| numofbuffers--; |
| } |
| } |
| else c = 0; |
| txd_buffer[pt++] = '=' + (a >> 2); |
| txd_buffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
| txd_buffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
| txd_buffer[pt++] = '=' + ( c & 0x3f); |
| } |
| va_end(ap); |
| for(a = 0; a < pt; a++) |
| { |
| tmpCRC += txd_buffer[a]; |
| } |
| tmpCRC %= 4096; |
| txd_buffer[pt++] = '=' + tmpCRC / 64; |
| txd_buffer[pt++] = '=' + tmpCRC % 64; |
| txd_buffer[pt++] = '\r'; |
| txd_complete = FALSE; |
| #ifdef USART_INT |
| UDR = txd_buffer[0]; // initiates the transmittion (continued in the TXD ISR) |
| #else |
| for(a = 0; a < pt; a++) |
| { |
| loop_until_bit_is_set(UCSRA, UDRE); |
| UDR = txd_buffer[a]; |
| } |
| txd_complete = TRUE; |
| #endif |
| } |
| //***************************************************************************** |
| // |
| void Decode64 (void) |
| { |
| uint8_t a,b,c,d; |
| uint8_t ptrIn = 3; |
| uint8_t ptrOut = 3; |
| uint8_t len = ReceivedBytes - 6; |
| while (len) |
| { |
| a = rxd_buffer[ptrIn++] - '='; |
| b = rxd_buffer[ptrIn++] - '='; |
| c = rxd_buffer[ptrIn++] - '='; |
| d = rxd_buffer[ptrIn++] - '='; |
| //if(ptrIn > ReceivedBytes - 3) break; |
| if (len--) |
| rxd_buffer[ptrOut++] = (a << 2) | (b >> 4); |
| else |
| break; |
| if (len--) |
| rxd_buffer[ptrOut++] = ((b & 0x0f) << 4) | (c >> 2); |
| else |
| break; |
| if (len--) |
| rxd_buffer[ptrOut++] = ((c & 0x03) << 6) | d; |
| else |
| break; |
| } |
| pRxData = &rxd_buffer[3]; |
| RxDataLen = ptrOut - 3; |
| } |
| //***************************************************************************** |
| // |
| void SwitchToNC (void) |
| { |
| // switch to NC |
| USART_putc (0x1b); |
| USART_putc (0x1b); |
| USART_putc (0x55); |
| USART_putc (0xaa); |
| USART_putc (0x00); |
| current_hardware = NC; |
| _delay_ms (50); |
| } |
| //***************************************************************************** |
| // |
| void SwitchToFC (void) |
| { |
| uint8_t cmd; |
| if (current_hardware == NC) |
| { |
| // switch to FC |
| cmd = 0x00; // 0 = FC, 1 = MK3MAG, 2 = MKGPS |
| SendOutData('u', ADDRESS_NC, 1, &cmd, 1); |
| current_hardware = FC; |
| _delay_ms (50); |
| } |
| } |
| //***************************************************************************** |
| // |
| void SwitchToMAG (void) |
| { |
| uint8_t cmd; |
| if (current_hardware == NC) |
| { |
| // switch to MK3MAG |
| cmd = 0x01; // 0 = FC, 1 = MK3MAG, 2 = MKGPS |
| SendOutData('u', ADDRESS_NC, 1, &cmd, 1); |
| current_hardware = MK3MAG; |
| _delay_ms (50); |
| } |
| } |
| //***************************************************************************** |
| // |
| void SwitchToGPS (void) |
| { |
| uint8_t cmd; |
| if (current_hardware == NC) |
| { |
| // switch to MKGPS |
| cmd = 0x02; // 0 = FC, 1 = MK3MAG, 2 = MKGPS |
| SendOutData('u', ADDRESS_NC, 1, &cmd, 1); |
| current_hardware = MKGPS; |
| _delay_ms (50); |
| } |
| } |
| /Transportables_Koptertool/tags/V-0.1.2/usart.h |
|---|
| 0,0 → 1,127 |
| /***************************************************************************** |
| * Copyright (C) 2009 Peter "woggle" Mack, mac@denich.net * |
| * taken some ideas from the C-OSD code from CaScAdE * |
| * the MK communication routines are taken from the MK source * |
| * (killagreg version) * |
| * * |
| * This program is free software; you can redistribute it and/or modify * |
| * it under the terms of the GNU General Public License as published by * |
| * the Free Software Foundation; either version 2 of the License. * |
| * * |
| * This program 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 General Public License for more details. * |
| * * |
| * You should have received a copy of the GNU General Public License * |
| * along with this program; if not, write to the * |
| * Free Software Foundation, Inc., * |
| * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * |
| * * |
| *****************************************************************************/ |
| #ifndef _USART_H |
| #define _USART_H |
| //***************************************************************************** |
| // |
| #ifndef FALSE |
| #define FALSE 0 |
| #endif |
| #ifndef TRUE |
| #define TRUE 1 |
| #endif |
| // addresses |
| #define ADDRESS_ANY 0 |
| #define ADDRESS_FC 1 |
| #define ADDRESS_NC 2 |
| #define ADDRESS_MAG 3 |
| // must be at least 4('#'+Addr+'CmdID'+'\r')+ (80 * 4)/3 = 111 bytes |
| #define TXD_BUFFER_LEN 60 |
| #define RXD_BUFFER_LEN 180 |
| // Baud rate of the USART |
| #define USART_BAUD 57600 |
| //***************************************************************************** |
| // |
| extern uint8_t buffer[30]; |
| extern volatile uint8_t txd_buffer[TXD_BUFFER_LEN]; |
| extern volatile uint8_t txd_complete; |
| extern volatile uint8_t rxd_buffer[RXD_BUFFER_LEN]; |
| extern volatile uint8_t rxd_buffer_locked; |
| extern volatile uint8_t ReceivedBytes; |
| extern volatile uint8_t *pRxData; |
| extern volatile uint8_t RxDataLen; |
| extern volatile uint16_t stat_crc_error; |
| extern volatile uint16_t stat_overflow_error; |
| //***************************************************************************** |
| // |
| void USART_Init (void); |
| void USART_DisableTXD (void); |
| void USART_EnableTXD (void); |
| void USART_request_mk_data (uint8_t cmd, uint8_t addr, uint8_t ms); |
| void USART_putc (char c); |
| void USART_puts (char *s); |
| void USART_puts_p (const char *s); |
| void SendOutData (uint8_t cmd, uint8_t addr, uint8_t numofbuffers, ...); // uint8_t *pdata, uint8_t len, ... |
| //void SendOutData(uint8_t cmd, uint8_t addr, uint8_t numofbuffers, uint8_t *pdata, uint8_t len); // uint8_t *pdata, uint8_t len, ... |
| void Decode64 (void); |
| void SwitchToNC (void); |
| void SwitchToFC (void); |
| void SwitchToMAG (void); |
| void SwitchToGPS (void); |
| //***************************************************************************** |
| //Anpassen der seriellen Schnittstellen Register |
| #if defined (__AVR_ATmega644__) || defined (__AVR_ATmega644P__) || defined (__AVR_ATmega168__) |
| #define USART_RXC_vect USART0_RX_vect |
| //----------------------- |
| #define UCSRA UCSR0A |
| #define UCSRB UCSR0B |
| #define UCSRC UCSR0C |
| #define UDR UDR0 |
| #define UBRRL UBRR0L |
| #define UBRRH UBRR0H |
| // UCSRA |
| #define RXC RXC0 |
| #define TXC TXC0 |
| #define UDRE UDRE0 |
| #define FE FE0 |
| #define UPE UPE0 |
| #define U2X U2X0 |
| #define MPCM MPCM0 |
| // UCSRB |
| #define RXCIE RXCIE0 |
| #define TXCIE TXCIE0 |
| #define UDRIE UDRIE0 |
| #define TXEN TXEN0 |
| #define RXEN RXEN0 |
| #define UCSZ2 UCSZ02 |
| #define RXB8 RXB80 |
| #define TXB8 TXB80 |
| // UCSRC |
| #define UMSEL1 UMSEL01 |
| #define UMSEL0 UMSEL00 |
| #define UPM1 UPM01 |
| #define UPM0 UPM00 |
| #define USBS USBS0 |
| #define UCSZ1 UCSZ01 |
| #define UCSZ0 UCSZ00 |
| #define UCPOL UCPOL0 |
| //----------------------- |
| #endif |
| #endif |
| /Transportables_Koptertool/trunk/V-0.1.1/Readme.txt |
|---|
| File deleted |
| \ No newline at end of file |
| /Transportables_Koptertool/trunk/V-0.1.1/debug.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.1/F8X6.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.1/makefile |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.1/MMT.hex |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.1/motortest.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.1/settings.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.1/lcd.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.1/menu.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.1/display.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.1/motortest.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.1/settings.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.1/lcd.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.1/menu.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.1/display.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.1/rs232.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.1/displ_val.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.1/timer.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.1/parameter.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.1/rs232.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.1/font8x6.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.1/displ_val.h |
|---|
| File deleted |
| \ No newline at end of file |
| /Transportables_Koptertool/trunk/V-0.1.1/main.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.1/base64.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.1/timer.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.1/parameter.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.1/debug.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.1/Spezial/MMT-Mega644-20.hex |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.1/Spezial/MMT-Mega644-16.hex |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.1/Spezial/MMT-Mega32-20.hex |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.1/Spezial/MMT-Mega32-7.hex |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.1/Spezial/MMT-Mega32-16.hex |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.1/base64.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.1/main.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/main.sym |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/displ_val.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/timer.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/displ_val.h |
|---|
| File deleted |
| \ No newline at end of file |
| /Transportables_Koptertool/trunk/V-0.1/timer.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/F8X6.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/MMT.aps |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/settings.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/menu.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/mmt.aws |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/settings.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/display.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/menu.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/display.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/rs232.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/main.eep |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/main.map |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/rs232.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/parameter.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/font8x6.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/main.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/base64.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/parameter.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/debug.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/main.hex |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/base64.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/main.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/debug.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/makefile |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/motortest.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/lcd.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/main.lss |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/default/Makefile |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/default/MMT.elf |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Deleted: svn:mime-type |
| -application/octet-stream |
| \ No newline at end of property |
| /Transportables_Koptertool/trunk/V-0.1/default/MMT_Mega32_7.hex |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/default/MMT.eep |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/motortest.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/lcd.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/main.elf |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Deleted: svn:mime-type |
| -application/octet-stream |
| \ No newline at end of property |
| /Transportables_Koptertool/trunk/V-0.1.2/debug.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/eeprom.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/MMB 1.sch |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Deleted: svn:mime-type |
| -application/octet-stream |
| \ No newline at end of property |
| /Transportables_Koptertool/trunk/V-0.1.2/status.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/mk-data-structs.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/debug.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/eeprom.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/Makefile |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/servo.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/usart.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/motortest.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/settings.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/lcd.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/servo.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/usart.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/menu.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/settings.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/motortest.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/lcd.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/menu.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/font8X6.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/displ_val.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/timer.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/displ_val.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/MMB 1.pdf |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Deleted: svn:mime-type |
| -application/octet-stream |
| \ No newline at end of property |
| /Transportables_Koptertool/trunk/V-0.1.2/main.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/CHANGE.LOG |
|---|
| File deleted |
| \ No newline at end of file |
| /Transportables_Koptertool/trunk/V-0.1.2/osd.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/timer.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/main.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/osd.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/README.txt |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/jeti.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/jeti.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/TODO.txt |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/lipo.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/display.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/lipo.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/display.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/font8x8.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/LICENSE.TXT |
|---|
| File deleted |
| \ No newline at end of file |
| /Transportables_Koptertool/trunk/V-0.1.2/parameter.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/font8x6.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/status.c |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/font8x8.h |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1.2/parameter.h |
|---|
| File deleted |