Мелкие вопросы по МК и ПЛИС.
-
smihan99
- Электрический кот
- Сообщения: 1031
- Зарегистрирован: Вт фев 14, 2012 21:20:42
- Откуда: Московское Царство.
Re: Мелкие вопросы по МК и ПЛИС.
хочу заниматься МК, но нет ни программматора, ни МК. вопрос: какой лучше брать МК и для него какой собрать программатор 
"Не спорьте с идиотами, не то вы опуститесь до их уровня и они задавят вас своим опытом." (с) Марк Твен
- Реклама
Re: Мелкие вопросы по МК и ПЛИС.
Здраствуйте, вопрос по микроконтроллеру ATmega164P-20PU:
из дата шита "Прерывание и возобновление работы по изменению состояния на выводе"
Как поведет себя устройство если изменится состояние сразу на нескольких ножках?
из дата шита "Прерывание и возобновление работы по изменению состояния на выводе"
Как поведет себя устройство если изменится состояние сразу на нескольких ножках?
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Мелкие вопросы по МК и ПЛИС.
Есть соотв. ножки для прерываний. При изменении состояния (если прерывания на этих ногах разрешены) МК пойдёт обрабатывать сначала то прерывание (если они произойдут одновременно), у которого выше приоритет. Затем следующее.Chiaki74 писал(а):Как поведет себя устройство если изменится состояние сразу на нескольких ножках?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Engineer_Keen
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Мелкие вопросы по МК и ПЛИС.
Странный вопрос. Как запрограммируете, так и поведет... Если имеете ввиду ножки PCINT, то там на каждый порт свой вектор прерывания, если уровень изменится одновременно на разных ножках разных портов, программа сначала перейдет на тот вектор, у которого адрес меньше (так если я не ошибаюсь у них приоритеты расставлены).
Последний раз редактировалось Engineer_Keen Пн мар 19, 2012 14:10:18, всего редактировалось 1 раз.
- Реклама
Re: Мелкие вопросы по МК и ПЛИС.
просто как я понял, у этого микроконтроллера все линии ввода/вывода c поддержкой прерывания)хотите сказать для каждого из них можно написать отдельную подпрограмму и установить приоритет?))Gudd-Head писал(а):Есть соотв. ножки для прерываний. При изменении состояния (если прерывания на этих ногах разрешены) МК пойдёт обрабатывать сначала то прерывание (если они произойдут одновременно), у которого выше приоритет. Затем следующее.
спасибо, то что нужно)Engineer_Keen писал(а):Странный вопрос. Как запрограммируете, так и поведет...
Оверпостинг и оверквотинг на первый раз поправил. В дальнейшем пользуйтесь кнопкой "Правка"
Gudd-Head
- Engineer_Keen
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Мелкие вопросы по МК и ПЛИС.
На конкретную ножку вектора есть только для INT0,INT1,INT2. Прерывания PCINT-PCINT срабатывают при изменении состояния любой из ног в пределах одного порта (при условии что эти ноги заданы в соответствующих регистрах PCMSK). Если вы хотите иметь разные подпрограммы для каждой ножки, то уже в самом обработчике прерывания нужно определять какая нога порта изменилась и в соответствии с этой информацией переходить к конкретной подпрограмме.
Re: Мелкие вопросы по МК и ПЛИС.
спасибо за разъяснения,очень помогли.Engineer_Keen писал(а):На конкретную ножку вектора есть только для INT0,INT1,INT2. Прерывания PCINT-PCINT срабатывают при изменении состояния любой из ног в пределах одного порта (при условии что эти ноги заданы в соответствующих регистрах PCMSK). Если вы хотите иметь разные подпрограммы для каждой ножки, то уже в самом обработчике прерывания нужно определять какая нога порта изменилась и в соответствии с этой информацией переходить к конкретной подпрограмме.
- Acinonyx
- Родился
- Сообщения: 12
- Зарегистрирован: Пн апр 12, 2010 15:14:52
- Откуда: Москва
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
приобрел на сантеке ( 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 байта прошивки, и так далее.
не знаю в какую сторону копать, может кто подскажет?
по началу не было никаких проблем, всякие атмеги 8/16/32 шьет на ура.
недавно понадобилось разработать девайс на 13 тиньке. сделал простой переходник с ISP разъема на SO-8, и получил жуткую головную боль.
проблема №1 - единственная программа которая увидела тиньку это eXtreme Burner AVR, другие (аврдуд, хазам) не видели ее вообще (важное замечание - тот же аврдуд и хазам прекрасно шили и читали атмеги 8/16/32). причем пробовал разные тиньки, и 13v, которая валялась у меня в загажнике, и новую 13а.
проблема №2 - экстримбёрнер считывает тиньку, считывает фузы и калибровочные байты. но записывает как-то странно, пишет 32 байта FFы затем 32 байта прошивки, опять 32 байта FFы, опять 32 байта прошивки, и так далее.
не знаю в какую сторону копать, может кто подскажет?
-Трансформатор!
-Я!
-Выйти из строя!
-Есть!
-Я!
-Выйти из строя!
-Есть!
-
Chettuser
Re: Мелкие вопросы по МК и ПЛИС.
Сразу на ARM, не забивайте голову всякими AVR, Mega'ми, Tit'kami, Pic'ами и прочим "ширпотребом".smihan99 писал(а):хочу заниматься МК, но нет ни программматора, ни МК. вопрос: какой лучше брать МК и для него какой собрать программатор
Например программатор-отладчик сразу на борту с STM32-Discovery. Камень там низкопотребляющей серии STM32L152RB.
Отдельный отладчик (например ST-Link) стоит подороже. Можно попробовать собрать MT-Link, но для него придётся найти AT91xxxx (не помню какой) и прошить.
В конце концов конечно Вам выбирать на чём остановиться. Из плюсов STM (про LPC и др. не знаю) - почти все камни с одинаковым количеством ножек взаимозаменяемы, например вместо слабенького МК можно поменять в будущем (если не хватит мощей) на более мощный.
Вот ссыль ТЫЦ где можно посмотреть на программаторы, их цену, и там же есть документация.
А тут, ТЫЦ на МК, в данном случае с ядрами ARM.
Re: Мелкие вопросы по МК и ПЛИС.
Ребят подскажите, у меня есть 12 кнопок и 12 диодов, должен гореть всегда только один диод, если зажигается следующий то предидущий должен гаснуть. Как мне с помощью массива реализовать данный алгоритм? Или просто сделать его короче, что бы не писать каждый порт по отдельности?
- Engineer_Keen
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Мелкие вопросы по МК и ПЛИС.
Во-первых не совсем понятно какое взаимодействие с кнопками.
Во-вторых, чтобы что-то менять в алгоритме, его нужно для начала увидеть.
Во-вторых, чтобы что-то менять в алгоритме, его нужно для начала увидеть.
Re: Мелкие вопросы по МК и ПЛИС.
Ну обычно реализуют через Массив, или я не прав?
Алгоритма нет еще пока (( я даже не знаю как его написать, пока лишь сделал так
if((PINA & (1<< PINA0)) == 0)
{
PORTC = 0xff;
PORTD = 0xff;
PORTC = 0x00000001;
}
if((PINA & (1<< PINA1)) == 0)
{
PORTC = 0xff;
PORTD = 0xff;
PORTC = 0x00000010;
}
и т.д.
Алгоритма нет еще пока (( я даже не знаю как его написать, пока лишь сделал так
if((PINA & (1<< PINA0)) == 0)
{
PORTC = 0xff;
PORTD = 0xff;
PORTC = 0x00000001;
}
if((PINA & (1<< PINA1)) == 0)
{
PORTC = 0xff;
PORTD = 0xff;
PORTC = 0x00000010;
}
и т.д.
Re: Мелкие вопросы по МК и ПЛИС.
Вот я и спрашиваю, как сократить данный алгоритм? каким образом, здесь нет массива.
Re: Мелкие вопросы по МК и ПЛИС.
может еще подскажите, почему этот код выдает ошибку? пишу в 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
}
#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
}
Re: Мелкие вопросы по МК и ПЛИС.
а что именно не правильно? мне нужно при условии в одной функции, перейти к другой.
- Engineer_Keen
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Мелкие вопросы по МК и ПЛИС.
А кучу одинаковых IF-ов лучше заменить на Switch-case. Массив тут по-моему не нужен...
И какую ошибку выдает код?
И какую ошибку выдает код?


