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

int0x25

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

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

  • Посещение

Репутация

0 Обычный

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

  • Звание
    Участник
    Участник

Информация

  • Город
    Array
  1. aaarrr, спасибо большое, помогли. Действительно, в документации все написано, просто надо просто внимательнее читать.
  2. Здравствуйте, запускаю таймер, который должен каждые 10 мс запускать АЦП и потом должно быть обработано прерывание конца преобразования. Но у меня почему то только один раз выполняется код в обработчике прерывания АЦП, а после этого даже не обрабатываются прерывания TC2. Наверное, я что то не дописал в обработчике прерывания АЦП, подскажите пожалуйста, что именно. __irq void tc2_int (void) { AT91S_TC* pTC2 = AT91C_BASE_TC2; AT91F_ADC_StartConversion(AT91C_BASE_ADC); *AT91C_AIC_EOICR = pTC2->TC_SR; } __irq void ADC_inter(void) { GetData(); AT91F_AIC_ClearIt(AT91C_BASE_AIC, AT91C_ID_ADC); } void Init_ADC() { AT91S_AIC* pAIC = AT91C_BASE_AIC; AT91F_ADC_SoftReset(AT91C_BASE_ADC); AT91F_ADC_CfgPMC(); AT91F_ADC_CfgModeReg(AT91C_BASE_ADC,ADC_Mode); AT91F_ADC_EnableChannel(AT91C_BASE_ADC, AT91C_ADC_CH4); pAIC->AIC_SMR[AT91C_ID_ADC] = AT91C_AIC_PRIOR_LOWEST | AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL; pAIC->AIC_SVR[AT91C_ID_ADC] = (unsigned long) ADC_inter; AT91F_ADC_EnableIt(AT91C_BASE_ADC,AT91C_ADC_CH4); AT91F_AIC_EnableIt(AT91C_BASE_AIC, AT91C_ID_ADC); pAIC->AIC_IECR = (1 << AT91C_ID_ADC); }
  3. Не работает vTaskResume()

    Здравствуйте. Что то у меня не работает эта функция или я что то не допонимаю. Есть 2 задачи extern xTaskHandle xHandle; portTASK_FUNCTION(vServerTask,pvParameters) { (void) pvParameters; while(true) { ... vTaskResume(&xHandle); } } portTASK_FUNCTION(vTempTask,pvParameters) { (void) pvParameters; while(true) { ... //тут все выполняется vTaskSuspend(NULL); ...//не попадает } } подскажите, где я не правильно делаю.
  4. Нашел от чего это происходит в этой функции. void TCPLowLevelInit(void) { // Keil: Timer 0 is used for TCP retransmission control *AT91C_PITC_PIMR = AT91C_PITC_PITIEN | AT91C_PITC_PITEN | 784741; // 262mSec; *(AT91C_AIC_SVR + AT91C_ID_SYS) = (unsigned int)TCPClockHandler; *(AT91C_AIC_SMR + AT91C_ID_SYS) = AT91C_AIC_SRCTYPE_INT_POSITIVE_EDGE; *AT91C_AIC_IECR = (1 << AT91C_ID_SYS); } Оказывается во FreeRTOS уже используется этот таймер для переключения задач и я просто затирал старый обработчик прерываний. А вот теперь я хочу код из своего обработчика сунуть в тот, который затирал, но он находится в ассемблерном файле. Отсюда вопрос - можно ли в ассемблерный файл экспортировать глобальные переменные из си файла?
  5. Здравствуйте. МК = AT91SAM7x256. Столкнулся с проблемой - для FreeRTOS создал задачу с использованием uip (из стандартновго примера "EasyWEB" в папке Keil). Эта задача работает нормально, а вот другие перестали вообще работать(видимо на них не переключается система). От чего это может быть и как бороться?
  6. rezident, большое спасибо за идею,действительно так проще делать.
  7. aaarrr, спасибо. Только я все все равно не понял как сделать :(. Расскажу что надо сделать, а то может неправильно делаю. Надо считать данные с ацп (n измерений) и передать по сети сами данные + время (дата) запуска ацп с точностью до милисекунд + времена начала каждого измерения в мс с начала работы ацп. С помощью стандартной си'шной функции я получаю и передаю по сети время с точность до секунд на МК. А вот как потом это число записать в PIT да еще, чтобы он отсчитывал с точностью до милисекунд я не пойму. Не мог бы кто нибудь показать мне как примерно можно такое реализовать(запись , чтение из PIT).
  8. Черт, как все сложно, он же даже расшифровывается как таймер реального времени :( А что же тогда можно использовать?
  9. Эм, а если нет внешних часов? Нельзя ли, например, при включении МК по сети ему передавать текущее дату и время, а он потом сам продолжит его отсчитывать? (Сори,если это по дурацки звучит, но в МК я только разбираюсь) Черт туплю, aaarrr внешние часы - это имеется ввиду как раз то что я описал?
  10. Извиняюсь я значит не правильно выразился. Мне нужно реальное время, т.е. чтобы при включении МК на нем было бы реальное время (а не шел отсчет от 0) и тикало пока его не выключат.
  11. Подскажите, пожалуйста, как установить реальное время в AT91SAM7x. Я вот не знаю, можно ли его устанавливать прямо на МК типа вызова функции time_t mytime = time(0); или его надо передавать откуда то при каждом включении МК?
  12. Всем спасибо за помощь. На другом компе все заработало и класс компилится и шаблоны, похоже это что то с кейлом у меня дома, попробую переставить его. Печально, конечно, что подсветка синтаксиса никакая и нет автодополнения :(
  13. Спасибо, конечно, но с с++ у меня все в порядке и я это понимаю =) Дело в другом - когда я пишу class Myclass{}; в хэдере, то не подсвечивается слово class и при компиляции выдает ошибку. А если я это в с++ файл переношу , т.е. и объявление и определение сразу делаю, то все отлично компилируется.
  14. Здравствуйте. Что то я совсем запутался с кейлом :( Создаю h файл и пытаюсь написать класс, компилятор ругается "identifier "class" is undefined" . Переношу этот же объявление класса в с++ файл, там все нормально компилится. Подскажите , пожалуйста, что надо настроить, чтобы объявить класс в хэдере.
  15. Эхх, это же элементарно, черт надо же было так ступить :( Надо делать перерывы в длительной работе, а то вот такие вопросы рождаются. Спасибо большое.
×
×
  • Создать...