Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

2 MegaJohn - тема по IAR на Сахаре интересна, ни фига там не понял (сдабоват я в Сях) (+)

Отправлено oll (46.118.212.36) 28 сентября 2010, г. 19:57
В ответ на: BCB & AnsiString: как бы избавиться от одной строки ? [+] отправлено MegaJohn 28 сентября 2010, г. 18:04

Может не в тему -по константам во флэш IAR...
Одно время очень озадачило, что в IAR нельзя делать как в WinAVR:
для двухстрочного индикатора что-то типа - lcd_puts("No SD card...");
прототип - void lcd_puts(const char *s)

Нашел решение для IAR (содрано с AVRfreaks):
делаю так - LCD_Puts_FLASH("No SD card...");

прототип -
#define LCD_Puts_FLASH(s) {static __flash unsigned char str[] = s; LCD_Putsf(str);}

void LCD_Putsf(unsigned char __flash *str)
{
unsigned char temp;

while (temp=*str++)
LCD_Data(temp, 1);
}

// Запись в lcd: mode=0 команда, mode=1 данные
void LCD_Data(unsigned char data, unsigned char mode)
{
if (mode) {RS=1;} else {RS=0;}
EN=1;
D = (D & 0xF0) | (data >> 4); // старший ниббл
delay_us(lcd_delay);
EN=0;
delay_us(lcd_delay);
D = (D & 0xF0) | (data & 0x0F); // младший ниббл
EN=1;
delay_us(lcd_delay);
EN=0;
delay_us(lcd_delay*5);
}

вроде все работает - константы строковые во флеши.


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
увеличьте 6 на 2:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru