Added VirtualSerial_LCD demo firmware and updated avrlib to compile with "Atmel AVR 8-bit Toolchain 3.4.1 - Linux 32-bit".
This commit is contained in:
@@ -192,9 +192,9 @@ const USB_Descriptor_String_t PROGMEM LanguageString =
|
||||
*/
|
||||
const USB_Descriptor_String_t PROGMEM ManufacturerString =
|
||||
{
|
||||
.Header = {.Size = USB_STRING_LEN(11), .Type = DTYPE_String},
|
||||
.Header = {.Size = USB_STRING_LEN(20), .Type = DTYPE_String},
|
||||
|
||||
.UnicodeString = L"Dean Camera"
|
||||
.UnicodeString = L"www.micropendous.org"
|
||||
};
|
||||
|
||||
/** Product descriptor string. This is a Unicode string containing the product's details in human readable form,
|
||||
@@ -203,9 +203,9 @@ const USB_Descriptor_String_t PROGMEM ManufacturerString =
|
||||
*/
|
||||
const USB_Descriptor_String_t PROGMEM ProductString =
|
||||
{
|
||||
.Header = {.Size = USB_STRING_LEN(13), .Type = DTYPE_String},
|
||||
.Header = {.Size = USB_STRING_LEN(30), .Type = DTYPE_String},
|
||||
|
||||
.UnicodeString = L"LUFA CDC Demo"
|
||||
.UnicodeString = L"VirtualSerial HD44780 LCD Demo"
|
||||
};
|
||||
|
||||
/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
* the demo and is responsible for the initial application hardware configuration.
|
||||
*/
|
||||
|
||||
#include "VirtualSerial.h"
|
||||
#include "VirtualSerial_LCD.h"
|
||||
|
||||
|
||||
// Global buffer for use with STDIO functions
|
||||
@@ -79,6 +79,9 @@ USB_ClassInfo_CDC_Device_t VirtualSerial_CDC_Interface =
|
||||
*/
|
||||
static FILE USBSerialStream;
|
||||
|
||||
// global variable for use with HD44780 LCD display
|
||||
volatile uint8_t lcd_character_count;
|
||||
volatile uint8_t lcd_current_line;
|
||||
|
||||
/** Main program entry point. This routine contains the overall program flow, including initial
|
||||
* setup of all components and the main program loop.
|
||||
@@ -107,14 +110,14 @@ int main(void)
|
||||
/** Configures the board hardware and chip peripherals for the demo's functionality. */
|
||||
void SetupHardware(void)
|
||||
{
|
||||
/* Disable watchdog if enabled by bootloader/fuses */
|
||||
// Disable watchdog if enabled by bootloader/fuses
|
||||
MCUSR &= ~(1 << WDRF);
|
||||
wdt_disable();
|
||||
|
||||
/* Disable clock division */
|
||||
// Disable clock division
|
||||
clock_prescale_set(clock_div_1);
|
||||
|
||||
/* Disable JTAG; allows upper nibble of Port F to be used as GPIO */
|
||||
// Disable JTAG; allows upper nibble of Port F to be used as GPIO
|
||||
#if ( defined(__AVR_AT90USB1287__) || defined(__AVR_AT90USB647__) || \
|
||||
defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB646__) || \
|
||||
defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__) || \
|
||||
@@ -122,7 +125,26 @@ void SetupHardware(void)
|
||||
JTAG_DISABLE();
|
||||
#endif
|
||||
|
||||
/* Hardware Initialization */
|
||||
|
||||
// Hardware Initialization
|
||||
// 16-bit Timer1 Initialization
|
||||
TCCR1A = 0; //start the timer
|
||||
//TCCR1B = (1 << CS10); // no Timer1 prescaling, use CLK
|
||||
TCCR1B = (1 << CS12); // prescale Timer1 by CLK/256
|
||||
// 8000000 / 256 = 31250 ticks per second
|
||||
// 16-bit = 2^16 = 65536 maximum ticks for Timer1
|
||||
// 65536 / 31250 =~ 2.1
|
||||
// so Timer1 will overflow back to 0 about every 2 seconds
|
||||
uint16_t Timer1Val = TCNT1; // get current Timer1 value
|
||||
Timer1Val = 345;
|
||||
|
||||
// AVRlib HD44780 LCD initialization
|
||||
lcdInit();
|
||||
rprintfInit(lcdDataWrite); // direct rprintf to LCD
|
||||
lcdClear(); // clear the LCD
|
||||
rprintf("GO AVRlib!");
|
||||
|
||||
// Hardware Initialization
|
||||
LEDs_Init();
|
||||
LEDs_TurnOnLEDs(LEDS_LED1);
|
||||
DISABLE_VOLTAGE_TXRX(); // used on Micropendous REV1/2 boards
|
||||
@@ -160,23 +182,62 @@ void EVENT_USB_Device_ControlRequest(void)
|
||||
}
|
||||
|
||||
|
||||
uint16_t firstNumber = 12345;
|
||||
|
||||
void MainTask(void)
|
||||
{
|
||||
int count = 0;
|
||||
int tempInt = 0;
|
||||
uint8_t tempChar = 0;
|
||||
|
||||
// If the host has sent data then echo it back
|
||||
// Throughput is maximized if the full EP buffer is read and sent each time
|
||||
// Throughput approaches CDC_TXRX_EPSIZE kbytes/second and depends on transfer size from host
|
||||
if ((count = fread(&buffer, 1, CDC_TXRX_EPSIZE, &USBSerialStream)) > 0) {
|
||||
fwrite(&buffer, 1, count, &USBSerialStream);
|
||||
// example usage
|
||||
if (firstNumber == 12345) {
|
||||
lcdClear();
|
||||
rprintfChar('#'); // print a single character to the LCD
|
||||
// print a value to the LCD in Base-10 using 5 digits. It is FALSE that the
|
||||
// number can be negative (so it is positive) and use '0' to pad to 5 digits
|
||||
rprintfNum(10, 5, FALSE, '0', firstNumber);
|
||||
rprintf(" ABC"); // print some text to the LCD
|
||||
lcdGotoXY(0, 1); // go to the first character of the second line (counting starts at 0)
|
||||
lcdProgressBar(100, 255, 16); // display a progress bar of 100/255 using 16 characters from current XY position
|
||||
lcdGotoXY(0, 0); // return to start position
|
||||
firstNumber = 0; // do not run this if (...) code again
|
||||
}
|
||||
|
||||
// while there are characters in the USB stream, write them to LCD
|
||||
// Each character is written sequentially,
|
||||
// first to the top line, then to the next, etc...
|
||||
while ((tempInt = fgetc(&USBSerialStream)) > 0)
|
||||
{
|
||||
tempChar = (uint8_t)tempInt;
|
||||
// send char back for echo'ing on terminal
|
||||
fputc(tempChar, &USBSerialStream);
|
||||
|
||||
lcd_character_count++;
|
||||
rprintfChar(tempChar); // print char to the LCD
|
||||
// once we hit the end of a single line, loop to next line
|
||||
if (lcd_character_count >= LCD_LINE_LENGTH)
|
||||
{
|
||||
lcd_character_count = 0;
|
||||
lcd_current_line++;
|
||||
// once we hit the end of the last line, loop to the first line
|
||||
if (lcd_current_line >= LCD_LINES)
|
||||
{
|
||||
lcd_current_line = 0;
|
||||
}
|
||||
|
||||
lcdGotoXY(0, lcd_current_line);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// If HWB Button is pressed then send formatted strings
|
||||
// If HWB Button is pressed then send formatted strings over VirtualSerial and to LCD
|
||||
if (Buttons_GetStatus()) {
|
||||
fprintf_P(&USBSerialStream, PSTR("\r\nHWB has been pressed!\r\n")); // send a constant string stored in FLASH
|
||||
fprintf(&USBSerialStream, "PORTD = %3x\r\n", PIND); // send a string that is dynamic and stored in SRAM
|
||||
fprintf(&USBSerialStream, "PORTB = %3x\r\n", PINB); // send a string that is dynamic and stored in SRAM
|
||||
rprintf("PORTB=0x");
|
||||
// print a value to the LCD in Base-16 (Hex) using 2 digits. It is FALSE that the
|
||||
// number can be negative (so it is positive) and use '0' to pad to 2 digits
|
||||
rprintfNum(16, 2, FALSE, '0', PINB);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -33,8 +33,8 @@
|
||||
* Header file for VirtualSerial.c.
|
||||
*/
|
||||
|
||||
#ifndef _VIRTUALSERIAL_H_
|
||||
#define _VIRTUALSERIAL_H_
|
||||
#ifndef _VIRTUALSERIAL_LCD_H_
|
||||
#define _VIRTUALSERIAL_LCD_H_
|
||||
|
||||
/* Includes: */
|
||||
#include <avr/io.h>
|
||||
@@ -50,6 +50,12 @@
|
||||
#include <LUFA/Drivers/Board/Buttons.h>
|
||||
#include <LUFA/Drivers/USB/USB.h>
|
||||
|
||||
#include "global.h"
|
||||
#include "lcdconf.h"
|
||||
#include <lcd.h>
|
||||
#include <timer.h>
|
||||
#include <rprintf.h>
|
||||
|
||||
/* Macros: */
|
||||
/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
|
||||
#define LEDMASK_USB_NOTREADY LEDS_LED1
|
||||
@@ -72,5 +78,5 @@
|
||||
void EVENT_USB_Device_ConfigurationChanged(void);
|
||||
void EVENT_USB_Device_ControlRequest(void);
|
||||
|
||||
#endif
|
||||
#endif // _VIRTUALSERIAL_LCD_H_
|
||||
|
||||
|
||||
@@ -0,0 +1,549 @@
|
||||
:1000000011C100002EC100002CC100002AC1000057
|
||||
:1000100028C1000026C1000024C1000022C1000048
|
||||
:1000200020C100001EC100003DC4000008C5000042
|
||||
:1000300018C1000016C1000014C1000012C1000068
|
||||
:100040000C948D0D0C942B0D0C945C0D0AC10000CA
|
||||
:100050000C94FA0C06C1000004C100000C94A30C1F
|
||||
:1000600000C10000FEC00000FCC00000FAC000009B
|
||||
:10007000F8C00000F6C00000F4C00000F2C00000AC
|
||||
:10008000F0C00000EEC00000ECC00000EAC00000BC
|
||||
:10009000E8C00000E6C00000474F204156526C699E
|
||||
:1000A00062210020414243000D0A48574220686106
|
||||
:1000B00073206265656E2070726573736564210DCF
|
||||
:1000C0000A00504F5254423D3078003E03560069BA
|
||||
:1000D0000072007400750061006C005300650072CE
|
||||
:1000E00000690061006C00200048004400340034C6
|
||||
:1000F0000037003800300020004C0043004400204E
|
||||
:1001000000440065006D006F0000002A037700774F
|
||||
:100110000077002E006D006900630072006F0070B0
|
||||
:100120000065006E0064006F00750073002E006FA4
|
||||
:10013000007200670000000403090409023E000287
|
||||
:100140000100C03209040000010202010005240080
|
||||
:100150001001042402060524060001070582030895
|
||||
:1001600000FF09040100020A000000070504021054
|
||||
:1001700000050705830210000512011001020000AE
|
||||
:1001800008EB03442001000102DC0130313233343A
|
||||
:10019000353637383941424344454600001F000098
|
||||
:1001A00000001F00001F101010101F00001F181863
|
||||
:1001B00018181F00001F1C1C1C1C1F00001F1E1EE7
|
||||
:1001C0001E1E1F00001F1F1F1F1F1F0003070F1FE2
|
||||
:1001D0000F070300001F1F1F1F1F1F001B1B1B1BE0
|
||||
:1001E0001B1B1B00181C1E1F1E1C18000004040EE5
|
||||
:1001F0000E1F1F00001F1F0E0E0404000000000051
|
||||
:1002000000000000000E1915130E0000000E151559
|
||||
:10021000150E0000000E1315190E0000000E111F20
|
||||
:10022000110E000011241FBECFEFD0E2DEBFCDBF04
|
||||
:1002300011E0A0E0B1E0E6EFF1E200E00BBF02C0A8
|
||||
:1002400007900D92AC33B107D9F71BBE11E0ACE3B8
|
||||
:10025000B1E001C01D92A538B107E1F70CD10C94B3
|
||||
:10026000F910CECE84B7877F84BF88E10FB6F894AB
|
||||
:1002700080936000109260000FBE80E090E020E864
|
||||
:100280000FB6F89420936100809361000FBE85B78C
|
||||
:10029000806890E00FB6F89485BF0FBE85BF1092BE
|
||||
:1002A000800084E08093810080918400909185009B
|
||||
:1002B0000E94120C8FE49BE024D70E94CA0B00D04E
|
||||
:1002C0000F9281E0EDB7FEB7818388E990E09383D8
|
||||
:1002D0008283DCD7219A299A299A73986B9A6C9A0F
|
||||
:1002E000749A77986F9A0F900F900F90C0C22998C8
|
||||
:1002F0000895299A089580E191E010D6882311F09D
|
||||
:1003000090E001C092E085B18D7F892B85B9089579
|
||||
:1003100080E191E056C5EF92FF920F931F93CF9328
|
||||
:10032000DF9380910E0190910F0120E389339207B2
|
||||
:1003300009F057C00E94CA0B83E2E8D6E0900E0194
|
||||
:10034000F0900F0100E010E08AE065E040E020E37B
|
||||
:10035000F7D600D00F9281E0ADB7BEB711968C935F
|
||||
:10036000119783EA90E013969C938E9312978ED701
|
||||
:100370000F900F900F9080E061E00E94CC0B84E61C
|
||||
:1003800090E06FEF70E040E10E94490C80E060E097
|
||||
:100390000E94CC0B10920F0110920E0122C0802FF0
|
||||
:1003A00090E0BE010E945F0E80915A018F5F8093A2
|
||||
:1003B0005A01802FABD680915A01803190F0109273
|
||||
:1003C0005A0180915B018F5F80935B0180915B019B
|
||||
:1003D000823010F010925B0160915B0180E00E941E
|
||||
:1003E000CC0BCCE3D1E0CE010E94F40D8C011816A9
|
||||
:1003F0001906ACF28CB182FD37C000D000D0EDB749
|
||||
:10040000FEB7D283C18388EA90E0948383830E94FD
|
||||
:10041000430E23B100D0EDB7FEB73196ADB7BEB7EE
|
||||
:100420001296DC93CE93119780E091E093838283C0
|
||||
:10043000248315820E94340E0F900F900F9081E05C
|
||||
:10044000EDB7FEB7818382EC90E0938382831ED761
|
||||
:10045000E3B00F900F900F90FF2400E010E080E1D8
|
||||
:1004600062E040E020E36CD6DF91CF911F910F91C5
|
||||
:10047000FF90EF900895F6DE80E191E06CE371E08B
|
||||
:100480002CD6789448DF80E191E0D1D57ED4FACFA4
|
||||
:10049000923029F0933041F09130E9F417C08EE3A7
|
||||
:1004A00090E0EBE3F1E01BC0813041F0813018F0C7
|
||||
:1004B000823089F406C0E7E3F1E005C0EBE0F1E04B
|
||||
:1004C00002C0EBECF0E0849190E009C082E190E0A2
|
||||
:1004D000E9E7F1E004C080E090E0E0E0F0E0DA017C
|
||||
:1004E0001196FC93EE930895209177013091780155
|
||||
:1004F0002617370720F4B901FC0120E037C0611549
|
||||
:100500007105D1F72091E8002E772093E800F4CF11
|
||||
:1005100080917001882309F43FC08530C9F1809132
|
||||
:10052000E80083FD37C08091E80082FD2BC08091F8
|
||||
:10053000E80080FF1BC08091F2009091F30006C09C
|
||||
:1005400021912093F1006150704001966115710571
|
||||
:1005500019F088309105A0F321E08830910509F069
|
||||
:1005600020E08091E8008E778093E80061157105A6
|
||||
:1005700079F6222369F606C080917001882361F024
|
||||
:10058000853061F08091E80082FFF6CF80E0089529
|
||||
:1005900083E0089581E0089582E0089583E008955E
|
||||
:1005A00020917701309178012617370720F4B9019F
|
||||
:1005B000FC0120E038C061157105D1F72091E800F9
|
||||
:1005C0002E772093E800F4CF80917001882309F4FE
|
||||
:1005D00040C08530D1F18091E80083FD38C0809122
|
||||
:1005E000E80082FD2CC08091E80080FF1CC0809153
|
||||
:1005F000F2009091F30007C024912093F10031960E
|
||||
:100600006150704001966115710519F088309105AF
|
||||
:1006100098F321E08830910509F020E08091E8000E
|
||||
:100620008E778093E8006115710571F6222361F6DB
|
||||
:1006300006C080917001882361F0853061F080915F
|
||||
:10064000E80082FFF6CF80E0089583E0089581E01E
|
||||
:10065000089582E0089583E00895982F2AC090932A
|
||||
:10066000E900981739F07091EC002091ED0050915D
|
||||
:10067000F00003C0242F762F50E021FF19C03091E5
|
||||
:10068000EB003E7F3093EB003091ED003D7F3093E7
|
||||
:10069000ED003091EB0031603093EB007093EC0093
|
||||
:1006A0002093ED005093F0002091EE0027FF08C04A
|
||||
:1006B0009F5F9730A0F28F708093E90081E00895EA
|
||||
:1006C00080E008950F931F93CF93DF93162FEC01D3
|
||||
:1006D00000E02AC09881992329F16B81E981FA8190
|
||||
:1006E0002C81892F8F70873018F56295660F660F01
|
||||
:1006F000607C991F9927991F692B223010F096E092
|
||||
:1007000001C092E028E030E040E003C04F5F220FDC
|
||||
:10071000331F2E173F07D0F34295407F492B9DDFB3
|
||||
:10072000882331F00F5F25960117A1F681E001C003
|
||||
:1007300080E0DF91CF911F910F9108958091710119
|
||||
:1007400087FF13C004C0809170018823B9F08091A5
|
||||
:10075000E80082FFF8CF8091E8008B778093E80073
|
||||
:10076000089580917001882349F08091E80080FF0E
|
||||
:10077000F8CF8091E8008E778093E800089580910B
|
||||
:10078000E4009091E50045E601C0C9012091EC002C
|
||||
:1007900020FF23C02091E80020FD15C020917001AA
|
||||
:1007A000222399F0253099F02091EB0025FD11C00E
|
||||
:1007B0002091E4003091E5002817390739F34150C2
|
||||
:1007C00021F784E0089580E0089582E0089583E0B1
|
||||
:1007D000089581E0089580E008952091E80022FFC7
|
||||
:1007E000DDCFF9CF0F931F93CF93DF934ED055D02A
|
||||
:1007F000C8EDD0E088818F7788838881806888837E
|
||||
:1008000088818F7D8883E7EDF0E080818068808338
|
||||
:1008100019BC1092700110926C0110926E0110922E
|
||||
:100820006D0100EE10E0F80180818B7F808388816C
|
||||
:100830008160888380E060E042E00FDFE1EEF0E07D
|
||||
:1008400080818E7F8083E2EEF0E080818160808312
|
||||
:10085000808188608083F80180818E7F8083888199
|
||||
:1008600080618883DF91CF911F910F910895E8ED0A
|
||||
:10087000F0E080818F7E8083E7EDF0E08081816011
|
||||
:10088000808381E080936F01ADCFE8EDF0E080815F
|
||||
:100890008C7F80831092E20008951092DA0010920B
|
||||
:1008A000E10008951F920F920FB60F920BB60F92B0
|
||||
:1008B00011242F933F934F935F936F937F938F9365
|
||||
:1008C0009F93AF93BF93EF93FF938091E10082FFDB
|
||||
:1008D0000AC08091E20082FF06C08091E1008B7F18
|
||||
:1008E0008093E10051D28091DA0080FF1DC0809199
|
||||
:1008F000D80080FF19C08091DA008E7F8093DA00E3
|
||||
:100900008091D90080FF0CC084E189BD86E189BD5A
|
||||
:1009100009B400FEFDCF81E080937001E8DC04C0E3
|
||||
:1009200019BC10927001E5DC8091E10080FF18C0D5
|
||||
:100930008091E20080FF14C08091E2008E7F80935E
|
||||
:10094000E2008091E20080618093E2008091D80013
|
||||
:1009500080628093D80019BC85E08093700114D226
|
||||
:100960008091E10084FF2DC08091E20084FF29C0C6
|
||||
:1009700084E189BD86E189BD09B400FEFDCF809187
|
||||
:10098000D8008F7D8093D8008091E1008F7E809386
|
||||
:10099000E1008091E2008F7E8093E2008091E2008E
|
||||
:1009A00081608093E20080916C01882321F4809122
|
||||
:1009B000E30087FF02C084E001C081E08093700102
|
||||
:1009C000E3D18091E10083FF27C08091E20083FFA3
|
||||
:1009D00023C08091E100877F8093E10082E08093D3
|
||||
:1009E000700110926C018091E1008E7F8093E10094
|
||||
:1009F0008091E2008E7F8093E2008091E20080612E
|
||||
:100A00008093E20080E060E042E027DE8091F00029
|
||||
:100A100088608093F000B8D1FF91EF91BF91AF91C2
|
||||
:100A20009F918F917F916F915F914F913F912F9106
|
||||
:100A30000F900BBE0F900FBE0F901F9018951F9236
|
||||
:100A40000F920FB60F920BB60F9211242F933F9374
|
||||
:100A50004F935F936F937F938F939F93AF93BF93C6
|
||||
:100A6000CF93EF93FF93C091E900CF708091EC009A
|
||||
:100A70001092E9008091F000877F8093F0007894D5
|
||||
:100A80001DD01092E9008091F00088608093F00002
|
||||
:100A9000C093E900FF91EF91CF91BF91AF919F91EA
|
||||
:100AA0008F917F916F915F914F913F912F910F9017
|
||||
:100AB0000BBE0F900FBE0F901F9018951F93CF93F2
|
||||
:100AC000DF93CDB7DEB7AC970FB6F894DEBF0FBE9D
|
||||
:100AD000CDBF80E0E1E7F1E09091F10091938F5F6D
|
||||
:100AE0008830D1F715DC8091E80083FF35C1809113
|
||||
:100AF000710120917201253009F484C0263040F440
|
||||
:100B00002130A1F1213070F0233009F025C12EC031
|
||||
:100B1000283009F4F3C0293009F402C1263009F065
|
||||
:100B20001BC193C0803821F0823809F015C108C07C
|
||||
:100B300080916D0190916E01992371F082600CC0DB
|
||||
:100B4000809175018F708093E9009091EB0081E0B6
|
||||
:100B500095FF80E01092E9009091E800977F9093D4
|
||||
:100B6000E8008093F1001092F100D3C0882319F0BF
|
||||
:100B7000823009F0F1C090E08F719070009729F0F9
|
||||
:100B80008230910509F0E8C00BC08091730181307B
|
||||
:100B900009F0E2C0233009F080E080936E012CC0A0
|
||||
:100BA00080917301882341F5209175012F7009F41C
|
||||
:100BB000D3C02093E9008091EB0080FF1DC080919D
|
||||
:100BC0007201833021F48091EB00806213C0809128
|
||||
:100BD000EB0080618093EB0081E090E002C0880F21
|
||||
:100BE000991F2A95E2F78093EA001092EA0080911B
|
||||
:100BF000EB0088608093EB001092E9008091E800A0
|
||||
:100C0000877F8AC0882309F0A7C0109173011F77DE
|
||||
:100C10008091E3008078812B8093E3008091E8004D
|
||||
:100C2000877F8093E8008ADD8091E80080FFFCCF19
|
||||
:100C30008091E30080688093E300112311F083E04A
|
||||
:100C400001C082E08093700187C08058823008F034
|
||||
:100C500083C0809173019091740123E08C3D9207D1
|
||||
:100C6000A9F583E08C838AE28B835FB7F894DE0179
|
||||
:100C7000139680E090E04EE061E2E42FF0E06093B4
|
||||
:100C80005700E49180FF03C0E295EF704F5FEF7073
|
||||
:100C90002E2F30E0EA3018F0295C3F4F02C0205D73
|
||||
:100CA0003F4F13963C932E931297019612968431E0
|
||||
:100CB000910519F75FBF8091E800877F8093E80076
|
||||
:100CC000CE0103966AE270E00FDC12C060917501FC
|
||||
:100CD000AE014F5F5F4FDCDBBC01009709F43CC005
|
||||
:100CE0008091E800877F8093E80089819A8158DCB1
|
||||
:100CF0008091E8008B778093E8002EC0803861F502
|
||||
:100D00008091E800877F8093E80080916C01809358
|
||||
:100D1000F1008091E8008E778093E8000FDD1CC021
|
||||
:100D20008823D1F4909173019230B0F48091E8005F
|
||||
:100D3000877F8093E80090936C0100DD80916C01C7
|
||||
:100D4000882321F48091E30087FF02C084E001C082
|
||||
:100D500081E080937001CFDA8091E80083FF0AC0C0
|
||||
:100D60008091E800877F8093E8008091EB008062AB
|
||||
:100D70008093EB00AC960FB6F894DEBF0FBECDBFEC
|
||||
:100D8000DF91CF911F9108950895CF9380917001C5
|
||||
:100D90008823A9F08091E9008F709091EC0090FF7A
|
||||
:100DA00002C0C0E801C0C0E0C82B1092E9008091E9
|
||||
:100DB000E80083FF01C082DECF70C093E900CF91CD
|
||||
:100DC0000895CF93DF93EC018091E80083FFA3C0E7
|
||||
:100DD000888190E0209175013091760128173907BC
|
||||
:100DE00009F099C080917201813269F0823220F459
|
||||
:100DF000803209F090C03CC0823209F46BC083326B
|
||||
:100E000009F089C07AC080917101813A09F083C0EC
|
||||
:100E10008091E800877F8093E8008091E80080FF60
|
||||
:100E2000FCCF8C899D89AE89BF898093F100492FC1
|
||||
:100E30005A2F6B2F77274093F100AD016627772754
|
||||
:100E40004093F1008B2F9927AA27BB278093F100AD
|
||||
:100E5000888D8093F100898D8093F1008A8D809335
|
||||
:100E6000F1008091E8008E778093E80067DC53C042
|
||||
:100E700080917101813209F04EC08091E800877F36
|
||||
:100E80008093E80005C080917001882309F443C075
|
||||
:100E90008091E80082FFF7CF3091F1002091F100BE
|
||||
:100EA0009091F1008091F1003C8B2D8B9E8B8F8B6C
|
||||
:100EB0008091F100888F8091F100898F8091F100FD
|
||||
:100EC0008A8F8091E8008B778093E80037DCCE0131
|
||||
:100ED00017D121C0809171018132E9F48091E8003D
|
||||
:100EE000877F8093E8002ADC8091730190917401E0
|
||||
:100EF000998B888BCE0104D10EC080917101813213
|
||||
:100F000051F48091E800877F8093E80017DCCE01E0
|
||||
:100F100060917301F5D0DF91CF910895CF93DF9366
|
||||
:100F2000EC014096FC018BE0DF011D928A95E9F708
|
||||
:100F300082E08C83898783E08E87CE01019661E011
|
||||
:100F4000C1DB882359F0CE01069661E0BBDB882324
|
||||
:100F500029F0CE010B9661E0B5DB01C080E0DF91A6
|
||||
:100F6000CF910895CF93FC01C62F809170018430FA
|
||||
:100F7000E9F44489558966897789411551056105E8
|
||||
:100F80007105A1F081818F708093E9008091E80064
|
||||
:100F900085FD08C08091E8008E778093E800EFDB44
|
||||
:100FA000882329F4C093F10080E001C082E0CF9152
|
||||
:100FB0000895282FFB0184859585622FD3DF882330
|
||||
:100FC00019F08FEF9FEF089580E090E00895FC0105
|
||||
:100FD00080917001843029F5448955896689778923
|
||||
:100FE0004115510561057105E1F081818F70809394
|
||||
:100FF000E9008091F2009091F3000097A1F09091A8
|
||||
:10100000E8008091E8008E778093E80095FD0DC0A0
|
||||
:10101000B6DB882359F49091E8009E779093E8001E
|
||||
:10102000089582E0089580E0089580E00895209179
|
||||
:101030007001243099F4FC014489558966897789C7
|
||||
:10104000411551056105710549F021812F702093EB
|
||||
:10105000E9002091E80020FF01C0B9CF0895FC010C
|
||||
:1010600080917001843051F544895589668977896A
|
||||
:10107000411551056105710509F186818F708093D5
|
||||
:10108000E9008091E80082FF1CC08091F2009091FD
|
||||
:10109000F300009721F08091F10090E002C08FEF03
|
||||
:1010A0009FEF2091F2003091F3002115310559F4A2
|
||||
:1010B0002091E8002B772093E80008958FEF9FEFB1
|
||||
:1010C00008958FEF9FEF0895FC0184859585C7DF14
|
||||
:1010D00097FF02C08EEF9FEF0895FB012EE0DB012A
|
||||
:1010E0001D922A95E9F723E0238329ED37E0318724
|
||||
:1010F000208724E638E03387228795878487089500
|
||||
:10110000089590934B0180934A010895CF93C82F7F
|
||||
:101110008A3031F4E0914A01F0914B018DE009955C
|
||||
:10112000E0914A01F0914B018C2F0995CF910895E0
|
||||
:10113000E82FF0E0EF70F070E557FE4F8491E6CFB6
|
||||
:101140002F923F924F925F926F927F928F929F92D7
|
||||
:10115000AF92BF92CF92DF92EF92FF920F931F93C5
|
||||
:10116000CF93DF93CDB7DEB7A0970FB6F894DEBF6D
|
||||
:101170000FBECDBF282EA62EB42E722E6701780189
|
||||
:10118000442351F0F7FE08C066277727CB016C197E
|
||||
:101190007D098E099F0902C0C701B6016A2C6A94B5
|
||||
:1011A00021E0BB2009F420E0621A18A23324442471
|
||||
:1011B0005524A2019101F6D4DC01CB01FC01EF70B2
|
||||
:1011C000F070E557FE4FE491EF8FC901DA012EE18F
|
||||
:1011D000822E912C8C0E9D1E062D1CC00097A10501
|
||||
:1011E000B10591F0BC01CD01A2019101DBD4DC017C
|
||||
:1011F000CB01FC01EF70F070E557FE4FE491D40194
|
||||
:10120000EC93C901DA0102C0F40170820150089424
|
||||
:1012100081089108002311F78E01015E1F4F061906
|
||||
:101220001109BB20C1F001501040F7FE02C08DE251
|
||||
:101230000AC0C114D104E104F10421F08BE2F801E9
|
||||
:10124000808309C080E2D8018C9305C0F8018191A8
|
||||
:101250008F015CDFAA94AA20C9F7A0960FB6F89474
|
||||
:10126000DEBF0FBECDBFDF91CF911F910F91FF90D9
|
||||
:10127000EF90DF90CF90BF90AF909F908F907F9036
|
||||
:101280006F905F904F903F902F9008954F925F9294
|
||||
:101290006F927F928F929F92AF92BF92CF92DF9286
|
||||
:1012A000EF92FF920F931F93CF93DF930F92CDB7DF
|
||||
:1012B000DEB78C88CD88DE8867E1E62EF12CEC0E57
|
||||
:1012C000FD1E7AE0472E512C19C08823A1F480E03E
|
||||
:1012D00090E00F90DF91CF911F910F91FF90EF90D1
|
||||
:1012E000DF90CF90BF90AF909F908F907F906F9046
|
||||
:1012F0005F904F9008950ADF57017501D60111964E
|
||||
:10130000F601882019F06D01849102C080816D0181
|
||||
:101310008532D9F69D012F5F3F4F882021F069016A
|
||||
:10132000FD01849102C08C916901843629F08837CF
|
||||
:1013300081F0833601F706C05AE0652E712C00E17A
|
||||
:1013400017E20CC0F701808122E030E0E20EF31ECC
|
||||
:10135000D2CF40E1642E712C00E010E132E0A32EE8
|
||||
:10136000B12CAE0CBF1CF701E080F180843699F4FB
|
||||
:10137000F7FE0EC0F094E194F108F3948DE2C6DE1E
|
||||
:1013800007C0C801B201FAD38B016230710518F0B1
|
||||
:10139000E016F106B0F3C701B801F0D3982E862FFE
|
||||
:1013A0009983C6DEE92C9981F92EC801B301E6D3F1
|
||||
:1013B0008B016115710579F7A0CF589859985A9803
|
||||
:1013C000509A519A529A8AB18F708AB98BB1806FB4
|
||||
:1013D0008BB9089558988AB18F708AB98BB1806F94
|
||||
:1013E0008BB9599A5A9A66C05A98000000000000BA
|
||||
:1013F00000000000000000000000000000000000ED
|
||||
:1014000000000000000000000000000000000000DC
|
||||
:1014100000000000000000000000000000000000CC
|
||||
:1014200000005A9A000000000000000000000000C8
|
||||
:1014300000000000000000000000000000000000AC
|
||||
:10144000000000000000000000000000000000009C
|
||||
:101450000000000000000000000000005A9800009A
|
||||
:10146000000000000000000000000000000000007C
|
||||
:10147000000000000000000000000000000000006C
|
||||
:10148000000000000000000000000000000000005C
|
||||
:101490000000000000005A9A000000000000000058
|
||||
:1014A000000000000000000000000000000000003C
|
||||
:1014B000000000000000000000000000000000002C
|
||||
:1014C000000000000000000000000000000000001C
|
||||
:1014D0004F998ACF5A980895CF93DF930F92CDB743
|
||||
:1014E000DEB7898377DF589859985A9A9AB1906FE6
|
||||
:1014F0009AB92BB18981982F907F2F70922B9BB92D
|
||||
:1015000000000000000000000000000000000000DB
|
||||
:1015100000000000000000000000000000000000CB
|
||||
:1015200000000000000000000000000000000000BB
|
||||
:1015300000000000000000005A98000000000000B9
|
||||
:10154000000000000000000000000000000000009B
|
||||
:10155000000000000000000000000000000000008B
|
||||
:10156000000000000000000000000000000000007B
|
||||
:1015700000005A9A9BB18295807F9F70892B8BB90E
|
||||
:10158000000000000000000000000000000000005B
|
||||
:10159000000000000000000000000000000000004B
|
||||
:1015A000000000000000000000000000000000003B
|
||||
:1015B00000000000000000005A988AB18F708AB9BC
|
||||
:1015C0008BB1806F8BB90F90DF91CF91089502DFBF
|
||||
:1015D0008AB18F708AB98BB1806F8BB95898599A3C
|
||||
:1015E0005A9A000000000000000000000000000007
|
||||
:1015F00000000000000000000000000000000000EB
|
||||
:1016000000000000000000000000000000000000DA
|
||||
:101610000000000000000000000089B1807F5A989F
|
||||
:1016200000000000000000000000000000000000BA
|
||||
:1016300000000000000000000000000000000000AA
|
||||
:10164000000000000000000000000000000000009A
|
||||
:1016500000000000000000005A9A00000000000096
|
||||
:10166000000000000000000000000000000000007A
|
||||
:10167000000000000000000000000000000000006A
|
||||
:10168000000000000000000000000000000000005A
|
||||
:10169000000099B15A9892959F70892B0895CF9325
|
||||
:1016A000DF930F92CDB7DEB7898394DE589A5998AD
|
||||
:1016B0005A9A9AB1906F9AB92BB18981982F907FDD
|
||||
:1016C0002F70922B9BB9000000000000000000006A
|
||||
:1016D000000000000000000000000000000000000A
|
||||
:1016E00000000000000000000000000000000000FA
|
||||
:1016F00000000000000000000000000000005A98F8
|
||||
:1017000000000000000000000000000000000000D9
|
||||
:1017100000000000000000000000000000000000C9
|
||||
:1017200000000000000000000000000000000000B9
|
||||
:1017300000000000000000005A9A9BB18295807F53
|
||||
:101740009F70892B8BB90000000000000000000092
|
||||
:101750000000000000000000000000000000000089
|
||||
:101760000000000000000000000000000000000079
|
||||
:1017700000000000000000000000000000005A9877
|
||||
:101780008AB18F708AB98BB1806F8BB90F90DF915E
|
||||
:10179000CF91089581E0A0CE623031F0633031F016
|
||||
:1017A000613029F4805C03C08C5E01C08C5A806873
|
||||
:1017B00093CECF92DF92FF920F931F93CF93DF933D
|
||||
:1017C0000F92CDB7DEB78C01F42E698300DF982F1E
|
||||
:1017D0009F77FF0CFF0CFF0C6981660F660F660F89
|
||||
:1017E000CC24DD24060F111D8C2D8F0D8064998370
|
||||
:1017F00073DEF801EC0DFD1D849151DF0894C11CCE
|
||||
:10180000D11C998188E0C816D10471F7892F8068AE
|
||||
:1018100063DE0F90DF91CF911F910F91FF90DF90CA
|
||||
:10182000CF900895CF93DF93C8DD88E255DE81E045
|
||||
:1018300053DE80E69AEE86D086E04EDE8CE04CDE0B
|
||||
:1018400082E04ADE80E848DECCE9D1E0CE0160E00B
|
||||
:1018500040E0AFDFCE0161E041E0ABDFCE0162E00E
|
||||
:1018600042E0A7DFCE0163E043E0A3DFCE0164E006
|
||||
:1018700044E09FDFCE0165E045E09BDFCE0166E0FE
|
||||
:1018800046E097DFCE0167E047E093DFDF91CF913D
|
||||
:1018900008958F929F92AF92BF92CF92DF92EF9274
|
||||
:1018A000FF921F93CF93DF93C42F9C01220F331F0E
|
||||
:1018B000280F391F220F331F4C2F50E0249FC001E7
|
||||
:1018C000259F900D349F900D112458D14B01AA24CF
|
||||
:1018D000BB24C501B40126E030E040E050E062D115
|
||||
:1018E000162FCC24DD247601D0E01EC0D701C6011E
|
||||
:1018F0000596A11DB11D88169906AA06BB0638F4E7
|
||||
:101900008C149D04AE04BF0420F0812F03C085E039
|
||||
:1019100001C080E0C4DEDF5F86E090E0A0E0B0E0E0
|
||||
:10192000C80ED91EEA1EFB1EDC1701F7DF91CF910E
|
||||
:101930001F91FF90EF90DF90CF90BF90AF909F905E
|
||||
:101940008F90089508951F920F920FB60F920BB6C5
|
||||
:101950000F9211242F933F934F935F936F937F9335
|
||||
:101960008F939F93AF93BF93EF93FF9380917901F0
|
||||
:1019700090917A01A0917B01B0917C010196A11D0B
|
||||
:10198000B11D8093790190937A01A0937B01B0936C
|
||||
:101990007C0180917D0190917E01A0917F01B091A9
|
||||
:1019A00080010196A11DB11D80937D0190937E0160
|
||||
:1019B000A0937F01B093800180914C0190914D01E3
|
||||
:1019C000009729F0E0914C01F0914D010995FF91AC
|
||||
:1019D000EF91BF91AF919F918F917F916F915F91A7
|
||||
:1019E0004F913F912F910F900BBE0F900FBE0F9014
|
||||
:1019F0001F9018951F920F920FB60F920BB60F9271
|
||||
:101A000011242F933F934F935F936F937F938F9303
|
||||
:101A10009F93AF93BF93EF93FF9380914E0190916B
|
||||
:101A20004F01009729F0E0914E01F0914F01099587
|
||||
:101A3000FF91EF91BF91AF919F918F917F916F91A6
|
||||
:101A40005F914F913F912F910F900BBE0F900FBE62
|
||||
:101A50000F901F9018951F920F920FB60F920BB612
|
||||
:101A60000F9211242F933F934F935F936F937F9324
|
||||
:101A70008F939F93AF93BF93EF93FF938091500108
|
||||
:101A800090915101009729F0E0915001F09151019E
|
||||
:101A90000995FF91EF91BF91AF919F918F917F91A8
|
||||
:101AA0006F915F914F913F912F910F900BBE0F90CF
|
||||
:101AB0000FBE0F901F9018951F920F920FB60F92A6
|
||||
:101AC0000BB60F9211242F933F934F935F936F9315
|
||||
:101AD0007F938F939F93AF93BF93EF93FF938091E7
|
||||
:101AE000520190915301009729F0E0915201F09139
|
||||
:101AF00053010995FF91EF91BF91AF919F918F9104
|
||||
:101B00007F916F915F914F913F912F910F900BBEFD
|
||||
:101B10000F900FBE0F901F9018951F920F920FB647
|
||||
:101B20000F920BB60F9211242F933F934F935F9315
|
||||
:101B30006F937F938F939F93AF93BF93EF93FF9395
|
||||
:101B40008091540190915501009729F0E091540142
|
||||
:101B5000F09155010995FF91EF91BF91AF919F9140
|
||||
:101B60008F917F916F915F914F913F912F910F9046
|
||||
:101B70000BBE0F900FBE0F901F901895AA1BBB1B9A
|
||||
:101B800051E107C0AA1FBB1FA617B70710F0A61B7D
|
||||
:101B9000B70B881F991F5A95A9F780959095BC019E
|
||||
:101BA000CD010895A1E21A2EAA1BBB1BFD010DC099
|
||||
:101BB000AA1FBB1FEE1FFF1FA217B307E407F507FD
|
||||
:101BC00020F0A21BB30BE40BF50B661F771F881FD9
|
||||
:101BD000991F1A9469F760957095809590959B016F
|
||||
:101BE000AC01BD01CF010895CF93DF93EC012B81B0
|
||||
:101BF00020FF35C026FF09C02F7B2B838E819F815C
|
||||
:101C000001969F838E838A8128C022FF0FC0E881BE
|
||||
:101C1000F9818081992787FD9095009719F42062BA
|
||||
:101C20002B831DC03196F983E88311C0EA85FB85BB
|
||||
:101C3000CE01099597FF0BC02B813FEF8F3F930794
|
||||
:101C400011F480E101C080E2822B8B8308C02E81D9
|
||||
:101C50003F812F5F3F4F3F832E8390E002C08FEF85
|
||||
:101C60009FEFDF91CF910895CF93DF93CDB7DEB78C
|
||||
:101C7000AE01475F5F4F8D819E816F8178854BD02C
|
||||
:101C8000DF91CF9108950F931F93CF93DF93CDB73B
|
||||
:101C9000DEB70F811885AE01455F5F4FF801838184
|
||||
:101CA00088608383C80169857A8535D0F8012381EE
|
||||
:101CB000277F2383DF91CF911F910F9108950F9379
|
||||
:101CC0001F93CF93DF938C01EB018B8181FF1BC0AE
|
||||
:101CD00082FF0DC02E813F818C819D81281739079D
|
||||
:101CE00064F4E881F9810193F983E88306C0E8850B
|
||||
:101CF000F985802F0995009731F48E819F81019697
|
||||
:101D00009F838E8302C00FEF1FEFC801DF91CF9139
|
||||
:101D10001F910F9108952F923F924F925F926F9271
|
||||
:101D20007F928F929F92AF92BF92CF92DF92EF926B
|
||||
:101D3000FF920F931F93CF93DF93CDB7DEB72D970D
|
||||
:101D40000FB6F894DEBF0FBECDBF3C017D876C8718
|
||||
:101D50005A01FC0117821682838181FFBBC12E01CB
|
||||
:101D60000894411C511CF3019381EC85FD8593FD82
|
||||
:101D7000859193FF8191FD87EC87882309F4A6C1A3
|
||||
:101D8000853241F493FD859193FF8191FD87EC8726
|
||||
:101D9000853221F490E0B30192DFE5CFFF24EE24F9
|
||||
:101DA00010E01032B0F48B3269F08C3228F48032BB
|
||||
:101DB00051F0833271F40BC08D3239F0803349F425
|
||||
:101DC00011602CC01260146029C0186027C0106117
|
||||
:101DD00025C017FD2EC0282F20532A3098F416FF57
|
||||
:101DE00008C08F2D880FF82EFF0CFF0CF80EF20E96
|
||||
:101DF00015C08E2D880FE82EEE0CEE0CE80EE20ECC
|
||||
:101E000010620CC08E3221F416FD60C1106406C051
|
||||
:101E10008C3611F4106802C0883659F4EC85FD85C3
|
||||
:101E200093FD859193FF8191FD87EC87882309F0CD
|
||||
:101E3000B8CF982F9554933018F09052933038F4CF
|
||||
:101E400024E030E0A20EB31E3FE339830FC0833697
|
||||
:101E500031F0833781F0833509F056C021C0F50198
|
||||
:101E60008081898322E030E0A20EB31E21E0C22EE1
|
||||
:101E7000D12C420113C092E0292E312C2A0C3B1C9C
|
||||
:101E8000F5018080918016FF03C06F2D70E002C0C5
|
||||
:101E90006FEF7FEFC40144D16C0151011F7714C073
|
||||
:101EA00082E0282E312C2A0C3B1CF5018080918089
|
||||
:101EB00016FF03C06F2D70E002C06FEF7FEFC4010B
|
||||
:101EC00024D16C011068510113FD1AC005C080E2D5
|
||||
:101ED00090E0B301F4DEEA948E2D90E0C816D906A6
|
||||
:101EE000B0F30EC0F40117FD859117FF81914F01EA
|
||||
:101EF00090E0B301E4DEE110EA940894C108D1084F
|
||||
:101F0000C114D10479F7DFC0843611F0893649F560
|
||||
:101F1000F50117FF07C080819181A281B38124E080
|
||||
:101F200030E008C080819181AA2797FDA095BA2F43
|
||||
:101F300022E030E0A20EB31E012F0F76B7FF08C0DB
|
||||
:101F4000B095A095909581959F4FAF4FBF4F00687A
|
||||
:101F5000BC01CD01A2012AE030E0EDD0D82ED4188A
|
||||
:101F60003EC0853721F41F7E2AE030E020C0197F73
|
||||
:101F70008F36A9F0803720F4883509F0A7C00BC050
|
||||
:101F8000803721F0883709F0A1C001C0106114FF2B
|
||||
:101F900009C0146007C014FF08C0166006C028E01E
|
||||
:101FA00030E005C020E130E002C020E132E0F50180
|
||||
:101FB00017FF07C0608171818281938144E050E006
|
||||
:101FC00006C06081718180E090E042E050E0A40EA4
|
||||
:101FD000B51EA201B0D0D82ED418012F0F7706FF5E
|
||||
:101FE00009C00E7FDF1430F404FF06C002FD04C0F8
|
||||
:101FF0000F7E02C01D2D01C01F2D802F90E004FF19
|
||||
:102000000CC0FE01ED0DF11D2081203311F4097E7D
|
||||
:1020100009C002FF06C01E5F05C086789070009759
|
||||
:1020200009F01F5F802E992403FD11C000FF0CC032
|
||||
:10203000FD2C1E1548F4FE0CF11A1E2D05C080E281
|
||||
:1020400090E0B3013CDE1F5F1E15C8F304C01E15EF
|
||||
:1020500010F4E11A01C0EE2484FE0EC080E390E08B
|
||||
:10206000B3012DDE82FE1DC081FE03C088E590E035
|
||||
:1020700010C088E790E00DC0C4018678907000978A
|
||||
:1020800081F081FC02C080E201C08BE207FD8DE29D
|
||||
:1020900090E0B30114DE05C080E390E0B3010FDEF1
|
||||
:1020A000FA94DF14C8F3DA94F201ED0DF11D80818A
|
||||
:1020B00090E0B30104DEDD20B1F705C080E290E0DE
|
||||
:1020C000B301FDDDEA94EE20C9F74DCEF301868120
|
||||
:1020D000978102C08FEF9FEF2D960FB6F894DEBF69
|
||||
:1020E0000FBECDBFDF91CF911F910F91FF90EF9069
|
||||
:1020F000DF90CF90BF90AF909F908F907F906F9028
|
||||
:102100005F904F903F902F900895FC010590615093
|
||||
:1021100070400110D8F7809590958E0F9F1F0895FD
|
||||
:10212000FC016150704001900110D8F780959095A6
|
||||
:102130008E0F9F1F0895FA01AA27283051F12031F0
|
||||
:1021400081F1E8946F936E7F6E5F7F4F8F4F9F4F4B
|
||||
:10215000AF4FB1E03ED0B4E03CD0670F781F891F8D
|
||||
:102160009A1FA11D680F791F8A1F911DA11D6A0F5B
|
||||
:10217000711D811D911DA11D20D009F468943F910E
|
||||
:102180002AE0269F11243019305D3193DEF6CF010D
|
||||
:102190000895462F4770405D4193B3E00FD0C9F7D3
|
||||
:1021A000F6CF462F4F70405D4A3318F0495D31FD40
|
||||
:1021B0004052419302D0A9F7EACFB4E0A695979593
|
||||
:1021C000879577956795BA95C9F700976105710569
|
||||
:1021D00008959B01AC010A2E0694579547953795B3
|
||||
:1021E0002795BA95C9F7620F731F841F951FA01D0D
|
||||
:0621F0000895F894FFCFF2
|
||||
:1021F600504F525442203D202533780D0A00393085
|
||||
:102206000083100000010410000001820800000194
|
||||
:102216000000000000000000000000A120000000F7
|
||||
:0C222600000200A1010000000000000008
|
||||
:00000001FF
|
||||
33
Micropendous/Firmware/VirtualSerial_LCD/global.h
Normal file
33
Micropendous/Firmware/VirtualSerial_LCD/global.h
Normal file
@@ -0,0 +1,33 @@
|
||||
|
||||
//*****************************************************************************
|
||||
//
|
||||
// File Name : 'global.h'
|
||||
// Title : AVR project global include
|
||||
// Author : Pascal Stang
|
||||
// Created : 7/12/2001
|
||||
// Revised : 9/30/2002
|
||||
// Version : 1.1
|
||||
// Target MCU : Atmel AVR series
|
||||
// Editor Tabs : 4
|
||||
//
|
||||
// Description : This include file is designed to contain items useful to all
|
||||
// code files and projects.
|
||||
//
|
||||
// This code is distributed under the GNU Public License
|
||||
// which can be found at http://www.gnu.org/licenses/gpl.txt
|
||||
//
|
||||
//*****************************************************************************
|
||||
|
||||
#ifndef GLOBAL_H
|
||||
#define GLOBAL_H
|
||||
|
||||
// global AVRLIB defines
|
||||
#include <avrlibdefs.h>
|
||||
// global AVRLIB types definitions
|
||||
#include <avrlibtypes.h>
|
||||
|
||||
// project/system dependent defines
|
||||
|
||||
#define CYCLES_PER_US ((F_CPU+500000)/1000000) // cpu cycles per microsecond
|
||||
|
||||
#endif
|
||||
127
Micropendous/Firmware/VirtualSerial_LCD/lcdconf.h
Normal file
127
Micropendous/Firmware/VirtualSerial_LCD/lcdconf.h
Normal file
@@ -0,0 +1,127 @@
|
||||
/*! \file lcdconf.h \brief Character LCD driver configuration. */
|
||||
//*****************************************************************************
|
||||
//
|
||||
// File Name : 'lcdconf.h'
|
||||
// Title : Character LCD driver for HD44780/SED1278 displays
|
||||
// (usable in mem-mapped, or I/O mode)
|
||||
// Author : Pascal Stang - Copyright (C) 2000-2002
|
||||
// Created : 11/22/2000
|
||||
// Revised : 4/30/2002
|
||||
// Version : 1.1
|
||||
// Target MCU : Atmel AVR series
|
||||
// Editor Tabs : 4
|
||||
//
|
||||
// This code is distributed under the GNU Public License
|
||||
// which can be found at http://www.gnu.org/licenses/gpl.txt
|
||||
//
|
||||
//*****************************************************************************
|
||||
|
||||
#ifndef LCDCONF_H
|
||||
#define LCDCONF_H
|
||||
|
||||
// Define type of interface used to access the LCD
|
||||
// LCD_MEMORY_INTERFACE:
|
||||
// To use this mode you must supply the necessary hardware to connect the
|
||||
// LCD to the CPU's memory bus. The CONTROL and DATA registers of the LCD
|
||||
// (HD44780 chip) must appear in the CPU's memory map. This mode is faster
|
||||
// than the port interface but requires a little extra hardware to make it
|
||||
// work. It is especially useful when your CPU is already configured to
|
||||
// use an external memory bus for other purposes (like accessing memory).
|
||||
//
|
||||
// LCD_PORT_INTERFACE:
|
||||
// This mode allows you to connect the control and data lines of the LCD
|
||||
// directly to the I/O port pins (no interfacing hardware is needed),
|
||||
// but it generally runs slower than the LCD_MEMORY_INTERFACE.
|
||||
// Depending on your needs, when using the LCD_PORT_INTERFACE, the LCD may
|
||||
// be accessed in 8-bit or 4-bit mode. In 8-bit mode, one whole I/O port
|
||||
// (pins 0-7) is required for the LCD data lines, but transfers are faster.
|
||||
// In 4-bit mode, only I/O port pins 4-7 are needed for data lines, but LCD
|
||||
// access is slower. In either mode, three additional port pins are
|
||||
// required for the LCD interface control lines (RS, R/W, and E).
|
||||
|
||||
// Enable one of the following interfaces to your LCD
|
||||
//#define LCD_MEMORY_INTERFACE
|
||||
#define USE_4BIT_LCD_INTERFACE
|
||||
#define LCD_PORT_INTERFACE
|
||||
|
||||
// LCD display geometry
|
||||
// change these definitions to adapt settings
|
||||
#define LCD_LINES 2 // visible lines
|
||||
#define LCD_LINE_LENGTH 16 // line length (in characters)
|
||||
|
||||
|
||||
// Enter the parameters for your chosen interface
|
||||
// if you chose the LCD_PORT_INTERFACE:
|
||||
#ifdef USE_4BIT_LCD_INTERFACE
|
||||
#ifdef LCD_PORT_INTERFACE
|
||||
#ifndef LCD_CTRL_PORT
|
||||
// port and pins you will use for control lines
|
||||
#define LCD_CTRL_PORT PORTD
|
||||
#define LCD_CTRL_DDR DDRD
|
||||
#define LCD_CTRL_RS 0
|
||||
#define LCD_CTRL_RW 1
|
||||
#define LCD_CTRL_E 2
|
||||
#endif
|
||||
#ifndef LCD_DATA_POUT
|
||||
// port you will use for data lines
|
||||
#define LCD_DATA_POUT PORTD
|
||||
#define LCD_DATA_PIN PIND
|
||||
#define LCD_DATA_DDR DDRD
|
||||
// access mode you will use (default is 8bit unless 4bit is selected)
|
||||
#define LCD_DATA_4BIT
|
||||
#endif
|
||||
#endif
|
||||
#else // USE 8BIT LCD INTERFACE
|
||||
#ifdef LCD_PORT_INTERFACE
|
||||
#ifndef LCD_CTRL_PORT
|
||||
// port and pins you will use for control lines
|
||||
#define LCD_CTRL_PORT PORTC
|
||||
#define LCD_CTRL_DDR DDRC
|
||||
#define LCD_CTRL_RS 7
|
||||
#define LCD_CTRL_RW 6
|
||||
#define LCD_CTRL_E 5
|
||||
#endif
|
||||
#ifndef LCD_DATA_POUT
|
||||
// port you will use for data lines
|
||||
#define LCD_DATA_POUT PORTB
|
||||
#define LCD_DATA_PIN PINB
|
||||
#define LCD_DATA_DDR DDRB
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
// if you chose the LCD_MEMORY_INTERFACE:
|
||||
#ifdef LCD_MEMORY_INTERFACE
|
||||
#ifndef LCD_CTRL_ADDR
|
||||
// CPU memory address of the LCD control register
|
||||
#define LCD_CTRL_ADDR 0x1000
|
||||
#endif
|
||||
#ifndef LCD_DATA_ADDR
|
||||
// CPU memory address of the LCD data register
|
||||
#define LCD_DATA_ADDR 0x1001
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
// cursor position to DDRAM mapping
|
||||
#define LCD_LINE0_DDRAMADDR 0x00
|
||||
#define LCD_LINE1_DDRAMADDR 0x40
|
||||
#define LCD_LINE2_DDRAMADDR 0x14
|
||||
#define LCD_LINE3_DDRAMADDR 0x54
|
||||
|
||||
// LCD delay
|
||||
// This delay affects how quickly accesses are made to the LCD controller.
|
||||
// The HD44780 LCD controller requires an access time of at least 1us.
|
||||
// LCD_DELAY should be scaled to take at least half that time (500us).
|
||||
// Each NOP takes 1 CPU clock cycle to execute. Thus, at 4MHz, you should
|
||||
// use at least 2 NOPs, at 8MHz at least 4 NOPs, etc.
|
||||
// You can also use the delay_us(xx) command for longer access times.
|
||||
|
||||
// LCD_DELAY is now automatically set in lcd.h,
|
||||
// however, if you define it here, this definition will override the automatic setting
|
||||
|
||||
// use this for a fail-safe delay
|
||||
// #define LCD_DELAY delay_us(5);
|
||||
|
||||
#endif // LCDCONF_H
|
||||
@@ -17,10 +17,12 @@ BOARD = MICROPENDOUS_REV2
|
||||
F_CPU = 16000000
|
||||
F_USB = $(F_CPU)
|
||||
OPTIMIZATION = s
|
||||
TARGET = VirtualSerial
|
||||
SRC = $(TARGET).c Descriptors.c $(LUFA_SRC_USB) $(LUFA_SRC_USBCLASS)
|
||||
TARGET = VirtualSerial_LCD
|
||||
AVRLIB_PATH = ../../libs/avrlib
|
||||
SRC = $(TARGET).c Descriptors.c $(LUFA_SRC_USB) $(LUFA_SRC_USBCLASS) \
|
||||
$(AVRLIB_PATH)/rprintf.c $(AVRLIB_PATH)/lcd.c $(AVRLIB_PATH)/timer.c
|
||||
LUFA_PATH = ../../libs/LUFA/LUFA
|
||||
CC_FLAGS = -DUSE_LUFA_CONFIG_HEADER -IConfig/
|
||||
CC_FLAGS = -DUSE_LUFA_CONFIG_HEADER -IConfig/ -I$(AVRLIB_PATH)
|
||||
LD_FLAGS =
|
||||
CDC_BOOTLOADER_PORT = /dev/ttyACM0
|
||||
#CDC_BOOTLOADER_PORT = COM5
|
||||
|
||||
@@ -131,46 +131,56 @@
|
||||
#if !defined(__DOXYGEN__)
|
||||
static inline void LEDs_Init(void)
|
||||
{
|
||||
_BOARD_LED_DDR |= LEDS_ALL_LEDS;
|
||||
_BOARD_LED_PORT &= ~LEDS_ALL_LEDS;
|
||||
//_BOARD_LED_DDR |= LEDS_ALL_LEDS;
|
||||
//_BOARD_LED_PORT &= ~LEDS_ALL_LEDS;
|
||||
DDRB |= (1 << PB1);
|
||||
PORTB |= (1 << PB1);
|
||||
}
|
||||
|
||||
static inline void LEDs_Disable(void)
|
||||
{
|
||||
_BOARD_LED_DDR &= ~LEDS_ALL_LEDS;
|
||||
_BOARD_LED_PORT &= ~LEDS_ALL_LEDS;
|
||||
//_BOARD_LED_DDR &= ~LEDS_ALL_LEDS;
|
||||
//_BOARD_LED_PORT &= ~LEDS_ALL_LEDS;
|
||||
DDRB &= ~(1 << PB1);
|
||||
PORTB &= ~(1 << PB1);
|
||||
}
|
||||
|
||||
static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask)
|
||||
{
|
||||
_BOARD_LED_PORT |= LEDMask;
|
||||
//_BOARD_LED_PORT |= LEDMask;
|
||||
PORTB |= LEDMask;
|
||||
}
|
||||
|
||||
static inline void LEDs_TurnOffLEDs(const uint8_t LEDMask)
|
||||
{
|
||||
_BOARD_LED_PORT &= ~LEDMask;
|
||||
//_BOARD_LED_PORT &= ~LEDMask;
|
||||
PORTB &= ~LEDMask;
|
||||
}
|
||||
|
||||
static inline void LEDs_SetAllLEDs(const uint8_t LEDMask)
|
||||
{
|
||||
_BOARD_LED_PORT = ((_BOARD_LED_PORT & ~LEDS_ALL_LEDS) | LEDMask);
|
||||
//_BOARD_LED_PORT = ((_BOARD_LED_PORT & ~LEDS_ALL_LEDS) | LEDMask);
|
||||
PORTB = ((_BOARD_LED_PORT & ~LEDS_ALL_LEDS) | LEDMask);
|
||||
}
|
||||
|
||||
static inline void LEDs_ChangeLEDs(const uint8_t LEDMask,
|
||||
const uint8_t ActiveMask)
|
||||
{
|
||||
_BOARD_LED_PORT = ((_BOARD_LED_PORT & ~LEDMask) | ActiveMask);
|
||||
//_BOARD_LED_PORT = ((_BOARD_LED_PORT & ~LEDMask) | ActiveMask);
|
||||
PORTB = ((_BOARD_LED_PORT & ~LEDMask) | ActiveMask);
|
||||
}
|
||||
|
||||
static inline void LEDs_ToggleLEDs(const uint8_t LEDMask)
|
||||
{
|
||||
_BOARD_LED_PIN = LEDMask;
|
||||
//_BOARD_LED_PIN = LEDMask;
|
||||
PORTB = LEDMask;
|
||||
}
|
||||
|
||||
static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT;
|
||||
static inline uint8_t LEDs_GetLEDs(void)
|
||||
{
|
||||
return (_BOARD_LED_PORT & LEDS_ALL_LEDS);
|
||||
//return (_BOARD_LED_PORT & LEDS_ALL_LEDS);
|
||||
return (PORTB & (1 << PB0));
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@@ -69,15 +69,28 @@
|
||||
#define GNUC_PACKED __attribute__((packed))
|
||||
|
||||
// port address helpers
|
||||
#define DDR(x) ((x)-1) // address of data direction register of port x
|
||||
#define PIN(x) ((x)-2) // address of input register of port x
|
||||
#ifndef DDR
|
||||
#define DDR(x) ((x)-1) // address of data direction register of port x
|
||||
#endif
|
||||
#ifndef PIN
|
||||
#define PIN(x) ((x)-2) // address of input register of port x
|
||||
#endif
|
||||
|
||||
// MIN/MAX/ABS macros
|
||||
#define MIN(a,b) ((a<b)?(a):(b))
|
||||
#define MAX(a,b) ((a>b)?(a):(b))
|
||||
#define ABS(x) ((x>0)?(x):(-x))
|
||||
#ifndef MIN
|
||||
#define MIN(a,b) ((a<b)?(a):(b))
|
||||
#endif
|
||||
#ifndef MAX
|
||||
#define MAX(a,b) ((a>b)?(a):(b))
|
||||
#endif
|
||||
#ifndef ABS
|
||||
#define ABS(x) ((x>0)?(x):(-x))
|
||||
#endif
|
||||
|
||||
// constants
|
||||
#define PI 3.14159265359
|
||||
|
||||
#ifndef PI
|
||||
#define PI 3.14159265359
|
||||
#endif
|
||||
|
||||
#endif // AVRLIBDEFS_H
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
#include "lcd.h"
|
||||
|
||||
// custom LCD characters
|
||||
unsigned char __attribute__ ((progmem)) LcdCustomChar[] =
|
||||
unsigned const char __attribute__ ((progmem)) LcdCustomChar[] =
|
||||
{
|
||||
0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, // 0. 0/5 full progress block
|
||||
0x00, 0x1F, 0x10, 0x10, 0x10, 0x10, 0x1F, 0x00, // 1. 1/5 full progress block
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
#define LCD_MODE_DEFAULT ((1<<LCD_ENTRY_MODE) | (1<<LCD_ENTRY_INC))
|
||||
|
||||
// custom LCD characters
|
||||
extern unsigned char __attribute__ ((progmem)) LcdCustomChar[];
|
||||
extern unsigned const char __attribute__ ((progmem)) LcdCustomChar[];
|
||||
#define LCDCHAR_PROGRESS05 0 // 0/5 full progress block
|
||||
#define LCDCHAR_PROGRESS15 1 // 1/5 full progress block
|
||||
#define LCDCHAR_PROGRESS25 2 // 2/5 full progress block
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
//static char HexChars[] = "0123456789ABCDEF";
|
||||
// use this to store hex conversion in program memory
|
||||
//static prog_char HexChars[] = "0123456789ABCDEF";
|
||||
static char __attribute__ ((progmem)) HexChars[] = "0123456789ABCDEF";
|
||||
static const char __attribute__ ((progmem)) HexChars[] = "0123456789ABCDEF";
|
||||
|
||||
#define hexchar(x) pgm_read_byte( HexChars+((x)&0x0f) )
|
||||
//#define hexchar(x) ((((x)&0x0F)>9)?((x)+'A'-10):((x)+'0'))
|
||||
@@ -116,7 +116,7 @@ void rprintfStrLen(char str[], unsigned int start, unsigned int len)
|
||||
|
||||
// *** rprintfProgStr ***
|
||||
// prints a null-terminated string stored in program ROM
|
||||
void rprintfProgStr(const prog_char str[])
|
||||
void rprintfProgStr(const char *str)
|
||||
{
|
||||
// print a string stored in program memory
|
||||
register char c;
|
||||
|
||||
@@ -82,7 +82,7 @@ void rprintfStrLen(char str[], unsigned int start, unsigned int len);
|
||||
//! prints a string stored in program rom
|
||||
/// \note This function does not actually store your string in
|
||||
/// program rom, but merely reads it assuming you stored it properly.
|
||||
void rprintfProgStr(const prog_char str[]);
|
||||
void rprintfProgStr(const char str[]);
|
||||
|
||||
//! Using the function rprintfProgStrM(...) automatically causes
|
||||
/// your string to be stored in ROM, thereby not wasting precious RAM.
|
||||
|
||||
@@ -28,10 +28,10 @@
|
||||
// Program ROM constants
|
||||
// the prescale division values stored in order of timer control register index
|
||||
// STOP, CLK, CLK/8, CLK/64, CLK/256, CLK/1024
|
||||
unsigned short __attribute__ ((progmem)) TimerPrescaleFactor[] = {0,1,8,64,256,1024};
|
||||
unsigned const short __attribute__ ((progmem)) TimerPrescaleFactor[] = {0,1,8,64,256,1024};
|
||||
// the prescale division values stored in order of timer control register index
|
||||
// STOP, CLK, CLK/8, CLK/32, CLK/64, CLK/128, CLK/256, CLK/1024
|
||||
unsigned short __attribute__ ((progmem)) TimerRTCPrescaleFactor[] = {0,1,8,32,64,128,256,1024};
|
||||
unsigned const short __attribute__ ((progmem)) TimerRTCPrescaleFactor[] = {0,1,8,32,64,128,256,1024};
|
||||
|
||||
// Global variables
|
||||
// time registers
|
||||
|
||||
Reference in New Issue
Block a user