Witam.
Czytam pdf-a w tej sprawie i nie rozumie wyjaśnienia bitów:
Jak kiedyś programowałem i2c na ARMie...to ustawiało się odpowiednie taktowanie tej linii (zakładając ze Masterem był uC ARM a układ docelowy slave to PCF8574N, wówczas ustawiałem max 100kHz). To samo chciałbym osiągnąć za pomocą ATtiny26. Z tego co zrozumiałem (nie jestem advance in English), że mogę albo softowo sam określić jakieś opóźnienie czasowe (które będzie stosowane pomiędzy komendami/bitami transmisji ramki i2c) lub też podłączyć jakieś zewnętrzne źródło zegara lub też użyć Timera0 i jego flagi przepełnienia.
Dodatkowo znalazłem definicje w jakimś examplu dla ATTiny26, który wykorzystany jest w IAR-e:
Chcąc się na tym wzorować za SYS_CLK powinien przyjąć moje Fosc jakie mam ustawione w ATtiny26 8MHz? Skąd te liczby (1300, 1000000,4700 etc.)?
Definicje te uzywają w funkcji __delay_cycles(). Zakładam, ze AVR-GCC nie ma jej odpowiednika. Jak wykonać taka funkcję ilości cykli? Użyć iteracji nop; ?
Proszę o wyjaśnienie.
Czytam pdf-a w tej sprawie i nie rozumie wyjaśnienia bitów:
Cytat:w rejestrze USICR.Bit 3..2 – USICS1..0: Clock Source Select
Jak kiedyś programowałem i2c na ARMie...to ustawiało się odpowiednie taktowanie tej linii (zakładając ze Masterem był uC ARM a układ docelowy slave to PCF8574N, wówczas ustawiałem max 100kHz). To samo chciałbym osiągnąć za pomocą ATtiny26. Z tego co zrozumiałem (nie jestem advance in English), że mogę albo softowo sam określić jakieś opóźnienie czasowe (które będzie stosowane pomiędzy komendami/bitami transmisji ramki i2c) lub też podłączyć jakieś zewnętrzne źródło zegara lub też użyć Timera0 i jego flagi przepełnienia.
Dodatkowo znalazłem definicje w jakimś examplu dla ATTiny26, który wykorzystany jest w IAR-e:
#define SYS_CLK 4000.0 // [kHz]
#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
#endifChcąc się na tym wzorować za SYS_CLK powinien przyjąć moje Fosc jakie mam ustawione w ATtiny26 8MHz? Skąd te liczby (1300, 1000000,4700 etc.)?
Definicje te uzywają w funkcji __delay_cycles(). Zakładam, ze AVR-GCC nie ma jej odpowiednika. Jak wykonać taka funkcję ilości cykli? Użyć iteracji nop; ?
Proszę o wyjaśnienie.
