реклама на сайте
подробности

 
 
> Процедура вывода отладочной информации, (из FLASH)
west329_
сообщение Aug 13 2008, 08:22
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 10-09-07
Из: UKR/Voz
Пользователь №: 30 423



Хочу немного упростит процедуру вывода отладочной информации.

По класической схеме да и в моей программе отладочные строки типа "Ошибка", "Время вышло" описываются вначале программы с префиксом __flash вот так

Код
__flash unsigned char PPPerr1[14] = {"\x0D\x0A CRC Error\x0D\x0A"};



потом в самой программе я вызываю функцию вывода отладочной строки через указатель на первый символ этой строки
Код
#ifdef debugPPP
  PrintSTRfronFLASH( &PPPerr1[0], 14, DEBUG);     //CRC Error
#endif


все работает нормально но когда объемы исходного кода большие приходится каждый раз переходить в начало страницы и обявлять новые строки

Код
__flash unsigned char PPPerr...
__flash unsigned char PPPerr..
__flash unsigned char PPPerr..
__flash unsigned char PPPerr...



Возможно ли непостредственно в процедуре вызова обявлять выводимую строку ???
что подобное этому

Код
PrintSTRfronFLASHa( "\x0d Hello WORLD" , DEBUG);



У меня такое работает только если строка находится в SRAM, как только добавляю префикс
Код
__flash
пишет ошибку

Код
Error[Pe167]: argument of type "char *" is incompatible with  E:\RADIO\IAR4.21A\avr\tutor\Xbox4\main.c 87
parameter of type "unsigned char __flash *"



вот мои процедуры для
Код
void main(void);
void PrintDebug(unsigned char __flash stringD[25]);




void PrintDebug(unsigned char __flash stringD[25])
{
unsigned temp = 0;
  for(temp = 0; stringD[temp] != 0; temp += 1)
    putchar(stringD[temp], DEBUG);

}

void main(void)
{
PrintDebug("\x0d Hello WORLD");
while(1);
}


если такое возможно.
компилято IAR 4.20 for AVR

Сообщение отредактировал west329_ - Aug 13 2008, 08:26
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
IgorKossak
сообщение Aug 13 2008, 08:37
Сообщение #2


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



У компилятора есть такая опция --string_literals_in_flash, в документации EWAVR_CompilerReference.pdf подробно описано. Если работаете в среде, то добавьте эту опцию в Project->Options...->C/C++ Compiler->Extra Options
Go to the top of the page
 
+Quote Post
west329_
сообщение Aug 13 2008, 09:10
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 10-09-07
Из: UKR/Voz
Пользователь №: 30 423



Цитата(IgorKossak @ Aug 13 2008, 11:37) *
У компилятора есть такая опция --string_literals_in_flash, в документации EWAVR_CompilerReference.pdf подробно описано. Если работаете в среде, то добавьте эту опцию в Project->Options...->C/C++ Compiler->Extra Options


добавил. легче не стало
Код
Error[Pe167]: argument of type "char __farflash *" is incompatible  E:\RADIO\IAR4.21A\avr\tutor\Xbox4\main.c 87
with parameter of type "unsigned char *"


я вобще не использую встроенных функций библиотек ввода вывода они у меня свои может из за этого
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 09:17
Рейтинг@Mail.ru


Страница сгенерированна за 0.01503 секунд с 7
ELECTRONIX ©2004-2016