скорости пардон чего?)если что у меня кварц на 16 МГц и в Configе стоит период Тика 1000 Гц
я заранее извиняюсь я не профи, а любитель)
как я могу перенести ШИМ на другой таймер если использую аппаратный ШИМ с помощью Timer1...а аппаратный Timer0 для ШИМ мне так и не удалось запустить...
я тоже сразу подумал что этот таймер используется для тиков ОС....но он мне нужен....получается нужно создавать программный...а каким образом???понятия не имею....если есть у кого возможность скиньте пожалуйста конкретный пример полного кода с созданиями всех тасков который генерирует ШИМ на определенной ноге МК с периодом 20 мс и высоким уровнем промежутком от 600мкс до 2400мкс.....буду оооочень благодарен....мне так проще в коде разобраться будет)
вот код самой программы а потом за ним конфигурационный файл.....вот это то что я пока что пробовал)
#include "FreeRTOS.h"
#include "task.h"
#include <avr/io.h>
///////////////////////////////////////////////////////////////////////////////////////
void vServo( void *pvParameters )
{
for (;;)
{
OCR1A=180;
OCR1B=180;
vTaskDelay( 5000 / portTICK_RATE_MS);
OCR1A=262;
OCR1B=262;
vTaskDelay( 5000 / portTICK_RATE_MS);
OCR1A=375;
OCR1B=375;
vTaskDelay( 5000 / portTICK_RATE_MS);
OCR1A=487;
OCR1B=487;
vTaskDelay( 5000 / portTICK_RATE_MS);
OCR1A=570;
OCR1B=570;
vTaskDelay( 5000 / portTICK_RATE_MS);
}
}
/////////////////////////////////////////////////////////////////////////////////////////////
int main( void )
{
TCCR1A|=(1<<COM1A1)|(1<<COM1B1)|(1<<WGM11);
TCCR1B|=(1<<WGM13)|(1<<WGM12)|(1<<CS11)|(1<<CS10);
ICR1=4999;
DDRD = 0b00110000;
xTaskCreate( vServo,
(signed char * ) "Servo",
configMINIMAL_STACK_SIZE,
NULL,
1,
NULL );
vTaskStartScheduler();
return 0;
}
#ifndef FREERTOS_CONFIG_H
#define FREERTOS_CONFIG_H
#include <avr/io.h>
/*-----------------------------------------------------------
* Application specific definitions.
*
* These definitions should be adjusted for your particular hardware and
* application requirements.
*
* THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
* FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
*
* See
http://www.freertos.org/a00110.html.
*----------------------------------------------------------*/
#define configUSE_PREEMPTION 1
#define configUSE_IDLE_HOOK 0
#define configUSE_TICK_HOOK 0
#define configCPU_CLOCK_HZ ( ( unsigned long ) 16000000 )
#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 4 )
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 500 )
#define configTOTAL_HEAP_SIZE ( (size_t ) ( 1500 ) )
#define configMAX_TASK_NAME_LEN ( 10 )
#define configUSE_TRACE_FACILITY 0
#define configUSE_16_BIT_TICKS 1
#define configIDLE_SHOULD_YIELD 1
#define configQUEUE_REGISTRY_SIZE 1
/* 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 1
#define INCLUDE_uxTaskPriorityGet 1
#define INCLUDE_vTaskDelete 1
#define INCLUDE_vTaskCleanUpResources 1
#define INCLUDE_vTaskSuspend 1
#define INCLUDE_vTaskDelayUntil 1
#define INCLUDE_vTaskDelay 1
#endif /* FREERTOS_CONFIG_H */