Эта музыка будет вечной ... Теперь такая ситуация:
Все строки во флеше обьявлены вот так:
Код: Выделить всё
const char AT[] PROGMEM = "AT\r\n";
const char OK[] PROGMEM = "OK\r\n";
const char ATE0[] PROGMEM = "ATE0\r\n";
const char ATV0[] PROGMEM = "ATV0\r\n";
Есть функция парсинга строки:
Спойлер
Код: Выделить всё
// Парсинг строки ==================
char Parsing(char *string, unsigned int parsing_delay)// На входе указатель на 1 символ строки, и время парсинга строки
{
unsigned char temp;
parsing_result = 0; // Начинаем парсинг с обнуления успешного парсинга/устранения ошибки парсинга
parsing_pointer = string; // Копируем указатель на 1 сивол строки, которую будем парсить в глобальную переменную
temp = UDR; // Читаем приемник, чтобы сбросить флаг прерывания от всякого мусора, который там был до этого
UCSRB |= 1<<RXCIE; // Разрешаем прерывание по приходу байта - парсинг начался
while(parsing_result != 1) // Ждем успешного окончания, либо ошибки парсинга
{
_delay_ms(1);
parsing_delay--;
if (parsing_delay == 0) // Если время парсинга вышло
{
UCSRB &= ~(1<<RXCIE); // Запрещаем прерывание по приходу байта, чтобы не отвлекаться на всякую дрянь
return 2; // И вываливаемся из цикла с ошибкой парсинга
}
}
return 1;
}
Прототип обявлен соответственно:
Код: Выделить всё
char Parsing(char *string, unsigned int parsing_delay);
Имею warning: passing argument 1 of 'Parsing' discards 'const' qualifier from pointer target type [enabled by default]
Вроде все понятно, как и в предыдущий раз добавляю const в прототип, получая
Код: Выделить всё
char Parsing(const char *string, unsigned int parsing_delay);
и в саму функцию (код не привожу, понятно что меняеться только в "шапке").
И получаю уже другой warning: assignment discards 'const' qualifier from pointer target type [enabled by default] на строчке функции парсинга
Как побороть этот порочный круг ?

П.С. Как всегда, написал, и только тогда понял как. Надо переменную обявить как
Верно ? Просто для меня это как-то нелогично, к переменной приписывать атрибут const
