Fixed LED logic
[hackover2013-badge-firmware.git] / ChangeLog.txt
1 v0.9.8 - Ongoing
2 ================
3 - Added SSD1331_COLORORDER_RGB flasg to SSD1331.h to
4 select between RGB and BGR color order
5 - Added 128x32 support to ssd1306.c and rewrote
6 initialize sequence for 128x32 and 128x64 displays
7 - Added driver for Sharp Memory Display
8 /drivers/lcd/bitmap/sharpmem
9 - Added SPI Flash example
10 /tools/examples/spiflash/*
11 - Added write function to SPI Flash driver
12 /drivers/spiflash/*
13 - Added CFG_BRD_LPC1343_REFDESIGN_MINIMAL as a board
14 option in projectconfig.h. Tries to keep the flash
15 use as small as possible by initialising less
16 peripherals in systemInit().
17 - Changed CodeLite project files to support real
18 debugging with a Segger J-Link and GDB Server.
19 - Fixed issue with USB CDC instantiation for
20 FreeBSD
21 - Added experimental SSD1351 OLED driver to
22 /drivers/lcd/tft/hw
23
24 v0.9.5 - 3 August 2011
25 ======================
26
27 - Redid the font rendering code to use DotFactory
28 generated fonts, and update to the latest binary
29 in the /tools folder. All fonts have been
30 re-rendered to accomodate the updated code.
31 - Updated clock values in cpu.c for PLL to match FCCO
32 range of 156-320MHz
33 - Changed SCB_PLLCTRL_MULT_* to SCB_PLLCTRL_MSEL_* in
34 lpc111x.h to match usermanual
35 - Changed SCB_PLLCTRL_DIV_* SCB_PLLCTRL_PSEL_* in
36 lpc111x.h to match usermanual
37 - Added inline version of key functions in ili9328.c,
38 which increases the code size ~1.3KB but more than
39 doubles the drawing speed for most drawing functions
40 by avoiding branch operations and pushing and popping
41 the stack multiple times. Inline methods can be
42 toggled with 'ILI9238_USE_INLINE_METHODS'.
43 - Fixed IOCON_SWDIO_PIO1_3_FUNC_CT32B1_MAT2 in lpc134x.h
44 - Added drawCornerFilled() to drawing.c and LCD CLI
45 - Fixed a nasty bug with 'gpioInterruptEvent' in the
46 gpioSetInterrupt function (core/gpio/gpio.c)
47 - Add drawTriangle() and drawTriangleFilled() to
48 drawing.c and LCD CLI
49 - Added cpuReset() to reset the board via AIRCR
50 - Removed text input dialogue from LCD CLI ('T') to
51 save a few KB. Command file still exists, just no
52 longer included in cmd_tbl.h by default.
53
54 v0.9.2 - 14 June 2011
55 =====================
56
57 - Added ISL12022M RTC Driver (/drivers/rtc/isl12022m)
58 - Fixed a bug drawing filled circles with lcdDrawVLine
59 - Added CLI command to toggle LCD backlight
60 - Added rounded rectangle command to CLI
61 - Added CFG_INTERFACE_DROPCR to projectconfig.h to
62 ignore CR (\r) characters in incoming data for
63 the CLI
64 - Added CFG_INTERFACE_SHORTERRORS to projectconfig.h
65 to only send short (1 char + new line) CLI error
66 messages rather than something verbose
67 - Added CFG_INTERFACE_CONFIRMREADY to projectconfig.h
68 to provide a character to indicate when a command
69 is complete in case the IRQ pin
70 (CFG_INTERFACE_ENABLEIRQ) can't be used
71 - Fixed a bug with reversed R and B bits when reading
72 a pixel from the LCD in CLI mode
73 - Added lcdDrawPixels() to lcd.h and the current lcd
74 drivers to render rows of raw lcd data much quicker
75 than addressing consecutive pixels individually.
76 Can be used with windowing in future for fast
77 animation, continuously writing raw pixels in a
78 32x32 pixel frame, etc.
79 - Fixed ili9328SetWindow() and ili9325SetWindow().
80 They can now be used for fast screen paints of
81 restricted areas of the screen, such as animations
82 where raw pixel data is constantly fed to the LCD.
83 - Fixed pixel overflow bugs in drawCircleFilled(). Any
84 pixels that exceed screen limits will now be dropped,
85 though at the expense of slightly slower code.
86 - Added drawLineDotted() to drawing.c to draw lines with
87 a fixed pattern of empty and solid pixels
88 - Added __resetBootloader() macro to lpc134x.h to
89 reset and enter the USB bootloader (LPC1343 Reference
90 Design Base Board only since this depends on the
91 existance of the RC combination on the ISP pin).
92 To reset and executre code normally, the watchdog
93 time can be used (see "core/wdt").
94 - Added AIRCR register to lpc134x.h (Application Interrupt
95 and Reset Control Register).
96 - Added drawIcon16() to drawing.c to render monochrome
97 16x16 pixel icons from a byte array.
98 - Added a handful of common 16x16 icon definitions in
99 /drivers/lcd/icons16.h ... adapted from Gentleface
100 Toolbar Icon Set. For license terms see
101 http://www.gentleface.com/free_icon_set.html
102 - Added a few basic RGB565 color schemes to colors.h and
103 an image file showing the colors in /tools/colors_h.png
104 - Updated alphanumeric dialogue form to use new buttons.
105 - Rewrote drawButton() to use rounded rectangle and
106 all colors are now passed in as parameters. Also
107 modified the button command in the CLI to match this.
108 - Rewrote drawProgressBar() to take advantage of the
109 new rounded rectangle function (below). Also
110 modified the progress bar command in the CLI to
111 allow more colors to be indicated when rendering.
112 - Added drawRectangleRounded() to drawing.c (filled
113 rectangle with configurable rounded corners).
114 - Added drawArrow() to drawing.c to make small rectangles
115 for left/right menu items, etc.
116 - Completely rewrote the touch screen calibration code to
117 be much more accurate.
118
119 v0.9.0 - 28 March 2011
120 ======================
121
122 - Calibration process no longer starts automatically when
123 calibration data is not found in EEPROM. tsCalibrate()
124 now needs to called manually or from the CLI.
125 - Fixed a bug in cmd_tswait.c when no delay was passed.
126 - Added CLI command to set touch screen threshold
127 to register a touch event (since this can vary from
128 screen to screen). Type 'x' at the CLI to get/set
129 the value. The setting is persisted to EEPROM, and if
130 no value is found on EEPROM CFG_TFTLCD_TS_DEFAULTTHRESHOLD
131 from projectconfig.h is used.
132 - Adjusted touch screen code to check ADC values twice
133 and compare. If mismatch occurs, and error is returned.
134 This provides far more consistent TS values at the
135 expense of having to check the error results. See
136 'alphanumeric.c' for an example of doing this
137 correctly.
138 - Added seperate driver for ILI9328 based displays, even
139 though it seems to be identical to the ILI9325. Files
140 were seperated in case the initialisation needs to be
141 tweeked later or if incompatibilities are found.
142 - Added the ability to write the contents of the LCD
143 to a bitmap image, though it's very slow reading data
144 pixel by pixel and converting it to 24-bit RGB values.
145 Performance can definately be improved.
146 - Added 'drawRGB565toBGRA32' to drawing.c to convert
147 RGB565 colors back to the canonical BGRA32 format
148 - Added gain controls to TSL2561 driver to increase or
149 decrease sensitivity. Should be easy to implement
150 auto-gain functionality now.
151 - Changed USB VID to a valid value. Source files and
152 lpc134x-vcom.inf updated accordingly.
153 - Moved USB VID and PID to projectconfig.h
154 - Added '-mcpu' flag to the linker in Makefile (the wrong
155 libm was being linked because of this).
156
157 WARNING
158 --------------------------------------------------------
159 - Some config settings in EEPROM were relocated in v0.90+
160 of the LPC1343 Code Base to take into account the new
161 touch screen calibration code. See projectconfig.h
162 for more details of the new EEPROM layout.
163
164 v0.8.6 - 21 March 2011
165 ======================
166
167 - Added DWT section to LPC134x.h (see Cortex-M3
168 Technical Reference Manual section 8.3)
169 - Added CPU_RESET_CYCLECOUNTER to cpu.c to do rough
170 in-code performance checks (counts CPU cycles)
171 - Added '-lm' to linker in Makefile for math.c support
172 - Increased MAX_STRING_SIZE from 100 to 255 in stdio.c
173 - Added driver for the TCS3414 RGB color sensor
174 - Added driver for the TSL2561 digital light sensor
175 - Added CFG_USBCDC_BUFFERSIZE to projectconfig.h
176 instead of cdc_buf.h.
177 - Added a PWM example using a piezo buzzer (see
178 'tools/examples/basics/pwm_piezobuzzer' for details)
179 - Added ctype.c to 'core/libc'
180 - Changed Crossworks project to use libc files from
181 'core/libc' and modified the USB CDC printf to be
182 much faster by redirecting inside 'puts' rather than
183 '__putchar' (see 'sysinit.c').
184 - Fixed a bug in LPC134x.h ... USB_CMDCODE write and read
185 masks were reversed
186 - Added a simple example of reading the card ID from an
187 ISO14443A (Mifare Classic, etc.) card using the PN532
188 ('/tools/examples/sensors/pn532/ISO14443A_ID').
189 - Added an 'lcd' folder to 'tools/examples' showing how to use
190 the generic lcd drawing routines, the touch-screen, etc.
191 - Rewrote part of the touch screen calibration code to get more
192 accurate results. Each point is now tested twice and the
193 results are averaged. Values beyond a certain limit are also
194 rejected to ignore wacky readings.
195 - Added a preliminary PN532 (NFC/RFID) driver. Currently UART
196 only, and only allows simple commands to be sent and received.
197 By default, all data is fed out to the console via printf.
198 Will be elaborated and expanded in future releases.
199 - Cleaned up the ILI9325 TFT LCD driver a bit, adding a proper
200 enum for the commands, etc.
201
202
203 v0.8.5 - 7 March 2011
204 =====================
205
206 - Fixed a problem with GDB script when deploying firmware
207 with Segger J-Link in CodeLite. Code will now deploy
208 and start executing properly when F5 is pressed (assuming
209 the Segger GDB Server software is running in the background).
210 - Interrupts are now disabled while feeding the watchdog as per
211 a warning in the usermanual.
212 - Changed fonts for TTF LCDs. DejaVu Sans 9 is now used by default
213 in the LPC1343 Code Base. The following open source fonts have
214 been converted using The Dot Factory (see '/tools/dotfactory') and
215 can be found in '/drivers/lcd/tft/fonts':
216
217 FONT NAME WIDTH
218 ------------------------------- ----------
219 - Bitstream Vera Mono 9 Fixed (8)
220 - Bitstream Vera Mono 9 Bold Fixed (8)
221 - Bitstream Vera Mono 11 Fixed (9)
222 - Bitstream Vera Mono 11 Bold Fixed (9)
223 - DejaVu Sans 9 Variable
224 - DejaVu Sans 9 Bold Variable
225 - DejaVu Sans Condensed 9 Variable
226 - DejaVu Sans Mono 8 Fixed (8)
227 - DejaVu Sans Mono 8 Bold Fixed (8)
228
229 - Modified projectconfig.h to select the target board and configure
230 the project accordingly. This isn't ideal, but it's a lot more
231 maintainable than have a seperate code base for every board since
232 they share 95% of the same code.
233 - Modified WDT code to use the WDT oscillator (rather than the
234 external crystal)
235 - Fixed a bug when waking up from sleep in Chibi. Removed systick
236 delay when toggling reset and slptr pins since this was causing
237 a blocking condition with the wakeup ISR.
238 - Added an example of how to retrieve the MCU's unique
239 128-bit serial number using IAP (core/iap)
240 - Added an option to projectconfig.h to select which pin to use for
241 SCK on SSP0, since the QFN33 package doesn't have all the same
242 pins.
243 - Updated Chibi to v0.91 (adds sleep method and promiscuous mode to allow
244 Chibi to act as an 802.15.4 packet sniffer, etc.).
245 - Added lcdProperties_t to lcd.h to indicate the properties of different
246 LCDs (to determine if there is a touch screen present, whether the
247 screen orientation can be changed, etc.)
248 - Added basic ST7735 LCD driver (128x160 pixel TFT LCD using 6-pin
249 SPI-esque interface). Work in progress (no orientation support, etc.).
250 - Added some simple examples in the 'tools/examples' folder.
251
252 v0.80 - 27 Jan 2011
253 ===================
254
255 - Added optimised lcdDrawVLine using orientation
256 though this should only be used on lines
257 greate than 20 pixels or so to see any real
258 advantage
259 - Added cmd_uart to allow the HW UART speed
260 to be set in EEPROM (between 9600 and
261 115200). Use the 'U' command.
262 - Updated Crossworks projects files to use
263 custom printf in 'core/libc' (gains about
264 1.3KB in release mode)
265 - Added driver for SSD1306 OLED displays
266 to '/drivers/bitmap/ssd1306'
267 - Changed commands in the CLI to single
268 characters and shortened descriptions
269 to save flash space (~0.7KB)
270 - Updated ILI9325 to allow the screen
271 orientation to be changed to portrait
272 of landscape mode.
273 - Added cmd_orientation to change the LCD
274 orientation from the CLI
275 - Fixed a bug in the PMU Wakeup interrupt
276 handler
277 - Added a circular buffer for outgoing CDC
278 data (cdc_buf.c) since you can only feed one
279 frame per ms (max 64 bytes). The speed needs
280 to be improved finding the right balance
281 between caching data and sending it to the EP,
282 but this should avoid any dropped characters.
283 More testing will be needed to improve this.
284 - Fixed a bug with the USB CDC buffer
285 - Added SILENTMODE to the CLI to disable the
286 command prompt and echo of input characters
287 (see CFG_INTERFACE_SILENTMODE). Useful
288 when another MCU is use the CLI rather than
289 a human.
290 - Added IRQ pin to the CLI to indicate when a
291 command is being processed (pin = low) and
292 when it has completed or a new command can
293 be processed (pin = high).
294 - Added 'cmd_tswait' to wait for a touch event
295 - Removed 'drivers/nfc/pn532' until proper drivers
296 can be written
297 - Added 'cmd_text' and 'cmd_textw' to the CLI to
298 render text on the LCD and get the width in
299 pixels of the specified text before rendering.
300
301 v0.70 - 18 Dec 2010
302 ===================
303
304 - Added 'calibrate' and 'gettext' commands to the CLI
305 - Added a dialogue box for the TFT LCD/Touchscreen
306 to input alpha-numeric data and return the
307 results as a string ('drivers/lcd/tft/dialogues/*')
308 - Added touch screen calibration code and UI
309 ('drivers/lcd/tft/touchscreen.c')
310 - Fixed a bug in ILI9325.c to make sure that the LCD
311 is reset during initialisation
312 - ** IMPORTANT ** Changed 'core/i2c/*' to fix a number
313 of bugs (thanks Rob65!) ... though this means all
314 i2c peripherals and drivers will need to be tested.
315 - Added 'colorscheme_t' to drawing.h to try to use a
316 standard color palette across GUI controls and make
317 it easy to change later. Currently only the button
318 and progress bar make use of this.
319 - Added 'lcdBacklightOn()' and 'lcdBacklightOff()' to
320 lcd.h
321 - Added 'CFG_TFTLCD_TS_THRESHOLD' to projectconfig.h
322 to configure touch-screen sensitivity when waiting
323 for a touch event
324 - Modified 'core/gpio/gpio.c' to reduce the compiled code
325 size. Repetitive switches where only the registers
326 change were modified to use temporary registers and
327 execute the code only once.
328 - Added the source and binaries for TheDotFactory to
329 'tools/dotfactory' for convenience sake. See:
330 http://www.pavius.net/downloads/tools/53-the-dot-factory
331 - Removed 'drivers/lcd/tft/tscalibration.c' and moved
332 the relevant code to touchscreen.c
333 - Removed the imgconv tool from 'tools/imgconv' (see
334 point below for more information)
335 - Removed the previous custom image code and replaced
336 it with 24-bit Windows bitmap files. This is a bit
337 slower (since 24-bit data needs to be converted to
338 RGB565 for each pixel and rows are rendered bottom
339 up making pixel drawing harder to optimise) but
340 converting and eventually saving images is easier.
341 The current code is functional but needs to be
342 heavily optimised.
343 - Made some minor optimisations to the data and cmd
344 functions in the ILI9325 driver. Other functions
345 need to be optimised as well, but these two should
346 be close to optimal now. Currently 25 cycles
347 compiled with -Os, 36 cycles with no optimisation.
348 - Added 'projects/command/drawing/cmd_bmp.c' to load
349 24-bit Windows bitmap images from the SD card and
350 display them on the TFT LCD.
351 - Added some schematics to '/tools/schematics' to
352 show the assumed pin configurations
353
354 v0.60 - 8 December 2010
355 =======================
356
357 - Added a number of CLI commands for the TFT LCD
358 (see 'project/commands/drawing')
359 - Modified FCLK_FAST() in 'drivers/fatfs/mmc.c' to set
360 the max speed to 6.0MHz for improved reliability.
361 Tested with a 4GB microSD card, 300KB/s can be read
362 using a 512 byte read buffer.
363 - Modified Chibi to use 16-bit timer 0 for us delays
364 (more accurate)
365 - Added a number of commands to
366 '/projects/commands/drawing' for basic TFT LCD
367 operations. Removed 'lcd-test.c' and 'lcd-fill.c'.
368 - Added a flag to projectconfig.h to make FATFS read-only
369 (to save a couple KB when space is tight).
370 - Moved 'project/eeprom.*' to 'drivers/eeprom' to add a
371 level of abstraction to eeprom access throughout the code
372 - Added a table to projectconfig.h to manage eeprom
373 addresses. First 256 byte of eeprom should be reserved
374 for this.
375 - Added 'drivers/lcd/tft/colors.h' to keep all common
376 16-bit RGB565 color definitions in one location
377 - Added some sample images to 'tools/imgconv' that can
378 be used to render a basic clock on a TFT LCD screen
379 (using drawImageFromFile in 'drivers/lcd/tft/drawing.c')
380 - Modified the makefile to automatically run './lpcrc'
381 post-build
382 - Added drawButton() to 'drivers/lcd/tft/drawing.c'
383 - Updated 'drivers/lcd/tft/touchscreen.c' to do basic
384 debouncing. tsReadZ() was added to detect pressure on
385 the touch screen, and tsWaitForEvent() will only exit
386 when the pressure passes a minimum threshold. (Thanks
387 to Limor for pointing out some code by Rossum for this.)
388 - Fixed some off-by-one pixel errors in cmd-test and
389 elsewhere
390
391 v0.51 - 27 November 2010
392 ========================
393
394 - Added simple RSA encryption/decryption driver. Currently limited to
395 using 64-bit and 32-bit numbers in key pairs, which isn't terribly secure,
396 but allows much smaller code size than if huge number support was included.
397 - Added a driver for the MCP4725 I2C DAC (see "drivers/dac/mcp4725").
398 - Moved 'rom_drivers.h' from 'core/usbhid-rom' to 'core' since it can be used
399 for usbmsd-rom as well if it is implemented at a later date.
400 - ili9325ReadData() added to ili9325.c by Adafruit Industries (thanks!)
401 - Modified FCLK_FAST() in 'drivers/fatfs/mmc.c' to set fast SPI speed
402 to 18MHz instead of the previous 4MHz. This allows for slightly faster
403 rendering of bitmap images from SD cards, amongst other things.
404 - Fixed ILI9325 driver to use 0,0 based pixels and not 1x1, meaning the
405 pixel co-ordinates are 0..239 for X and 0..319 for Y. There may still be
406 some off-by-one pixel issues that need to be further tested.
407
408 v0.50 - 26 October 2010
409 =======================
410
411 - Moved command.c and cmd_tbl.h to /project to try to keep all
412 project-specific files in one location to improve code-sharing and make
413 upgrading easier
414 - Created seperate .c files for every command for the command-line interface
415 to make it easier to maintain and share code between projects. All commands
416 listed in cmd_tbl.h are now stored in their own files in /project/commands
417 (ex.: "/project/commands/cmd_hello.c", etc.)
418 - Added a CLI command to demonstrate how to draw to the ILI9325 TFT LCD
419 - Added a CLI command to show the contents of any directory from the SD card
420 (/project/commmands/cmd_sd_dir.c)
421 - Added a CLI command showing how to enter deep-sleep and exit with a SW
422 wakeup (/project/commands/cmd_deepsleep.c). Please note that the wakeup
423 will not work if you are using USB for the CLI. To see the wakeup message,
424 you must use UART for the CLI, which is selected by uncommenting
425 CFG_PRINTF_UART in projectconfig.h
426 - Fixed pmu.c to set the core clock back to an appropriate state after wakeup
427 - Added simple wrapper for eeprom access (projects/eeprom.c)
428 - Reorganised drivers/lcd to take into account non TFT LCD displays.
429 - Added a preliminary (experimental) driver for 128x64 pixel ST7565-based
430 bitmap LCDs (ex: Adafruit Industries - http://bit.ly/9xj5vw) ... based on a
431 driver from Limor Fried at Adafruit
432 - Numerous bug fixes added by Roel Verdult (Linux compatibility, GCC warnings, etc.)
433 - Added stub files for PN532 driver (/drivers/nfc/pn532), and added CFG_PN532 to
434 projectconfig.h as an option
435 - Added a simple pwm example using 16-bit timer 1 and p1.9 (MAT0) for the output. PWM can be used
436 to drive stepper motors, or to dim LEDs by adjusting the duty-cycle, etc. The example can be
437 found in "/core/pwm"
438 - Added a bi-polar stepper motor driver based on the Arduino library. Basic position data was added
439 to detece deviation from the 'Home' position and to retrieve the spindle's current angle. See
440 "drivers/motor/stepper" for more information.
441 - Added test firmware for the UART and USBCDC CLI (tools/testfirmware)
442 - Added a table to projectconfig.h to try to keep track of pin and peripherals
443 usage by drivers and the included SW examples.
444 - Reorganised some pins used by drivers to avoid pin conflicts.
445 - Modified core/timer16/timer16.c to allow PWM output to be stopped after a
446 certain number of pulses have been sent out.
447
448 KNOWN ISSUES
449
450 - The SPI code needs to be modified to allow several SPI devices to be safely
451 connected on the same bus. At present, this has not been tested since the
452 SSP/SPI blocks are used exclusively in the current drivers.
453
This page took 0.077504 seconds and 5 git commands to generate.