Available RAM: 240 [bytes], Available ROM: 4096 [bytes]
Compilation Started 690_SPI_converter.c
Generated baud rate is 9615 bps (error = 0.16 percent) 690_SPI_converter.c
Implicit conversion of int to ptr 690_SPI_converter.c
...
Implicit conversion of int to ptr 690_SPI_converter.c
Compiled Successfully 690_SPI_converter.c
All files Compiled in 63 ms
Not enough RAM '?lstr3_690_SPI_converter' 690_SPI_converter.c
Not enough RAM '?lstr8_690_SPI_converter' 690_SPI_converter.c
Not enough RAM '?lstr7_690_SPI_converter' 690_SPI_converter.c
Not enough RAM '?lstr9_690_SPI_converter' 690_SPI_converter.c
Not enough RAM 'buffer_receive' 690_SPI_converter.c
Not enough RAM 'buffer_send' 690_SPI_converter.c
Finished (with errors): 10 mar 2017, 13:10:27 690_SPI_converter.mcppi
UART1_Write_Text("WELCOME TO CC1101 PROGRAMMING INTERFACE\n\n");
UART1_Write_Text("Enter desired action. Possible commands are:\n");
UART1_Write_Text(" INFO - Returns partnumber from connected CC1101\n");
UART1_Write_Text(" STATUS - Returns current status of the connected CC1101\n");
UART1_Write_Text(" SEND_BYTE - Allows you to send single byte to specific register\n");
UART1_Write_Text(" SEND_BURST - Allows you to send burst data to a span of registers\n\n");
UART1_Write_Text("Command: ");
const unsigned char* Text_Welcome = "WELCOME TO CC1101 PROGRAMMING INTERFACE\n\n";
const unsigned char* Text_Desired = "Enter desired action. Possible commands are:\n";
const unsigned char* Text_info = " INFO - Returns partnumber from connected CC1101\n";
const unsigned char* Text_Status = " STATUS - Returns current status of the connected CC1101\n";
const unsigned char* Text_Send_Byte = " SEND_BYTE - Allows you to send single byte to specific register\n";
const unsigned char* Text_Send_Burst = " SEND_BURST - Allows you to send burst data to a span of registers\n\n";
const unsigned char* Text_Command = "Command: ");
UART1_Write_Text(Text_Welcome);
UART1_Write_Text(Text_Desired);
UART1_Write_Text(Text_Info);
UART1_Write_Text(Text_Status);
UART1_Write_Text(Text_Send_Byte);
UART1_Write_Text(Text_Send_Burst);
UART1_Write_Text(Text_Command);
Din plattform verkar helt klart tycka att short ska lagras i en byte så det är inte konstigt att det inte gav någon skillnad.
Men, detta med strängkonstanter som bara ska skrivas ut: i AVR GCC kan man välja att lägga slikt i _flash_minnet istället för i RAM, det spar en hel del.
void send_string( const char* s )
{
for(unsigned char b=pgm_read_byte(s); b; b=pgm_read_byte(++s))
send_byte(b);
}
...
send_string(PSTR("*** Eurofire Control 1.0 ***"));
Det är alltså makrot PSTR() som placerar strängkonstanten i _flash_ istället och inte i RAM. Sedan läser ut man ut den, byte för byte (i en loop ) med pgm_read_byte().
Jag förmodar att man kan göra något liknande i din kompilator?!
Edit: lite sen på den, såg inte de andra svaren innan.
signed char 8 Signed integer
unsigned char 8 Unsigned integer
signed short 16 Signed integer
unsigned short 16 Unsigned integer
Om det finns en "unsigned char" i MikroC så kan den vara
bättre med tanke på eventuell portning senare till XC8.
Och koden blir mer "standard" för alla andra...
Hmm plattform? Jag använder MikroC Pro for PIC som program och den har en inbyggd kompilator. MCU:n är en PIC16F690.
Testade enligt din version Icecap men får felet Illegal pointer conversion på varje rad som ser ut som UART1_Write_Text(Text_Welcome);.
Vet inte vad det kan vara men ska söka lite på det. Får dock ingen som helst antydan till att jag håller på att få slut på RAM.
Har för mig att constants sparas i ROM i stället för RAM, och ROM har jag nog gott om.
Ska se om jag hittar något bra i hjälpfilen om att spara i flash.
Nu är varnar den i stället för Suspicious pointer conversion och forsätter varna för RAM:et. Det är nog andra saker som orsakar varningen än dessa strängar.
Äsch, får nog tänka om med hela programmet. Försökte göra ett användarvänligt gränssnitt men fixar nog inte det med mina kunskaper.