PicoMite V6.01.00 betas
| Author | Message | ||||
| matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 11984 |
Attached is the first beta of the RP2350 standard PicoMite firmware. PicoMite.zip 6.01.00 will focus exclusively on the rp2350, making use of its extra memory (and to some extent PSRAM) In this first beta there are a number of changes as follows: Enhanced KEYPAD command The existing KEYPAD command supports a 4x3 or 4x4 keypad using the syntax KEYPAD var, int, r1, r2, r3, r4, c1, c2, c3 [, c4] This release supports n x m keypads using the syntax KEYPAD keymapmap!(),var!,int, startcolpin, nocols, startrowpin, norows 'startcolpin' is the pin that begins 'nocols' of contiguous GP pins used as the column scans 'startrowpin' is the pin that begins 'norows' of contiguous GP pins used as the row scans 'var!' is the variable that will contain the value returned to the interrupt routine 'int' when a key is pressed keymapmap!() is a two dimensional array that contains the user supplied mapping for every key. The array dimensions must match the number of columns and rows specified So for example if I have a keypad with 3 columns and 4 rows 123 456 789 *0# And I wire gp1 to the left column, gp1 to the middle and gp2 to the right, then the 4 rows from top to bottom to gp3 to gp6 My program could be Option base 1 Dim keymap(3,4)=(1,4,7,10, 4,5,6,0, 3,6,9,11) Keypad keymap(),keyret,myint,gp1,3,gp4,4 Do Loop Sub myint Print keyret End Sub Of course this simple example could be done with the existing command but the new command syntax can cater for any rectangular sized keyboard and has been tested with a 6x12 keyboard (72 keys) AND you can specify the reurn value for each key. High speed buffered display drivers The new release supports the following new display drivers ILI9341BUFF: 320 x 240 ST7796SPBUFF: 320 x 320 ST7796SBUFF: 480 x 320 ILI9488PBUFF: 320 x 320 ILI9488BUFF: 480 x 320 ILI9488WBUFF: 480 x 320 'Waveshare Pico-Restouch-lcd-3.5 ST7789_320BUFF: 320 x 240 'Waveshare Pico-Restouch-lcd-2.8 In all cases enabling one of these drivers steals a RGB332 framebuffer from the heap so in the worst case of a ILI9488BUFF heap is reduced by 150K bytes (from 300K) To use one of these drivers you first need to allocate the SPI pins to be used OPTION LCD PINS clkpin, mosipin, misopin These pins are dedicated to the display and must be separate from any pins used for the SYSTEM SPI which may still be required for touch and the sdcard (NB: in the case of the Waveshare boards using this driver will conflict with also using touch and the sdcard as they share the SPI channel) The reason for the dedicated pins is that the screen updates will all take place on the second processor and for maximum performance this cannot share the SPI channel. How much faster are these drivers? I've included in GUI TEST LCDPANEL an output when you exit the test that reports the number of circles drawn per second. ![]() MUCH FASTER!!! AFAIK all normal graphics work using the new drivers and they are tested with Petscii and work properly. Using these drivers, the use of the ILI9488 and particularly the ST7796S displays work very well as console devices. For maximum performance with the ST7796S display a CPU speed of 360MHz is recommended. This allows the SPI channel to the display to run at 90MHz giving a full screen refresh time of about 14mSec with no load on the main processor. Of course the downside is that the screen is only using 256 colours instead of the full 65536. A later beta will include a MAP capability so that you can select the 256 colours to be used out of the full RGB888 palette. |
||||