Страница 17 из 421

Добавлено: Вт сен 16, 2008 09:59:25
chuchxe
KIP писал(а): Пока всё изучаю на теории и в симуляторах - там деление после компиляции проходит быстро.
Дак в симуляторах тоже можно посмотреть алгоритм - в PROTEUS просто нужно включить отображение АСМ листинга

Добавлено: Ср сен 17, 2008 17:15:17
Степаныч
Всем привет! Только начал работать с CVAVR да и с СИ тоже!!Решил сделать часы с выводом времени на LCD и сразу возник вопрос: Как организовать отсчет секунд??Так алгоритм понимаю т.е нужно создать переменную например Sec, далее присвоить значение 0, потом прибавить 1, потом организовать задержку в 1000ms, затем опять прибавить 1 и т.д.
Ну должно быть так
While(sec++); --- а как сделать с интервалом в 1 сек не знаю если delay_ms(1000); то куда его тут вставить??
Короче как заставить программу прибавлять 1 к значению перменной с интервалом в 1000ms с бесконечным циклом?? И еще если у кого нибудь есть какие нибудь ссылки на подобные исходники программ часов(неважно каких) на CVAVR дайте чтоб непосредственно учиться на каком либо протипе проекта!

Добавлено: Ср сен 17, 2008 17:41:57
ARV
вообще-то часы желательно делать по прерываниям от таймера, но в принципе можно и без... вот вам намек, как сделать бесконечный цикл, чтобы в нем каждую секунду переменная увеличивалась на 1:

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

int Sec;
while(1){
   delay_ms(1000);
   Sec++;
}
смотрите внимательно - все четко по вашему алгоритму:
Степаныч писал(а):нужно создать переменную например Sec, далее присвоить значение 0, потом прибавить 1, потом организовать задержку в 1000ms, затем опять прибавить 1 и т.д.

Добавлено: Ср сен 17, 2008 18:35:57
tych
Степаныч писал(а): если у кого нибудь есть какие нибудь ссылки на подобные исходники на CVAVR дайте чтоб непосредственно учиться на каком либо протипе проекта
Посмотрите на стр. 6 в моей домашней страничке.

Добавлено: Ср сен 17, 2008 19:32:34
KIP
Нежданно возникла проблемма с компиляцией: по каким-то причинам не создаётся .cof файл c расширением __.c. Не могу понять в чём дело - в конфиге этот тип файла указан.
Глюки пошли после установки CVAVR на новый комп.

Добавлено: Ср сен 17, 2008 19:41:49
ARV
посмотрите на домашнюю стр. tych:))) :))) :)))

Добавлено: Ср сен 17, 2008 19:50:04
tych
KIP писал(а): не создаётся .cof файл c расширением __.c
Не волнуйтесь - еще ни кому не удалось заставить CVAVR такой создать !
KIP писал(а): Не могу понять в чём дело
дело в том что это 2 разных файла.

Добавлено: Ср сен 17, 2008 20:30:51
KIP
tych писал(а): дело в том что это 2 разных файла.
Да, я ошибся.
У меня не создаётся c расширением __.c. В итоге VMLAB не может работать.

Добавлено: Ср сен 17, 2008 20:34:03
KIP
ARV писал(а):посмотрите на домашнюю стр. tych:))) :))) :)))
Собствено по ней и осваивал эту связку CV и VMLAB, всё было впорядке.

Добавлено: Ср сен 17, 2008 20:34:51
tych
Прекрасно гадать на кофейной гуще которая в каждом доме есть.

А ваш проект не у каждого имеется.

Добавлено: Ср сен 17, 2008 20:40:04
ARV
KIP писал(а):Собствено по ней и осваивал эту связку CV и VMLAB, всё было впорядке.
результат на лицо... продолжайте в том же духе :) я ж не зря вас направляю к истокам знаний :)))

Добавлено: Ср сен 17, 2008 21:13:27
KIP
tych писал(а): А ваш проект не у каждого имеется.
Дело в программе, что-то слетело...
Даже в рабочих некогда проектах, сейчас попробовал, файл для симуляотра не обновляется.

Установил версию посвежее-работает)

Добавлено: Ср сен 17, 2008 23:39:35
KIP
Рано я начал радоваться. Нормально прошли только первые несколько компиляций, последущие уже не вносили изменения в файл _.с. VMLAB не реагировал на изменения кода.

Если кто-то сталкивался с чем-то подобным или имеет предположения прошу ответить. Бросать CVAVR очень не хочу.

Добавлено: Пт сен 19, 2008 12:30:07
Барсик
KIP писал(а):...Бросать CVAVR очень не хочу.
Забейте в VMLAB и используйте в качестве отладчика AVR Studio. Как прикрутить AVR Studio к CodeVisionAVR, написано здесь: http://www.pro-radio.ru/controllers/6585/
А Ваша проблема, как отсчитать 1 секунду, обсуждалась здесь: http://radiokot.ru/forum/viewtopic.php? ... &start=580

Добавлено: Пт сен 19, 2008 13:07:40
KIP
Барсик писал(а): Забейте на VMLAB и используйте в качестве отладчика AVR Studio. Как прикрутить AVR Studio к CodeVisionAVR, написано здесь: http://www.pro-radio.ru/controllers/6585/
Судя по описанию, файл с расширением _.c AVR Studio не нужен - буду пробовать.

Барсик писал(а):А Ваша проблема, как отсчитать 1 секунду, обсуждалась здесь: http://radiokot.ru/forum/viewtopic.php? ... &start=580
Это спрашивал не я, такое я уже умею)

Добавлено: Пн сен 22, 2008 12:34:06
Telek
Непонятки с кодом:

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

signed char menu_V_position;

menu_V_position-- ;
if (menu_V_position<0) menu_V_position=2;
Если menu_V_position становится меньше нуля, то условие не срабатывает... т.е. как будто -1 больше нуля...
если вместо signed char указать int - работает...
Как победить?

Добавлено: Пн сен 22, 2008 17:11:55
Krik99
попробуй так:

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


char menu_V_position; 

menu_V_position-- ; 
if (menu_V_position<0) menu_V_position=2;


Добавлено: Пн сен 22, 2008 17:38:36
Telek
Krik99 писал(а):попробуй так:

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


char menu_V_position; 

menu_V_position-- ; 
if (menu_V_position<0) menu_V_position=2;

На так CVAVR соответственно пишет ворнинг, т.к. "меньше 0" не входит в диапазон char и соответвенно тоже не работает... т.к. menu_V_position-- дает 255,254,253 и т.д. Т.е. так как и должно быть, т.к. чар по умолчанию без знака.
Вот какого болта оно не считает "меньше нуля" -1,-2,-3
Причем в моем варианте if (menu_V_position==-1) menu_V_position=2;
работает, но хочется общего варианта "<0" - а оно не работает...

Добавлено: Пн сен 22, 2008 18:23:41
tych
Telek писал(а):Вот какого болта оно не считает "меньше нуля" -1,-2,-3
...
Наверно нужно переубедить CVAVR в свойствах проекта что ЧАР и меньше нуля бывает.

Добавлено: Пн сен 22, 2008 20:41:35
Telek
tych писал(а):
Telek писал(а):Вот какого болта оно не считает "меньше нуля" -1,-2,-3
...
Наверно нужно переубедить CVAVR в свойствах проекта что ЧАР и меньше нуля бывает.
А можно поподробней? где его еще убеждать?
Вроде явно написал signed char?
более того, если написать так:

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

signed char zero;
signed char menu_V_position; 

zero=0;
menu_V_position-- ;
if (menu_V_position<zero) menu_V_position=2;
т.е. когда явно идет сравнение двух signed char, то все равно болт...