Мелкие вопросы по МК и ПЛИС.
-
smihan99
- Электрический кот
- Сообщения: 1031
- Зарегистрирован: Вт фев 14, 2012 21:20:42
- Откуда: Московское Царство.
Re: Мелкие вопросы по МК и ПЛИС.
хочу заниматься МК, но нет ни программматора, ни МК. вопрос: какой лучше брать МК и для него какой собрать программатор 
"Не спорьте с идиотами, не то вы опуститесь до их уровня и они задавят вас своим опытом." (с) Марк Твен
Re: Мелкие вопросы по МК и ПЛИС.
Здраствуйте, вопрос по микроконтроллеру ATmega164P-20PU:
из дата шита "Прерывание и возобновление работы по изменению состояния на выводе"
Как поведет себя устройство если изменится состояние сразу на нескольких ножках?
из дата шита "Прерывание и возобновление работы по изменению состояния на выводе"
Как поведет себя устройство если изменится состояние сразу на нескольких ножках?
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Мелкие вопросы по МК и ПЛИС.
Chiaki74 писал(а):Как поведет себя устройство если изменится состояние сразу на нескольких ножках?
Есть соотв. ножки для прерываний. При изменении состояния (если прерывания на этих ногах разрешены) МК пойдёт обрабатывать сначала то прерывание (если они произойдут одновременно), у которого выше приоритет. Затем следующее.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Engineer_Keen
- Друг Кота
- Сообщения: 3868
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Мелкие вопросы по МК и ПЛИС.
Странный вопрос. Как запрограммируете, так и поведет... Если имеете ввиду ножки PCINT, то там на каждый порт свой вектор прерывания, если уровень изменится одновременно на разных ножках разных портов, программа сначала перейдет на тот вектор, у которого адрес меньше (так если я не ошибаюсь у них приоритеты расставлены).
Последний раз редактировалось Engineer_Keen Пн мар 19, 2012 14:10:18, всего редактировалось 1 раз.
Re: Мелкие вопросы по МК и ПЛИС.
Gudd-Head писал(а):Есть соотв. ножки для прерываний. При изменении состояния (если прерывания на этих ногах разрешены) МК пойдёт обрабатывать сначала то прерывание (если они произойдут одновременно), у которого выше приоритет. Затем следующее.
просто как я понял, у этого микроконтроллера все линии ввода/вывода c поддержкой прерывания)хотите сказать для каждого из них можно написать отдельную подпрограмму и установить приоритет?))
Engineer_Keen писал(а):Странный вопрос. Как запрограммируете, так и поведет...
спасибо, то что нужно)
Оверпостинг и оверквотинг на первый раз поправил. В дальнейшем пользуйтесь кнопкой "Правка"
Gudd-Head
- Engineer_Keen
- Друг Кота
- Сообщения: 3868
- Зарегистрирован: Пт янв 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: Мелкие вопросы по МК и ПЛИС.
smihan99 писал(а):хочу заниматься МК, но нет ни программматора, ни МК. вопрос: какой лучше брать МК и для него какой собрать программатор
Сразу на ARM, не забивайте голову всякими AVR, Mega'ми, Tit'kami, Pic'ами и прочим "ширпотребом".
Например программатор-отладчик сразу на борту с STM32-Discovery. Камень там низкопотребляющей серии STM32L152RB.
Отдельный отладчик (например ST-Link) стоит подороже. Можно попробовать собрать MT-Link, но для него придётся найти AT91xxxx (не помню какой) и прошить.
В конце концов конечно Вам выбирать на чём остановиться. Из плюсов STM (про LPC и др. не знаю) - почти все камни с одинаковым количеством ножек взаимозаменяемы, например вместо слабенького МК можно поменять в будущем (если не хватит мощей) на более мощный.
Вот ссыль ТЫЦ где можно посмотреть на программаторы, их цену, и там же есть документация.
А тут, ТЫЦ на МК, в данном случае с ядрами ARM.
Re: Мелкие вопросы по МК и ПЛИС.
Ребят подскажите, у меня есть 12 кнопок и 12 диодов, должен гореть всегда только один диод, если зажигается следующий то предидущий должен гаснуть. Как мне с помощью массива реализовать данный алгоритм? Или просто сделать его короче, что бы не писать каждый порт по отдельности?
- Engineer_Keen
- Друг Кота
- Сообщения: 3868
- Зарегистрирован: Пт янв 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
- Друг Кота
- Сообщения: 3868
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Мелкие вопросы по МК и ПЛИС.
А кучу одинаковых IF-ов лучше заменить на Switch-case. Массив тут по-моему не нужен...
И какую ошибку выдает код?
И какую ошибку выдает код?