karatozz 0 7 июня, 2018 Опубликовано 7 июня, 2018 (изменено) · Жалоба Уважаемые коллеги! Помогите начинающему. Начал изучать FreeRTOS, использую STK600 и ATmega128L. Задача следующая. Есть два светодиода LED0 и LED1. Я создал две задачи, которые устанавливают 0 или 1 на выводах PA0 и PA1. Первая задача делает переключение уровня на PA0 с периодичностью 1 секунда. Вторая задача делает переключение уровня на PA1 с периодичностью 2 секунды. Программа собирается без ошибок, работает без проблем в симуляторе, но когда прошиваю камешек, то просто горят два светодиода на плате STK600. Я перепробовал все возможные настройки фьюзов. Пробывал с внешним тактовым генератором и с внетренним. Проект из Atmel Studio 7 я прикрепил к теме. Буду рад любому совету! TryFreeRTOS.rar Изменено 7 июня, 2018 пользователем karatozz Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
juvf 17 7 июня, 2018 Опубликовано 7 июня, 2018 · Жалоба Отделите мух от котлет. Похоже у вас проблема не с FreeRTOS, а с запуском процессора. FreeRTOSу фиолетово на фьюзы. У вас такой маин заработает? int main (void) { DDRA |= (1 << DDA0) | (1 << DDA1); // xTaskCreate(vBlinkLED0Task, "Task1", configMINIMAL_STACK_SIZE, NULL, 1, NULL); // xTaskCreate(vBlinkLED1Task, "Task2", configMINIMAL_STACK_SIZE, NULL, 1, NULL); // vTaskStartScheduler(); for(;;) { PORTA ^= (1 << PA0); } return 0; } "Светодиодом моргнул - процессор поднял" (С) Визуально не увидите, в дебаге по шагам заморгает. Потом запускайте одну задачу - проверяйте, затем две. ps код в таске дырявый, PORTA ^= (1 << PA0); не атамарна. Годиться разве что для изучения ртос. pps void vBlinkLED0Task(void *pvParameters) { (void) pvParameters;//это наверно костыль, чтоб ворнинга не было? Чтоб не было ворнинга на неиспользуемые аргументы делается так void vBlinkLED0Task(void *pvParameters); void vBlinkLED0Task(void *) { for(;;) { PORTA ^= (1 << PA0); vTaskDelay(1000); } } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 8 июня, 2018 Опубликовано 8 июня, 2018 · Жалоба Уважаемые коллеги! Помогите начинающему. Помогаю)))) У вас есть осцилл или логический анализатор? Если да, то посмотрите частоту переключения светодиодов. Она может оказаться ненулевой, а кГц этак 100))) Тогда они хоть и переключаются, но с очень высокой частотой. Значит что-то не так с тактированием. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vasily_ 54 8 июня, 2018 Опубликовано 8 июня, 2018 · Жалоба Уважаемые коллеги! Помогите начинающему. Начал изучать FreeRTOS, использую STK600 и ATmega128L. FreeRTOS и Atmega? Не совместимые вещи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
juvf 17 8 июня, 2018 Опубликовано 8 июня, 2018 · Жалоба FreeRTOS и Atmega? На Атмеге169 фрииртос крутил. 3 задачи, озу впритык. А на 128 кб, так вообще инь и янь!!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vasily_ 54 8 июня, 2018 Опубликовано 8 июня, 2018 · Жалоба На Атмеге169 фрииртос крутил. 3 задачи, озу впритык. Возможно светодиодами поморгать хватит. А на 128 кб, так вообще инь и янь!!!! Это в какой атмеге столько озу? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 178 8 июня, 2018 Опубликовано 8 июня, 2018 (изменено) · Жалоба На Атмеге169 фрииртос крутил. 3 задачи, озу впритык. А на 128 кб, так вообще инь и янь!!!! Аналогично. С учетом того, что FreeRTOS был тогда еще древних версий. К тому же, часть кода ядра можно выпилить, если не используется никогда, что сократит расход памяти программ. А там еще и в настройках можно поковыряться и выцыганить драгоценного ОЗУ еще. В общем все совместимо, если захотеть. К тому же, есть официальный порт на AVR, который находится в архиве со свежескачанным FreeRTOS :laughing: Ну насчет 128кБ ОЗУ - нет таких AVR. Есть на 128кБ Flash, но FreeRTOS достаточно и более мелких МК, по большому счету. ОЗУ важнее. Изменено 8 июня, 2018 пользователем Arlleex Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vasily_ 54 8 июня, 2018 Опубликовано 8 июня, 2018 · Жалоба К тому же, часть кода ядра можно выпилить, если не используется никогда, что сократит расход памяти программ. А там еще и в настройках можно поковыряться и выцыганить драгоценного ОЗУ еще. В общем все совместимо, если захотеть. Ну вот опять, нужно чуток допилить напильником. Только зачем? 128кБ ОЗУ - нет таких AVR. Есть на 128кБ Flash, но FreeRTOS достаточно и более мелких МК, по большому счету. ОЗУ важнее. Вот и я про это. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 178 8 июня, 2018 Опубликовано 8 июня, 2018 · Жалоба Ну вот опять, нужно чуток допилить напильником. Только зачем? Ну ведь возникло заявление что FreeRTOS и Atmega? Не совместимые вещи. :biggrin: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 8 июня, 2018 Опубликовано 8 июня, 2018 · Жалоба Есть замечательная scmRTOS. Вытесняющая. API на Си++, если кому нужно. Работает шустро. Памяти много не требуется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vasily_ 54 8 июня, 2018 Опубликовано 8 июня, 2018 · Жалоба Ну ведь возникло заявление что :biggrin: Вот именно поэтому и возникло, так поиграться можно но не более. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
juvf 17 9 июня, 2018 Опубликовано 9 июня, 2018 · Жалоба Возможно светодиодами поморгать хватит. Это в какой атмеге столько озу? я и не говорил, что ОЗУ 128 кб. Кто АВР знает, должен был понять.... Перефразирую На Атмеге169 мк AVR с объемом памяти программ 16 кб фрииртос крутил. 3 задачи работало, правда озу впритык. А на 128 кб мк Atmega128, у которого памяти программ 128 кб, у таких и ОЗУ поболее, так вообще инь и янь!!!! Возможно светодиодами поморгать хватит.ну возможно школоте, чтоб светодиодом поморгать под FreeRTOS, нужно минимум 128 кб памяти программ. У меня крутилось 3 задачи: Одна задача опрашивала клавиатуру, другая занималась выводом на экран, 3-я делала основную работу. Говорят, что FreeRTOS грамоздкая, что ей нужен жирный проц, на мелких/слабых не пойдет. На самом деле FreeRTOS достаточно компактная, работает шустро, требует мало ресурсов. Мне даже не пришлось на созадачи уходить. Если бы потребовалось ещё чего-нить, возможно пришлось бы уходить в созадачи. Но без этого хватило флеша. Да, у FreeRTOS есть официальный порт на АВР. Я не рекламирую фрииртос. Кто хочет - пробуйте. Кому-то подавай жирный линукс из коробки, а кто-то готов сам разобраться с микро ОС. Просто не нужно вводить ТС в заблуждение, что FreeRTOS и Atmega - Не совместимые вещи. Очень даже совместимые. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
karatozz 0 18 июня, 2018 Опубликовано 18 июня, 2018 (изменено) · Жалоба Друзья! Спасибо всем за помощь! У меня получилось запустить FreeRTOS на ATmega128. Проект, который прикреплял к своему первому посту полностью рабочий. Я уже было отчаялся:) Отложил изучение FreeRTOS и начал разбираться с интерфейсом TWI, который тоже у меня никак не мог запуститься:) Перепробовав все что можно я наконец-то добрался до фьюз-битов. Оказывается на атмеге, которая у меня была, по умалчанию был установлен фьюз совместимости с ATmega103. Убрав совместимость у меня сразу заработал код для TWI интерфейса и с первого раза код FreeRTOS. Вообщем, в очередной раз убеждаюсь, что нужно внимательно читать даташит:) Отдельная благодарность Juvf! Благодаря Вам я до последнего верил, что FreeRTOS у меня запустится! :rolleyes: Изменено 18 июня, 2018 пользователем karatozz Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 27 19 июня, 2018 Опубликовано 19 июня, 2018 · Жалоба Вообщем, в очередной раз убеждаюсь, что нужно внимательно читать даташит . . .И даташит должен быть на "перспективный", хотябы в какой-то мере, процессор. Чтобы умышлено "зажимать" себя в скудные ресурсы есть только одно оправдание - нежелание-боязнь читать даташиты на более продвинутые платформы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
juvf 17 19 июня, 2018 Опубликовано 19 июня, 2018 · Жалоба И даташит должен быть на "перспективный", хотябы в какой-то мере, процессор. А что есть "перспективный"? Атмега128 для FreeRTOS - тут разгуляться можно во всю ни в чем себе не отказывая. Можно сразу включить все опции ядра и писать китайский код без какой либо оптимизации (если конечно контент не хранить, типа *.jpg или медиа, для этого добавить внешнюю сд можно нужно). Можно добавить няшек типа FreeRTOS+CLI или FS, или Tracer какойнить. Куда перспективнее? Для задач 8-битника с 16МГц такта - Атмега128 чуть ли не потолок. Только я бы конечно вместо атмеги128 глянул бы стм8с - теже яйца 128кб будет раза в 3 дешевле, а периферия повкуснее. Чтобы умышлено "зажимать" себя в скудные ресурсы есть только одно оправдание - нежелание-боязнь читать даташиты на более продвинутые платформы.я был умышленно зажат в 20-ти ногий стм8 с 8 кб флеша вместо атмеги32. Т.к. стм8 стоил 12 рублей, а атмега32 более 100. ТС изучив FreeRTOS на просторах атмеги128 в будущем в перспективе сможет легко поднять данную ОС и на более слабых/простых/дешевых мк, как и на более мощных. Всё зависит от задачи. Есть замечательная scmRTOS. Вытесняющая. API на Си++, если кому нужно. Работает шустро. Памяти много не требуется. Писал пробовал писать на пуре с++ для атмеги. Невзлетело. Использовал компилятор из состава winAVR. В этом "с++" нет реализации new/delete. Можно ли использовать scmRTOS на AVR процессорах с компилятором winAVR? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться