Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
Может не в тему -по константам во флэш 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);
}
вроде все работает - константы строковые во флеши.
Составить ответ | Вернуться на конференцию
Ответы