Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2017, 21:07   #31
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Я вроде забацал. Только у меня схема немного другая:

1.jpg

2.jpg

3.jpg

Как ты видишь количество комбинаций велико и выходов (не тошо) "D", а и "С" не хватило. Пришлось ещё из "В" последних 2-пина брать...
Проблема: все светодиоды ровным светом светят, а последние 2-а - мигают. Где-то ошибку допустил. Хотелось бы, что ты поискал...
И ещё одна проблема: я избавился от сигнализации 4-х входов (диоды D1-D4) и сопротивления "R13" - не получалось с ними. Может быть "R13" надо было оставить по причине дребезга контактом или (если смотреть по твоей схеме) защита от короткого на нём выполнена... Не знаю... Может быть надо было подтягивать на входа не "+", а землю внутри МК и уже от этого плясать....
Ну ладно сделай пока так, а потом будешь думать. В принципе задача 90% выполнена...
.

Последний раз редактировалось ura_111; 07.10.2017 в 21:20.
ura_111 вне форума Ответить с цитированием
Старый 08.10.2017, 23:45   #32
scccorp
Пользователь
 
Регистрация: 05.10.2017
Сообщений: 44
По умолчанию

Цитата:
Сообщение от ura_111 Посмотреть сообщение
Я вроде забацал. Только у меня схема немного другая:

Вложение 89710

Вложение 89711

Вложение 89712

Как ты видишь количество комбинаций велико и выходов (не тошо) "D", а и "С" не хватило. Пришлось ещё из "В" последних 2-пина брать...
Проблема: все светодиоды ровным светом светят, а последние 2-а - мигают. Где-то ошибку допустил. Хотелось бы, что ты поискал...
И ещё одна проблема: я избавился от сигнализации 4-х входов (диоды D1-D4) и сопротивления "R13" - не получалось с ними. Может быть "R13" надо было оставить по причине дребезга контактом или (если смотреть по твоей схеме) защита от короткого на нём выполнена... Не знаю... Может быть надо было подтягивать на входа не "+", а землю внутри МК и уже от этого плясать....
Ну ладно сделай пока так, а потом будешь думать. В принципе задача 90% выполнена...
.
спасибо огромное завтра обязательно попробую. Насчёт R13 это нагрузочный и да, он убирает дребезг контактов. Можешь объяснить что делает команда "continue" какую роль она играет в коде?
scccorp вне форума Ответить с цитированием
Старый 09.10.2017, 07:07   #33
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Этот оператор используется только в связке с циклами (в данном случае "While(1)"), а вот, что он делает:

https://www.youtube.com/watch?v=ev-iWQ_N_cU

p.s.: ради эксперимента, попробуй симуляцию с ним и без него.

Последний раз редактировалось ura_111; 09.10.2017 в 07:09.
ura_111 вне форума Ответить с цитированием
Старый 09.10.2017, 09:53   #34
scccorp
Пользователь
 
Регистрация: 05.10.2017
Сообщений: 44
По умолчанию

Цитата:
Сообщение от ura_111 Посмотреть сообщение
Этот оператор используется только в связке с циклами (в данном случае "While(1)"), а вот, что он делает:

https://www.youtube.com/watch?v=ev-iWQ_N_cU

p.s.: ради эксперимента, попробуй симуляцию с ним и без него.
Код:
#include <avr/io.h>
#include <util/delay.h>



int main(void)
{
	_delay_ms(100);
	DDRD = 0xFF; //порт B - выход
	PORTD = 0b00000000; //устанавливаем 0 на выходе
	DDRB = 0xC0; //порт B - вход
	PORTB = 0b00011111; //подключаем нагрузочный резистор
	
	
	

   while (1) 
       {
		   
		   if (PINB == 0b00000100)
		   {
			   PORTD=0b00000001;
			   continue;
		   }
		  PORTB=0b00000000;
		}
}
попробовал так, все-равно не загорается. убирал continue та же беда.
еще пишет ошибку "#warning "F_CPU not defined for <util/delay.h>" [-Wcpp]"
Код:
#include <avr/io.h>
#include <util/delay.h>



int main(void)
{
	_delay_ms(100);
	DDRD = 0xFF; //порт B - выход
	PORTD = 0b00000000; //устанавливаем 0 на выходе
	DDRB = 0xC0; //порт B - вход
	//PORTB = 0b00011111; //подключаем нагрузочный резистор
	
	
	

   while (1) 
       {		   
		   if (PINB ==  0b00000100)
		   {
			   PORTD=0b00000001;
			   continue;
		   }
		  PORTB=0b00000000;
		}
}
а если так, тогда при включении выключении он загорается и постоянно горит

Последний раз редактировалось scccorp; 09.10.2017 в 10:10.
scccorp вне форума Ответить с цитированием
Старый 09.10.2017, 10:54   #35
scccorp
Пользователь
 
Регистрация: 05.10.2017
Сообщений: 44
По умолчанию

вот такое соотношение вход выход должно быть у меня
Изображения
Тип файла: png Безымянный.png (14.2 Кб, 29 просмотров)
scccorp вне форума Ответить с цитированием
Старый 09.10.2017, 20:30   #36
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Цитата:
Сообщение от scccorp Посмотреть сообщение
вот такое соотношение вход выход должно быть у меня
оно приблизительно так и получается:

https://www.youtube.com/watch?v=R4BsdkyHuFg

Странно, что у тебя не получилось того же самого.
Может быть проблемы с Протеусом или Atmel Studio.
А ну переустанови у себя эти программы и попробуй ещё раз.
ura_111 вне форума Ответить с цитированием
Старый 10.10.2017, 09:35   #37
scccorp
Пользователь
 
Регистрация: 05.10.2017
Сообщений: 44
По умолчанию

Цитата:
Сообщение от ura_111 Посмотреть сообщение
оно приблизительно так и получается:

https://www.youtube.com/watch?v=R4BsdkyHuFg

Странно, что у тебя не получилось того же самого.
Может быть проблемы с Протеусом или Atmel Studio.
А ну переустанови у себя эти программы и попробуй ещё раз.
а что у тебя с фьюзами ? по умолчанию ? и как контроллер настроен?
и тактирование какое?
просто может у меня сам контроллер не правильно настроен
все нормально только вот кнопка работает как переключатель, тобиш поменял комбинацию нажал кнопку загорелся соответствующий диод почему так может быть?

Последний раз редактировалось scccorp; 10.10.2017 в 10:31.
scccorp вне форума Ответить с цитированием
Старый 10.10.2017, 11:26   #38
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

В этой ветке этого форума - да про фьюзы... Спорю, что 70% даже очень "гуристых" здешних - не в курсе. Не все же программируют МК, да и не просто МК, а конкретно AVR. Тема явно не туда, а в "микроконтроллеры".
digitalis вне форума Ответить с цитированием
Старый 10.10.2017, 11:32   #39
scccorp
Пользователь
 
Регистрация: 05.10.2017
Сообщений: 44
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
В этой ветке этого форума - да про фьюзы... Спорю, что 70% даже очень "гуристых" здешних - не в курсе. Не все же программируют МК, да и не просто МК, а конкретно AVR. Тема явно не туда, а в "микроконтроллеры".
ну с фьюзами ладно разберусь. вопрос стал другой почему кнопка как переключатель работает а не как кнопка
scccorp вне форума Ответить с цитированием
Старый 10.10.2017, 11:57   #40
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

1. Дребезг контактов
2. Прерывание настроено на не "по фронту", а "по изменению уровня" .
А что надо: пока кнопка нажата - выдача набора сигналов, отпущена - исходное состояние? Тогда по таймеру отслеживать именно это событие: "ни одна не нажата -> исходное" .
digitalis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Порты Novichek_1996 Помощь студентам 3 22.04.2014 19:55
Не могу открыть порты. aszaszasz Помощь студентам 0 26.05.2010 14:27
Порты Троян Помощь студентам 1 12.02.2010 14:55
порты Rabitka Безопасность, Шифрование 0 16.10.2009 16:09
COM Порты Skazi21101 Помощь студентам 0 02.11.2008 12:24