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
SQ5KVS Offline
Karol
*****

Liczba postów: 814
Dołączył: 26-09-2012
Post: #129
RE: Fork-Heńka... czyli jak sobie poradzić z DDS za pomocą ARDUINO
Ja mam "własną" metodę na czytanie enkodera, robię to w przerwaniu co około 7kHz (tak akurat się dzieli 16MHz/256/8), tam sprawdzam tylko podstawowe wejścia/wyjścia - przyciski, enkoder, ptt, coś tam jeszcze, bo musi być to szybkie.
Natomiast wszystkie potencjalnie czas-żerne rzeczy robię w pętli w "main" czyli przede wszystkim obsługa LCD.

Wszystkie wejścia są podciągnięte, i mają 10nF kondensatory.
Robiłem test, i po przekręceniu enkoderem kilkanaście razy szybko w lewo a potem dokładnie tyle samo w prawo, licznik enkodera pokazywał zero, i tak powinno być.
Kod:
//rozdzielczość x4, czyli na ząbek 4 "kroki", co bywa kłopotliwe, bo zadaniem ząbka jest "stabilizacja" enkodera w konkretnej pozycji. W innym miejscu to dziele /4
A = get_input(ENC_A);
B = get_input(ENC_B);
if (A!=pA){
    if (A==B)     enc_ticks++;
             else             
              enc_ticks--;            
    pA = A;
    }
  if (B!=pB) {
        if (A==B)  enc_ticks--;
            else
             enc_ticks++;            
    pB = B;    
}

Ale jak popatrzyłem na kod z biblioteki arduino:
Kod:
uint8_t s = state & 3;            
        if (get_input(ENC_A)) s |= 4;
        if (get_input(ENC_B)) s |= 8;
        
        switch (s) {
            case 0: case 5: case 10: case 15:
                break;
            case 1: case 7: case 8: case 14:
                enc_ticks--; break;
            case 2: case 4: case 11: case 13:
                enc_ticks++; break;
            case 3: case 12:
                enc_ticks -= 2; break;
            default:
                enc_ticks += 2; break;
        }
        state = (s >> 2);
}

To może ta metoda j.w. jest ciut lepsza. Musiałbym sprawdzić co szybciej się wykonuje.

Pozdrawiam
03-11-2014 13:07
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 - SQ5KVS - 03-11-2014 13:07

Skocz do:


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