02.08.2009, 23:00
|
|
Гражданин KAZUS.RU
Регистрация: 06.08.2006
Сообщений: 694
Сказал спасибо: 24
Сказали Спасибо 38 раз(а) в 31 сообщении(ях)
|
Привет форумчане. Подскажите пожалуста почему в Протеусе некоторые переменные 4-х байтные отображаются как 4-х байтные а некоторые как 2-х байтные. Разницы глобальные или не глобальные нет. Причем смотрю в МПЛАБЕ то в нем все правильно. Да и еще ПРОТЕУС не только не правильно отображает но и соответствеено переводит 4-х байтные в 2-х байтные. Пишу в ЦЦСПИКЕ.
|
|
|
|
02.08.2009, 23:59
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Проект цепляйте с примерами - правильно и не правильно.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
08.08.2009, 14:17
|
|
Гражданин KAZUS.RU
Регистрация: 06.08.2006
Сообщений: 694
Сказал спасибо: 24
Сказали Спасибо 38 раз(а) в 31 сообщении(ях)
|
Вот пример проекта компараторного модуля ПИК16Ф877А. Прикол в том что в начале когда вход больше уставки-то прерывания нет, а когда вход меньше уставки то срабатывает прерывание раз и навсегда, т.е. если даже после этого напряжение на входе больше уставки всеравно срабатывает преравание. Я посмотрел на бит флага прерывания то он не сбрасывается. попытки сбросить его програмнно не увенчались успехом. такойже прикол наблюдается и с прерыванием по RB4-RB7(по изменению). сбросить флаг не удается.
Прикрепленный файл: 1028816.rar
|
|
|
|
11.08.2009, 06:12
|
|
Частый гость
Регистрация: 16.06.2005
Сообщений: 11
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
|
Сообщение от Halex07
|
... Тень писал уже здесь, что был баг с неправильной обработкой RJMP и RCALL. И это вплоть до 7.5. ...
|
У меня стоит Proteus 7.5 SP3, есть проблема с MEGA8 и обработкой команды RCALL. Не правильно обрабатывается работа со стеком контроллера. Более подробно я писал здесь http://radiokot.ru/forum/viewtopic.php?t=3739&start=480.
Помогите разобраться. Извините, если это уже обсуждалось. Просмотрел последние страницы подобного не нашел. Пните, пожалуйста, в нужном направлении. Спасибо!
|
|
|
|
11.08.2009, 09:10
|
|
Супер-модератор
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,509 раз(а) в 956 сообщении(ях)
|
Сообщение от valoha
|
У меня стоит Proteus 7.5 SP3, есть проблема с MEGA8 и обработкой команды RCALL. Не правильно обрабатывается работа со стеком контроллера. Более подробно я писал здесь http://radiokot.ru/forum/viewtopic.php?t=3739&start=480.
Помогите разобраться. Извините, если это уже обсуждалось. Просмотрел последние страницы подобного не нашел. Пните, пожалуйста, в нужном направлении. Спасибо!
|
У Вас два пути:
Если лицензионный пакет - пишите в Labcenter, Вам дадут поправленную библиотеку AVR2.DLL
Ecли нет - для Меги8 используйте старую AVR.DLL от версии 7.2 - где-то здесь по этому поводу писал Kabron.
|
|
|
|
11.08.2009, 11:06
|
|
Частый гость
Регистрация: 16.06.2005
Сообщений: 11
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
|
Сообщение от Halex07
|
У Вас два пути:
Если лицензионный пакет - пишите в Labcenter, Вам дадут поправленную библиотеку AVR2.DLL
Ecли нет - для Меги8 используйте старую AVR.DLL от версии 7.2 - где-то здесь по этому поводу писал Kabron.
|
Большое спасибо! Первый вариант, конечно, отпадает. По второму варианту я думал, только хотел убедиться, что это именно ошибка AVR.DLL (только по-моему AVR2.DLL), а не настойки в протеусе свойств контроллера.
|
|
|
|
13.08.2009, 22:42
|
|
Прохожий
Регистрация: 24.06.2006
Сообщений: 9
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Сообщение от valoha
|
только хотел убедиться, что это именно ошибка AVR.DLL (только по-моему AVR2.DLL), а не настойки в протеусе свойств контроллера.
|
Надо нормально инициализировать стек, а иначе от инструкции "rcall" и от обработки прерываний не добьешься правильной работы. Вот твой исправленный тест с радиокота. И протеус тут конечно ни при чем.
Прикрепленный файл: 3410655.rar
|
|
|
|
14.08.2009, 10:28
|
|
Частый гость
Регистрация: 16.06.2005
Сообщений: 11
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
|
Сообщение от alexperm72
|
Надо нормально инициализировать стек, а иначе от инструкции "rcall" и от обработки прерываний не добьешься правильной работы. Вот твой исправленный тест с радиокота. И протеус тут конечно ни при чем.
|
Спасибо. Меня это и интересовало. Кроме Вас ни кто об этом не писал, просто старый контроллер работал так, как писал я, и железо все отлично работает с тем, что написано у меня. Будем экспериментировать.
|
|
|
|
14.08.2009, 23:41
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Глюк с ATmega8 ? PROTEUS 7.5 sp3
Возникает запрещенное прерывание по переполн Tамер 2 и в прерывании видно что флаг не сброшен.
По картинке видно в каком месте кода и в проекте точки останова расставлены.
Проекты CVAVR PROTEUS - atmega8 timer2 flags.rar размер 117.90 кб
http://stream.ifolder.ru/13546791
2) проблема с тем же прерыванием по переполнению -
ранее там в проекте разрешенное но ни как не МОГУЩЕЕ наступить мгновенно ! срабатывало - ни вставка кучи нопов ни чего не помогало - пришлось не ноль в таймер вписывать а 5 чтоб перестало срабатывать.
Код:
|
// Timer 2 output compare interrupt service routine
interrupt [TIM2_COMP] void timer2_comp_isr(void)
{
// Place your code here
TIMSK &= ~0x80; // выключить это прервание
// включить детекцию пропадания сетевого напряжения
TCCR2 = 0x0F; // включить таймер 2 счет 7,813 kHz
TCNT2 = 5; // обнулить таймер 2 ( вписал 5 для симул в PROTEUS )
TIFR |= 0x40; // очистить флаг переполнения таймер 2
TIMSK |= 0x40; // включить прерывание по переполнению таймер 2
// Через 32,7 mS таймер 2 переполнится.
} |
И почти мгновенно прерывание срабатывает по переполнению, хотя видно что к концу этого прервания флаги сброшены и в таймере 0 был когда TCNT2 = 0; было написано, и очистку флага делал еще и ниже включения прерывания ( но флаги то реально очищены в воче ! ) - все равно срабатывала пока 3 не написал, 5 поставил для верности.
============
Картинка к архиву с кодом и к первому багу ! хотя и второй нормально не решен.
-- Прилагается рисунок: --
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
14.08.2009, 23:44
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Видно на картинке, что мы в прерывании, а флаги 6 и 7 в TIFR установлены. ( стр 75 и 76 в даташите)
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 15:31.
|
|