Мелкие вопросы по МК и ПЛИС.
- Сообщения: 9
- Зарегистрирован: Ср фев 13, 2013 11:47:56
- Реклама
Может, заменить whil-ы на if'ы else-if'ы?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
проверяете в железе или симуляторе? На первый взгляд должно работать, но нужны подтягивающие к корпусу резисторы на всех входах. Если их нет, то можно предположить, что при включении на входах вначале низкий уровень, переключатель сразу дает высокий на одном входе, срабатывает нужный while, выставляет нужное значение на выходе, далее входы "подплывают" к логической единице и ни один while уже не сработает.uuuu писал(а):вы как будто меня не слышите?
Можно сделать кнопки (переключатель) с замыканием на корпус, а не на плюс, включить внутреннюю подтяжку к питанию и не ставить внешние резисторы.
Ваш код работает так,что светодиод горит только пока нажата кнопка или какой либо выключатель.А uuuu, похоже, нужно чтобы при нажатии переключалось.unalex писал(а): проверьте сначала, потом пишите что не так
uuuu ваш код отлично работает, сейчас проверил в симуляции. Активное положение кнопок- 1.
При совместно включенном состоянии ничего не происходит, и это понятно, так как эти состояния не описаны.
И не нужно одно и то же повторять несколько раз. Лучше нарисуйте схемку сего устройства и приложите инициализацию портов, может где подтяжка включена, а это как раз не описанное состояние.
Я уже помогал делать проект для включения реле в нужной последовательности через нажатие на кнопки плюс-минус, могу приложить.
.....uuuu писал(а):вы как будто меня не слышите?вот код:
а вы меня слышите??? мой код делает то же самое в одну строчку!!! и заметьте работает!!!
для тех кто в танке
Код: Выделить всё
while(1)
{
PORTD = ~(PINB & 0x07);
}Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
- Реклама
ну а если вам хочется с костылями, то так
Код: Выделить всё
while(1)
{
if(PINB==0b00000001) //первое положение
{PORTD=0b11111110;}
else if(PINB==0b00000010) //второе положение
{PORTD=0b11111101;}
else if(PINB==0b00000100) //третье положение
{PORTD=0b11111011;}
}Код: Выделить всё
#define MASK 0x07
while(1)
{
switch(~(PINB&MASK))
{
case 1:
//делаем что надо
break;
case 2:
//делаем что надо
break;
//...и т.д.
default:
//делаем что должно быть по умолчанию
}
}Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
unalex Я ему то же самое в этом сообщении предложил, ему не подходит
Нужно чтобы его вариант заработал, он в общем то и работает, только видать железо подвело. Или подтяжка зря включена, как и сказал a_skr , так и происходит.
- Сообщения: 9
- Зарегистрирован: Ср фев 13, 2013 11:47:56
1)вот схема,только ножки индикатора не все задействованы,я ещё не определился,какая ножка порта будет соответствовать ножке индикатора
2)тестирую в proteus
3)unalex,ваш код работает PORTD = ~(PINB & 0x07),при переключении он зажигает новый сегмент,но не тушит старый(до этого включенный)
4)и ещё просьба,можно писать код в двоичной системе,мне так проще оперировать ножками
,а то я в этом деле новичок 
2)тестирую в proteus
3)unalex,ваш код работает PORTD = ~(PINB & 0x07),при переключении он зажигает новый сегмент,но не тушит старый(до этого включенный)
4)и ещё просьба,можно писать код в двоичной системе,мне так проще оперировать ножками
Последний раз редактировалось uuuu Сб фев 16, 2013 12:49:43, всего редактировалось 1 раз.
uuuu
1 повесь к каждой ноге подтягивающий резистор к земле(скорее всего поэтому и не тушится старый)
2 мой пример кода работает, но порт D повторяет что на порте B, если нужно другие ноги зажигать то надо либо переделать, либо пользоваться другими вариантами
1 повесь к каждой ноге подтягивающий резистор к земле(скорее всего поэтому и не тушится старый)
2 мой пример кода работает, но порт D повторяет что на порте B, если нужно другие ноги зажигать то надо либо переделать, либо пользоваться другими вариантами
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
- Сообщения: 9
- Зарегистрирован: Ср фев 13, 2013 11:47:56
- Сообщения: 172
- Зарегистрирован: Пн мар 19, 2012 13:04:11
Ребят, а куда нужно подключать выход REF_CLK? У меня атмега64, программатор MKII, написанно что нужно подключить к выводу XTAL1, никак не могу понять, там ведь кварц должен стоять. Подскажите пожалуйста.
Не знаю про ref_clk, откуда вы его взяли? У программаторов обычно sck, подключается к соотв. порту МК spi для программирования.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
REF_CLK - обычно используется для внешнего тактирования прошиваемого микроконтроллера в случае неправильной установки фьюзов. В обычном режиме никуда его подключать не надо.
Ставим плюсы: )
- Сообщения: 172
- Зарегистрирован: Пн мар 19, 2012 13:04:11
А в необычном? Я понимаю для чего он используется, я не понимаю куда его подключать. Что бы прошить фьюзы, надо что бы МК тактировался извне, т.е программатором, но куда подключтиь этот вывод, к XTAL 1 к которому подключен кварц?ibiza11 писал(а):REF_CLK - обычно используется для внешнего тактирования прошиваемого микроконтроллера в случае неправильной установки фьюзов. В обычном режиме никуда его подключать не надо.
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
... открою "страшную тайну" - нужно скачать datasheet на AVR и посмотреть на картинкуMS24 писал(а):А в необычном? Я понимаю для чего он используется, я не понимаю куда его подключать.
- Вложения
-
- clk_avr.JPG
- (6.22 КБ) 581 скачивание
- Сообщения: 172
- Зарегистрирован: Пн мар 19, 2012 13:04:11
Ну значит я правильно все подключал? Спасибо большое!!!
Так, надо упорно начинать изучение мат части....
Так, надо упорно начинать изучение мат части....
- Сообщения: 581
- Зарегистрирован: Ср янв 05, 2011 10:03:18
Все-таки, если собираетесь и дальше заниматься программированием, учитесь "на лету" понимать шестнадцатиричную запись. Двоичное отображение вне стандартов ANSI C, рано или поздно вы с этим столкнетесь, когда начнете "разбирать" чужие исходники из других систем программирования. Впрочем, "выходцы" из кодвижна уже и там наловчились битовые структуры отображать. Костылями необычайных размеров.uuuu писал(а):4)и ещё просьба,можно писать код в двоичной системе,мне так проще оперировать ножками,а то я в этом деле новичок
С уважением,
Виктор.
Виктор.
Если не на лету, то хотя бы научиться пользоваться научным калькуляторомut1wpr писал(а):заниматься программированием, учитесь "на лету" понимать шестнадцатеричную запись.
http://SSMaker.ru/99e08894/
Я себе его на горячие клавиши для быстрого вызова сделал.
- Сообщения: 29
- Зарегистрирован: Вс окт 17, 2010 11:24:29
день добрый .хочу попробовать работать с плис фирмы xilinx , мне нужно будет указывать задержки ,как это можно сделать? до этого работал с owen logic (программируемое реле)
подробнее пожалуйста.bars23rus писал(а):мне нужно будет указывать задержки
Ставим плюсы: )


