CodeVision AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение vitalik_1984 »

так вы же по ссылке говорите были.там написано что после компиляции программировать.так этот файл уже можно программировать.зачем вы его вообще открываете?жмем программировать.там в меню выбираем файл этот и все жмем программировать.
В поисках истины человек развивается.
Roin
Первый раз сказал Мяу!
Сообщения: 22
Зарегистрирован: Пн фев 27, 2012 16:29:37
Откуда: Бугульма

Re: CodeVision AVR в вопросах и ответах

Сообщение Roin »

всем привет. подскажите как в cvavr настроить 8битное подключение дисплея ? в мастере только 4битное.по схеме у меня 8битное подключение 4битное никак не получаетса использовать(
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение pyzhman »

Либо перепаиваем железо, либо дописываем библиотеку. Иначе никак.
Docendo discimus
Roin
Первый раз сказал Мяу!
Сообщения: 22
Зарегистрирован: Пн фев 27, 2012 16:29:37
Откуда: Бугульма

Re: CodeVision AVR в вопросах и ответах

Сообщение Roin »

вот нашел что то про 8битное подключение, только не пойму как указывать какие пины к чему относятса http://screenshotuploader.com/s/01/Ot5KYYHIy
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение pyzhman »

Дружище! Самое начало прочитал?:
alphanumeric LCD modules built with the Hitachi HD44780 chip or equivalent.

В чем проблема отпаять четыре проволки? Их даже отпаивать не надо, интерфейс и так будет работать. Или вы чего-то не договариваете, или я не могу всосать проблему.
Docendo discimus
Аватара пользователя
FreshMan
Друг Кота
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Re: CodeVision AVR в вопросах и ответах

Сообщение FreshMan »

помогите плиз, делаю часы на атмега8, кварц 4МГц, какой таймер и как сконфигурировать чтобы прерывание происходило раз в 1с ?
Tell Me The Truth
Аватара пользователя
Apparatchik
Держит паяльник хвостом
Сообщения: 908
Зарегистрирован: Вс май 23, 2010 13:55:42
Откуда: Украина, Александрия

Re: CodeVision AVR в вопросах и ответах

Сообщение Apparatchik »

FreshMan писал(а):помогите плиз, делаю часы на атмега8, кварц 4МГц, какой таймер и как сконфигурировать чтобы прерывание происходило раз в 1с ?

AVR Быстрый расчёт
«И всё-таки она вертится!»
Аватара пользователя
Andrey73s
Вымогатель припоя
Сообщения: 691
Зарегистрирован: Ср фев 24, 2010 23:33:28
Откуда: Тверская обл.

Re: CodeVision AVR в вопросах и ответах

Сообщение Andrey73s »

vitalik_1984 писал(а):так вы же по ссылке говорите были.там написано что после компиляции программировать.так этот файл уже можно программировать.зачем вы его вообще открываете?жмем программировать.там в меню выбираем файл этот и все жмем программировать.

Спасибо.
Ещё вопрос в программе Atmega8 а у меня 8А шить можно или не стоит?
Какая *** выключила свет в конце туннеля.
Аватара пользователя
Alex_Megavolt_79
Грызет канифоль
Сообщения: 262
Зарегистрирован: Пт окт 30, 2009 22:33:56
Откуда: Санкт-Петербург

Re: CodeVision AVR в вопросах и ответах

Сообщение Alex_Megavolt_79 »

Уважаемые коты, у кого есть библиотека LCD WH1602, но без использования вывода RW как реализовано в стандартной библиотеке. поделитесь пожалуйста.
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение pyzhman »

2Andrey73s: можно.
2Alex_Megavolt_79: просто не читаем из ЖКИ.
Docendo discimus
Аватара пользователя
Alex_Megavolt_79
Грызет канифоль
Сообщения: 262
Зарегистрирован: Пт окт 30, 2009 22:33:56
Откуда: Санкт-Петербург

Re: CodeVision AVR в вопросах и ответах

Сообщение Alex_Megavolt_79 »

pyzhman, а как на счёт чтения флага занятности? Даже моё скудное начальное познание в С позволило в библиотеке рассмотреть что идёт чтение флага занятности, а не тупое просирание МК времени. А если взять датик на LCD, то моно увидеть что проверка чтения флага занятности происходит при RW=1?
R_ura
Грызет канифоль
Сообщения: 293
Зарегистрирован: Сб май 29, 2010 00:08:48
Откуда: Харьков

Re: CodeVision AVR в вопросах и ответах

Сообщение R_ura »

Alex_Megavolt_79 писал(а):Уважаемые коты, у кого есть библиотека LCD WH1602, но без использования вывода RW как реализовано в стандартной библиотеке. поделитесь пожалуйста.

В работе с библиотекой <alcd.h> в версиях КВ выше 2.04 просто замкни его на землю. Будет работать. В мастере кода повесь его на свободную ногу мк.
Аватара пользователя
Alex_Megavolt_79
Грызет канифоль
Сообщения: 262
Зарегистрирован: Пт окт 30, 2009 22:33:56
Откуда: Санкт-Петербург

Re: CodeVision AVR в вопросах и ответах

Сообщение Alex_Megavolt_79 »

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);
R_ura
Грызет канифоль
Сообщения: 293
Зарегистрирован: Сб май 29, 2010 00:08:48
Откуда: Харьков

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
Аватара пользователя
FreshMan
Друг Кота
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Re: CodeVision AVR в вопросах и ответах

Сообщение FreshMan »

помогите пожалуйчта осознать в чем моя ошибка
вот код:

Код: Выделить всё

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;
}

то все ОК
в чем проблемма ? :dont_know:
Tell Me The Truth
Аватара пользователя
Apparatchik
Держит паяльник хвостом
Сообщения: 908
Зарегистрирован: Вс май 23, 2010 13:55:42
Откуда: Украина, Александрия

Re: CodeVision AVR в вопросах и ответах

Сообщение Apparatchik »

FreshMan писал(а):в чем проблемма ? :dont_know:

Код: Выделить всё

if (++sec>==60) {sec=0; min++;};

два равно
«И всё-таки она вертится!»
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение vitalik_1984 »

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) {
    };

}
   
 

Проверено
В поисках истины человек развивается.
ut1wpr
Вымогатель припоя
Сообщения: 581
Зарегистрирован: Ср янв 05, 2011 10:03:18

Re: CodeVision AVR в вопросах и ответах

Сообщение ut1wpr »

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;

Что-то мне подсказывает, что и в других средах (компиляторах) подобное возможно.
С уважением,
Виктор.
R_ura
Грызет канифоль
Сообщения: 293
Зарегистрирован: Сб май 29, 2010 00:08:48
Откуда: Харьков

Re: CodeVision AVR в вопросах и ответах

Сообщение R_ura »

vitalik_1984 писал(а):
Смотрим комментируем:)

ut1wpr писал(а):Что-то мне подсказывает, что и в других средах (компиляторах) подобное возможно.


Спасибо. Завтра попробую.
Вот такой еще вопрос возник. Как я понимаю, комилятор для меги16 автоматом выделяет под стек 256 байт. (Выделено желтым) Используется же всего 32 байта. Могу ли я в настойках проекта указать вместо 256 байт под стек, скажем 216 байт, чтобы съэкономить РАМ или компилятор может сам в выделенную под стек область поместить данные, если глубина стека намного меньше выделенной области?
Да . Что там еще за хардверный стек в 520 байт?
Изображение
R_ura
Грызет канифоль
Сообщения: 293
Зарегистрирован: Сб май 29, 2010 00:08:48
Откуда: Харьков

Re: CodeVision AVR в вопросах и ответах

Сообщение R_ura »

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 не меняется..
Ответить

Вернуться в «AVR»