Как задать частоту ТВ-Тюнеру

Здесь принимаются все самые невообразимые вопросы... Главное - не стесняйтесь. Поверьте, у нас поначалу вопросы были еще глупее :)
Ответить
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 177
Зарегистрирован: Чт окт 20, 2011 13:35:06
Откуда: Казань

Сообщение Airatius »

осторожно! леоныч!!! писал(а):Вот нарыл программку. Не знаю как перевести. Ничего не понятно.....
/////////////////////////
// for KS-H-146, KS-H-148
#define CONST__GAINoff 0B10001000
#define CONST__GAINon 0B10001001 // Weak Signal Booster ON
#define CONST__LoBAND 0B00000001
#define CONST__MiBAND 0B00000010
#define CONST__HiBAND 0B00001100
Здесь объявляются переменные с присвоением им значений.
Каждая переменная - это байт, отсылаемый тюнеру.
Gain - усиление, естественно вкл и выкл (on и off)
LoBand, Midband, Hiband - естественно байты установки диапозона. т.к. KSH142 - 148 - трехдиапозонные как и подавляющее больинство других СКВ
////////////////////
void KSH14xPLL(void)
{
uint32_t fPCH1;
uint8_t Band;
Band = CONST__LoBAND;
if(FrcvWork > 155000L) Band = CONST__MiBAND;
if(FrcvWork > 440000L) Band = CONST__HiBAND;
fPCH1 = (uint16_t)((FrcvWork + RCVPCH1)/50);
I2CStart();
I2COutByte(0b11000000); // Tuner Address
I2COutByte(HiBYTE(fPCH1));
I2COutByte(LoBYTE(fPCH1));
I2COutByte((TunerGain)? CONST__GAINon:CONST__GAINoff);
I2COutByte(Band);
I2CStop();
return;
Это собственно и есть функция управления тюнером.
Здесь формируется пакет байтов отсылаемых по i2c
Сначала идет байт - адреса тюнера (0xC0), затем два байта частоты (из формулы), далее байт усиления сигнала и последний байт - диапазон
диапазон выбирается исходя из условий сравнения частоты с границами диапазонов и присвоением соответствубщего байта из переменных LoBand, Midband, Hiband
байты усиления - тоже заданы в переменных
FrcvWork - глобальная переменная, в которой задана частота.

Вот и все. Вот с переводом на бфском я Вам не помогу, даже не знаю что это. Для меня Си как то привычнее и роднее )))
Контактная информация:
Реклама
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

Сообщение осторожно! леоныч!!! »

Жаль я сишку не знаю... Очень жаль.... Ладно буду продолжать пытаться разобраться. Хотя уже начинаю сомневаться что получится.
Реклама
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 177
Зарегистрирован: Чт окт 20, 2011 13:35:06
Откуда: Казань

Сообщение Airatius »

осторожно! леоныч!!! писал(а):Жаль я сишку не знаю... Очень жаль.... Ладно буду продолжать пытаться разобраться. Хотя уже начинаю сомневаться что получится.
тут два варианта:
1. пробовать перевести на другой язык и обязательно получиться (рано или поздно)
2. изучить Си и писать на нём.
Бросить все нахрен вообще не вариант )

Я когда начал программить тоже много раз думал, "не смогу, не получиться, а ну его нахрен", но сидел и упорно пытался разобраться, в итоге - все получается. Сейчас, уже стало намного легче, на написание новой программы уходит все меньше и меньше времени.

Кстати, тюнер я этот так и не доделал, но не забросил. Все работает, частоты перестраиваются, каналы ловит. Осталось в программе написать процедуру автоматического сканирования частот и облагородить менюшку.
Контактная информация:
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

Сообщение осторожно! леоныч!!! »

Учить сишку если уже начал учить баском как то не вариант. Тогда вообще пропадает желание что либо делать. Ведь уже столько прочитано и понято а тут раз и все с начала. Что то нет желания дальше с этой хренью разбираться, столько времени и сил потрачено, а от чего ушел,к тому и пришел...
Реклама
Эиком - электронные компоненты и радиодетали
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 177
Зарегистрирован: Чт окт 20, 2011 13:35:06
Откуда: Казань

Сообщение Airatius »

осторожно! леоныч!!! писал(а):Учить сишку если уже начал учить баском как то не вариант. Тогда вообще пропадает желание что либо делать. Ведь уже столько прочитано и понято а тут раз и все с начала. Что то нет желания дальше с этой хренью разбираться, столько времени и сил потрачено, а от чего ушел,к тому и пришел...
Тогда немного потрудиться над переводом синтаксиса.
BASCOM как я понимаю - это Бейсик, самый легкий и простой язык программирования.
В принципе, можно попробовать заниматься переводом программ на него, но лучше, подняться на ступеньку выше и писать на Си с вставками на асме. Но это в так, в будущем. Для начала, освоить МК в рамках Бейсика, я думаю, будет не сложно.
Контактная информация:
Реклама
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

Сообщение осторожно! леоныч!!! »

Дык вот и осваиваем... Материала мало, примеры все одинаковые. Тяжело однако так...
Реклама
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

Сообщение осторожно! леоныч!!! »

Продолжая заниматься тюнером вроде немного разобрался с переводом кода. Но теперь непонятно как настраиваться по диапазону? Делаю так ---
Frcvwork = 107700 Вначале выставляю такую частоту , прибавляю к ней промежуточную Rcvpch1 = 38900, делю на 50 (это по формуле,мне непонятно нафига еще делить то???)

Это формула, вроде все правильно. Значит если я прибавлю или убавлю 50 от значения Frcvwork то по идее должна происходить перестройка по частотам? Но у меня тишина. В чем ошибка???
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 177
Зарегистрирован: Чт окт 20, 2011 13:35:06
Откуда: Казань

Сообщение Airatius »

осторожно! леоныч!!! писал(а):Это формула, вроде все правильно. Значит если я прибавлю или убавлю 50 от значения Frcvwork то по идее должна происходить перестройка по частотам? Но у меня тишина. В чем ошибка???
Ну формула рабочая, проверена на моём тюнере.
А что именно не получается? не настраивается?
Посоветую нарисовать проект в Протеусе и подцепить i2c монитор, посмотреть, что идет от контроллера к тюнеру.
Может не правильно задали адрес тюнера или формат запроса неверный.
Контактная информация:
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

Сообщение осторожно! леоныч!!! »

Дело в том что именно не настраивается. Странно как то. При нажатии на кнопку звук в наушниках меняется,т.е явно инициализация происходит,а дальше хоть закрутись,тишина....
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

Сообщение осторожно! леоныч!!! »

Вот скрин с протеуса. Странно как то...
тюнер.JPG
Вот в развернутом виде...
тюнер 2.JPG
Видно что все правильно кроме байтов которые управляют делителем.
Тоесть адрес тюнера правильный, старший и младший байты не правильно, вкл усил правильно и диапазон правильно. Все равно не понимаю в чем проблема :(

Целый день убит зря........ :facepalm:
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

Сообщение осторожно! леоныч!!! »

Долго рылся в коде и симуляторе. Вот что обнаружил. При операции сложения Fpch1 = Frcvwork + Rcvpch1 результат полная ерунда. К примеру если частота равна 107750 то значение получится 15578!
Соответственно после деления 311.... Дурдом...

Эти переменные указаны так
Dim Frcvwork As Long Это частота
Dim Rcvpch1 As Word Это промежуточная

Этот бред вместо того что я считал - 107700 + 38900 делим на 50 и получаем 2932
То есть старш байт 00001011 --- это 11
Ну а младш байт 01110100 ---- это 116
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 177
Зарегистрирован: Чт окт 20, 2011 13:35:06
Откуда: Казань

Сообщение Airatius »

если на скрине показан i2c запрос для 107.7 МГц - то у Вас скорее всего ошибка именно в формуле подсчета частоты, остальное все верно.

Вот, на своём тюнере прогнал
screen01.jpg
пример запроса для 107.7 МГц
(60.15 КБ) 541 скачивание
Формула всё та же

Код: Выделить всё

fPCH1 = (uint16_t)((FrcvWork + 38900)/50);
Контактная информация:
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

Сообщение осторожно! леоныч!!! »

Вообще не понимаю почему такой глюк с элементарной операцией сложения... :shock: Делится то все правильно вот в чем загадка. Раньше таких проблем никогда не было...
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 177
Зарегистрирован: Чт окт 20, 2011 13:35:06
Откуда: Казань

Сообщение Airatius »

у меня тоже долго не получалось, пока не указал верный тип переменной
Контактная информация:
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

Сообщение осторожно! леоныч!!! »

Ладно. Буду пытаться разобраться. Но все это очень странно. Я пытался менять переменные но ничего не вышло. Переменная для частоты должна быть как у меня и есть ,другой не хватит чтоб "слово" вместить. Даже если их делать одинаковыми - толку нет...
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 177
Зарегистрирован: Чт окт 20, 2011 13:35:06
Откуда: Казань

Сообщение Airatius »

осторожно! леоныч!!! писал(а):Ладно. Буду пытаться разобраться. Но все это очень странно. Я пытался менять переменные но ничего не вышло. Переменная для частоты должна быть как у меня и есть ,другой не хватит чтоб "слово" вместить. Даже если их делать одинаковыми - толку нет...
ну вот и у меня, для частоты нужна была переменная типа uint16_t, просто integer или longint не прокатывали
Контактная информация:
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

Сообщение осторожно! леоныч!!! »

В бэйсике нет такой переменной. Надо что то придумывать.
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 177
Зарегистрирован: Чт окт 20, 2011 13:35:06
Откуда: Казань

Сообщение Airatius »

обычный int вроде - 32 битный, можно использовать и его убрав лишние 16 бит.
Другими словами, если нужно было делить uint16 на два байта, то тут придется просто делить на 4 байта и отметать два лишних.

Так я это понял, для 100% информации лучше обратиться к программерам, я с Бейсиком баловался лет 20 назад, потом как то на Паскаль перешел и затем был длинный, 15-ти летний перерыв, сейчас вот с Си пытаюсь подружиться, но от былых знаний мало чего осталось, приходится все наверстывать. Что бы не терять время изучая типы переменных, лучше спросить у опытных людей. Я так думаю.
Контактная информация:
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

Сообщение осторожно! леоныч!!! »

Спасибо буду пробовать :)
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

Сообщение осторожно! леоныч!!! »

Все таки разобрался. Теперь все норм. Инфа приходит в тюнер. Теперь дальше разгребать косяки))) Еще предстоит много работы. Так же как и вы буду внешнюю память применять,так что это только начало)))
Ответить

Вернуться в «Теория»