HM2007


Функции

void hm_init (void)
 Инициализация.
void hm_reset (void)
 Очистка памяти.
uint8_t hm_ready (void)
 Проверка статуса микросхемы.
void hm_recog (void)
 Переключение в режим распознавания.
void hm_train (uint8_t pattern)
 Переключение в режим обучения.
uint16_t hm_result (void)
 Результат распознавания.
uint16_t hm_pattern_size (uint8_t pattern)
 Получить размер области памяти, необходимой для сохранения данных шаблона команды.
void hm_wlen (uint8_t len)
 Устанавливает длительность команд.
void hm_download (uint16_t size, uint8_t *buf)
 Считывает шаблон команды из памяти микросхемы и заносит его в буфер.
uint8_t hm_read_byte (void)
 Считывает очередной байт шаблона команды.
void hm_start_upload (uint8_t pattern, uint16_t len)
 Инициирует процесс переноса шаблона в ОЗУ, подключенное к микросхеме.
void hm_write_byte (uint8_t byte)
 Записывает очередной байт шаблона в ОЗУ, подключенное к микросхеме.

Конфигурация портов

Библиотека для работы с микросхемой распознавания речевых команд HM2007.

Подключение микросхемы.
  • выводы S1-S3 подключены к выводам одного и того же порта, к последовательным выводам. Например, если S1 подключен к PD3, то S2 должен быть подключен к PD4, а S3 - к PD5
  • выводы K1-K4 подключены к выводам одного и того же порта, к последовательным выводам. Например, если K1 подключен к PB2, то K2 должен быть подключен к PB3, K3 - к PB4, а K4 - к PB5.
  • вывод WLEN подключен к любому выводу любого порта.
  • выводы S1-S3 подтянуты к земле резисторами 5 .. 10 КОм


#define HM_S_PORT   PORTB
 Регистр вывода порта, к которому подключены линии S1-S3.
#define HM_S_DDR   DDRB
 Регистр направления для порта с линиями S1-S3.
#define HM_S_BIT   0
 Номер бита, к которому подключена линия S1.
#define HM_K_PORT   PORTC
 Регистр вывода порта, к которому подключены линии K1-K4.
#define HM_K_DDR   DDRC
 Регистр направления порта с линиями K1-K4.
#define HM_K_PIN   PINC
 Регистр ввода порта, к которому подключены линии K1-K4.
#define HM_K_BIT   4
 Номер бита, к которому подключена линия K1.
#define HM_WL_PORT   PORTC
 Регистр вывода порта, к которому подключена линия WLEN.
#define HM_WL_DDR   DDRC
 Регистр направления для порта с линией WLEN.
#define HM_WL_BIT   3
 Номер бита, к которому подключена линия WLEN.


Функции

void hm_download ( uint16_t  size,
uint8_t *  buf 
)

Считывает шаблон команды из памяти микросхемы и заносит его в буфер.

Эта функция должна вызываться сразу после hm_pattern_size(). Разумеется, данные, помещенные в буфер, а также длину области памяти следует затем перенести в энергонезависимую память (флэш-память контроллера, внешнее ПЗУ, карта памяти и т.п.). Для восстановления шаблона при очередном включении питания используется hm_start_upload() и hm_write_byte().

Аргументы:
size Размер области памяти, возвращенный функцией hm_pattern_size().
buf Указатель на буфер. Буфер должен вмещать минимум size байт.

void hm_init ( void   ) 

Инициализация.

Инициализирует используемые порты микроконтроллера для обмена с HM2007. Эта функция должна быть вызвана в самом начале работы с микросхемой. Устанавливает длительность команд 0.9 сек.

См. также:
hm_wlen()

uint16_t hm_pattern_size ( uint8_t  pattern  ) 

Получить размер области памяти, необходимой для сохранения данных шаблона команды.

Данные в ОЗУ при выключении питания теряются. Если необходимо сохранять данные между включениями, их следует сохранять в энергонезависимой памяти. hm_pattern_size() возвращает размер области памяти, которая необходима для сохранения шаблона команды. Сразу после вызова этой функции необходимо вызвать или hm_download(), передав ей указатель на область памяти достаточного размера, или hm_read_byte().

Аргументы:
pattern Номер команды. От 1 до 20 или 40, в зависимости от режима работы.
Возвращает:
Размер области памяти. Всегда кратен 4
См. также:
hm_wlen()
Предупреждения:
Если передать номер команды, которая не была записана, или недопустимый номер, микросхема "зависает".

uint8_t hm_read_byte ( void   ) 

Считывает очередной байт шаблона команды.

После вызова hm_pattern_size(), эта функция должна быть вызвана столько раз, какое значение вернула hm_pattern_size().

Возвращает:
Очередной байт шаблона.

uint8_t hm_ready ( void   ) 

Проверка статуса микросхемы.

Возвращает:
1 если микросхема готова к приему очередной команды, иначе 0

void hm_recog ( void   ) 

Переключение в режим распознавания.

После вызова этой функции, следует проверять значение, возвращаемое функцией hm_ready(). Другие функции вызывать нельзя до тех пор, пока hm_ready() не вернет 1. Результат распознавания затем может быть получен с помощью hm_result().

void hm_reset ( void   ) 

Очистка памяти.

Все сохраненные команды стираются.

uint16_t hm_result ( void   ) 

Результат распознавания.

Возвращает номер команды распознанной функцией hm_recog() и вероятность распознавания.

Возвращает:
Целое без знака.
Младшие 8 бит содержат номер распознанной команды.
Старшие 8 бит содержат вероятность распознавания от 0 до 255. Если вероятность равна 255, значит команда не была распознана. 0 - 100% совпадение. Практически возвращаются значения от примерно 32 до 255.
См. также:
hm_recog()

void hm_start_upload ( uint8_t  pattern,
uint16_t  len 
)

Инициирует процесс переноса шаблона в ОЗУ, подключенное к микросхеме.

Эта функция используется для восстановления данных, ранее полученных с использование функций hm_pattern_size(), hm_download() и/или hm_read_byte(). После вызова этой функции следует len раз вызвать hm_write_byte().

Аргументы:
pattern Номер команды
len Количество байт данных для записи. Соответствует значению, возвращенному функцией hm_pattern_size()

void hm_train ( uint8_t  pattern  ) 

Переключение в режим обучения.

После вызова этой функции, следует проверять значение, возвращаемое функцией hm_ready(). Другие функции вызывать нельзя до тех пор, пока hm_ready() не вернет 1.

Аргументы:
pattern Номер команды которую следует записать. От 1 до 20 или 40, в зависимости от режима работы.
См. также:
hm_wlen()
Предупреждения:
При записи команды следует быть осторожным, чтобы не превысить максимальную длину команды (0.9 или 1.9 секунд, в зависимости от режима работы), иначе возможно "зависание" микросхемы.

void hm_wlen ( uint8_t  len  ) 

Устанавливает длительность команд.

Вызов этой функции влияет на допустимый диапазон аргументов функций hm_pattern_size() и hm_train().

Аргументы:
len 0 - 0.9 сек ; 1 - 1.9 сек.
Предупреждения:
После вызова этой функции, следует очистить память вызовом hm_reset().

void hm_write_byte ( uint8_t  byte  ) 

Записывает очередной байт шаблона в ОЗУ, подключенное к микросхеме.

Эта функция используется для восстановления данных, ранее полученных с использование функций hm_pattern_size(), hm_download() и/или hm_read_byte(). Должна вызываться сразу после hm_start_upload().

Аргументы:
byte Байт для записи


Документация по HM2007. Последние изменения: Wed Sep 24 00:04:50 2008. Создано системой  doxygen 1.5.6