![]() |
Модераторы: PILOT, ManiaK, Mazzi |
![]() ![]() ![]() |
|
Коляй |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 14.6.2006 Репутация: нет Всего: нет |
Ребята, вот в ИАР 4,12 хотел сделать флаговый регистр (R15) 90S2313. Но не тут то было. Вернее если битовая структура лежит в ОЗУ, то всё нормально работает, а если в регистре, то не работает. Точнее один только цикл проходит, а дальше как будто к этому регистру вобще нет обращений. (В свойствах один регистр под переменную выделен.)
Вот эти обращения к 0 биту, компилятор делает вот так/
Чего то я таких команд не встречал, когда на АСМе писАл для этого контроллера!? После замены этого кода на простой/
Всё заработало. Причом до этого работало в ИАР-овском эмуляторе и на АВР-студио4. Не работало в Протеусе и на железе. Это что ж получается, ИАР уже старые модели просто не тащит? Или глюк "растоможки"? Или я чего-нить неправильно написАл на СИ? (volatile struct {} flag @ 15; тоже пробовал. Опять же работала только с ОЗУ). |
||||||
|
|||||||
Ivan. |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 2.11.2004 Репутация: 1 Всего: 2 |
Вполне правильный код и будет работать. Пинцип такой: команда clt сбрасывает флаг T; команда bld r15,b0 записывает флаг T в 0 бит регистра 15; команда set устанавливает флаг T; команда bld r15,b0 записывает флаг T в 0 бит регистра 15. Причина, почему компилятор сделал так в том, что регистр 15 неимеет возможности работы с константами, поэтому он выполнил это через флаг T. Это также удобно для перемещения битов например оз 7 бита надо скопировать в 3:
Вот этот код работать впринципе неможет:
-------------------- Я могу ВСЁ, вопрос - сколько времени у меня это займет! |
||||||
|
|||||||
Коляй |
|
|||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 14.6.2006 Репутация: нет Всего: нет |
Спасибо. Вот этот код на железе не проверял, только в протеусе. Контроллер сломался. Не сгорел, а именно сломался. Не выдаёт ничего, даже порты не открывает. Ресет "упал" и кварц не работает и от внешнего генератора не работает. При этом шьётся и читается. (ничего не замыкал, просто работал-работал и остановился) Потом другой попробую, когда куплю. А остальное всё на железе проверялось, собственно с железа и началось. Не думал что код в "три" строчки не будет правильно работать! Это сообщение отредактировал(а) Коляй - 24.11.2006, 00:32 |
|||
|
||||
Коляй |
|
||||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 14.6.2006 Репутация: нет Всего: нет |
Вобщем вот такой код нормально работает.
Но если вместо него записать по-другому, то не работает.
Когда битовую структуру создавал, тоже самое, в ОЗУ работало, а в регистре нет. Сегодня специально листинги сравнил - листинги полностью идентичны. А вот файл .нех с первой строки разница началась вместо 0С было 1С и т.д. И в конце тоже разница. Может и в середине(весь .нех не стал лопатить), но видимо придётся. |
||||
|
|||||
PILOT |
|
|||
![]() производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: 20 Всего: 54 |
Просто чудеса какие-то
![]() ![]() Чудес не бывает. 1) отключаем любые оптимизации, устанавливаем режим Debug. 2) проверяем правильность установки фьюзов осцилятора. СУВ. -------------------- тут могла быть Ваша реклама... |
|||
|
||||
Коляй |
|
|||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 14.6.2006 Репутация: нет Всего: нет |
Пилот, я же тоже не из пальца это всё взял! Сам в непонятках... 2313 так и умер... Даже паралельным программатором не откликается. Единственный глюк у меня в железе. Комп 166, порт битый. Пони-Прог при проверке не пишет "Test OK", а пишет "обрыв". Но всё равно шьётся и читается. Может из-за этого чего-нить не так. (Оптимизации все отключены и так - стоит "Low").
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)" | |
|
На данный раздел помимо Правил форума распространяются текже следующие правила:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |