RealtimePi (preemt rt)

Как видите, программа создает частоту на GPIO 0.

#include <stdio.h>
#include <wiringPi.h>
#include <pthread.h>
#include <sched.h>
#include <sys/mman.h>
 
int main()
{
    const sched_param sp={20};
    pthread_setschedparam(pthread_self(),SCHED_FIFO,&sp);   
    mlockall(MCL_FUTURE|MCL_CURRENT);
 
    wiringPiSetup();
    pinMode(0,OUTPUT);
 
    while(true)
    {
        digitalWrite(0,true);
        digitalWrite(0,false);  
    }
 
    return 0;
}

Я скачал rt linux для raspberry pi в надежде, что он мне поможет генерировать высокую и стабильную частоту. http://unofficialpi.org/Distros/RealtimePi/

Очень плохо понимаю как орудывать этой rt и как с помощью нее добиться поставленной цели. Может я что то не так делаю подскажите пожалуйста.

Частота 25 килогерц, иногда подпрыгивает до 300. Как ее сохранить на 300 стабильно или больше по средствам rt?

И киньте пожалуйста инструкцию как этой rt управлять с описанием команд и куда их писать (желательно на русском). А то везде только или как ее установить или теория.


Ответы (1 шт):

Автор решения: Roman Ozhegov

Как всегда, все уже написано до нас. Смотрите ссылку: тут

Мой опыт аппаратной реализации ШИМ такой:

#include <wiringPi.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>

int main (void)
{
  printf ("Raspberry Pi wiringPi test program\n") ;

  if (wiringPiSetupGpio() == -1)
    exit (1) ;

  pinMode(18,PWM_OUTPUT);
  pwmSetClock(20);
  pwmSetRange (10) ;
  pwmWrite (18, 5);

for (;;) delay (1000) ;
}

Аппаратная реализация ШИМ доступна на 4-х пинах GPIO12, GPIO13, GPIO18, GPIO19.

Частота выставлена в 480кГц. Результат: введите сюда описание изображения

→ Ссылка