microEngineering Labs, Inc.
      719-520-5323

              

  Home
  Products
  Distributors
  Purchasing Info
  Developer Resources
  Support
  Upgrades
  Contact Us
 

 

keyword search:
 

Home:
  Support home:
General Topics:
    FAQ
    MCU selector guide
    Developer's resources
    Downloads and patches
    Sample programs
Support by Product:
    melabs USB/U2 
Programmer
    melabs Field
Programmer
    melabs Serial 
Programmer
    EPIC™ Programmer
    Programming Adapters
    PICBASIC PRO™ 
Compiler
    PICBASIC™ Compiler
    PICPROTO™ Boards
    LAB-X1 Experimenter Board
    LAB-X2 Experimenter Board
    LAB-X3 Experimenter Board
    LAB-X4 Experimenter Board
    LAB-X18 Experimenter Board
    LAB-X20 Experimenter Board
    LAB-XT Experimenter Board
    LAB-XUSB Experimenter 
Board
    melabs Loader
 

Known issues in PICBASIC PRO Compiler 2.60


Devices affected: PIC18F46J11 Family
Commands affected:  ADCIN
Date encountered: 12/2009
Error class: Apparent (no error, but consistently fails initial testing)

The ADCIN command always doubles the channel parameter.  AN0 reads correctly, channel-1 reads AN2, channel-2 reads AN4, etc.

DEFINE ADC_CLOCK writes to the wrong register, breaking all ADCIN commands.  Even if you omit the define, it still writes a default value to the wrong register.

Workaround:

For the DEFINE ADC_CLOCK issue, always write "DEFINE ADC_CLOCK  0" and then set the actual clock selection by writing to the ADCON1 register using direct access:

DEFINE ADC_CLOCK  0    ' safe setting
ADCON1 = %10000011 ' set ADC clock 3, right justify

For the channel select, you could read even-number channels with a half-value setting.  The better solution is to use a manual method by manipulating the registers directly to perform the conversion:

ADCON0 = %00000101      ' set to channel-1
PAUSEUS 50                   ' pause to settle

ADCON0.1 = 1                 ' start conversion
DO WHILE ADCON0.1 = 1   ' wait for conversion
LOOP

adval.highbyte = ADRESH   ' store result
adval.lowbyte = ADRESL

 


Devices affected: standard 14-bit instruction set (PIC16, PIC12)
Commands affected:  SERIN/SEROUT
Date encountered: 10/2009
Error class: Apparent (no error, but consistently fails initial testing)

Under some circumstances, SERIN and SEROUT commands are subject to baud rate errors that are beyond those allowed in the RS-232 specification.  This will mostly affect applications where the baud rate is 9600 and the system clock is 4MHz or less.  Symptoms mostly occur on receive (SERIN), and manifest as garbage or incorrect data being returned.

Workaround:

The easiest, safest fix is to switch to an alternative serial command (SERIN2/SEROUT2, DEBUGIN/DEBUG, or HSERIN/HSEROUT).

If this isn't possible due to the constraints of your design, contact support.  There is a library fix that can be implemented immediately, but it will interfere with the official patch when released.  A patch is in the works, but we are waiting on a few other improvements that we want to include.

 


Devices affected: 16F1826, 16F1827
Date encountered: 08/2009
Error class: safe (always reported)

There are invalid port aliases in the PBP header file for these parts.  The following assembly errors will be generated:

	Symbol not previously defined (PORTC)
	Symbol not previously defined (TRISC)

Workaround:

Edit the files 16F1826.BAS and 16F1827.BAS (found in the PBP install folder) as follows:

	PORTL   VAR     PORTB
	PORTH   VAR     PORTA  ' PORTC invalid, change to PORTA
	TRISL   VAR     TRISB
	TRISH   VAR     TRISA  ' TRISC invalid, change to TRISA

Command affected: WRITE
Date encountered: 07/2009
Error class:  safe (always reported)

When a WRITE command is attempted with a word variable in the value position, but the WORD modifier is omitted.  Also occurs when a calculation is used in the value position, as this may force a word temp variable to be used.  (Correct operation is for the command to write only byte-0 of the variable when the WORD modifier is omitted.)

	wordvar    VAR    WORD
	WRITE 0, wordvar

One of the following assembly errors will sometimes be generated:

	... symbol not previously defined (WRITE)
	... undefined symbol 'write'

Workaround:

Add the following define at the top of the code.  This define will have no effect on unaffected code, nor will it increase code space usage.

	DEFINE  WRITE_USED  1

Previous version 2.50C has no bug reports, but is incompatible with MPLAB versions 8.20 and later.  Versions 2.50, 2.50A, and 2.50B each have minor issues that I won't list here as they have been fixed in the downloadable patch.  Use the patch!


Windows 64-bit compatibility requirements:

Users of 64-bit systems must instruct PBP to use the Microchip Assembler, MPASMWIN.  In MicroCode Studio, this is a simple check box setting in the Compile and Program Options dialog.  On the Compiler tab, check the box labeled "Use MPASM".  MPLAB must be installed.  It can be downloaded from the Microchip site or installed from your PBP install CD.

Windows 7 compatibility requirements:

When installing PBP as a language tool within MPLAB, the tool selection must point directly at the PBPW.EXE executable instead of the PBPMPLAB.BAT file that can be used in earlier versions of Windows.

 


Copyright 2010
microEngineering Labs, Inc.
2845 Ore Mill Road, STE 4
Colorado Springs CO 80904
(719) 520-5323
(719) 520-1867 fax
email: support@melabs.com

Last Updated: 01/22/2010

Home | Products | Support | Resources | Purchase | Contact

PIC, PICmicro, dsPIC, and MPLAB are registered trademarks of Microchip Technology Inc. in the USA and other countries.  PICBASIC, PICBASIC PRO, PICPROTO, and EPIC are trademarks of Microchip Technology Inc. in the USA and other countries.   BASIC Stamp is a trademark of Parallax, Inc.