RoboTok
Участник-
Постов
175 -
Зарегистрирован
-
Посещение
Репутация
0 ОбычныйИнформация о RoboTok
-
Звание
Частый гость
- День рождения 19.02.1977
Контакты
-
Сайт
Array
-
ICQ
Array
Информация
-
Город
Array
-
Сброс LPC2142.
RoboTok ответил DreamTwister тема в ARM, 32bit
Заработало, как добавил __disable_irq -
Сброс LPC2142.
RoboTok ответил DreamTwister тема в ARM, 32bit
Задачи не клинит, а завтра попробую __disable_irq... Кстати, в симуляторе работает нормально. Только, если в МК зашить, то перегружается. -
Сброс LPC2142.
RoboTok ответил DreamTwister тема в ARM, 32bit
Что то в Keil-е сообщает об ошибке, если писать __disable_interrupt() и __enable_interrupt(). Приоритет выставил 3, другие остальные задачи запускал под 1 и 2 приоритетами. Как я понял, что задача имеет более высокий приоритет. Чип работает на 60МГц и PCLK = 15МГц. -
Сброс LPC2142.
RoboTok ответил DreamTwister тема в ARM, 32bit
Извиняюсь, что влезаю, но чтоб зря темы не плодить... Настроил сторожевую собаку вот так: //Watchdog WDTC = 15000000; WDMOD = 3; WDFEED = 0xAA; WDFEED = 0x55; А скидываю вот так: /*---------------------------------------------------------------------------- * Task 'watchdog': watchdog task *---------------------------------------------------------------------------*/ __task void watchdog_task( void ) { while( 1 ) { WDFEED = 0xAA; WDFEED = 0x55; os_dly_wait( 50 ); } } Стоит ОС RTX Kernel от Keil. Задачу создал так: t_watchdog = os_tsk_create( watchdog_task, 3 ); Проблема в том, что периодически скидывается МК LPC2134. Когда я отключил собаку, то МК перестал сбрасываться. Что бы это означало ? -
Усреднение вычислений АЦП
RoboTok ответил Wantcan тема в MCS51, AVR, PIC, STM8, 8bit
Возник вопрос по формуле T_average = T_average + (T_current - T_average) / 20.0. Если я правильно понял, то первое значение лучше сразу занести в переменную T_average. А если не записать, то показания будут нарастать в зависимости от кол-ва отсчётов ? -
Конечно гарантировать, что они всегда на 0-ле я не могу. Но в программе я нигде не обращаюсь к ним. Вообще, у меня пробегала мысль, что нужно сбросить бит, даже если они и так 0-вые. В отладчике, то и так работает, без записи 0-лей.
-
Возможно сбрасывают биты в 0 ? Только, не задача, они и так на 0-ле...
-
Господа, кто по поводу UART-а всё таки выскажет мысли ? И ещё тут вопрос назрел. Есть код настройки порта на работу по I2C. Я не могу понять зачем там строка 1 и 3 ? PINSEL0 &= ~(3 << 4); // setup I2C.0 SCL pin PINSEL0 |= 1 << 4; PINSEL0 &= ~(3 << 6); // setup I2C.0 SDA pin PINSEL0 |= 1 << 6;
-
Настраивал по примеру из Keil-а UART и заметил, что скорость не совсем точная выходит! Например, 9560, хотя сам UART работает. Понятно, что надо ставить кварц хитрый, а у меня стоит 12МГц. Сейчас настраивал UART на скорость 19200 и добился скорости 19188 с помощью комбинаций делителей DLL и FDR. Можно ли настроить ещё точнее скорость ? Как повлияет не точная скорость на работу ?
-
Есть таймер и что ? Не переключает же. как вы сказали сами... А по обсуждению в другой ветке, которую вы привели, как раз похоже на кооперацию. Посмотрел документацию на RTX Kernel и нашёл там настройки по режиму многозадачности. Можно настроить ОС в режиме кооператива или вытеснения!
-
Как я понимаю, чтоб задача переключилась ей надо передать управление ОС, как это было в Windows95. И потом уже ОС передаст управление ещё кому либо. haker_fox Почитал вашу ссылку. Как раз Win95 не иначе. А чтоб ОС сама могла переключить задачу нужна поддержка на аппаратном уровне.
-
haker_fox Если вы почитаете внимательно ветку эту, да и другие мои ветки на форуме, то убедитесь, что я сам с собой обсуждаю проблемы ;) Очень помогает, но иногда помогают и другие пользователи... Например с FIQ-ом я понял, что он не реализован в Keil увы...
-
В примерах у Keil-а есть проект Measure на ОС RTX. Оттуда я вырезал эти функции. И мне хотелось узнать, не о прерываниях, а о том будут ли все задачи ожидать пока функция fputc передаст байт в UART или ОС будет переключатся между задачами ? П.С. Рисковать нет смысла, т.к. эти функции ждут ожидания флага готовности и записывают\читают в\из регистр(а) данные!
-
Решил попробовать ОС которая идёт с Keil R T L K e r n e l. И есть вопрос. Вот код работы с UART: /*---------------------------------------------------------------------------- * sendchar: Write a character to Serial Port *---------------------------------------------------------------------------*/ int fputc (int ch, FILE *f) { if (ch == '\n') { while (!(U1LSR & 0x20)); U1THR = CR; /* output CR */ } while (!(U1LSR & 0x20)); return (U1THR = ch); } /*---------------------------------------------------------------------------- * getchar: Read a character from Serial Port *---------------------------------------------------------------------------*/ int fgetc (FILE *f) { while (!(U1LSR & 0x01)); return (U1RBR); } Если я правильно понял, то в функциях стоит цикл while с ожиданием пока будет принят или отправлен байт. Так вот, если я буду отправлять длинную строку в UART будут ли у меня остальные задачи выполнятся ?
-
Сделал и внедрил в свой модуль управления двигателями менеджер задач. Выкладываю библиотеку и файл примера. task.rar primertask1.rar