AVR studio в вопросах и ответах
Поздравляю, avreal , ваше сообщение номером 666
и как раз какие то заклинания в коде 
В поисках истины человек развивается.
- Реклама
- Сообщения: 142
- Зарегистрирован: Сб дек 24, 2011 12:39:03
avreal спасибо!
Скачал pin_macros.h, подключил, попробовал вставить пару строк из Вашего примера - не ругается )))
ON(LED_YEL); - это как раз то что я и хотел. Я в неявном виде писал что на авр-ассемблере не писал, а писал для MCS-51. Я сейчас в командировке, тех программ под рукой нет, но (по памяти) выглядело примерно так:
назначаем такому-то пину такого порта имя, например LED_YEL и далее setb LED_YEL или clr LED_YEL. Может я что-то не совсем так пишу, давно не писал в нём, но смысл такой.
По-моему как-то красивее того, что не нравится мне.
Спасибо всем.
Я удовлетворён, пойду понюхаю валерьянки
ЗЫ Кто-то может иронизировать по поводу размера моих программ, но, я считаю, несколько тысяч строк а ассемблере - не так и мало.
Скачал pin_macros.h, подключил, попробовал вставить пару строк из Вашего примера - не ругается )))
ON(LED_YEL); - это как раз то что я и хотел. Я в неявном виде писал что на авр-ассемблере не писал, а писал для MCS-51. Я сейчас в командировке, тех программ под рукой нет, но (по памяти) выглядело примерно так:
назначаем такому-то пину такого порта имя, например LED_YEL и далее setb LED_YEL или clr LED_YEL. Может я что-то не совсем так пишу, давно не писал в нём, но смысл такой.
По-моему как-то красивее того, что не нравится мне.
Спасибо всем.
ЗЫ Кто-то может иронизировать по поводу размера моих программ, но, я считаю, несколько тысяч строк а ассемблере - не так и мало.
Вышел из себя.
Пришел в себя.
Ушел в себя.
И решил больше сегодня никуда не ходить
Пришел в себя.
Ушел в себя.
И решил больше сегодня никуда не ходить
решил поковырять проект вольтметра на дисплее о нокии1202 http://we.easyelectronics.ru/letni/esch ... -dnya.html
но не могу скомпилировать проект выдает ошибку:
C:\lcd1\default/../lcd1.c:32: undefined reference to `lcd_ledon'
C:\lcd1\default/../lcd1.c:33: undefined reference to `lcd_init'
и т.д. типа либу lcd1202.h вроде как не видит о в проект она вставлена.

но не могу скомпилировать проект выдает ошибку:
C:\lcd1\default/../lcd1.c:32: undefined reference to `lcd_ledon'
C:\lcd1\default/../lcd1.c:33: undefined reference to `lcd_init'
и т.д. типа либу lcd1202.h вроде как не видит о в проект она вставлена.

Это что за картинка?Перезалейте, сжатие не удалось.Ничего не видно.
Может нужно вместо
написать
???
Может нужно вместо
Код: Выделить всё
# include < lcd1202.h> Код: Выделить всё
# include "lcd1202.h" В поисках истины человек развивается.
Последний раз редактировалось mastech Пн авг 20, 2012 13:23:05, всего редактировалось 1 раз.
- Реклама
Спойлер

[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Это сообщение о ошибке не компиляции, а сборки программы. То есть Вы подключили к проекту lcd1202.h с объявлениями функций, а lcd1202.c, где эти функции реализованы, не подключили. Вот компилятор и не знает где их взять.mastech писал(а): ...не могу скомпилировать проект выдает ошибку:
C:\lcd1\default/../lcd1.c:32: undefined reference to `lcd_ledon'
C:\lcd1\default/../lcd1.c:33: undefined reference to `lcd_init'
и т.д. типа либу lcd1202.h вроде как не видит о в проект она вставлена.
А из наших труб идет необычный дым. Стой! Опасная зона! Работа мозга!...
хм но lcd1202.c находится в одной паке с lcd1202.h и как ее подключать, она разве не автоматом находится?
е
прикрутил ее как #include "lcd/lcd1202.c" вроде пошло но теперь ругается на задержки
c:\program files\atmel\avr tools\avr toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/util/delay.h:152:28: error: __builtin_avr_delay_cycles expects an integer constant.

е
прикрутил ее как #include "lcd/lcd1202.c" вроде пошло но теперь ругается на задержки
c:\program files\atmel\avr tools\avr toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/util/delay.h:152:28: error: __builtin_avr_delay_cycles expects an integer constant.
Последний раз редактировалось mastech Пн авг 20, 2012 14:05:36, всего редактировалось 1 раз.
Нет, автоматом оно не подключается. В левом окне студии (AVR GCC) на папке "source files" щёлкаете левой кнопкой мышки. В появившемся меню выбираете "add file". Откроется окошко "выбор файла", в нём нажимаете на нужный файл.mastech писал(а):как ее подключать, она разве не автоматом находится?
А из наших труб идет необычный дым. Стой! Опасная зона! Работа мозга!...
поправил ка Вы подсказали стало норм, только ошибка с задержками не ушла
Оно и будет ругаться. Задежка используется не правильно. В файле lcd1202.c надо заменить все вызовы lcd_delay_ms на _delay_ms. И удалить саму функцию lcd_delay_ms вместе с её объявлением.
Примерно так:
Примерно так:
Спойлер
Код: Выделить всё
#include "lcd1202.h"
#include "font.h"
//#include "fnt_libera_24x14.xbm"
// #include "fnt_terminus_24x14.xbm"
void lcd_init_gpio(void);
void lcd_reset(void);
void lcd_write_byte(unsigned char data, unsigned char rc);
static void lcd_set_row(unsigned char row);
static void lcd_set_col(unsigned char col);
struct {
int inverse:1;
} flags;
/* hw undepended functions */
void lcd_init(void)
{
lcd_init_gpio();
lcd_reset();
lcd_write_byte(0xE2, 0); // Reset
_delay_ms(10);
lcd_write_byte(0xA4, 0); // Power saver off
lcd_write_byte(0x2F, 0); // Power control set
lcd_write_byte(0xAF, 0); // LCD display on
lcd_clr();
flags.inverse = 0;
}
void lcd_clr(void)
{
int i;
lcd_home();
for(i=0; i<16*6*9; i++)
{
lcd_write_byte(0x00, 1);
}
}
/*
void lcd_big_char(unsigned char row, unsigned char col, unsigned char chr)
{
// unsigned char* f0 = fnt_terminus_24x14_bits + chr*14*(24/8);
unsigned char* f0 = fnt_libera_24x14_bits + chr*14*(24/8);
unsigned char* f;
unsigned char r, c;
unsigned char ch;
for(r = 0; r<3; r++)
{
f = f0 + r;
lcd_set_row(row+r);
lcd_set_col(col);
for(c = 0; c<14; c++)
{
ch = *f;
if(flags.inverse) ch = ch ^ 0xFF;
lcd_write_byte(ch, 1);
f += 3;
}
}
}
*/
void lcd_pos(unsigned char row, unsigned char col)
{
lcd_set_row(row);
lcd_set_col(col*6);
}
void lcd_char(unsigned char c)
{
unsigned char line;
unsigned char ch;
unsigned char* f = &(font6_8[c-32]);
for(line=0;line<6;line++)
{
ch = *f++;
if(flags.inverse) ch = ch ^ 0xFF;
lcd_write_byte(ch, 1);
}
}
void lcd_str(unsigned char* str)
{
unsigned char c;
while((c = *str) != 0)
{
lcd_char(c);
str++;
}
}
void lcd_inverse(char flag)
{
flags.inverse = flag;
}
void lcd_reverse(unsigned char inv)
{
if(inv)
lcd_write_byte(0xA7, 0); // reverse display
else
lcd_write_byte(0xA6, 0); // normal display
}
void lcd_start_line(unsigned char line)
{
lcd_write_byte(0x40 | (line & 0x3F), 0);
}
void lcd_home(void)
{
lcd_write_byte(0xB0, 0); // Page address set
lcd_write_byte(0x10, 0); // Sets the DDRAM column address - upper 3-bit
lcd_write_byte(0x00, 0); // lower 4-bit
}
static void lcd_set_row(unsigned char row)
{
lcd_write_byte(0xB0 | (row & 0x0F), 0); // Page address set
}
static void lcd_set_col(unsigned char col)
{
lcd_write_byte(0x10 | (col>>4), 0); // Sets the DDRAM column address - upper 3-bit
lcd_write_byte(0x00 | (col & 0x0F), 0); // lower 4-bit
}
/* MCU Hardware depend functions */
/* Atmega8 */
#define lcd_port PORTD
#define lcd_sclk 2
#define lcd_sda 3
#define lcd_nrst 5
#define lcd_ncs 4
#define lcd_led 6
#define lcd_rst_mark() lcd_port&=~(1<<lcd_nrst)
#define lcd_rst_release() lcd_port|=(1<<lcd_nrst)
#define lcd_cs_mark() lcd_port&=~(1<<lcd_ncs)
#define lcd_cs_release() lcd_port|=(1<<lcd_ncs)
void lcd_ledon(void)
{
lcd_port|=(1<<lcd_led);
}
void lcd_ledoff(void)
{
lcd_port&=~(1<<lcd_led);
}
void lcd_init_gpio(void)
{
DDRD|=(1<<lcd_sclk)|(1<<lcd_sda)|(1<<lcd_nrst)|(1<<lcd_ncs)|(1<<lcd_led);
lcd_port|=(1<<lcd_ncs)|(1<<lcd_nrst);
_delay_ms(10);
}
void lcd_reset(void)
{
lcd_rst_mark();
_delay_ms(10);
lcd_rst_release();
_delay_ms(10);
}
void lcd_write_byte(unsigned char data, unsigned char rc)
{
lcd_cs_mark();
if(rc) lcd_port|=(1<<lcd_sda);
else lcd_port&=~(1<<lcd_sda);
lcd_port|=(1<<lcd_sclk);
_delay_us(10);
lcd_port&=~(1<<lcd_sclk);
_delay_us(10);
int i;
for(i=0; i<8; i++)
{
if(data & 0x80) lcd_port|=(1<<lcd_sda);
else lcd_port&=~(1<<lcd_sda);
data <<= 1;
lcd_port|=(1<<lcd_sclk);
_delay_us(10);
lcd_port&=~(1<<lcd_sclk);
_delay_us(10);
}
lcd_cs_release();
}
А из наших труб идет необычный дым. Стой! Опасная зона! Работа мозга!...
убрал lcd с задержек все скомпилировалось,приеду с работы опробую. преогромнейшее спасибо). вот только вопрос как так получилось с задержками или это умышленно сделано?
Пожалуста
С задержками скорее всего из-за невнимательности. У меня такое частенько бывает)
С задержками скорее всего из-за невнимательности. У меня такое частенько бывает)
А из наших труб идет необычный дым. Стой! Опасная зона! Работа мозга!...
- Сообщения: 166
- Зарегистрирован: Чт июн 02, 2011 10:32:56
Подскажите пожалуйста,какие галочки поставить и какие убрать в AVR Studio V4.13
Буржуин выложил вот эти,но не все понятно в версии 4,13
The fuse settings for the ATTINY45 were as follows (for AVR STUDIO):
BODLEVEL 2.7V
EESAVE not preserved
WDTON disabled
SPIEN enabled
DWEN enabled
RSTDISBL enabled
-> which equals 0xdd
CKSEL hf pll (0001)
SUT 1..0 bod enabled fast rise
CKOUT disabled
CKDIV8 disabled
-> which equals 0xe1
(this was taken from the EasyLogger data files)
ссылка на девайс.
(http://yveslebrac.blogspot.com/2008/10/ ... alaxy.html)
Буржуин выложил вот эти,но не все понятно в версии 4,13
The fuse settings for the ATTINY45 were as follows (for AVR STUDIO):
BODLEVEL 2.7V
EESAVE not preserved
WDTON disabled
SPIEN enabled
DWEN enabled
RSTDISBL enabled
-> which equals 0xdd
CKSEL hf pll (0001)
SUT 1..0 bod enabled fast rise
CKOUT disabled
CKDIV8 disabled
-> which equals 0xe1
(this was taken from the EasyLogger data files)
ссылка на девайс.
(http://yveslebrac.blogspot.com/2008/10/ ... alaxy.html)
- Вложения
-
- фьюз.JPG
- Фьюзы
- (63.71 КБ) 791 скачивание
- Сообщения: 574
- Зарегистрирован: Вт ноя 02, 2010 17:46:37
Подскажите пытаюсь соединить avr studio c протеусом студия при компиляции выдаёт ошибку
Proteus: Failed to create VSM Debugger object
Coordinator: Error when writing memory contents to the debug platform.
Coordinator: Error loading object file.
уже раза 3 переустановил протеус (он там вылетал иногда думал в этом косяк а оказалось нет)
версия студии 4.13 протеуса 7.10
Proteus: Failed to create VSM Debugger object
Coordinator: Error when writing memory contents to the debug platform.
Coordinator: Error loading object file.
уже раза 3 переустановил протеус (он там вылетал иногда думал в этом косяк а оказалось нет)
версия студии 4.13 протеуса 7.10
- Сообщения: 33
- Зарегистрирован: Вт дек 20, 2011 21:40:45
Здравствуйте уважаемые радиокоты! Подскажите пожалуйста.
Симулирую таймер на AVR Studio. Симулирует нормально, но когда начинается заполнение счетного регистра, симулятор почему-то через такт перескакивает.
Естественно это неудобно: не видно например, как флаг переполнения счетчика выставляется, т к симулятор перескакивает этот момент своими двойными тактированиями.
Пишу на С++, отлаживаю в окошке "дизассемблер".
Может там галочку какую-нибудь в настройках поставить надо, мол не перескакивать через такт при трассировке? Где поменять настройки, чтобы программа нормально, такт за тактом выполнялась?
Спасибо!
Симулирую таймер на AVR Studio. Симулирует нормально, но когда начинается заполнение счетного регистра, симулятор почему-то через такт перескакивает.
Естественно это неудобно: не видно например, как флаг переполнения счетчика выставляется, т к симулятор перескакивает этот момент своими двойными тактированиями.
Пишу на С++, отлаживаю в окошке "дизассемблер".
Может там галочку какую-нибудь в настройках поставить надо, мол не перескакивать через такт при трассировке? Где поменять настройки, чтобы программа нормально, такт за тактом выполнялась?
Спасибо!
- Сообщения: 44
- Зарегистрирован: Пт апр 04, 2008 22:51:33
Подскажите пожалуйста.
Перешел с WinAVR на AVRStudio5, все хорошо, кроме момента прошивки fuses. Я обычно прошивал USB-asp теперь шью с AVRDragon, программа одна и таrже прошивается нормально, все отлично, но как только прошиваю fuses через AVRDragon на AVRStudio5, контроллер больше не доступен, т.е. не могу прошить и даже прочитать, при этом контроллер работает., выполняет вшитую программу.
Вопрос такой, в чем может быть моя ошибка? Повторюсь одно и тоже устройство через USB-asp и eXtremeBurnerAVR прошивается полностью с fuses нормально, а через AVRDragon и AVRStudio5, прошивается только прога.
Кто использует связку AVRDragon и AVRStudio5 пожалуйста поделитесь положительным опытом.
Перешел с WinAVR на AVRStudio5, все хорошо, кроме момента прошивки fuses. Я обычно прошивал USB-asp теперь шью с AVRDragon, программа одна и таrже прошивается нормально, все отлично, но как только прошиваю fuses через AVRDragon на AVRStudio5, контроллер больше не доступен, т.е. не могу прошить и даже прочитать, при этом контроллер работает., выполняет вшитую программу.
Вопрос такой, в чем может быть моя ошибка? Повторюсь одно и тоже устройство через USB-asp и eXtremeBurnerAVR прошивается полностью с fuses нормально, а через AVRDragon и AVRStudio5, прошивается только прога.
Кто использует связку AVRDragon и AVRStudio5 пожалуйста поделитесь положительным опытом.
есть опыт, но в плане программирования старых девайсов типа мега8 он отрицательный Шью 4той студией.
PS выпущена шестая версия и лучше переходить на нее, так как новых пятых уже не будет.хотя для кода я успешно использую пятую-она запускается быстрее.
И вообще для пятой студии в коте есть отдельная ветка.
PS выпущена шестая версия и лучше переходить на нее, так как новых пятых уже не будет.хотя для кода я успешно использую пятую-она запускается быстрее.
И вообще для пятой студии в коте есть отдельная ветка.
- Сообщения: 44
- Зарегистрирован: Пт апр 04, 2008 22:51:33
Пятая студия
А что вам мешает использовать старую методику программирования?Просто в пятой нет поддержки некоторых контроллеров.
А что вам мешает использовать старую методику программирования?Просто в пятой нет поддержки некоторых контроллеров.


