Как быстро файл может быть записан / прочитан - PullRequest
0 голосов
/ 24 марта 2011

Мне дали задание построить синусоидальный генератор, используя какой-то микроконтроллер, запрограммированный в C (используя PSIM).Поэтому в моей функции я вычисляю необходимые значения и сохраняю их в массиве [25].Функция получает текущее время от некоторого элемента, и в соответствии со временем мне нужно выбрать соответствующий элемент из массива.Я не мог думать о другом способе получить положение элемента, чем прочитать его из файла и затем переписать с новым.Но способна ли система выполнить эту операцию 5000 раз в секунду?

Функция вычисления массивов:

int main(){
    double amp = 128;                             
    float norm[25];
    float s;
    int i;

    for(i=0; i< 25; i++){
        if(i == 0){
            norm[i] = 0;
        }
        norm[i] = i*2*M_PI/100;
        s = amp*sin(norm[i]);
        norm[i] = s;
    }

    return 0;  
}

Шаблон основной функции в контроллере:

__declspec(dllexport)opc1(double t, double dt, double *in, double *out){
    double u = in[0];
    //this value should be read from the array according to the counter position
    out[0] = y;
}

1 Ответ

1 голос
/ 24 марта 2011

Не могу понять необходимость использования файла. Наличие микроконтроллера, выполняющего 5000 open(), read() и close() операций (или эквивалент) в секунду, кажется очень жестким требованием. Предполагая, что он работает на частоте 20 МГц, это дает 4000 циклов для выполнения всех операций.

Вероятно, не невозможно, если кто-то налагает некоторые очень строгие ограничения, но вряд ли. Особенно учитывая, что в это число входит работа, выполненная любыми драйверами устройств для диска (или любого другого носителя, на котором находится файл).

Если код не загружается / выгружается между каждым вызовом, почему бы просто не использовать static переменную (и) для сохранения состояния?

...