MIOS V1.9b ~~~~~~~~~~ Changes are only relevant for PIC18F4620! o undone modification of MIOS_EEPROM_* due to compatibility issues with PIC18F452 based MIOS applications (they don't initialize EEADRH) EEADRH must now be incremented/set from the application if required. MIOS V1.9a ~~~~~~~~~~ Changes are only relevant for PIC18F4620! o EEADRH incremented on EEADR overrun in MIOS_EEPROM_* functions o complete RAM area (0x000-0xf7f) cleared during startup MIOS V1.9 ~~~~~~~~~ o the bootloader location has been moved from 0x7c00-0x7fff to 0x0000-0x0400. This frees the upper 1k block for applications, and equates the memory allocation between PIC18F452, PIC18F4620 and future PIC devices. o the default font for graphical displays has been moved from 0x28fc to 0x7cfc o both changes ensure compatibility with all existing applications. Newer versions of applications like MIDIbox SID, MIDIbox SEQ, MIDIbox FM, MIDIbox64 and MIDIbox64E will allocate the upper 1k block very soon, they won't be compatible to MIOS V1.8 and lower anymore. Therefore an update to MIOS V1.9 is strongly recommented! o a new Bootloader has been releaed (V1.2) o an update package for MIOS V1.9 and Bootloader V1.2 is available under http://www.ucapps.de/mios/mios_update_v1_9.zip It makes the update so comfortable and secure as possible o MIOS and Bootloader now supports the MBHP_IIC_MIDI module as alternative MIDI Out port. The address of the module has to be specified in the ID header, byte 5 Example: 0000000000100000 redirects all MIDI Out messages to the first MBHP_IIC_MIDI module. This is intended as workaround for the silicon bug of newer PIC devices like PIC18F4620 which contain the EUSART. Note that the ID header can be changed with the change_id application without using a PIC programmer. o the MIOS_MIDI_InterfaceSet function now allows to change the target interface of MIOS_MIDI_TxBufferPut on-the-fly o the MIOS_IIC_ByteSend function now returns the inverted ACK flag for easier usage under C o the MIOS function description has been enhanced by C declarations and examples -> cmios_fun.html o MIOS is not licensed under GPL anymore. It's still open source, but commercial use is not allowed without my permission. MIOS V1.8 ~~~~~~~~~ o the interrupt handler now also saves FSR0L and FSR0H. This allows the use of C programs compiled with sdcc o a wrapper for the SDCC compiler is now available in a seperate package. More informations can be found under http://www.ucapps.de/mios_c.html o the motorfader driver has been overworked. The new concept works with a "dynamic deadband" and a definable PWM which will be used once the fader reaches the target position. The details are described at http://www.ucapps.de/mios_mf.html o on a MIOS up- or download, the BankStick number is now selected with an address extension, which is part of the SysEx command o the "Brown Out Reset" (BOR) settings in the configuration sector are changed automatically when MIOS detects unproper settings - the appr. cell in this sector will be overwritten and the device will be reset. New Setting: Brown Out Reset at 4.5V This ensures that the PIC won't access devices during power-off which cannot operate at voltages < 4.5V (e.g. the BankStick, which could get an unintended write command) o support for PIC18F4620 (64k flash device) Unfortunately this derivative is currently not qualified for MIOS due to a silicon bug in the EUSART peripheral (rev3) MIOS V1.7 ~~~~~~~~~ o this version requires slight changes on the core module wiring to improve the performance of MIOS. The SCLK output for the shift register chain (pin #22 - RD3 - of the PIC) is now a dedicated pin which only clocks the chains and shoudln't be used for anything else. This affects the wiring for following modules: -> BankStick/IIC: the SC line has now to be connected to pin #28 - RD5 -> KS0108 graphical display: the new wiring is described under http://www.ucapps.de/mbhp/mbhp_glcd0.pdf -> SID: the SCLK line of the SID module has to be connected to pin #28 (same pin like for the BankStick/IIC clock) o DOUT signals are stable over the whole update cycle o BankStick (IIC) accesses don't block the interrupts anymore o the CPU load caused by the rotary encoder handler has been reduced to improve the realtime behaviour of MIOS MIOS V1.6 ~~~~~~~~~ o MIOS_MIDI_TxBufferPut is an atomic operation now to prevent a malfunction which can happen when this function is executed at the same time where the Tx handler fetches new data from the buffer o MIOS_Timer_ReInit can be used to re-initialize the timer w/o a reset for smooth timer period changes o MIOS_BANKSTICK_ReadPage, MIOS_EEPROM_WritePage and MIOS_EEPROM_ReadPage are new functions for faster data transfers o new functions USER_LCD_Data, USER_LCD_Cmd, USER_LCD_SpecialCharInit for custom display drivers MIOS V1.5b ~~~~~~~~~~ o Bugfix: due to an unprotected register the MIDI receiver forwarded the wrong byte to the MIDI Rx Buffer. This happened when a MIDI event had been received in Running Status mode and the application had overwritten IRQ_TMP1 within the USER_MIDI_NotifyRx hook. The MIDI receiver now uses an internal register o support for CLCDs with 4bit interface, see the functional description of MIOS_LCD_TypeSet MIOS V1.5 - the first open source release ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ o if MIOS_SRIO_TS_SensitivitySet is called with WREG == 0x00, the touch sensor Pin RD.4 (J14 of the core module) won't be driven by MIOS anymore and therefore is free for other purposes o the AIN handler has been optimized to a two-step state machine with a sample frequency of 200 uS o USER_MPROC_NotifyTimeout hang-up has been fixed o the internal registers have been rearranged for a better overview. Applications shouldn't be affected from these changes MIOS V1.4b ~~~~~~~~~~ o LCD cursor mapping (MIOS_LCD_YAddressSet in conjunction with MIOS_LCD_CursorSet) didn't work correctly with 4-line displays (cursor pos >= 0x80 was forwarded to second display, although third and fourth lines was mapped to a position < 0x80) o USER_MPROC_NotifyReceivedEvent and USER_MPROC_NotifyFoundEvent: On 2-byte MIDI events (program change and channel pressure), the 2nd byte, stored in MIOS_PARAMETER2, is now also copied to the 3rd byte (MIOS_PARAMETER3) for an easier handling in some MIDIbox applications o new function MIOS_MF_TouchDetectionReset: it resets the software implemented touch detection so that the fader is repositioned regardless if it is currently manually moved or not o interrupts are not blocked during a BankStick write anymore to improve the realtime capability of MIOS and especially to avoid MIDI data loss during the write cycle MIOS V1.4 ~~~~~~~~~ o the IIC functions are now open for public, they can be used to access any IIC compatible device via port J4 in parallel to the BankSticks. Example: see the lcd7_iic driver o there are two new hooks available which allow to monitor the incoming and outgoing MIDI traffic with zero latency: USER_MIDI_NotifyRx and USER_MIDI_NotifyTx. o The motorfader driver now works much better with panasonic faders. New recommented calibration values: Alps: 0x0e@8V, Panasonic: 0x0c@8V o automatic debouncing has been added to the SRIO driver which compensates temporal spikes caused by low-cost buttons. See also the detailed description of the MIOS_SRIO_DebounceSet function. Just add this function at the beginning of your application (below USER_Init) if required. o a new display type #6 has been added which redirects single characters and strings to the MIDI interface. The used protocol is documented in the http://www.ucapps.de/mios/mios_sysex_implementation.txt o a LCD message receiver has been added to the MIDI processor. Incoming characters will be print for 2 seconds on screen. Btw.: the same protocol will be supported by MBHP_TV in the next days o it's now possible to write directly into a BankStick via MIDI. This opens the possibility to embed the BankStick content into the application by locating the data to address range 0x400000-0x407fff (24LC256; 32k) resp. 0x400000-0x40ffff (24LC512; 64k). Also the upload to multiple BankSticks is supported with the BankStick select function o it's now possible to read directly from internal Flash/EEPROM and external BankStick via MIDI. This is a nice debugging help, but opens also the possibility to create backups and to copy (clone) the content of a BankStick MIOS V1.3 ~~~~~~~~~ o it's now possible to integrate an own LCD driver which is not natively supported by MIOS. See also the docs under MBHP->LCD o up to 8 BankSticks can now be addressed over the same IIC bus by using the MIOS_BANKSTICK_CtrlSet function. Note that this feature doesn't work with the EEPROM M24256 from ST, but only with Microchip EEPROM 24LC256. See also the docs under MBHP->BankStick o the MIOS_HLP_Dec2BCD function can be used to convert a 16 bit decimal value to BCD (for example to send the digits of a decimal number over the MIDI interface or to display the numbers on a LED digit display) o MIOS_LCD_PrintBCD4 and MIOS_LCD_PrintBCD5 can be used to print 16 bit values in decimal form o the MIOS_MF_StartupSpeedSet allows to give the motorfaders a "kick" when they are starting to move (can be tried with the mf_calibration application. The MIDIbox LC application now includes a calibration menu) o the speed modes of the encoder driver have been rewritten, see the MIOS_ENC_SpeedSet description for further details. The "enc_speed_v1_3" application allows to test the various settings. MIOS V1.2 ~~~~~~~~~ o MIOS_LCD_TypeSet offers additional parameters o the chip select lines of KS0108 or HD61202 based displays can now be inverted o additional GLCD driver for T6963c based displays. The performance of this display is very poor, it is not recommented for applications which have to react in realtime like the MIDIbox LC or any other "MIDI receiver" o the enable pins of character LCDs can now be changed during runtime. In this way it is possible to connect multiple LCDs to one core module, the maximum number of LCDs which can be handled by a application is now only limited by the number of free pins o fast write to BankStick and EEPROM w/o verify o page write to BankStick (64 bytes at once) o dynamic priority sampling for muxed pots (improved latency, known from MIDIbox Plus and MIDIbox64) MIOS V1.1 ~~~~~~~~~ o some imperfections in the SRIO and MF handler have been fixed in this release. o MIOS_HLP_16bitAddSaturate: 16 bit addition with saturation. Usefull in conjunction with rotary encoders. Will be used by upcoming applications (MIDIbox HN already uses this function in hn_enc.inc) o support for detented encoders (see mios_tables.inc) o MIOS_DIN_PinAutoRepeatEnable, MIOS_DIN_PinAutoRepeatDisable, MIOS_DIN_PinAutoRepeatGet: an assignable autorepeat function for every button. Excellent for data entry. o MIOS_CLCD_SpecialCharInit, MIOS_CLCD_SpecialCharsInit: allows to initialize the 8 special characters of a LCD. o MIOS_LCD_YAddressSet: allows to enable a second character LCD MIOS V1.0 ~~~~~~~~~ initial version Thorsten.Klose@midibox.org