Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Performanceprobleme (wahrscheinlich I²C-Bus) Kategorie: Programmierung C (von Daniel - 15.05.2013 12:44)


Hallo zusammen.
Ich hab da nen Problem:

Ich programmiere mit dem CControl Pro Mega 32 eine Steuerung, welche zwei Rechtecksignale erzeugt.
Die Rechtecksignale sind mit 4 Potis einstelbar, welche ich über I²C Bus eingebunden habe.
Einstelbar ist mit den Potis: Frequenz beider Signale, Highphasendauer von Signal 1 und 2
sowie die Phasenverscheibung der beiden Signale zueinander.
Des weiteren lasse ich mir die Werte auf einem Display (ebenfalls I²C Bus) anzeigen.
Einstelbar sind die Zeiten von 10ms - 500ms in 1 ms schritten.
Das Funktioniert alles soweit auch ganz gut jedoch wenn ich die Werte mit 200KHz Abtaste um zu
schauen wie stark die zeiten schwanken sehe ich, dass es immer wieder Sprünge von 10ms gibt.
Das heisst, ich habe anstatt 50ms High Phase ab und zu eine 60ms High Phase wobei der Wert
ansonsten bei 49,5-50,5ms schwankt (was super ist)


Zum Programm:

Ich habe 4 Threats am laufen:
Threat 1:
Abholen der Potiwerte über I²C, umrechnung in ms und anschliessen ausgabe auf dem Display.
Threat 2:
Erzeugen des Rechtecksignals 1 sowie starten von Threat 3
Threat 3:
Phasenverschiebungsdauer abwarten und Starten des Threat 4
Threat 4:
Erzeugen des Rechtecksignals 2


Erkenntnisse aus der Fehlersuche:
Ich habe den Potiwerten feste zahlen vorgegeben und die Abfrage gestoppt.
bei der anschliessenden auswertung des Signale waren keine Sprünge mehr zu sehen.


Programmausschnitt der Auskommentiert wurde:
 for(k=1;k<7;k++)                                        //6 ist Anzahl der Kanäle die gelesen werden sollen
    {

        I2C_Disable();
        for(l=0;l<3;l++)                                    //dreimaliges abholen des gleichen Eingangs um den
                                                            //Medianwert zu bestimmen, welcher ausreisser wegschluckt
        {
          I2C_Start();                                      //starten des I²C Buses
          I2C_Write(I2C_AdresseW);                          //schreiben der Adresse zum Schreiben
          I2C_Write(DAT[k]);                                //Senden der Daten um den Eingang abzuholen
          I2C_Start();                                      //erneutes starten des I²C Buses für erneute anfrage
          I2C_Write(I2C_AdresseR);                          //schreiben der Adresse zum Lesen
          MSB= I2C_Read_ACK();                              //Lesen des MSB
          LSB= I2C_Read_NACK();                             //Lesen des LSB
          I2C_Stop();                                       //Stoppen des I²C Buses
          MSB=MSB*0x100;                                    //erhöhung des MSB damit er mit LSB verrechnet werden
                                                            //kann(0x00AA *0x100 ergibt 0xAA00)
          MSBLSB=(MSB+LSB);                                 //verknüpfung des MSB mit dem LSB


          Mittelwertbildung[l]=MSBLSB;


        }
        sortieren();                                        //öffnen der Sortierfunktion, welche die Daten nach gröÃ?e sortiert
                                                            //(=> Median = der Mittlere Wert)


Frage:
hat jemand eine Idee wo diese Ausreisser herkommen können?


    Antwort schreiben


Antworten:

Re: Performanceprobleme (wahrscheinlich I²C-Bus) (von PeterS - 15.05.2013 13:34)
    Re: Performanceprobleme (wahrscheinlich I²C-Bus) (von Daniel - 15.05.2013 14:04)
        Re: Performanceprobleme (wahrscheinlich I²C-Bus) (von PeterS - 15.05.2013 14:48)
            Re: Performanceprobleme (wahrscheinlich I²C-Bus) (von Daniel - 15.05.2013 15:39)
                Re: Performanceprobleme (wahrscheinlich I²C-Bus) (von PeterS - 15.05.2013 18:01)
                    Re: Performanceprobleme (wahrscheinlich I²C-Bus) (von Daniel - 16.05.2013 15:38)
                       Re: Performanceprobleme (wahrscheinlich I²C-Bus) (von Franz-Peter - 17.05.2013 11:48)
                          Re: Performanceprobleme (wahrscheinlich I²C-Bus) (von Daniel - 24.05.2013 8:51)
                             Re: Performanceprobleme (wahrscheinlich I²C-Bus) (von Torsten - 24.05.2013 19:08)
                                Re: Performanceprobleme (wahrscheinlich I²C-Bus) (von Franz-Peter - 25.05.2013 17:07)
                                   Re: Performanceprobleme (wahrscheinlich I²C-Bus) (von Daniel - 11.06.2013 10:28)
                                     Re: Performanceprobleme (wahrscheinlich I²C-Bus) (von Torsten - 15.06.2013 6:12)