Цитата(arpa-net @ Apr 15 2016, 00:31)

Может кто подскажет, что нужно сделать? Обязательно ли VIC подключать?
Использовать VIC не обязательно.
Делать можно, например, вот так:
Код
#include <stdio.h>
#include <string.h>
#include "sys/alt_flash.h"
#include "sys/alt_irq.h"
#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "altera_avalon_timer_regs.h"
//#include "altera_avalon_timer.h"
#include "pwm_avalon_interface_regs.h"
#include "pwm_avalon_interface.h"
#include "pwm_avalon_interface.c"
//********************** Global Variables ***********************************************
volatile unsigned short int led_dir;
volatile int return_code;
volatile unsigned char i = 0;
volatile unsigned int duty_cycle[8] = {499999, 150000, 60000, 10000, 5000, 2500, 800, 1};
//********************** ISR functions **************************************************
static void timer_isr (void * context)
{ volatile unsigned char* led_ptr;
volatile unsigned char* dir_ptr;
IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER_BASE, 0);
dir_ptr = (volatile unsigned char*)context;
led_ptr = dir_ptr + 1;
return_code = altera_avalon_pwm_change_duty_cycle(LED_PWM_BASE, duty_cycle[i]);
IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, *led_ptr);
if(*dir_ptr)
{ *led_ptr >>= 1;
i--;
}
else
{ *led_ptr <<= 1;
i++;
}
if(*led_ptr & 0x81)
*dir_ptr ^= 0x1;
}
//********************** Auxiliary functions ********************************************
void check_return_code(unsigned int address, int return_code)
{ if(return_code != ALTERA_AVALON_PWM_OK)
;
// print_error(address, return_code);
}
//********************* Main function ***************************************************
int main (void)
{ void* led_dir_ptr = (void*)&led_dir;
led_dir = 0x0100;
//Timer Initialization
IOWR_ALTERA_AVALON_TIMER_CONTROL(TIMER_BASE, 0x0003);
IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER_BASE, 0);
IOWR_ALTERA_AVALON_TIMER_PERIODL(TIMER_BASE, 0x9f00);
IOWR_ALTERA_AVALON_TIMER_PERIODH(TIMER_BASE, 0x0024);
//Register ISR for timer event
alt_ic_isr_register(TIMER_IRQ_INTERRUPT_CONTROLLER_ID, TIMER_IRQ, timer_isr, led_dir_ptr, 0);
//Initialize PWM and Check Return Code
return_code = altera_avalon_pwm_init(LED_PWM_BASE, 500000, 1);
check_return_code(LED_PWM_BASE, return_code);
//Enable PWM and Check Return Code
return_code = altera_avalon_pwm_enable(LED_PWM_BASE);
check_return_code(LED_PWM_BASE, return_code);
//Start timer and begin the work
IOWR_ALTERA_AVALON_TIMER_CONTROL(TIMER_BASE, 0x0007);
// IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, led);
while (1)
check_return_code(LED_PWM_BASE, return_code);
}
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...