/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 |