реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> FreeRTOS 10 + ATmega128L + STK600, Изучаю FreeRTOS
karatozz
сообщение Jun 7 2018, 17:42
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 7-06-18
Из: Dnipro
Пользователь №: 104 946



Уважаемые коллеги! Помогите начинающему. Начал изучать FreeRTOS, использую STK600 и ATmega128L. Задача следующая. Есть два светодиода LED0 и LED1. Я создал две задачи, которые устанавливают 0 или 1 на выводах PA0 и PA1. Первая задача делает переключение уровня на PA0 с периодичностью 1 секунда. Вторая задача делает переключение уровня на PA1 с периодичностью 2 секунды. Программа собирается без ошибок, работает без проблем в симуляторе, но когда прошиваю камешек, то просто горят два светодиода на плате STK600. Я перепробовал все возможные настройки фьюзов. Пробывал с внешним тактовым генератором и с внетренним. Проект из Atmel Studio 7 я прикрепил к теме. Буду рад любому совету!

Сообщение отредактировал karatozz - Jun 7 2018, 17:42
Прикрепленные файлы
Прикрепленный файл  TryFreeRTOS.rar ( 676.72 килобайт ) Кол-во скачиваний: 6
 
Go to the top of the page
 
+Quote Post
juvf
сообщение Jun 7 2018, 18:55
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Отделите мух от котлет. Похоже у вас проблема не с 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);
    }
}


Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jun 8 2018, 06:10
Сообщение #3


Познающий...
******

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



QUOTE (karatozz @ Jun 8 2018, 01:42) *
Уважаемые коллеги! Помогите начинающему.

Помогаю)))) У вас есть осцилл или логический анализатор? Если да, то посмотрите частоту переключения светодиодов. Она может оказаться ненулевой, а кГц этак 100))) Тогда они хоть и переключаются, но с очень высокой частотой. Значит что-то не так с тактированием.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
Vasily_
сообщение Jun 8 2018, 06:28
Сообщение #4


Знающий
****

Группа: Модераторы
Сообщений: 925
Регистрация: 25-01-09
Из: Рига
Пользователь №: 43 909



Цитата(karatozz @ Jun 7 2018, 20:42) *
Уважаемые коллеги! Помогите начинающему. Начал изучать FreeRTOS, использую STK600 и ATmega128L.

FreeRTOS и Atmega?
Не совместимые вещи.
Go to the top of the page
 
+Quote Post
juvf
сообщение Jun 8 2018, 07:22
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(Vasily_ @ Jun 8 2018, 11:28) *
FreeRTOS и Atmega?

На Атмеге169 фрииртос крутил. 3 задачи, озу впритык. А на 128 кб, так вообще инь и янь!!!!
Go to the top of the page
 
+Quote Post
Vasily_
сообщение Jun 8 2018, 08:14
Сообщение #6


Знающий
****

Группа: Модераторы
Сообщений: 925
Регистрация: 25-01-09
Из: Рига
Пользователь №: 43 909



Цитата(juvf @ Jun 8 2018, 10:22) *
На Атмеге169 фрииртос крутил. 3 задачи, озу впритык.

Возможно светодиодами поморгать хватит.
Цитата
А на 128 кб, так вообще инь и янь!!!!

Это в какой атмеге столько озу?
Go to the top of the page
 
+Quote Post
Arlleex
сообщение Jun 8 2018, 08:20
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 492
Регистрация: 12-11-11
Пользователь №: 68 264



Цитата(juvf @ Jun 8 2018, 11:22) *
На Атмеге169 фрииртос крутил. 3 задачи, озу впритык. А на 128 кб, так вообще инь и янь!!!!

Аналогично. С учетом того, что FreeRTOS был тогда еще древних версий. К тому же, часть кода ядра можно выпилить, если не используется никогда, что сократит расход памяти программ. А там еще и в настройках можно поковыряться и выцыганить драгоценного ОЗУ еще. В общем все совместимо, если захотеть.
К тому же, есть официальный порт на AVR, который находится в архиве со свежескачанным FreeRTOS laughing.gif
Ну насчет 128кБ ОЗУ - нет таких AVR. Есть на 128кБ Flash, но FreeRTOS достаточно и более мелких МК, по большому счету. ОЗУ важнее.

Сообщение отредактировал Arlleex - Jun 8 2018, 08:24
Go to the top of the page
 
+Quote Post
Vasily_
сообщение Jun 8 2018, 08:24
Сообщение #8


Знающий
****

Группа: Модераторы
Сообщений: 925
Регистрация: 25-01-09
Из: Рига
Пользователь №: 43 909



Цитата
К тому же, часть кода ядра можно выпилить, если не используется никогда, что сократит расход памяти программ. А там еще и в настройках можно поковыряться и выцыганить драгоценного ОЗУ еще. В общем все совместимо, если захотеть.

Ну вот опять, нужно чуток допилить напильником. Только зачем?

Цитата
128кБ ОЗУ - нет таких AVR. Есть на 128кБ Flash, но FreeRTOS достаточно и более мелких МК, по большому счету. ОЗУ важнее.

Вот и я про это.
Go to the top of the page
 
+Quote Post
Arlleex
сообщение Jun 8 2018, 08:27
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 492
Регистрация: 12-11-11
Пользователь №: 68 264



Цитата(Vasily_ @ Jun 8 2018, 12:24) *
Ну вот опять, нужно чуток допилить напильником. Только зачем?

Ну ведь возникло заявление что
Цитата
FreeRTOS и Atmega?
Не совместимые вещи.

biggrin.gif
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jun 8 2018, 08:56
Сообщение #10


Познающий...
******

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



Есть замечательная scmRTOS. Вытесняющая. API на Си++, если кому нужно. Работает шустро. Памяти много не требуется.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
Vasily_
сообщение Jun 8 2018, 09:02
Сообщение #11


Знающий
****

Группа: Модераторы
Сообщений: 925
Регистрация: 25-01-09
Из: Рига
Пользователь №: 43 909



Цитата(Arlleex @ Jun 8 2018, 11:27) *
Ну ведь возникло заявление что

biggrin.gif

Вот именно поэтому и возникло, так поиграться можно но не более.
Go to the top of the page
 
+Quote Post
juvf
сообщение Jun 9 2018, 08:37
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(Vasily_ @ Jun 8 2018, 13:14) *
Возможно светодиодами поморгать хватит.

Это в какой атмеге столько озу?

я и не говорил, что ОЗУ 128 кб. Кто АВР знает, должен был понять.... Перефразирую

На
Атмеге169 мк AVR с объемом памяти программ 16 кб фрииртос крутил. 3 задачи работало, правда озу впритык. А на 128 кб мк Atmega128, у которого памяти программ 128 кб, у таких и ОЗУ поболее, так вообще инь и янь!!!!

Цитата
Возможно светодиодами поморгать хватит.
ну возможно школоте, чтоб светодиодом поморгать под FreeRTOS, нужно минимум 128 кб памяти программ. У меня крутилось 3 задачи: Одна задача опрашивала клавиатуру, другая занималась выводом на экран, 3-я делала основную работу.

Говорят, что FreeRTOS грамоздкая, что ей нужен жирный проц, на мелких/слабых не пойдет. На самом деле FreeRTOS достаточно компактная, работает шустро, требует мало ресурсов. Мне даже не пришлось на созадачи уходить. Если бы потребовалось ещё чего-нить, возможно пришлось бы уходить в созадачи. Но без этого хватило флеша.

Да, у FreeRTOS есть официальный порт на АВР. Я не рекламирую фрииртос. Кто хочет - пробуйте. Кому-то подавай жирный линукс из коробки, а кто-то готов сам разобраться с микро ОС. Просто не нужно вводить ТС в заблуждение, что FreeRTOS и Atmega - Не совместимые вещи. Очень даже совместимые.

Go to the top of the page
 
+Quote Post
karatozz
сообщение Jun 18 2018, 17:30
Сообщение #13





Группа: Новичок
Сообщений: 3
Регистрация: 7-06-18
Из: Dnipro
Пользователь №: 104 946



Друзья! Спасибо всем за помощь!
У меня получилось запустить FreeRTOS на ATmega128. Проект, который прикреплял к своему первому посту полностью рабочий. Я уже было отчаялсяsm.gif Отложил изучение FreeRTOS и начал разбираться с интерфейсом TWI, который тоже у меня никак не мог запуститьсяsm.gif Перепробовав все что можно я наконец-то добрался до фьюз-битов. Оказывается на атмеге, которая у меня была, по умалчанию был установлен фьюз совместимости с ATmega103. Убрав совместимость у меня сразу заработал код для TWI интерфейса и с первого раза код FreeRTOS.
Вообщем, в очередной раз убеждаюсь, что нужно внимательно читать даташитsm.gif Отдельная благодарность Juvf! Благодаря Вам я до последнего верил, что FreeRTOS у меня запустится! rolleyes.gif

Сообщение отредактировал karatozz - Jun 18 2018, 17:31
Go to the top of the page
 
+Quote Post
k155la3
сообщение Jun 19 2018, 07:40
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(karatozz @ Jun 18 2018, 20:30) *
Вообщем, в очередной раз убеждаюсь, что нужно внимательно читать даташит . . .
И даташит должен быть на "перспективный", хотябы в какой-то мере, процессор. Чтобы умышлено "зажимать" себя в скудные ресурсы есть только одно
оправдание - нежелание-боязнь читать даташиты на более продвинутые платформы.
Go to the top of the page
 
+Quote Post
juvf
сообщение Jun 19 2018, 08:21
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(k155la3 @ Jun 19 2018, 12:40) *
И даташит должен быть на "перспективный", хотябы в какой-то мере, процессор.

А что есть "перспективный"? Атмега128 для FreeRTOS - тут разгуляться можно во всю ни в чем себе не отказывая. Можно сразу включить все опции ядра и писать китайский код без какой либо оптимизации (если конечно контент не хранить, типа *.jpg или медиа, для этого добавить внешнюю сд можно нужно). Можно добавить няшек типа FreeRTOS+CLI или FS, или Tracer какойнить. Куда перспективнее? Для задач 8-битника с 16МГц такта - Атмега128 чуть ли не потолок. Только я бы конечно вместо атмеги128 глянул бы стм8с - теже яйца 128кб будет раза в 3 дешевле, а периферия повкуснее.
Цитата
Чтобы умышлено "зажимать" себя в скудные ресурсы есть только одно оправдание - нежелание-боязнь читать даташиты на более продвинутые платформы.
я был умышленно зажат в 20-ти ногий стм8 с 8 кб флеша вместо атмеги32. Т.к. стм8 стоил 12 рублей, а атмега32 более 100.

ТС изучив FreeRTOS на просторах атмеги128 в будущем в перспективе сможет легко поднять данную ОС и на более слабых/простых/дешевых мк, как и на более мощных. Всё зависит от задачи.

Цитата(haker_fox @ Jun 8 2018, 13:56) *
Есть замечательная scmRTOS. Вытесняющая. API на Си++, если кому нужно. Работает шустро. Памяти много не требуется.

Писал пробовал писать на пуре с++ для атмеги. Невзлетело. Использовал компилятор из состава winAVR. В этом "с++" нет реализации new/delete. Можно ли использовать scmRTOS на AVR процессорах с компилятором winAVR?
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th April 2024 - 06:02
Рейтинг@Mail.ru


Страница сгенерированна за 0.01537 секунд с 7
ELECTRONIX ©2004-2016