Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Ответ:

Отправлено колян безпарольный 05 января 2008 г. 22:15
В ответ на: коляну беспарольному про SPI ОЗУ (+) отправлено SM 05 января 2008 г. 17:49

Есть сигнал периодический сложной формы, сэмплы 1024 на период. Сигнал на уровне шума, на осциле практически не определить есть он или нет, сплошное молоко. На макете выяснил, если на каждый из 1024 сэмплов вести сумму то после 32 накоплений уже получается сигнал с которым можно дальше работать выуживая из него нужную информацию(FFT, но не суть). Так вот, проблема в том что выуживать информацию надо постоянно, тоесть на каждый сэмпл надо выдавать ответ(в идиале), пусть реально значимый аж через 32 периода. Естественно при таком раскладе надо вести кольцевой буфер с затиранием значения сэмпла 32 периода назад и постоянно сумировать сэмплы. Эдак никаких ресурсов не хватит. По сему получив сэмпл я беру сумму сэмплов соответствующую этой точке функции, вычитаю из нее сэмпл который был 32 периода назад и прибавляю полученный только что сэмпл, записывая его и в ячейку где был сэмпл 32 периода назад. В итоге на каждый сэмпл у меня есть один полный период функции практически идиального вида. Правильно это или нет время покажет, есть такие ошибки которые надо осознать самому.
Так вот, реализация этого- проще всего конечно паралельная озу
movx A,@DPTR
mov R0,A
mov A,ADC0
movx @DPTR,A
inc DPTR
но нужны как минимум 32 кила для базы семплов (8бит АЦП) и еще 2048 для базы сумм сэмплов. А если прийдется 10 бит- уже 64К на базу. Это уже ногастая микруха, которая по ранее озвученным причинам крайне нежелательна.
Как я вижу выход- имеем 2 SPI озушки на 64К каждая на одну шину, и сигналы HOLD на пины. Одна для записи одна для чтения. Начинаем работать, записываем в SPI коды и адрес 0. В одну озушку постоянно сливаю данные, из другой постоянно забираю, переключаю их через HOLD, адреса у обоих автоматически инкрементируются- тоесть я только шлю данные как по movx @DPTR,A. Дошли до конца- поменяли озушки местами, теперь я набиваю ту которую уже использовал для вычитания из сумм а ту которую только что набил использую для вычитания. Тоесть за 32*1024 сэмпла я только 1 раз записываю в озу код операции и адрес.

Размыто как собственные мысли


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

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

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru