Wpis z mikrobloga

  • 1
Elo, take pytanko mam. Czy jest uklad scalony za pomoca ktorego mozna latwo wysterowac kilka encoderow i przyciskow? Chodzi mi o to aby oszczedzic porty IO. Przepraszam za brak ogonkow.

#arduino #avr #programowanie #elektronika
  • 26
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

latwo wysterowac kilka encoderow i przyciskow


@Milql: oczywiście. Attiny ;)
Serio.
Przyciski to jest pikuś - do tego to znajdziesz jeszcze byleco, ale z enkoderami, jeśli mają działać dobrze, nie ma tak lekko - każde "tiknięcie" enkodera musi zostać wykryte i obsłużone odpowiednio szybko, ze sprawdzeniem kiedy wystąpi drugi tik by sprawdzić w którą stronę jest obracany. (a w wielu aplikacjach wypadałoby jeszcze wiedzieć - jak szybko obracany). Więc najłatwiej
  • Odpowiedz
via Android
  • 0
@hrumque: No myslalem zeby wstawic osobny uC tylko do klawiatury I encoderow aby odciazyc atmege 2560 na ktorej jest juz EQ audio, sterowanie selektorem, sterowanie procesorem audio, kontrola sygnalow I zasilania koncowek mocy I spectrum analyzer.
  • Odpowiedz
@Milql: no to najprostsze, najtańsze i najlepsze rozwiązanie chyba. Obsługujesz sobie guziczki (a może i wyswietlacz) osobnym prockiem, a po np uart rx/tx przesyłasz do "mastera" pakiet danych, co było naciskane czy co chcesz przełączyć, usart po odebraniu bajtu/paczki generuje przerwanie w masterze "przyszło coś od klawiatury" i to obsługujesz już sobie kiedy chcesz i możesz, a nie kiedy akurat ci się trafił impuls od enkodera w środku obliczania czegoś
  • Odpowiedz
enkoder to można sprzętowo na xmega'ch używać bez zabawy w kilka układów.


@j1189047: Po pierwsze Xmega a atmega to różnica, a po drugie - jeden to jeszce jakoś idzie, np podłączając enkoder do wejścia przerwania programowego np INT0/1/2 i obsługując go w sprzętowym przerwaniu na zasadzie:
- przyszło przerwanie INT0, zbocze opadajace = enkoder został przekręcony
- w przerwaniu od INT0 sprawdzamy stan drugiej linii enkodera - jeśli jest stan niski to kręcone było w jedną strone, jeśli wysoki - to znaczy że w drugą
i jakoś to sobie obsługujemy, niby działa. Ale działa pod warunkiem że obsługa przerwania (w stosunku do prędkości pojawiania się impulsów z enkodera) jest wystarczająco szybka, i ale tą metodą obsługujemy enkoder który nie generuje śmieci. Jak się chce zrobić jeszcze programowy de-bouncing styków enkodera (a enkodery, zwłaszcza tanie - uwielbiają bardzo szybko zacząć mieć "dzwoniące styki" co powoduje upierdliwe przeskakiwanie X kliknięć przy zrobieniu jednego kroku, i to losowo w obie strony interpretowanego) to już nie robi się to tak proste i tak nie-zasobo i czaso-żerne
  • Odpowiedz
@j1189047: dobrze, ja to znam, ale przypominam że pytający użył tagu #arduino #avr więc raczej nie używa XMEGA a Atmega ... i chce układu który "oszczędzi portów" w tym arduino/atmega - więc raczej nie weźmie do tego celu XMEGI która jest armatą na muchy w tym przypadku, równie dobrze móglby tam postawić rasbery-pi i kamerkę i sterować gestami ;)
  • Odpowiedz
@j1189047: ja to wszystko rozumiem. Xmega to naprawdę fajny procek, tak powinna wyglądać atmega od początku, no ale to nie xmega jest popularna i jest na 99.8% arduino... za jakieś 30zł można mieć xmegę która opierdzieli robotę atmegi256, interfejsu usb, i jeszcze będzie się nudziła. Ale równie dobrze za podobną kwotę można mieć coś z jądrem arm7 ;). A tak dalej idąc - za chwile się okaże że niewiele dokładając
  • Odpowiedz
jeśli patrzymy kryteriami cenowymi


@j1189047: no i nadal zostaje kwestia "ceny czasu pracy" - co z tego, że 4 atmegi osobne będą może i droższe niż jedna Xmega, jak czas poświęcony na uruchomienie tego na xmega (zwłaszcza jak ktoś xmega rusza pierwszy raz, albo walczy z diabli-wiedzą-jak-zgodnymi-z-xmega bibliotekami na arduino) będzie znacznie więcej wart, niż odpalenie praktycznie banalnego projektu (projektów) na osobnych prockach, gdzie będzie to łatwiejsze w debugowaniu, łatwiejsze
  • Odpowiedz