CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to CCS Technical Support

Apple Silicon <Added some Pics>
Goto page Previous  1, 2
 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
curt2go



Joined: 21 Nov 2003
Posts: 216

View user's profile Send private message

PostPosted: Fri May 02, 2025 10:40 am     Reply with quote

Did some more playing around and if i set the float as 1024.XXX it is fine , it declares it properly. If I set it as 2048.XXX it declares it properly. 512.XXX does not work though.

Soooooo weird....
Ttelmah



Joined: 11 Mar 2010
Posts: 19821

View user's profile Send private message

PostPosted: Fri May 02, 2025 11:42 am     Reply with quote

That suggests it is Prism that is making a mistake on probably one instruction
in the compile.
Post the small program. Your screenshot is too small for me to read it.
I'll see if I can work out what combination gives a good result with it.
However not going to be quick (club event tomorrow, and then a long
trip the next day, so won't be able to get back on the Macs till probably
the middle of the week next week).
curt2go



Joined: 21 Nov 2003
Posts: 216

View user's profile Send private message

PostPosted: Fri May 02, 2025 12:11 pm     Reply with quote

Thanks.. I would love to solve it. I will work off the old setup in the time being... Appreciate all the help.
Code:

#include <24EP512MC206.h>

#device PASS_STRINGS=IN_RAM
#device adc=12 *=16


#fuses NOJTAG, IESO, PROTECT, NODEBUG,OSCIO
#fuses NOWINDIS, NOIOL1WAY, IESO,FRC_PS//,FRC_PLL
#FUSES WDT                      //Watch Dog Timer
#FUSES WPRES128                  //Watch Dog Timer PreScalar 1:32
#FUSES WPOSTS16                 //Watch Dog Timer PostScalar 1:32768                                          15                                                                                                           // On-chip PLL setting
#use delay(clock=140000000,internal=140000000,restart_wdt)

#include <stdio.h>
#include <stdlib.h>

float version_num = 1.198;


void main(){
   
delay_cycles(1);
long int i;

}
Ttelmah



Joined: 11 Mar 2010
Posts: 19821

View user's profile Send private message

PostPosted: Sat May 03, 2025 12:26 am     Reply with quote

I don't see where this is outputting the float?. Or what the float is?.
If this is being displayed by the debugger in MPLAB, the this is known
sometimes to have issues.

However this cannot be the case, since this is set to NODEBUG.....

You also have the watchdog enabled. Enabling PROTECT wastes chip lives
when developing.
*=16, does nothing on a PIC24, and really you only want the single internal=
declaration, not a separate clock= declaration.

I was expecting to see something setting up a serial port, and printing a
number, to show what is happening.

However big problem is that what you have posted does not give the
hex file you say is correct, on the compiler version you have on an Intel
machine. Thought I would test this since I have a laptop with me, and it
gives a different value to your 'correct' one. Not a good start.... Sad
Are you dead sure you are using the same compiler version????
There was an issue with PCD, handling floats incorrectly a few versions
ago, and this looks suspiciously like this problem.
curt2go



Joined: 21 Nov 2003
Posts: 216

View user's profile Send private message

PostPosted: Mon May 05, 2025 8:14 am     Reply with quote

I was not outputting anything out as the value outputting was the same as what the debugger showed. So for the very small program is was just looking at it in the variables screen.

The other small things in the start i was not too concerned about , but i am glad you pointed out the protect bit. I did not know that one. I will clean somethings up on it and redo it on my end.

I for sure am using the same compiler version. But I will double check everything.

I have tried with multiple version of the compiler with all the same outcome as well. All the way back to 5.103.

I appreciate the help on this. I will repost the files.
curt2go



Joined: 21 Nov 2003
Posts: 216

View user's profile Send private message

PostPosted: Mon May 05, 2025 8:59 am     Reply with quote

Verified 5.118 on each machine

** Did another quick test, took the float declaration out and the code compiled the exact same on each machine. Just for some more reference.

Compiled code code from M4 , compiled in Production mode. But DEBUG bit set on. MPLAB 6.25

:080000000002040000000000F2
:100400000FF82700F0FF270020A0B7000000000031
:10041000C1E8A80034152000343A88007400200098
:10042000243A88004827EF0034082C000480880014
:10043000A4E42300148088000E2EEF001E2EEF008F
:100440002E2EEF004E2EEF00000000000040FE00B8
:02000004000AF0
:10AFE0004FFFFF00FFFFFF003FFFFF00DBFFFF0001
:10AFF000F9FFFF00FFFFFF00FFFFFF00FFFFFF0063
:00000001FF
;PIC24EP512MC206
;CRC=2154 CREATED="05-May-25 08:45"

Compiled code from Intel. Not running Seqouia
MPLAB 6.15

:080000000002040000000000F2
:100400000FF82700F0FF270020A0B7000000000031
:10041000C1E8A80034152000343A88007400200098
:10042000243A88004827EF000481250004808800D2
:1004300094F92300148088000E2EEF001E2EEF008A
:100440002E2EEF004E2EEF00000000000040FE00B8
:02000004000AF0
:10AFE0004FFFFF00FFFFFF003FFFFF00DBFFFF0001
:10AFF000F9FFFF00FFFFFF00FFFFFF00FFFFFF0063
:00000001FF
;PIC24EP512MC206
;CRC=8CD0 CREATED="05-May-25 08:56"
Ttelmah



Joined: 11 Mar 2010
Posts: 19821

View user's profile Send private message

PostPosted: Mon May 05, 2025 10:20 am     Reply with quote

As a silly thing. Try #OPT 0.
The older maths bug was fixed by that, and this is so similar, that I wonder if
it is related.
curt2go



Joined: 21 Nov 2003
Posts: 216

View user's profile Send private message

PostPosted: Mon May 05, 2025 10:48 am     Reply with quote

I had tried that already.. Smile

Actually i did that in the compiler settings. ill try it in the code directly ...

Nope , no dice.... :(
asmallri



Joined: 12 Aug 2004
Posts: 1644
Location: Perth, Australia

View user's profile Send private message Send e-mail Visit poster's website

PostPosted: Wed May 07, 2025 7:43 am     Reply with quote

curt2go wrote:
Nope cant go to Windows 10 on this. parallels wont let me. Crap. I guess my silicon wont support it.


You could use UTM and run wiindows 10 x86 on it. I have done this on an M2 Pro but it is slow. I am going to try Crossover next.
_________________
Regards, Andrew

http://www.brushelectronics.com/software
Home of Ethernet, SD card and Encrypted Serial Bootloaders for PICs!!
Ttelmah



Joined: 11 Mar 2010
Posts: 19821

View user's profile Send private message

PostPosted: Wed May 07, 2025 7:46 am     Reply with quote

The code as posted:
Code:

#include <24EP512MC206.h>

#device PASS_STRINGS=IN_RAM
#device adc=12 *=16


#fuses NOJTAG, IESO, PROTECT, NODEBUG,OSCIO
#fuses NOWINDIS, NOIOL1WAY, IESO,FRC_PS//,FRC_PLL
#FUSES WDT                      //Watch Dog Timer
#FUSES WPRES128                  //Watch Dog Timer PreScalar 1:32
#FUSES WPOSTS16                 //Watch Dog Timer PostScalar 1:32768                                          15                                                                                                           // On-chip PLL setting
#use delay(clock=140000000,internal=140000000,restart_wdt)

#include <stdio.h>
#include <stdlib.h>

float version_num = 1.198;


void main(){
   
delay_cycles(1);
long int i;

}


Does not give the hex file you post, for me, on either OS. I get:
Code:

:080000000002040000000000F2
:100400000FF82700F0FF270020A0B7000000000031
:10041000C1E8A80034152000343A88007400200098
:10042000243A88004827EF000481250034808800A2
:1004300094F92300448088000E2EEF001E2EEF005A
:100440002E2EEF004E2EEF000030EF0000000000D7
:040450000040FE006A
:02000004000AF0
:10AFE000CFFFFF00FFFFFF00BFFFFF00DBFFFF0001
:10AFF000F9FFFF00FDFFFF00FFFFFF00FFFFFF0065
:00000001FF
;PIC24EP512MC206
;CRC=C1E5  CREATED="07-May-25 14:10"

With 5.118, In both environments. Which is not actually the correct
conversion for 1.198.
However trying some different numbers does intermittently give
different results between the configurations.
I suspect what is happening is that CCS somewhere in their code
is using an instruction sequence that Prism is not correctly emulating.
Now you could possibly try installing conventional Windows, rather than
Windows ARM, and running this inside an emulation. i did this a while
ago, when having another issue with Prism. Performance will drop,
but it may well let CCS work.
The details of how to do this are here:
[url]
https://www.intego.com/mac-security-blog/how-to-run-windows-11-for-free-on-an-m1-m2-m3-or-m4-mac/
[/url]
Look at the section about using emulate.
Key here is that you actually run Intel Windows, inside the emulation,
instead of running Windows ARM, and then emulating the app inside
this.
It looks as if at present the use of CCS inside the Prism emulation is
problematic. Sad
curt2go



Joined: 21 Nov 2003
Posts: 216

View user's profile Send private message

PostPosted: Wed May 07, 2025 8:52 am     Reply with quote

Thank you for looking into this.

Not really an option right now to rebuild in the windows emulation (x86) i did think about that before getting to the point I am at right now.

I have went back to my old computer for now.

Should I be pressing CCS to fix this bug? Or can they even fix this?

Thank you again for digging into this.
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Goto page Previous  1, 2
Page 2 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group