Мелкие вопросы по МК и ПЛИС.

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Электрический кот
Сообщения: 1031
Зарегистрирован: Вт фев 14, 2012 21:20:42
Откуда: Московское Царство.

Сообщение smihan99 »

хочу заниматься МК, но нет ни программматора, ни МК. вопрос: какой лучше брать МК и для него какой собрать программатор :)
"Не спорьте с идиотами, не то вы опуститесь до их уровня и они задавят вас своим опытом." (с) Марк Твен
Реклама
Друг Кота
Аватара пользователя
Сообщения: 6323
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

Реклама
Родился
Сообщения: 3
Зарегистрирован: Пн мар 19, 2012 13:52:59

Сообщение Chiaki74 »

Здраствуйте, вопрос по микроконтроллеру ATmega164P-20PU:
из дата шита "Прерывание и возобновление работы по изменению состояния на выводе"
Как поведет себя устройство если изменится состояние сразу на нескольких ножках?
Друг Кота
Аватара пользователя
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

Chiaki74 писал(а):Как поведет себя устройство если изменится состояние сразу на нескольких ножках?
Есть соотв. ножки для прерываний. При изменении состояния (если прерывания на этих ногах разрешены) МК пойдёт обрабатывать сначала то прерывание (если они произойдут одновременно), у которого выше приоритет. Затем следующее.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

Странный вопрос. Как запрограммируете, так и поведет... Если имеете ввиду ножки PCINT, то там на каждый порт свой вектор прерывания, если уровень изменится одновременно на разных ножках разных портов, программа сначала перейдет на тот вектор, у которого адрес меньше (так если я не ошибаюсь у них приоритеты расставлены).
Последний раз редактировалось Engineer_Keen Пн мар 19, 2012 14:10:18, всего редактировалось 1 раз.
Реклама
Родился
Сообщения: 3
Зарегистрирован: Пн мар 19, 2012 13:52:59

Сообщение Chiaki74 »

Gudd-Head писал(а):Есть соотв. ножки для прерываний. При изменении состояния (если прерывания на этих ногах разрешены) МК пойдёт обрабатывать сначала то прерывание (если они произойдут одновременно), у которого выше приоритет. Затем следующее.
просто как я понял, у этого микроконтроллера все линии ввода/вывода c поддержкой прерывания)хотите сказать для каждого из них можно написать отдельную подпрограмму и установить приоритет?))
Engineer_Keen писал(а):Странный вопрос. Как запрограммируете, так и поведет...
спасибо, то что нужно)

Оверпостинг и оверквотинг на первый раз поправил. В дальнейшем пользуйтесь кнопкой "Правка"
Gudd-Head
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

На конкретную ножку вектора есть только для INT0,INT1,INT2. Прерывания PCINT-PCINT срабатывают при изменении состояния любой из ног в пределах одного порта (при условии что эти ноги заданы в соответствующих регистрах PCMSK). Если вы хотите иметь разные подпрограммы для каждой ножки, то уже в самом обработчике прерывания нужно определять какая нога порта изменилась и в соответствии с этой информацией переходить к конкретной подпрограмме.
Родился
Сообщения: 3
Зарегистрирован: Пн мар 19, 2012 13:52:59

Сообщение Chiaki74 »

Engineer_Keen писал(а):На конкретную ножку вектора есть только для INT0,INT1,INT2. Прерывания PCINT-PCINT срабатывают при изменении состояния любой из ног в пределах одного порта (при условии что эти ноги заданы в соответствующих регистрах PCMSK). Если вы хотите иметь разные подпрограммы для каждой ножки, то уже в самом обработчике прерывания нужно определять какая нога порта изменилась и в соответствии с этой информацией переходить к конкретной подпрограмме.
спасибо за разъяснения,очень помогли.
Родился
Аватара пользователя
Сообщения: 12
Зарегистрирован: Пн апр 12, 2010 15:14:52
Откуда: Москва

Сообщение Acinonyx »

приобрел на сантеке ( http://www.suntekstore.co.uk/product-14 ... apter.html ) USBasp программатор.
по началу не было никаких проблем, всякие атмеги 8/16/32 шьет на ура.
недавно понадобилось разработать девайс на 13 тиньке. сделал простой переходник с ISP разъема на SO-8, и получил жуткую головную боль.
проблема №1 - единственная программа которая увидела тиньку это eXtreme Burner AVR, другие (аврдуд, хазам) не видели ее вообще (важное замечание - тот же аврдуд и хазам прекрасно шили и читали атмеги 8/16/32). причем пробовал разные тиньки, и 13v, которая валялась у меня в загажнике, и новую 13а.
проблема №2 - экстримбёрнер считывает тиньку, считывает фузы и калибровочные байты. но записывает как-то странно, пишет 32 байта FFы затем 32 байта прошивки, опять 32 байта FFы, опять 32 байта прошивки, и так далее.

не знаю в какую сторону копать, может кто подскажет?
-Трансформатор!
-Я!
-Выйти из строя!
-Есть!
Контактная информация:
Chettuser

Сообщение Chettuser »

smihan99 писал(а):хочу заниматься МК, но нет ни программматора, ни МК. вопрос: какой лучше брать МК и для него какой собрать программатор :)
Сразу на ARM, не забивайте голову всякими AVR, Mega'ми, Tit'kami, Pic'ами и прочим "ширпотребом".
Например программатор-отладчик сразу на борту с STM32-Discovery. Камень там низкопотребляющей серии STM32L152RB.
Отдельный отладчик (например ST-Link) стоит подороже. Можно попробовать собрать MT-Link, но для него придётся найти AT91xxxx (не помню какой) и прошить.

В конце концов конечно Вам выбирать на чём остановиться. Из плюсов STM (про LPC и др. не знаю) - почти все камни с одинаковым количеством ножек взаимозаменяемы, например вместо слабенького МК можно поменять в будущем (если не хватит мощей) на более мощный.

Вот ссыль ТЫЦ где можно посмотреть на программаторы, их цену, и там же есть документация.
А тут, ТЫЦ на МК, в данном случае с ядрами ARM.
Нашел транзистор. Понюхал.
Сообщения: 172
Зарегистрирован: Пн мар 19, 2012 13:04:11

Сообщение MS24 »

Ребят подскажите, у меня есть 12 кнопок и 12 диодов, должен гореть всегда только один диод, если зажигается следующий то предидущий должен гаснуть. Как мне с помощью массива реализовать данный алгоритм? Или просто сделать его короче, что бы не писать каждый порт по отдельности?
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Массив-то причем здесь?
Docendo discimus
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

Во-первых не совсем понятно какое взаимодействие с кнопками.
Во-вторых, чтобы что-то менять в алгоритме, его нужно для начала увидеть.
Нашел транзистор. Понюхал.
Сообщения: 172
Зарегистрирован: Пн мар 19, 2012 13:04:11

Сообщение MS24 »

Ну обычно реализуют через Массив, или я не прав?
Алгоритма нет еще пока (( я даже не знаю как его написать, пока лишь сделал так
if((PINA & (1<< PINA0)) == 0)
{
PORTC = 0xff;
PORTD = 0xff;
PORTC = 0x00000001;
}
if((PINA & (1<< PINA1)) == 0)
{
PORTC = 0xff;
PORTD = 0xff;
PORTC = 0x00000010;
}
и т.д.
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Ткни пальцем где тут массив?
Docendo discimus
Контактная информация:
Нашел транзистор. Понюхал.
Сообщения: 172
Зарегистрирован: Пн мар 19, 2012 13:04:11

Сообщение MS24 »

Вот я и спрашиваю, как сократить данный алгоритм? каким образом, здесь нет массива.
Нашел транзистор. Понюхал.
Сообщения: 172
Зарегистрирован: Пн мар 19, 2012 13:04:11

Сообщение MS24 »

может еще подскажите, почему этот код выдает ошибку? пишу в codevision

#include <mega128.h>
#define StartConvAdc() ADCSRA |= (1<<ADSC)
#define KEY_NULL 0
#define KEY_S1 1
#define KEY_S2 2
#define KEY_S3 3
#define KEY_S4 4


void main(void)
{
//настраиваем порты
DDRA = 0xff;
PORTA = 0xff;
DDRF = 0xff;
PORTF = 0xff;
DDRE = 0xff;
PORTE = 0xff;

while (2)
{
if ((PINA & (1<< PINA0)) == 0)
{

main1 (1);
}


}
}

void main1 (void)
{
// any code
}
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Слишком неправильно все написано.
Docendo discimus
Контактная информация:
Нашел транзистор. Понюхал.
Сообщения: 172
Зарегистрирован: Пн мар 19, 2012 13:04:11

Сообщение MS24 »

а что именно не правильно? мне нужно при условии в одной функции, перейти к другой.
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

А кучу одинаковых IF-ов лучше заменить на Switch-case. Массив тут по-моему не нужен...

И какую ошибку выдает код?
Ответить

Вернуться в «Разные вопросы по МК»