Перейти к содержанию
    

Massa_bob

Участник
  • Постов

    30
  • Зарегистрирован

  • Посещение

Весь контент Massa_bob


  1. В рабочем цикле происходит сравнение двух сигналов. Если один сигнал больше другого, то на выходе GPIOA0 = 0, GPIOA1 = 1; если меньше, то GPIOA0 = 1, GPIOA1 = 0. Сравнение происходит с введением коэффициентов усиления (множители с плавающей точкой) каждого сигнала. Переключение состояний порта - с учётом некоторого гистерезиса (с плавающей точкой). #define Ki = -1.5, // Коэффициент усиления по току #define Ku = 0.75, // Коэффициент усиления по напряжению #define Kgist = 0.25, // Гистерезис в компараторе char K = -1; float CompA_in1, // 1-й вход компаратора CompA_in2; // 2-й вход компаратора unsigned int Ua_ADC, Ia_ADC; while(1) { Ua_ADC = AdcRegs.ADCRESULT0 >> 6; // АЦП работает постоянно, на максимальной частоте без прерываний. В рабочем Ia_ADC = AdcRegs.ADCRESULT1 >> 6; // цикле текущие значения АЦП считываются в Ua_ADC и Ia_ADC. CompA_in1 = Ki * Ia_ADC; // Приведение сигналов (масштабирование) CompA_in2 = Ku * Ia_ADC; // перед подачей в компаратор. switch(K) // Компаратор с гистерезисом { case (1): {if (CompA_in1 > (CompA_in2 + Kgist)) K = -1; GpioDataRegs.GPACLEAR.bit.GPIOA0 = 1; GpioDataRegs.GPASET.bit.GPIOA1 = 1; break;} case (-1): {if (CompA_in1 <= (CompA_in2 - Kgist)) K = 1; GpioDataRegs.GPACLEAR.bit.GPIOA1 = 1; GpioDataRegs.GPASET.bit.GPIOA0 = 1; break;} } } Решая задачу “в лоб”, как приведено выше, я столкнулся с проблемой очень низкой частоты рабочего цикла. Эта проблема, судя по всему, заключается в неправильном распределении кода в памяти. В связи с этим возникли следующие вопросы: 1. Каким образом в файле компоновки F2812.cmd распределить память (RAM и FLASH) между секциями, чтобы получить наибольшую скорость этого рабочего цикла? 2. В дальнейшем в этом проекте будут создаваться функции, содержащие математические вычисления (фильтры, регуляторы). Необходимо, чтобы эти функции работали в RAM. Каким образом их следует описывать в исходнике кода и в файле компоновки F2812.cmd? Народ, подскажите, пожалуйста, как с этим бороться. __________TMS320F2812.rar
×
×
  • Создать...