Witam.
W pewnej konstrukcji ARM, z którą przyszło mi pracować, logi wysyłane były przy pomocy interfejsu I2C na adres 0x22 (7bit).
Zapewne niektórzy znają przejściówki USB-I2C z układem FTDI np.: FT201X
i to właśnie te układy pracują na powyższym adresie.
Jednak koszt takiej przejściówki to ok. 30-40zł + wysyłka, a i czas również naglił,
przez co postanowiłem wykonać samodzielnie podobną konstrukcję na TTiny85.
Niestety, w zasobach znalazłem jedynie nieśmiertelną ATTiny13 bez wbudowanego modułu USI.
Nie poddałem się jednak i postanowiłem spróbować wykonać w pełni programowy I2C slave + UART (gotowy kod),
a teraz przedstawiam efekt kilku godzin pracy.
Może się komuś przyda.
Kod w C, Makefile, konfiguracja do AVRDude są do pobrania z GITHUB-a: Link do projektu
Schemat w PDF do podbrania
Parametry pracy:
- adres 0x22 (7-bit)
- prędkość UART 230400 boud 8N1
- prędkość I2C (maksymalna testowana) 100kbit
Jako USB<->UART użyłem zwykłej przejściówki FTDI z wprowadzonymi pinami Vcc | TxD | RxD | GND
Przejściówka sprawuje się bardzo dobrze, pracuje stabilnie, nie gubi danych i co najważniejsze jest super prosta w konstrukcji, przez co nie powinna sprawić trudności nawet początkującemu hobbyście. Dla uproszczenia diody LED można nie montować - wskazuje jedynie aktywność na magistrali I2C. Zachęcam do własnych eksperymentów i modyfikacji kodu i ulepszeń.
Edit:
Jako, że w kodzie są pętle bez timeout-a dodałem obsługę watchdog-a by zapewnić reset w razie zawieszenia się stanu magistrali, odłączenia konwertera itd.
W pewnej konstrukcji ARM, z którą przyszło mi pracować, logi wysyłane były przy pomocy interfejsu I2C na adres 0x22 (7bit).
Zapewne niektórzy znają przejściówki USB-I2C z układem FTDI np.: FT201X
i to właśnie te układy pracują na powyższym adresie.
Jednak koszt takiej przejściówki to ok. 30-40zł + wysyłka, a i czas również naglił,
przez co postanowiłem wykonać samodzielnie podobną konstrukcję na TTiny85.
Niestety, w zasobach znalazłem jedynie nieśmiertelną ATTiny13 bez wbudowanego modułu USI.
Nie poddałem się jednak i postanowiłem spróbować wykonać w pełni programowy I2C slave + UART (gotowy kod),
a teraz przedstawiam efekt kilku godzin pracy.
Może się komuś przyda.
Kod w C, Makefile, konfiguracja do AVRDude są do pobrania z GITHUB-a: Link do projektu
Schemat w PDF do podbrania
Parametry pracy:
- adres 0x22 (7-bit)
- prędkość UART 230400 boud 8N1
- prędkość I2C (maksymalna testowana) 100kbit
Jako USB<->UART użyłem zwykłej przejściówki FTDI z wprowadzonymi pinami Vcc | TxD | RxD | GND
Przejściówka sprawuje się bardzo dobrze, pracuje stabilnie, nie gubi danych i co najważniejsze jest super prosta w konstrukcji, przez co nie powinna sprawić trudności nawet początkującemu hobbyście. Dla uproszczenia diody LED można nie montować - wskazuje jedynie aktywność na magistrali I2C. Zachęcam do własnych eksperymentów i modyfikacji kodu i ulepszeń.
Edit:
Jako, że w kodzie są pętle bez timeout-a dodałem obsługę watchdog-a by zapewnić reset w razie zawieszenia się stanu magistrali, odłączenia konwertera itd.
Fajne? Ranking DIY
