| /Transportables_Koptertool/trunk/V-0.1/lcd.d |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/displ_val.d |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/F8X6.d |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/timer.lst |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/rs232.lst |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/main.lst |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/display.d |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/motortest.lst |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/menu.lst |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/lcd.lst |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/parameter.d |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/display.lst |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/F8X6.lst |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/displ_val.lst |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/base64.d |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/parameter.lst |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/timer.d |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/base64.lst |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/rs232.d |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/motortest.d |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/main.d |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/V-0.1/menu.d |
|---|
| File deleted |
| /Transportables_Koptertool/trunk/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/trunk/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/trunk/V-0.1.1/Readme.txt |
|---|
| 0,0 → 1,16 |
| 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". |
| 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/trunk/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/trunk/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/trunk/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/trunk/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/trunk/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/trunk/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/trunk/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/trunk/V-0.1.1/display.h |
|---|
| 0,0 → 1,6 |
| #ifndef display_h |
| #define display_h |
| void display_data (void); |
| #endif |
| /Transportables_Koptertool/trunk/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/trunk/V-0.1.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/trunk/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/trunk/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/trunk/V-0.1.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[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/trunk/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/trunk/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/trunk/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/trunk/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/trunk/V-0.1.1/motortest.h |
|---|
| 0,0 → 1,6 |
| #ifndef motortest_h |
| #define motortest_h |
| void motor_test(void); |
| #endif |
| /Transportables_Koptertool/trunk/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/trunk/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/trunk/V-0.1.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/trunk/V-0.1.1/rs232.h |
|---|
| 0,0 → 1,65 |
| #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 |
| #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/trunk/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/trunk/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/trunk/V-0.1.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/trunk/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 |