Merge branch 'master' of ssh://git.b9.com/home/gitpub/avr_serial_lcd
[avr_serial_lcd.git] / ChangeLog
1 2008-03-22  Kevin Rosenberg <kevin@rosenberg.net>\r
2         * serial_lcd.c: Add note about processing data overrun flag\r
3 \r
4 2008-03-21  Kevin Rosenberg <kevin@rosenberg.net>\r
5         * serial_lcd.c: Fix typo for ICC and CV compilers and add USART RX\r
6         framing error check. Added protection against size optimization on\r
7         timed sequences for CV.  Thanks to Lee Theusch for the these ideas.\r
8         \r
9 2008-03-20  Kevin Rosenberg <kevin@rosenberg.net>\r
10         * serial_lcd.h, serial_lcd.c: Switch to using native delay\r
11         and sleep functions for Codevision. \r
12 \r
13 2008-03-18  Kevin Rosenberg <kevin@rosenberg.net>\r
14         * Add Codevision port \r
15         \r
16 2008-03-15  Kevin Rosenberg <kevin@rosenberg.net>\r
17         * serial_lcd.c: Add 4-bit interface mode\r
18         * serial_lcd.h: Move LCD control codes here with renaming.  Use\r
19         new device-independant iccioavr.h file for ImageCraft\r
20         (requires ICC V7.16+). Use __flash keyword for\r
21         Imagecraft (requires ICC V7.15+)\r
22         * Use custom Makefiles for all IAR, GCC, and ICC compilations\r
23         \r
24 2008-02-24  Kevin Rosenberg <kevin@rosenberg.net>\r
25         * Enscapulate MAIN_FUNC() and MAIN_FUNC_LAST to avoid compile\r
26         warnings on all platforms\r
27         \r
28 2008-01-04  Kevin Rosenberg <kevin@rosenberg.net>\r
29         * README: Update sizes for 20080104 release\r
30 \r
31 2008-01-03  Kevin Rosenberg <kevin@rosenberg.net>\r
32 \r
33         * README: Update with information about the two C++ variants.\r
34         \r
35         * serial_lcd.h: Rename LCD_DATA_OUT to LCD_DATA_PORT. Create IO\r
36         definitions for baud rate jumpers to segment their access in\r
37         serial_lcd_obj.cpp. Add MAIN_FUNC() macro for new GCC OS_main\r
38         attribute.\r
39         \r
40         * serial_lcd.c: GetUsartBaud() move variable declaration to\r
41         assignment. Rename LCD_DATA_OUT to LCD_DATA_PORT. Use MAIN_FUNC().\r
42 \r
43         * serial_lcd.cpp: Rename some member variables by prepending "m_".\r
44         Modify UART_UBRR() to round to nearest integer. Rename\r
45         LCD_DATA_OUT to LCD_DATA_PORT. Remove intermediate Baud Divisors\r
46         since C++ can employ preprocessor macro in array\r
47         initialization. Use MAIN_FUNC().\r
48 \r
49         * serial_lcd_obj.cpp: Rename some member variables by prepending\r
50         "m_". Move GetBaud from Uart class to standalone function\r
51         GetBaudDivisor(). Use that divisor as for Uart::setBaudDivisor()\r
52         method.  Modify UART_UBRR() to round to nearest integer. Rename\r
53         LCD_DATA_OUT to LCD_DATA_PORT. Remove intermediate Baud Divisors\r
54         since C++ can employ preprocessor macro in array\r
55         initialization. Use MAIN_FUNC().  Modify Lcd::init() to accept\r
56         parameters to define io definitions.  Separate and add methods for\r
57         setting Uart baud divisor, parity, rx/tx enable and interrupt\r
58         enable configurations.\r
59         \r
60 2008-01-01  Kevin Rosenberg <kevin@rosenberg.net>\r
61         \r
62         * ChangeLog: Renamed from CHANGES\r
63 \r
64         * serial_lcd.h: Move LED_BRIGHTNESS_LEVELS to .c and .cpp\r
65         functions so value can be encapsulated in .cpp LedPwm class. Move\r
66         LCD command codes to .c and .cpp files so that they can be\r
67         encapsulated by C++ classes.\r
68 \r
69         * serial_lcd.c: Make init functions inline to correspond to C++ versions.\r
70         Change GetUsartBaud to inline since it is only called once in a program.\r
71         Move LED PWM brightness computation to inline function. Make LED switch\r
72         on and off code into inline functions. Move CTS initialization to UsartInit.\r
73 \r
74         * serial_lcd.cpp: Change GetUsartBaud to inline since it is only called\r
75         once in a program. Move RX buffer into member variable of object (saves\r
76         2 bytes in GCC and no change in IAR size). Change UART_RX_BUFFER_SIZE\r
77         from preprocessor definition to static const in class (no change in\r
78         code size). Move pwmPattern array to static variable in LedPwm class\r
79         and make pwmPattern an inline method (no change in code size). Make\r
80         setting LedPwmBrightness a class method. Move LED switch on and off code\r
81         to class methods. Move baud rate constants into Uart class. Change\r
82         UBRR from numeric constants to values computed from F_CPU. Move CTS init\r
83         to Uart::init(). Convert Watchdog and SleepMode to fully static classes.\r
84         Add Delay class.\r
85 \r
86         * serial_lcd_obj.cpp: New source file to test the implementation\r
87         and impact of using independed C++ classes which can potentially\r
88         be used as part of a standalone C++ AVR library. \r
89 \r
90 2007-12-31  Kevin Rosenberg <kevin@rosenberg.net>\r
91         \r
92         * LICENSE: Include appropriate copyright statements  \r
93         (Thanks to AVRFreaks member cpluscon)\r
94 \r
95         * serial_lcd.c: Fix Livingston's name Thanks to AVRFreaks member\r
96         cpluscon)\r
97 \r
98         * serial_lcd.cpp: Remove all object constructors to reduce code\r
99         size by eliminating constructors. Fix Livinston's name (Thanks to\r
100         AVRFreaks member cpluscon)\r
101 \r
102         * gcc_c_cpp/Makefile: Use proper map file for C++ code (Thanks to\r
103         AVRFreaks member cpluscon)\r
104 \r
105         * gcc_c_cpp: Directory renamed from gcc_c_cpp_comparison\r
106 \r
107         * iar_c_cpp: new directory\r
108 \r
109         * icc_c: new directory\r
110 \r
111         * Add assembly listings, map files, and hex files for all compiled\r
112         output\r
113 \r
114         * serial_lcd_tester.c: Serial_Lcd tester (tested on Cygwin, should\r
115         work on Linux)\r
116 \r
117         * serial_lcd_tester.exe: Compiled version of serial_lcd_tester.c\r
118         for Windows (requires Cygwin DLL file)\r
119         \r
120 \r
121 2007-12-30  Kevin Rosenberg <kevin@rosenberg.net>\r
122 \r
123         * Initial source code\r
124 \r
125         * Change UART RX from polling to interrupt-driven circular buffer\r
126 \r
127         * LED backlight PWM brightness setting (8-levels) using Timer0\r
128         COMPA interrupt. Store PWM patterns in flash ram.\r
129         \r
130         * Port code to IAR and GCC using kavr_compat.h compatibility\r
131         defintions and macros\r
132         \r
133         * NO_RETURN_FUNC macro on main to remove unnecessary\r
134         prologue/epilogue code\r
135 \r
136         * Move BaudLookupTable array from heap to flash ram. Requires 4\r
137         more bytes of program code, but frees 4 bytes of SRAM.\r
138 \r
139         * Use _delay_ms functions for GCC and _delay_cycles for IAR\r
140 \r
141         * Add idle sleep mode setup and enter sleep when no input is\r
142         waiting\r
143 \r
144         * Add watchdog timer setups and resets\r
145 \r
146         * Bind key variables to registers\r
147 \r
148         * Change from IO Pin numbers to Pin names\r
149 \r
150         * Instead of NULL definition, use 0 to be explicit\r
151 \r
152         * If F_CPU (frequency of CPU) is not specified, default to value\r
153         for standard serial_backpack hardware\r
154 \r
155         * Define CPU type (__AVR_ATTiny2313__) for kavr_compat.h if not\r
156         already defined\r
157 \r
158         * Rename preprocessor definition LED to LED_PIN\r
159 \r
160         * Move USART_DATA from heap allocated to stack allocated, renamed\r
161         rx_byte\r
162 \r
163         * Remove auto-initialized variable so that auto-initialize code is\r
164         not included in binary (for compilers that support this\r
165         optimization)\r
166 \r
167         * New BIT variable for led_on status (stored in GPIO register)\r
168 \r
169         * Added CTS (clear to send) signal on PA2 pin since RESET pin\r
170         isn't used by original hardware design\r
171 \r
172         * Add conditional compilation of SLEEP_MODE, WATCHDOG, CTS\r
173         features\r
174 \r
175         * Add LED_PORT and LED_DIR definitions (in care LED not on same\r
176         PORT as LCD control)\r
177 \r
178         * Rename LCD_CONTROL_OUT to LCD_CONTROL_PORT, LCD_CONTROL_IN to\r
179         LCD_CONTROL_PIN_REG, LCD_CONTROL_DDR to LCD_CONTROL_DIR,\r
180         LCD_DATA_DDR to LCD_DATA_DIR, LCD_DATA_IN to LCD_DATA_PIN_REG\r
181 \r
182         * Use "= 0xFF" rather than "|= 0xFF" and simplify compare in\r
183         LcdBusyWait\r
184 \r
185         * Create ENABLE_WAIT() to reuse in 3 functions\r
186 \r
187         * Separate common declarations for .c and .cpp versions into .h\r
188         file\r
189 \r
190         * Rename a number of functions for common naming format\r
191 \r
192 Copyright (c) 2007-2008 by Kevin Rosenberg. All rights reserved.\r
193 Copying and distribution of this file, with or without modification, are\r
194 permitted provided the copyright notice and this notice are preserved.\r