Jump to content


  • Content Count

  • Joined

  • Last visited

Everything posted by Dave

  1. I've just built the novo library with BoostC V6.91 RC3, the outut is as follows Building... BoostC Optimizing C Compiler Version 6.91 (for PIC16 architecture) http://www.sourceboost.com Copyright© 2004-2008 Pavel Baranov Copyright© 2004-2008 David Hobday Licensed to under Single user Pro License for 1 node(s) Limitations: PIC12,PIC16 max code size:Unlimited, max RAM banks:Unlimited novolib_pic16t3e5ts1.c success BoostLink Optimizing Linker Version 6.91 http://www.sourceboost.com Copyright© 2004-2008 Pavel Baranov Copyright© 2004-2008 David Hobday Creating Library:novolib_pic16t3e5ts1.lib success "C:\Program Files\SourceBoost\boostc.pic16.exe" novolib_pic16t3e5ts1.c "C:\Program Files\SourceBoost\boostlink.pic.exe" /ld "C:\Program Files\SourceBoost\lib" novolib_pic16t3e5ts1.obj /t PIC16 /d "C:\Program Files\SourceBoost\novo" /p novolib_pic16t3e5ts1 -lib Done So I can't explain why you are having problems. Is the code as originally supplied? Run goodies.exe to extract the original sorces and projects to ensure you have the lastest soure code and library projects and then try building again. Regards Dave
  2. It should work. What license type do you have?Check that you definately have the BoostC compiler selected when using Preg. What is displayed during the registration process. Regards Dave
  3. Sounds like the classic read modify write issue, when ports externally are being dragged down by whatever is connected to them. Remember that when a port is read on a PIC16 the actually logic level on the pins are read, not the last data written. This is not a problem on PIC18 if you use the LAT register as this actually holds the last data written. Possible solutions: 1) Don't drag down the outputs with excessive load. 2) Use a shadow register to hold the data written to the port. Regards Dave
  4. jamwaffles Be careful not to operate devices outside their specification as then things can start to get flakey. Regards Dave
  5. Neil, This code looks like implementation of some missing features. We would like to consider them to be added to the Boostc compiler libraries included in the SourceBoost installation. Once your are happy that these routines provide accurate results and are fully tested, please let supply the source code to support@sourceboost.com for further evaluation. Keep up the good work. Regards Dave
  6. Neil, This functionality is currently being worked on. Regards Dave
  7. Onka, Just a thought, are you sure you have the tx line in the correct state for a break?I seem to remember from a long time ago that RS232 (assuming thats what you are using) can be a little confusing as there normally inversion in the line drivers. The normal state for tx is the marking state (or 1 state) which is a negative voltage. A break in transmission is indicated by holding the tx line in the logic zero state which is a positive voltage (not sure for how long). Regards Dave
  8. The software stack (or memory overlay) means that all the memory useage on the "stack" has to be known at the time of linking the program. That makes functions that use the software stack un-interruptible or corruption will occur. Primarily it's the memory overlay, but there are other issues as you mention. No. There is a floating point library, have a look at the Floating point library documention supplied with the SourceBoost installation. Regards Dave
  9. No. Thats the only option under MPLAB Regards Dave
  10. oz1lqb, Please check IDE user manual Appendix A: SourceBoost IDE Simulator features and limitations. Regards Dave
  11. Babos, I have posted the response here rather than by personal message so others can benifit from the response. Try this: 1) Ensure you have the correct library as part of the project, it needs to match the Novo RTOS header file use in the program. 2) Use the linker command line option -swcs to turn on software call stack used by Novo RTOS. I think you will find that you have #2 missing Regards Dave
  12. TimC The management heap works by having a single byte in the head of each block keeping track of the block size and whether or not it is in use. So thats one bit for usage and 7 bits for the block length. That means the maximum block you can allocate on the heap is 127bytes. A heap block must reside in a single RAM bank. The heap is made up of the memory left over after linker has allocated all the memory for your program variables. This memory may be fragmented, ie it may be in small pieces. Also on PIC16 targets the biggest allocation on the heap will be 1 bytes less than the largest block of contigious memory block that is not used. No PIC16 targets have a full bank (128 byte) just as RAM, so you best case senario on a PIC16 limited by the biggest contigious memory block. I hope that helps explain things. Regards Dave
  13. Fixed in forth coming BoostC V6.90. Regards Dave
  14. Kenn, The logic analyser is the nearest plugin, it has some oscilloscope type functionality. Regards Dave
  15. trossin, The problem you describe is one that affects the standard button block plugin. When used in 2 state mode where the buttons latch down. When the debugger is started with the buttons already down the buttons show the correct state but the pic simulator or other plugins don't see the correct state on the I/O pins. See if you can reproduce this problem and let us know if it is the same as the problem you are seeing. I decided to investigate the standard button block problem, which I have now fixed. It was not a problem with the simulator but a simple problem with the plugin, maybe your code can be fixed in the same way. Before fix: PLUGIN_API BOOL plgStart( void ) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); g_btnData.ConnectPort(); for( int i = 0; i < sizeof(wnd->m_btn)/sizeof(wnd->m_btn[0]); i++ ) g_btnData.SetPinState( i, false ); return true; } Fixed code: PLUGIN_API BOOL plgStart( void ) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); g_btnData.ConnectPort(); for( int i = 0; i < sizeof(wnd->m_btn)/sizeof(wnd->m_btn[0]); i++ ) g_btnData.SetPinState( i, wnd->m_btn[ i ].GetState() ); return true; } The SetPinState class member function contains the following: void SetPinState( int pinNumb, BOOL state ) { ::WaitForSingleObject(m_pinConnectionsMutex, 0xFFFFFFFF); //Lock HANDLE connection = m_pinConnections[ pinNumb ]; if ( connection ) { // button operates like it has 10k to 0V, when press it goes 25 ohm to 5V, if ( state ) { SetConnectionR( connection, 25 ); SetConnectionV( connection, 5000 ); } else { SetConnectionR( connection, 10000 ); SetConnectionV( connection, 0 ); } } ::ReleaseMutex( m_pinConnectionsMutex ); //Unlock } I hop there is enough magic for you there. Regards Dave
  16. Kenn, They are all here Change the filter at the bottom of the page from "Last 30 days" to "Show All". Regards Dave
  17. Carnage, Yes you can happily put continous polling type code in here. This task can't be put to sleep or wait for any events because it needs to loop around to do the task switching. Regards Dave
  18. GPIO is not currently supported by the PIC simulator.Its on the todo list, but we haven't got round to it yet :angry: . Regards Dave
  19. The latest version available is read from the web, the information there was out of date. This informatiom has now been corrected. Regards Dave
  20. Hayden, A project demonstrating the issue would be most helpful as it seems changing any one of a number of things makes it go away. Regards Dave
  21. Hayden, If you can provide a project that demonstrates the problem it would be appreciated. Please send to support@sourceboost.com. Regards Dave
  22. tu_ech, The regular software is license for a single user, single computer installation. You can purchase extra single user license nodes if you want to install it on more computers. You can find the extra node license details here:http://www.sourceboost.com/Products/BoostC/BuyLicense/ExtraNodes.html Regards Dave
  23. Ian, There complications implementing such a system. For a start the compiler/linker uses a software stack to handle all function arguments and local variables. To allocate the space for such variables linker needs to be able to analysis the complete call tree, which it won't be able to do if the routines called aren't part of program being compiled. Regards Dave
  24. What happens if you watch variables using the MPLAB ide and simulator? Regards Dave
  • Create New...