Jump to content

babos

EstablishedMember
  • Content Count

    36
  • Joined

  • Last visited

Everything posted by babos

  1. I've already try to complie the same project in SourceBoost IDE but remain the same error.(not in laptop but in the desktop computer where I've copy the project) Tomorrow I can try the second step. Cheer. Babos
  2. I had try to compile the same project in Sourceboost IDE & MPlab ver.8.50/8.53/8.56 and this is the error in the same case: BoostC++ Optimizing C++ Compiler Version 6.97 (for PIC18 architecture)http://www.sourceboost.comCopyright© 2004-2010 Pavel BaranovCopyright© 2004-2010 David HobdayLicensed to Massimo Romano under Single user Pro License for 1 node(s)Limitations: PIC18 max code size:Unlimited, max RAM banks:Unlimitedmcu.cStarting preprocessor: "C:\Program Files\SourceBoost\pp.exe" "E:\PRETTY FW MCU\mcu.c" -i "C:\Program Files\SourceBoost\include" -d _PIC18F8722 -la -c2 -o "E:\PRETT
  3. I've 6.96 C++ compiler version. Isn't the Last ? Where is version 7? regards. Babos
  4. Hello, I've this problem. i should make an array of integer of 1600 int as "static unsigned int buffer_sample[1600].having 3600 bytes of free RAM RAM available:3936 bytes, used:335 bytes (8.6%), free:3601 bytes (91.4%), Heap size:3601 bytes, Heap max single alloc:127 bytesROM available:131072 bytes, used:4688 bytes (3.6%), free:126384 bytes (96.4%) This message appear when I implement the array into the code with suggested "-idx 2" switch : warning: unrecognized command line agrument '-idx', skippedsrtos.c Starting preprocessor: "C:\Program Files\SourceBoost\pp.exe" E:\G26CPP\G26
  5. thank's Ian, very useful to know. Babos
  6. Good mornig everyone. Is a way to calculate how much availability Sys_Yiels / Sys_Sleep I have, Before compiler message "Can't fit Avoid boundary code in function .... "? thanks. Babos
  7. Possibly. However I will have to write it all from a blank sheet to a finished, built and tested program if I am to be certain it works. I am not charging for my time (nor would I want to) so the example project must interest, entertain and educate me or I will not do it. I am away for a few days and if I can think of an idea I like that needs this level of complexity, I will start work on it, but no promises. To modify your code you have shown us to make an example would be non trivial and I would not be able to run it without either the rest of the project and its hardware or a softwa
  8. In which case it would be unwise to discuss it in more detail or show any more of it to anyone unless you have them under contract with a signed non-disclosure agreement. Before you do that, you would of course need to see that they had done a realtime project of a similar size to your own. I am just a hobby user and am NOT the right person if you need someone under contract. You might be able to tell us how many lines of code you have, the number of Sys_xxxxx functions your code has in total, and maybe show us the call tree annotated with the number of bytes of variables and yield point
  9. The biggest problem is that I can not speak well's English.I try to explain: * equipment has more groups: washing, serum application, drying, treatment tank, ecc. * The motors are used to move on accessories for various groups' analysis. * From computer via USB port sending the parameters that I need for a specific method * Send also (every 500ms) a request to state that allows me to display temperature, time in progression, etc. * Together with the parameters of methods, including sending the sequences of movements of the motors. * equipment is started and I could also disconnect
  10. The problem remain. when I have few Sys_Sleep to wait an event as // motor move motor_move(_X,position,velocity); // wait end of movement for motor X while(!x_busy)Sys_Sleep(1); During this wait, the processor send his status to serial port, fill the treatment tank, decrement any elapsed time for process. I can't block these flows All work fine but not is possible increment Sys_Sleep infinity and, in my program, there are many calls to the motors. we need an alternative to handle this problem, use other tasks, use semaphores or some other devilish otherwise be forced to return to sup
  11. Yes you mentioned you had it working in Basic as a superloop. *HOW* does the PIC report to the computer? It *may* be possible to put the reporting in an interrupt routine and avoid the need for NOVO at all! What's the interface and the message format? pic transmint a status of 64 byte @115200b/s any 250/500ms
  12. in fact I can avoid Sys_Sleep engines, waiting to do their movements and with a simple "while (! motor_busy);" but the computer requires the machine status every 500ms;during which I was lacking.
  13. Sorry IanM, if I try to regroup Sys_Sleep like you suggested, I get a compiler error which does not have sufficient resources. but I made some progress. for example I've modified this task without Sys_Sleep, because not necessary. ////////////////////////////////////////////// // Task Analysis Primary ////////////////////////////////////////////// void Task1() { //Update while( 1 ) { if (i_start) // Start primary analysis { flg_switch_analysis = 0; i_sequence = i_sequence_buffer[i_sscan]; // load current sequence if (i_sequence > 0) // sequence not zero then perform analysi
  14. Ok. IanM I try to save all possible yield point , thank's, Babos
  15. The linker serious warning is there because unless you take special precaution you have a chance of corruption, and that seems to be what you are experiencing. If you post the code on the forum, then we all can take a look. Regards Dave I understood the problem but I do not know how to fix it. I absolutely have to avoid the program remains in the task while waiting for an event it will push ahead. This is a summary code: ////////////////////////////////////////////// // Task that processes UART data ////////////////////////////////////////////// void Task0() { //This ta
  16. I think to have many memory in a 18F8722 but this drive other 4 PIC to move stepper motor. The true problem is this : I've six task run, one of this is used to moving the four motor trought software SPI unidirectional string commands in a separate pin port. The program wait "Sys_Sleep(1)" until the control pin (one for motors) indicates that ended his movement in this manner // example for one motor motor_move(_X,position,velocity); while(!x_enable_motor)SysSleep(1); the same for the Y, Z and R motors. There are several movements of the motors while, if i use this type of code, the co
  17. Serious Warning: Possible sw stack corruption, function:'wait_x' calls a yielding funcion (Sys_) and is called in more than one execution thread. Serious Warning: Possible sw stack corruption, function:'wait_y' calls a yielding funcion (Sys_) and is called in more than one execution thread. Serious Warning: Possible sw stack corruption, function:'wait_z' calls a yielding funcion (Sys_) and is called in more than one execution thread. Serious Warning: Possible sw stack corruption, function:'wait_r' calls a yielding funcion (Sys_) and is called in more than one execution thread. Serious Warn
  18. Thank's Reynard, I try to study this code. Babos
  19. The message generated by SysYield function means that your code has too many Sys_Yield function calls in it. Sys_Yield is also added into the code when any Novo RTOS functions that are preceded with Sys_ are called. And here is a quote from the Novo RTOS manual, giving a hint about this error: I hope that helps. Regards Dave Effectively there are many Sys_Yield or Sys_Sleep in a program because any task must be wait certain amount of time to proceed in many part of program and must be switching the control to other task in this time. maybe I must use semaphore but I d
  20. I a "module.c" I had write a subroutine tha referred to main flow as this : // main module // #include <novocfg_pic18t6e4ts2.h> #include <novo.h> .... void pause(unsigned char t) { Sys_Sleep(t); } .... etc..... // In linked module // extern void pause(void); ... ... pause(t) This work but I think not elegant.. Sorry for my language. Hi, Babos
  21. because if I make that the compiler respond with "Error: Can't fit Avoid code boundary code in function:Sys_Yield : failure"
  22. Sorry sir. a question: During an instruction delay ("es delay_s(3)") Novo RTos polling other task or freeze his status ? thank's Babos
×
×
  • Create New...