| View previous topic :: View next topic | 
	
	
		| Author | Message | 
	
		| Douglas Richard 
 
 
 Joined: 08 Sep 2003
 Posts: 49
 Location: Concord NH
 
 
			        
 
 | 
			
				| PCH pointers |  
				|  Posted: Mon Oct 28, 2002 3:00 pm |   |  
				| 
 |  
				| Got the following code for the PCH compiler (18F248): 
 #define start_node_address 0X200
 #define end_node_address   0X2FF
 
 int *node_info;
 
 node_info = start_node_address;
 
 The above code will not compile and I will get this error:
 
 Constant out of the valid range
 
 If I do the following it will compile:
 
 #define start_node_address 0X100
 #define end_node_address   0X1FF
 
 OR if I do this it will compile:
 
 int32 *node_info;
 
 long int *node_info; will not compile.
 
 The above solutions are no solutions at all.  I want to use the memory from 200 to 2FF and I believe int32 *node_info will give me a pointer to a double (instead of an interger).
 
 any thoughts.
 ___________________________
 This message was ported from CCS's old forum
 Original Post ID: 8247
 |  | 
	
		|  | 
	
		| Mark 
 
 
 Joined: 07 Sep 2003
 Posts: 2838
 Location: Atlanta, GA
 
 
			      
 
 | 
			
				| Re: PCH pointers |  
				|  Posted: Mon Oct 28, 2002 3:22 pm |   |  
				| 
 |  
				| :=Got the following code for the PCH compiler (18F248): :=
 :=    #define start_node_address 0X200
 :=    #define end_node_address   0X2FF
 :=
 :=    int *node_info;
 :=
 :=    node_info = start_node_address;
 :=
 :=The above code will not compile and I will get this error:
 :=
 :=    Constant out of the valid range
 :=
 :=If I do the following it will compile:
 :=
 :=    #define start_node_address 0X100
 :=    #define end_node_address   0X1FF
 :=
 :=OR if I do this it will compile:
 :=
 :=    int32 *node_info;
 :=
 :=long int *node_info; will not compile.
 :=
 :=The above solutions are no solutions at all.  I want to use the memory from 200 to 2FF and I believe int32 *node_info will give me a pointer to a double (instead of an interger).
 :=
 :=any thoughts.
 :=
 ___________________________
 This message was ported from CCS's old forum
 Original Post ID: 8249
 |  | 
	
		|  | 
	
		| Carlos Barberis Guest
 
 
 
 
 
 
 
			
			
			
			
			
			
			
			
			
 
 | 
			
				| Re: PCH pointers |  
				|  Posted: Mon Oct 28, 2002 4:16 pm |   |  
				| 
 |  
				| Pointers to constants are not permitted, see pg 51 of CCS manual :=Got the following code for the PCH compiler (18F248):
 :=
 :=    #define start_node_address 0X200
 :=    #define end_node_address   0X2FF
 :=
 :=    int *node_info;
 :=
 :=    node_info = start_node_address;
 :=
 :=The above code will not compile and I will get this error:
 :=
 :=    Constant out of the valid range
 :=
 :=If I do the following it will compile:
 :=
 :=    #define start_node_address 0X100
 :=    #define end_node_address   0X1FF
 :=
 :=OR if I do this it will compile:
 :=
 :=    int32 *node_info;
 :=
 :=long int *node_info; will not compile.
 :=
 :=The above solutions are no solutions at all.  I want to use the memory from 200 to 2FF and I believe int32 *node_info will give me a pointer to a double (instead of an interger).
 :=
 :=any thoughts.
 :=
 ___________________________
 This message was ported from CCS's old forum
 Original Post ID: 8251
 |  | 
	
		|  | 
	
		| Mark 
 
 
 Joined: 07 Sep 2003
 Posts: 2838
 Location: Atlanta, GA
 
 
			      
 
 | 
			
				| Re: PCH pointers |  
				|  Posted: Mon Oct 28, 2002 6:42 pm |   |  
				| 
 |  
				| He is not doing a pointer to a constant. A pointer to a constant would be something like this:
 
 char const mystring[6]={"Hello"}
 ptr = mystring;
 
 He is only assigning an address.
 
 Regards,
 Mark
 
 :=Pointers to constants are not permitted, see pg 51 of CCS manual
 :=:=Got the following code for the PCH compiler (18F248):
 :=:=
 :=:=    #define start_node_address 0X200
 :=:=    #define end_node_address   0X2FF
 :=:=
 :=:=    int *node_info;
 :=:=
 :=:=    node_info = start_node_address;
 :=:=
 :=:=The above code will not compile and I will get this error:
 :=:=
 :=:=    Constant out of the valid range
 :=:=
 :=:=If I do the following it will compile:
 :=:=
 :=:=    #define start_node_address 0X100
 :=:=    #define end_node_address   0X1FF
 :=:=
 :=:=OR if I do this it will compile:
 :=:=
 :=:=    int32 *node_info;
 :=:=
 :=:=long int *node_info; will not compile.
 :=:=
 :=:=The above solutions are no solutions at all.  I want to use the memory from 200 to 2FF and I believe int32 *node_info will give me a pointer to a double (instead of an interger).
 :=:=
 :=:=any thoughts.
 :=:=
 ___________________________
 This message was ported from CCS's old forum
 Original Post ID: 8255
 |  | 
	
		|  | 
	
		| R.J.Hamlett Guest
 
 
 
 
 
 
 
			
			
			
			
			
			
			
			
			
 
 | 
			
				| Re: PCH pointers |  
				|  Posted: Tue Oct 29, 2002 3:15 am |   |  
				| 
 |  
				| :=Got the following code for the PCH compiler (18F248): :=
 :=    #define start_node_address 0X200
 :=    #define end_node_address   0X2FF
 :=
 :=    int *node_info;
 :=
 :=    node_info = start_node_address;
 :=
 :=The above code will not compile and I will get this error:
 :=
 :=    Constant out of the valid range
 :=
 :=If I do the following it will compile:
 :=
 :=    #define start_node_address 0X100
 :=    #define end_node_address   0X1FF
 :=
 :=OR if I do this it will compile:
 :=
 :=    int32 *node_info;
 :=
 :=long int *node_info; will not compile.
 :=
 :=The above solutions are no solutions at all.  I want to use the memory from 200 to 2FF and I believe int32 *node_info will give me a pointer to a double (instead of an interger).
 :=
 :=any thoughts.
 :=
 You don't say which compiler version. I suspect this is a version of a fault I had with the CCS compiler, which has now (largely) been fixed, where if I generated pointers to an integer, I found the compiler generating 8 bit pointers. However if I generated pointers to int16 values, it used a 16bit pointer, and if I went to using pointers to int32 values it used 32bit pointers!.
 This was fixed a while ago, but when I ran into this problem, I found the fault only affected certain pointer operations, so I could 'code round' the problem, by declaring my pointers to be to a larger data type, and then casting the resulting pointer to the right type in use.
 So something like:
 
 int32 *node_info;
 node_info=start_node_address;
 
 Then when I wanted to use the pointer, employing:
 
 val=(int *)start_node_address;
 
 The only problem with this, is that address arithmetic, then doesn't follow the normal rules...
 
 Best Wishes
 ___________________________
 This message was ported from CCS's old forum
 Original Post ID: 8267
 |  | 
	
		|  | 
	
		| Mark 
 
 
 Joined: 07 Sep 2003
 Posts: 2838
 Location: Atlanta, GA
 
 
			      
 
 | 
			
				| Re: PCH pointers |  
				|  Posted: Tue Oct 29, 2002 6:49 am |   |  
				| 
 |  
				| I know I typed a response but here is what I found. 
 The compiler would not allow a value greater than 0x1FF.
 However this works great
 
 #byte start_node = 0x200
 #define start_node_address &start_node
 #define end_node_address   &start_node + 0xFF
 int *node_info;
 
 node_info = start_node_address;
 
 
 :=:=Got the following code for the PCH compiler (18F248):
 :=:=
 :=:=    #define start_node_address 0X200
 :=:=    #define end_node_address   0X2FF
 :=:=
 :=:=    int *node_info;
 :=:=
 :=:=    node_info = start_node_address;
 :=:=
 :=:=The above code will not compile and I will get this error:
 :=:=
 :=:=    Constant out of the valid range
 :=:=
 :=:=If I do the following it will compile:
 :=:=
 :=:=    #define start_node_address 0X100
 :=:=    #define end_node_address   0X1FF
 :=:=
 :=:=OR if I do this it will compile:
 :=:=
 :=:=    int32 *node_info;
 :=:=
 :=:=long int *node_info; will not compile.
 :=:=
 :=:=The above solutions are no solutions at all.  I want to use the memory from 200 to 2FF and I believe int32 *node_info will give me a pointer to a double (instead of an interger).
 :=:=
 :=:=any thoughts.
 :=:=
 ___________________________
 This message was ported from CCS's old forum
 Original Post ID: 8268
 |  | 
	
		|  | 
	
		|  |