CodeVision AVR в вопросах и ответах
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
так вы же по ссылке говорите были.там написано что после компиляции программировать.так этот файл уже можно программировать.зачем вы его вообще открываете?жмем программировать.там в меню выбираем файл этот и все жмем программировать.
В поисках истины человек развивается.
-
Roin
- Первый раз сказал Мяу!
- Сообщения: 22
- Зарегистрирован: Пн фев 27, 2012 16:29:37
- Откуда: Бугульма
Re: CodeVision AVR в вопросах и ответах
всем привет. подскажите как в cvavr настроить 8битное подключение дисплея ? в мастере только 4битное.по схеме у меня 8битное подключение 4битное никак не получаетса использовать(
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Либо перепаиваем железо, либо дописываем библиотеку. Иначе никак.
Docendo discimus
-
Roin
- Первый раз сказал Мяу!
- Сообщения: 22
- Зарегистрирован: Пн фев 27, 2012 16:29:37
- Откуда: Бугульма
Re: CodeVision AVR в вопросах и ответах
вот нашел что то про 8битное подключение, только не пойму как указывать какие пины к чему относятса http://screenshotuploader.com/s/01/Ot5KYYHIy
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Дружище! Самое начало прочитал?:
В чем проблема отпаять четыре проволки? Их даже отпаивать не надо, интерфейс и так будет работать. Или вы чего-то не договариваете, или я не могу всосать проблему.
alphanumeric LCD modules built with the Hitachi HD44780 chip or equivalent.
В чем проблема отпаять четыре проволки? Их даже отпаивать не надо, интерфейс и так будет работать. Или вы чего-то не договариваете, или я не могу всосать проблему.
Docendo discimus
Re: CodeVision AVR в вопросах и ответах
помогите плиз, делаю часы на атмега8, кварц 4МГц, какой таймер и как сконфигурировать чтобы прерывание происходило раз в 1с ?
Tell Me The Truth
- Apparatchik
- Держит паяльник хвостом
- Сообщения: 908
- Зарегистрирован: Вс май 23, 2010 13:55:42
- Откуда: Украина, Александрия
Re: CodeVision AVR в вопросах и ответах
FreshMan писал(а):помогите плиз, делаю часы на атмега8, кварц 4МГц, какой таймер и как сконфигурировать чтобы прерывание происходило раз в 1с ?
AVR Быстрый расчёт
«И всё-таки она вертится!»
- Andrey73s
- Вымогатель припоя
- Сообщения: 691
- Зарегистрирован: Ср фев 24, 2010 23:33:28
- Откуда: Тверская обл.
Re: CodeVision AVR в вопросах и ответах
vitalik_1984 писал(а):так вы же по ссылке говорите были.там написано что после компиляции программировать.так этот файл уже можно программировать.зачем вы его вообще открываете?жмем программировать.там в меню выбираем файл этот и все жмем программировать.
Спасибо.
Ещё вопрос в программе Atmega8 а у меня 8А шить можно или не стоит?
Какая *** выключила свет в конце туннеля.
- Alex_Megavolt_79
- Грызет канифоль
- Сообщения: 262
- Зарегистрирован: Пт окт 30, 2009 22:33:56
- Откуда: Санкт-Петербург
Re: CodeVision AVR в вопросах и ответах
Уважаемые коты, у кого есть библиотека LCD WH1602, но без использования вывода RW как реализовано в стандартной библиотеке. поделитесь пожалуйста.
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
2Andrey73s: можно.
2Alex_Megavolt_79: просто не читаем из ЖКИ.
2Alex_Megavolt_79: просто не читаем из ЖКИ.
Docendo discimus
- Alex_Megavolt_79
- Грызет канифоль
- Сообщения: 262
- Зарегистрирован: Пт окт 30, 2009 22:33:56
- Откуда: Санкт-Петербург
Re: CodeVision AVR в вопросах и ответах
pyzhman, а как на счёт чтения флага занятности? Даже моё скудное начальное познание в С позволило в библиотеке рассмотреть что идёт чтение флага занятности, а не тупое просирание МК времени. А если взять датик на LCD, то моно увидеть что проверка чтения флага занятности происходит при RW=1?
Re: CodeVision AVR в вопросах и ответах
Alex_Megavolt_79 писал(а):Уважаемые коты, у кого есть библиотека LCD WH1602, но без использования вывода RW как реализовано в стандартной библиотеке. поделитесь пожалуйста.
В работе с библиотекой <alcd.h> в версиях КВ выше 2.04 просто замкни его на землю. Будет работать. В мастере кода повесь его на свободную ногу мк.
- Alex_Megavolt_79
- Грызет канифоль
- Сообщения: 262
- Зарегистрирован: Пт окт 30, 2009 22:33:56
- Откуда: Санкт-Петербург
Re: CodeVision AVR в вопросах и ответах
R_ura СПАСИБО!!! LCD заработал. Подскажите, я всё не могу разобраться с форматирование строки. SprintF как мне часы минуты и сек вытащить на экран я думал так sprintf(lcd_buffer_1,"%,%,%", hour,min,sec); но на экране пусто.
Сам дошёл, метод тыка ещё ни кто не отменял
sprintf(lcd_buffer_1,"%02u:%02u:%02u", hour,min,sec);
sprintf(lcd_buffer_2,"%02u\x2f%02u\x2f%02u",date,month,year);
Сам дошёл, метод тыка ещё ни кто не отменял
sprintf(lcd_buffer_1,"%02u:%02u:%02u", hour,min,sec);
sprintf(lcd_buffer_2,"%02u\x2f%02u\x2f%02u",date,month,year);
Re: CodeVision AVR в вопросах и ответах
Используются у меня в программе переменные, сохраняемые в еепром. Но при первом включении после прошивки мк в еепром в этих переменных оказываются некорректные данные. Каждый раз надо пару десятков переменных устанавливать вручную.
Как мне сделать так, чтобы при прошивке они инициализировались нужными значениями ?
Как мне сделать так, чтобы при прошивке они инициализировались нужными значениями ?
Код: Выделить всё
// Структура для SERVICE 2
typedef struct { // Структура для SERVICE 2
volatile unsigned int size_Disk; //диаметр диска
unsigned int min_rpm_DISK; //мнмальное кол-во оборотов в минуту = срабатывание защиты
unsigned int size_reserv2;
char pause_protect_X; //пауза защиты по осям X
char pause_protect_Y; //пауза защиты по осям Y
char pause_protect_Z; //пауза защиты по оси Z
char pause_protect_D; //пауза защиты диска пилы
char reserv3; //
char reserv4; //
}
struct_s2; // определить тип данных struct_s2
struct_s2 s2; // определить переменнуе в рам s1 типа struct_s2
eeprom struct_s2 ee_s2; //определить переменнуе в eeprom ee_s2 типа struct_s2Re: CodeVision AVR в вопросах и ответах
помогите пожалуйчта осознать в чем моя ошибка
вот код:
при кампиляции выдает
с указанием вот сюда
а вот когда я записываю так:
то все ОК
в чем проблемма ?
вот код:
Код: Выделить всё
interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{
if (++sec>==60) {sec=0; min++;};
if (++min>=60) {min=0;hour++;};
if(hour>=24)hour=0;
}при кампиляции выдает
Error: C:\Documents and Settings\User\Рабочий стол\7\7.c(20): missing ')'
Error: C:\Documents and Settings\User\Рабочий стол\7\7.c(21): declaration syntax error
с указанием вот сюда
Код: Выделить всё
if (++sec>==60) {sec=0; min++;};
if (++min>=60) {min=0;hour++;};а вот когда я записываю так:
Код: Выделить всё
interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{
if (++sec>=60) {sec=0; min++;};
if (++min>=60) {min=0;hour++;};
if(hour>=24)hour=0;
}то все ОК
в чем проблемма ?

Tell Me The Truth
- Apparatchik
- Держит паяльник хвостом
- Сообщения: 908
- Зарегистрирован: Вс май 23, 2010 13:55:42
- Откуда: Украина, Александрия
Re: CodeVision AVR в вопросах и ответах
«И всё-таки она вертится!»
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
R_ura писал(а): Как мне сделать так, чтобы при прошивке они инициализировались нужными значениями ?
Смотрим комментируем:)
Спойлер
Код: Выделить всё
//#define FIRST_RUN 1 для начальной инициализации раскомментировать и скомпилировать
//появится файл еепром далее можно обратно закоментить и не будет этот файл создаваться.
// Структура для SERVICE 2
typedef struct { // Структура для SERVICE 2
...................
....................
...................
}struct_s2; // определить тип данных struct_s2
struct_s2 s2; // определить переменнуе в рам s1 типа struct_s2
struct_s2 eeprom ee_s2; //определить переменнуе в eeprom ee_s2 типа struct_s2
void main(void) {
#ifdef FIRST_RUN
ee_s2.min_rpm_DISK =500;
ee_s2.pause_protect_D=2;
ee_s2.pause_protect_X=1;
ee_s2.size_Disk=300;
ee_s2.pause_protect_Y=200;
ee_s2.pause_protect_Z=200;
ee_s2.reserv3=0;
ee_s2.reserv4=0;
#endif
while (1) {
};
}
Проверено
В поисках истины человек развивается.
Re: CodeVision AVR в вопросах и ответах
R_ura писал(а):Используются у меня в программе переменные, сохраняемые в еепром. Но при первом включении после прошивки мк в еепром в этих переменных оказываются некорректные данные. Каждый раз надо пару десятков переменных устанавливать вручную.
Как мне сделать так, чтобы при прошивке они инициализировались нужными значениями ?Код: Выделить всё
// Структура для SERVICE 2
typedef struct { // Структура для SERVICE 2
volatile unsigned int size_Disk; //диаметр диска
unsigned int min_rpm_DISK; //мнмальное кол-во оборотов в минуту = срабатывание защиты
unsigned int size_reserv2;
char pause_protect_X; //пауза защиты по осям X
char pause_protect_Y; //пауза защиты по осям Y
char pause_protect_Z; //пауза защиты по оси Z
char pause_protect_D; //пауза защиты диска пилы
char reserv3; //
char reserv4; //
}
struct_s2; // определить тип данных struct_s2
struct_s2 s2; // определить переменнуе в рам s1 типа struct_s2
eeprom struct_s2 ee_s2; //определить переменнуе в eeprom ee_s2 типа struct_s2
В ИАРе простые переменные в области eeprom иницализируются просто.
Код: Выделить всё
__eeprom char var1 = 255;
__eeprom char str1[] = 'Any string';
__eeprom long var2long = 65535*4;
Со структурами не пробовал, но если следовать стандарту СИ, то структуры иницализируются таким же образом.
http://dvo.sut.ru/libr/cvti/i618buz/12.htm
Есть смысл попробовать.
При компиляции должен сождаться файл с расширением .eep, который и прошивается вместе с основным .hex на фазе прожига кристалла.
Я никогда не вводил специальных условно-компилируемых частей программы для инициализации переменных в области eeprom.
Наоборот, если не нужно создавать файл .eep а переменные в eeprom все равно объявляю, то применяю определение
Код: Выделить всё
__no_init __eeprom char var;Иначе по умолчанию все переменные инициализируются нулевыми значениями - а это расход кода.
Любые данные можно располагать в eeprom по конкретному адресу:
Код: Выделить всё
__eeprom char var = 0x55 @0x105;Что-то мне подсказывает, что и в других средах (компиляторах) подобное возможно.
С уважением,
Виктор.
Виктор.
Re: CodeVision AVR в вопросах и ответах
vitalik_1984 писал(а):
Смотрим комментируем:)
ut1wpr писал(а):Что-то мне подсказывает, что и в других средах (компиляторах) подобное возможно.
Спасибо. Завтра попробую.
Вот такой еще вопрос возник. Как я понимаю, комилятор для меги16 автоматом выделяет под стек 256 байт. (Выделено желтым) Используется же всего 32 байта. Могу ли я в настойках проекта указать вместо 256 байт под стек, скажем 216 байт, чтобы съэкономить РАМ или компилятор может сам в выделенную под стек область поместить данные, если глубина стека намного меньше выделенной области?
Да . Что там еще за хардверный стек в 520 байт?

Re: CodeVision AVR в вопросах и ответах
vitalik_1984 писал(а):
Код: Выделить всё
void main(void) {
#ifdef FIRST_RUN
ee_s2.min_rpm_DISK =500;
ee_s2.pause_protect_D=2;
ee_s2.pause_protect_X=1;
ee_s2.size_Disk=300;
ee_s2.pause_protect_Y=200;
ee_s2.pause_protect_Z=200;
ee_s2.reserv3=0;
ee_s2.reserv4=0;
#endif
while (1) {
};
}
Проверено
Сделал так. В листинге появилась запись каждой переменной в еепром. Файл для еепром не изменилс))) Может компилятор пихает данные в этот файл, если их определить как константы? Или я в настройках что-то упустил? В папке екзе файл для еепром есть, но его содержимое
:00000001FF не меняется..