|
Всех приветствую. Нужно подружить 2 микрухи Atiny85 , чтобы они заговорили по атмеловскому интерфейсу USI в двухпроводном режиме (так называемый TWI у атмелов, но именно вот USI). Потратил я уйму времени на поиски в тырнетах уже готового кода, но либо я глупый, либо тщетно. Я находил в даташите на микруху пример ассемблера для SPI и просто описание общего принципа работы USI в друхпроводном режиме, находил на сайте атмел пример кода на C в двухпроводном, написанный в среде IAR , которой у меня нету чтобы диссамблировать. Находил у ДиХалта подробное описание работы I2C интерфейса, но с примерами тоже к сожалению на C. Находил примера кода для TWI на ассеблере у того же ДиХалта, но всё равно, там логика работы несколько иная и регистры по другому устроены. Лазил по всяким забугорным сайтам, но там тоже либо TWI/SPI на ассме, либо USI/TWI/SPI написанный на C. Соответственно - ищу пример кода Именно для работы USI в двухпроводном режиме написанный на ассемблере, либо пример кода на C написанный в WinAVR чтобы дизасемблировать через AvrStudio. А пока я бросил эту затею поиска готового кода, и сам сижу разбираюсь и пишу свой код на ассме по всей той информации что я нашел про I2C интерфейс. Если кто-то может помочь просто советом - напишите в личку, я не понимаю пары кардинальных моментов как устроен USI, например какой регистр отвечает за адресс устройства? Или то значение которое я занесу в USIDR во время определение на приём или передачу работает мастер. И какой вообще алгоритм процедуры приёма/передачи. Нужно ли мне програмно дергать ножками через ПортБ или этим занимается регистр USICR и бит USITC? Если тема была и обсуждалась, то простите. Поиск по ключевым словам USI , assembler ничего не дал.
|