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

startup я взял готовый из сборки code.bundle.lpc213x.lpc214x.uvision.zip готовых примеров.

судя по тому, что там написано, то все должно быть правильно наверное.

Посмотрел. Там все разрешено.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В стартапе (если разрешил, конечно).

стартап я не менял, значит не разрешил скорее всего, потолму чот не знаю как.

подскажите плиз где это нужно сделать в стартапе?

Изменено пользователем i.dmitry

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробуйте перенести мигание в основной цикл и посмотреть, не зависает ли процессор при получении прерывания.

 

сделал, как вы советовали. нет, не зависает. нормально мигает.

 

Автору, в прерываниях большие задержки ставить глупо, лучше ивертировать состояние, тогда светодиод должен мигать раз в четыре секунды.

это как?

вместо

    IO0CLR = LED;       //turn on LED            
    Soft_Delay(DELAY);  //delay
             
    IO0SET = LED;       //turn off LED  
    Soft_Delay(DELAY);  //delay

сделать так:

static DWORD tmp = LED;

- объявить глобально

а в обраб. прерывания:

__irq void IRQ_Handler(void)
{
    //Blink();     // LED Blink ~0.5 sec
    tmp = ~tmp;
    IO0CLR = tmp;
    IO0SET = ~tmp;
    T0IR = 0x00; // Clear the interrupt flag
}

 

 

а почему неверный?
что тогда делает следующая строчка:
VICIntEnable = TIMER0_INT;
как я понял это Interrupt Enable Register.

 

Да, VIC'а. А есть еще разрешение прерываний у ядра.

это нужно разрешать в стартапе как я понял из предыдущих постов.

 

может кто-нибудь ткнуть пальцем в мой стартап где это сделано? я постараюсь разобраться.

 

я ошибся в предыдущем посте.

 

в стартапе было написано

FIQ_Addr    DCD     FIQ_Handler

 

а у меня в коде IRQ_Handler.

 

это изменил. далее в бесконечный цикл поставил мигание диода.

запустил. диод начал мигать. дальше перестал.

 

2) я закоментировал прототип обработчика и саму функцию обработчика. результат - тот же. мигал, потом перестал.

 

пото м я закоментировал еще и это

    VICIntSelect = TIMER0_INT; //assign TIMER0 intterupt to FIQ category
    VICIntEnable = TIMER0_INT; //Enable TIMER0 interrupt

 

и он начал мигать без сбоев.

 

что-от происходит при входе в прерыванеи навернео

led2.rar

Изменено пользователем i.dmitry

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Полное непонимание того, что пишите и железа. Этот код, конечно, можно залатать, дабы мигал, но дерьмом он так и останется. Начните с еще более простых вещей, и ... ну и с "C".... Залатанные файлы в приложении.

L.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...