Современный автоответчик на базе ARM.Часть седьмая
ПЕРЕКЛЮЧЕНИЕ СКОРОСТИ
Все функции сигнального процессора выполняются на частоте выборки 8000 Гц, за исключением FSK-демодуляции. Если бы для данного режима использовалась та же скорость выборки, я бы должен был делать выборку битов каждые 6,66 выборок (8000/1200). Тогда это бы означало, что выборка битов наиболее часто проводится каждые семь выборок и иногда каждые шесть выборок. Данный алгоритм реализуем, но обработка легче, если
скорость выборки кратна целому множителю скорости данных. По этой причине демодуляция идентификатора номера звонящего абонента проводится на частоте выборки 9600 Гц. (Отметим, что на частоте 7200 Гц функция будет работать так же хорошо).
Во избежание потенциальных проблем скорость выборки меняется в момент первого прерывания, после того как обработчик сигнального процессора перестраивается на FSK-демодуляцию. Данное переключение скорости не влияет на другие процессы. Во время выполнения FSK-демодуляции нет необходимости в других функциях сигнального процессора.
ИДЕНТИФИКАТОР НОМЕРА ЗВОНЯЩЕГО АБОНЕНТА
Извлечение сведений, содержащихся в идентификационном номере, несложно, если вместо нее проводится FSK-демодуляция. Информация передается между первым и вторым циклами. Идентификатор содержит сведения о
дне и времени, а также имя и номер телефона абонента. Указания на день и время используются для автоматической настройки часов реального времени, как только звонок будет принят.
Номер телефона и имя, если они доступны, ассоциируются со звуковым файлом. Эта информация отображается, если ТАМТАМ доступен через веб-браузер.
СТЕК TCP/IP
В данном проекте требуется применение стека протоколов TCP/ IP. Я не располагал временем, поэтому принял первое привлекательное предложение. Я выбрал встраиваемый стек uIP, разработанный Адамом Дункельсом (www.sics, se/~adam/uip/). Это был не лучший выбор, но работает он неплохо. Данный стек ориентирован на процессоры, которые, как правило, намного слабее LPC2138. Он содержит несколько коротких фрагментов, которые не так необходимы для 32-разрядного RISC-процессора типа LPC2138.
Подключение стека не вызвало затруднений, кроме разработки Ethernet-драйвера для ENC28J60. Тем не менее, я быстро выполнил разрешение ARP и команду ping, а затем установил связь по TCP/ IP-протоколу в режимах «Прием» и «Передача».
Стек uIP поступил с примерами применения, но мне пришлось модифицировать их для ТАМТАМ. Программа работы через электронную почту по протоколу SMTP оказалась очень простой для встраивания. ТАМ-ТАМ может быть сконфигурирован для автоматической отправки почты на почтовый ящик или SMS-шлюз оператора сотовой связи. Тело сообщения содержит следующую информацию:
Получено 14:14 22/10
От: 860-875-2199
Имя: Circuit Cellar Inc.
Имя и номера телефонов извлекаются из кадра идентификатора номера звонящего.
Значение времени берется от часов, которые автоматически синхронизируются с любым достоверным кадром идентификатора, содержащим значение даты и времени. Эта информация доступна даже в случае потери идентификатора.
ВЕБ-СЕРВЕР
Стек uIP рассчитан на файловую систему на базе памяти. Так как ТАМ-ТАМ содержит файловую систему флэш-памяти, я был должен модифицировать веб-сервер для применения существующей системы FAT. Окончание процесса оказалось более запутанным, чем я вначале ожидал.
Интересен способ доступа веб-браузеров к веб-странице. Например, при загрузке файла веб-браузер пытается загрузить начало файла, просматривая заголовок длины содержимого (размер). Затем он прерывает загрузку и сразу же начинает ее снова. Хотя этот процесс прост для файловых систем, основанных на использовании памяти, для систем с FAT необходимо соблюдать осторожность. Заголовок длины содержимого добавляется к исходному веб-серверу, а это требует добавления функции FAT для определения размера данного файла.
Веб-страница, которую я рассматривал, была простой. Она показывает список сообщений с указанием времени, имени и номера телефона. Такие сообщения автоматически загружаются и воспроизводятся, когда пользователь активизирует ссылку. Это один аспект проекта ТАМТАМ, в котором была проведена некоторая работа по улучшению прототипа.
Обработка потока может оказаться более медленной, чем требуется в реальном времени, да и Windows не всегда кэширует достаточное количество данных для оценки. Из-за того, что последовательность данных не всегда заполнена, возможны про-
блемы. Файл открыт только для чтения, а файловая система запрашивает данные.
УСОВЕРШЕНСТВОВАНИЯ
Было бы самонадеянным считать ТАМ-ТАМ законченным устройством. Одна лишь проверка того, что все ошибки файловой системы проработаны, представляет огромную задачу.
Я бы хотел добавить пароль на страницу регистрации вебсервера и запрос DNS. Пока же IP-адрес почтового SMTP-сервера приходится вводить вручную.
Что касается аппаратной реализации, я бы хотел встроить в корпус беспроводный мост. Существуют WiFi-карты в формате SD/MMC, но вероятно, было бы невозможным получить секрет рецепта получения такой карты.
LCP 2138 определенно оказался подходящим микроконтроллером для этого проекта. Меня приятно удивила его способность отключать встроенную флэш-память и ОЗУ без каких-либо состояний ожидания. Производительность в 60 MIPS позволила мне уделить больше времени на разработку алгоритма, а не на подсчет циклов в критических разделах кода.
В итоге, для тех, кто как и я ненавидит режим опроса, обработчик прерываний определенно является одним из самых гибких решений.
|