Мелкие вопросы по МК и ПЛИС.
- Сообщения: 79
- Зарегистрирован: Пт июн 15, 2012 13:11:36
Извините конечно но вы уже опытные. А я что я только учусь. У меня огромное желание уметь программировать а кроме вас меня никто не научит мне не на кого надеяться кроме вас .
- Реклама
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
если есть желание (а литературы по AVR сейчас хоть отбавляй), то обязательно научитесь. Научить этому невозможно..... У меня огромное желание уметь программировать а кроме вас меня никто не научит мне не на кого надеяться .
PS. Грамотно сформулировать вопрос - это почти полдела сделать, так что начните с этого ......
yron, ответил в личку.
[color=#006699]In der großen Familie nicht kluven klatz-klatz![/color]
yronДа без тех задания сложно, а без схемы еще сложнее
Короче проверил вашу конструкцию в протеусе, так и не понял как должно ваше устройство работать.
вроде загораются три огонька в зависимости от клавиши 1(Pind0) и датчика 2(Pind1)
нет выключения третьей ноги, что она так всегда должна в высоком находиться?
можно вашу конструкцию сделать на команде switch
три выхода и два входа это пять бит.Получается одна переменная типа char.
Код: Выделить всё
while(PIND.0==1) {}//Тупим в цикле пока кнопка 1 не нажата
delay_us(400);//Тут пауза
if (PINB.0==1)//Если на выходе 0 порта Б лог. один то <<--уверены?
{ PORTB.0=0; //выключаем выход 0 порта Б!!!
PORTB.1=0; }//выключаем выход 1 порта Б Зачем??
вроде загораются три огонька в зависимости от клавиши 1(Pind0) и датчика 2(Pind1)
нет выключения третьей ноги, что она так всегда должна в высоком находиться?
можно вашу конструкцию сделать на команде switch
три выхода и два входа это пять бит.Получается одна переменная типа char.
Последний раз редактировалось vitalik_1984 Сб июн 16, 2012 18:50:07, всего редактировалось 1 раз.
В поисках истины человек развивается.
Насколько я понял - в "ТЗ" ещё речь шла о времени через какое нужно переключать.
Тут 2 пути - либо задействовать таймеры, либо ставить счётчик. Второе для начинающего предпочтительнее.
Тут 2 пути - либо задействовать таймеры, либо ставить счётчик. Второе для начинающего предпочтительнее.
- Реклама
- Сообщения: 79
- Зарегистрирован: Пт июн 15, 2012 13:11:36
vitalik_1984 А работать должна так - нажимаем первую кнопочку сразу загорается первый светодиод после 5 сек загорается 2 светодиод . если нажата 2 кнопочка загорается и 3 светодиод а если не нажата то 2 светодиод должен гаснуть и ждать опять 5 сек после чего опать загорает .
Товарищ Eprinter написал программу Спасибо ему большое , но выдает одну ошибочку 'bit' type not supported for chips with AVR8L core в строке bit on_off; // 0 - выкл, 1 - вкл
МК Atmega8 В программе CodevisionAvr Подскажите что нужно подправить потому что Товарищ Eprinter появится только завтра.
Товарищ Eprinter написал программу Спасибо ему большое , но выдает одну ошибочку 'bit' type not supported for chips with AVR8L core в строке bit on_off; // 0 - выкл, 1 - вкл
МК Atmega8 В программе CodevisionAvr Подскажите что нужно подправить потому что Товарищ Eprinter появится только завтра.
Последний раз редактировалось yron Вс июн 17, 2012 09:09:52, всего редактировалось 1 раз.
может мы бы и подсказали,но мы не видели вашей программы,что сделал Eprinter
так что могу посоветовать сменить тип бит на тип char.
хоть он отличается размером.но для вашего применения этого кристалла думаю памяти хватит.
так что могу посоветовать сменить тип бит на тип char.
хоть он отличается размером.но для вашего применения этого кристалла думаю памяти хватит.
В поисках истины человек развивается.
- Сообщения: 79
- Зарегистрирован: Пт июн 15, 2012 13:11:36
Вот программа .
Если нужно что то подправить подскажите .
Вместо bit поставил char заработало прошил контроллер но работает не так как надо .
А работает так
Когда на PD.2 появляется логический ноль (кнопка 1 нажата) программа выдает на PD.5 лог.1 . Дальше ничего не происходит. Но если на PD.3 появится лог.0 (кнопка 2 нажата ) и удерживается ,на PD.7 программа выдает лог.1 а подключенный на PD.6 светодиод начинает мигать.
Если нужно что то подправить подскажите .
Вместо bit поставил char заработало прошил контроллер но работает не так как надо .
А работает так
Когда на PD.2 появляется логический ноль (кнопка 1 нажата) программа выдает на PD.5 лог.1 . Дальше ничего не происходит. Но если на PD.3 появится лог.0 (кнопка 2 нажата ) и удерживается ,на PD.7 программа выдает лог.1 а подключенный на PD.6 светодиод начинает мигать.
- Вложения
-
- avr.txt
- (3.12 КБ) 157 скачиваний
Последний раз редактировалось yron Вс июн 17, 2012 09:11:30, всего редактировалось 6 раз.
вообще ваше тех задание не вполне понятно.нажали на 1 кнопку и отпустили или держим?при нажатой 1 кнопке можно происходить переключение светодиодов?
зачем вы удерживаете эту кнопку?
как должно происходить отключение системы от этой кнопки?отпусканием или повторным нажатием.
и портянки такие незачем тут писать.учитесь вложения делать.
зачем вы удерживаете эту кнопку?
как должно происходить отключение системы от этой кнопки?отпусканием или повторным нажатием.
и портянки такие незачем тут писать.учитесь вложения делать.
В поисках истины человек развивается.
- Сообщения: 79
- Зарегистрирован: Пт июн 15, 2012 13:11:36
Задание такого
От кнопки 1 включается и выключается программа . Нажимаем 1 кнопку загорается 1 светодиод после 5 секунд как загорелся 1 светодиод загорается 2 светодиод после 10 секунд как загорелся 2 светодиод проверяется состояние 2 кнопки если она не нажата программа рестартируется на то места где идет ожидание 5 секунд (то есть 2 светодиод гаснет и опять идет отсчет 5секунд) а если кнопка 2 нажата загорается 3 светодиод . Как отпустили 2 кнопку программа рестартируется также как если кнопка и не нажималась . после чего нажимаем 1 кнопку и все выключается . И еше 1 кнопкой должна быть возможность выключить программу в любой момент .
От кнопки 1 включается и выключается программа . Нажимаем 1 кнопку загорается 1 светодиод после 5 секунд как загорелся 1 светодиод загорается 2 светодиод после 10 секунд как загорелся 2 светодиод проверяется состояние 2 кнопки если она не нажата программа рестартируется на то места где идет ожидание 5 секунд (то есть 2 светодиод гаснет и опять идет отсчет 5секунд) а если кнопка 2 нажата загорается 3 светодиод . Как отпустили 2 кнопку программа рестартируется также как если кнопка и не нажималась . после чего нажимаем 1 кнопку и все выключается . И еше 1 кнопкой должна быть возможность выключить программу в любой момент .
кнопка 1 нажата или нажали и отпустили?А работает так
Когда на PD.2 появляется логический ноль (кнопка 1 нажата) программа выдает на PD.5 лог.1 . Дальше ничего не происходит.
В поисках истины человек развивается.
- Сообщения: 79
- Зарегистрирован: Пт июн 15, 2012 13:11:36
Это значит нажали кратковременно на кнопку включается первый светодиод.
Через пять сек включается второй.
Если на второй кнопке ноль, то через 10 сек после включения или после нажатия на кнопку включаем третий светодиод.
Если на второй кнопке единица, то мигаем каждые пять секунд вторым светодиодом.
Так?
Через пять сек включается второй.
Если на второй кнопке ноль, то через 10 сек после включения или после нажатия на кнопку включаем третий светодиод.
Если на второй кнопке единица, то мигаем каждые пять секунд вторым светодиодом.
Так?
В поисках истины человек развивается.
- Сообщения: 79
- Зарегистрирован: Пт июн 15, 2012 13:11:36
Поправлю
1.Это значит нажали кратковременно на кнопку включается первый светодиод. (для избежания дребезга контактов программа срабатывает если жмем на кнопку 1-2сек.)
2.Через пять сек включается второй.
3.Если на второй кнопке ноль, то через 10 сек после включения первого светодиода включаем третий светодиод.
4.Если на второй кнопке единица, то все начинается с опять со 2 строки (2.Через пять сек включается второй.)
5.Нажимаем первую кнопку тоже с удержанием в 1-2сек и все выключается.
1.Это значит нажали кратковременно на кнопку включается первый светодиод. (для избежания дребезга контактов программа срабатывает если жмем на кнопку 1-2сек.)
2.Через пять сек включается второй.
3.Если на второй кнопке ноль, то через 10 сек после включения первого светодиода включаем третий светодиод.
4.Если на второй кнопке единица, то все начинается с опять со 2 строки (2.Через пять сек включается второй.)
5.Нажимаем первую кнопку тоже с удержанием в 1-2сек и все выключается.
Это потому, что лепил наспех и без чёткого ТЗ (технического задания). Про исключения дребезга вообще ни слова не было. Вечером изменю и даже отлажу, так и быть, сейчас нет возможности.yron писал(а):Когда на PD.2 появляется логический ноль (кнопка 1 нажата) программа выдает на PD.5 лог.1 . Дальше ничего не происходит. Но если на PD.3 появится лог.0 (кнопка 2 нажата ) и удерживается ,на PD.7 программа выдает лог.1 а подключенный на PD.6 светодиод начинает мигать.
[color=#006699]In der großen Familie nicht kluven klatz-klatz![/color]
- Сообщения: 79
- Зарегистрирован: Пт июн 15, 2012 13:11:36
Извиняюсь про дребезг я узнал только после чего почитал книжку. А с постановкой технического задания конечно я облажался.
Спасибо вам большое Eprinter. Очень много информации в книжках про avr зачитался настолько что не заметил что уже 4 часа ночи.
Спасибо вам большое Eprinter. Очень много информации в книжках про avr зачитался настолько что не заметил что уже 4 часа ночи.
Как только в задании звучит слово кнопка или вообще механический контакт, так АВТОМАТИЧЕСКИ, без всяких дополнительных условий возникает условие подавления дребезга. Кнопки, механические энкодеры, контакты реле - все это требует учета дребезга при включении и выключении.Eprinter писал(а):Про исключения дребезга вообще ни слова не было.
Начальные эксперименты с кнопками? Параллельно кнопке попробуйте кондёр поставить, на 100 нан, например. Аппаратный давитель дребезга. 
- Сообщения: 79
- Зарегистрирован: Пт июн 15, 2012 13:11:36
Кондер эффективно помогаем.
Но хотелось бы увидеть решение и в программном виде .
Но хотелось бы увидеть решение и в программном виде .
Мне кажется, учите полумерамhybroid писал(а):Начальные эксперименты с кнопками? Параллельно кнопке попробуйте кондёр поставить, на 100 нан, например. Аппаратный давитель дребезга.


