User Tag List

Показано с 1 по 10 из 102

Тема: AVR Spectrum 128 in progress ...

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    25.01.2012
    Адрес
    г. Днепропетровск, Украина
    Сообщений
    31
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Lisitsin Посмотреть сообщение
    Что если вместо сдвигового регистра использовать SPI при частоте пикселов 10 МГц?
    SPI требует задержки в 1 такт SCK перед началом передачи очередного байта. В течение этого времени на ноге MOSI будет сохраняться значение последнего выведенного бита. На экране это будет вылядеть как пиксел двойной ширины. В общем SPI не очень подходит для вывода графики.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    05.09.2010
    Адрес
    г. Рязань
    Сообщений
    716
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    45
    Поблагодарили
    14 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от acx Посмотреть сообщение
    SPI требует задержки в 1 такт SCK перед началом передачи очередного байта. В течение этого времени на ноге MOSI будет сохраняться значение последнего выведенного бита. На экране это будет вылядеть как пиксел двойной ширины. В общем SPI не очень подходит для вывода графики.
    А если выводить следующий байт не дожидаясь полного вывода последнего бита? И поставить соответствующую фазу и полярность SCK?

  4. #3

    Регистрация
    25.01.2012
    Адрес
    г. Днепропетровск, Украина
    Сообщений
    31
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Lisitsin Посмотреть сообщение
    А если выводить следующий байт не дожидаясь полного вывода последнего бита? И поставить соответствующую фазу и полярность SCK?
    Прийдется дожидаться не просто полного вывода последнего бита, а еще и плюс длительность 1го такта SCK - прощупано лично: если произвести запись в Data Register не дождавшись этого момента, то будет устанвлен Write COLlision Flag и передача нового байта не начнется. Вот цитата из datasheet на ATmega32:
    The system is single buffered in the transmit direction and double buffered in the receive direction.
    This means that bytes to be transmitted cannot be written to the SPI Data Register before
    the entire shift cycle is completed.
    У других контроллеров, и не только ATmega, ситуация в режиме SPI таже. Также все вышеизложенное действительно и для всех вариантов фазы и полярности.
    Здесь можно разве что поизголяться с двумя каналами SPI, естественно на тех контроллерах где они есть, объединив их выходы MOSI и попеременно: выводим через первый, когда MOSI второго в Z-состоянии, затем выводим через второй, переведя ногу первого в Z-состояние. Но на экране будет все же заметен момент переключния в Z, когда MOSI одного уже перевели в Z, а MOSI другого будет переведен на OUT только следующей командой + до момента реального начала вывода первого бита. Здесь можно поэксперементировать с очередностью действий, например сначала записать байт для вывода, а затем уже переводить ноги в Z / из Z, но все равно на экране этот переход между байтами будет слегка отличаться от переходов между битами.

    В ситуации с внешним регистром сдвига тоже не все так гладко: очень сложно (=практически не возможно) произвести в него запись нового байта стробом от МК так, что бы не исказился последний, выводимый на экран, бит предыдущего байта. Получим примерно ту же ситуацию, что и с SPI за исключением 1го дополнительного такта SCK. Но здесь уже можно поискать решение:
    Вариант1: МК выдает только "разрешение" на параллельную загрузку в сдвиговый регистр в момент окончания вывода предыдущего байта, а непосредственно самим стробом записи служит сигнал сдвига битов. Грубо говоря объединяем по AND строб сдвига битов и "разрешение" загрузки нового байта и результирующий сигнал подаем на вход "параллельная загрузка" регистра.
    Вариант2: на выходе сдвигового регистра ставим еще один "буфер" (регистр / D-триггер), строб записи в который будет слегка задержан по времени относительно строба сдвига бит в сдвиговом регистре. Т.о. запись в последний, выходной, регистр будет производиться только тогда, когда на выходе сдвигового регистра установится заведомо правильное значение и не будет разницы между выводом битов в пределах одного байта и битами двух соседних байтов.
    Последний раз редактировалось acx; 19.05.2012 в 19:06.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 7
    Последнее: 06.04.2012, 21:37
  2. Ищу сборник музыки MIC/Progress.
    от jaan/PhT в разделе Музыка
    Ответов: 38
    Последнее: 06.05.2006, 21:49
  3. Phookz = Fux (Progress) ??
    от newart в разделе Музыка
    Ответов: 3
    Последнее: 07.02.2006, 17:44

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •