Коллекция глюков Здесь публикуются все известные глюки, баги микроконтроллеров, памяти, АЦП и т.д. |
30.03.2010, 13:27
|
|
Почётный гражданин KAZUS.RU
Регистрация: 01.05.2009
Адрес: Коптево
Сообщений: 2,849
Сказал спасибо: 276
Сказали Спасибо 427 раз(а) в 274 сообщении(ях)
|
Re: Собираем глюки и "подводные камни" AVR и AVR Studi
Ещё у AVR система прерываний не приоритетная, несмотря на все заверения в даташитах.
|
|
|
|
30.03.2010, 15:01
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Собираем глюки и "подводные камни" AVR и AVR Studi
Сообщение от KBH-I
|
Ещё у AVR система прерываний не приоритетная, несмотря на все заверения в даташитах
|
Вполне приоритетная - если одновременно возникнут 2 запроса прерывания, то первым обработается старшее. Но при входе в прерывание (любое) аппаратно сбрасывается бит глобального разрешения прерываний, его можно включить программно (если надо), или он включится аппаратно после выхода из прерывания. Читаем даташит и не пишем ерунды
|
|
|
|
20.08.2010, 00:57
|
|
Вид на жительство
Регистрация: 09.10.2009
Сообщений: 356
Сказал спасибо: 21
Сказали Спасибо 64 раз(а) в 46 сообщении(ях)
|
Собираем глюки AVR Studio
При дизассемблировании студия интерпретирует инструкцию "com", как "lat", причём если попытаться использовать "lat" в программе, студия отказывается переваривать.
__________________
Делая дело нужно в него верить на все 100%, иначе неизбежно будут возникать ошибки подпитывающие подсознательное сомнение.
|
|
|
|
15.09.2010, 11:09
|
|
Гражданин KAZUS.RU
Регистрация: 04.04.2007
Сообщений: 941
Сказал спасибо: 571
Сказали Спасибо 113 раз(а) в 85 сообщении(ях)
|
Re: Собираем глюки и "подводные камни" AVR и AVR Studi
Сообщение от OneTech
|
При включенном прерывании на 0-м таймере в 2313 по совпадению (Compare A), в симуляторе АВР студио вплоть до самой последней версии при ручной установке бита прерывания TIFR bit 0 не срабатывает прерывание, а просто сбрасывается бит. Но... если таймер сам досчитает до указанного значения compare A (OCRA0=100) то прерывание нормально вызывается. Зашитая в контроллер прошивка тоже нормально работает. Прерывание от 1-го таймера вызывается нормально хоть в ручную хоть при досчёте до нужного значения. (Программа писана на asm на Си данную проблему не проверял).
Стыдно-стыдно, столько людей поработало над АВР-студио, а результат слабый.
|
А по моему судя по логике работы прерывания от каких-то событий здесь нет глюка потому как при ручной установке флага в TIFR сами-то события еще не наступили - вот система и не дает прерывания , ну и что что там флаг взвился вручную . а система же еще обязательно просматривает еще и выполнены ли сами условия для возникновения прерывания (это же обязательное условие ее устойчивой работы иначе любые сбои одних только флагов будут вызывать хаотичную сработку прерываний) если все ОК - то есть если еще и счетчик досчитал до Compare то делает прерывание , со стороны системы как раз все правильно сделано , я как раз считаю что с этой стороны люди в Studio нормально все сделали ,а если так ну очень хочется вызывать прерывание именно вручную то могу посоветовать вместо счета до числа Compare забить вручную сразу число в счетчик на 1-2 такта меньшее чем надо при возникновении прерывания и на последующих 1-2 тактах естественно система даст Вам это прерывание , с другой стороны если как Вы пишете - в других случаях можно непосредственно вызвать прерывание сразу через смену вручную только одного флага то получается что эти люди либо не доделали возможность все прерывания таким образом вызывать , либо намеренно оставили некоторые недоступно таким способом - тогда по моему можно считать это мелкой недоработкой , и довольно неудобной , но на большой глюк это как-то не тянет, ведь общие (от счетчика COMPARE самого) сработки прерыв верные , и прошивка работает нормально .
__________________
Короче асма кода нет !
Последний раз редактировалось pinco; 15.09.2010 в 16:30.
|
|
|
|
22.10.2010, 11:32
|
|
Почётный гражданин KAZUS.RU
Регистрация: 01.05.2009
Адрес: Коптево
Сообщений: 2,849
Сказал спасибо: 276
Сказали Спасибо 427 раз(а) в 274 сообщении(ях)
|
Re: Собираем глюки и "подводные камни" AVR и AVR Studi
Сообщение от niXto
|
...если одновременно возникнут 2 запроса прерывания...
|
1. Это что же такое сделать нужно, чтобы они возникли именно ОДНОВРЕМЕННО? В реальном-то времени...
2. Понятие "Приоритет прерываний" подразумевает, что без всякого шаманства прерывание с бОльшим приоритетом всегда может прерывать обработчик прерывания с мЕньшим приоритетом. Так какие же они в AVR приоритетные после этого?
|
|
|
|
22.10.2010, 11:54
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Собираем глюки и "подводные камни" AVR и AVR Studi
Сообщение от KBH-I
|
Это что же такое сделать нужно, чтобы они возникли именно ОДНОВРЕМЕННО? В реальном-то времени...
|
Да хотя бы соединить вместе ножки инт0 и инт1. Процессор ведь должен корректно обрабатывать ДАЖЕ такие ситуации?
Сообщение от KBH-I
|
Понятие "Приоритет прерываний" подразумевает, что без всякого шаманства прерывание с бОльшим приоритетом всегда может прерывать обработчик прерывания с мЕньшим приоритетом.
|
Вы наверное не догадываетесь, что существуют контроллеры у которых ВООБЩЕ нет приоритета - то есть ВСЕ прерывания ждут в фоне, пока выполнится текущее. Связано это с ограничением ихнего стека - адрес возврата для второго и последующих просто некуда записать. Вы по-прежнему утверждаете, что у АВР прерывания НЕприоритетные? Единственный недостаток - невозможно вручную изменить ранжирование - то есть например инт0 ВСЕГДА старше инт1
|
|
|
|
28.10.2010, 18:26
|
|
Вид на жительство
Регистрация: 09.10.2009
Сообщений: 356
Сказал спасибо: 21
Сказали Спасибо 64 раз(а) в 46 сообщении(ях)
|
Re: Собираем глюки и "подводные камни" AVR и AVR Studi
Зато их можно перекинуть физически.
Во время непрерывной симуляции (нажатие F5) если попытаться снять или установить break point (F9) студия намертво виснет. Студия 4.18, сервис кряк третий
__________________
Делая дело нужно в него верить на все 100%, иначе неизбежно будут возникать ошибки подпитывающие подсознательное сомнение.
|
|
|
|
14.11.2010, 12:24
|
|
Прописка
Регистрация: 01.02.2008
Сообщений: 124
Сказал спасибо: 1
Сказали Спасибо 13 раз(а) в 10 сообщении(ях)
|
Re: Собираем глюки и "подводные камни" AVR и AVR Studi
несколько раз в кодевижне встречал глюк, при котором меняя две строчки местами код не выполняется, причем операции в строчках не связаны между собой и не связаны прерываниями. ИМХО кривоватый компилятор.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 06:30.
|
|