private void GenerateWaveTable(Wellenform wellenform)
 {
     for (int i = 0; i < BitTiefe; i++)
     {
         WaveTable[i] = (int)(WaveValue(wellenform, i) * BitTiefe);
     }
 }
        public FunktionsgeneratorMCP4921(Wellenform wellenform)
        {
            wiringPiLib.WiringPiSetupGpio();

            da = new DA_MCP4921_SPI(wiringPiLib, 18, 23, 25);

            GenerateWaveTable(wellenform);
        }
        public Funktionsgenerator8562FPZ_Parallel(Wellenform wellenform)
        {
            wiringPiLib.WiringPiSetupGpio();

            da = new DA_8562FPZ_Parallel(wiringPiLib);

            GenerateWaveTable(wellenform);

            GetEigenFrequenz();
        }
        private float WaveValue(Wellenform wellenform, int value)
        {
            switch (wellenform)
            {
            case Wellenform.Saege:

                return(((float)value) / BitTiefe);

            case Wellenform.Dreieck:
            {
                float fvalue = (2 * (float)value) / BitTiefe;

                if (fvalue > 1)
                {
                    fvalue = 2 - fvalue;
                }

                return(fvalue);
            }

            case Wellenform.Rechteck:
            {
                if (value < BitTiefe / 2)
                {
                    return(0);
                }
                return(1);
            }

            case Wellenform.Sinus:
            {
                double degrees = (double)value / (double)BitTiefe * 360;
                double sinus   = Math.Sin(Math.PI / 180 * degrees);
                return((float)(sinus / 2) + 1);
            }

            default:
                return(0);
            }
        }