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

Re: Performanceprobleme (wahrscheinlich I²C-Bus) Kategorie: Programmierung C (von PeterS - 15.05.2013 13:34)
Als Antwort auf Performanceprobleme (wahrscheinlich I²C-Bus) 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 wluckt
>         {
>           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
>                                                             //(=> Median = der Mittlere Wert)
>
>
> Frage:
> hat jemand eine Idee wo diese Ausreisser herkommen können?

Die Threads arbeiten mit Zeitscheiben von 10ms. Um ein Ausgangssignal zu erzeugen,
würde ich die Timer vorschlagen. Siehe dort Frequenzerzeugung.

Gruss Peter


    Antwort schreiben


Antworten:

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)