Jump to content

    

freeRTOS - не работает простая мигалка

Не работает простейшая мигалка на AtMega16A-PU.

Версия freeRtos - 7.1.0

Программирую в Atmel Studio 6.1.

 

#include "FreeRTOS.h"
#include "task.h"

void vTask0( void *pvParameters )
{
while(1){
	PORTA = 255;
	vTaskDelay(500);
	PORTA = 0;
	vTaskDelay(500);
}
}

void vTask1( void *pvParameters )
{
while(1){
	PORTB = 255;
	vTaskDelay(1300);
	PORTB = 0;
	vTaskDelay(1300);
}
}

int main( void )
{
DDRA = 255;
DDRB = 255;
xTaskCreate( vTask0,(signed char *) "Task0",configMINIMAL_STACK_SIZE,NULL,1,NULL);
xTaskCreate( vTask1,(signed char *) "Task1",configMINIMAL_STACK_SIZE,NULL,1,NULL);
vTaskStartScheduler();
return 0;
}

 

В проэкт добавил файл "FreeRTOSConfig.h"

#ifndef FREERTOS_CONFIG_H
#define FREERTOS_CONFIG_H

#include <avr/io.h>

#define configUSE_PREEMPTION		1
#define configUSE_IDLE_HOOK			0
#define configUSE_TICK_HOOK			0
#define configCPU_CLOCK_HZ			( ( unsigned long ) 8000000 )
#define configTICK_RATE_HZ			( ( portTickType ) 1000 )
#define configMAX_PRIORITIES		( ( unsigned portBASE_TYPE ) 4 )
#define configMINIMAL_STACK_SIZE	( ( unsigned short ) 85 )
#define configTOTAL_HEAP_SIZE		( (size_t ) ( 500 ) )
#define configMAX_TASK_NAME_LEN		( 8 )
#define configUSE_TRACE_FACILITY	0
#define configUSE_16_BIT_TICKS		1
#define configIDLE_SHOULD_YIELD		1
#define configQUEUE_REGISTRY_SIZE	0

/* Co-routine definitions. */
#define configUSE_CO_ROUTINES 		1
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )

/* Set the following definitions to 1 to include the API function, or zero
to exclude the API function. */

#define INCLUDE_vTaskPrioritySet		0
#define INCLUDE_uxTaskPriorityGet		0
#define INCLUDE_vTaskDelete				0
#define INCLUDE_vTaskCleanUpResources	0
#define INCLUDE_vTaskSuspend			0
#define INCLUDE_vTaskDelayUntil			1
#define INCLUDE_vTaskDelay				1


#endif /* FREERTOS_CONFIG_H */

 

Добавил файлы (как ссылки) -

tasks.c

port.c

list.c

heap_2.c

queue.c

 

Добавил ссылки на директории

freeRtos/source/include

freeRtos/source/portable/GCC/atmega323.

 

Микроконтроллер выставлен на 8мг от внутреннего генератора, остальные фьюзы не трогал.

При компиляции ошибок не выдает, но при этом неработает не в протеусе не на железе. Уже неделю мучаюсь, все примеры испробывал. Может у ковото есть готовый проект под Atmel Studio 6.1? В чем моя ошибка?

Edited by IgorKossak
[codebox] для длинного кода, [code] - для короткого!!!

Share this post


Link to post
Share on other sites

Всем здравствуйте! Решил покрутить в руках FreeRTOS на ATmega324A. Нашел статью http://makesystem.net/?p=1363#.VrDha41a9qA . И когда дело дошло до сборки посыпали ошибки: undefined reference to pvPortMalloc. Посмотрел где идет определение, а там стандартная конструкция "если не определен, то определить". Или я что то не понимаю. В чем может быть проблема? Архив с проектом прилагается osrv_v2.zip

Share this post


Link to post
Share on other sites
Или я что то не понимаю. В чем может быть проблема?

Нет менеджера памяти. Следует написать или подобрать из имеющихся. Что можно понять не так? Читайте про heap.

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this