Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.59/27: Рейтинг темы: голосов - 27, средняя оценка - 4.59
Mytdy
0 / 0 / 0
Регистрация: 12.11.2014
Сообщений: 42
1

Нужна помощь в написании прошивки.

16.11.2014, 04:03. Просмотров 4918. Ответов 13
Метки нет (Все метки)

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

Плата Arduino MEGA 2560 R3 16МГц (хотя это и Arduino прошивка нужна обычная, с нулевого адреса без бутлоадера )

Порты: PA0-PA7, PC0-PC7, PF0-PF7, PK0-PK7 анализируемые входы 32 канала.
На PB0-PB3 microSD карта.
еще 3 вывода как управляющие, описаны ниже.

Принцип работы следующий.
По тактовым сигналам (назовем их CLOC) на любой из оставшихся PIN (например из PD0-PD3) происходит чтение портов PA0-PA7, PC0-PC7, PF0-PF7, PK0-PK7.
Эти данные сохраняются в буфер. При заполеннии буфера выдается сигнал (назовем PAUSE) на любой из свободных PIN (например из PE0,1,3,4,5) с остановкой чтения портов PA0-PA7, PC0-PC7, PF0-PF7, PK0-PK7 и игнорирования тактовых сигналов CLOC, они будут продолжать поступать. Далее содержимое буфера надо записать в текстовый файл на карте.

Формат записи что то вроде

00 00 00 00
00 00 00 00
и так далее

где 00 содержимое считанное с портов например в такой последовательности PA, PC, PF, PK по тактам в HEX, каждая строка новый отсчет.

По окончании записии буфера, снимается сигнал PAUSE и начинается процесс считывания портов в буфер по сигналам CLOC и так далее по кругу.

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

CLOC имеет частоту или 4 или 2 МГц.

как только исчерпается возможность записи на карту нужно выдать сигнал PAUSE и выставить единицу на PB7 после чего зациклится до вмешательства человека.

Во вложении схема платы.

[47.06 Кб]

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

Поэтому очень надеюсь на вашу помощь.

Ну и с меня нигарыч :) пиво :)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.11.2014, 04:03
Ответы с готовыми решениями:

Нужна помощь!
Недавно начал изучать микроконтроллеры, наткнулся на книгу Ревича...

Нужна помощь по AVR
На форуме нашел схему блока питания http://rodyokot.ru/circuit/power/supply/14/...

Нужна срочно помощь по СИ++
Нужно написать несложную программу на СИ++: В некотором текстовом файл...

Нужна помощь с ATmega64
Контроллер ATmega64, прошивка написана в CodeVision 2.04 отлаживается по JTAG...

Нужна помощь с программатором
Здравствуйте. Для ATtiny13A собрал программатор по этой схеме...

13
sitimur
0 / 0 / 0
Регистрация: 08.02.2012
Сообщений: 648
16.11.2014, 06:08 2
при частоте мк 16мгц, и сбора информации на частоте 2мгц, на одну операцию получения данных и сохранения в буфер, потребуется уложиться в 8 тактов, даже на ассемблере не получиться, а почему не воспользоваться типа такого http://bsvi.ru/stm32f4/
0
Mytdy
0 / 0 / 0
Регистрация: 12.11.2014
Сообщений: 42
16.11.2014, 14:43 3
такой платы нет в наличии, есть только ардуинка, есть еще платка на stm32f103 но там реально только 3 восьмибитных порта доступны еще один придется набирать из свободных кусочков остальных.

если оставить мегу то на какой максимальной частоте возможен съем данных?
в принципе можно будет тактовые импульсы поделить на 2 чтоб делать отсчет каждый второй такт, и затактировать исследуемое устрйство (uPD7802) на пониженной частоте минимум по даташиту получится где то 1 МГц кварц значит импульсы тактирования шины 500кгц и если с делителем то 250 кГц.

на частоте 250/500 кГц возможен съем данных в буфер?
0
_pv
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,515
16.11.2014, 15:17 4
IN - 1 такт.
ST/STS - 2 такта, то есть 12 тактов на сохранение 4 портов, то есть 1.3МГц при тактовой 16 и 1.6МГц при 20.
при этом состояние 4х портов защёлкивается, как можно догадаться, не одновременно, а через такт.

максимальный размер буфера какой?
0
Mytdy
0 / 0 / 0
Регистрация: 12.11.2014
Сообщений: 42
16.11.2014, 15:31 5
там ничего страшного с защелкиванием через такт, шина адреса и шина данных это 3 порта четвертый порт разные управляющие сигналы, данные там висят по минимум 2 такта устройства (на шине данных на шине адреса и управляющих 3-4 такта), тоесть достаточно длительные если на частоте 500кгц снимать данные.

максимальный буфер в принципе без разницы, я так понимаю что раз запись на флешку делать надо через Petit FatFs или FatFs то кратным 512 байт (записываемого отформатированного текста) а дальше сколько ОЗУ позволит. на время записи сигнал PAUSE будет использоваться для торможения устройства.
0
_moysi
0 / 0 / 0
Регистрация: 19.11.2010
Сообщений: 790
16.11.2014, 20:06 6
Сначала решаем задачу, потом задаёмся целью: а) поебаться, б) сэкономить деньги и время бесплатно, в) проанализировать что-то там, г). применить имеющуюся деталь, узел, изделие.

Берём гость каких-нибудь регистров на общую сумму 32 входа, защёлкиваем их все одновременно, выводим защёлкнутые данные за четыре присеста по 8 бит в салеае, повторяем.
Из салеае еённым штатным софтом выгружаем всё в иксель, смотрим цифры, чешем репу, автоматизируем формулами на визуалбейсике.

Что дешевле: ноутбук, человекомесяц или просто месяц?
0
Btosk Worryor
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 392
17.11.2014, 21:18 7
Есть еще один известный способ. Поставить внешнюю озу в данном случае 32-х битную и записывать данные туда.
Потом неспеша забирать и записывать на карту.
http://itistromyx.ru/forum/index.php?showtopys=49195
0
_pv
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,515
17.11.2014, 22:03 8
статическая память х32 не самая распространённая вещь, а если городить мультиплексирование в 8/16 разрядов, то уж проще сразу в китайский лог.анализатор пихать как _moysi предложил.
чтобы не брать горсть регистров, можно попробовать взять готовый модуль на ft4232h, и через битбанг все 32 разряда зачитать, скорость правда не знают какая будет максимальная, но пожалуй больше мегагерца должно быть.
0
omokost
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,753
17.11.2014, 22:38 9
Цитата Сообщение от _pv
статическая память х32 не самая распространённая вещь, а если городить мультиплексирование в 8/16 разрядов...
Взять 4 статических памяти х8, заливать в них одновременно. Считывать используя разрешение выхода самих кристаллов памяти. Вариант?
Вот только стоить это будет больше Saleae.
0
Mytdy
0 / 0 / 0
Регистрация: 12.11.2014
Сообщений: 42
17.11.2014, 22:50 10
вариант то вариант, только думаете это будет проще ардуинки с флешкой?
0
omokost
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,753
17.11.2014, 23:07 11
Цитата Сообщение от Mytdy
...думаете это будет проще ардуинки с флешкой?
Проще явно не будет, но ардуинка для логического анализатора не годится, если только это не частоты меньше 1 кГц. Тут люди в тактах контроллера считали, а запись через библиотеку на карточку сколько тактов займет? Кстати и прикинуть быстродействие самой карточки нелишне...
0
_pv
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,515
17.11.2014, 23:16 12
так писать на лету не надо, буфер набрали в пару кБ, на карточку скинули.
0
Mytdy
0 / 0 / 0
Регистрация: 12.11.2014
Сообщений: 42
17.11.2014, 23:20 13
Ну из выше приведенного подсчета вроде вполне справится, если запаять на анализируемый МК кварц на 1 МГц и поделить тактовые сигналы на 2.
за 4мксек сохранить в оперативку 4 байта. если я правильно посчитал имеем время в 256 тактов ардуинки на сохранение 4 байт.
0
omokost
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,753
18.11.2014, 00:00 14
Меня терзают смутные сомнения...
ТЗ описано очень смутно, ничего не определено, на каком языке будет написано, какие библиотеки будут примены? Советовать сложно...
0
18.11.2014, 00:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.11.2014, 00:00

массивы. нужна помощь
Никак не вкурю, где находятся адреса и данные массивов типа .db .dw, пользую...

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

нужна помощь со стартом на PIC
Раньше с PICами дел не имел. В наличии windows 8.1, MPLAB X IDE v3.00,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru