Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Пт янв 30, 2015 09:55:34
Делаю часы на RGB индикаторах с FM приемником на RDA5807M . Сначала поставил модуль TEA5767. С ним проблем не было все работает , но не устроила чувствительность. Находил всего 3 станции. Поставил модуль RDA5807M. В автоматическом режиме находит около 12 станций. Хочу записывать в него принудительно частоту станции. Но не получается.
По даташиту такая формула Frequency = Channel Spacing (kHz) x CHAN+ 87.0 MHz. CHAN=0:9
Записывается частота в регистры 03H и 03L (6 и 7 бит ) . У меня частота сканирования Channel Spacing=100 кНz. допустим мне надо станцию на частоте 105,4мГц . Получаем 100*4+105 = 1054 в .Пишем в 03H 10000011 в 03L 11хххххх и нет результата. Пишу на ассемблере. Подскажите где я ошибся или что-то нужно еще модулю дослать в регистры ?
Пт янв 30, 2015 10:15:17
Как то вы странно считаете...
При сетке частот 100kHz и диапазоне 87–108 MHz (US/Europe):
Канал 0 - это 87.0MHz, 1 - 87.1MHz и т.д.
Частота 105,4MHz = канал 184d.
Согласны?
Пт янв 30, 2015 10:52:06
Наверно так. Я думал что номер канала может быть только от 0 до 9. Вот по этому затык был. А это получается 18 канал и 4 это дробная часть канала.
Пт янв 30, 2015 10:56:13
Всё проще:
Считать надо в одних величинах:
Nch = [Fприёма (в MHz) - 87(MHz)] / 0.1(сетка частот в MHz)
Пт янв 30, 2015 11:00:23
я уже так и понял что так надо считать 105-87=18 и в конце дробная часть. Спасибо за помощь.
Пт янв 30, 2015 11:04:08
Правильнее (105,4-87)/0,1=184 (номер канала).
Номер канала всегда 10бит и записывается по адресу 03H в биты с 15-го по 6-ой. 6-ой бит соответствует биту 0 в номере канала.
P.S.
А в программе проще считать, если частоты изначально умножены на 10 (точку на индикаторе поставить не сложно). К примеру, для вычисления номера канала: 1054-870=184 . Для вычисления частоты по номеру канала 184+870=1054 (частота приёма).
Пт янв 30, 2015 11:36:34
Сейчас на работе немного по другому пишу процедуру для вычисления канала по примеру (105-87)*10+дробь. т.к у меня целая и дробная часть содержаться в разных регистрах. Так мне кажется немного проще чем с 16 битными числами работать.
Пт янв 30, 2015 16:27:26
Да, пёс его знает, что кому проще...
Я хранил бы в памяти настроек станций номера каналов (один байт (два старших бита будете "доставлять нулями" для сетки частот 100kHz) + возможно, текстовое название канала), а при выводе частоты на индикатор пересчитывал бы канал>частота и "работал" бы с цифрами частот, умноженными на 10.
Если бы была "на борту" клавиатура для ввода частоты - десятичный ввод с клавиатуры с пересчётом в номер канала после подтверждения ввода. Т.Е., "основное число" - номер канала.
Но, это уже "как кому удобнее".
Лично я, ненавижу "лишние" операции умножение/деление когда можно обойтись без них.
Пт янв 30, 2015 23:42:00
Путем эксперементов выяснил , что в регистры 03L и 03H записывается частота с которой начинается поиск или вверх или вниз по диапазону. Если сигнал нормальный то включиться на записанном диапазоне, а если чуть слабее то нет и ведется поиск следующей станции. Не хочется возвращаться на TEA5767 из-за чувствительности. Т.к радио будет использоваться в качестве будильника в часах хотелось бы ,что бы включалась определенная станция. Какие есть FM микросхемы которые поддерживают прямую запись в них нужной станции ?
Пт янв 30, 2015 23:50:02
Скорее всего, в регистре 02H вы разрешаете поиск.
Проверьте.
P.S.
Поиск разрешён "по умолчанию".
Сб янв 31, 2015 08:35:56
да там включен поиск, но если его не включить то просто шипение и все.
Сб янв 31, 2015 08:39:27
То есть, если я вас правильно понял, при выключенном поиске (Seek) вы не можете настроиться на станцию?
Сб янв 31, 2015 09:14:02
именно так.
вот код принудительной записи.
так находит но на станцию ниже
rcall IIC_Start
ldi temp,0b00100000 ;адрес FM модуля с битом записи
rcall IIC_Send
ldi temp,0b11010011 ;02H байт
rcall IIC_Send
ldi temp,0b00000101 ;02L байт
rcall IIC_Send
ldi temp,0b10100010 ;103,2 настраивается на 101.5
rcall IIC_Send
ldi temp,0b01000000 ;03L байт
rcall IIC_Send
rcall IIC_Stop
а так не настраивается:
rcall IIC_Start
ldi temp,0b00100000 ;адрес FM модуля с битом записи
rcall IIC_Send
ldi temp,0b11010010 ;02H байт
rcall IIC_Send
ldi temp,0b00000101 ;02L байт
rcall IIC_Send
ldi temp,0b10100010 ;
rcall IIC_Send
ldi temp,0b01000000 ;03L байт
rcall IIC_Send
rcall IIC_Stop
Сб янв 31, 2015 10:30:11
Мы смотрим один и тот же pdf?
- Код:
ldi temp,0b10100010 ;103,2 настраивается на 101.5
rcall IIC_Send
ldi temp,0b01000000 ;03L байт
rcall IIC_Send
Почему номер канала 1010001001b = 649d???
Это частота приёма 151,9MHz
----------
P.S.
Понял
Вы забыли, что номер канала не 8, а 10бит.
Младший бит номера канала отметил красным цветом.
- Вложения
-
- RDA5807M_datasheet_v1.pdf
- (756.73 KiB) Скачиваний: 920
Последний раз редактировалось
Albert_V Сб янв 31, 2015 15:48:49, всего редактировалось 1 раз.
Сб янв 31, 2015 15:48:20
PDF смотрим один и тот же. Я этот бит пробовал и в 0 устанавливал и в 1. Результата никакого.
PS: в pdf ошибка там нет регистров 04L и 06L если записывать конфигурацию кристала без этих регистров то приемник не работает. Приходится в них записывать нули.
Последний раз редактировалось
SergSV Сб янв 31, 2015 22:34:12, всего редактировалось 1 раз.
Сб янв 31, 2015 16:12:42
Номер канала - 10-ти битовое число!!!!!!!!!На картинке, в таблице, номера битов.
Сб янв 31, 2015 17:05:21
на счет 0Ah бит1 ошибся . он равен 0 при настройке, так же ка и бит0. Данные с этих регистров вывожу в двоичном коде на светодиодную матрицу, и не стой стороны считал начало 0 бита.
Да и станцию записывал я не правильно. Допустим частота 107.9 надо было записывать как в 03H=00110100 03L=01 , а я записывал в 03H=11010001 03L=00. После записи установил бит точной настройки и сбросил бит настройки и все заработало.
Albert_V спасибо за терпение и помощь.
Сб янв 31, 2015 23:40:22
Код для радио дописал. Единственное звук в самый минимум не уходит. При записи в регистр 05L в бит 3:0 значения 0000 звук по мануалу должен выключиться , а на деле не выключается.
Все модули для будущих часов отлаживаю на Atmega8A. Кнопки для изменения диапазона подключены в порт в бит 4 и 5. I2C стандартные выводы Atmega8A.
Может кому пригодится код на ассемблере для RDA5807M. RDS пока не делал. файл во вложении
- Вложения
-
- RDA5807M.txt
- код
- (7.06 KiB) Скачиваний: 777
Вс фев 01, 2015 04:01:24
SergSV писал(а):....При записи в регистр 05L в бит 3:0 значения 0000 звук по мануалу должен выключиться , а на деле не выключается....
К выходам LOUT/ROUT RDA5807M у вас подключены наушники или усилитель?
Вс фев 01, 2015 14:02:14
подключен усилитель.
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.