Страница 40 из 115

Добавлено: Чт апр 09, 2009 19:03:29
Барсик
А кто Вам мешает вставить переменную в свою любимую функцию delay ? И при нажатии кнопок увеличивать или уменьшать эту переменную?

Добавлено: Чт апр 09, 2009 19:12:40
ikarab
Барсик писал(а):А VMLAB такой же бесплатный как и "Протеус"?
VMLAB free.

Добавлено: Чт апр 09, 2009 19:20:42
SeregaT
Барсик писал(а):А кто Вам мешает вставить переменную в свою любимую функцию delay ?
Да я пытался, там ошибку выдало, что-то про константу. А так бы удобно было...

Добавлено: Чт апр 09, 2009 21:35:44
ikarab
SeregaT писал(а):я пытался, там ошибку выдало...
Посмотрите "Микроконтроллеры AVR для начинающих" и другие книги в библиотеке книг для скачивания и чтения, или хотя бы хелп к используемому компилятору !

Добавлено: Чт апр 09, 2009 21:53:20
Барсик
SeregaT писал(а):...там ошибку выдало, что-то про константу...
Ну и напишите, как Вас компилятор обматерил. Будем разбираться... Да, и текст программы - в студию. В виде присоединённого файла.

Добавлено: Пт апр 10, 2009 18:54:02
SeregaT
Барсик писал(а):Да, и текст программы - в студию.
Ну в виде файла, оно не обязательно, вот сам текст (это чисто для примера конечно):
void main(void)
{
int i;
i=10;
while(1)
{
PORTD.0=1;
delay_us (i);
PORTD.0=0;
};
}

Компилятор пишет на это:
Error: F:\AVR\AVR-projects\CVA\test4\test4.c(34): constant integral expression required
Я знаю, что тут не правильно...
Просто мне надо, чтобы в качестве задержки использовать значение переменной.

Добавлено: Пт апр 10, 2009 18:56:52
Arlleex
#define используй...

Добавлено: Пт апр 10, 2009 19:05:30
ikarab
Выше написано:
SeregaT писал(а):я пытался, там ошибку выдало...
Посмотрите "Микроконтроллеры AVR для начинающих" и другие книги в библиотеке книг для скачивания и чтения, или хотя бы хелп к используемому компилятору !
Хотябы ! ПОШЕВИЛИСЬ САМ ! чуток

Добавлено: Пт апр 10, 2009 19:10:43
SeregaT
Искать ответ на один маленький вопрос в куче книг или в хелпе (который еще и на английском) это долго. Я курс читаю по порядку, но видимо до этого еще не дошёл.
P.S. Да и где вообще брать этот хелп?

Добавлено: Пт апр 10, 2009 19:24:50
ikarab
SeregaT писал(а):где вообще брать этот хелп?
АТПАТТТТТТТТТТТТТТТТ Ужоссссссс

глазами позырить МЕНЮ той проги что юзайешшшшшш.

в хелпе delay воткнуть в поиск ...

Ох как долго. :cry: :cry: :cry:

Добавлено: Пт апр 10, 2009 19:25:30
megasvintus
У меня есть джентельменский набор- Исчерпывающее описание CVAVR и ВСЕХ его функций и настроек, в том числе и скрытых. На русском! + хрестоматия начинающего- книга Белова "Создаем устройства на микроконтроллерах. Надо кому? + немного недоруссифицированный мной CVAVR. К сожалению других компиляторов я не знаю

Добавлено: Пт апр 10, 2009 19:28:30
SeregaT
megasvintus писал(а):Надо кому?
Мне надо!!! :)

Добавлено: Пт апр 10, 2009 19:30:12
ikarab
SeregaT писал(а):
megasvintus писал(а):Надо кому?
Мне надо!!! :)
А где библиотека скачать книги вы КОНЕЧНО ЖЕ не занете ! ДА ???

Добавлено: Пт апр 10, 2009 19:32:17
megasvintus
Я щас как раз делаю аплоад всего этого добра. Как закончу- выложу ссылку и пароль на архив

*Все книги исключительно для ознакомления, после чего согласно законодательству вы обязаны купить их печатные издания :)

Добавлено: Пт апр 10, 2009 19:40:02
SeregaT
Так кто мне может подсказать по моему вопросу?

Добавлено: Пт апр 10, 2009 19:46:32
megasvintus
по вашему вопросу- объявите переменную i unsigned int

Ибо в хидерах эти функции объявлены так :
void delay_us(unsigned int n);
void delay_ms(unsigned int n);

а вы туда суете просто int - число со знаком :)))

Добавлено: Пт апр 10, 2009 20:24:37
SeregaT
megasvintus писал(а):по вашему вопросу- объявите переменную i unsigned int
А это что значит:
Error: must declare first in block?
Что там надо еще объявить?
Что у меня тут не так:
void main(void)
{
unsigned int i;
i=10;
while(1)
{
PORTD.0=1;
void delay_us(unsigned int i);
PORTD.0=0;
};
}

Добавлено: Пт апр 10, 2009 20:39:51
megasvintus
эта ошибка означает что количетство открытых и закрытых скобок { не соотрветствует. Печатайте листинг внимательнее :))) :wink:

Вообще старайтесь ничего не делать в функции main. создавайте выше нее функции, объявляйте переменные, а потом только вызывайте эти функции в цикле- будет меньше опечаток 8)

и вот еще ошибка: void delay_us(unsigned int i); -- так нельзя писать
при ВЫЗОВЕ функции void опускают. правильно так:


unsigned int i;

<i>

delay_us(i);



Во ссылка:
http://depositfiles.com/files/xalhswtjw

Вот пароль: WWW.RADIOKOT.RU

Добавлено: Пт апр 10, 2009 20:43:40
SeregaT
megasvintus писал(а): правильно так:
unsigned int i;
<i>
delay_us(i);
Я пробовал так. Пишет: Error: constant integral expression required

Добавлено: Пт апр 10, 2009 20:49:09
megasvintus
Объявляем функцию : void qqq (void) { //1
unsigned int a=0;
delay_ms(100);
a++;
delay_us(a);
} //1

Затем уже в бесконечном цикле просто напишите :
qqq();

усе будет рулить :)))