Easyelectronics.ru

Электроника для всех
Текущее время: 23 авг 2017, 20:47

Часовой пояс: UTC + 5 часов



    • JLCPCB for PCB Prototyping: 10 шт. 2-слоя 100*100mm 2$(около 140rub), изготовление за 24 часа.
    • Создание принципиальных схем и проектирование печатных плат
    • Крупнейший китайский онлайн магазин радиодеталей. Скидка 50%
    • Просмотр GERBER файлов

Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Вывод данных __flash и __eeprom в printf
СообщениеДобавлено: 11 авг 2017, 14:54 
Старожил

Зарегистрирован: 23 авг 2014, 11:01
Сообщения: 451
Привет.
Возникла проблема с выводом строки из флешь и eeprom в printf.
Пример. Создаем строки во флешь и eeprom.
Код:
__flash char StrResetEEProm[] =  " RST USER RECORD";
char __eeprom ee_NumD[12] = {'N','0','0','0','0','0','0','0','0','0','1',0};

После передаем их на дисплей с помощью printf("%s",RST USER RECORD); и printf("%s",ee_NumD); .А в итоге процессор зависает на printf("%s",StrResetEEProm);.
Вот весь проект.
Show


Последний раз редактировалось zhilenkov 12 авг 2017, 19:14, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вывод данных __flash и __eeprom в printf
СообщениеДобавлено: 11 авг 2017, 15:12 
Старожил
Аватара пользователя

Зарегистрирован: 13 дек 2010, 23:15
Сообщения: 1641
Откуда: Киев
Для строк в памяти надо юзать специальную реализацию функции printf_P если память не изменяет.
Либо сначала их копировать в РАМ.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вывод данных __flash и __eeprom в printf
СообщениеДобавлено: 11 авг 2017, 17:59 
Старожил

Зарегистрирован: 23 авг 2014, 11:01
Сообщения: 451
printf_P очень много жрет памяти. Можете дать алгоритм копирования строки в RAM?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вывод данных __flash и __eeprom в printf
СообщениеДобавлено: 11 авг 2017, 19:44 
Старожил

Зарегистрирован: 25 фев 2011, 18:45
Сообщения: 3304
Откуда: Новосибирск
Обязательно через стандартные библиотеки? Может самописный вывод?
У меня вывод в буфер. На дисплей выводится посимвольно, раз в 1 мс.
Код:
void _Print_Buf (u08 x, char __flash *data);
#define Print_Buf(x, data) _Print_Buf(((x)-1), (data))

void _Print_Buf (u08 x, char __flash *data)
{
   for (u08 i = 0; data [i] != 0;)
   {
      dsp_buf [x++] = data [i++];
   }

//   init_dsp_buf ();
}

   Print_Buf (1, 8, "ДАТЧИК");        // Вариант для дисплея XXx2.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вывод данных __flash и __eeprom в printf
СообщениеДобавлено: 11 авг 2017, 21:27 
Старожил

Зарегистрирован: 18 июл 2016, 21:17
Сообщения: 433
Signaller писал(а):
Для строк в памяти надо юзать специальную реализацию функции printf_P если память не изменяет.
Либо сначала их копировать в РАМ.

Так у автора вроде IAR, а не AVR-GCC.
В иаре printf нормально печатает строки из flash памяти. Из eeprom я не пробовал.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вывод данных __flash и __eeprom в printf
СообщениеДобавлено: 11 авг 2017, 21:29 
Старожил

Зарегистрирован: 18 июл 2016, 21:17
Сообщения: 433
Вот эта строчка не понравилась printf("%s",RST USER RECORD);. На нее компилятор не ругался?
И зачем таблица перекодировки символов? ИАР в своей кодировке нормально кодирует (или у вас какая то старая версия?)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вывод данных __flash и __eeprom в printf
СообщениеДобавлено: 12 авг 2017, 19:13 
Старожил

Зарегистрирован: 23 авг 2014, 11:01
Сообщения: 451
А не то показал. printf("%s",StrResetEEProm);. Вот на этой строки зависает программа. Ну и с eeprom тоже самое printf("%s",ee_NumD); У дисплея своя кодировка русского.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB