Как стать автором
Обновить

Комментарии 17

Использовать ногодрыганье когда есть аппаратный SPI - такое себе.

Вот тут посмотрите как реализована работа по SPI с этим чипом: https://github.com/i2make/TM1638_using_hardwareSPI/blob/91d131355ccdd123a5a64fbfb2d4ce565ab7c0c8/src/TM16XX.cpp#L141

посмотрю, спасибо

Самому учиться программировать интересней. Но ... В этой библиотеке используется стандартная функция shiftOut() в которой по сути используется то же самое ногодрыганье: https://github.com/arduino/ArduinoCore-avr/blob/63092126a406402022f943ac048fa195ed7e944b/cores/arduino/wiring_shift.c#L40
Я не спорю хорошо это или плохо, но не лучше ли сразу учиться использовать нужные интерфейсы правильно?

Изначально мне нужно было проверить работоспособность купленной платы, но потом я решила воспользоваться ситуацией и детальней разобраться с тем как устроен и работает SPI. Я сейчас пытаюсь реализовать аппаратный spi на fpga, опять же исключительно в целях самообразования. И «ногодрыганье» мне помогло это получше в голове уложить.

Честно говоря, я долго думала, делиться своим «велосипедом» или нет,но если бы не поделилась, то не получила бы столько ценных советов и ссылок

Все нормально. Если знаний в голове прибавилось - значит время потрачено не зря. =)

В этой микросхеме самое интересное, что там есть вариант хитрого подключения когда один байт это не все сегменты одного разряда индикатора, а один сегмент восьми разрядов. И вот там код выходит прикольный.

Я писал полностью свою реализацию отображения на нем. У меня волосы зашевелились на голове когда я прочитал описание адресации сегментов )))))

 есть вариант хитрого подключения

Так а в чем проблема? Не используйте индикаторы с общим анодом, для индикаторов с общим катодом там все норм. А если вдруг надо - то перекодировать буфер, ортогонально развернув индикацию, - ну несколько минут для написания программы и немного тактов для его обслуживания.

А вот написать полудуплекс для чтения клавиатуры совсестно с выводом индикации на TM1638 при работе на пристойных скоростях SPI (>2 MHz, ну для Ардуино пристойных) - ну задачка уже поинтереснее.

Я когда стала читать на неё описание, не могла никак принять, почему именно так в ней всё странно расположено

может и велосипед, но мне нравится что детально разжевано

спасибо

Раз уж влезла в программирование мк, не пожалей 7-10т.р. на простенький осциллограф. На пару каналов, хотя бы. Тогда вопросы "почему не работает/работает не так" будут решаться быстрее.

Или, как вариант, макетка FPGA с включённым анализатором сигналов. Особенно если потом в область verilog залезть захочется.

У меня есть возможность воспользоваться осциллографом, но почему-то конкретно в этом случае мне такая мысль в голову не пришла

За логический анализатор на FPGA отдельное спасибо! это интересно, обязательно попробую воспользоваться

Параметр LSBFIRST указывает, что передача будет осуществляться старшим битом вперёд (да, в документации указано, что передача должна осуществляться именно так).

Показания документации на shiftOut() расходятся с вашими:

MSBFIRST or LSBFIRST. (Most Significant Bit First, or, Least Significant Bit First).

ой! надо всё перепроверить

Но вообще-то он не SPI, а I2C без адреса, отправляется на него по I2C нормально, а вот чтение несколько сложнее.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации