Re: Performanceprobleme (wahrscheinlich I²C-Bus) Kategorie: Programmierung C (von Daniel - 15.05.2013 14:04) | ||
Als Antwort auf Re: Performanceprobleme (wahrscheinlich I²C-Bus) von PeterS - 15.05.2013 13:34 | ||
| ||
> > 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 wie meinst du das mit Timer? ich weiss dass es ne funktion gibt die Ein Rechtecksignal erzeugen soll jedoch nicht in der von mir gewünschten auflösung. | ||
Antwort schreiben Antworten: 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) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum