Jump to content


  • Content Count

  • Joined

  • Last visited

Everything posted by Pavel

  1. Try to add this line into your sources: volatile char eeadrh; //dummy variable that is needed to link to eeprom library for PIC18s that don't have EEARDH register Regards, Pavel
  2. Starting from 6.97 support for both 8 and 16 bit addressing for eeprom library was added. For PIC18 that don't have EEADRH use: unsigned char eeprom_read( unsigned char address ); void eeprom_write( unsigned char address, unsigned char data ); and for PIC18 that do have EEADRH use: unsigned char eeprom_read( unsigned short address ); void eeprom_write( unsigned short address, unsigned char data ); Regards, Pavel
  3. Take a look at this topic. It includes latest UART driver and sample code for it. Regards, Pavel
  4. Compiler code generation isn't difference for different PIC18 targets. Can you send a simple project that demonstrates the problem to support@sourceboost.com. Regards, Pavel
  5. Similar story happens with general variable declaration. In C all declarations have to be at the start of a scope. C does not let you declare a new variable in an arbitrary place. C++ on the other hand allows this. BoostC compiler allows this as well but HiTech does not (what is often quite inconvenient to HiTech users). Regards, Pavel
  6. C language does not allow declaration inside for expression. This is valid in C++ though. Many C compilers allow this too as a "C language extension". Both BoostC and BoostC++ do support this feature too. You must be using an old compiler release if you get compile errors. Regards, Pavel
  7. This problem is caused by over-optimisation. We still work on a fix. Meanwhile please use a workaround: use level 1 optimisation (compiler command line argument -O1) Regards, Pavel
  8. Problem confirmed. Will investigate asap. Thanks for reporting. Regards, Pavel
  9. For the command line like yours 'C:\Sourceboost\boostc_pic18.exe" CPU.c -O1 -W1 -t 18F4550 -I wireless' where input file is specified without path compiler will look for it in the current directory. Apparently MPLAB sets the current directory to C:\Docs\Controller\Software\Project. Not sure how to change this. Regards, Pavel
  10. This is a compiler bug. Even the preprocessor does allow setting define values in command line compiler does not handle this. Will be fixed in v7. Regards, Pavel
  11. Well that's an unfortunate pain. Will this be fixed in v7? If so, I can probably hang around and wait a while (it was imminent in February). If not, well, I haven't needed 2k code yet so I hadn't paid up. Which means I should start looking around and seeing what quirks other compilers have. Yes this will be fixed in v7. In fact we plan to make this feature available in the very first v7 pre-release whenever it becomes available. In v6 you'll have to split your big arrays into a number of smaller arrays or use any other algorithm that can split data into smaller chunks. R
  12. Tasks can't be members of a class. The reason is in memory allocation for variables. Because there is no stack on PIC all memory allocation has to be done at compile time. Each task is handled as a start of a completely independent call tree. This was compiler and linker can overlay memory regions between different call trees and between different nodes on the same tree. Again this analysis is done at compile time. If class members are used as tasks that it's not known at compile time how many instances of a particular class will be created at run time (remember that if task was a class member
  13. Still under development. As usual other more important tasks popped in and slowed down the new compiler development. Regards, Pavel
  14. Preprocessor does not evaluate any expressions. It's job if to process include files, handle ifdef logic and do macro substitutions. All calculations are done by compiler. In this case compiler was written so that it does not handle expressions in fixed address part of declarations. We added this to our todo list for v7. For now please don't use expressions in the fixed address part in declarations. Regards, Pavel
  15. Dave will answer this. He is traveling now and I'm not sure when he's able to access the forum. Regards, Pavel
  16. You must be using an old RC. All of them except the very last one had this functionality broken. The one that is on the www.sourceboost.com right now does seem to handle all configs from your code correctly (including MSSP7B_EN that you marked as not working). Attached is the picture of what MPLAB showed me. Try to download latest 6.97 RC and use it to build your code. Reagrds, Pavel
  17. The % operator as well as few others need the libc library linked to your project. If you work from SourceBoost IDE this library will be added automatically. If you use MPLAB you need to add it manually (libc.pic16.lib for PIC16 targets, libc.pic16x.lib for new pic16f1x and libc.pic18.lib for PIC18). This library can be found in the lib folder inside SourceBoost installation directory. #include <system.h> should be the first include in all your source files. Regards, Pavel
  18. Code from your screenshots looks ok (you don't even need to Sys_Yield, Sys_Sleep calls will cause scheduler to switch tasks). Must be something in the rest of the program. Regards, Pavel
  19. Sometimes we do. But we don't plan to do it for every post. The idea of these posts is to let us know about the problems. These problems than go into our bug tracking system that we use internally. Regards, Pavel
  20. Check the configuration bits. If they look ok check if your code initialises hardware correctly. Regards, Pavel
  21. Actually this is the final release candidate. We don't plan to change anything in it unless this is a very serious issue. Compilation speed shouldn't change. What optimisation options do you use? What's you OS, Ram size and CPU speed? Regards, Pavel
  22. Thanks for pointing this out. Yes these are errors. Original code in the above post is now corrected. Regards, Pavel
  23. Currently wizard is limited to only a few targets. This does not depend on the license. We plan to change this in v7. For now the workaround is to use wizard target closest to your device. Regards, Pavel
  24. Here is a link to UART driver that will replace existing rs232_driver. And here is a link to another sample code that uses same UART driver. Very easy to use (API consists of only 5 calls) especially if you need just one UART. Regards, Pavel
  25. The main difference between 6. and 7.x is that 7.x is not yet released and 6.x is available for a long time already Some other differences can be found here. Pavel
  • Create New...