Skocz do zawartości
ethanak

ATtiny85 i zasilanie joysticka - czy tak można?

Pomocna odpowiedź

Myślę, że trochę nie doceniasz I²C. Znajomy ostatnio zrobił https://hackaday.io/project/162701 i działa dobrze po I2C. To jest jednak te 100kbit/s, a obrazu jest kilobajt. Oczywiście lepiej jest rysować tylko to co się zmieniło i wcale nie jest to bardzo trudniejsze do zaprogramowania, tylko nie większość gotowych bibliotek na to nie pozwala. Ale te wyświetlacze bardzo prosto się kontroluje samemu (nawet zrobiłem kiedyś tutorial z tego https://hackaday.io/page/5722). Tło pewnie i tak będziesz mieć całe w progmemie i na to and-owana maska i or-owany sprite.

Udostępnij ten post


Link to post
Share on other sites

A kto powiedział że chcę używać gotowych bibliotek? Ani do jednej, ani do drugiej gry nie pasują... Co do wyświetlacza - mam już obsługę (poszedłem po najmniejszej lini oporu, czyi okroiłem adafruitowe TinyWireM do rzeczy niezbędnych i przerobiłem na C, samą obsługę SH1106 też ściągnąłem z jakiejś arduinowej biblioteki), do tego co potrzebuję absolutnie wystarczy.

Co do trudności w programowaniu... zauważyłeś kiedy i na jaką maszynkę pisałem gry? 🙂 A od tej pory chyba nawet trochę się poduczyłem 😉

Tak przy okazji - nie wiesz przypadkiem, czy jest jakaś możliwość żeby z ATtiny85 wydusić więcej niż 100 kbit? Wyświetlacz spokojnie działa na 400, poszukiwania w sieci doprowadziły mnie do tego że jest to możliwe, ale nikt nie wie jak a jeden co podobno wie to nie chce powiedzieć 😞

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Tutaj masz opisane zarówno standard mode (100kbps) jak i fast mode (400kbps), ale osobiście się na attiny z USI tylko bawiłem w slave-a, więc z praktyki ci nie powiem.

Cytat

The driver has code for both standard and fast mode TWI timing. Set selected mode in the header file of
the driver. The default setting is fast mode.

http://ww1.microchip.com/downloads/en/AppNotes/Atmel-2561-Using-the-USI-Module-as-a-I2C-Master_AP-Note_AVR310.pdf

Jeszcze kod do przykładu: https://start.atmel.com/#examples/AVR310

Wygląda na to, że nie ma na to żadnych rejestrów, po prostu sam robisz delaye:


#ifdef TWI_FAST_MODE                            // TWI FAST mode timing limits. SCL = 100-400kHz
#define T2_TWI ((SYS_CLK * 1300) / 1000000) + 1 // >1,3us
#define T4_TWI ((SYS_CLK * 600) / 1000000) + 1  // >0,6us

#else                                           // TWI STANDARD mode timing limits. SCL <= 100kHz
#define T2_TWI ((SYS_CLK * 4700) / 1000000) + 1 // >4,7us
#define T4_TWI ((SYS_CLK * 4000) / 1000000) + 1 // >4,0us
#endif

i potem:

#if __GNUC__
#define DELAY_T2TWI (_delay_us(T2_TWI / 4))
#define DELAY_T4TWI (_delay_us(T4_TWI / 4))
#else
#define DELAY_T2TWI (__delay_cycles(T2_TWI))
#define DELAY_T4TWI (__delay_cycles(T4_TWI))
#endif

a w kodzie:

#ifdef TWI_FAST_MODE
	DELAY_T4TWI; // Delay for T4TWI if TWI_FAST_MODE
#else
	DELAY_T2TWI; // Delay for T2TWI if TWI_STANDARD_MODE
#endif

Trochę dziwne, że TWI_FAST_MODE sprawdzają dwa razy...

Edytowano przez deshipu
  • Lubię! 1
  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites

Dzięki!!!

Przestudiuję to sobie, ale już się domyślam o co chodzi. W TinyWire T2_TWI i T4 TWI są zdeklarowane na sztywno (odpowiednio 5 i 4 µs) - spróbuję się tym pobawić.

Co ciekawsze - mam jakąś (nie-adafruitową) bibliotekę USI_TWI gdzie widziałem fast mode... tyle że nie chciało mi to ruszyć nawet bez fast, dlatego zastosowałem wersję adafruita. Będę musiał zerknąć co jej dolega...

 

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Napisz odpowiedź...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...