Jump to content
begun

помогите с программой в cvavr

Recommended Posts

здравствуйте,

есть программа для протеусовского дисплея с контроллером sed1520 на cvavr, которая четко работает в протеусе, но открыл исходник в cvavr 3.12,
скомпелир и выдает 2 error.
---------------------------------------------

#include ‹mega32.h›
#include ‹delay.h›
#include "sed1520.h"
#include "sed1520.c"
#define DELAY 2 /* hundrets of milliseconds (20 -› 2s) */

/* update display (framebuffer to LCD-RAM and delay for t*100 ms */
void demo_upd_delay(unsigned char t)
{ unsigned char i;

lcd_update_all();
for (i=0; i‹t; i++)
{ delay_ms(50);
delay_ms(50);
};
}
void main(void)
{
// Declare your local variables here
unsigned char a,b;

lcd_init(); /* initialize display */

while (1)
{ lcd_erase(); // clear display

// single dots
lcd_dot_set(0,0);
lcd_dot_set(121,0);
lcd_dot_set(0,31);
lcd_dot_set(121,31);
lcd_dot_set(60,15);
demo_upd_delay(DELAY);


//Рамка
lcd_rect(0,0,122,32,LCD_MODE_SET);
lcd_rect(2,2,118,28,LCD_MODE_SET);


//Диагональ

lcd_line(2,2,119,29,LCD_MODE_SET);
lcd_line(119,1,1,29,LCD_MODE_SET);
demo_upd_delay(DELAY);

lcd_erase();

for (a=5;a‹=8;a++) { lcd_circle(60,15,a,LCD_MODE_SET);
demo_upd_delay(DELAY);
lcd_circle(60,15,a,LCD_MODE_CLEAR);
};


// text and fonts

// Пишем русским шрифтом
//Это первая строка клавиатуры
lcd_erase();
lcd_text_p(0,0,&rus_shot,"Ghbdtn dctv! Ehf!!");
lcd_text_p(0,8,&rus_shot,"qwertyuiop[]\\");
lcd_text_p(0,16,&rus_shot,"QWERTYUIOP{}|");
demo_upd_delay(DELAY);
//Вторая строка клавиатуры
lcd_erase();
lcd_text_p(0,8,&rus_shot,"ASDFGHJKL:""");
lcd_text_p(0,16,&rus_shot,"asdfghjkl;'");
demo_upd_delay(DELAY);
//Третья строка клавиатуры
lcd_erase();
lcd_text_p(0,8,&rus_shot,"ZXCVBNM‹›?");
lcd_text_p(0,16,&rus_shot,"zxcvbnm,./");
demo_upd_delay(DELAY);
//Строка с цифрами и доп знаками
lcd_erase();
lcd_text_p(0,8,&rus_shot,"`1234567890-=");
lcd_text_p(0,16,&rus_shot,"~!@#$%^&*()_+ вне таблицы");
demo_upd_delay(DELAY);

//Латинский шрифт
lcd_erase();
//lcd_text_p(0,0,&FONT_FIVE_DOT,"qwertyuiopasdfghjkl ");
lcd_text_p(0,8,&FONT_SEVEN_DOT,"qwertyuiopasdfghjk l");
demo_upd_delay(DELAY);

// inverse
lcd_box(2,2,118,28,LCD_MODE_XOR);
demo_upd_delay(DELAY);

// Большой шрифт for a clock
lcd_erase();
lcd_text_p(4,7,&FONT_EIGHTEEN_DOT,"12:34:56");
demo_upd_delay(DELAY);

// fonts & inverse
//lcd_text(5,0,FONT_NINE_DOT,"EW12A03GLY");
lcd_erase();
lcd_text_p(5,16,&FONT_SEVEN_DOT,"Proteus VSM");
demo_upd_delay(DELAY);
lcd_box(0,0,SCRN_RIGHT+1,SCRN_BOTTOM+1,LCD_MODE_XO R);
demo_upd_delay(DELAY);
lcd_box(0,0,SCRN_RIGHT+1,SCRN_BOTTOM+1,LCD_MODE_XO R);
demo_upd_delay(DELAY);

// bitmap
lcd_erase();
lcd_bitmap(90, 1, &icon1_bmp, LCD_MODE_SET);
demo_upd_delay(DELAY);

lcd_erase();
lcd_bitmap(0, 0, &frame_bmp, LCD_MODE_SET);
demo_upd_delay(DELAY);

lcd_erase();
lcd_bitmap(0, 0, &icon_aist, LCD_MODE_SET);
demo_upd_delay(DELAY);
};

}
---------------------------------------------------------
после компиляции два ерора

------------------------------------------------------------
нашел программу для протеусовского дисплея с контроллером sed1520 на cvavr которая четко работает в протеусе но открыл исходник в cvavr 3.12
скомпелир и выдает 2 error.
---------------------------------------------

#include ‹mega32.h›
#include ‹delay.h›
#include "sed1520.h"
#include "sed1520.c"
#define DELAY 2 /* hundrets of milliseconds (20 -› 2s) */

/* update display (framebuffer to LCD-RAM and delay for t*100 ms */
void demo_upd_delay(unsigned char t)
{ unsigned char i;

lcd_update_all();
for (i=0; i‹t; i++)
{ delay_ms(50);
delay_ms(50);
};
}
void main(void)
{
// Declare your local variables here
unsigned char a,b;

lcd_init(); /* initialize display */

while (1)
{ lcd_erase(); // clear display

// single dots
lcd_dot_set(0,0);
lcd_dot_set(121,0);
lcd_dot_set(0,31);
lcd_dot_set(121,31);
lcd_dot_set(60,15);
demo_upd_delay(DELAY);


//Рамка
lcd_rect(0,0,122,32,LCD_MODE_SET);
lcd_rect(2,2,118,28,LCD_MODE_SET);


//Диагональ

lcd_line(2,2,119,29,LCD_MODE_SET);
lcd_line(119,1,1,29,LCD_MODE_SET);
demo_upd_delay(DELAY);

lcd_erase();

for (a=5;a‹=8;a++) { lcd_circle(60,15,a,LCD_MODE_SET);
demo_upd_delay(DELAY);
lcd_circle(60,15,a,LCD_MODE_CLEAR);
};


// text and fonts

// Пишем русским шрифтом
//Это первая строка клавиатуры
lcd_erase();
lcd_text_p(0,0,&rus_shot,"Ghbdtn dctv! Ehf!!");
lcd_text_p(0,8,&rus_shot,"qwertyuiop[]\\");
lcd_text_p(0,16,&rus_shot,"QWERTYUIOP{}|");
demo_upd_delay(DELAY);
//Вторая строка клавиатуры
lcd_erase();
lcd_text_p(0,8,&rus_shot,"ASDFGHJKL:""");
lcd_text_p(0,16,&rus_shot,"asdfghjkl;'");
demo_upd_delay(DELAY);
//Третья строка клавиатуры
lcd_erase();
lcd_text_p(0,8,&rus_shot,"ZXCVBNM‹›?");
lcd_text_p(0,16,&rus_shot,"zxcvbnm,./");
demo_upd_delay(DELAY);
//Строка с цифрами и доп знаками
lcd_erase();
lcd_text_p(0,8,&rus_shot,"`1234567890-=");
lcd_text_p(0,16,&rus_shot,"~!@#$%^&*()_+ вне таблицы");
demo_upd_delay(DELAY);

//Латинский шрифт
lcd_erase();
//lcd_text_p(0,0,&FONT_FIVE_DOT,"qwertyuiopasdfghjkl ");
lcd_text_p(0,8,&FONT_SEVEN_DOT,"qwertyuiopasdfghjk l");
demo_upd_delay(DELAY);

// inverse
lcd_box(2,2,118,28,LCD_MODE_XOR);
demo_upd_delay(DELAY);

// Большой шрифт for a clock
lcd_erase();
lcd_text_p(4,7,&FONT_EIGHTEEN_DOT,"12:34:56");
demo_upd_delay(DELAY);

// fonts & inverse
//lcd_text(5,0,FONT_NINE_DOT,"EW12A03GLY");
lcd_erase();
lcd_text_p(5,16,&FONT_SEVEN_DOT,"Proteus VSM");
demo_upd_delay(DELAY);
lcd_box(0,0,SCRN_RIGHT+1,SCRN_BOTTOM+1,LCD_MODE_XO R);
demo_upd_delay(DELAY);
lcd_box(0,0,SCRN_RIGHT+1,SCRN_BOTTOM+1,LCD_MODE_XO R);
demo_upd_delay(DELAY);

// bitmap
lcd_erase();
lcd_bitmap(90, 1, &icon1_bmp, LCD_MODE_SET);
demo_upd_delay(DELAY);

lcd_erase();
lcd_bitmap(0, 0, &frame_bmp, LCD_MODE_SET);
demo_upd_delay(DELAY);

lcd_erase();
lcd_bitmap(0, 0, &icon_aist, LCD_MODE_SET);
demo_upd_delay(DELAY);
};

}
---------------------------------------------------------
после компиляции два ерора;

------------------------------------------------------------
Error: D:\LCD-all info\sed1520\SED1520 for CVAVR\sed1520.h(61), #included from: main_sokol.c: storage modifier not allowed in this context
----------------------------------------------------
Error: D:\LCD-all info\sed1520\SED1520 for CVAVR\sed1520.h(72), #included from: main_sokol.c: storage modifier not allowed in this context
----------------------------------------------
и что интересно в двух строчек
в начале программы ,sed1520.h и sed1520.c они синего цвета.может это на что то указывает.

#include "sed1520.h"
#include "sed1520.c"-

Share this post


Link to post
Share on other sites

для чего вы сишный файл указали в инклюде?

ЗЫ выкладывая код пользуйтесь тегами CODE <> панели сообщений
ЗЫЫ

Share this post


Link to post
Share on other sites

Изготовление 2-х слойных плат от 2$, а 4-х слойных от 5$!

Быстрое изготовление прототипа платы всего за 24 часа! Прямая доставка с нашей фабрики!

Смотрите видео о фабрике JLCPCB: https://youtu.be/_XCznQFV-Mw

Посетите первую электронную выставку JLCPCB https://jlcpcb.com/E-exhibition чтобы получить купоны и выиграть iPhone 12, 3D-принтер и так далее...

добрый день

дело как раз в том что если бы прогу написал я и вопросов бы не было

этот исходник с инета и с саита которого наверно уже нет

потому и не разобрался опираясь на свои знания

надежда на знающих и более подготовленных

а что сишник мешает в компиляции?

Share this post


Link to post
Share on other sites

Высокая надежность SiC! Как они этого добились?

За несколько лет кропотливых исследований и совершенствования технологии компания Infineon смогла довести показатели надежности и стабильности параметров высоковольтных и быстродействующих карбид-кремниевых транзисторов линейки CoolSiC практически до уровня их кремниевых собратьев.

Подробнее

Материалы вебинара «STM32L5. Секреты оценки энергопотребления»

Опубликованы запись и материалы вебинара КОМПЭЛ, посвященного первому семейству МК STM32L5 на ядре Cortex-M33. На вебинаре было рассказано о самых распространенных ошибках при расчете энергопотребления микроконтроллеров и о специальном тесте ULPMark, позволяющем дать наиболее объективную оценку энергоэффективности. Измерения проводились на демонстрационной платформе STM32L562E-DK.

Подробнее

/* equate the LCD Controller control signals to their port assignments */
#define LCDDATAPORT  PORTA
#define LCDDATADDR   DDRA
#define LCDCTRLPORT  PORTB
#define LCDCTRLDDR   DDRB
#define LCDCMDPIN    0
#define LCDE1PIN     1
#define LCDE2PIN     2
/* draw modes */
#define LCD_MODE_CLEAR     0
#define LCD_MODE_SET       1
#define LCD_MODE_XOR       2
/* command function equates for SED1520 LCD Display Controller */
#define LCD_DISP_OFF       0xAE    /* turn LCD panel OFF */
#define LCD_DISP_ON        0xAF    /* turn LCD panel ON */
#define LCD_SET_LINE       0xC0    /* set line for COM0 (4 lsbs = ST3:ST2:ST1:ST0) */
#define LCD_SET_PAGE       0xB8    /* set page address (2 lsbs = P1:P0) */
#define LCD_SET_COL        0x00    /* set column address (6 lsbs = Y4:Y4:Y3:Y2:Y1:Y0) */
#define LCD_SET_ADC_NOR    0xA0    /* ADC set for normal direction */
#define LCD_SET_ADC_REV    0xA1    /* ADC set for reverse direction */
#define LCD_STATIC_OFF     0xA4    /* normal drive */
#define LCD_STATIC_ON      0xA5    /* static drive (power save) */
#define LCD_DUTY_16        0xA8    /* driving duty 1/16 */
#define LCD_DUTY_32        0xA9    /* driving duty 1/32 */
#define LCD_SET_MODIFY     0xE0    /* start read-modify-write mode */
#define LCD_CLR_MODIFY     0xEE    /* end read-modify-write mode */
#define LCD_RESET          0xE2    /* soft reset command */
/* LCD screen and bitmap image array consants */
#define LCD_X_BYTES        122
#define LCD_Y_BYTES        4
#define SCRN_LEFT        0
#define SCRN_TOP        0
#define SCRN_RIGHT        121
#define SCRN_BOTTOM        31
/* pixel level bit masks for display */
/* this array is setup to map the order */
/* of bits in a byte to the vertical order */
/* of bits at the LCD controller */
/* control-lines hardware-interface (only "write") */
#define LCD_CMD_MODE()     LCDCTRLPORT &= ~(1<<LCDCMDPIN)
#define LCD_DATA_MODE()    LCDCTRLPORT |=  (1<<LCDCMDPIN)
#define LCD_ENABLE_E1()    LCDCTRLPORT &= ~(1<<LCDE1PIN)
#define LCD_DISABLE_E1()   LCDCTRLPORT |=  (1<<LCDE1PIN)
#define LCD_ENABLE_E2()    LCDCTRLPORT &= ~(1<<LCDE2PIN)
#define LCD_DISABLE_E2()   LCDCTRLPORT |=  (1<<LCDE2PIN)
//Для совместимости с GNU 
//#define pgm_read_byte(x)         (*((unsigned char flash *)(x)))
//#define pgm_read_word(x)         (*((unsigned short flash *)(x)))

/* SED1520 is used with reverse direction (ADC_REV). 
   This value is the address of the leftmost column: */

#define LCD_STARTCOL_REVERSE    19
//***********************************************************************************************************
// for "NULL":
#ifndef NULL
#define NULL 0  
#endif
// Определение структур
flash struct FONT_DEF    // для шрифтов
 {  flash unsigned char store_width;             /* glyph storage width in bytes */   =============   61 =====
    flash unsigned char glyph_height;               /* glyph height for storage */
    flash unsigned char *glyph_table;            /* font table start address in memory */
    flash unsigned char fixed_width;             /* fixed width of glyphs. If zero */
                                                 /* then use the width table. */
    flash unsigned char *width_table;              /* variable width table start adress */
    flash unsigned char glyph_beg;                  /* start ascii offset in table */
    flash unsigned char glyph_end;                 /* end ascii offset in table */
    flash unsigned char glyph_def;                 /* code for undefined glyph code */
};
flash struct IMG_DEF    // для картинки 
 { flash unsigned char width_in_pixels;      /* Image width */     ====================  72=======
   flash unsigned char height_in_pixels;     /* Image height*/
   flash unsigned char *char_table;    /* Image table start address in memory  */
 };
//Выбрать нужные шрифты
//#include "FONT/FONT_FIVE_DOT.h"
//#include "FONT/FONT_SIX_DOT.h"
#include "FONT/FONT_SEVEN_DOT.h"
#include "FONT/FONT_EIGHTEEN_DOT.h"
//#include "FONT/FONT_NINE_DOT.h"
//#include "FONT/FONT_TEN_DOT.h"
//#include "FONT/FONT_FIFTEEN_DOT.h"
#include "FONT/rus_shot.h"
  
//Вставим картинки если нужно
#include "ICON/icon1_bmp.h"
#include "ICON/aist.h"
#include "ICON/frame_bmp.h"

//***********************************************************************************************************


// LCD Global data arrays
/* the LCD display image memory */
flash unsigned char l_mask_array[8] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; /* TODO: avoid or flash */

/* buffer arranged so page memory is sequential in RAM */
unsigned char l_display_array[LCD_Y_BYTES][LCD_X_BYTES];

/* LCD function prototype list */
void lcd_init(void);
void lcd_out_dat( unsigned char dat, unsigned char nctrl);
void lcd_out_ctl(unsigned char cmd,  unsigned char nctrl);
void lcd_fill( unsigned char pattern);
void lcd_erase(void);
void lcd_update( unsigned char top, unsigned char bottom);
void lcd_update_all(void);
void lcd_dot(unsigned char x,unsigned char y,unsigned char mode);

#define lcd_dot_set(x,y)    lcd_dot(x, y, LCD_MODE_SET)
#define lcd_dot_clear(x,y)  lcd_dot(x, y, LCD_MODE_CLEAR);
#define lcd_dot_switch(x,y) lcd_dot(x, y, LCD_MODE_XOR);

void lcd_line(unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2, unsigned char pixel);

void lcd_rect( unsigned char x, unsigned char y, unsigned char width, unsigned char height,unsigned char mode);
void lcd_box(unsigned char x, unsigned char y, unsigned char width, unsigned char height,  unsigned char mode);
void lcd_circle(unsigned int xCenter,unsigned int yCenter,unsigned int radius,  unsigned char mode);
void lcd_glyph(unsigned char left, unsigned char top, unsigned char width, unsigned char height, unsigned char *glyph_ptr, unsigned char store_width);

void lcd_text_intern(unsigned char left, unsigned char top, flash struct FONT_DEF *FNT,flash char *str, unsigned char inflash);
void lcd_text_p(unsigned char left, unsigned char top, flash struct FONT_DEF *FNT,flash char *str);

#define lcd_text_P(lcdl_,lcdt_,lcdf_,lcds_)  lcd_text_p(lcdl_,lcdt_,lcdf_,PSTR(lcds_))

void lcd_bitmap(unsigned char left,unsigned char top, flash struct IMG_DEF *img_ptr,unsigned char mode);

//LCD_DEBUG
void lcd_test(unsigned char pattern);
void lcd_raw(unsigned char page, unsigned char col, unsigned char nctrl, unsigned char pattern);

Share this post


Link to post
Share on other sites

Снижена цена на AC/DC и DC/DC преобразователи Mornsun в Компэл!

Компэл и компания Mornsun снизили цены на преобразователи AC/DC-преобразователи семейств LS и LDE. По привлекательной цене также предлагаются DC/DC-преобразователи изолированных семейств поколений R2 и R3 различного конструктивного исполнения.

Подробнее

Вместо

26 minutes ago, begun said:

flash struct FONT_DEF    // для шрифтов
 {  flash unsigned char store_width;             /* glyph storage width in bytes */   =============   61 =====
    flash unsigned char glyph_height;               /* glyph height for storage */
    flash unsigned char *glyph_table;            /* font table start address in memory */
    flash unsigned char fixed_width;             /* fixed width of glyphs. If zero */
                                                 /* then use the width table. */
    flash unsigned char *width_table;              /* variable width table start adress */
    flash unsigned char glyph_beg;                  /* start ascii offset in table */
    flash unsigned char glyph_end;                 /* end ascii offset in table */
    flash unsigned char glyph_def;                 /* code for undefined glyph code */
};
flash struct IMG_DEF    // для картинки 
 { flash unsigned char width_in_pixels;      /* Image width */     ====================  72=======
   flash unsigned char height_in_pixels;     /* Image height*/
   flash unsigned char *char_table;    /* Image table start address in memory  */
 };

поудаляйте лишние flash. В определении структур оставьте. Как ниже.

27 minutes ago, begun said:

flash struct FONT_DEF    // для шрифтов
 {  unsigned char store_width;             /* glyph storage width in bytes */
    unsigned char glyph_height;               /* glyph height for storage */
    unsigned char *glyph_table;            /* font table start address in memory */
    unsigned char fixed_width;             /* fixed width of glyphs. If zero */
                                                 /* then use the width table. */
    unsigned char *width_table;              /* variable width table start adress */
    unsigned char glyph_beg;                  /* start ascii offset in table */
    unsigned char glyph_end;                 /* end ascii offset in table */
    unsigned char glyph_def;                 /* code for undefined glyph code */
};
flash struct IMG_DEF    // для картинки 
 { unsigned char width_in_pixels;      /* Image width */
   unsigned char height_in_pixels;     /* Image height*/
   unsigned char *char_table;    /* Image table start address in memory  */
 };

 

Share this post


Link to post
Share on other sites

шесть ошибок после вставки

 

Error: sed1520.h: a value of type 'flash unsigned char [1536]' can't be used to initialize an entity of type 'unsigned char *'
---------------------------------------------------------
Error: sed1520.h:a value of type 'flash unsigned char [1458]' can't be used to initialize an entity of type 'unsigned char *'
-------------------------------------------------------
Error: sed1520.h: a value of type 'flash unsigned char [768]' can't be used to initialize an entity of type 'unsigned char *'
-----------------------------------------------------
Error:  sed1520.h: a value of type 'flash unsigned char [120]' can't be used to initialize an entity of type 'unsigned char *'
-------------------------------------------------
Error: sed1520.h: a value of type 'flash unsigned char [512]' can't be used to initialize an entity of type 'unsigned char *'
-----------------------------------------------------
Error: sed1520.h: a value of type 'flash unsigned char [512]' can't be used to initialize an entity of type 'unsigned char *'
 

Share this post


Link to post
Share on other sites

мне бы только слова вывести остальное не нужно.

но как убрать лишнее

Share this post


Link to post
Share on other sites

Программа писалась под другой версией компилятора. Поищите более старую версию. Можете скинуть весь проект, я попробую скомпилировать.

Share this post


Link to post
Share on other sites

Для таблиц надо оставить flash

8 hours ago, begun said:

flash struct FONT_DEF    // для шрифтов
 {  unsigned char store_width;             /* glyph storage width in bytes */   =============   61 =====
    unsigned char glyph_height;               /* glyph height for storage */
    flash unsigned char *glyph_table;            /* font table start address in memory */
    unsigned char fixed_width;             /* fixed width of glyphs. If zero */
                                                 /* then use the width table. */
    flash unsigned char *width_table;              /* variable width table start adress */
    unsigned char glyph_beg;                  /* start ascii offset in table */
    unsigned char glyph_end;                 /* end ascii offset in table */
    unsigned char glyph_def;                 /* code for undefined glyph code */
};
flash struct IMG_DEF    // для картинки 
 { unsigned char width_in_pixels;      /* Image width */     ====================  72=======
   unsigned char height_in_pixels;     /* Image height*/
   flash unsigned char *char_table;    /* Image table start address in memory  */
 };

 

Share this post


Link to post
Share on other sites

извиняюсь но после вставки две ошибки

 

Error: C:\sed1520.h(72), #included from: main_sokol.c: declaration syntax error
---------------------------------------------------------
Error: C:\sed1520.h(61), #included from: main_sokol.c: declaration syntax error

а у вас компиляция прошла нормально?

у меня 3.12 cvavr. в ранной  lcd графические не поддерживаются.

Share this post


Link to post
Share on other sites

да, исправился .глазам не верю.

 я в восторге.

как вас поблагодарить.

не буду спрашивать, что там такое было.

вы видимо очень хорошо разбирайтесь в этих вопросах.

большое вам спасибо за проявленное внимание и знания.

не терпится внести свои поправки  и получить конечный результат.

в общем нужно мне вывести свой шрифт и на этом пути была такая загвоздка.

конечно без вас я просто не смог бы что либо сделать

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Сообщения


  • Переключатель на ключе

×
×
  • Create New...