aaarrr 69 28 августа, 2008 Опубликовано 28 августа, 2008 · Жалоба startup я взял готовый из сборки code.bundle.lpc213x.lpc214x.uvision.zip готовых примеров. судя по тому, что там написано, то все должно быть правильно наверное. Посмотрел. Там все разрешено. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
i.dmitry 0 28 августа, 2008 Опубликовано 28 августа, 2008 (изменено) · Жалоба В стартапе (если разрешил, конечно). стартап я не менял, значит не разрешил скорее всего, потолму чот не знаю как. подскажите плиз где это нужно сделать в стартапе? Изменено 28 августа, 2008 пользователем i.dmitry Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
i.dmitry 0 29 августа, 2008 Опубликовано 29 августа, 2008 (изменено) · Жалоба Попробуйте перенести мигание в основной цикл и посмотреть, не зависает ли процессор при получении прерывания. сделал, как вы советовали. нет, не зависает. нормально мигает. Автору, в прерываниях большие задержки ставить глупо, лучше ивертировать состояние, тогда светодиод должен мигать раз в четыре секунды. это как? вместо 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 Изменено 29 августа, 2008 пользователем i.dmitry Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 29 августа, 2008 Опубликовано 29 августа, 2008 · Жалоба Полное непонимание того, что пишите и железа. Этот код, конечно, можно залатать, дабы мигал, но дерьмом он так и останется. Начните с еще более простых вещей, и ... ну и с "C".... Залатанные файлы в приложении. L.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться