Вопросы по программированию CV AVR
|
|
Space | Дата: Пятница, 02.10.2009, 12:20 | Сообщение # 1 |
Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
| Задавайте свои вопросы
|
|
| |
SINOBI | Дата: Суббота, 10.10.2009, 07:23 | Сообщение # 2 |
Зарегистрирован 02.03.2009
Группа: Новички
Сообщений: 3
Город: Шурала
Статус: Offline
| Не подскажете а как сделать опрос нескольких кнопок и чтоб после нажатия одной кнопки через определённое время зажигался светодиод.Светодиод будет один а на каждой кнопке разная задержка включения.мк атмега8.Спасибо
Все глупости в мире делаются с умным лицом
|
|
| |
DeepBlack | Дата: Воскресенье, 11.10.2009, 23:13 | Сообщение # 3 |
Язык программированя: C/C++
Зарегистрирован 27.07.2009
Группа: Модераторы
Сообщений: 189
Город: Зеленоград
Статус: Offline
| http://www.robotsspace.ucoz.ru/publ/podkljuchenie_knopki/9-1-0-62 если разберетесь, то сделать то же самое на несколько кнопок не составит труда. а в плане разных задержек, надо . А затем перед включением диода вызвать функцию delay_ms() с разными значениями в скобках. Например, так Code #include <delay.h> #define LED1 PORTD.1 #define LED2 PORTD.2
//--где-то в main() // после срабатывания 1 кнопки delay_ms(100); //задержка 100мс LED1 = 1; delay_ms(50); //период горения светодиода LED1 = 0; // после срабатывания второй кнопки delay_ms(200); //задержка 200мс LED1 = 1; delay_ms(50); //период горения светодиода LED1=0;
|
|
| |
SINOBI | Дата: Понедельник, 12.10.2009, 04:35 | Сообщение # 4 |
Зарегистрирован 02.03.2009
Группа: Новички
Сообщений: 3
Город: Шурала
Статус: Offline
| насколько знаю <delay.h> задержка максимум чуть более минуты,а как реализовать от минуты и больше например 2,4,5 минут?
Все глупости в мире делаются с умным лицом
|
|
| |
DeepBlack | Дата: Понедельник, 12.10.2009, 09:09 | Сообщение # 5 |
Язык программированя: C/C++
Зарегистрирован 27.07.2009
Группа: Модераторы
Сообщений: 189
Город: Зеленоград
Статус: Offline
| можно в цикле многократно вызывать delay. Например, Code ... for (int i=0; i<120; i++) { //делаем на 2 минуты delay_ms(1000); //при каждом проходе задерживаемся на 1с } // итого получаем 2 минуты задержки. Способ очень простой. Недостаток в том, что ничего другого в это время происходить в программе не будет.
|
|
| |
SINOBI | Дата: Понедельник, 12.10.2009, 10:19 | Сообщение # 6 |
Зарегистрирован 02.03.2009
Группа: Новички
Сообщений: 3
Город: Шурала
Статус: Offline
| а по другому задержки через массивы и таймеры? Добавлено (12.10.2009, 10:00) --------------------------------------------- Code #include <mega8.h> #include <delay.h> #define LED PORTD.1 #define BUT1 PINB.0 #define BUT2 PINB.1 void main(void) {
// Port B PORTB=0xFF; DDRB=0x00;
// Port D PORTD=0x00; DDRD=0xFF;
while(BUT1==1) {
}
while(BUT1==0)
{ while(1) {
delay_ms(5000); LED=1;
} while(BUT2==0) {
while(1) {
delay_ms(10000); LED=1; } Вот сотворил что -то но не работает Добавлено (12.10.2009, 10:19) --------------------------------------------- может можно задержку как макросы оформлять и инклюдами подключать?
Все глупости в мире делаются с умным лицом
|
|
| |
DeepBlack | Дата: Понедельник, 12.10.2009, 17:56 | Сообщение # 7 |
Язык программированя: C/C++
Зарегистрирован 27.07.2009
Группа: Модераторы
Сообщений: 189
Город: Зеленоград
Статус: Offline
| Задержки через таймеры - отдельная тема, о которой я уже где-то тут писал. Через массивы - не очень понимаю, о чем речь, в виду того, что ни разу таким не пользовался. по поводу макросов... а чем не устраивает способ, который я выше приводил? Особых требований к производительности я пока не вижу. Теперь по Вашему коду. Quote (SINOBI) Code #include <mega8.h> #include <delay.h> #define LED PORTD.1 #define BUT1 PINB.0 #define BUT2 PINB.1 void main(void) {
// Port B PORTB=0xFF; DDRB=0x00;
// Port D PORTD=0x00; DDRD=0xFF;
while(BUT1==1){} // все понятно, ждем отпускания первой кнопки. (вторая при этом не доступна)
while(BUT1==0) // зачем этот цикл?
{ while(1) // ну а если программе все время все будет нравиться? будет постоянно гореть светодиод и все. {
delay_ms(5000); LED=1;
} while(BUT2==0) { почему опрос 2кнопки производится при нажатой первой? (находится в цикле while(BUT1==0)
while(1) {
delay_ms(10000); LED=1; } Записи LED=1 (включают диод) присутствуют. НО после горения его бы еще погасить надо (LED=0) Опрос нескольких кнопок надо производить с использованием if. И при срабатывание одной из кнопок вызывать обработку этой кнопки. например, так: Code .while (1) { . if (BUT1==0) // если сработала BUT1 . { . LED1=1; // включили диод . for (int i=0; i<120; i++){ // задержка как описанная выше . delay_ms(1000); . } . LED1=0; //выключили диод . } . if (BUT2==0) . { . LED1=1; . for (int i=0;i<180; i++){ . delay_ms(1000); . } . LED1=0; . } .} (точки в начале строки ставлю что-бы положение не потерялось) Добавлено (12.10.2009, 17:56) --------------------------------------------- в данном случае (при очень больших задержках) дребезг мешать не будет.
|
|
| |
Александр-=РУС=- | Дата: Вторник, 10.11.2009, 22:07 | Сообщение # 8 |
Зарегистрирован 10.11.2009
Группа: Новички
Сообщений: 3
Город: Omsk
Статус: Offline
| Разреши безтактный вопрос. Каким совтом пользовался во время создания и залития результата... как начал интересоваться экранами так вошол с полный ступор. Все время работал на меге8 на кварце 8мГц, програмное писал на "Programmers Notepad [WinAVR]" просто и удобно ейже заливал, с вашими примерами отказывается работать. =( Просто незнаю что делать, дельной информации никто не дает... посылает в поисковике искать... еслиб всеб так просто... Пришли плиз список совта и ссылку с пошаговым описанием процесса... Заранее спасибо С уважением Александр $IMAGE1$ собрано по аналогии.
Сообщение отредактировал Александр-=РУС=- - Вторник, 10.11.2009, 22:08 |
|
| |
Dimsan | Дата: Вторник, 10.11.2009, 22:18 | Сообщение # 9 |
Язык программированя: Си, Делфи
Зарегистрирован 18.06.2009
Группа: Опытные
Сообщений: 252
Город: Херсон
Статус: Offline
| В каком смысле отказывается работать? Не компилируется?
|
|
| |
Александр-=РУС=- | Дата: Вторник, 10.11.2009, 22:26 | Сообщение # 10 |
Зарегистрирован 10.11.2009
Группа: Новички
Сообщений: 3
Город: Omsk
Статус: Offline
| открывает, я ему :"Tools -> [WinAVR] Make All.", он мне :
|
|
| |
Doniak | Дата: Вторник, 10.11.2009, 22:29 | Сообщение # 11 |
Язык программированя: CodeVisionAVR Си
Зарегистрирован 19.03.2008
Группа: Модераторы
Сообщений: 584
Город: Кривой Рог (Днепропетровск)
Статус: Offline
| все потому что программа написана в CVAVR а вы её открываете в WinAVR.
|
|
| |
Александр-=РУС=- | Дата: Вторник, 10.11.2009, 23:07 | Сообщение # 12 |
Зарегистрирован 10.11.2009
Группа: Новички
Сообщений: 3
Город: Omsk
Статус: Offline
| Спабибо, буду ее искать. Ее же на этом сайте найти можно? Добавлено (10.11.2009, 23:07) --------------------------------------------- Три последних глупых вопроса:Скачал "CodeVisionAVR C Compiler Evaluation (версия 2.04.4а)",(такой подойдет?) куда надо ткнуть, чтоб он залил в контроллер все что я нахимичю и где в настройках настроить чтоб он заливал через LPT (использую имитацию программатора STK200, самый простой +) )
Сообщение отредактировал Александр-=РУС=- - Вторник, 10.11.2009, 23:17 |
|
| |
Dimsan | Дата: Вторник, 10.11.2009, 23:30 | Сообщение # 13 |
Язык программированя: Си, Делфи
Зарегистрирован 18.06.2009
Группа: Опытные
Сообщений: 252
Город: Херсон
Статус: Offline
| У меня стоит версия 1.25.7 поэтому отвечу относительно этой версии. Я думаю, что разница небольшая. 1) Чтобы выбрать программатор заходишь Settings - Programmer и там выбираешь свой STK200. 2) Заходишь Project - Configure, переходишь на вкладку After Make и устанавливаешь галочку Program the Chip. Тебе станут доступны настроки прошивания. Обрати внимание на галочку Program Fuse Bit(s). 3) Чтобы "собрать" проект и прошить МК нужно нажать Make the Project. Если компиляция прошла успешно, то доступна кнопка Program the Chip. Нажимаешь и в МК прошивается программа.
|
|
| |
sasha | Дата: Воскресенье, 15.11.2009, 19:30 | Сообщение # 14 |
Язык программированя: Си и баском(учусь)
Зарегистрирован 16.02.2009
Группа: Новички
Сообщений: 371
Город: Актюбинск
Статус: Offline
| вот проблема((( почему не компилируется? я понял так: это готовая прога? http://robotsspace.ucoz.ru/publ/4-1-0-15 от здесь с дисплейем... мгите начало подскажите)))
-=Наша_зависимость_от_роботов_возрастает_с_каждым_днем=-
|
|
| |
Dimsan | Дата: Воскресенье, 15.11.2009, 19:58 | Сообщение # 15 |
Язык программированя: Си, Делфи
Зарегистрирован 18.06.2009
Группа: Опытные
Сообщений: 252
Город: Херсон
Статус: Offline
| Программа написана в WinAVR. В чём ты компилируешь?
|
|
| |