posted December 01, 2000 15:49
Your code looks fine.Are you using the freeware libraries? If so, you can't signal from an ISR because the freeware libraries were compiled with the OSCALL_XYZ configuration options set to OSFROM_MAINLINE_ONLY.
In the full version, this is how you do it: You set OSCALL_OSSIGNALBINSEM to OSFROM_ISR_ONLY, and recompile. This removes the interrupt disabling and enabling from OSSignalBinSem(), which then allows you to call it without it re-enabling interrupts and therefore causing nested interrupts, which you don't want.
We are considering a new set of freeware libraries for v2.2, which will have all the OSSignalXyz() services compiled with OSFROM_ANYWHERE. This will allow you to call them from either mainline code or ISRs. The downside is that this takes more RAM ...