|
|
  |
Вопросы по LPC2134 о FIQ и выдачи в UART и зависон в I2C |
|
|
|
Jan 18 2009, 16:37
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(Папа Карло @ Jan 18 2009, 19:30)  Где P1 - ссылка на переменную. Может, указатель все таки? Цитата(Папа Карло @ Jan 18 2009, 19:30)  Подскажите - это компилятор такой или всё таки *P1++ не корректное выражение ? Компилятор правильный и *P1++ корректное выражение. Если результат не соответствует вашим ожиданиям, почитайте букварь по "C". Для модификации переменной следовало написать: (*P1)++
|
|
|
|
|
Jan 18 2009, 19:36
|
Частый гость
 
Группа: Новичок
Сообщений: 176
Регистрация: 15-02-08
Из: Москва
Пользователь №: 35 074

|
Сделал и внедрил в свой модуль управления двигателями менеджер задач. Выкладываю библиотеку и файл примера.
|
|
|
|
|
Jan 19 2009, 14:57
|
Частый гость
 
Группа: Новичок
Сообщений: 176
Регистрация: 15-02-08
Из: Москва
Пользователь №: 35 074

|
Решил попробовать ОС которая идёт с 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 будут ли у меня остальные задачи выполнятся ?
|
|
|
|
|
Jan 20 2009, 09:40
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
Цитата(Папа Карло @ Jan 19 2009, 23:33)  И мне хотелось узнать, не о прерываниях, а о том будут ли все задачи ожидать пока функция fputc передаст байт в UART или ОС будет переключатся между задачами ? Отвечаю по аналогии с scmRTOS - не будет переключаться. Когда я делал "тупой" опрос ножки МК в цикле, система висла. Как мне потом объяснили, нужно дать возможность ОСи переключиться на другие задачи. Тогда я по пути с поллингом ноги делал Sleep(какое-то время). Вот в этом случае у меня все работало великолепно. Здесь такой финт не допустим (ИМХО), т.к. теряется скорость обмена через порт. Цитата(Папа Карло @ Jan 19 2009, 23:33)  П.С. Рисковать нет смысла, т.к. эти функции ждут ожидания флага готовности и записывают\читают в\из регистр(а) данные! Как быстро Вы нашли твердое убеждение вот на это сомнение: Цитата(Папа Карло) Если я правильно понял, то в функциях стоит цикл while с ожиданием пока будет принят или отправлен байт.
--------------------
Выбор.
|
|
|
|
|
Jan 20 2009, 10:26
|
Частый гость
 
Группа: Новичок
Сообщений: 176
Регистрация: 15-02-08
Из: Москва
Пользователь №: 35 074

|
haker_fox Если вы почитаете внимательно ветку эту, да и другие мои ветки на форуме, то убедитесь, что я сам с собой обсуждаю проблемы  Очень помогает, но иногда помогают и другие пользователи... Например с FIQ-ом я понял, что он не реализован в Keil увы...
|
|
|
|
|
Jan 20 2009, 10:58
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
Цитата(Папа Карло @ Jan 20 2009, 18:48)  Как я понимаю, чтоб задача переключилась ей надо передать управление ОС, как это было в Windows95. Win95 кооперативная ОС. scmRTOS - вытесняющая. Цитата(Папа Карло @ Jan 20 2009, 18:48)  haker_fox Почитал вашу ссылку. Как раз Win95 не иначе. Прошу прощения, причем здесть Win95??? Цитата(Папа Карло @ Jan 20 2009, 18:48)  А чтоб ОС сама могла переключить задачу нужна поддержка на аппаратном уровне. Таймер-то есть. О какой поддержке на аппаратном уровне идет речь? MMU? Ну так он то точно тут не нужен.
--------------------
Выбор.
|
|
|
|
|
Jan 20 2009, 18:49
|
Частый гость
 
Группа: Новичок
Сообщений: 176
Регистрация: 15-02-08
Из: Москва
Пользователь №: 35 074

|
Господа, кто по поводу 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;
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|