|
Споткнулся на IE1 в MSP430F449 |
|
|
|
Feb 8 2008, 10:09
|

Местный
  
Группа: Свой
Сообщений: 319
Регистрация: 3-09-05
Из: Беларусь, Новополоцк
Пользователь №: 8 188

|
Почему не работает код: Код IE1 |= URXIE0; Соответствующая ему строка листинга: Код F2D040000000 BIS.B #0x40, &0x0 Запускаю - не работает. Начинаю проверять по шагам. Весь код работает как нужно (проверяю содержимое модифицируемых регистров отладчиком - View->Register). Выполняю эту строку - бит не устанавливается. Главное в IE2 биты устанавливаются, а этот нет. Если написать IE1 |= URXIE0 прямо в окне Watch или просто вручную установить нужный бит в окне Register, то бит устанавливается и прерывание начинает срабатывать. Процессор F449 (необходимый include сделал), версия IAR'a - 4.10. Что я пропустил?
|
|
|
|
|
 |
Ответов
|
Feb 9 2008, 22:39
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
А без отладчика проверять не пробовали? Загрузить прошивку, отключить JTAG и помигать светодиодом в случае успешной или неуспешной инициализации? А то чудеса какие-то рассказываете. Если в программе команда такая есть, то она не может не выполняться! Кстати, я ни разу не встречал чтобы команды, оперирующие с SFR (IEx, IFGx, MEx) компилятор "выкидывал". Даже при самом высочайшем уровне оптимизации. Что-то явно не то в консерватории у вас. Цитата(shasik) Расставил IE1 |= URXIE0 в нескольких местах, даже по несколько раз подряд. Естественно часть из них компилятор выкинул, но тем не менее P.S. ради любопытства, попробуйте скомпилировать этот же проект в предыдущей версии IAR. Например, в 3.30. Скачать можно на местном ФТП.
|
|
|
|
|
Feb 10 2008, 04:45
|

Местный
  
Группа: Свой
Сообщений: 319
Регистрация: 3-09-05
Из: Беларусь, Новополоцк
Пользователь №: 8 188

|
Цитата(rezident @ Feb 10 2008, 00:39)  А без отладчика проверять не пробовали? Загрузить прошивку, отключить JTAG и помигать светодиодом в случае успешной или неуспешной инициализации? Если прерывание сработает, то устройство выплюнет ответ. Если запустить без всяких танцев с бубном, то можно сколько угодно пихать данные - ответа нет. Запускаем через JTAG. Устанавливаем бит вручную. Вообще отлючаем JTAG - устройство работает как надо (принимает и передает). Цитата(rezident @ Feb 10 2008, 00:39)  Если в программе команда такая есть, то она не может не выполняться! Если бы я в этом сомневался, то не стал бы поднимать вопрос. Сам знаю что должна. Но нет. Точно говорю - если команда стоит в теле функции InitDevice - бит не выставляется. Больше обращений к IE1 в этой функции нет (говорю, это на всякий случай, предвосхищая возможные вопросы). Цитата(rezident @ Feb 10 2008, 00:39)  Кстати, я ни разу не встречал чтобы команды, оперирующие с SFR (IEx, IFGx, MEx) компилятор "выкидывал". Небольшая путаница. Посмотрел листинг, действительно все строки на месте, а вот в окне дизассемблера, когда идет пошаговое выполнение вот там почему-то не все строки стоят. Проверил, это точно!
|
|
|
|
|
Feb 10 2008, 11:35
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(shasik @ Feb 10 2008, 09:45)  Если прерывание сработает, то устройство выплюнет ответ. Результат "плевания ответа" зависит не от одного лишь бита в IE, не так ли? Вы бы приаттачили исходник, может чего путного и посоветовали бы тут. В факт, что C-CPY может глючить и что-то не так показывать, я могу поверить, а вот в то, что не выполняется линейный код подобной программы уже прошитый в кристалл - извините, нет.
|
|
|
|
|
Feb 11 2008, 06:25
|

Местный
  
Группа: Свой
Сообщений: 319
Регистрация: 3-09-05
Из: Беларусь, Новополоцк
Пользователь №: 8 188

|
Цитата(rezident @ Feb 10 2008, 13:35)  Результат "плевания ответа" зависит не от одного лишь бита в IE, не так ли? Выходит, что зависит. К устройству по UART'у подключено другое, которое постоянно пихает в него данные. Если бит не установился, но активность наблюдаю только на одном проводе (RX для MSP). Если же бит установился, то вижу осциллографом "красоту" уже по двум каналам. Цитата(rezident @ Feb 10 2008, 13:35)  В факт, что C-CPY может глючить и что-то не так показывать, я могу поверить, а вот в то, что не выполняется линейный код подобной программы уже прошитый в кристалл - извините, нет. Урок в грузинской школе. Учительница: Гоги, дакажи тэарему Гоги: Мамай, клянусь .... Реальность такая: программа прошита, галочка Verify Download стоит, в листинге команда присутствует, а дит не устанавливается (вставил еще пару строк, которые анализируют состояние бита и выставляют 0/1 на одной из ног процесора - бит не устанавливается). Я не говорю, что команда не выполняется, я говорю, что она не делает того, что ожидается. Цитата(rezident @ Feb 10 2008, 13:35)  Вы бы приаттачили исходник, может чего путного и посоветовали бы тут. Если честно, то немного стесняюсь. Уж слишком Вы гуру в MSP430. Достаточно посмотреть на количество Ваших постов, да и топики очень часто заканчиваются именно Вашим ответом. Стремно, а вдруг обсмеете
|
|
|
|
Сообщений в этой теме
shasik Споткнулся на IE1 в MSP430F449 Feb 8 2008, 10:09 rezident Что значит "не работает"? Команда BIS.B ... Feb 8 2008, 10:18 shasik Цитата(rezident @ Feb 8 2008, 12:18) Что ... Feb 8 2008, 10:46  rezident Цитата(shasik @ Feb 8 2008, 15:46) Расста... Feb 8 2008, 11:50   shasik Цитата(rezident @ Feb 8 2008, 13:50) Стра... Feb 9 2008, 22:16    Сергей Борщ Цитата(shasik @ Feb 10 2008, 00:16) Работ... Feb 10 2008, 10:10 Kurt Флаг URXIE0 может сбрасываться установленным битом... Feb 11 2008, 07:07 rezident Цитата(Kurt @ Feb 11 2008, 12:07) Флаг UR... Feb 11 2008, 08:43 VAI http://electronix.ru/forum/index.php?showt...24037... Feb 11 2008, 08:33 shasik Первым догадался Сергей Борщ: если установлен бит ... Feb 11 2008, 10:24 VAI Ключевое слово Цитатадогадался.
Никто Вас не заст... Feb 11 2008, 12:41 shasik Цитата(VAI @ Feb 11 2008, 14:41) Попробуй... Feb 12 2008, 06:10 jorikdima сталкивался с этой особенностью. Тоже пару часов у... Feb 12 2008, 07:38
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|