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

JeDay

Свой
  • Постов

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

  • Посещение

Весь контент JeDay


  1. http://forum.electronix.ru/index.php?showtopic=1037 очень много об этом написано
  2. Сбой наверно потому что напряжение падает слишком быстро. Попробуй ионистор еще один поставить, а запись, как скали выше, без прерываний делай. При быстром падении напряжения возможно бит EEWE вылетает раньше времени.
  3. Попробуй ICC AVR. Мож понравится... http://www.imagecraft.com/software/demos.html Лечилки вроди нету пока, есть отматывалка времени. ImageCraft_Unlimiter_AVR.rar
  4. Кто нить боки на АВР расшифровал ? Хотел сказать ботлоадеры для АВР :)
  5. Большое спасибо. Лучше на буржуйском чем вообще ничего. :)
  6. Дайте ссылки на книги, если кто знает. Можно где нить на русском скачать ?
  7. Спасибо. А вообще идея в очередях сообщений какая... При добавлении указателя в очередь я не могу изменять данные на которые он указывает. Т.е. если я с одного потока ставлю в очередь 20 команд, мне надо объявить 20 указателей и их ставить в очередь ? Я в тренировочной проге делал один указатель, добавлял его в очередь, а потом сразу же изменял по событию данные и снова ставил в очередь. Так по ходу делать нельзя... ?
  8. Спасибо. Я знаю что есть OSMem. Правда еще не пробовал ими пользоваться. У меня такой вопрос: Если я объявил массив А локально(т.е. не через new и delete), посылаю в очередь сообщений, у которого найвысший приоритет, указатель на этот массив. Затем тут же перезаписываю массив А другими данными. После перепланировки другой поток получает сообщение(указатель на массив А) и вычитывает данные, которые уже изменены. // Task 1 (Найвысший приоритет) INT8U *A, err; A = "Hello"; ... err = OSQPost(evQ, (void*)A); A = "Bad"; //------------------------------------------- // Task2 INT8U *msg, err; ... msg = OSQPend(evQ, 0, &err); //------------------------------------------- Чему равно msg ? "Hello" или "Bad" ?
  9. В ф-ю OSMboxPost() OSQPost() передается указатель на передаваемое сообщение. В исходниках ОС я не нашел копирования этого сообщения в промежуточные переменные. Получается когда я посылаю указатель на массив в очередь сообщений, я не могу потом этот массив изменять? Принцып передачи сообщений построен на указателях. Подскажите как правильно передачу сообщений организовать. Зараннее благодарен.
  10. uCOS-II для AVR

    Напиши свой МЕЙЛ, сброшу свой проэктик мигания светодиодами. Сравниш со своим и поймеш в чем лажа. Сам пару недель назад как ты мучался.
  11. В мануале написало что перед обработчиком прерывания надо: 1. сохранить регистры; 2. OSIntEnter(); 3. ОБРАБОТЧИК ПРЕРЫВАНИЯ; 4. OSIntExit(); 5. восстановить регистры. Я не проделываю пункты 1. и 5., все вроди работает. Пишу обработчики на Си. для пунктов 1. и 5. надо Асм городить(по другому вроди никак). Как красиво написать обработчик по всем требуемым правилам ? Проблема в том, что если я делаю OSSemPost(x), OSMboxPost(x) и т.д. то через 1-4 посылки ОС зависает. Это наверно из-за того что я не сохраняю текущий контекст потока...(?) Пришлите плиз пример из правельным обработчиком прерывания для ATmega128. Зараннее спасибо.
  12. Всем спасибо. ОС заработала. Я неправильно стеки инициализировал. OSTaskStkSize = OS_TASK_IDLE_STK_SIZE; // (1) OSTaskStkSizeHard = OS_TASK_IDLE_STK_SIZE_HARD; // (2) OSInit(); OSTaskStkSize = OS_TASK_START_STK_SIZE; // (3) OSTaskStkSizeHard = OS_TASK_START_STK_SIZE_HARD; // (4) OSTaskCreateExt(Task_Start, (void *)0, (OS_STK *)&TaskStartStk[OSTaskStkSize - 1], OS_TASK_START_PRIO, OS_TASK_START_PRIO, (OS_STK *)&TaskStartStk[OSTaskStkSizeHard], OSTaskStkSize - OSTaskStkSizeHard, (void *)0, OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR); Я пункты 1,2 пропустил, а место 3,4 в ф-ю OSTaskCreateExt размеры стеком напрямую прописывал. (Писал от имени Ember, он зыбил выход нажать :) )
  13. Спасибо. Я не нашел в описалове что именно перед вызовом OSInit() надо этим переменным размеры стеков присваивать. OSTaskStkSize = OS_TASK_IDLE_STK_SIZE; // ? OSTaskStkSizeHard = OS_TASK_IDLE_STK_SIZE_HARD; // ? OSInit(); А на счет прерываний, то в даташите написано что нельзя запускать таймер тиков до OSStart т.е. наверно и разрешать прерывания тоже нельзя ? А еще вопросик: Работает ли данная ОС под ATMega128 аппаратно с внешней памятью ? Или только с внутренней 4кБ ?
×
×
  • Создать...