Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
12.01.2012, 19:45
|
|
Гражданин KAZUS.RU
Регистрация: 25.11.2008
Адрес: Волгоград
Сообщений: 507
Сказал спасибо: 42
Сказали Спасибо 49 раз(а) в 46 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Блин, по ходу правы Вы, сейчас полностью запретил прерывания перед использование функций задержек и все встало на свои места, спасибо огромное за подсказку! Видно где то проморгал отключение прерываний от какого-то из используемого источника
|
|
|
|
13.01.2012, 02:49
|
|
Прописка
Регистрация: 04.12.2010
Сообщений: 243
Сказал спасибо: 9
Сказали Спасибо 51 раз(а) в 32 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Сообщение от roma9112
|
Блин, по ходу правы Вы, сейчас полностью запретил прерывания перед использование функций задержек и все встало на свои места
|
Я раньше и упоминал, что такие задержки надо стараться избегать.
Сообщение от Pajatel
|
У меня в подпрограмме для LCD встроены такие задержки по 3мкс и то я на них косо посматриваю... вообще стараюсь избегать такого типа задержек, на то он и асм а не си
|
Лучьше завести какой таймер и пусть крутится постоянно как системное время и всё синхрить относительно его тиков(сравнения и/или переполнения), тут как кому сподручней. Очень удобно получается если переполнение получается гдет в районе 1ms и ориентировать по нему работу кнопок, энкодера ну вообщем где требуются большие задержки, а величину тика выбрать такой чтоб можно было синхрить к примеру тот же приём и передачу каких либо пакетов или ещё какие быстрые вещи и не нужно будет ломать голову почему в этот момент всё вродь крутится, а в другой всё через раз....
Последний раз редактировалось Pajatel; 13.01.2012 в 03:08.
|
|
|
|
13.01.2012, 12:15
|
|
Гражданин KAZUS.RU
Регистрация: 04.04.2007
Сообщений: 941
Сказал спасибо: 571
Сказали Спасибо 113 раз(а) в 85 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Сообщение от roma9112
|
Блин, по ходу правы Вы, сейчас полностью запретил прерывания перед использование функций задержек и все встало на свои места, спасибо огромное за подсказку! Видно где то проморгал отключение прерываний от какого-то из используемого источника
|
Чтобы совсем полностью не запрещать прерывания ,ведь возможно есть в системе даже и такие которые ,например, должны быть разрешены и "дежурить" всегда постоянно - просто выясните точно какие именно критические регистры у Вас сбиваются от разрешенных прерываний - то есть уже получается что они совместно где-то еще используются - сохраняйте их когда входите в прерывание (не обязательно в стек - чтобы не загоняться-следить что и за кем туда засунулось - можно и просто в любых свободных на даннный момент регистрах сохранять, которые не будут потом в самом прерывании перебиваться-портиться , или ОЗУ использовать , обычно ячеек ОЗУ много и они всегда почти свободны) , и обратно восстанавливайте их когда выходите из них - тогда и прерывания будут работать "отдельно" во время отработки задержек , и сами задержки не будут сильно искажаться и портится прерываниями, а просто так избегать таких ситуаций как советует Pajatel - это только половинчатое решение , которое к тому же лишает Вас множества дополнительных функций для полного использования всех возможностей кристалла .Еще одно из решений, позволяющих разрешать прерывания во время отсчета задержек - это продолжать отсчитывать и сами задержки , но уже в прерываниях во время их исполнения (если был отсчет задержки до прерывания) почти такими же кусками кода что и в обычных задержках , либо (решение погрубее) можно в прерывании помимо действий прерывания - добавлять сразу в счетчики задержек колич тактов которое занимает например какая-либо из подпрограмм прерывания - в общем , думаю понятен основной принцип таких решений - тогда здесь удается выдерживать уже и длительность самих задержек довольно точно несмотря что во время отсчета задержек возникают и исполняются прерывания , хотя , правда, сам код асма немного побольше уже получается .
__________________
Короче асма кода нет !
Последний раз редактировалось pinco; 13.01.2012 в 13:06.
|
|
|
|
22.01.2012, 12:55
|
|
Прописка
Регистрация: 18.10.2010
Адрес: Planet Earth )
Сообщений: 120
Сказал спасибо: 14
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Столкнулся с таким вопросом. Пытаюсь разобраться с прерываниями.
Суть в чем, у меня определенное количество дискретных датчиков, буду считать что это кнопки. В этом микроконтроллере ATmega8515 всего три внешних входа прерывания, а для решения моей задачи нужно грубо говоря четыре, или может быть и более. Думал как, что придумать - аппаратно, или программно? Пока так не чего не пришло на ум. Вы наверное спросите что ты там собираешь, или да тут пару пустяков! Смысл каков я рассматривал режим одновременного нажатия двух, трех клавиш, сами процессы, типа какая подпрограмма быстрее выполнится, или выполнение будет одновременным . Вопрос конечно не корректный, писал впопыхах, но может кто на путь истинный поставит, или ссылочку скинет на пример алгоритма программы (понимаю только ASM).
__________________
Мозги кипят, ядрить твою валентность!!! Пойду закладывать остальные ингредиенты...
|
|
|
|
22.01.2012, 13:00
|
|
Почётный гражданин KAZUS.RU
Регистрация: 30.09.2006
Сообщений: 1,560
Сказал спасибо: 158
Сказали Спасибо 661 раз(а) в 431 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
кнопки к портам и сканирование в цикле - первое, что пришло на ум.
|
|
|
|
22.01.2012, 13:06
|
|
Прописка
Регистрация: 18.10.2010
Адрес: Planet Earth )
Сообщений: 120
Сказал спасибо: 14
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Порты заняты под клавиатуру 4*4 плюс lcd индикатор.
__________________
Мозги кипят, ядрить твою валентность!!! Пойду закладывать остальные ингредиенты...
|
|
|
|
22.01.2012, 13:08
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Сообщение от DAVE_ELEKTRIK
|
у меня определенное количество дискретных датчиков, буду считать что это кнопки
|
Если датчик аварийный, то можно и на прерывание. Как говорится - лучше преребдеть...
Правильнее вот так-
Сообщение от Ara41
|
кнопки к портам и сканирование в цикле
|
|
|
|
|
22.01.2012, 13:09
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Сообщение от DAVE_ELEKTRIK
|
Порты заняты под клавиатуру 4*4
|
Ну дык и сканировать их вместе с клавой...
|
|
|
|
22.01.2012, 13:13
|
|
Прописка
Регистрация: 18.10.2010
Адрес: Planet Earth )
Сообщений: 120
Сказал спасибо: 14
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Получается цикл в цикле! Как не крути. А датчики
Цитата:
|
Если датчик аварийный
|
вы точно сказали, попали прямо в точку.
__________________
Мозги кипят, ядрить твою валентность!!! Пойду закладывать остальные ингредиенты...
Последний раз редактировалось DAVE_ELEKTRIK; 22.01.2012 в 13:21.
|
|
|
|
22.01.2012, 13:20
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Почему?
Тип датчиков, назначение?
Вижу.
А вот так?
Это если надо знать, который из датчиков сработал.
Последний раз редактировалось omercury; 22.01.2012 в 13:31.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:21.
|
|