Страница 1 из 1

ATmega328 и LED&KEY модуль на базе TM1638

Добавлено: Ср июн 02, 2021 11:11:24
С.Н.
День добрый народ.
В рамках проработки идеи одного прибора из подручных (старых модулей) "подружил" LED&KEY модуль на базе TM1638 и ATmega328 через аппаратный SPI интерфейс.
Сложность в том, что модуль TM1638 имеет полудуплексный режим работы, а SPI интерфейс не имеет такого режима.

Кому интересно?
До сих пор видел только программную эмуляцию этого "содружества". Не исключаю, что сделал "велосипед".

Re: ATmega328 и LED&KEY модуль на базе TM1638

Добавлено: Ср июн 02, 2021 11:16:23
parovoZZ
Есть Attiny24/44/84 с полуфабрикатным USART модулем. На нём делается любой каприз, так практически всё отдано на откуп программисту.

Re: ATmega328 и LED&KEY модуль на базе TM1638

Добавлено: Ср июн 02, 2021 11:37:17
С.Н.
[uquote="parovoZZ",url="/forum/viewtopic.php?p=4041313#p4041313"]Есть Attiny24/44/84[/uquote]
Очень рад за них. Речь шла за конкретный МК и аппаратный SPI.

Re: ATmega328 и LED&KEY модуль на базе TM1638

Добавлено: Ср июн 02, 2021 12:27:27
parovoZZ
Сегодня ассортимент МК такой, что нет никакой проблемы подобрать МК под задачу. Зачем создавать проблемы на ровном месте и затем героически их решать?

Re: ATmega328 и LED&KEY модуль на базе TM1638

Добавлено: Ср июн 02, 2021 13:15:56
С.Н.
[uquote="parovoZZ",url="/forum/viewtopic.php?p=4041345#p4041345"]Сегодня ассортимент МК такой, что нет никакой проблемы подобрать МК под задачу. Зачем создавать проблемы на ровном месте и затем героически их решать?[/uquote]
Извините, не пойму, зачем Вы все это пишете. Просто, что бы что-то написать? Да никто не сомневается в Вашей компетентности и разнообразности мира МК.

Я описал условия задачи - использовать, то что под рукой. Описал всё это на ветке про МК AVR. Разрешил интересную проблемку, как мне показалось, нестандартным образом. Нет нужды в этом - просто игнорируйте.

Какой смысл говорить про другие МК?

Re: ATmega328 и LED&KEY модуль на базе TM1638

Добавлено: Ср июн 02, 2021 13:26:55
oleg110592
[uquote="С.Н.",url="/forum/viewtopic.php?p=4041310#p4041310"]SPI интерфейс не имеет такого режима...
Не исключаю, что сделал "велосипед".[/uquote]
1) MISO и MOSI соединить и будет такой режим
2) возможно велосипед
https://tomalmy.com/tm1638-interfacing-continued/

Re: ATmega328 и LED&KEY модуль на базе TM1638

Добавлено: Ср июн 02, 2021 13:43:36
parovoZZ
использовать, то что под рукой.
не то, что под рукой, а то, что есть у ТС. У меня под рукой нет 328 камня и врядли будет.
Разрешил интересную проблемку
Если это вопрос - го надо задать. Если это решение - его надо описать. Иначе
Какой смысл говорить
об этом? Я каждый день решаю какие-то задачи. О чём-то даже рассказываю.

Re: ATmega328 и LED&KEY модуль на базе TM1638

Добавлено: Ср июн 02, 2021 14:35:47
С.Н.
[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

Тема исчерпана.