CodeVision AVR в вопросах и ответах
так вы же по ссылке говорите были.там написано что после компиляции программировать.так этот файл уже можно программировать.зачем вы его вообще открываете?жмем программировать.там в меню выбираем файл этот и все жмем программировать.
В поисках истины человек развивается.
- Реклама
всем привет. подскажите как в cvavr настроить 8битное подключение дисплея ? в мастере только 4битное.по схеме у меня 8битное подключение 4битное никак не получаетса использовать(
Либо перепаиваем железо, либо дописываем библиотеку. Иначе никак.
Docendo discimus
вот нашел что то про 8битное подключение, только не пойму как указывать какие пины к чему относятса http://screenshotuploader.com/s/01/Ot5KYYHIy
Дружище! Самое начало прочитал?:
В чем проблема отпаять четыре проволки? Их даже отпаивать не надо, интерфейс и так будет работать. Или вы чего-то не договариваете, или я не могу всосать проблему.alphanumeric LCD modules built with the Hitachi HD44780 chip or equivalent.
Docendo discimus
- Реклама
помогите плиз, делаю часы на атмега8, кварц 4МГц, какой таймер и как сконфигурировать чтобы прерывание происходило раз в 1с ?
Tell Me The Truth
AVR Быстрый расчётFreshMan писал(а):помогите плиз, делаю часы на атмега8, кварц 4МГц, какой таймер и как сконфигурировать чтобы прерывание происходило раз в 1с ?
«И всё-таки она вертится!»
Спасибо.vitalik_1984 писал(а):так вы же по ссылке говорите были.там написано что после компиляции программировать.так этот файл уже можно программировать.зачем вы его вообще открываете?жмем программировать.там в меню выбираем файл этот и все жмем программировать.
Ещё вопрос в программе Atmega8 а у меня 8А шить можно или не стоит?
Какая *** выключила свет в конце туннеля.
Уважаемые коты, у кого есть библиотека LCD WH1602, но без использования вывода RW как реализовано в стандартной библиотеке. поделитесь пожалуйста.
2Andrey73s: можно.
2Alex_Megavolt_79: просто не читаем из ЖКИ.
2Alex_Megavolt_79: просто не читаем из ЖКИ.
Docendo discimus
pyzhman, а как на счёт чтения флага занятности? Даже моё скудное начальное познание в С позволило в библиотеке рассмотреть что идёт чтение флага занятности, а не тупое просирание МК времени. А если взять датик на LCD, то моно увидеть что проверка чтения флага занятности происходит при RW=1?
В работе с библиотекой <alcd.h> в версиях КВ выше 2.04 просто замкни его на землю. Будет работать. В мастере кода повесь его на свободную ногу мк.Alex_Megavolt_79 писал(а):Уважаемые коты, у кого есть библиотека LCD WH1602, но без использования вывода RW как реализовано в стандартной библиотеке. поделитесь пожалуйста.
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);
Используются у меня в программе переменные, сохраняемые в еепром. Но при первом включении после прошивки мк в еепром в этих переменных оказываются некорректные данные. Каждый раз надо пару десятков переменных устанавливать вручную.
Как мне сделать так, чтобы при прошивке они инициализировались нужными значениями ?
Как мне сделать так, чтобы при прошивке они инициализировались нужными значениями ?
Код: Выделить всё
// Структура для 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помогите пожалуйчта осознать в чем моя ошибка
вот код:
при кампиляции выдает
а вот когда я записываю так:
то все ОК
в чем проблемма ?
вот код:
Код: Выделить всё
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
FreshMan писал(а): в чем проблемма ?
Код: Выделить всё
if (++sec>==60) {sec=0; min++;};«И всё-таки она вертится!»
Смотрим комментируем:)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) {
};
}
В поисках истины человек развивается.
- Сообщения: 581
- Зарегистрирован: Ср янв 05, 2011 10:03:18
В ИАРе простые переменные в области eeprom иницализируются просто.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 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;С уважением,
Виктор.
Виктор.
vitalik_1984 писал(а):
Смотрим комментируем:)
Спасибо. Завтра попробую.ut1wpr писал(а): Что-то мне подсказывает, что и в других средах (компиляторах) подобное возможно.
Вот такой еще вопрос возник. Как я понимаю, комилятор для меги16 автоматом выделяет под стек 256 байт. (Выделено желтым) Используется же всего 32 байта. Могу ли я в настойках проекта указать вместо 256 байт под стек, скажем 216 байт, чтобы съэкономить РАМ или компилятор может сам в выделенную под стек область поместить данные, если глубина стека намного меньше выделенной области?
Да . Что там еще за хардверный стек в 520 байт?

Сделал так. В листинге появилась запись каждой переменной в еепром. Файл для еепром не изменилс))) Может компилятор пихает данные в этот файл, если их определить как константы? Или я в настройках что-то упустил? В папке екзе файл для еепром есть, но его содержимое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 не меняется..


