Odpowiedz 
 
Ocena wątku:
  • 6 Głosów - 4 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Fork-Heńka... czyli jak sobie poradzić z DDS za pomocą ARDUINO
SQ9MDD Offline
Rysiek
****

Liczba postów: 380
Dołączył: 01-02-2009
Post: #134
RE: Fork-Heńka... czyli jak sobie poradzić z DDS za pomocą ARDUINO
Kurcze! Waldek o tym nie pomyślałem...
Cały czas projekt traktowałem jako swojego rodzaju zabawę... Ale pomysł jest całkiem niezły, z tym że nie wszyscy korzystali z SVN-a. Pewnie będziesz musiał z tym pomóc. Smile

A właśnie jeśli chodzi o zabawę to dzisiaj przed sniadaniem chciałem sprawdzić w praktyce to o czym mówił Jakub SP2IPT, a mianowicie jakie są różnice w czasie wykonania operacji na IF-ach i SWITCH-ach.

Doszedłem do tego że robiąc różne operacje w środku tego kodu wyniki testu są niejednoznaczne... Popróbujcie sami kod poniżej

Kod:
//kilka zmiennych
unsigned long time_start = 0;
unsigned long time_stop = 0;
unsigned long if_execution_time = 0;
unsigned long switch_execution_time = 0;
int test_zmienna = 0;
int test_val = 1;

//setup odpalamy port szeregowy
void setup(){
Serial.begin(9600);
  delay(3000);
}

//pętla główna
void loop(){
  //sprawdzamy ile czasu wykonuje sie if
  time_start = micros();
  if(test_zmienna == 0){
   Serial.println("ABCD");
  }else{
   Serial.println("BCDA" );
  }
  time_stop = micros();
  if_execution_time = time_stop - time_start;
  
  //sprawdzamy ile czasu wykona się switch
  time_start = micros();
  switch(test_zmienna){
   case 0:
     Serial.println("ABCD");
   break;
   case 1:
     Serial.println("BCDA" );
   break;
  }
  time_stop = micros();
  switch_execution_time = time_stop - time_start;
  
  //wyświetlamy wyniki
  Serial.print("test 1 czas wykonania instrukcji IF: ");
  Serial.print(if_execution_time);
  Serial.println("uS");
  Serial.print("test 2 czas wykonania instrukcji SWITCH: ");
  Serial.print(switch_execution_time);
  Serial.println("uS");
  delay(10000);
  
  if(test_zmienna == 0){
    test_zmienna = 1;
  }else{
    test_zmienna = 0;
  }
}

Jako następne ćwiczenie sprawdźcie co się stanie jeśli w procedurze "switch" i procedurze "if", wykonamy jakąś operację która jest prosta i szybka na przykład zmiana wartości zmiennej czy coś podobnego...

Myślę że taką analizę co kompilator robi z naszymi poleceniami to mógłby wykonać ktoś kto posiada znajomośc assemblera Wink

...przede wszystkim nie zakłócać...
04-11-2014 19:55
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Odpowiedz 


Wiadomości w tym wątku
RE: Fork-Heńka... czyli jak sobie poradzić z DDS za pomocą ARDUINO - SQ9MDD - 04-11-2014 19:55

Skocz do:


Użytkownicy przeglądający ten wątek: 35 gości