Перейти к содержанию
    

Alexander___

Участник
  • Постов

    10
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о Alexander___

  • День рождения 23.04.1975
  1. Всем спасибо! Заработало. Подключил прерывание через GPIO=EINT3. Тему можно закрыть.
  2. Еще как понимаю! Понимаю еще что Вы не понимаете. :) А телепаты это кто? Ладно. Расшифрую. Насколько я понимаю (может и ошибаюсь), если задать альтернативную функцию для вывода порта, то значение бита в FIOPN не должно меняться? А тут какю бы функцию не задал, в данном случае или EINT1/ LCDCLKIN, или MCIDAT1 или I2STX_CLK, изменение сигнала на Р2.11 влияет на 11 бит регистра FIO2PIN. Так понятно изложил? :) Спасибо за подсказку про прерывания, только у меня в мануале это страница 188 оказалась. Наверное разные версии. LCD контролер включен. А разве сброс 5 бита в LCD_POL не может разрешить прерывание? Может опять я невнимательно доку читал.
  3. Ну вот. Либо слишком глупый вопрос задал, либо одно из двух :) Неужели никто с такой ситуацией не сталкивался?! Или никто не использует внешнее прерывание 1? Или никому это не интересно?
  4. lpc2478 + прерывание EINT1

    Доброго времени суток! Уже третий день бьюсь над обработкой прерывания от внешнего источника 1. Не получается. Загвоздка похоже в конфигурировании Р2.11(PINSEL4 23:22). Какую бы функцию не задал для этого вывода 00, 01, 10, 11, все воспринимается как 00. Т.е. могу оценить состояние вывода Р2.11 через FIO2PIN (FIO2PIN&0x800). Причем даже при FIO2DIR=0х800! Может кто сталкивался с такой ситуацией? Подскажите где собака порылась И еще если задать IO2IntEnR=0х800 и IO2IntEnF=0x800, то по соответствующим перепадам сигнала флаги в регистрах IO2IntStatR и IO2IntStatF устанавливаются в 0х800. В даташите сказано, что запись 1 в соответствующий бит регистров IO2IntEnR и IO2IntEnF разрешает прерывание по изменению сигнала на указанном выводе порта 2, но нет регистра для адреса функции обработки такого прерывания, нет бита в регистре VICIntEnable для разрешения такого прерывания. Одним словом нет возможности для обработки такого прерывания. Это интересно зачем так? Или может я что-то не так понял? Заранее спасибо.
  5. Здрасьте! Сегодня увидел письмо по теме в ящике. Про предупреждения не помню, кстати где их посмотреть можно? Попробовал здесь открыть личную почту. Вместо почты созерцал надпись "Вам запрещено использовать личные сообщения на форуме". Это почему так?
  6. Ужасный глюк!

    Хотелось бы все же узнать чем закончился этот "ужастный глюк"? У меня сттуация похожа.Отладчиком я не пользуюсь, на какие адреса происходит прыжок не знаю. Но периодически происходит переинициализация. RSTC_SR показывает всегда код последнего реально совершенного сброса.
  7. А в EMAC_RSR какие при этом флаги получаются?
  8. Это я уже читал прежде чем открыть тему. Там про IAR и Keil. :( А с CrossWorks кто-нибудь работал? Там то как? Может в коде у меня чего-то не хватает? ..... Еще хочу добавить, программу скомпилировал в опциях CW "ARM Flash Debug". Она после прошивки, перед сбросом питания должна работать? У меня не работает. В общем мертво все. то Alexanter_ Настоятельное требование ознакомиться с правилами и не разводить в постах множественное цитирование самого себя любимого. На первый раз прибрал мусор за Вами.
  9. Вот уш наверное не первый я, кто с подобным сталкивается. Переползаю с AVR-ов на ARM. Выбрал CrossWorks. Плата у меня собрана по образу и подобию ЕК. На 19 ноге порта В висит светодиод. Простейшая программа по морганию им не запускается. Заливаю прогу через самбу напрямую по USB используя SAM-PROG v2.3. Устанавливаю в меню SAM-PROG, чтбы по успешной прошивке загорался светодиод. После программировани - горит. Сбрасыаю питание - все порты в 1, и тишина.... Ниже привожу код. Может что посоветуете? Два дня уже убил! #include <ctl_api.h> #include <targets/AT91SAM7.h> #define LED_MASK 0x00080000 #define TMR_RT_1HZ 0x8000 int main(void) { ulong time, ctime; PIOB_OWER=LED_MASK; PIOB_OWER=LED_MASK; RTT_MR=TMR_RT_1HZ; //real time timer increment on 1 sec, interrupts disabled PIOB_PUDR=LED_MASK; PIOB_CODR=LED_MASK while(1) { while (ctime==time) time=RTT_VR; ctime=time; if ((PIOB_PDSR&LED_MASK)==LED_MASK) PIOB_CODR=LED_MASK; else PIOB_SODR=LED_MASK; } }
×
×
  • Создать...