Я постараюсь дать вам несколько советов, основанных на том, что я понял из вашего поста.
Предполагается, что АЦП производит выборку аналогового сигнала, генерируемого на определенной частоте, для получения цифрового сигнала. В вашем случае вам нужны две информации, чтобы проследить вашу кривую:
- Данные:
данные для трассировки (выборки), которые представляют амплитуду сигнала на протяжении всего времени выборки (в каждый момент выборки).
- Время:
вам нужно знать период времени, в который АЦП производит выборку сигнала, а затем связать каждые данные с соответствующим моментом времени. Период можно определить по частоте дискретизации сигнала АЦП T = 1/f.
ADC сохраняет каждую выборку данных в регистре, и будет сгенерировано прерывание, чтобы уведомить процессор о новых поступающих данных. Ваша подпрограмма обслуживания прерывания (в случае, если вы продолжаете работать с прерываниями) должна иметь возможность извлекать эти данные до того, как они будут заменены следующей выборкой. В качестве предложения вы можете создать в своем приложении буфер, в котором ваша процедура прерывания могла бы хранить данные. Затем ваше приложение может извлечь данные из буфера и использовать их для рисования кривой, если ваша система имеет вывод на дисплей, или отправить их в настольное приложение, которое выполнит эту работу.
Вам не нужно придерживаться уравнения в своем посте; это для аналогов. Скорее вы можете представить оцифрованную кривую как f(t) = Data(t).
Поскольку вы используете Linux, если вы не хотите иметь дело с прерываниями, вы можете продолжить чтение данных, используя интерфейс /sysfs. Обратите внимание, что открытие файла для чтения данных для каждого отдельного образца может быть медленным в зависимости от требований вашего приложения.
person
Aymen
schedule
03.12.2014