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 = | 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, | /** 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 = | 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" | /** 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. |  *  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 | // Global buffer for use with STDIO functions | ||||||
| @@ -79,6 +79,9 @@ USB_ClassInfo_CDC_Device_t VirtualSerial_CDC_Interface = | |||||||
|  */ |  */ | ||||||
| static FILE USBSerialStream; | 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 | /** Main program entry point. This routine contains the overall program flow, including initial | ||||||
|  *  setup of all components and the main program loop. |  *  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. */ | /** Configures the board hardware and chip peripherals for the demo's functionality. */ | ||||||
| void SetupHardware(void) | void SetupHardware(void) | ||||||
| { | { | ||||||
| 	/* Disable watchdog if enabled by bootloader/fuses */ | 	// Disable watchdog if enabled by bootloader/fuses | ||||||
| 	MCUSR &= ~(1 << WDRF); | 	MCUSR &= ~(1 << WDRF); | ||||||
| 	wdt_disable(); | 	wdt_disable(); | ||||||
|  |  | ||||||
| 	/* Disable clock division */ | 	// Disable clock division | ||||||
| 	clock_prescale_set(clock_div_1); | 	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__) ||  \ | 	#if (	defined(__AVR_AT90USB1287__) || defined(__AVR_AT90USB647__) ||  \ | ||||||
| 			defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB646__) ||  \ | 			defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB646__) ||  \ | ||||||
| 			defined(__AVR_ATmega16U4__)  || defined(__AVR_ATmega32U4__) ||  \ | 			defined(__AVR_ATmega16U4__)  || defined(__AVR_ATmega32U4__) ||  \ | ||||||
| @@ -122,7 +125,26 @@ void SetupHardware(void) | |||||||
| 		JTAG_DISABLE(); | 		JTAG_DISABLE(); | ||||||
| 	#endif | 	#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_Init(); | ||||||
| 	LEDs_TurnOnLEDs(LEDS_LED1); | 	LEDs_TurnOnLEDs(LEDS_LED1); | ||||||
| 	DISABLE_VOLTAGE_TXRX(); // used on Micropendous REV1/2 boards | 	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) | void MainTask(void) | ||||||
| { | { | ||||||
| 	int count = 0; | 	int     tempInt  = 0; | ||||||
|  | 	uint8_t tempChar = 0; | ||||||
|  |  | ||||||
| 	// If the host has sent data then echo it back | 	// example usage | ||||||
| 	// Throughput is maximized if the full EP buffer is read and sent each time | 	if (firstNumber == 12345) { | ||||||
| 	// Throughput approaches CDC_TXRX_EPSIZE kbytes/second and depends on transfer size from host  | 		lcdClear(); | ||||||
| 	if ((count = fread(&buffer, 1, CDC_TXRX_EPSIZE, &USBSerialStream)) > 0) { | 		rprintfChar('#'); // print a single character to the LCD | ||||||
| 		fwrite(&buffer, 1, count, &USBSerialStream); | 		// 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()) { | 	if (Buttons_GetStatus()) { | ||||||
| 		fprintf_P(&USBSerialStream, PSTR("\r\nHWB has been pressed!\r\n")); // send a constant string stored in FLASH | 		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. |  *  Header file for VirtualSerial.c. | ||||||
|  */ |  */ | ||||||
|  |  | ||||||
| #ifndef _VIRTUALSERIAL_H_ | #ifndef _VIRTUALSERIAL_LCD_H_ | ||||||
| #define _VIRTUALSERIAL_H_ | #define _VIRTUALSERIAL_LCD_H_ | ||||||
|  |  | ||||||
| 	/* Includes: */ | 	/* Includes: */ | ||||||
| 		#include <avr/io.h> | 		#include <avr/io.h> | ||||||
| @@ -50,6 +50,12 @@ | |||||||
| 		#include <LUFA/Drivers/Board/Buttons.h> | 		#include <LUFA/Drivers/Board/Buttons.h> | ||||||
| 		#include <LUFA/Drivers/USB/USB.h> | 		#include <LUFA/Drivers/USB/USB.h> | ||||||
|  |  | ||||||
|  | 		#include "global.h" | ||||||
|  | 		#include "lcdconf.h" | ||||||
|  | 		#include <lcd.h> | ||||||
|  | 		#include <timer.h> | ||||||
|  | 		#include <rprintf.h> | ||||||
|  |  | ||||||
| 	/* Macros: */ | 	/* Macros: */ | ||||||
| 		/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */ | 		/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */ | ||||||
| 		#define LEDMASK_USB_NOTREADY      LEDS_LED1 | 		#define LEDMASK_USB_NOTREADY      LEDS_LED1 | ||||||
| @@ -72,5 +78,5 @@ | |||||||
| 		void EVENT_USB_Device_ConfigurationChanged(void); | 		void EVENT_USB_Device_ConfigurationChanged(void); | ||||||
| 		void EVENT_USB_Device_ControlRequest(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_CPU        = 16000000 | ||||||
| F_USB        = $(F_CPU) | F_USB        = $(F_CPU) | ||||||
| OPTIMIZATION = s | OPTIMIZATION = s | ||||||
| TARGET       = VirtualSerial | TARGET       = VirtualSerial_LCD | ||||||
| SRC          = $(TARGET).c Descriptors.c $(LUFA_SRC_USB) $(LUFA_SRC_USBCLASS) | 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 | LUFA_PATH    = ../../libs/LUFA/LUFA | ||||||
| CC_FLAGS     = -DUSE_LUFA_CONFIG_HEADER -IConfig/ | CC_FLAGS     = -DUSE_LUFA_CONFIG_HEADER -IConfig/  -I$(AVRLIB_PATH) | ||||||
| LD_FLAGS     = | LD_FLAGS     = | ||||||
| CDC_BOOTLOADER_PORT = /dev/ttyACM0 | CDC_BOOTLOADER_PORT = /dev/ttyACM0 | ||||||
| #CDC_BOOTLOADER_PORT = COM5 | #CDC_BOOTLOADER_PORT = COM5 | ||||||
|   | |||||||
| @@ -131,46 +131,56 @@ | |||||||
| 		#if !defined(__DOXYGEN__) | 		#if !defined(__DOXYGEN__) | ||||||
| 			static inline void LEDs_Init(void) | 			static inline void LEDs_Init(void) | ||||||
| 			{ | 			{ | ||||||
| 				_BOARD_LED_DDR  |=  LEDS_ALL_LEDS; | 				//_BOARD_LED_DDR  |=  LEDS_ALL_LEDS; | ||||||
| 				_BOARD_LED_PORT &= ~LEDS_ALL_LEDS; | 				//_BOARD_LED_PORT &= ~LEDS_ALL_LEDS; | ||||||
|  | 				DDRB  |=  (1 << PB1); | ||||||
|  | 				PORTB |=  (1 << PB1); | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
| 			static inline void LEDs_Disable(void) | 			static inline void LEDs_Disable(void) | ||||||
| 			{ | 			{ | ||||||
| 				_BOARD_LED_DDR  &= ~LEDS_ALL_LEDS; | 				//_BOARD_LED_DDR  &= ~LEDS_ALL_LEDS; | ||||||
| 				_BOARD_LED_PORT &= ~LEDS_ALL_LEDS; | 				//_BOARD_LED_PORT &= ~LEDS_ALL_LEDS; | ||||||
|  | 				DDRB  &= ~(1 << PB1); | ||||||
|  | 				PORTB &= ~(1 << PB1); | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
| 			static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask) | 			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) | 			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) | 			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, | 			static inline void LEDs_ChangeLEDs(const uint8_t LEDMask, | ||||||
| 			                                   const uint8_t ActiveMask) | 			                                   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) | 			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) ATTR_WARN_UNUSED_RESULT; | ||||||
| 			static inline uint8_t LEDs_GetLEDs(void) | 			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 | 		#endif | ||||||
|  |  | ||||||
|   | |||||||
| @@ -69,15 +69,28 @@ | |||||||
| #define GNUC_PACKED __attribute__((packed))  | #define GNUC_PACKED __attribute__((packed))  | ||||||
|  |  | ||||||
| // port address helpers | // port address helpers | ||||||
| #define DDR(x) ((x)-1)    // address of data direction register of port x | #ifndef DDR | ||||||
| #define PIN(x) ((x)-2)    // address of input register of port x | 	#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 | // MIN/MAX/ABS macros | ||||||
| #define MIN(a,b)			((a<b)?(a):(b)) | #ifndef MIN | ||||||
| #define MAX(a,b)			((a>b)?(a):(b)) | 	#define MIN(a,b)			((a<b)?(a):(b)) | ||||||
| #define ABS(x)				((x>0)?(x):(-x)) | #endif | ||||||
|  | #ifndef MAX | ||||||
|  | 	#define MAX(a,b)			((a>b)?(a):(b)) | ||||||
|  | #endif | ||||||
|  | #ifndef ABS | ||||||
|  | 	#define ABS(x)				((x>0)?(x):(-x)) | ||||||
|  | #endif | ||||||
|  |  | ||||||
| // constants | // constants | ||||||
| #define PI		3.14159265359 | #ifndef PI | ||||||
|  | 	#define PI		3.14159265359 | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  | #endif // AVRLIBDEFS_H | ||||||
|  |  | ||||||
|   | |||||||
| @@ -25,7 +25,7 @@ | |||||||
| #include "lcd.h" | #include "lcd.h" | ||||||
|  |  | ||||||
| // custom LCD characters | // 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, 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 | 	0x00, 0x1F, 0x10, 0x10, 0x10, 0x10, 0x1F, 0x00, // 1. 1/5 full progress block | ||||||
| @@ -419,7 +419,7 @@ void lcdPrintData(char* data, u08 nBytes) | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| #if (!defined(__AVR_AT90USB162__)  && !defined(__AVR_AT90USB82__)) | #if (!defined(__AVR_AT90USB162__)  && !defined(__AVR_AT90USB82__)) | ||||||
| void lcdProgressBar(u16 progress, u16 maxprogress, u08 length) | void lcdProgressBar(u16 progress, u16 maxprogress, u08 length) | ||||||
| { | { | ||||||
| 	u08 i; | 	u08 i; | ||||||
|   | |||||||
| @@ -103,7 +103,7 @@ | |||||||
| #define LCD_MODE_DEFAULT		((1<<LCD_ENTRY_MODE) | (1<<LCD_ENTRY_INC)) | #define LCD_MODE_DEFAULT		((1<<LCD_ENTRY_MODE) | (1<<LCD_ENTRY_INC)) | ||||||
|  |  | ||||||
| // custom LCD characters | // 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_PROGRESS05		0	// 0/5 full progress block | ||||||
| #define LCDCHAR_PROGRESS15		1	// 1/5 full progress block | #define LCDCHAR_PROGRESS15		1	// 1/5 full progress block | ||||||
| #define LCDCHAR_PROGRESS25		2	// 2/5 full progress block | #define LCDCHAR_PROGRESS25		2	// 2/5 full progress block | ||||||
| @@ -178,8 +178,8 @@ void lcdPrintData(char* data, u08 nBytes); | |||||||
| // <progress> is the value the bargraph should indicate | // <progress> is the value the bargraph should indicate | ||||||
| // <maxprogress> is the value at the end of the bargraph | // <maxprogress> is the value at the end of the bargraph | ||||||
| // <length> is the number of LCD characters that the bargraph should cover | // <length> is the number of LCD characters that the bargraph should cover | ||||||
| #if (!defined(__AVR_AT90USB162__)  && !defined(__AVR_AT90USB82__)) | #if (!defined(__AVR_AT90USB162__)  && !defined(__AVR_AT90USB82__)) | ||||||
| void lcdProgressBar(u16 progress, u16 maxprogress, u08 length); | void lcdProgressBar(u16 progress, u16 maxprogress, u08 length); | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| #endif | #endif | ||||||
|   | |||||||
| @@ -42,7 +42,7 @@ | |||||||
| //static char HexChars[] = "0123456789ABCDEF"; | //static char HexChars[] = "0123456789ABCDEF"; | ||||||
| // use this to store hex conversion in program memory | // use this to store hex conversion in program memory | ||||||
| //static prog_char HexChars[] = "0123456789ABCDEF"; | //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)	pgm_read_byte( HexChars+((x)&0x0f) ) | ||||||
| //#define hexchar(x)	((((x)&0x0F)>9)?((x)+'A'-10):((x)+'0')) | //#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 *** | // *** rprintfProgStr *** | ||||||
| // prints a null-terminated string stored in program ROM | // 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 | 	// print a string stored in program memory | ||||||
| 	register char c; | 	register char c; | ||||||
|   | |||||||
| @@ -82,7 +82,7 @@ void rprintfStrLen(char str[], unsigned int start, unsigned int len); | |||||||
| //! prints a string stored in program rom | //! prints a string stored in program rom | ||||||
| /// \note This function does not actually store your string in | /// \note This function does not actually store your string in | ||||||
| /// program rom, but merely reads it assuming you stored it properly. | /// 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  | //! Using the function rprintfProgStrM(...) automatically causes  | ||||||
| /// your string to be stored in ROM, thereby not wasting precious RAM. | /// your string to be stored in ROM, thereby not wasting precious RAM. | ||||||
|   | |||||||
| @@ -28,10 +28,10 @@ | |||||||
| // Program ROM constants | // Program ROM constants | ||||||
| // the prescale division values stored in order of timer control register index | // the prescale division values stored in order of timer control register index | ||||||
| // STOP, CLK, CLK/8, CLK/64, CLK/256, CLK/1024 | // 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 | // 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 | // 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 | // Global variables | ||||||
| // time registers | // time registers | ||||||
|   | |||||||
| @@ -18,7 +18,7 @@ | |||||||
| #include <string.h> | #include <string.h> | ||||||
| #include "rprintf.h" | #include "rprintf.h" | ||||||
| #include "timer.h" | #include "timer.h" | ||||||
|  |  | ||||||
| #include "xmodem.h" | #include "xmodem.h" | ||||||
|  |  | ||||||
| //#define XMODEM_BUFFER_SIZE		128 | //#define XMODEM_BUFFER_SIZE		128 | ||||||
|   | |||||||
| @@ -32,7 +32,7 @@ | |||||||
|  |  | ||||||
| #ifndef XMODEM_H | #ifndef XMODEM_H | ||||||
| #define XMODEM_H | #define XMODEM_H | ||||||
|  |  | ||||||
| // xmodem control characters | // xmodem control characters | ||||||
| #define SOH			0x01 | #define SOH			0x01 | ||||||
| #define STX			0x02 | #define STX			0x02 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user