RSS
people

Мои инструменты: 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 комментария к “Мои инструменты: Logic Analyzer V. 2.0”

  1. Elektron пишет:

    По схеме есть ряд вопросов. Для чего задействован порт D ? Для чего JP2 вообще нужен? И используется ATmega128 или ATmega128L?

  2. MasterAlexei пишет:

    Порт D выведен в виде тестовых выводов (Test points). На данный момент используется только пин 0, показывающий работу таймера сэмплирования. Типа дебужная фича такая.

    JP2 — для подключения ISP-программатора. Обычно новые камни (с завода) поставляются с отключенным фъюзом JTAGEN, и по умолчанию JTAG не работает. Чтобы его включить — требуется записать этот фъюз, а это можно сделать только через ISP программатор или через паралельный, которого у меня нет.

  3. MasterAlexei пишет:

    Насколько я в курсе дела — сейчас уже нету у АВРок разделения на L и не L версии. Они все, вроде как работают от 2.7 и до 5.5 вольт.

    В данном случае стоит не L версия. Просто в редакторе схем у меня она первой под руку попалась, и менять не стал. Особой принципиальной разницы тут нет, так как схема питается от USB, а там всегда 5 вольт.

  4. Elektron пишет:

    А почему в последовательном программаторе используются TXD0 и RXD0 а не MISO и MOSI?

  5. MasterAlexei пишет:

    Если почитаете доку на 128ю мегу, то увидите, что именно Мега 128я программируется через RXD0 и TXD0 пины

  6. Elektron пишет:

    Т.е. через MISO и MOSI не выйдет?

  7. MasterAlexei пишет:

    Нет. Мега 128 программируется через линии TXD0 (PE1) RXD0 (PE0) SCK (PB1). Еще используется линия RESET, обязательно.

    смотрите раздел 26 Memory Programming — 26.7 Serial Downloading на странице 303 этого документа www.atmel.com/dyn/resourc...ents/doc8151.pdf

  8. Elektron пишет:

    (раньше речь шла о всех Мегах. Позже я подправил комменты. MasterAlexei)

    как так, 8,16,48,88,168,8515,8535 — всегда через MISO и MOSI прошивались последовательным программатором?!

  9. MasterAlexei пишет:

    А, да. Тогда 128я — исключение из правила. Подредактирую предыдущие посты, чтобы не вводить читателей в заблуждение.

  10. Elektron пишет:

    При прошивки 128 есть ещё какие нибудь особенности, а то что-то она у меня прогромматором не определяется? Прошиваю через синапрог, прогромматором на ft232rl.

  11. MasterAlexei пишет:

    Да вроде как никаких особых особенностей нет.

    1. Самая распространенная ошибка — перепутались RX TX линии. Сам не нее напарывался много раз.

    2. Кварц есть? При подаче питания — есть на нем какие то движения (на линии XTAL1)? Хотя если чип с завода только, то он на внутреннем генераторе должен работать.

    3. Фъюзы еще не записывали? А то бывает, что если их неправильно записать (на внешний такт, например, а не на внешний кварц), то чип (без тактовой частоты) уже не опознается программатором.

    4. Питание на все VCC и GND подали?

    Вроде больше никаких затыков не должно быть.

  12. Elektron пишет:

    Ничего не понимаю...

    1 проверил, даже менял.

    2 она с завода, но и с кварцем то же побывал

    3 до Фъюзов я ещё не добрался он не определяется!!! другие меги(8,16,8535)с этим же программатор, и этой же программой нормально прошиваются!

    4 питание 5В, на все соответствующие выводы подано.

  13. MasterAlexei пишет:

    Есть возможность кинуть фотки вашей платки (желательно хорошего качества), печатку платы, и схемку на мыло MasterAlexei на goolemail com, я погляжу, чего там не так, если что.

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

  14. Elektron пишет:

    А адрес можно уточнить...

  15. MasterAlexei пишет:

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

    MasterAlexei на googlemail com

  16. Elektron пишет:

    Отправил!

  17. Elektron пишет:

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

  18. MasterAlexei пишет:

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

  19. Elektron пишет:

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

  20. MasterAlexei пишет:

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

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

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

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

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

  21. MasterAlexei пишет:

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

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

  22. Elektron пишет:

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

  23. MasterAlexei пишет:

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

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

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

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

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

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

Оставить комментарий или два

Пожалуйста, зарегистрируйтесь для комментирования.