Author |
Message |
Клапауций
Banned
Joined: 29 Jun 2018 08:48 Posts: 413
|
мы снова может выяснить, что функционал Т36ВГ1 может отличаться от типа применяемого процессора или даты выпуска... ок. когда отлаживал код, то видел, что 5-ть бит добивается 3-мя нулями до 8-ми. но, но не всегда. когда мне захотелось зафильтровать всё, что больше 5-ти бит if (data <= 0x1F), то выяснилось, что программа TEST может писать data > 0x1F - подробности не выяснял. Piotr, ну я понимаю, что человек без логического анализатора - не может вызывать доверия в принципе. допустим. О_О но как же тогда происходит событие прерывания SPI? - которое просто не может происходить при получении менее 8-ми бит. см. цитаты обработчика прерывания viewtopic.php?f=95&t=18901&p=146854#p146736как может 5-ть бит второго байта протолкнуть 8-мь бит первого байта во второй корпус регистра? см. схему https://klapautsiy.github.io/The-displa ... CD1602.pngиначе, 13-ть бит в в двух регистрах сдвига оказались бы размазанными по адресному пространству 8-бит регистров. но 2х8-бит оказываются каждый в своём корпусе ровно по адресам Q0-Q7.
|
02 Sep 2018 12:32 |
|
|
Клапауций
Banned
Joined: 29 Jun 2018 08:48 Posts: 413
|
пока отложил попытки заставить летать SPI на Arduino ATmega16. будет настроение - попробую более современный контроллер ATmega328 или 88. причины могут быть ровно две - древний конроллер, Arduino(где всё медленно и печально).
на настоящий момент полностью работоспособной считается версия с аппаратными регистрами сдвига.
|
02 Sep 2018 12:48 |
|
|
piotr433
Novelist
Joined: 14 Aug 2018 14:30 Posts: 49 Location: Szczecin, Польша
|
Я испытал 3 микросхемы: Т36ВГ1-2 9004 ОП Т36ВГ1-2 9105 КА1013ВГ2 9305 Результаты совпадают. Не обижайся, друг Кстати, можно применить атмегу как логический анализатор: 1. ожидаем спада сигнала SYNC 2. в цикле читаем состояние PINB и записываем во внутреннее ОЗУ 3. передаём содержимое внутреннего ОЗУ через последовательный порт
|
02 Sep 2018 12:58 |
|
|
Клапауций
Banned
Joined: 29 Jun 2018 08:48 Posts: 413
|
Piotr, не обижайтесь и вы - первый вариант контроллера дисплея просто останавливал процессор МК-85, пока что-то происходило в обработчике прерывания. т.е. я имел возможность корректно остановить процессор в любом интересном мне месте и посмотреть уровни сигналов где угодно и чем угодно. недостатком такого подхода было то, что в режиме турбо я получал лишний такт вместо немедленной остановки. эта проблема и родила эту тему. поэтому - можно, но уже не нужно.
|
02 Sep 2018 13:09 |
|
|
piotr433
Novelist
Joined: 14 Aug 2018 14:30 Posts: 49 Location: Szczecin, Польша
|
OK, я не настаиваю
|
02 Sep 2018 13:33 |
|
|
Клапауций
Banned
Joined: 29 Jun 2018 08:48 Posts: 413
|
ок. обработчик прерывания версии с регистрами: два 8-мь бит регистра объединены в регистр 16-ть бит. 16-ть бит сыпятся в 16-ть бит регистр. если бы битов было не ровно 16-ть, то эта конструкция не работала бы правильно.
|
02 Sep 2018 13:44 |
|
|
piotr433
Novelist
Joined: 14 Aug 2018 14:30 Posts: 49 Location: Szczecin, Польша
|
Да, убедительно. Спасибо!
|
02 Sep 2018 23:20 |
|
|
Клапауций
Banned
Joined: 29 Jun 2018 08:48 Posts: 413
|
таки, нашёл причину нестабильного приёма Arduino байтов по SPI . что происходило: внешне выглядело как конфликт прерываний/обработчиков прерываний. их в коде - два. но, как бы там ни было - один из двух становился бы в очередь и обработчик прерывания исполнялся бы чуть позже, но не настолько поздно, чем были бы приняты очередные 8-мь бит по SPI. два обработчика прерывания в коде... но - НЕТ. в Arduino существует ещё один, с временем исполнения достаточным, что бы быть причиной сбоев приёма данных по SPI: отвалятся плюшки millis() и прочего системного времени, но кому оно в этом проекте нужно? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ потестирую и опубликую позже. всем участникам, большое спасибо - все свободны.
|
03 Sep 2018 11:59 |
|
|
Клапауций
Banned
Joined: 29 Jun 2018 08:48 Posts: 413
|
отключил от прерываний и остановил все таймеры в Arduino ATmega16: пока, тестовый полёт нормальный. *кто в курсе, откуда ещё можно ожидать несанкционированной активности от Ардуино - просьба поделиться мудростью.
|
05 Sep 2018 21:38 |
|
|
Клапауций
Banned
Joined: 29 Jun 2018 08:48 Posts: 413
|
ок. контроллер дисплея на интерфейсе SPI взлетел и работает, но с этим вариантом протокола(1-й байт - 8-мь передаваемых бит, 2-й байт - меньше 8-ми передаваемых бит): будет несовместим. версия на регистрах сдвига совместима с любым количеством принимаемых бит. итого: две версии контроллера дисплея. 1. чуть более сложная аппаратно, но совместимая со всеми известными вариантами протокола. 2. упрощённая и заточенная исключительно на приём 2 по 8-мь бит.
Last edited by Клапауций on 07 Sep 2018 09:02, edited 1 time in total.
|
06 Sep 2018 16:09 |
|
|
Alekcandr
Doomed
Joined: 01 Oct 2007 10:30 Posts: 665 Location: Ukraine
|
Вроде SPI не секретный протокол. Это чего за скрин (эту хрень какая программа сделала)? И в красном кружке? Ведь ничего не понятно.
По смыслу в красном кружке - что-то лишнее, но тем ни мение это не обнуляет выше сказазонное.
_________________Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
|
07 Sep 2018 07:08 |
|
|
Клапауций
Banned
Joined: 29 Jun 2018 08:48 Posts: 413
|
если тему читать не с конца, а внимательно отсюда viewtopic.php?f=95&t=18901&start=45#p146702 то, всё станет понятно. *заменил на картинко без пометок. "программа" называется: "логический анализатор подсматривает как в МК-85 процессор передаёт пиксели контроллеру дисплея".
Last edited by Клапауций on 07 Sep 2018 09:09, edited 2 times in total.
|
07 Sep 2018 08:47 |
|
|
Alekcandr
Doomed
Joined: 01 Oct 2007 10:30 Posts: 665 Location: Ukraine
|
Как тут вникнуться. Соседи с ремонтом отбили мне стенку с плиткой в ванной. Тут ходя бы свое доделать. ппц.
_________________Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
|
07 Sep 2018 09:06 |
|
|
Клапауций
Banned
Joined: 29 Jun 2018 08:48 Posts: 413
|
фиг с ним с той плиткой - соседей не выбирают. корову подои и спать.
|
07 Sep 2018 09:47 |
|
|
piotr433
Novelist
Joined: 14 Aug 2018 14:30 Posts: 49 Location: Szczecin, Польша
|
У меня возникла идея, как передать по SPI меньше 8-ми битов. После обнаружения нарастающего фронта на линии SYNC микропроцессор посылает на вход SCK дополнительные 3 импульса. Ниже приведена схема подключения и код обработки прерываний. Проверено на ATmega16 @ 16МГц, работает отлично.
Last edited by piotr433 on 07 Sep 2018 13:49, edited 1 time in total.
|
07 Sep 2018 12:31 |
|
|