Fun Electronic

Электронные поделки, программирование микроконтроллеров, и прочая белиберда|Electronic Basteleien, Mikrokontroller Programmierung und anderes Quatsch

RSS
people

Мои инструменты: Logic Analyzer V. 2.0|Meine Werkzeuge: Logic Analyzer V. 2.0

И так, продолжаем разговор.

А тему сегодняшнего разговора вы можете прочитать выше.

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

И эта новая фича называется  SPI логгер.

Logic Analyzer Screen 1

Logic Analyzer SPI Logger Window

В самой программе изменился немного интерфейс, но старые функции остались на месте. А так же добавилась новая.

Если приглядеться к главному окну, то можно заметить появившиеся вкладки «Logic Analyzer» и «SPI Logger».

В первой вкладке «Logic Analyzer» все осталось по старому, поэтому я порекомендую вам прочитать эту статью, если есть интерес именно к этой части, а сами мы займемся разглядыванием второй вкладки.

И так, первое, что мы видим — куча всяческих настроек. Ну сами понимаете, SPI - шина не такая уж и простая, как кажется на первый взгляд. Состоит она из целых 4х сигнальных проводов плюс земля:

  • CLK — сигнал клок, по которому синхронизируется вся передача. Генерируется «мастером» на шине.
  • MISO — Master In Slave Output — сигнал данных от «слэйва» к «мастеру».
  • MOSI — Master Output Slave Input — сигнал данных от «мастера» к «слейву».
  • SS — Slave Select — еще его называют Chip Select. Сигнал выбора «слейва», с которым общаться будем, если на шине несколько «слэйв» — устройств.

Ну так вот. В программе нужно выбрать следующие параметры

  • Роль нашего логгера на шине — «слэйв» или «мастер» в группе «Peripheral Mode».
  • Полярность клока. Точнее того уровня, на смене в который будет происходить считывание линий данных. Логично, что в цифровых системах на одном проводе может быть только два состояния — Low и High. Т.е. если выбрана полярность — Active Low, то считывание линий данных будет происходить в момент смены сигнала с High в Low.
  • Фаза клока. Тут мы определяем, на каком фронте клока  мы будем считывать данные — на первом или на втором.
  • Режим передачи битов в байте - либо начиная с MSB и заканчивая LSB, либо наоборот. MSB Most Significant Bit — наиболее значимый бит, номер 7. LSB — Least Significan Bit — наименее значимый бит, номер 0.
  • Далее, если наш логгер выступает «мастером» на шине, то он должен генерить клок. Ему надо сказать, с какой частотой это делать. Тут я малость поленился, и указал частоту так, как в настройках самого контроллера указывается — а именно предоставил возможность выбрать делители системной частоты микроконтроллера. Т.е., чтобы получить фактическую частоту, надо поделить 16000000 герц на тот делитель, который выбран в списке.
  • Число байт, которые мы будем ожидать от микроконтроллера в одной посылке, и столько же слать ему.

И так — все параметры установили — теперь нужно настроить железную часть. Это делается нажатием кнопки — «Set SPI Parameters». Само собой — порт коммуникации должен быть открыт (кнопочка в тулбаре должна гореть светло зеленым цветом).

Да. Надо заметить, что если выбран режим «мастер», то пины на логгере будут установленны следующим образом:

  • CLK — Output
  • MOSI — Output
  • MISO — Input
  • SS — Output

А если выбран режим «слэйв», то вот так:

  • CLK — Input
  • MOSI — Input
  • MISO -Output
  • SS — Input

Так что это надо учитывать при подключении логгера к вашей схеме, чтобы случаем чего не пожечь. Хотя если присоединить к этой железке еще один AVR контроллер, то от неправильной конфигурации ничего не должно случится с портами — мои оба контроллера, логгер и испытуемый, пока живы.

Так же надо учесть тот момент, что в режиме «слэйв» пин SS действует так, как ему и положено действовать. Т.е. данные будут приниматься только тогда, когда этот пин кто нибудь посадит в 0. Иначе ничего не примется.

И так — логгер настроен. Теперь в окошке «Data to Transfer» вводим данные, которые нам надо послать. Это может быть как текст, так и макросы, определяющие шеснадтеричные значения байта, например - $AB$bc$0d будет означать значения 0xAB 0xBC 0x0D. Если же надо послать символ доллара — то надо его набрать два раза: $$. Макрос может содержать только один байт. Т.е. макрос $ABBC будет переделан в три байта: 0xAB 0×42 0×43!

И жмем «Transfer»!

В зависимости от выбранного режима логгера — «мастер» или «слэйв», в окошке «Received Data» появятся данные либо сразу, либо когда на логгер прийдет клок от «мастера».

Для повтора посылки надо снова нажать кнопку «Transfer», или поставить галку «Continuously send» и нажать «Transfer».

В режиме «мастер», при нажатии «Transfer», данные шлются сразу же, так как клок генерится нашим логгером.

В режиме «слэйв», при нажатии «Transfer», данные копируются во внутренний буфер логгера и он переходит в режим ожидания клока от «мастера». Как только клок пришел — данные посылаются, новые данные считываются и шлются в программу GUI и, соответственно, показываются в окошке «Received Data».

Если в режиме «слэйв» не стоит галка  «Continuously send», то после того, как наши данные послались, внутренний счетчик байтов остановится и, если клок все еще идет, на шину будет слаться всякий мусор. А галочка «Continuously send» переустанавливает внутренний счетчик на начало буфера и данные снова уходят.

Правда между посылкой последнего байта и переустановкой счетчика проходит довольно много времени, и если клок довольно шустро идет, то на шине все же можно наблюдать иногда мусор. Но я работаю над этим и в следующих версиях попробую устранить этот недостаток.

Так же есть еще две галочки — «RX as Hex» и «Show received data».

Ну последняя, я думаю, вы догадались, включает или выключает показ принятых данных в окошке «Received Data».

А первая устанавливает режим либо простого текста, либо принятые данные будут конвертироваться в HEX представления.

Остались две кнопки — «Clear TX» и «Clear RX». Ну тут ничего особо сложного нет — первая очищает окно «Data to Transfer», а вторая, соответственно, — окно «Received Data».

Собственно — это все, что можно сказать о новом обновлении.

Ах да. Прошивка логгера тоже изменена, и железку надо перепрошить, чтобы она заработала как надо.

Так же я все же подправил схемку, добавил пару недостающих проводов для SPI, и все таки изменил номинал кварца на правильный:

23 комментария to “Мои инструменты: Logic Analyzer V. 2.0|Meine Werkzeuge: Logic Analyzer V. 2.0”

  1. MasterAlexei Says:

    Ошибочка вышла — букву g пропустил.

    MasterAlexei на googlemail com

  2. Elektron Says:

    Отправил!

  3. Elektron Says:

    Извиняюсь за беспокойство в файле конфигурации сины касяк был, исправил заработало!!!

  4. MasterAlexei Says:

    Ну вот и прекрасно 🙂

  5. Elektron Says:

    Если схема работает, как должен на это отреагировать интерфейс программы?

  6. MasterAlexei Says:

    В настройках надо выбрать COM порт, который появился в системе после подключения устройства к компу, выбрать скорость (вообще в устройстве скорость выбрана 115200, но на компе приходится выбирать 128000. Думаю, это из-за неподходящего для скорости в 115200 кварца), и нажать кнопку на панели под меню (лампочка зеленая, Open Communication Port).

    И если порт откроется, то должны уже появиться сэмплы на основном экране. Можно попробовать выставить 300 семплов, 200-300 микросекунд, поставить галочку Repeat Triggering, сам триггер выставить на No triggering, чтобы он постоянно данные читал, нажать кнопку Set All, и поднести руку к проводам, и тогда, по идее, можно увидеть «синус».

    Ну и на самом устройстве, при первом старте горят все светодиоды (на самом деле не все горят постоянно а последние три мигают, просто очень быстро).

    Еще один момент есть.

    При первом подключении, когда в системе еще нет драйвера FTDI, винда, изза того, что устройство постоянно шлет байты в ком, вдруг думает, что подключили мышку, и потому пропадает курсор. Тут поможет только ловкость рук и скорость нажатия на мышку, пока она не перестала работать, и в менеджере устройств отключить «новую определенную мышку» так, чтобы на ней крест красный появился.

  7. MasterAlexei Says:

    Кстати, Вы же третью версию используете программы?

    www.fun-electronic.net/la...ic-analyzer-v-30

  8. Elektron Says:

    А в выставление фюзов не подскажи, особенно с Low Fuse???

  9. MasterAlexei Says:

    Вот с этим надо аккуратнее, чтоб не залочить чип навечно.

    Прямо сейчас значения фъюзов не подскажу, так как на работе сижу. Если сегодня вечером будет еще актуально, примерно в 22:00 по Москве, черкните, я гляну, что именно у меня стоит.

    Но смысл выставления их в том, чтобы JTAG заработал (хотя если Вы прошиваете ISP программатором — это не актуально), источник такта — внешний кварц (не генератор! а именно кварц), Brown Out Detection не нужен. Start Up Time можно и побольше поставить — это не особо стратегический параметр. И главное, чтобы M103C НЕ был запрограммирован. Т.е. мега должна работать в режиме 128й, а НЕ в 103м. WatchDog не нужен, он софтово включается. Ну и BootRst тоже не нужен, так как там нет бутлоадера.

    Вот основные рекомендации.

    Если Вы уже включили JTAG, и у Вас есть JTAG ICE или что-то подобное, то в AVR Studio можно удобно выставить их.

    ВАЖНО! предварительно их считать. Хотя студия их автоматом считывает, но лучше еще раз на кнопку чтения нажать.

Leave a Reply

You must be logged in to post a comment.