Jump to content


  • Posts

  • Joined

  • Last visited

Posts posted by Pavel

  1. Sorry about the confusion and let's try to sort this out. What product is the key for? Based on the screenshot that you provided it seems that the product is BoostC Pro but you try to register either plugins or IDE. Keys are valid only for products they were issued for and will not work with other products.

    Please email details to support@sourceboost.com and we'll sort this out.





  2. ...What exactly means "limited support" in the version log?...

    Limited support means that only core information that is necessary to compile and debug for this target is included into system headers and TDF files:
    • - only core registers are defined in the system header files, if you need other registers you need to add your own defines to either your code or system header
    • - full config data is added to the system headers (PIC16) or TDF(PIC18) files
    • - target architecture is fully described in the TDF files but non-core registers and register groups are not.
    You are welcome to add missing information. To compile it's only necessary to add it to system header files. Missing information in the TDF files is used in debugging under SourceBoost IDE and if you use Mplab or Mplab X you don't need it.


    For example look at the Port B support that is not defined in the limited support targets but is fully supported in PIC18F8722. This target has the following information in its system header file PIC18F8722.h (used in compilation):

    #define PORTB                  0x00000F81 
    volatile char portb            @PORTB;
    and in PIC18F8722.tdf file (used for debugging):



    Configure PORTB
        // create
        PinNames = "RB0|INT0","RB1|INT1","RB2|INT2","RB3|INT3|ECCP2|P2A","RB4|KBI0","RB5|KBI1|PGM","RB6|KBI2|PGC","RB7|KBI3|PGD";
    RegisterSF PORTB
        Description = "PORTB","";
        Address = F81h;
        BitNames = "RB7","RB6","RB5","RB4","RB3","RB2","RB1","RB0";
  3. ...It would be nice to have the option in this screen to switch between C, C++ and Chameleon....

    The reason we use xlaunch.exe instead of the actual compiler in the MplabX plugin is to allow different programming languages to be used in the same project. Xlaunch analyses the command line and based on the extension of the input source file launched a relevant compiler


    For example a project can consist of .c, .c++ and .bas files an when compiling xlaunch.exe will use C, C++ and Basic compilers to compile these files.

  4. Make sure you start preg.exe as administrator and make sure you select the correct product inside the preg.exe dialog (for example a BoostC++ key won't work with BoostC).

    If this fails try to register from command line. This can be done for any product that is an executable (so this method won't work for plugins and those are DLLs).Do do this:
    - open command prompt as administrator
    - navigate into SourceBoost installation directory
    - start the product executable followed with the "register" command line argument. For example for the BoostC compiler issue the command line like :
    C:\Program Files (x86)\SourceBoost>boostc_pic18.exe register
    This will bring up a dialog where you enter your registration name and license key and press OK. If registration was successful you will get a relevant prompt
    - Again it's important to use these steps as administrator, if not you still may bet an successful prompt but the registration won't be applied properly

    If still unsuccessful send a mail to support@sourceboost.com and quote your registration name and license key and briefly describe the problem and what you have done.

    UPDATE: We migrated on a new faster web server and seems that our key generation system got broken :( If you experience similar problem please email to support@sourceboost.com and we will sort it out. Sorry about the confusion.


  5. ...Errors were the result of " extern volatile char eedata ; " in the code...

    That's sounds like a compiler bug. We'll look into this.



    ...does this mean that the new compiler is a C and C++ combined ?...

    Chameleon does not support C++ classes but has a very good support of data and function templates up to the point when template based meta programming can be done. In fact its code generation logic is based on this. For an example check very bottom of include\sys\sys_assign.h file where meta programming is used to generate code for assigning structs. It also supports auto data type and explicit enum types (like in the latest C++ standard).


    ...What is the 5% that is not?, what are the differences?...

    From the top of my head:

    - rom type specifier is ignored

    - dynamic memory allocation is not supported (new/delete)

    - complex array and struct initialisation works a bit differently

    - system header system.h does not have to be included (it's included behind the scene)

    - Chameleon does support bit fields

    - Chameleon does support floating point data types natively



  6. Currently the Chameleon compiler is in beta stage and does not have a corresponding MplabX plugin yet. The only way I can think of how to work around this is to save the BoostC compiler executable in a safe place, rename the Chameleon executable into BoostC and use MplabX with BoostC plugin. The command lines between these 2 is mostly compatible and this makes it possible for this approach to work.



  7. Running preg as admin may not be enough. One option is to log in as admin and that run preg and register.


    Another way is to log in as admin and start compiler from command line followed by the 'register' command line argument like 'boostc_pic16.exe register'. This will show a dialog where you can enter your license info.

  8. Here is working sample code that sets up custom characters that represent battery status and that cycles trough them. Enjoy.


    #include <system.h>
    // Configure LCD connections
    // If using this code under SourceBoost simulator (for PIC18F97J60), configure the LCD plugin as follows:
    // RS  to RH2
    // R/W to RH1
    // E   to RH0
    // DB0 to RE0
    // DB1 to RE1
    // DB2 to RE2
    // DB3 to RE3
    // DB4 to RE4
    // DB5 to RE5
    // DB6 to RE6
    // DB7 to RE7
    #define LCD_ARGS 0,            /* Interface type: mode 0 = 8bit, 1 = 4bit(low nibble), 2 = 4bit(upper nibble) */ \
                     1,            /* Use busy signal: 1 = use busy, 0 = use time delays */\
                     PORTE, TRISE, /* Data port and data port tris register */ \
                     PORTH, TRISH, /* Control port and control port tris register */ \
                     2,            /* Bit number of control port is connected to RS */ \
                     1,            /* Bit number of control port is connected to RW */ \
                     0             /* Bit number of control port is connected to Enable */
    #include <lcd_driver.h> // include the LCD template code
    //Target PIC18F97J60 configuration word
    #pragma config BW = 16 // 16-Bit Data Width mode
    #pragma config CCP2MX = ON // ECCP2/P2A is multiplexed with RC1
    #pragma config CP0 = OFF // Program memory is not code-protected
    #pragma config DEBUG = OFF // Background debugger disabled; RB6 and RB7 configuredas general purpose I/O pins
    #pragma config EASHFT = ON // Address shifting enabled; address on external bus is offset to start at 000000h
    #pragma config ECCPMX = ON // ECCP1 outputs (P1B/P1C) are multiplexed with RE6 and RE5; ECCP3 outputs (P3B/P3C) are multiplexed with RE4 and RE3
    #pragma config ETHLED = ON // RA0/RA1 are multiplexed with LEDA/LEDB when Ethernet module is enabled and function as I/O when Ethernet is disabled
    #pragma config FCMEN = ON // Fail-Safe Clock Monitor enabled
    #pragma config FOSC = HS // HS oscillator
    #pragma config FOSC2 = ON // Clock selected by FOSC1:FOSC0 as system clock is enabled when OSCCON<1:0> = 00
    #pragma config IESO = ON // Two-Speed Start-up enabled
    #pragma config MODE = MM // Microcontroller mode, external bus disabled
    #pragma config STVR = ON // Reset on stack overflow/underflow enabled
    #pragma config WAIT = OFF // Wait states for operations on external memory bus disabled
    #pragma config WDT = OFF // WDT disabled (control is placed on SWDTEN bit)
    #pragma config WDTPS = 32768 // 1:32768
    #pragma config XINST = OFF // Instruction set extension and Indexed Addressing mode disabled (Legacy mode)
    //Set clock frequency
    #pragma CLOCK_FREQ 25000000
    void interrupt( void )
        //Handle timer0 interrupt
        if( intcon & (1<<T0IF) )
            clear_bit( intcon, T0IF ); //clear timer 0 interrupt bit
    void interrupt_low( void )
    void main( void )
        //Configure port B
        trisb = 0x00;
        //Set Timer0 mode
        set_bit( t0con, TMR0ON ); //enable timer0
        clear_bit( t0con, T0CS ); //configure timer0 as a timer
        //Set Timer0 resolution
        set_bit( t0con, T08BIT ); //set timer0 8 bit wide
        //Set prescaler assignment
        clear_bit( t0con, PSA ); //prescaler is assigned
        //Set prescaler rate
        clear_bit( t0con, T0PS2 ); //prescaler rate 1:2
        clear_bit( t0con, T0PS1 );
        clear_bit( t0con, T0PS0 );
        //Set timer0 source edge selection
        set_bit( t0con, T0SE ); //increment on high-to-low transition on RA4/T0CKI pin
        // Enable priority interrupts
        rcon = (1<<IPEN);
        //Enable interrupts (Timer0)
        intcon = (1<<GIE) | (1<<TMR0IE);
        //Initialize LCD
        trisg.5 = 0;
        portg.5 = 1; //lit LCD backlight
        //Initialise first 3 custom characters
        lcd_write( 0x40+0 );
        lcd_write( 0b01110 ); //empty battery character
        lcd_write( 0b11011 );
        lcd_write( 0b10001 );
        lcd_write( 0b10001 );
        lcd_write( 0b10001 );
        lcd_write( 0b10001 );
        lcd_write( 0b10001 );
        lcd_write( 0b11111 );
        lcd_write( 0b01110 ); //half empty battery character
        lcd_write( 0b11011 );
        lcd_write( 0b10001 );
        lcd_write( 0b10001 );
        lcd_write( 0b10001 );
        lcd_write( 0b11111 );
        lcd_write( 0b11111 );
        lcd_write( 0b11111 );
        lcd_write( 0b01110 ); //full battery character
        lcd_write( 0b11011 );
        lcd_write( 0b11111 );
        lcd_write( 0b11111 );
        lcd_write( 0b11111 );
        lcd_write( 0b11111 );
        lcd_write( 0b11111 );
        lcd_write( 0b11111 );
        //Show hash pattern on LCD
        //Show changing battery status character inside an endless loop
        unsigned char ch = 0;
        while( 1 )
            lcd_gotoxy( 1, 0 );
            lcd_write( ch++ );
            if(ch == 3) ch = 0;
  9. ...I tried to get the usb_serial project to compile, adding those few defines results in a large number of other errors...

    I spent more time on the PicPack library and eventually was able to build the usb_serial project. Here is a list of additional to my previous post changes that needs to be done:


    1. Seems that some define names are a bit inconsistent. This fix will take care of this. In config.h add these code after the line '#define USB_EP0_IN_ADDR 0x0508':







    2. For the value of PLATFORM_CLOCK defined in the project there are no defines for 2400 and 4800 serial baud rates. To fix this we'll use conditional compilation for the code that uses these values. In usb_cdc_class.c add ifdefs like this:


    switch (my_lc->dte_rate.as_long) {

    #ifdef SPBRG_2400 <<<<<<<<<<<<<< added line

    case 2400:

    current_bit_rate = SPBRG_2400;

    #ifdef CDC_DEBUG

    serial_print_str("2400 ");



    #endif <<<<<<<<<<<<<< added line

    #ifdef SPBRG_4800 <<<<<<<<<<<<<< added line

    case 4800:

    current_bit_rate = SPBRG_4800;

    #ifdef CDC_DEBUG

    serial_print_str("4800 ");



    #endif <<<<<<<<<<<<<< added line

    case 9600:


    3. usb_serial project uses serial routines but source file with these routines in not part of the project. To fix this add pic_serial.c and pic_serial.h from the pic_pack_lib folder to the project.


    After these changes the project could be built without errors.








    ...Unfortunately it gets numerous compiler and preprocessor errors with 7.30 while attempting to compile the demo projects (using whatever chip the demos were meant for, I didn't change their target) ...



    I just tried to build couple of the USB projects from the PicPackLib 3.09 from www.embeddedadventures.com with 7.30 and here is what you need to change to make the project build:


    Project ea_plt1003_usb2serial or ea_plt1003_usb_keyboard or usb_joy_mouse:

    1. The project file contains path to the compiler that may be different from what is on your computer. After opening the project you need to go to Settings->Options->Tools and press the 'Get Default' button. This will reset the path to the compiler in the project

    2. The project misses path to some of its include files. Go to Settings->Options->Compile Options and add to the 'Extra compiler options' field this string:

    -I ../../pic_pack_lib


    After these changes I was able to build the projects.


    However I couldn't build the usb_serial project as some of the defines are missing. These defines are present in the usb_joy_mouse project so maybe copying them over will help.




  11. Someone will have the answer. I hope!


    I tried SourceBoost installation on a 'clean' Windows 8.1 64bit computer that had never SourceBoost installed. The installation went fine and after installation I was able to register goodies using preg just fine (remember that after you select 'goodies' inside preg you need to press 'OK' and that will bring up another dialog where you enter your goodies license name and key). After that I started goodies and they extracted files (including Novo) without any problems.




  • Create New...