[uquote="oleg110592",url="/forum/viewtopic.php?p=4041371#p4041371"][uquote="С.Н.",url="/forum/viewtopic.php?p=4041310#p4041310"]SPI интерфейс не имеет такого режима...
Не исключаю, что сделал "велосипед".[/uquote]
1) MISO и MOSI соединить и будет такой режим
2) возможно велосипед
https://tomalmy.com/tm1638-interfacing-continued/[/uquote]
Реально похоже. Я правда плохо СИ понимаю...
Отличия:
1. ASM.
2. Нет никаких задержек типа delay в рабочих цепочках. Изначально они конечно были по PDF TM1638. Потом убрал.
3. Частота передачи 4 МГц (у меня кварц 16МГц)
4. Нет изменения режима работы линии MOSI. Эта линия через резистор к MISO присоединена -не я придумал.
5. Выбран режим 0, а не 2 (CPOL=0 и CPHE=0). PDF TM1638 вроде изучал. Один из нас что-то напутал или TM1638 "схавала" и такое обращение.
6. Я флаг проверяю при приеме/передаче (у автора прерывание отрабатывает по завершению, если я правильно понял)
А так конечно
велосипед.
"We have to send something to start each read, so we send zeros" - вот ключ который он нашел на полгода раньше.
Поскольку я не меняю направление линии MOSI, то вместо 0 посылаю 1.
Интересно, но эту статейку не находил ранее.
Код: Выделить всё
WriteSPI:
out SPDR,r16
Wait_Transmit:
in r16,SPSR
sbrs r16,SPIF
rjmp Wait_Transmit
ret
ReadSPI:
out SPDR,0xFF
rcall Wait_Transmit
in r16,SPDR
ret
Тема исчерпана.