STM8 StdPeriph_Lib: UART1_ITConfig()

Для общего развития ковыряю STM8 + SDCC + StdPeriph_Lib. Дошёл до уарта и обнаружил, что контроллер виснет на инициализации прерываний. Проблема где-то в uart.c:UART1_ITConfig(). Если вместо вызова функции сделать запись в регистр, то инициализация проходит и контроллер начинает работать. Выглядит функция не очень. Особенно меня впечатлила вот такая строка:

itpos = (uint8_t)((uint8_t)1 << (uint8_t)((uint8_t)UART1_IT & (uint8_t)0x0F));

Дело в том, что библиотека универсальная, а контроллеры могут сильно отличаться. Так что функция настройки прерываний сначала выясняет в каком регистре и с каким смещением находится нужный бит. Посчитать в уме что делает этот код я не смог и просто засунул его в сишник на компе, скомпилировал и запустил. Результат — 32, т.е. 5-й бит (RXNE), что сходится с даташитом. Смещение регистра вычисляется проще:

uartreg = (uint8_t)((uint16_t)UART1_IT >> 0x08);

UART1_IT в данном случае равен 0x255, т.е. в итоге мы должны получить 0x02, что тоже верно, флаг лежит в регистре UART1_CR2. Однако что-то всё равно идет не так. В итоге вместо вызова функции написал:

//UART1_ITConfig(UART1_IT_RXNE, ENABLE);
UART1->CR2 |= (uint8_t)UART1_FLAG_RXNE;

Так работает.

+++ UPD
На форуме ST пишут, что проблема с ассертом.

Муки выбора MP3 плеера

Уже много лет не могу найти mp3-плеер, который бы меня устроил. Долгое время моим идеалом были iRiver’ы, последним хорошим плеером — Cowon iAudio 7. С тех пор хороших плееров мне не попадалось. Иногда я делаю попытки купить что-то подходящее, но каждый раз разочаровываюсь. В итоге решил составить список требований и опробованных плееров, чтобы не забыть.

Мой идеальный плеер:

  1. Запоминает место остановки и при включении продолжает с него;
  2. Перематывает треки быстро, 5-10 секунд за секунду. В идеале скорость настраивается;
  3. При перемотке назад из первых секунд файла перескакивает в конец предыдущего файла;
  4. Сортирует треки по алфавиту, а не по порядку попадания в FAT;
  5. Позволяет регулировать громкость сразу, без хождений по меню;
  6. Имеет большой экран на котором видно приличный кусок имени файла;
  7. После включения начинает играть музыку.

Требования отсортированы в порядке убывания важности. Теперь посмотрим, какие плееры я попробовал и чем они меня не устроили.

Digma S3

  1. Фатальный недостаток — плеер всегда включается на первом файле. Сразу в помойку;
  2. Скорость перемотки приемлемая;
  3. Перемотку назад не проверял;
  4. Сотрировка по алфавиту возможна через отдельный пункт меню;
  5. Громкость регулируется сразу;
  6. Большой экран занят фальшивым спектром, на имя файла остается 10, если не 7, символов;
  7. После включения попадаешь в главное меню. Явно воспроизведение музыки не было приоритетом.

Итог: 4 из 7, но всё множится на 0 первым пунктом.

BENJIE C-ONE

  1. Место остановки запоминает, но иногда сбивается. Почему — не понял;
  2. Скорость перемотки терпимая;
  3. При перемотке назад попадает в начало предыдущего файла. Т.е. в конец длинного файла можно попасть только перемотав его от начала до конца;
  4. Файлы сортируются только по фату, даже при выборе альбома/исполнителя;
  5. Громкость регулируется через меню. Если держал кнопку недостаточно долго, то попадаешь в главное меню и долго из него выходишь;
  6. Большой экран занят фальшивым спектром, но для имени файла остается много места;
  7. Включается плеер на паузе, нужно нажать кнопку воспроизведения.

Итог: 3.5 из 7. Тем не менее с этим плеером я хожу каждый день, потому что Cowon слушаю перед сном. Разделение именно такое из-за того, что у Cowon бесшумное сенсорное управление, а у Benjie очень громкие металлические кнопки, которые будят жену.

xDuoo X2

  1. Вроде бы запоминает место остановки;
  2. Скорость перемотки никакая, что сразу выкидывает этот плеер из кандидатов в хорошие;
  3. Поведение при перемотке назад не проверял;
  4. Порядок сортировки не проверял;
  5. Громкость, вроде, регулируется сразу;
  6. Экран небольшой, под имя файла отдана строка;
  7. Поведение после включения не помню.

Итог: моё знакомство с плеером было очень коротким — как только я увидел скорость перемотки, сразу убрал плеер в коробку и выставил на авито. Данных для взвешенной оценки маловато.