Страница 1 из 2
Как мне выплюнуть массив?
Добавлено: Пт мар 07, 2014 13:59:54
просто КОТ
Добрый день, друзья! У меня беда -- как мне выплюнуть массив?
А суть вот в чём. Имеется некоторый МК, семейства AVR. Пока не решил точно какой. если хватит Тини13 мелкой -- чудно. Если надо клопа пожирнее, то могу пересесть на Тини2313, или Мегу8. как скажете короче. А задача такая:
Есть некоторый массив информации, который МК должен выдать последовательно. Приблизительно как:
1101011010010010101001010010101001010101010101010100101010100100101010010101001010101010100101
Ну и в таком духе. размер этого массива будет меняться. Но в целом от 10 до 100 кБайт весу. Записать могу его как в 16-ричом, так и в двоичном виде. Смотря что удобнее будет для цели.
Вопрос: как реализуется такая задача? Чтоб МК каждые 30мкс выводил одну циферку, единичку или нулик?
Re: Как мне выплюнуть массив?
Добавлено: Пт мар 07, 2014 14:05:56
Engineer_Keen
Так чего сложного? Заводим таймер на 30мкс, в его прерывании читаем массив, сдвигаем на 1 бит, выводим в порт, если 8 бит выперли, переходим к следующему байту... Задачка по зубам и 13й тньке, только 100к массива вы где хранить собрались?
Re: Как мне выплюнуть массив?
Добавлено: Пт мар 07, 2014 14:10:59
Dr. Alex
Если прикрутить внешнюю память, то хоть гиг информации выплёвуйте)
Re: Как мне выплюнуть массив?
Добавлено: Пт мар 07, 2014 14:44:58
просто КОТ
Внешняя память.. Это я так понял восьминогие микросхемки ЕЕПРОМа? А никто не в курсе, какого они объёма обычно, не работал с ними.
И ещё, в каком виде заливается в эти ЕЕПРОМки информация?
Re: Как мне выплюнуть массив?
Добавлено: Пт мар 07, 2014 14:50:06
Engineer_Keen
Да они разные бывают, от килобайта и до нескольких мегабайт. В основном 2 интерфейса I2C и SPI. Второй проще всего задействовать, можно один раз подать команду чтения и потом тактовый сигнал с периодом в ваши 30мкс, тогда с выхода микросхемы памяти будет с каждым тактом будет вылезать 1 бит вашего массива. Ну а как заливать это от протокола зависит, можно даташит посмотреть.
Re: Как мне выплюнуть массив?
Добавлено: Пт мар 07, 2014 14:54:37
Dr. Alex
А информация, которую надо выдавать последовательно имеет какие-нибудь повторения? Или это абсолютно произвольный набор данных???
Re: Как мне выплюнуть массив?
Добавлено: Пт мар 07, 2014 15:00:32
просто КОТ
Получается можно будет сформировать HEX файл, где в 16-ричном виде будут залиты все нули/единицы, залить его в ЕЕПРОМ подходящего объёма, а потом тыкать её раз в 30мкс и переняв бит подавать его на выход. Так?
А кто нибудь знает, как эта самая ЕЕПРОМ сигнализирует что всё -- кончилась информация? И можно ли спросить её -- сколько в неё байт лежит?
Алексу: Повторений много, особенно восьмёрок. Это какбэ запись графика некоторого. Просто надо выдать его в линию сигнальную бит за битом. Варианта два -- или с ЮСБ компа, на котором лежит файл. Или залить в ЕЕПРОМ и использовать контроллер. Пока не знаю, что проще.
Re: Как мне выплюнуть массив?
Добавлено: Пт мар 07, 2014 15:12:05
Dr. Alex
В ЕЕПРОМ инфа хранится по адресам, от 0 и до 100 (например). Так что больше чем получится выжать не сможешь)))))
Re: Как мне выплюнуть массив?
Добавлено: Пт мар 07, 2014 15:14:26
просто КОТ
Просто интересно -- как понять устройству, что пора остановиться. Допустим все биты прошли, МК продолжает пинать ЕЕПРОМку. Что она начнёт? Передавать заново, с начала?
Re: Как мне выплюнуть массив?
Добавлено: Пт мар 07, 2014 15:17:52
Dr. Alex
Ну как она может выдать чего-либо, если адреса закончились)
Re: Как мне выплюнуть массив?
Добавлено: Пт мар 07, 2014 15:19:30
просто КОТ
Т.е. она начнёт выдавать нули?
Re: Как мне выплюнуть массив?
Добавлено: Пт мар 07, 2014 15:20:56
Dr. Alex
Ну по идее да, вот только я не пойму, вы что, не знаете сколько байт записали?
Re: Как мне выплюнуть массив?
Добавлено: Пт мар 07, 2014 15:26:15
просто КОТ
Это будет частенько меняться.
Тогда ещё вопрос. А нельзя ли выдать всё богатство единиц и нулей с компьютера, используя ЮСБ порт? Просто всегда считал комп чем-то ужасно сложным для совмещения, а теперь подумал -- вдруг всё легче? Никто не пробовал?
Re: Как мне выплюнуть массив?
Добавлено: Пт мар 07, 2014 15:31:42
Dr. Alex
Начнём попорядку, куда вообще выдаваться будет это богатство???? В смысле оконечное устройство?
Естественно можно, даже миную микроконтроллер, а используя спец-микру FT232R. На компьютере написать простенькую програмку и всё)
Re: Как мне выплюнуть массив?
Добавлено: Пт мар 07, 2014 15:40:35
просто КОТ
Сигнал пройдёт по длинной линии из двух проводков, где его примет другой МК. МК знает, что данные обновляются раз в 30мкс, и строго раз в 30мкс будет опрашивать один из выводов. Каждые 120мкс данные будут выдаваться в 4х битный ЦАП.
Re: Как мне выплюнуть массив?
Добавлено: Пт мар 07, 2014 15:42:29
Dr. Alex
Ну как вариант использовать FT232R
Re: Как мне выплюнуть массив?
Добавлено: Пт мар 07, 2014 15:49:42
просто КОТ
А просто так, без обвязки в лице 232 не умеет ли ЮСБшник выводить еденички/нулики под управлением некоторой программы?
Re: Как мне выплюнуть массив?
Добавлено: Пт мар 07, 2014 15:50:40
da-nie
МК знает, что данные обновляются раз в 30мкс,
Не выйдет. Нужна синхронизация или игра со старт-стопом.
Но лучше скажите, что вы делаете?
Re: Как мне выплюнуть массив?
Добавлено: Пт мар 07, 2014 15:54:20
Dr. Alex
Ну если на другом конце МК, так может организовать передачу по UART?????
Re: Как мне выплюнуть массив?
Добавлено: Пт мар 07, 2014 15:56:24
просто КОТ
На выходе нужно получить определённый сигнал, аналоговый. Вот я и передаю информацию для ЦАПа. Каждые 4 бита -- одна выборка.
А выйдет ли сделать ЮАРТ через 2 провода?